Add Red Cliffs vanguard chapter

This commit is contained in:
2026-06-23 06:59:33 +09:00
parent 0af7c9cfe8
commit 7f80600d0c
11 changed files with 1058 additions and 24 deletions

View File

@@ -39,6 +39,10 @@ import {
thirteenthBattleMap,
thirteenthBattleUnits,
thirteenthBattleVictoryPages,
twentyFirstBattleBonds,
twentyFirstBattleMap,
twentyFirstBattleUnits,
twentyFirstBattleVictoryPages,
twentiethBattleBonds,
twentiethBattleMap,
twentiethBattleUnits,
@@ -105,7 +109,8 @@ export type BattleScenarioId =
| 'seventeenth-battle-wolong-visit-road'
| 'eighteenth-battle-bowang-ambush'
| 'nineteenth-battle-changban-refuge'
| 'twentieth-battle-jiangdong-envoy';
| 'twentieth-battle-jiangdong-envoy'
| 'twenty-first-battle-red-cliffs-vanguard';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -1225,6 +1230,69 @@ export const twentiethBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const twentyFirstBattleScenario: BattleScenarioDefinition = {
id: 'twenty-first-battle-red-cliffs-vanguard',
title: '적벽 전초전',
victoryConditionLabel: '채모 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'강동 회담이 결전으로 기울자 조조군 수군 선봉이 적벽 포구를 시험합니다. 첫 전선을 빼앗기면 손유 동맹의 사기가 크게 흔들립니다.',
'강 위의 전장은 강줄기와 배다리가 길을 나눕니다. 기동 장수로 강안 기병을 끊고, 전열 장수로 포구 수비대를 밀어내야 합니다.',
'채모를 퇴각시키고 제갈량을 지키십시오. 강동 포구를 확보하면 화공을 논할 발판이 마련됩니다.'
],
map: twentyFirstBattleMap,
units: twentyFirstBattleUnits,
bonds: twentyFirstBattleBonds,
mapTextureKey: 'battle-map-twenty-first',
leaderUnitId: 'redcliff-vanguard-leader-cai-mao',
quickVictoryTurnLimit: 30,
baseVictoryGold: 2540,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '채모 퇴각',
rewardGold: 1660,
unitId: 'redcliff-vanguard-leader-cai-mao'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 520,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 800,
unitId: 'zhuge-liang'
},
{
id: 'red-cliffs-port',
kind: 'secure-terrain',
label: '강동 포구 확보',
rewardGold: 900,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '30턴 이내 승리',
rewardGold: 680,
maxTurn: 30
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 8', '상처약 6', '탁주 3', '화공 논의 +1', '동맹 군의 기록 +1'],
victoryPages: twentyFirstBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -1247,7 +1315,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'seventeenth-battle-wolong-visit-road': seventeenthBattleScenario,
'eighteenth-battle-bowang-ambush': eighteenthBattleScenario,
'nineteenth-battle-changban-refuge': nineteenthBattleScenario,
'twentieth-battle-jiangdong-envoy': twentiethBattleScenario
'twentieth-battle-jiangdong-envoy': twentiethBattleScenario,
'twenty-first-battle-red-cliffs-vanguard': twentyFirstBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];