Add Xiapi outer siege chapter

This commit is contained in:
2026-06-23 02:55:33 +09:00
parent 83b2bb6361
commit 450842bd28
11 changed files with 778 additions and 17 deletions

View File

@@ -176,7 +176,8 @@ const campBattleIds = {
eighth: 'eighth-battle-xiaopei-supply-road',
ninth: 'ninth-battle-xuzhou-gate-night-raid',
tenth: 'tenth-battle-xuzhou-breakout',
eleventh: 'eleventh-battle-xudu-refuge-road'
eleventh: 'eleventh-battle-xudu-refuge-road',
twelfth: 'twelfth-battle-xiapi-outer-siege'
} as const;
const requiredSortieUnitIds = new Set(['liu-bei']);
@@ -288,6 +289,16 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
{ unitId: 'mi-zhu', reason: '허도 입성 전 보급 안정에 유리합니다.' }
],
note: '허도 입성로는 조조군의 감시를 받는 시험입니다. 군율과 보급을 보여줄 무장을 챙기십시오.'
},
'twelfth-battle-xiapi-outer-siege': {
maxUnits: 5,
recommended: [
{ unitId: 'liu-bei', reason: '조조 휘하 작전에서도 유비군의 명분을 지켜야 합니다.' },
{ unitId: 'zhang-fei', reason: '여포군 기병 돌파를 막고 둑길을 압박합니다.' },
{ unitId: 'jian-yong', reason: '조조군 감시 속 명분과 보고 문서를 조율합니다.' },
{ unitId: 'mi-zhu', reason: '강가 포위전의 보급과 회복 운용에 유리합니다.' }
],
note: '하비 외곽전은 강줄기와 둑길이 전장을 나눕니다. 돌파와 보급, 조조군 보고까지 함께 고려하십시오.'
}
};
@@ -1236,6 +1247,87 @@ const campDialogues: CampDialogue[] = [
rewardExp: 8
}
]
},
{
id: 'liu-zhang-after-xiapi-outer',
title: '창끝을 누르는 법',
availableAfterBattleIds: [campBattleIds.twelfth],
unitIds: ['liu-bei', 'zhang-fei'],
bondId: 'liu-bei__zhang-fei',
rewardExp: 22,
lines: [
'장비: 형님, 여포 놈의 깃발이 눈앞에 있는데도 창을 참는 일이 쉽지 않았습니다.',
'유비: 참았기에 포위망이 무너지지 않았다. 익덕의 창은 분노보다 늦게 나갈 때 더 무겁소.',
'장비: 다음에는 여포의 말발굽보다 먼저 제 마음을 묶어 두겠습니다.'
],
choices: [
{
id: 'praise-restraint',
label: '참은 공을 칭찬한다',
response: '장비는 호통보다 뜻밖의 칭찬에 더 깊이 고개를 숙였고, 다음 싸움에서도 전열을 지키겠다고 다짐했다.',
rewardExp: 10
},
{
id: 'assign-dike-front',
label: '둑길 전열을 맡긴다',
response: '장비는 자신이 앞에서 버티면 여포군 기병도 쉽게 뚫지 못할 것이라며 창대를 움켜쥐었다.',
rewardExp: 9
}
]
},
{
id: 'liu-jian-yong-after-xiapi-outer',
title: '공적을 쓰는 붓',
availableAfterBattleIds: [campBattleIds.twelfth],
unitIds: ['liu-bei', 'jian-yong'],
bondId: 'liu-bei__jian-yong',
rewardExp: 20,
lines: [
'간옹: 오늘 공적은 조조의 장부에도 오르겠지만, 그 장부가 우리 목줄이 되지 않게 써야 하네.',
'유비: 공을 세워도 빚이 되고, 물러서도 의심이 되는 형국이오.',
'간옹: 그래서 말의 끝을 남겨야지. 우리는 조조를 위해서만 싸운 것이 아니라 서주 백성을 위해 싸웠다고.'
],
choices: [
{
id: 'record-people-first',
label: '백성 보호를 먼저 기록한다',
response: '간옹은 전공 보고의 첫 줄에 피난민과 보급로 보호를 적어 유비군의 명분을 분명히 했다.',
rewardExp: 9
},
{
id: 'keep-private-notes',
label: '별도 기록을 남긴다',
response: '간옹은 조조에게 보일 보고와 훗날 유비군이 기억할 기록을 따로 남겼다.',
rewardExp: 8
}
]
},
{
id: 'liu-mi-after-xiapi-outer',
title: '물가의 보급선',
availableAfterBattleIds: [campBattleIds.twelfth],
unitIds: ['liu-bei', 'mi-zhu'],
bondId: 'liu-bei__mi-zhu',
rewardExp: 18,
lines: [
'미축: 강가 포위전은 싸움보다 군량이 먼저 흔들립니다. 조조군 배급만 믿으면 우리 병사 마음도 함께 묶입니다.',
'유비: 독자 보급이 곧 독자적인 마음이오. 작은 양이라도 우리가 스스로 마련할 길을 남깁시다.',
'미축: 그렇다면 하비 외곽에서 거둔 전리품은 공용과 예비로 나누어 두겠습니다.'
],
choices: [
{
id: 'split-siege-supplies',
label: '보급을 둘로 나눈다',
response: '미축은 조조군 공용 보급과 유비군 예비 보급을 나누어, 훗날 떠날 수 있는 여지를 남겼다.',
rewardExp: 8
},
{
id: 'secure-river-cart',
label: '강가 수레를 확보한다',
response: '미축은 강가에서 쓸 수레와 배를 따로 챙겨 다음 포위전의 군량 흐름을 안정시켰다.',
rewardExp: 8
}
]
}
];
@@ -1319,7 +1411,8 @@ export class CampScene extends Phaser.Scene {
battleId !== campBattleIds.eighth &&
battleId !== campBattleIds.ninth &&
battleId !== campBattleIds.tenth &&
battleId !== campBattleIds.eleventh) ||
battleId !== campBattleIds.eleventh &&
battleId !== campBattleIds.twelfth) ||
!this.campaign
) {
return;
@@ -1341,6 +1434,9 @@ export class CampScene extends Phaser.Scene {
private currentCampTitle() {
const battleId = this.currentCampBattleId();
if (battleId === campBattleIds.twelfth) {
return '하비 포위 군영';
}
if (battleId === campBattleIds.eleventh) {
return '허도 의탁 군영';
}