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

@@ -19,6 +19,10 @@ import {
tenthBattleMap,
tenthBattleUnits,
tenthBattleVictoryPages,
twelfthBattleBonds,
twelfthBattleMap,
twelfthBattleUnits,
twelfthBattleVictoryPages,
fifthBattleBonds,
fifthBattleMap,
fifthBattleUnits,
@@ -60,7 +64,8 @@ export type BattleScenarioId =
| 'eighth-battle-xiaopei-supply-road'
| 'ninth-battle-xuzhou-gate-night-raid'
| 'tenth-battle-xuzhou-breakout'
| 'eleventh-battle-xudu-refuge-road';
| 'eleventh-battle-xudu-refuge-road'
| 'twelfth-battle-xiapi-outer-siege';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -682,6 +687,59 @@ export const eleventhBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const twelfthBattleScenario: BattleScenarioDefinition = {
id: 'twelfth-battle-xiapi-outer-siege',
title: '하비 외곽전',
victoryConditionLabel: '장료 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조조는 하비 포위망의 남쪽 둑길을 유비군에게 맡깁니다. 장료를 격파하면 여포군 선봉은 성 안으로 물러납니다.',
'강줄기와 둑길이 전장을 나눕니다. 여포군 기병은 길을 타고 돌파하고, 성루 궁병과 진궁은 후방에서 압박합니다.',
'둑길 진영을 확보하고 20턴 안에 승리하면 조조 휘하에서의 공적과 유비군의 독자 보급을 함께 지킬 수 있습니다.'
],
map: twelfthBattleMap,
units: twelfthBattleUnits,
bonds: twelfthBattleBonds,
mapTextureKey: 'battle-map-twelfth',
leaderUnitId: 'xiapi-leader-zhang-liao',
quickVictoryTurnLimit: 20,
baseVictoryGold: 1440,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '장료 격파',
rewardGold: 900,
unitId: 'xiapi-leader-zhang-liao'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 340,
unitId: 'liu-bei'
},
{
id: 'camp',
kind: 'secure-terrain',
label: '하비 둑길 진영 확보',
rewardGold: 500,
terrain: 'camp'
},
{
id: 'quick',
kind: 'quick-victory',
label: '20턴 이내 승리',
rewardGold: 390,
maxTurn: 20
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 4', '상처약 3', '탁주 2', '하비 포위 공적 +1'],
victoryPages: twelfthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -695,7 +753,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'eighth-battle-xiaopei-supply-road': eighthBattleScenario,
'ninth-battle-xuzhou-gate-night-raid': ninthBattleScenario,
'tenth-battle-xuzhou-breakout': tenthBattleScenario,
'eleventh-battle-xudu-refuge-road': eleventhBattleScenario
'eleventh-battle-xudu-refuge-road': eleventhBattleScenario,
'twelfth-battle-xiapi-outer-siege': twelfthBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];