Add Xuzhou rescue sortie flow

This commit is contained in:
2026-06-23 00:45:22 +09:00
parent 84a5606a73
commit 87b200d772
11 changed files with 929 additions and 43 deletions

View File

@@ -11,6 +11,10 @@ import {
secondBattleMap,
secondBattleUnits,
secondBattleVictoryPages,
seventhBattleBonds,
seventhBattleMap,
seventhBattleUnits,
seventhBattleVictoryPages,
sixthBattleBonds,
sixthBattleMap,
sixthBattleUnits,
@@ -35,7 +39,8 @@ export type BattleScenarioId =
| 'third-battle-guangzong-road'
| 'fourth-battle-guangzong-camp'
| 'fifth-battle-sishui-vanguard'
| 'sixth-battle-jieqiao-relief';
| 'sixth-battle-jieqiao-relief'
| 'seventh-battle-xuzhou-rescue';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -392,6 +397,59 @@ export const sixthBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const seventhBattleScenario: BattleScenarioDefinition = {
id: 'seventh-battle-xuzhou-rescue',
title: '서주 구원전',
victoryConditionLabel: '하후돈 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조조군 선봉 하후돈이 서주 피난로와 마을을 압박하고 있습니다. 하후돈을 격파하면 서주 성문까지 길을 열 수 있습니다.',
'강가 궁병은 자리를 지키고, 기병은 길을 따라 빠르게 추격합니다. 마을을 확보하며 선봉을 단계적으로 끊어 내십시오.',
'16턴 이내에 승리하면 도겸과 서주 백성의 신뢰가 크게 오릅니다.'
],
map: seventhBattleMap,
units: seventhBattleUnits,
bonds: seventhBattleBonds,
mapTextureKey: 'battle-map-seventh',
leaderUnitId: 'xuzhou-leader-xiahou-dun',
quickVictoryTurnLimit: 16,
baseVictoryGold: 960,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '하후돈 격파',
rewardGold: 580,
unitId: 'xuzhou-leader-xiahou-dun'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 230,
unitId: 'liu-bei'
},
{
id: 'village',
kind: 'secure-terrain',
label: '서주 피난촌 확보',
rewardGold: 330,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '16턴 이내 승리',
rewardGold: 270,
maxTurn: 16
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 2', '상처약 2', '탁주 1', '서주 민심 +1'],
victoryPages: seventhBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -400,7 +458,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'third-battle-guangzong-road': thirdBattleScenario,
'fourth-battle-guangzong-camp': fourthBattleScenario,
'fifth-battle-sishui-vanguard': fifthBattleScenario,
'sixth-battle-jieqiao-relief': sixthBattleScenario
'sixth-battle-jieqiao-relief': sixthBattleScenario,
'seventh-battle-xuzhou-rescue': seventhBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];