Add Qishan retreat campaign chapter

This commit is contained in:
2026-06-24 10:05:38 +09:00
parent a3f56bb787
commit f9689c0149
10 changed files with 839 additions and 72 deletions

View File

@@ -19,6 +19,10 @@ import {
fiftyFourthBattleMap,
fiftyFourthBattleUnits,
fiftyFourthBattleVictoryPages,
fiftyEighthBattleBonds,
fiftyEighthBattleMap,
fiftyEighthBattleUnits,
fiftyEighthBattleVictoryPages,
fiftyFifthBattleBonds,
fiftyFifthBattleMap,
fiftyFifthBattleUnits,
@@ -290,7 +294,8 @@ export type BattleScenarioId =
| 'fifty-fourth-battle-meng-huo-final-capture'
| 'fifty-fifth-battle-northern-qishan-road'
| 'fifty-sixth-battle-tianshui-advance'
| 'fifty-seventh-battle-jieting-crisis';
| 'fifty-seventh-battle-jieting-crisis'
| 'fifty-eighth-battle-qishan-retreat';
export type BattleObjectiveKind = 'defeat-leader' | 'pacify-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -3775,6 +3780,87 @@ export const fiftySeventhBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const fiftyEighthBattleScenario: BattleScenarioDefinition = {
id: 'fifty-eighth-battle-qishan-retreat',
title: '기산 후퇴로',
victoryConditionLabel: '기산 퇴로와 군량 수레 확보 및 사마의 본대 저지',
defeatConditionLabel: '제갈량 퇴각 또는 군량 퇴로 상실',
openingObjectiveLines: [
'가정의 위기는 넘겼지만 북벌군의 보급선은 이미 길게 늘어졌습니다. 무리한 추격보다 기산으로 돌아가는 군량 수레 길을 먼저 열어 병사를 살려야 합니다.',
'강유가 촉한의 장수로 처음 출전 후보에 들어왔습니다. 천수의 낮은 길을 아는 강유, 물길을 보는 왕평, 회수 기동의 조운과 마대 중 누구에게 자리를 줄지 결정하십시오.',
'장합의 빠른 추격을 끊고 사마의의 본대를 저지하십시오. 물길과 수레 길, 후방 진영을 함께 확보하면 다음 북벌을 준비할 병력과 장부를 지킬 수 있습니다.'
],
map: fiftyEighthBattleMap,
units: fiftyEighthBattleUnits,
bonds: fiftyEighthBattleBonds,
mapTextureKey: 'battle-map-fifty-eighth',
leaderUnitId: 'northern-fourth-leader-sima-yi',
quickVictoryTurnLimit: 116,
baseVictoryGold: 16680,
objectives: [
{
id: 'repel-sima-yi',
kind: 'defeat-leader',
label: '사마의 본대 저지',
rewardGold: 11400,
unitId: 'northern-fourth-leader-sima-yi'
},
{
id: 'halt-zhang-he',
kind: 'defeat-leader',
label: '장합 추격 차단',
rewardGold: 5600,
unitId: 'northern-fourth-officer-zhang-he'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2980,
unitId: 'zhuge-liang'
},
{
id: 'qishan-cart-road',
kind: 'secure-terrain',
label: '기산 군량 수레 길 확보',
rewardGold: 5900,
terrain: 'road'
},
{
id: 'qishan-waterline',
kind: 'secure-terrain',
label: '퇴각 물길 확보',
rewardGold: 5780,
terrain: 'river'
},
{
id: 'rear-camps',
kind: 'secure-terrain',
label: '후방 진영 수습',
rewardGold: 5480,
terrain: 'camp'
},
{
id: 'ridge-forts',
kind: 'secure-terrain',
label: '위군 능선 거점 제압',
rewardGold: 5320,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '116턴 이내 기산 후퇴 완료',
rewardGold: 3720,
maxTurn: 116
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['금 98', '상처약 82', '군주 40', '기산 퇴각 지도 1', '강유 첫 출전 기록 1'],
victoryPages: fiftyEighthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -3834,7 +3920,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'fifty-fourth-battle-meng-huo-final-capture': fiftyFourthBattleScenario,
'fifty-fifth-battle-northern-qishan-road': fiftyFifthBattleScenario,
'fifty-sixth-battle-tianshui-advance': fiftySixthBattleScenario,
'fifty-seventh-battle-jieting-crisis': fiftySeventhBattleScenario
'fifty-seventh-battle-jieting-crisis': fiftySeventhBattleScenario,
'fifty-eighth-battle-qishan-retreat': fiftyEighthBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];