Add Yuan Shao refuge road chapter

This commit is contained in:
2026-06-23 04:23:14 +09:00
parent 09c1390ba5
commit 821cebde0e
11 changed files with 873 additions and 18 deletions

View File

@@ -1,5 +1,9 @@
import {
firstBattleBonds,
fifteenthBattleBonds,
fifteenthBattleMap,
fifteenthBattleUnits,
fifteenthBattleVictoryPages,
fourteenthBattleBonds,
fourteenthBattleMap,
fourteenthBattleUnits,
@@ -75,7 +79,8 @@ export type BattleScenarioId =
| 'eleventh-battle-xudu-refuge-road'
| 'twelfth-battle-xiapi-outer-siege'
| 'thirteenth-battle-xiapi-final'
| 'fourteenth-battle-cao-break';
| 'fourteenth-battle-cao-break'
| 'fifteenth-battle-yuan-refuge-road';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -856,6 +861,59 @@ export const fourteenthBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const fifteenthBattleScenario: BattleScenarioDefinition = {
id: 'fifteenth-battle-yuan-refuge-road',
title: '원소 의탁로',
victoryConditionLabel: '채양 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'유비군은 조조의 추격을 피해 원소 진영으로 향합니다. 채양을 격파하면 북상로의 압박을 끊고 접선지로 나아갈 수 있습니다.',
'강줄기와 고갯길 사이로 추격 기병이 파고들고, 궁병은 접선지를 향한 길을 끊으려 합니다. 전열을 세우면서도 손건과 간옹의 책략 지원을 살려야 합니다.',
'원소 사자가 기다리는 북동쪽 접선지를 확보하고 24턴 안에 승리하면 다음 의탁 장을 더 유리하게 시작합니다.'
],
map: fifteenthBattleMap,
units: fifteenthBattleUnits,
bonds: fifteenthBattleBonds,
mapTextureKey: 'battle-map-fifteenth',
leaderUnitId: 'yuan-refuge-leader-cai-yang',
quickVictoryTurnLimit: 24,
baseVictoryGold: 1760,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '채양 격파',
rewardGold: 1120,
unitId: 'yuan-refuge-leader-cai-yang'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 400,
unitId: 'liu-bei'
},
{
id: 'rendezvous',
kind: 'secure-terrain',
label: '원소 사자 접선지 확보',
rewardGold: 640,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '24턴 이내 승리',
rewardGold: 500,
maxTurn: 24
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 6', '상처약 3', '탁주 2', '원소 접선 문서 +1'],
victoryPages: fifteenthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -872,7 +930,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'eleventh-battle-xudu-refuge-road': eleventhBattleScenario,
'twelfth-battle-xiapi-outer-siege': twelfthBattleScenario,
'thirteenth-battle-xiapi-final': thirteenthBattleScenario,
'fourteenth-battle-cao-break': fourteenthBattleScenario
'fourteenth-battle-cao-break': fourteenthBattleScenario,
'fifteenth-battle-yuan-refuge-road': fifteenthBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];