Add Chencang siege campaign chapter

This commit is contained in:
2026-06-24 11:03:12 +09:00
parent f9689c0149
commit 779b639bdf
10 changed files with 834 additions and 75 deletions

View File

@@ -31,6 +31,10 @@ import {
fiftySixthBattleMap,
fiftySixthBattleUnits,
fiftySixthBattleVictoryPages,
fiftyNinthBattleBonds,
fiftyNinthBattleMap,
fiftyNinthBattleUnits,
fiftyNinthBattleVictoryPages,
fiftySeventhBattleBonds,
fiftySeventhBattleMap,
fiftySeventhBattleUnits,
@@ -295,7 +299,8 @@ export type BattleScenarioId =
| 'fifty-fifth-battle-northern-qishan-road'
| 'fifty-sixth-battle-tianshui-advance'
| 'fifty-seventh-battle-jieting-crisis'
| 'fifty-eighth-battle-qishan-retreat';
| 'fifty-eighth-battle-qishan-retreat'
| 'fifty-ninth-battle-chencang-siege';
export type BattleObjectiveKind = 'defeat-leader' | 'pacify-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -3861,6 +3866,87 @@ export const fiftyEighthBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const fiftyNinthBattleScenario: BattleScenarioDefinition = {
id: 'fifty-ninth-battle-chencang-siege',
title: '진창 공성전',
victoryConditionLabel: '학소 진창 수비 압박과 왕쌍 추격 차단',
defeatConditionLabel: '제갈량 퇴각 또는 공성 진영 붕괴',
openingObjectiveLines: [
'기산에서 후퇴한 뒤 촉한군은 병사와 장부를 다시 묶어 진창 성채를 압박합니다. 학소가 성벽을 굳게 지키고 있어 성문 하나만 바라보는 공격은 오래 버티지 못합니다.',
'강유는 길을 알고, 왕평은 진영 표식을 보며, 위연은 돌파를 원합니다. 여기에 황권과 마량, 법정의 장부와 계책을 어떻게 넣을지에 따라 공성전의 무게가 달라집니다.',
'학소의 수비를 흔들고 왕쌍의 추격을 차단하십시오. 공성 진영과 군량 수레 길을 함께 지키면 다음 북방 계산으로 이어갈 수 있습니다.'
],
map: fiftyNinthBattleMap,
units: fiftyNinthBattleUnits,
bonds: fiftyNinthBattleBonds,
mapTextureKey: 'battle-map-fifty-ninth',
leaderUnitId: 'northern-fifth-leader-hao-zhao',
quickVictoryTurnLimit: 118,
baseVictoryGold: 17280,
objectives: [
{
id: 'pressure-hao-zhao',
kind: 'defeat-leader',
label: '학소 진창 수비 압박',
rewardGold: 12040,
unitId: 'northern-fifth-leader-hao-zhao'
},
{
id: 'halt-wang-shuang',
kind: 'defeat-leader',
label: '왕쌍 추격 차단',
rewardGold: 6000,
unitId: 'northern-fifth-officer-wang-shuang'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 3100,
unitId: 'zhuge-liang'
},
{
id: 'chencang-gate',
kind: 'secure-terrain',
label: '진창 성문 압박',
rewardGold: 6200,
terrain: 'fort'
},
{
id: 'siege-camps',
kind: 'secure-terrain',
label: '공성 진영 유지',
rewardGold: 5940,
terrain: 'camp'
},
{
id: 'grain-road',
kind: 'secure-terrain',
label: '군량 수레 길 확보',
rewardGold: 5820,
terrain: 'road'
},
{
id: 'rear-villages',
kind: 'secure-terrain',
label: '후방 마을 안정',
rewardGold: 5480,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '118턴 이내 진창 압박 완료',
rewardGold: 3840,
maxTurn: 118
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['금 104', '상처약 86', '군주 42', '진창 공성 장부 1', '왕쌍 추격 기록 1'],
victoryPages: fiftyNinthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -3921,7 +4007,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'fifty-fifth-battle-northern-qishan-road': fiftyFifthBattleScenario,
'fifty-sixth-battle-tianshui-advance': fiftySixthBattleScenario,
'fifty-seventh-battle-jieting-crisis': fiftySeventhBattleScenario,
'fifty-eighth-battle-qishan-retreat': fiftyEighthBattleScenario
'fifty-eighth-battle-qishan-retreat': fiftyEighthBattleScenario,
'fifty-ninth-battle-chencang-siege': fiftyNinthBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];