Add Wuling mountain road chapter

This commit is contained in:
2026-06-23 08:16:37 +09:00
parent f8cc2f329c
commit 98876673a8
11 changed files with 1183 additions and 30 deletions

View File

@@ -55,6 +55,10 @@ import {
twentyFourthBattleMap,
twentyFourthBattleUnits,
twentyFourthBattleVictoryPages,
twentyFifthBattleBonds,
twentyFifthBattleMap,
twentyFifthBattleUnits,
twentyFifthBattleVictoryPages,
twentiethBattleBonds,
twentiethBattleMap,
twentiethBattleUnits,
@@ -125,7 +129,8 @@ export type BattleScenarioId =
| 'twenty-first-battle-red-cliffs-vanguard'
| 'twenty-second-battle-red-cliffs-fire'
| 'twenty-third-battle-jingzhou-south-entry'
| 'twenty-fourth-battle-guiyang-persuasion';
| 'twenty-fourth-battle-guiyang-persuasion'
| 'twenty-fifth-battle-wuling-mountain-road';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -1497,6 +1502,69 @@ export const twentyFourthBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const twentyFifthBattleScenario: BattleScenarioDefinition = {
id: 'twenty-fifth-battle-wuling-mountain-road',
title: '무릉 산길 확보전',
victoryConditionLabel: '김선 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'계양이 열린 뒤 유비군은 무릉의 산길로 들어섭니다. 좁은 길과 흩어진 마을 때문에 단순 돌파만으로는 근거지를 얻을 수 없습니다.',
'마량과 이적은 무릉의 내부 동요를 읽고, 김선 아래 장수 공지가 백성 피해를 염려한다고 보고합니다.',
'유비와 제갈량을 지키며 김선을 물러나게 하고 산길 마을을 안정시키면, 공지가 군영에 합류합니다.'
],
map: twentyFifthBattleMap,
units: twentyFifthBattleUnits,
bonds: twentyFifthBattleBonds,
mapTextureKey: 'battle-map-twenty-fifth',
leaderUnitId: 'wuling-leader-jin-xuan',
quickVictoryTurnLimit: 34,
baseVictoryGold: 3360,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '김선 퇴각',
rewardGold: 2200,
unitId: 'wuling-leader-jin-xuan'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 640,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 900,
unitId: 'zhuge-liang'
},
{
id: 'wuling-village',
kind: 'secure-terrain',
label: '무릉 마을 안정',
rewardGold: 1080,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '34턴 이내 승리',
rewardGold: 840,
maxTurn: 34
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 11', '상처약 8', '탁주 4', '무릉 산길 지도 +1', '공지 합류'],
victoryPages: twentyFifthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -1523,7 +1591,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'twenty-first-battle-red-cliffs-vanguard': twentyFirstBattleScenario,
'twenty-second-battle-red-cliffs-fire': twentySecondBattleScenario,
'twenty-third-battle-jingzhou-south-entry': twentyThirdBattleScenario,
'twenty-fourth-battle-guiyang-persuasion': twentyFourthBattleScenario
'twenty-fourth-battle-guiyang-persuasion': twentyFourthBattleScenario,
'twenty-fifth-battle-wuling-mountain-road': twentyFifthBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];