Add Red Cliffs fire attack chapter
This commit is contained in:
@@ -285,7 +285,8 @@ const campaignTimelineChapters: CampaignTimelineChapter[] = [
|
||||
'eighteenth-battle-bowang-ambush',
|
||||
'nineteenth-battle-changban-refuge',
|
||||
'twentieth-battle-jiangdong-envoy',
|
||||
'twenty-first-battle-red-cliffs-vanguard'
|
||||
'twenty-first-battle-red-cliffs-vanguard',
|
||||
'twenty-second-battle-red-cliffs-fire'
|
||||
],
|
||||
nextHints: ['강동 사절', '화공 준비', '조조 남하']
|
||||
},
|
||||
@@ -328,7 +329,8 @@ const campBattleIds = {
|
||||
eighteenth: 'eighteenth-battle-bowang-ambush',
|
||||
nineteenth: 'nineteenth-battle-changban-refuge',
|
||||
twentieth: 'twentieth-battle-jiangdong-envoy',
|
||||
twentyFirst: 'twenty-first-battle-red-cliffs-vanguard'
|
||||
twentyFirst: 'twenty-first-battle-red-cliffs-vanguard',
|
||||
twentySecond: 'twenty-second-battle-red-cliffs-fire'
|
||||
} as const;
|
||||
|
||||
const requiredSortieUnitIds = new Set(['liu-bei']);
|
||||
@@ -555,6 +557,18 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
|
||||
{ unitId: 'sun-qian', reason: '강동 회담 기록과 동맹 명분을 전투 뒤 보고로 이어 줍니다.' }
|
||||
],
|
||||
note: '적벽 전초전은 첫 강상 전투입니다. 유비와 제갈량을 중심으로 전열, 기동, 외교 기록 중 어느 축을 두껍게 할지 고르십시오.'
|
||||
},
|
||||
'twenty-second-battle-red-cliffs-fire': {
|
||||
maxUnits: 6,
|
||||
recommended: [
|
||||
{ unitId: 'liu-bei', reason: '적벽 결전의 명분과 패배 조건의 중심입니다.' },
|
||||
{ unitId: 'zhuge-liang', reason: '동남풍과 화공 시점을 판단하는 핵심 책략 담당입니다.' },
|
||||
{ unitId: 'guan-yu', reason: '갑판 보병과 본선 친위를 정면에서 받아낼 전열입니다.' },
|
||||
{ unitId: 'zhao-yun', reason: '화선을 노리는 강안 기병과 척후를 빠르게 끊습니다.' },
|
||||
{ unitId: 'zhang-fei', reason: '배다리와 좁은 갑판 길을 밀어붙이는 돌파 역할입니다.' },
|
||||
{ unitId: 'mi-zhu', reason: '화공전의 장기 피해를 버티기 위한 회복과 보급을 맡습니다.' }
|
||||
],
|
||||
note: '적벽 화공전은 강 위의 결전입니다. 제갈량의 책략과 전열 유지, 화선 접안로 확보를 중심으로 여섯 명을 고르십시오.'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2313,6 +2327,87 @@ const campDialogues: CampDialogue[] = [
|
||||
rewardExp: 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'liu-zhuge-after-red-cliffs-fire',
|
||||
title: '불길 뒤의 대계',
|
||||
availableAfterBattleIds: [campBattleIds.twentySecond],
|
||||
unitIds: ['liu-bei', 'zhuge-liang'],
|
||||
bondId: 'liu-bei__zhuge-liang',
|
||||
rewardExp: 34,
|
||||
lines: [
|
||||
'유비: 적벽의 불길은 조조를 물렸지만, 우리에게 머물 땅이 생긴 것은 아니오.',
|
||||
'제갈량: 그래서 이제 싸움의 목적이 바뀝니다. 물러나는 조조를 보며 형주 남부의 길을 열어야 합니다.',
|
||||
'유비: 백성이 다시 떠돌지 않게 하려면, 다음 걸음은 전공보다 근본을 세우는 일이겠구려.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'plan-jingzhou-foundation',
|
||||
label: '형주 근거지 계획을 세운다',
|
||||
response: '제갈량은 형주 남부의 군현과 민심을 나누어 적었고, 유비는 처음으로 머물 땅의 조건을 분명히 말했다.',
|
||||
rewardExp: 13
|
||||
},
|
||||
{
|
||||
id: 'temper-victory-pride',
|
||||
label: '승리의 들뜸을 경계한다',
|
||||
response: '유비는 큰 승리 뒤의 방심을 경계했고, 제갈량은 그 말을 다음 작전의 첫 원칙으로 삼았다.',
|
||||
rewardExp: 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'guan-zhuge-after-red-cliffs-fire',
|
||||
title: '불길을 지킨 전열',
|
||||
availableAfterBattleIds: [campBattleIds.twentySecond],
|
||||
unitIds: ['guan-yu', 'zhuge-liang'],
|
||||
bondId: 'guan-yu__zhuge-liang',
|
||||
rewardExp: 26,
|
||||
lines: [
|
||||
'관우: 불길이 번질 때 병사들이 흔들렸으나, 전열을 무너뜨리지는 않았습니다.',
|
||||
'제갈량: 운장 장군의 침착함이 있었기에 화선의 길이 끊기지 않았습니다. 계책도 그것을 지킬 칼이 있어야 완성됩니다.',
|
||||
'관우: 다음 땅을 얻는 싸움에서도, 계책이 가리키는 곳을 제 칼로 지키겠습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'guard-next-crossing',
|
||||
label: '다음 도하 지점을 맡긴다',
|
||||
response: '제갈량은 관우에게 다음 강가 전열을 맡겼고, 관우는 묵묵히 청룡언월도를 세워 답했다.',
|
||||
rewardExp: 10
|
||||
},
|
||||
{
|
||||
id: 'honor-steady-line',
|
||||
label: '흔들리지 않은 전열을 칭찬한다',
|
||||
response: '관우는 큰 공을 말하지 않았지만, 병사들이 그의 등 뒤에서 안정을 찾았다는 말에는 조용히 고개를 숙였다.',
|
||||
rewardExp: 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'liu-mi-after-red-cliffs-fire',
|
||||
title: '불길 속 보급로',
|
||||
availableAfterBattleIds: [campBattleIds.twentySecond],
|
||||
unitIds: ['liu-bei', 'mi-zhu'],
|
||||
bondId: 'liu-bei__mi-zhu',
|
||||
rewardExp: 24,
|
||||
lines: [
|
||||
'미축: 불길이 번지는 전장은 칼보다 물과 약이 먼저 필요했습니다. 젖은 약품을 버리고 마른 꾸러미부터 살렸습니다.',
|
||||
'유비: 전공이 커도 병사가 쓰러지면 다음 걸음은 없소. 그대가 붙잡은 보급로가 곧 우리의 근본이오.',
|
||||
'미축: 다음부터는 빠른 말과 마른 약품을 한 묶음으로 준비하겠습니다. 전장도 이제 더 넓어질 테니까요.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'bind-fast-supply-line',
|
||||
label: '기동 보급로를 정한다',
|
||||
response: '미축은 기동 부대가 바로 가져갈 수 있는 보급 꾸러미를 따로 묶었고, 유비는 다음 전장의 장기전을 대비했다.',
|
||||
rewardExp: 10
|
||||
},
|
||||
{
|
||||
id: 'reserve-dry-medicine',
|
||||
label: '젖지 않는 약품을 챙긴다',
|
||||
response: '미축은 젖은 강가에서도 쓸 수 있는 약품을 따로 묶었고, 유비는 병사들이 승리 뒤에도 무너지지 않게 했다.',
|
||||
rewardExp: 9
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -2702,6 +2797,66 @@ const campVisits: CampVisitDefinition[] = [
|
||||
itemRewards: ['탁주 1']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'red-cliffs-aftermath-relief',
|
||||
title: '적벽 전후 수습',
|
||||
location: '강안 임시 진영',
|
||||
availableAfterBattleIds: [campBattleIds.twentySecond],
|
||||
bondId: 'liu-bei__mi-zhu',
|
||||
description: '불길 뒤의 강안에서 부상자와 흩어진 병사를 수습하며 다음 행군의 보급을 정리합니다.',
|
||||
lines: [
|
||||
'미축: 승리는 컸지만 젖은 군량과 다친 병사가 많습니다. 지금 정리하지 않으면 형주로 향할 때 다시 흔들릴 것입니다.',
|
||||
'유비: 불길 뒤에 남은 사람을 먼저 살펴야 하오. 승리의 이름보다 살아 움직일 군이 먼저요.',
|
||||
'강안 임시 진영에는 젖은 깃발과 그을린 갑옷이 널려 있고, 병사들은 비로소 숨을 고릅니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'treat-burned-soldiers',
|
||||
label: '화상 입은 병사를 돌본다',
|
||||
response: '미축은 약품을 아끼지 않았고, 유비는 전공보다 병사를 먼저 살핀다는 군영의 기준을 다시 세웠다.',
|
||||
bondExp: 22,
|
||||
itemRewards: ['상처약 2']
|
||||
},
|
||||
{
|
||||
id: 'restore-river-supplies',
|
||||
label: '강안 보급을 다시 묶는다',
|
||||
response: '젖은 군량을 버리고 쓸 수 있는 물자를 다시 묶자, 다음 형주 진입을 버틸 보급이 마련되었다.',
|
||||
bondExp: 18,
|
||||
gold: 180,
|
||||
itemRewards: ['콩 3']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'jingzhou-entry-council',
|
||||
title: '형주 진입 논의',
|
||||
location: '전후 군막',
|
||||
availableAfterBattleIds: [campBattleIds.twentySecond],
|
||||
bondId: 'liu-bei__zhuge-liang',
|
||||
description: '제갈량과 함께 적벽 이후의 형세를 정리하고 형주 남부로 향할 첫 명분을 준비합니다.',
|
||||
lines: [
|
||||
'제갈량: 조조가 물러난 지금, 빈틈은 오래 머물지 않습니다. 형주 남부의 군현은 두려움과 기대 사이에 있습니다.',
|
||||
'유비: 힘으로 빼앗는다면 조조와 무엇이 다르겠소. 백성이 기대어 설 명분을 먼저 세워야 하오.',
|
||||
'군막의 지도 위에는 적벽의 붉은 표시가 지워지고, 형주 남부의 길목이 새로 동그라미 쳐집니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'draft-jingzhou-cause',
|
||||
label: '형주 진입 명분을 쓴다',
|
||||
response: '제갈량은 조조를 막은 공과 백성 보호의 뜻을 함께 적어, 형주 남부로 향할 첫 문장을 만들었다.',
|
||||
bondExp: 24,
|
||||
itemRewards: ['형주 진입 문서 1']
|
||||
},
|
||||
{
|
||||
id: 'survey-southern-commandery',
|
||||
label: '남부 군현 정보를 모은다',
|
||||
response: '손건과 간옹이 들은 풍문까지 지도에 더해지자, 다음 행군에서 설득해야 할 성과 피해야 할 길이 분명해졌다.',
|
||||
bondExp: 20,
|
||||
gold: 200,
|
||||
itemRewards: ['민심 기록 1']
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -2792,7 +2947,8 @@ export class CampScene extends Phaser.Scene {
|
||||
battleId === campBattleIds.eighteenth ||
|
||||
battleId === campBattleIds.nineteenth ||
|
||||
battleId === campBattleIds.twentieth ||
|
||||
battleId === campBattleIds.twentyFirst
|
||||
battleId === campBattleIds.twentyFirst ||
|
||||
battleId === campBattleIds.twentySecond
|
||||
) {
|
||||
this.campaign = ensureCampaignRosterUnits(
|
||||
[...xuzhouRecruitUnits, ...caoBreakRecruitUnits, ...liuBiaoRecruitUnits, ...zhugeRecruitUnits],
|
||||
@@ -2850,6 +3006,9 @@ export class CampScene extends Phaser.Scene {
|
||||
|
||||
private currentCampTitle() {
|
||||
const battleId = this.currentCampBattleId();
|
||||
if (battleId === campBattleIds.twentySecond) {
|
||||
return '적벽 화공전 후 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.twentyFirst) {
|
||||
return '적벽 전초전 후 군영';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user