Add Red Cliffs fire attack chapter

This commit is contained in:
2026-06-23 07:15:43 +09:00
parent 7f80600d0c
commit 302f0e0a76
11 changed files with 1059 additions and 24 deletions

View File

@@ -43,6 +43,10 @@ import {
twentyFirstBattleMap,
twentyFirstBattleUnits,
twentyFirstBattleVictoryPages,
twentySecondBattleBonds,
twentySecondBattleMap,
twentySecondBattleUnits,
twentySecondBattleVictoryPages,
twentiethBattleBonds,
twentiethBattleMap,
twentiethBattleUnits,
@@ -110,7 +114,8 @@ export type BattleScenarioId =
| 'eighteenth-battle-bowang-ambush'
| 'nineteenth-battle-changban-refuge'
| 'twentieth-battle-jiangdong-envoy'
| 'twenty-first-battle-red-cliffs-vanguard';
| 'twenty-first-battle-red-cliffs-vanguard'
| 'twenty-second-battle-red-cliffs-fire';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -1293,6 +1298,69 @@ export const twentyFirstBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const twentySecondBattleScenario: BattleScenarioDefinition = {
id: 'twenty-second-battle-red-cliffs-fire',
title: '적벽 화공전',
victoryConditionLabel: '조조 본선 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'황개의 거짓 항복선이 조조 함대로 향합니다. 조조군 감시선이 화선을 알아차리면 적벽의 불길은 시작되기도 전에 꺼집니다.',
'강 위에는 연환선과 배다리가 얽혀 있습니다. 전열 장수로 갑판 보병을 묶고, 기동 장수로 강안 기병을 끊어 화선 접안로를 열어야 합니다.',
'제갈량을 지키고 조조 본선을 퇴각시키십시오. 화선 준비 지점을 확보하면 적벽대전의 결정적 승리를 얻을 수 있습니다.'
],
map: twentySecondBattleMap,
units: twentySecondBattleUnits,
bonds: twentySecondBattleBonds,
mapTextureKey: 'battle-map-twenty-second',
leaderUnitId: 'redcliff-fire-leader-cao-cao',
quickVictoryTurnLimit: 31,
baseVictoryGold: 2840,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '조조 본선 퇴각',
rewardGold: 1900,
unitId: 'redcliff-fire-leader-cao-cao'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 560,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 860,
unitId: 'zhuge-liang'
},
{
id: 'fire-ship-landing',
kind: 'secure-terrain',
label: '화선 접안로 확보',
rewardGold: 980,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '31턴 이내 승리',
rewardGold: 720,
maxTurn: 31
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 9', '상처약 6', '탁주 4', '화공 전과 +1', '동남풍 기록 +1'],
victoryPages: twentySecondBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -1316,7 +1384,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'eighteenth-battle-bowang-ambush': eighteenthBattleScenario,
'nineteenth-battle-changban-refuge': nineteenthBattleScenario,
'twentieth-battle-jiangdong-envoy': twentiethBattleScenario,
'twenty-first-battle-red-cliffs-vanguard': twentyFirstBattleScenario
'twenty-first-battle-red-cliffs-vanguard': twentyFirstBattleScenario,
'twenty-second-battle-red-cliffs-fire': twentySecondBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];