Add Xuzhou gate night raid battle

This commit is contained in:
2026-06-23 01:42:44 +09:00
parent 1c501057e3
commit 056fb34226
11 changed files with 682 additions and 16 deletions

View File

@@ -7,6 +7,10 @@ import {
firstBattleMap,
firstBattleUnits,
firstBattleVictoryPages,
ninthBattleBonds,
ninthBattleMap,
ninthBattleUnits,
ninthBattleVictoryPages,
fifthBattleBonds,
fifthBattleMap,
fifthBattleUnits,
@@ -45,7 +49,8 @@ export type BattleScenarioId =
| 'fifth-battle-sishui-vanguard'
| 'sixth-battle-jieqiao-relief'
| 'seventh-battle-xuzhou-rescue'
| 'eighth-battle-xiaopei-supply-road';
| 'eighth-battle-xiaopei-supply-road'
| 'ninth-battle-xuzhou-gate-night-raid';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -508,6 +513,59 @@ export const eighthBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const ninthBattleScenario: BattleScenarioDefinition = {
id: 'ninth-battle-xuzhou-gate-night-raid',
title: '서주 성문 야습',
victoryConditionLabel: '조표 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조표가 성문 수비병을 움직이고 여포군 기병이 밤길을 타고 접근합니다. 조표를 격파하면 성문을 다시 장악할 수 있습니다.',
'성벽 궁병은 높은 곳을 지키고, 여포군 기병은 길을 따라 빠르게 파고듭니다. 마을과 성문 지형을 이용해 전열을 끊어야 합니다.',
'18턴 이내 성문을 안정시키면 서주 내부 불안을 잠시나마 눌러 둘 수 있습니다.'
],
map: ninthBattleMap,
units: ninthBattleUnits,
bonds: ninthBattleBonds,
mapTextureKey: 'battle-map-ninth',
leaderUnitId: 'xuzhou-leader-cao-bao',
quickVictoryTurnLimit: 18,
baseVictoryGold: 1160,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '조표 격파',
rewardGold: 700,
unitId: 'xuzhou-leader-cao-bao'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 280,
unitId: 'liu-bei'
},
{
id: 'fort',
kind: 'secure-terrain',
label: '서주 성문 확보',
rewardGold: 400,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '18턴 이내 승리',
rewardGold: 320,
maxTurn: 18
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 3', '상처약 2', '탁주 1', '서주 성문 수비 +1'],
victoryPages: ninthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -518,7 +576,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'fifth-battle-sishui-vanguard': fifthBattleScenario,
'sixth-battle-jieqiao-relief': sixthBattleScenario,
'seventh-battle-xuzhou-rescue': seventhBattleScenario,
'eighth-battle-xiaopei-supply-road': eighthBattleScenario
'eighth-battle-xiaopei-supply-road': eighthBattleScenario,
'ninth-battle-xuzhou-gate-night-raid': ninthBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];