Add Cao break chapter and Sun Qian sortie

This commit is contained in:
2026-06-23 04:08:15 +09:00
parent 3cdbbe8d5a
commit 09c1390ba5
11 changed files with 900 additions and 23 deletions

View File

@@ -1,5 +1,9 @@
import {
firstBattleBonds,
fourteenthBattleBonds,
fourteenthBattleMap,
fourteenthBattleUnits,
fourteenthBattleVictoryPages,
eighthBattleBonds,
eighthBattleMap,
eighthBattleUnits,
@@ -70,7 +74,8 @@ export type BattleScenarioId =
| 'tenth-battle-xuzhou-breakout'
| 'eleventh-battle-xudu-refuge-road'
| 'twelfth-battle-xiapi-outer-siege'
| 'thirteenth-battle-xiapi-final';
| 'thirteenth-battle-xiapi-final'
| 'fourteenth-battle-cao-break';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -798,6 +803,59 @@ export const thirteenthBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const fourteenthBattleScenario: BattleScenarioDefinition = {
id: 'fourteenth-battle-cao-break',
title: '서주 재기',
victoryConditionLabel: '차주 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조조의 감시대가 서주 관문과 역참을 틀어쥐고 있습니다. 차주를 격파하면 유비군은 조조 휘하를 벗어날 첫 발판을 세웁니다.',
'조조군 기병은 길을 따라 추격하고, 궁병은 관문 뒤에서 사거리를 잡습니다. 손건의 문서와 간옹의 말로 민심을 흔들며 길목을 열어야 합니다.',
'서주 관문을 확보하고 22턴 안에 승리하면 원소 진영으로 향할 명분과 보급을 더 많이 보존합니다.'
],
map: fourteenthBattleMap,
units: fourteenthBattleUnits,
bonds: fourteenthBattleBonds,
mapTextureKey: 'battle-map-fourteenth',
leaderUnitId: 'cao-break-leader-che-zhou',
quickVictoryTurnLimit: 22,
baseVictoryGold: 1660,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '차주 격파',
rewardGold: 1040,
unitId: 'cao-break-leader-che-zhou'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 380,
unitId: 'liu-bei'
},
{
id: 'gate',
kind: 'secure-terrain',
label: '서주 관문 확보',
rewardGold: 600,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '22턴 이내 승리',
rewardGold: 460,
maxTurn: 22
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 5', '상처약 3', '탁주 2', '손건 문서 +1'],
victoryPages: fourteenthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -813,7 +871,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'tenth-battle-xuzhou-breakout': tenthBattleScenario,
'eleventh-battle-xudu-refuge-road': eleventhBattleScenario,
'twelfth-battle-xiapi-outer-siege': twelfthBattleScenario,
'thirteenth-battle-xiapi-final': thirteenthBattleScenario
'thirteenth-battle-xiapi-final': thirteenthBattleScenario,
'fourteenth-battle-cao-break': fourteenthBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];