Add Wudu Yinping campaign chapter

This commit is contained in:
2026-06-24 11:28:46 +09:00
parent 779b639bdf
commit f3d23a13be
10 changed files with 833 additions and 76 deletions

View File

@@ -35,6 +35,10 @@ import {
fiftyNinthBattleMap,
fiftyNinthBattleUnits,
fiftyNinthBattleVictoryPages,
sixtiethBattleBonds,
sixtiethBattleMap,
sixtiethBattleUnits,
sixtiethBattleVictoryPages,
fiftySeventhBattleBonds,
fiftySeventhBattleMap,
fiftySeventhBattleUnits,
@@ -300,7 +304,8 @@ export type BattleScenarioId =
| 'fifty-sixth-battle-tianshui-advance'
| 'fifty-seventh-battle-jieting-crisis'
| 'fifty-eighth-battle-qishan-retreat'
| 'fifty-ninth-battle-chencang-siege';
| 'fifty-ninth-battle-chencang-siege'
| 'sixtieth-battle-wudu-yinping';
export type BattleObjectiveKind = 'defeat-leader' | 'pacify-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -3947,6 +3952,87 @@ export const fiftyNinthBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const sixtiethBattleScenario: BattleScenarioDefinition = {
id: 'sixtieth-battle-wudu-yinping',
title: '무도·음평 확보전',
victoryConditionLabel: '곽회 구원로 차단과 무도·음평 확보',
defeatConditionLabel: '제갈량 퇴각 또는 두 고을 보급선 붕괴',
openingObjectiveLines: [
'진창에서 물러난 뒤 촉한군은 무도와 음평의 산길을 동시에 압박합니다. 성 하나를 오래 치는 대신 두 고을의 길목을 얻어 북벌의 숨통을 넓히려 합니다.',
'곽회는 구원 기병과 산길 수비대를 보내 두 길을 끊으려 합니다. 강유가 길을 읽고 위연이 돌파하되, 조운·마대·왕평·황권·마량 중 누구를 데려갈지 선택이 전투의 모양을 바꿉니다.',
'곽회의 본대를 늦추고 무도와 음평의 마을, 수레 길, 산길 진영을 함께 안정시키십시오. 두 고을을 얻어도 보급이 끊기면 다음 북벌은 다시 좁아집니다.'
],
map: sixtiethBattleMap,
units: sixtiethBattleUnits,
bonds: sixtiethBattleBonds,
mapTextureKey: 'battle-map-sixtieth',
leaderUnitId: 'northern-sixth-leader-guo-huai',
quickVictoryTurnLimit: 120,
baseVictoryGold: 17920,
objectives: [
{
id: 'repel-guo-huai-relief',
kind: 'defeat-leader',
label: '곽회 구원로 차단',
rewardGold: 12600,
unitId: 'northern-sixth-leader-guo-huai'
},
{
id: 'secure-wudu-guard',
kind: 'defeat-leader',
label: '무도 고개 수비 제압',
rewardGold: 6280,
unitId: 'northern-sixth-officer-wudu'
},
{
id: 'secure-yinping-guard',
kind: 'defeat-leader',
label: '음평 물목 수비 제압',
rewardGold: 6240,
unitId: 'northern-sixth-officer-yinping'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 3200,
unitId: 'zhuge-liang'
},
{
id: 'two-commandery-road',
kind: 'secure-terrain',
label: '두 고을 수레 길 확보',
rewardGold: 6040,
terrain: 'road'
},
{
id: 'wudu-yinping-villages',
kind: 'secure-terrain',
label: '무도·음평 마을 안정',
rewardGold: 5900,
terrain: 'village'
},
{
id: 'mountain-camps',
kind: 'secure-terrain',
label: '산길 진영 유지',
rewardGold: 5760,
terrain: 'camp'
},
{
id: 'quick',
kind: 'quick-victory',
label: '120턴 이내 두 고을 확보',
rewardGold: 3920,
maxTurn: 120
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['금 110', '상처약 90', '군주 44', '무도·음평 장부 1', '곽회 구원로 기록 1'],
victoryPages: sixtiethBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -4008,7 +4094,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'fifty-sixth-battle-tianshui-advance': fiftySixthBattleScenario,
'fifty-seventh-battle-jieting-crisis': fiftySeventhBattleScenario,
'fifty-eighth-battle-qishan-retreat': fiftyEighthBattleScenario,
'fifty-ninth-battle-chencang-siege': fiftyNinthBattleScenario
'fifty-ninth-battle-chencang-siege': fiftyNinthBattleScenario,
'sixtieth-battle-wudu-yinping': sixtiethBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];