Add Luo Castle main gate chapter

This commit is contained in:
2026-06-23 11:44:09 +09:00
parent 0872c584b4
commit 004ec3cfff
11 changed files with 986 additions and 45 deletions

View File

@@ -43,6 +43,10 @@ import {
tenthBattleMap,
tenthBattleUnits,
tenthBattleVictoryPages,
thirtyFirstBattleBonds,
thirtyFirstBattleMap,
thirtyFirstBattleUnits,
thirtyFirstBattleVictoryPages,
thirteenthBattleBonds,
thirteenthBattleMap,
thirteenthBattleUnits,
@@ -155,7 +159,8 @@ export type BattleScenarioId =
| 'twenty-seventh-battle-yizhou-relief-road'
| 'twenty-eighth-battle-fu-pass-entry'
| 'twenty-ninth-battle-luo-outer-wall'
| 'thirtieth-battle-luofeng-ambush';
| 'thirtieth-battle-luofeng-ambush'
| 'thirty-first-battle-luo-main-gate';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -1905,6 +1910,69 @@ export const thirtiethBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const thirtyFirstBattleScenario: BattleScenarioDefinition = {
id: 'thirty-first-battle-luo-main-gate',
title: '낙성 본성 공략',
victoryConditionLabel: '장임 본성 격파',
defeatConditionLabel: '유비 또는 방통 퇴각',
openingObjectiveLines: [
'낙성 본성은 높은 성벽과 좁은 성문으로 버티고 있습니다. 성문을 무너뜨리되 백성 피해를 줄여야 다음 익주 진입이 쉬워집니다.',
'엄안이 성 안의 노장으로 버티고 있습니다. 황충, 법정, 오의를 데려가면 성벽 궁병과 항복 설득을 함께 압박하기 좋습니다.',
'유비와 방통을 지키며 장임을 격파하십시오. 낙성이 열리면 익주 심부와 성도 압박으로 나아갑니다.'
],
map: thirtyFirstBattleMap,
units: thirtyFirstBattleUnits,
bonds: thirtyFirstBattleBonds,
mapTextureKey: 'battle-map-thirty-first',
leaderUnitId: 'luo-main-leader-zhang-ren',
quickVictoryTurnLimit: 42,
baseVictoryGold: 4720,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '장임 본성 격파',
rewardGold: 2920,
unitId: 'luo-main-leader-zhang-ren'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 900,
unitId: 'liu-bei'
},
{
id: 'pang-tong',
kind: 'keep-unit-alive',
label: '방통 생존',
rewardGold: 1220,
unitId: 'pang-tong'
},
{
id: 'main-gate',
kind: 'secure-terrain',
label: '낙성 성문 확보',
rewardGold: 1480,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '42턴 이내 승리',
rewardGold: 1120,
maxTurn: 42
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'pang-tong' }
],
itemRewards: ['콩 16', '상처약 12', '탁주 7', '낙성 항복 권고문 +1', '엄안 합류'],
victoryPages: thirtyFirstBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -1937,7 +2005,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'twenty-seventh-battle-yizhou-relief-road': twentySeventhBattleScenario,
'twenty-eighth-battle-fu-pass-entry': twentyEighthBattleScenario,
'twenty-ninth-battle-luo-outer-wall': twentyNinthBattleScenario,
'thirtieth-battle-luofeng-ambush': thirtiethBattleScenario
'thirtieth-battle-luofeng-ambush': thirtiethBattleScenario,
'thirty-first-battle-luo-main-gate': thirtyFirstBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];