Add Changban refuge sortie chapter
This commit is contained in:
@@ -281,7 +281,7 @@ const campaignTimelineChapters: CampaignTimelineChapter[] = [
|
||||
title: '적벽대전',
|
||||
period: '강동의 바람',
|
||||
description: '제갈량의 계책과 강동의 힘이 맞물려 조조의 대군을 막아서는 큰 전환 장입니다.',
|
||||
battleIds: ['eighteenth-battle-bowang-ambush'],
|
||||
battleIds: ['eighteenth-battle-bowang-ambush', 'nineteenth-battle-changban-refuge'],
|
||||
nextHints: ['강동 사절', '화공 준비', '조조 남하']
|
||||
},
|
||||
{
|
||||
@@ -320,7 +320,8 @@ const campBattleIds = {
|
||||
fifteenth: 'fifteenth-battle-yuan-refuge-road',
|
||||
sixteenth: 'sixteenth-battle-liu-biao-refuge',
|
||||
seventeenth: 'seventeenth-battle-wolong-visit-road',
|
||||
eighteenth: 'eighteenth-battle-bowang-ambush'
|
||||
eighteenth: 'eighteenth-battle-bowang-ambush',
|
||||
nineteenth: 'nineteenth-battle-changban-refuge'
|
||||
} as const;
|
||||
|
||||
const requiredSortieUnitIds = new Set(['liu-bei']);
|
||||
@@ -511,6 +512,18 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
|
||||
{ unitId: 'sun-qian', reason: '강동 사절로 이어질 명분과 전후 보고를 정리합니다.' }
|
||||
],
|
||||
note: '제갈량의 첫 실전 계책입니다. 책략 담당을 포함해 전열, 기동, 보급 중 무엇을 남길지 결정해야 합니다.'
|
||||
},
|
||||
'nineteenth-battle-changban-refuge': {
|
||||
maxUnits: 6,
|
||||
recommended: [
|
||||
{ unitId: 'liu-bei', reason: '피난 행렬의 중심이며 패배 조건입니다.' },
|
||||
{ unitId: 'zhao-yun', reason: '피난로를 오가며 흩어진 병력과 백성을 붙잡는 핵심 기동 장수입니다.' },
|
||||
{ unitId: 'zhang-fei', reason: '장판교와 좁은 길목에서 추격 기병을 늦추는 역할입니다.' },
|
||||
{ unitId: 'zhuge-liang', reason: '피난로 판단과 강동 사절 명분을 전투 뒤로 연결합니다.' },
|
||||
{ unitId: 'guan-yu', reason: '다리목 전열과 친위 보병을 받아낼 안정적인 전열입니다.' },
|
||||
{ unitId: 'sun-qian', reason: '강동에 보낼 기록과 외교 명분을 정리합니다.' }
|
||||
],
|
||||
note: '장판파는 출전 제한보다 역할이 많은 전장입니다. 조운과 장비를 중심으로 기동, 전열, 책략, 보급 중 무엇을 우선할지 직접 선택하십시오.'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2026,6 +2039,87 @@ const campDialogues: CampDialogue[] = [
|
||||
rewardExp: 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'liu-zhao-after-changban-refuge',
|
||||
title: '백마가 지킨 길',
|
||||
availableAfterBattleIds: [campBattleIds.nineteenth],
|
||||
unitIds: ['liu-bei', 'zhao-yun'],
|
||||
bondId: 'liu-bei__zhao-yun',
|
||||
rewardExp: 30,
|
||||
lines: [
|
||||
'유비: 자룡, 장판파의 먼지 속에서도 그대의 창은 백성을 향해 길을 열었소.',
|
||||
'조운: 주공께서 백성을 버리지 않으셨기에 저도 물러서지 않을 수 있었습니다.',
|
||||
'유비: 오늘의 공은 전공보다 무겁소. 다음 길에서도 그 마음을 함께 지켜 주시오.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'entrust-refugee-guard',
|
||||
label: '피난 행렬 호위를 맡긴다',
|
||||
response: '조운은 말없이 창을 세웠고, 유비군의 피난길은 더 단단한 호위를 얻었다.',
|
||||
rewardExp: 12
|
||||
},
|
||||
{
|
||||
id: 'praise-white-horse-loyalty',
|
||||
label: '백마의 의리를 칭찬한다',
|
||||
response: '주공의 말에 조운은 깊이 고개를 숙였다. 흩어진 군영 안에서도 두 사람의 신뢰가 또렷해졌다.',
|
||||
rewardExp: 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'zhang-zhuge-after-changban-refuge',
|
||||
title: '다리목의 호령',
|
||||
availableAfterBattleIds: [campBattleIds.nineteenth],
|
||||
unitIds: ['zhang-fei', 'zhuge-liang'],
|
||||
bondId: 'zhang-fei__zhuge-liang',
|
||||
rewardExp: 22,
|
||||
lines: [
|
||||
'장비: 군사, 다리목에서 한 번 호통치니 놈들이 눈치를 보더군. 이번엔 계책이 아니라 목청이 이긴 것 아니오?',
|
||||
'제갈량: 익덕 장군의 호령이 먹힌 것은 설 곳을 정확히 골랐기 때문입니다. 그 자리까지 가는 길도 계책의 일부입니다.',
|
||||
'장비: 하하, 그렇다면 다음에도 어디서 소리치면 되는지만 알려 주시오. 나머지는 내 창이 알아서 하겠소.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'fix-bridge-ambush-signals',
|
||||
label: '다리목 신호를 정한다',
|
||||
response: '제갈량은 장비가 나서야 할 순간을 짧은 깃발 신호로 정했고, 장비는 복잡한 설명보다 마음에 든다고 웃었다.',
|
||||
rewardExp: 9
|
||||
},
|
||||
{
|
||||
id: 'let-roar-lead',
|
||||
label: '호령을 먼저 세운다',
|
||||
response: '장비의 호령이 적의 발을 묶고, 제갈량의 손짓이 그 뒤를 받치는 새 호흡이 생겼다.',
|
||||
rewardExp: 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'liu-zhuge-after-changban-refuge',
|
||||
title: '피난길과 강동',
|
||||
availableAfterBattleIds: [campBattleIds.nineteenth],
|
||||
unitIds: ['liu-bei', 'zhuge-liang'],
|
||||
bondId: 'liu-bei__zhuge-liang',
|
||||
rewardExp: 28,
|
||||
lines: [
|
||||
'유비: 오늘 지킨 것은 길 하나였지만, 그 길 위의 사람들은 천하보다 가벼울 수 없었소.',
|
||||
'제갈량: 바로 그 점이 강동에 전할 말입니다. 조조의 힘만이 아니라 주공이 무엇을 지키려 하는지를 보여야 합니다.',
|
||||
'유비: 그렇다면 손권에게 갈 말도 이 피난길에서 시작해야겠구려.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'write-refugee-road-record',
|
||||
label: '피난로 기록을 남긴다',
|
||||
response: '제갈량은 장판파의 피난로와 조조군의 추격 속도를 함께 적어 강동 사절 문서의 근거로 삼았다.',
|
||||
rewardExp: 11
|
||||
},
|
||||
{
|
||||
id: 'align-people-and-strategy',
|
||||
label: '백성과 대계를 함께 본다',
|
||||
response: '유비와 제갈량은 백성을 지키는 마음과 천하를 보는 계책이 서로 멀지 않음을 확인했다.',
|
||||
rewardExp: 10
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -2235,6 +2329,66 @@ const campVisits: CampVisitDefinition[] = [
|
||||
itemRewards: ['탁주 1']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'changban-refugee-camp',
|
||||
title: '장판파 피난민 수습',
|
||||
location: '남쪽 피난 진영',
|
||||
availableAfterBattleIds: [campBattleIds.nineteenth],
|
||||
bondId: 'liu-bei__zhao-yun',
|
||||
description: '장판파를 벗어난 피난민을 돌보며 흩어진 병사와 민심을 다시 모읍니다.',
|
||||
lines: [
|
||||
'조운: 피난민 중에는 가족을 잃고 주저앉은 사람도 많습니다. 군이 먼저 손을 내밀어야 길이 이어집니다.',
|
||||
'유비: 우리가 지킨 길이 사람을 버리는 길이 되어서는 안 되오. 군량을 나누되, 다음 행군도 버틸 수 있게 살피시오.',
|
||||
'남쪽 진영에는 먼지와 상처가 가득하지만, 유비군의 깃발 아래 다시 줄이 만들어집니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'share-field-medicine',
|
||||
label: '상처 입은 피난민을 돌본다',
|
||||
response: '조운은 약을 나누며 질서를 세웠고, 피난민들은 유비군이 자신들을 버리지 않았음을 기억했다.',
|
||||
bondExp: 22,
|
||||
itemRewards: ['민심 기록 1']
|
||||
},
|
||||
{
|
||||
id: 'gather-scattered-soldiers',
|
||||
label: '흩어진 병사를 모은다',
|
||||
response: '장판파에서 흩어진 병사들이 하나둘 돌아왔고, 군영은 다음 이동을 버틸 힘을 되찾았다.',
|
||||
bondExp: 18,
|
||||
gold: 140,
|
||||
itemRewards: ['콩 2']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'jiangdong-envoy-after-changban',
|
||||
title: '강동 사절 문서',
|
||||
location: '피난 진영 막사',
|
||||
availableAfterBattleIds: [campBattleIds.nineteenth],
|
||||
bondId: 'sun-qian__zhuge-liang',
|
||||
description: '제갈량과 손건이 장판파 전황을 강동에 보낼 문서로 정리합니다.',
|
||||
lines: [
|
||||
'손건: 장판파의 일은 처참하지만, 강동이 조조의 남하를 실감할 증거이기도 합니다.',
|
||||
'제갈량: 두려움만 적으면 사람은 굳고, 계산만 적으면 마음이 움직이지 않습니다. 주공이 지킨 길을 함께 써야 합니다.',
|
||||
'작은 막사 안에서 피난로 지도와 조조군의 진격 보고가 하나의 문서로 묶입니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'write-sun-quan-brief',
|
||||
label: '손권에게 보낼 요지를 쓴다',
|
||||
response: '손건은 제갈량의 형세 판단을 짧은 문장으로 정리했고, 강동 사절의 첫 말이 뚜렷해졌다.',
|
||||
bondExp: 20,
|
||||
itemRewards: ['강동 풍문 1']
|
||||
},
|
||||
{
|
||||
id: 'prepare-envoy-supplies',
|
||||
label: '사절 보급을 챙긴다',
|
||||
response: '강동까지 갈 사절단의 노자와 약품을 따로 묶어 두었다. 긴 길을 위한 준비가 조금 더 단단해졌다.',
|
||||
bondExp: 16,
|
||||
gold: 180,
|
||||
itemRewards: ['상처약 1', '탁주 1']
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -2320,7 +2474,7 @@ export class CampScene extends Phaser.Scene {
|
||||
return;
|
||||
}
|
||||
|
||||
if (battleId === campBattleIds.seventeenth || battleId === campBattleIds.eighteenth) {
|
||||
if (battleId === campBattleIds.seventeenth || battleId === campBattleIds.eighteenth || battleId === campBattleIds.nineteenth) {
|
||||
this.campaign = ensureCampaignRosterUnits(
|
||||
[...xuzhouRecruitUnits, ...caoBreakRecruitUnits, ...liuBiaoRecruitUnits, ...zhugeRecruitUnits],
|
||||
[...xuzhouRecruitBonds, ...caoBreakRecruitBonds, ...liuBiaoRecruitBonds, ...zhugeRecruitBonds]
|
||||
@@ -2377,6 +2531,9 @@ export class CampScene extends Phaser.Scene {
|
||||
|
||||
private currentCampTitle() {
|
||||
const battleId = this.currentCampBattleId();
|
||||
if (battleId === campBattleIds.nineteenth) {
|
||||
return '장판파 돌파 후 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.eighteenth) {
|
||||
return '박망파 승전 후 군영';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user