Add Han River flood chapter

This commit is contained in:
2026-06-23 16:12:24 +09:00
parent fe1f897609
commit 628e73ba58
11 changed files with 910 additions and 45 deletions

View File

@@ -20,6 +20,10 @@ import {
eleventhBattleMap,
eleventhBattleUnits,
eleventhBattleVictoryPages,
fortiethBattleBonds,
fortiethBattleMap,
fortiethBattleUnits,
fortiethBattleVictoryPages,
firstBattleMap,
firstBattleUnits,
firstBattleVictoryPages,
@@ -200,7 +204,8 @@ export type BattleScenarioId =
| 'thirty-sixth-battle-dingjun-vanguard'
| 'thirty-seventh-battle-hanzhong-decisive'
| 'thirty-eighth-battle-jing-defense'
| 'thirty-ninth-battle-fan-castle-vanguard';
| 'thirty-ninth-battle-fan-castle-vanguard'
| 'fortieth-battle-han-river-flood';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -2517,6 +2522,69 @@ export const thirtyNinthBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const fortiethBattleScenario: BattleScenarioDefinition = {
id: 'fortieth-battle-han-river-flood',
title: '한수 수공',
victoryConditionLabel: '우금 본대 격파',
defeatConditionLabel: '유비 또는 관우 퇴각',
openingObjectiveLines: [
'한수의 수위가 오르며 번성 외곽이 진흙과 물길로 갈라졌습니다. 우금의 본대를 강과 둑 사이에 묶어 칠군을 흔드십시오.',
'관우는 이번 전투의 중심입니다. 관우가 전선을 잃으면 수공의 명분과 병사의 사기가 함께 무너집니다.',
'우금은 본진을 지키고, 방덕은 기병으로 돌파를 시도합니다. 법정, 마량, 황권 같은 참모와 기동대를 함께 운용하면 물길을 장악하기 쉽습니다.'
],
map: fortiethBattleMap,
units: fortiethBattleUnits,
bonds: fortiethBattleBonds,
mapTextureKey: 'battle-map-fortieth',
leaderUnitId: 'han-river-leader-yu-jin',
quickVictoryTurnLimit: 64,
baseVictoryGold: 7920,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '우금 본대 격파',
rewardGold: 5060,
unitId: 'han-river-leader-yu-jin'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1240,
unitId: 'liu-bei'
},
{
id: 'guan-yu',
kind: 'keep-unit-alive',
label: '관우 생존',
rewardGold: 1960,
unitId: 'guan-yu'
},
{
id: 'river-bank',
kind: 'secure-terrain',
label: '한수 둑길 확보',
rewardGold: 2440,
terrain: 'road'
},
{
id: 'quick',
kind: 'quick-victory',
label: '64턴 이내 승리',
rewardGold: 1800,
maxTurn: 64
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'guan-yu' }
],
itemRewards: ['콩 36', '상처약 26', '탁주 11', '한수 수위표 1', '칠군 항복문 1'],
victoryPages: fortiethBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -2558,7 +2626,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'thirty-sixth-battle-dingjun-vanguard': thirtySixthBattleScenario,
'thirty-seventh-battle-hanzhong-decisive': thirtySeventhBattleScenario,
'thirty-eighth-battle-jing-defense': thirtyEighthBattleScenario,
'thirty-ninth-battle-fan-castle-vanguard': thirtyNinthBattleScenario
'thirty-ninth-battle-fan-castle-vanguard': thirtyNinthBattleScenario,
'fortieth-battle-han-river-flood': fortiethBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];