Files
heros_web/src/game/data/battles.ts

5015 lines
180 KiB
TypeScript

import {
fiftiethBattleBonds,
fiftiethBattleMap,
fiftiethBattleUnits,
fiftiethBattleVictoryPages,
fiftyFirstBattleBonds,
fiftyFirstBattleMap,
fiftyFirstBattleUnits,
fiftyFirstBattleVictoryPages,
fiftySecondBattleBonds,
fiftySecondBattleMap,
fiftySecondBattleUnits,
fiftySecondBattleVictoryPages,
fiftyThirdBattleBonds,
fiftyThirdBattleMap,
fiftyThirdBattleUnits,
fiftyThirdBattleVictoryPages,
fiftyFourthBattleBonds,
fiftyFourthBattleMap,
fiftyFourthBattleUnits,
fiftyFourthBattleVictoryPages,
fiftyEighthBattleBonds,
fiftyEighthBattleMap,
fiftyEighthBattleUnits,
fiftyEighthBattleVictoryPages,
fiftyFifthBattleBonds,
fiftyFifthBattleMap,
fiftyFifthBattleUnits,
fiftyFifthBattleVictoryPages,
fiftySixthBattleBonds,
fiftySixthBattleMap,
fiftySixthBattleUnits,
fiftySixthBattleVictoryPages,
fiftyNinthBattleBonds,
fiftyNinthBattleMap,
fiftyNinthBattleUnits,
fiftyNinthBattleVictoryPages,
sixtiethBattleBonds,
sixtiethBattleMap,
sixtiethBattleUnits,
sixtiethBattleVictoryPages,
sixtyFirstBattleBonds,
sixtyFirstBattleMap,
sixtyFirstBattleUnits,
sixtyFirstBattleVictoryPages,
sixtySecondBattleBonds,
sixtySecondBattleMap,
sixtySecondBattleUnits,
sixtySecondBattleVictoryPages,
sixtyThirdBattleBonds,
sixtyThirdBattleMap,
sixtyThirdBattleUnits,
sixtyThirdBattleVictoryPages,
sixtyFourthBattleBonds,
sixtyFourthBattleMap,
sixtyFourthBattleUnits,
sixtyFourthBattleVictoryPages,
sixtyFifthBattleBonds,
sixtyFifthBattleMap,
sixtyFifthBattleUnits,
sixtyFifthBattleVictoryPages,
sixtySixthBattleBonds,
sixtySixthBattleMap,
sixtySixthBattleUnits,
sixtySixthBattleVictoryPages,
fiftySeventhBattleBonds,
fiftySeventhBattleMap,
fiftySeventhBattleUnits,
fiftySeventhBattleVictoryPages,
firstBattleBonds,
fifteenthBattleBonds,
fifteenthBattleMap,
fifteenthBattleUnits,
fifteenthBattleVictoryPages,
fourteenthBattleBonds,
fourteenthBattleMap,
fourteenthBattleUnits,
fourteenthBattleVictoryPages,
eighthBattleBonds,
eighthBattleMap,
eighthBattleUnits,
eighthBattleVictoryPages,
eighteenthBattleBonds,
eighteenthBattleMap,
eighteenthBattleUnits,
eighteenthBattleVictoryPages,
eleventhBattleBonds,
eleventhBattleMap,
eleventhBattleUnits,
eleventhBattleVictoryPages,
fortiethBattleBonds,
fortiethBattleMap,
fortiethBattleUnits,
fortiethBattleVictoryPages,
fortyFirstBattleBonds,
fortyFirstBattleMap,
fortyFirstBattleUnits,
fortyFirstBattleVictoryPages,
fortySecondBattleBonds,
fortySecondBattleMap,
fortySecondBattleUnits,
fortySecondBattleVictoryPages,
fortyThirdBattleBonds,
fortyThirdBattleMap,
fortyThirdBattleUnits,
fortyThirdBattleVictoryPages,
fortyFourthBattleBonds,
fortyFourthBattleMap,
fortyFourthBattleUnits,
fortyFourthBattleVictoryPages,
fortyFifthBattleBonds,
fortyFifthBattleMap,
fortyFifthBattleUnits,
fortyFifthBattleVictoryPages,
fortyEighthBattleBonds,
fortyEighthBattleMap,
fortyEighthBattleUnits,
fortyEighthBattleVictoryPages,
fortyNinthBattleBonds,
fortyNinthBattleMap,
fortyNinthBattleUnits,
fortyNinthBattleVictoryPages,
fortySixthBattleBonds,
fortySixthBattleMap,
fortySixthBattleUnits,
fortySixthBattleVictoryPages,
fortySeventhBattleBonds,
fortySeventhBattleMap,
fortySeventhBattleUnits,
fortySeventhBattleVictoryPages,
firstBattleMap,
firstBattleUnits,
firstBattleVictoryPages,
ninthBattleBonds,
ninthBattleMap,
ninthBattleUnits,
ninthBattleVictoryPages,
nineteenthBattleBonds,
nineteenthBattleMap,
nineteenthBattleUnits,
nineteenthBattleVictoryPages,
twentyEighthBattleBonds,
twentyEighthBattleMap,
twentyEighthBattleUnits,
twentyEighthBattleVictoryPages,
twentyNinthBattleBonds,
twentyNinthBattleMap,
twentyNinthBattleUnits,
twentyNinthBattleVictoryPages,
tenthBattleBonds,
tenthBattleMap,
tenthBattleUnits,
tenthBattleVictoryPages,
thirtyFifthBattleBonds,
thirtyFifthBattleMap,
thirtyFifthBattleUnits,
thirtyFifthBattleVictoryPages,
thirtyEighthBattleBonds,
thirtyEighthBattleMap,
thirtyEighthBattleUnits,
thirtyEighthBattleVictoryPages,
thirtyNinthBattleBonds,
thirtyNinthBattleMap,
thirtyNinthBattleUnits,
thirtyNinthBattleVictoryPages,
thirtyFourthBattleBonds,
thirtyFourthBattleMap,
thirtyFourthBattleUnits,
thirtyFourthBattleVictoryPages,
thirtyFirstBattleBonds,
thirtyFirstBattleMap,
thirtyFirstBattleUnits,
thirtyFirstBattleVictoryPages,
thirtySecondBattleBonds,
thirtySecondBattleMap,
thirtySecondBattleUnits,
thirtySecondBattleVictoryPages,
thirtyThirdBattleBonds,
thirtyThirdBattleMap,
thirtyThirdBattleUnits,
thirtyThirdBattleVictoryPages,
thirtySixthBattleBonds,
thirtySixthBattleMap,
thirtySixthBattleUnits,
thirtySixthBattleVictoryPages,
thirtySeventhBattleBonds,
thirtySeventhBattleMap,
thirtySeventhBattleUnits,
thirtySeventhBattleVictoryPages,
thirteenthBattleBonds,
thirteenthBattleMap,
thirteenthBattleUnits,
thirteenthBattleVictoryPages,
twentyFirstBattleBonds,
twentyFirstBattleMap,
twentyFirstBattleUnits,
twentyFirstBattleVictoryPages,
twentySecondBattleBonds,
twentySecondBattleMap,
twentySecondBattleUnits,
twentySecondBattleVictoryPages,
twentyThirdBattleBonds,
twentyThirdBattleMap,
twentyThirdBattleUnits,
twentyThirdBattleVictoryPages,
twentyFourthBattleBonds,
twentyFourthBattleMap,
twentyFourthBattleUnits,
twentyFourthBattleVictoryPages,
twentyFifthBattleBonds,
twentyFifthBattleMap,
twentyFifthBattleUnits,
twentyFifthBattleVictoryPages,
twentySixthBattleBonds,
twentySixthBattleMap,
twentySixthBattleUnits,
twentySixthBattleVictoryPages,
twentySeventhBattleBonds,
twentySeventhBattleMap,
twentySeventhBattleUnits,
twentySeventhBattleVictoryPages,
twentiethBattleBonds,
twentiethBattleMap,
twentiethBattleUnits,
twentiethBattleVictoryPages,
twelfthBattleBonds,
twelfthBattleMap,
twelfthBattleUnits,
twelfthBattleVictoryPages,
fifthBattleBonds,
fifthBattleMap,
fifthBattleUnits,
fifthBattleVictoryPages,
secondBattleBonds,
secondBattleMap,
secondBattleUnits,
secondBattleVictoryPages,
seventhBattleBonds,
seventhBattleMap,
seventhBattleUnits,
seventhBattleVictoryPages,
thirtiethBattleBonds,
thirtiethBattleMap,
thirtiethBattleUnits,
thirtiethBattleVictoryPages,
sixthBattleBonds,
sixthBattleMap,
sixthBattleUnits,
sixthBattleVictoryPages,
thirdBattleBonds,
fourthBattleBonds,
fourthBattleMap,
fourthBattleUnits,
fourthBattleVictoryPages,
sixteenthBattleBonds,
sixteenthBattleMap,
sixteenthBattleUnits,
sixteenthBattleVictoryPages,
seventeenthBattleBonds,
seventeenthBattleMap,
seventeenthBattleUnits,
seventeenthBattleVictoryPages,
thirdBattleMap,
thirdBattleUnits,
thirdBattleVictoryPages,
type BattleBond,
type BattleMap,
type StoryPage,
type UnitData
} from './scenario';
import type { UnitClassKey } from './battleRules';
import type { SortieDeploymentSlot, SortieFormationRole } from './sortieDeployment';
export type BattleScenarioId =
| 'first-battle-zhuo-commandery'
| 'second-battle-yellow-turban-pursuit'
| 'third-battle-guangzong-road'
| 'fourth-battle-guangzong-camp'
| 'fifth-battle-sishui-vanguard'
| 'sixth-battle-jieqiao-relief'
| 'seventh-battle-xuzhou-rescue'
| 'eighth-battle-xiaopei-supply-road'
| 'ninth-battle-xuzhou-gate-night-raid'
| 'tenth-battle-xuzhou-breakout'
| 'eleventh-battle-xudu-refuge-road'
| 'twelfth-battle-xiapi-outer-siege'
| 'thirteenth-battle-xiapi-final'
| 'fourteenth-battle-cao-break'
| 'fifteenth-battle-yuan-refuge-road'
| 'sixteenth-battle-liu-biao-refuge'
| 'seventeenth-battle-wolong-visit-road'
| 'eighteenth-battle-bowang-ambush'
| 'nineteenth-battle-changban-refuge'
| 'twentieth-battle-jiangdong-envoy'
| 'twenty-first-battle-red-cliffs-vanguard'
| 'twenty-second-battle-red-cliffs-fire'
| 'twenty-third-battle-jingzhou-south-entry'
| 'twenty-fourth-battle-guiyang-persuasion'
| 'twenty-fifth-battle-wuling-mountain-road'
| 'twenty-sixth-battle-changsha-veteran'
| 'twenty-seventh-battle-yizhou-relief-road'
| 'twenty-eighth-battle-fu-pass-entry'
| 'twenty-ninth-battle-luo-outer-wall'
| 'thirtieth-battle-luofeng-ambush'
| 'thirty-first-battle-luo-main-gate'
| 'thirty-second-battle-mianzhu-gate'
| 'thirty-third-battle-chengdu-surrender'
| 'thirty-fourth-battle-jiameng-pass'
| 'thirty-fifth-battle-yangping-scout'
| 'thirty-sixth-battle-dingjun-vanguard'
| 'thirty-seventh-battle-hanzhong-decisive'
| 'thirty-eighth-battle-jing-defense'
| 'thirty-ninth-battle-fan-castle-vanguard'
| 'fortieth-battle-han-river-flood'
| 'forty-first-battle-fan-castle-siege'
| 'forty-second-battle-jing-rear-crisis'
| 'forty-third-battle-gongan-collapse'
| 'forty-fourth-battle-maicheng-isolation'
| 'forty-fifth-battle-yiling-vanguard'
| 'forty-sixth-battle-yiling-fire'
| 'forty-seventh-battle-nanzhong-stabilization'
| 'forty-eighth-battle-meng-huo-main-force'
| 'forty-ninth-battle-meng-huo-second-capture'
| 'fiftieth-battle-meng-huo-third-capture'
| 'fifty-first-battle-meng-huo-fourth-capture'
| 'fifty-second-battle-meng-huo-fifth-capture'
| 'fifty-third-battle-meng-huo-sixth-capture'
| 'fifty-fourth-battle-meng-huo-final-capture'
| 'fifty-fifth-battle-northern-qishan-road'
| 'fifty-sixth-battle-tianshui-advance'
| 'fifty-seventh-battle-jieting-crisis'
| 'fifty-eighth-battle-qishan-retreat'
| 'fifty-ninth-battle-chencang-siege'
| 'sixtieth-battle-wudu-yinping'
| 'sixty-first-battle-hanzhong-rain-defense'
| 'sixty-second-battle-qishan-renewed-offensive'
| 'sixty-third-battle-lucheng-pursuit'
| 'sixty-fourth-battle-weishui-camps'
| 'sixty-fifth-battle-weishui-northbank'
| 'sixty-sixth-battle-wuzhang-final';
export type BattleObjectiveKind = 'defeat-leader' | 'pacify-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
export type BattleObjectiveDefinition = {
id: string;
kind: BattleObjectiveKind;
label: string;
rewardGold: number;
unitId?: string;
terrain?: string;
targetTile?: { x: number; y: number; radius?: number };
threatRadius?: number;
maxTurn?: number;
};
export type BattleDefeatConditionDefinition = {
kind: 'unit-defeated';
unitId: string;
};
export type BattleSortieUnitRecommendation = {
unitId: string;
reason: string;
role?: SortieFormationRole;
};
export type BattleSortieClassRecommendation = {
label: string;
classKeys: UnitClassKey[];
reason: string;
};
export type BattleSortieDefinition = {
sortieLimit: number;
requiredUnits?: string[];
excludedUnits?: string[];
recommendedUnits: BattleSortieUnitRecommendation[];
recommendedClasses: BattleSortieClassRecommendation[];
deploymentSlots: SortieDeploymentSlot[];
note: string;
};
export type BattleTacticalGuideEventKey =
| 'leader-wavering'
| 'ally-danger'
| 'village-approach'
| 'village-secured'
| 'vanguard-broken'
| 'cavalry-approach'
| 'enemy-posture';
export type BattleTacticalGuideDefinition = {
summary: string;
route: string;
focus: string;
roles: string[];
events?: Partial<Record<BattleTacticalGuideEventKey, { title: string; lines: string[] }>>;
};
export type BattleCampaignRewardDefinition = {
supplies?: string[];
equipment?: string[];
reputation?: string[];
recruits?: string[];
unlockBattleId?: BattleScenarioId;
unlockLabel?: string;
note?: string;
};
export type BattleScenarioDefinition = {
id: BattleScenarioId;
title: string;
victoryConditionLabel: string;
defeatConditionLabel: string;
openingObjectiveLines: string[];
tacticalGuide?: BattleTacticalGuideDefinition;
sortie?: BattleSortieDefinition;
map: BattleMap;
units: UnitData[];
bonds: BattleBond[];
mapTextureKey: string;
leaderUnitId: string;
quickVictoryTurnLimit: number;
baseVictoryGold: number;
objectives: BattleObjectiveDefinition[];
defeatConditions: BattleDefeatConditionDefinition[];
itemRewards: string[];
campaignReward?: BattleCampaignRewardDefinition;
victoryPages: StoryPage[];
nextCampScene: string;
};
export const firstBattleScenario: BattleScenarioDefinition = {
id: 'first-battle-zhuo-commandery',
title: '탁현의 전투',
victoryConditionLabel: '두령 한석 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'황건적은 숲과 마을 어귀를 끼고 흩어져 있습니다. 두령 한석을 격파하면 전열이 무너집니다.',
'유비가 퇴각하면 의용군은 전투를 지속할 수 없습니다.',
'관우는 중앙 숲길을 잡고, 장비는 남쪽 길을 흔들며, 유비는 진영과 마을 보급선을 지키십시오.'
],
tacticalGuide: {
summary: '중앙 길은 빠르지만 노출됩니다. 숲과 마을 어귀를 잡아 관우가 버티고, 장비가 아래 길로 궁병을 끊습니다.',
route: '아군 진영 → 숲 낀 중앙 길목 → 마을 어귀 → 두령 한석',
focus: '관우를 숲 옆 길목에 세워 첫 접전을 받고, 장비는 남쪽 길로 우회해 궁병과 기병의 진입로를 끊으십시오.',
roles: ['관우: 숲길 전열', '장비: 남쪽 길 압박', '유비: 진영/마을 보급 지휘'],
events: {
'enemy-posture': {
title: '적 전열 확인',
lines: ['앞줄 보병은 숲과 언덕을 끼고 다가오고, 기병은 길을 따라 돌파 각을 봅니다.', '관우는 숲길에, 장비는 남쪽 길에 세워 적이 좋은 지형을 잡기 전에 밀어내십시오.']
},
'village-approach': {
title: '마을 어귀 접근',
lines: ['마을 어귀는 방어와 회복 보정이 있는 핵심 지형입니다.', '주변 황건병을 몰아내면 보급선을 잡고 한석에게 안전하게 압박을 모을 수 있습니다.']
},
'vanguard-broken': {
title: '초기 선봉 정리',
lines: ['앞쪽 황건 선봉이 무너졌습니다.', '관우는 중앙 길목을 계속 잡고, 장비는 남쪽 엄호선을 끊어 마을 쪽 퇴로를 좁히세요.']
},
'cavalry-approach': {
title: '기병 접근',
lines: ['황건 기병이 길을 따라 전열 가까이 들어왔습니다.', '길 위에서 맞기보다 숲과 마을 어귀로 끌어들여 관우와 장비가 받아내십시오.']
}
}
},
sortie: {
sortieLimit: 3,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'support', reason: '유비는 진영과 마을 보급선을 지키며 패배 조건을 안전하게 관리합니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '관우가 숲 낀 중앙 길목을 잡으면 황건 보병의 첫 압박을 안정적으로 받아냅니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '장비는 남쪽 길로 궁병 엄호선을 흔들고 기병의 진입로를 끊습니다.' }
],
recommendedClasses: [
{ label: '숲길 전열', classKeys: ['infantry'], reason: '숲과 마을 어귀에서 보병이 방어 보정을 살려 첫 접전을 버팁니다.' },
{ label: '남쪽 압박', classKeys: ['spearman'], reason: '창병은 길을 따라 들어오는 기병과 궁병 엄호선을 끊기 좋습니다.' },
{ label: '진영 지휘', classKeys: ['lord'], reason: '유비는 진영 뒤에서 생존과 보급 회복 여지를 남기는 편이 안전합니다.' }
],
deploymentSlots: [
{ role: 'front', unitId: 'guan-yu', x: 2, y: 15, label: '숲길 전열' },
{ role: 'flank', unitId: 'zhang-fei', x: 1, y: 16, label: '남쪽 압박' },
{ role: 'support', unitId: 'liu-bei', x: 1, y: 15, label: '진영 지휘' }
],
note: '관우는 숲길 전열, 장비는 남쪽 길 압박, 유비는 진영 지휘가 기본 전열입니다. 시작 구역 안에서 위치를 바꿀 수 있습니다.'
},
map: firstBattleMap,
units: firstBattleUnits,
bonds: firstBattleBonds,
mapTextureKey: 'battle-map-first',
leaderUnitId: 'rebel-leader',
quickVictoryTurnLimit: 14,
baseVictoryGold: 300,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '황건 두령 격파',
rewardGold: 200,
unitId: 'rebel-leader'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 100,
unitId: 'liu-bei'
},
{
id: 'village',
kind: 'secure-terrain',
label: '마을 확보',
rewardGold: 210,
terrain: 'village',
targetTile: { x: 15, y: 5, radius: 4 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '14턴 이내 승리',
rewardGold: 120,
maxTurn: 14
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 1', '탁주 1', '의용군 명성 +1'],
campaignReward: {
supplies: ['콩 1', '탁주 1'],
equipment: ['연습검 1'],
reputation: ['의용군 명성 +1'],
recruits: ['guan-yu', 'zhang-fei'],
unlockBattleId: 'second-battle-yellow-turban-pursuit',
unlockLabel: '황건 잔당 추격 개방',
note: '도원 형제의 의용군이 정식으로 출전 가능한 부대로 정리됩니다.'
},
victoryPages: firstBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const secondBattleScenario: BattleScenarioDefinition = {
id: 'second-battle-yellow-turban-pursuit',
title: '황건 잔당 추격',
victoryConditionLabel: '두령 한석 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'황건 잔당이 강가 나루와 북쪽 마을을 끼고 물러났습니다. 두령 한석을 격파하면 적의 퇴로가 무너집니다.',
'나루 앞 숲길을 정리하지 않고 길을 넓히면 궁병과 기병에게 전열이 갈라집니다.',
'세 형제를 모두 출전시키고 15턴 이내에 승리하면 추격전 명성과 추가 보상이 붙습니다.'
],
tacticalGuide: {
summary: '나루 앞 숲길을 관우가 좁게 막고, 장비는 남쪽 길로 궁병 엄호선을 압박합니다. 유비는 마을 확보 타이밍을 지휘합니다.',
route: '아군 진영 → 숲길 나루 → 언덕 궁병선 → 북쪽 마을',
focus: '먼저 숲길 습격병을 걷어내고, 강을 건넌 뒤에는 궁병이 선 언덕과 마을 어귀를 따로 끊어내십시오.',
roles: ['관우: 숲길 나루 전열', '장비: 남쪽 돌파/기병 견제', '유비: 마을 보급 지휘'],
events: {
'village-approach': {
title: '북쪽 마을 접근',
lines: ['잔당이 붙잡은 북쪽 마을이 보입니다.', '마을은 회복 보정이 있으니 적보다 먼저 주변을 정리해 보급선을 확보하십시오.']
},
'vanguard-broken': {
title: '나루 길목 돌파',
lines: ['초기 습격조가 흩어졌습니다.', '장비는 남쪽 길로 궁병을 흔들고, 관우는 나루를 넘어 친위병을 숲 밖으로 끌어내십시오.']
},
'cavalry-approach': {
title: '잔당 기병 접근',
lines: ['달아나던 기병이 길을 따라 되돌아옵니다.', '나루를 넘기 전에는 유비를 노출시키지 말고 창병으로 길목을 눌러 두십시오.']
},
'enemy-posture': {
title: '잔당 재정렬',
lines: ['궁병은 언덕과 마을 쪽에서 엄호하고 기병은 남쪽 길을 돌아옵니다.', '중앙을 무리하게 벌리지 말고 관우와 장비의 전선을 지형별로 나누십시오.']
}
}
},
sortie: {
sortieLimit: 3,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'support', reason: '주장 생존이 패배 조건입니다. 나루 뒤에서 지휘하며 마을 확보 타이밍을 봅니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '나루 앞 숲길을 좁게 막으면 적 보병과 산길 복병을 안정적으로 받아냅니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '남쪽 길로 빠르게 나가 궁병 엄호와 기병 돌파를 끊기 좋습니다.' }
],
recommendedClasses: [
{ label: '숲길 전열', classKeys: ['infantry'], reason: '좁은 나루와 숲길에서 방어 보정을 살려 먼저 맞받아칩니다.' },
{ label: '길목 창병', classKeys: ['spearman'], reason: '기병이 쓰는 길을 눌러 두고 북쪽으로 달아나는 적을 따라붙습니다.' },
{ label: '보급 지휘', classKeys: ['lord'], reason: '유비는 패배 조건이므로 나루 뒤에서 마을 확보와 회복 여지를 봅니다.' }
],
deploymentSlots: [
{ role: 'front', unitId: 'guan-yu', x: 3, y: 15, label: '나루 전열' },
{ role: 'flank', unitId: 'zhang-fei', x: 2, y: 16, label: '남쪽 돌파' },
{ role: 'support', unitId: 'liu-bei', x: 2, y: 15, label: '후방 지휘' }
],
note: '세 형제 전원 출전이 가장 안정적입니다. 관우는 숲길 나루, 장비는 남쪽 길, 유비는 후방 보급 위치에 두면 의도가 분명합니다.'
},
map: secondBattleMap,
units: secondBattleUnits,
bonds: secondBattleBonds,
mapTextureKey: 'battle-map-second',
leaderUnitId: 'pursuit-leader-han-seok',
quickVictoryTurnLimit: 15,
baseVictoryGold: 420,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '두령 한석 격파',
rewardGold: 260,
unitId: 'pursuit-leader-han-seok'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 120,
unitId: 'liu-bei'
},
{
id: 'village',
kind: 'secure-terrain',
label: '북쪽 마을 확보',
rewardGold: 180,
terrain: 'village',
targetTile: { x: 19, y: 6, radius: 2 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '15턴 이내 승리',
rewardGold: 150,
maxTurn: 15
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 2', '상처약 1', '탁주 1', '의용군 명성 +2'],
campaignReward: {
supplies: ['콩 2', '상처약 1', '탁주 1'],
equipment: ['황건 부적 1'],
reputation: ['의용군 명성 +2'],
unlockBattleId: 'third-battle-guangzong-road',
unlockLabel: '광종 구원로 개방',
note: '북쪽 마을 보급과 잔당 추격 기록이 다음 전투 준비에 반영됩니다.'
},
victoryPages: secondBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirdBattleScenario: BattleScenarioDefinition = {
id: 'third-battle-guangzong-road',
title: '광종 구원로',
victoryConditionLabel: '전령 마원 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'황건 전령 마원이 광종 본대로 향하고 있습니다. 마원을 격파하면 적의 연락망이 끊어집니다.',
'강가 길목, 언덕 궁병선, 요새 보급 지형이 이어져 있어 정면으로만 밀면 전선이 오래 묶입니다.',
'18턴 이내에 승리하면 광종 구원로 확보 명성이 오릅니다.'
],
tacticalGuide: {
summary: '관우는 강가 길목을 버티고, 장비는 전령 기병의 길을 끊습니다. 요새와 언덕 궁병선을 그대로 두면 피해가 누적됩니다.',
route: '아군 진영 → 강가 길목 → 언덕/요새 궁병선 → 전령 마원',
focus: '강가 척후선을 정리한 뒤 장비로 전령 기병의 길을 막고, 관우는 요새 수비병을 숲과 길목 밖으로 끌어내십시오.',
roles: ['관우: 강가 전열/요새 압박', '장비: 전령 추격/기병 견제', '유비: 후방 지휘와 회복'],
events: {
'village-approach': {
title: '요새 접근',
lines: ['요새와 망루 궁병이 전령을 감싸고 있습니다.', '요새 위 적은 방어와 회복 보정이 있으니 길목으로 끌어낸 뒤 압박하십시오.']
},
'vanguard-broken': {
title: '척후선 붕괴',
lines: ['전령 앞 척후선이 무너졌습니다.', '이제 장비가 좁은 길을 열고 관우가 요새 수비병을 붙잡아 궁병선을 분리해야 합니다.']
},
'cavalry-approach': {
title: '전령 호위 기병',
lines: ['전령 호위 기병이 길을 따라 압박해옵니다.', '관우로 받아내고 장비는 마원 쪽 길을 놓치지 마십시오.']
},
'enemy-posture': {
title: '요새 방어 태세',
lines: ['망루 궁병은 요새와 언덕에서 버티고 기병은 좁은 길을 흔듭니다.', '피해가 쌓이면 유비를 뒤로 물려 회복 여지를 남기세요.']
}
}
},
sortie: {
sortieLimit: 3,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'support', reason: '강가 길목에서 무리하지 않고 뒤에서 회복과 전열 유지 타이밍을 봅니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '숲과 요새 앞 길목을 받아내며 수비병을 밖으로 끌어내기 좋습니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '전령 기병이 쓰는 좁은 길을 빠르게 막아 마원을 놓치지 않습니다.' }
],
recommendedClasses: [
{ label: '강가 전열', classKeys: ['infantry'], reason: '숲과 요새 앞에서 궁병 견제를 버틸 전열이 필요합니다.' },
{ label: '추격 창병', classKeys: ['spearman'], reason: '전령 추격과 기병 길목 차단에 힘을 싣습니다.' },
{ label: '후방 지휘', classKeys: ['lord'], reason: '유비는 뒤에서 생존, 회복, 공명 연결을 책임지는 편이 안전합니다.' }
],
deploymentSlots: [
{ role: 'front', unitId: 'guan-yu', x: 3, y: 16, label: '강가 전열' },
{ role: 'flank', unitId: 'zhang-fei', x: 2, y: 17, label: '추격 출발' },
{ role: 'support', unitId: 'liu-bei', x: 2, y: 16, label: '후방 지휘' }
],
note: '강가 길목은 오래 버티는 전열과 빠른 추격이 모두 필요합니다. 유비는 뒤에 두고 관우와 장비를 지형 역할에 맞춰 앞세우십시오.'
},
map: thirdBattleMap,
units: thirdBattleUnits,
bonds: thirdBattleBonds,
mapTextureKey: 'battle-map-third',
leaderUnitId: 'guangzong-leader-ma-yuan',
quickVictoryTurnLimit: 18,
baseVictoryGold: 520,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '전령 마원 격파',
rewardGold: 320,
unitId: 'guangzong-leader-ma-yuan'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 140,
unitId: 'liu-bei'
},
{
id: 'fort',
kind: 'secure-terrain',
label: '강가 요새 확보',
rewardGold: 300,
terrain: 'fort',
targetTile: { x: 18, y: 1, radius: 3 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '18턴 이내 승리',
rewardGold: 180,
maxTurn: 18
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 2', '상처약 1', '의용군 명성 +3'],
campaignReward: {
supplies: ['콩 2', '상처약 1'],
equipment: ['단궁 1'],
reputation: ['의용군 명성 +3'],
unlockBattleId: 'fourth-battle-guangzong-camp',
unlockLabel: '광종 본영전 개방',
note: '광종 구원로 확보로 본영 진입 정보가 열립니다.'
},
victoryPages: thirdBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fourthBattleScenario: BattleScenarioDefinition = {
id: 'fourth-battle-guangzong-camp',
title: '광종 본영전',
victoryConditionLabel: '장각 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'황건 본영의 중심에는 장각이 있습니다. 장각을 격파하면 광종의 황건 세력은 무너집니다.',
'요새와 숲의 궁병이 진입로를 막고 있습니다. 측면의 기병과 중앙 수비병을 나누어 상대하십시오.',
'16턴 이내에 승리하면 황건적 토벌의 공적이 크게 오릅니다.'
],
sortie: {
sortieLimit: 3,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'support', reason: '장각 격파까지 전선이 무너지지 않도록 후방 지휘가 필요합니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '본영 정면의 요새 방어선을 뚫는 핵심 전열입니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '측면 궁병과 기병을 흔들어 본영 진입 시간을 줄입니다.' }
],
recommendedClasses: [
{ label: '강한 전열', classKeys: ['infantry'], reason: '요새와 궁병 앞에서 버티며 중앙 길을 여는 역할입니다.' },
{ label: '측면 돌파', classKeys: ['spearman'], reason: '본영 측면을 흔들어 장각까지 빠르게 접근합니다.' },
{ label: '후방 지휘', classKeys: ['lord'], reason: '패배 조건인 유비를 안전하게 두고 공명 보정을 유지합니다.' }
],
deploymentSlots: [
{ role: 'front', unitId: 'guan-yu', x: 3, y: 15, label: '본영 입구' },
{ role: 'flank', unitId: 'zhang-fei', x: 2, y: 16, label: '측면 압박' },
{ role: 'support', unitId: 'liu-bei', x: 2, y: 15, label: '후방 지휘' }
],
note: '황건 본영은 세 형제 전원 출전과 역할 분담이 중요합니다. 장비를 돌파로 두면 측면 압박이 빨라집니다.'
},
map: fourthBattleMap,
units: fourthBattleUnits,
bonds: fourthBattleBonds,
mapTextureKey: 'battle-map-fourth',
leaderUnitId: 'guangzong-main-leader-zhang-jue',
quickVictoryTurnLimit: 16,
baseVictoryGold: 700,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '장각 격파',
rewardGold: 420,
unitId: 'guangzong-main-leader-zhang-jue'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 180,
unitId: 'liu-bei'
},
{
id: 'fort',
kind: 'secure-terrain',
label: '광종 본영 확보',
rewardGold: 260,
terrain: 'fort',
targetTile: { x: 12, y: 1, radius: 2 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '16턴 이내 승리',
rewardGold: 220,
maxTurn: 16
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 2', '상처약 1', '탁주 1', '황건 토벌 공적 +1'],
campaignReward: {
supplies: ['콩 2', '상처약 1', '탁주 1'],
equipment: ['황건도 1'],
reputation: ['황건 토벌 공적 +1'],
unlockBattleId: 'fifth-battle-sishui-vanguard',
unlockLabel: '사수관 전초전 개방',
note: '황건 본영 토벌 공적이 반동탁 연합 합류 명분으로 이어집니다.'
},
victoryPages: fourthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fifthBattleScenario: BattleScenarioDefinition = {
id: 'fifth-battle-sishui-vanguard',
title: '사수관 전초전',
victoryConditionLabel: '호진 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'반동탁 연합으로 향하는 길목을 동탁군 장수 호진이 막고 있습니다. 호진을 격파하면 사수관 앞 전초 진지가 흔들립니다.',
'중앙 길은 빠르지만 궁병과 기병의 반격을 받기 쉽습니다. 숲길 척후를 처리하고 요새 주변을 차근히 압박하십시오.',
'14턴 이내에 승리하면 공손찬 진영에서 세 형제의 무공이 더 크게 알려집니다.'
],
sortie: {
sortieLimit: 3,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'support', reason: '반동탁 연합에서 명분을 세워야 하므로 생존과 지휘가 우선입니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '전초 요새 앞 보병과 궁병의 반격을 안정적으로 받아냅니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '호진의 전열을 흔들고 숲길 척후를 빠르게 정리합니다.' }
],
recommendedClasses: [
{ label: '요새 전열', classKeys: ['infantry'], reason: '중앙 길의 궁병 반격을 견딜 단단한 전열이 필요합니다.' },
{ label: '숲길 돌파', classKeys: ['spearman'], reason: '측면 척후를 잡고 호진에게 접근할 돌파 담당이 좋습니다.' },
{ label: '지휘 후원', classKeys: ['lord'], reason: '유비는 후방에서 세 형제 공명과 생존 조건을 유지합니다.' }
],
deploymentSlots: [
{ role: 'front', unitId: 'guan-yu', x: 3, y: 15, label: '요새 전열' },
{ role: 'flank', unitId: 'zhang-fei', x: 2, y: 16, label: '숲길 돌파' },
{ role: 'support', unitId: 'liu-bei', x: 2, y: 15, label: '후방 지휘' }
],
note: '사수관 전초전은 중앙 길을 서두르되 숲길 척후를 놓치지 않는 편성이 좋습니다.'
},
map: fifthBattleMap,
units: fifthBattleUnits,
bonds: fifthBattleBonds,
mapTextureKey: 'battle-map-fifth',
leaderUnitId: 'sishui-leader-hu-zhen',
quickVictoryTurnLimit: 14,
baseVictoryGold: 760,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '호진 격파',
rewardGold: 460,
unitId: 'sishui-leader-hu-zhen'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 190,
unitId: 'liu-bei'
},
{
id: 'fort',
kind: 'secure-terrain',
label: '사수관 전초 요새 확보',
rewardGold: 280,
terrain: 'fort',
targetTile: { x: 12, y: 1, radius: 2 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '14턴 이내 승리',
rewardGold: 230,
maxTurn: 14
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 2', '상처약 1', '탁주 1', '반동탁 공적 +1'],
campaignReward: {
supplies: ['콩 2', '상처약 1', '탁주 1'],
equipment: ['찰갑 1'],
reputation: ['반동탁 공적 +1'],
unlockBattleId: 'sixth-battle-jieqiao-relief',
unlockLabel: '계교 원군로 개방',
note: '사수관 전초 진지의 전과가 공손찬 진영의 신뢰로 연결됩니다.'
},
victoryPages: fifthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const sixthBattleScenario: BattleScenarioDefinition = {
id: 'sixth-battle-jieqiao-relief',
title: '계교 원군로',
victoryConditionLabel: '곡의 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'공손찬의 보급로를 원소군 교위 곡의가 끊으려 합니다. 곡의를 격파하면 계교로 향하는 길을 다시 열 수 있습니다.',
'강가의 궁병과 측면 기병이 동시에 압박합니다. 유비는 뒤에 두고 관우와 장비로 중앙 길을 확보하십시오.',
'15턴 이내에 승리하면 공손찬 진영에서 세 형제의 신뢰가 커집니다.'
],
sortie: {
sortieLimit: 3,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'support', reason: '공손찬 원군로의 명분을 지키되, 강가 압박에서 보호해야 합니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '강가와 진영 지형에서 적 선봉을 받아내는 전열이 됩니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '원소군 별동대와 측면 기병을 빠르게 압박합니다.' }
],
recommendedClasses: [
{ label: '강가 전열', classKeys: ['infantry'], reason: '궁병 견제를 맞으며 중앙 길을 확보해야 합니다.' },
{ label: '측면 돌파', classKeys: ['spearman'], reason: '별동대와 기병 압박을 끊어 내는 역할이 필요합니다.' },
{ label: '안전 지휘', classKeys: ['lord'], reason: '유비는 후방 배치로 생존과 지휘를 동시에 챙깁니다.' }
],
deploymentSlots: [
{ role: 'front', unitId: 'guan-yu', x: 3, y: 16, label: '강가 전열' },
{ role: 'flank', unitId: 'zhang-fei', x: 2, y: 17, label: '측면 대응' },
{ role: 'support', unitId: 'liu-bei', x: 2, y: 16, label: '후방 지휘' }
],
note: '계교 원군로는 빠른 압박보다 길목 안정이 중요합니다. 유비를 보호하고 관우와 장비로 먼저 맞받으십시오.'
},
map: sixthBattleMap,
units: sixthBattleUnits,
bonds: sixthBattleBonds,
mapTextureKey: 'battle-map-sixth',
leaderUnitId: 'jieqiao-leader-qu-yi',
quickVictoryTurnLimit: 15,
baseVictoryGold: 860,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '곡의 격파',
rewardGold: 520,
unitId: 'jieqiao-leader-qu-yi'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 210,
unitId: 'liu-bei'
},
{
id: 'village',
kind: 'secure-terrain',
label: '계교 보급촌 확보',
rewardGold: 300,
terrain: 'village',
targetTile: { x: 17, y: 4, radius: 4 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '15턴 이내 승리',
rewardGold: 250,
maxTurn: 15
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 2', '상처약 2', '탁주 1', '공손찬 신뢰 +1'],
campaignReward: {
supplies: ['콩 2', '상처약 2', '탁주 1'],
equipment: ['바람 화살통 1'],
reputation: ['공손찬 신뢰 +1'],
unlockBattleId: 'seventh-battle-xuzhou-rescue',
unlockLabel: '서주 구원전 개방',
note: '계교 원군로를 지켜 공손찬 진영의 신뢰를 얻고, 서주 구원 요청으로 이어집니다.'
},
victoryPages: sixthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const seventhBattleScenario: BattleScenarioDefinition = {
id: 'seventh-battle-xuzhou-rescue',
title: '서주 구원전',
victoryConditionLabel: '하후돈 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조조군 선봉 하후돈이 서주 피난로와 마을을 압박하고 있습니다. 하후돈을 격파하면 서주 성문까지 길을 열 수 있습니다.',
'강가 궁병은 자리를 지키고, 기병은 길을 따라 빠르게 추격합니다. 마을을 확보하며 선봉을 단계적으로 끊어 내십시오.',
'18턴 이내에 승리하면 도겸과 서주 백성의 신뢰가 크게 오릅니다.'
],
sortie: {
sortieLimit: 3,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'support', reason: '서주 구원 요청의 중심입니다. 후방에서 생존과 보급 판단을 맡기면 전선이 안정됩니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '마을 입구의 보병과 궁병을 받아내며 정면 전열을 세우기 좋습니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '측면 길을 빠르게 압박해 기병 추격과 잔존 적 정리를 맡기 좋습니다.' }
],
recommendedClasses: [
{ label: '마을 전열', classKeys: ['infantry'], reason: '마을 주변에서 방어 보정을 받으며 보병과 궁병을 안정적으로 상대합니다.' },
{ label: '측면 압박', classKeys: ['spearman'], reason: '길을 타고 들어오는 기병과 측면 적을 끊어내는 역할이 중요합니다.' },
{ label: '후방 지휘', classKeys: ['lord'], reason: '유비가 무리하지 않고 생존하면 서주 민심과 합류 보상이 자연스럽게 이어집니다.' }
],
deploymentSlots: [
{ role: 'front', unitId: 'guan-yu', x: 3, y: 16, label: '마을 전열' },
{ role: 'flank', unitId: 'zhang-fei', x: 2, y: 17, label: '측면 압박' },
{ role: 'support', unitId: 'liu-bei', x: 2, y: 16, label: '후방 지휘' }
],
note: '서주 구원전은 마을 확보와 유비 생존이 핵심입니다. 기본 전열은 관우 정면, 장비 측면, 유비 후방 지휘로 잡혀 있습니다.'
},
map: seventhBattleMap,
units: seventhBattleUnits,
bonds: seventhBattleBonds,
mapTextureKey: 'battle-map-seventh',
leaderUnitId: 'xuzhou-leader-xiahou-dun',
quickVictoryTurnLimit: 18,
baseVictoryGold: 960,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '하후돈 격파',
rewardGold: 580,
unitId: 'xuzhou-leader-xiahou-dun'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 230,
unitId: 'liu-bei'
},
{
id: 'village',
kind: 'secure-terrain',
label: '서주 피난촌 확보',
rewardGold: 330,
terrain: 'village',
targetTile: { x: 16, y: 4, radius: 5 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '18턴 이내 승리',
rewardGold: 270,
maxTurn: 18
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 2', '상처약 2', '탁주 1', '서주 민심 +1'],
campaignReward: {
supplies: ['콩 2', '상처약 2', '탁주 1'],
equipment: ['병법서 1'],
reputation: ['서주 민심 +1'],
recruits: ['jian-yong', 'mi-zhu'],
unlockBattleId: 'eighth-battle-xiaopei-supply-road',
unlockLabel: '소패 보급로 방위전 개방',
note: '서주 구원으로 간옹과 미축이 합류합니다. 다음 전투부터 책사/보급관 선택지가 출전 준비에 표시됩니다.'
},
victoryPages: seventhBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const eighthBattleScenario: BattleScenarioDefinition = {
id: 'eighth-battle-xiaopei-supply-road',
title: '소패 보급로 방위전',
victoryConditionLabel: '고순 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'여포군의 척후와 습격병이 소패 보급로의 창고를 노리고 있습니다. 고순을 격파하면 서주의 첫 방위선을 지킬 수 있습니다.',
'간옹은 병법서와 책략으로 길목 압박을 늦추고, 미축은 창고 주변 보급과 회복을 맡기 좋습니다. 마을과 창고 지형을 중심으로 전열을 잡으십시오.',
'18턴 이내 승리하면 서주 보급망과 새 합류 무장의 명성이 크게 오릅니다.'
],
tacticalGuide: {
summary: '중앙 창고 마을을 먼저 안정시키고, 관우가 길목을 버티는 동안 간옹과 미축이 후방에서 회복과 책략 보조를 이어갑니다.',
route: '아군 진영 → 중앙 창고 마을 → 동쪽 길목 → 고순 본대',
focus: '창고 습격병을 먼저 정리해 미축의 보급 위치를 확보하고, 간옹은 화계와 격려로 기병의 접근을 늦추십시오.',
roles: ['관우: 보급로 전열', '장비: 남쪽 길 압박', '간옹: 책략/격려 보조', '미축: 창고 보급/회복', '유비: 후방 지휘'],
events: {
'village-approach': {
title: '창고 마을 접근',
lines: ['소패 창고 주변에 습격병이 붙어 있습니다.', '미축을 후방에 두고 간옹의 책략으로 길목 적을 약화시키면 보급선을 안정시키기 쉽습니다.']
},
'enemy-posture': {
title: '보급로 압박',
lines: ['여포군 기병은 동쪽 길을 타고 빠르게 들어오고, 궁병은 언덕에서 전열을 끊으려 합니다.', '관우는 길목을 잡고 장비는 남쪽 압박, 간옹과 미축은 뒤에서 회복과 책략을 이어가십시오.']
},
'cavalry-approach': {
title: '기병 돌입',
lines: ['여포군 기병이 보급로 안쪽으로 파고듭니다.', '장비로 측면을 끊고 간옹의 격려 또는 화계로 돌파 속도를 늦추십시오.']
}
}
},
sortie: {
sortieLimit: 5,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'guan-yu', role: 'front', reason: '보급로 앞 길목을 버티며 고순 본대와 기병 압박을 받아냅니다.' },
{ unitId: 'jian-yong', role: 'support', reason: '병법서와 잘 맞는 책략 보조로 화계, 응급, 격려를 모두 활용할 수 있습니다.' },
{ unitId: 'mi-zhu', role: 'reserve', reason: '군량 주머니와 회복품 운용으로 창고 주변 장기전을 안정시킵니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '남쪽 길로 들어오는 기병과 습격병을 빠르게 압박합니다.' },
{ unitId: 'liu-bei', role: 'support', reason: '후방에서 생존을 지키며 새 합류 무장과 전열의 균형을 잡습니다.' }
],
recommendedClasses: [
{ label: '보급로 전열', classKeys: ['infantry'], reason: '마을과 길목 방어 보정을 살려 기병과 보병의 첫 압박을 받아냅니다.' },
{ label: '책략 보조', classKeys: ['strategist'], reason: '화계와 격려로 원거리 궁병과 기병 돌입을 늦추는 역할이 중요합니다.' },
{ label: '창고 보급', classKeys: ['quartermaster'], reason: '회복품과 마을 보정을 묶어 보급로 장기전을 안정시킵니다.' },
{ label: '측면 압박', classKeys: ['spearman'], reason: '남쪽 길의 기병 진입과 창고 습격병을 끊어냅니다.' }
],
deploymentSlots: [
{ role: 'front', unitId: 'guan-yu', x: 3, y: 17, label: '보급로 전열' },
{ role: 'support', unitId: 'jian-yong', x: 3, y: 18, label: '책략 보조' },
{ role: 'reserve', unitId: 'mi-zhu', x: 1, y: 18, label: '창고 보급' },
{ role: 'flank', unitId: 'zhang-fei', x: 2, y: 18, label: '남쪽 압박' },
{ role: 'support', unitId: 'liu-bei', x: 2, y: 17, label: '후방 지휘' }
],
note: '소패 보급로는 새로 합류한 간옹과 미축을 시험하기 좋은 전장입니다. 관우가 길목을 막고, 간옹은 책략, 미축은 보급을 맡는 전열이 기본입니다.'
},
map: eighthBattleMap,
units: eighthBattleUnits,
bonds: eighthBattleBonds,
mapTextureKey: 'battle-map-eighth',
leaderUnitId: 'xiaopei-leader-gao-shun',
quickVictoryTurnLimit: 18,
baseVictoryGold: 1080,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '고순 격파',
rewardGold: 640,
unitId: 'xiaopei-leader-gao-shun'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 250,
unitId: 'liu-bei'
},
{
id: 'village',
kind: 'secure-terrain',
label: '소패 보급촌 확보',
rewardGold: 360,
terrain: 'village',
targetTile: { x: 12, y: 10, radius: 5 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '18턴 이내 승리',
rewardGold: 300,
maxTurn: 18
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 3', '상처약 2', '탁주 1', '서주 보급망 +1'],
campaignReward: {
supplies: ['콩 3', '상처약 2', '탁주 1'],
equipment: ['군량 주머니 1'],
reputation: ['서주 보급망 +1'],
unlockBattleId: 'ninth-battle-xuzhou-gate-night-raid',
unlockLabel: '서주 성문 야습 개방',
note: '소패 보급로를 지켜 미축의 보급 운용과 간옹의 책략 지원이 서주 방위 편성에 자리 잡습니다.'
},
victoryPages: eighthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const ninthBattleScenario: BattleScenarioDefinition = {
id: 'ninth-battle-xuzhou-gate-night-raid',
title: '서주 성문 야습',
victoryConditionLabel: '조표 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조표가 성문 수비병을 흔들고, 바깥의 여포군 기병은 불빛을 신호로 성문을 향해 파고듭니다. 조표를 격파하면 야습의 지휘를 끊을 수 있습니다.',
'8전에서 정돈한 보급품은 여기서 바로 의미가 있습니다. 미축은 성내 보급을 묶고, 간옹은 성벽 궁병과 기병 돌입을 책략으로 늦추십시오.',
'성문 중심을 확보한 채 18턴 이내 승리하면 서주 성문 수비와 내부 민심을 잠시나마 붙잡을 수 있습니다.'
],
tacticalGuide: {
summary: '성문 안쪽 배반병을 먼저 정리하고, 관우가 성문 정면을 잡는 동안 간옹과 미축이 후방에서 책략과 보급을 이어갑니다.',
route: '아군 진영 → 안쪽 배반병 → 중앙 성문 → 조표 본대',
focus: '남서 진영에서 길을 넓힌 뒤 성문 중앙으로 붙으십시오. 간옹은 성벽 궁병과 기병을 약화시키고, 미축은 회복품과 군량 주머니로 전열을 유지합니다.',
roles: ['관우: 성문 정면 전열', '장비: 남쪽 길 압박', '간옹: 화계/격려 책략', '미축: 보급품/회복 운용', '유비: 후방 지휘와 생존'],
events: {
'village-approach': {
title: '성문 중심 접근',
lines: ['성문 안팎의 길이 좁아지고 조표의 수비병이 버티고 있습니다.', '미축의 보급을 뒤에 두고 간옹의 책략으로 궁병과 기병을 먼저 흔들면 성문 확보가 쉬워집니다.']
},
'enemy-posture': {
title: '야습 진형 확인',
lines: ['성벽 궁병은 높은 지점을 지키고, 여포군 기병은 북쪽과 남쪽 길에서 성문으로 파고듭니다.', '관우가 정면을 붙잡고 장비가 남쪽을 누르는 동안 간옹과 미축을 너무 앞세우지 마십시오.']
},
'cavalry-approach': {
title: '여포군 기병 돌입',
lines: ['여포군 기병이 성문 옆길로 빠르게 들어옵니다.', '장비로 길을 끊고 간옹의 화계 또는 격려로 관우 전열의 부담을 줄이십시오.']
},
'leader-wavering': {
title: '조표 동요',
lines: ['조표의 지휘가 흔들리기 시작했습니다.', '성문 근처 적을 남겨 두지 말고 조표를 몰아붙이면 야습이 빠르게 무너집니다.']
}
}
},
sortie: {
sortieLimit: 5,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'guan-yu', role: 'front', reason: '성문 정면에서 조표 수비병과 여포군 기병 압박을 받아내는 핵심 전열입니다.' },
{ unitId: 'jian-yong', role: 'support', reason: '화계와 격려로 성벽 궁병, 기병 돌입, 조표 주변 전열을 늦출 수 있습니다.' },
{ unitId: 'mi-zhu', role: 'reserve', reason: '8전 보급품과 군량 주머니를 활용해 성문 장기전의 회복 흐름을 안정시킵니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '남쪽 길로 파고드는 기병을 끊고 성문 측면을 빠르게 압박합니다.' },
{ unitId: 'liu-bei', role: 'support', reason: '서주 성문을 되찾는 명분의 중심이므로 후방 지휘와 생존을 함께 챙깁니다.' }
],
recommendedClasses: [
{ label: '성문 전열', classKeys: ['infantry'], reason: '요새 지형 앞에서 보병과 장수를 받아낼 안정적인 전열이 필요합니다.' },
{ label: '책략 제압', classKeys: ['strategist'], reason: '궁병 고정 사격과 기병 돌입을 화계, 격려, 응급으로 늦추는 역할이 큽니다.' },
{ label: '보급 유지', classKeys: ['quartermaster'], reason: '8전에서 얻은 보급품을 실제 전열 유지로 연결하기 좋습니다.' },
{ label: '측면 차단', classKeys: ['spearman'], reason: '남쪽 길 기병과 성문 배반병을 빠르게 끊어내야 합니다.' }
],
deploymentSlots: [
{ role: 'front', unitId: 'guan-yu', x: 4, y: 17, label: '성문 전열' },
{ role: 'flank', unitId: 'zhang-fei', x: 3, y: 18, label: '남쪽 차단' },
{ role: 'support', unitId: 'jian-yong', x: 5, y: 18, label: '책략 엄호' },
{ role: 'reserve', unitId: 'mi-zhu', x: 4, y: 19, label: '보급 수레' },
{ role: 'support', unitId: 'liu-bei', x: 3, y: 17, label: '후방 지휘' }
],
note: '서주 성문 야습은 8전 보상과 새 합류 무장을 실제로 써 보는 첫 성문전입니다. 관우는 정면, 장비는 남쪽, 간옹과 미축은 뒤에서 책략과 보급을 맡는 전열이 기본입니다.'
},
map: ninthBattleMap,
units: ninthBattleUnits,
bonds: ninthBattleBonds,
mapTextureKey: 'battle-map-ninth',
leaderUnitId: 'xuzhou-leader-cao-bao',
quickVictoryTurnLimit: 18,
baseVictoryGold: 1160,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '조표 격파',
rewardGold: 700,
unitId: 'xuzhou-leader-cao-bao'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 280,
unitId: 'liu-bei'
},
{
id: 'fort',
kind: 'secure-terrain',
label: '서주 성문 확보',
rewardGold: 400,
terrain: 'fort',
targetTile: { x: 20, y: 10, radius: 4 },
threatRadius: 2
},
{
id: 'quick',
kind: 'quick-victory',
label: '18턴 이내 승리',
rewardGold: 320,
maxTurn: 18
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 3', '상처약 2', '탁주 1', '서주 성문 수비 +1'],
campaignReward: {
supplies: ['콩 3', '상처약 2', '탁주 1'],
equipment: ['찰갑 1'],
reputation: ['서주 성문 수비 +1'],
unlockBattleId: 'tenth-battle-xuzhou-breakout',
unlockLabel: '서주 탈출전 개방',
note: '성문은 지켰지만 내부 균열이 깊어져, 다음 전투는 성을 되찾기보다 포위망을 빠져나가는 흐름으로 이어집니다.'
},
victoryPages: ninthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const tenthBattleScenario: BattleScenarioDefinition = {
id: 'tenth-battle-xuzhou-breakout',
title: '서주 탈출전',
victoryConditionLabel: '송헌 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'서주는 여포에게 넘어갔고, 유비군은 성 밖으로 빠져나갈 길을 열어야 합니다. 송헌을 격파하면 추격대의 지휘가 무너집니다.',
'여포군 기병은 길을 따라 빠르게 압박하고, 성내 배반병은 숲과 마을 근처에서 퇴로를 끊으려 합니다.',
'서쪽 진영과 마을을 확보한 채 20턴 안에 돌파하면 조조 의탁으로 이어질 병력과 보급을 더 많이 보존합니다.'
],
map: tenthBattleMap,
units: tenthBattleUnits,
bonds: tenthBattleBonds,
mapTextureKey: 'battle-map-tenth',
leaderUnitId: 'xuzhou-escape-leader-song-xian',
quickVictoryTurnLimit: 20,
baseVictoryGold: 1240,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '송헌 격파',
rewardGold: 760,
unitId: 'xuzhou-escape-leader-song-xian'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 300,
unitId: 'liu-bei'
},
{
id: 'village',
kind: 'secure-terrain',
label: '피난 마을 확보',
rewardGold: 420,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '20턴 이내 돌파',
rewardGold: 340,
maxTurn: 20
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 4', '상처약 2', '탁주 1', '서주 피난민 보호 +1'],
victoryPages: tenthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const eleventhBattleScenario: BattleScenarioDefinition = {
id: 'eleventh-battle-xudu-refuge-road',
title: '허도 입성로',
victoryConditionLabel: '기령 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조조는 유비군을 받아들이는 대신 허도 입성로를 어지럽히는 원술 잔군을 치라는 명을 내립니다. 기령을 격파하면 길이 열립니다.',
'원술군 기병은 길을 따라 돌파하고, 약탈병은 숲과 마을을 끼고 보급을 노립니다. 조조군의 감시 속에서 군율을 증명해야 합니다.',
'마을을 확보하고 18턴 안에 승리하면 조조 의탁 이후에도 병력과 민심을 더 많이 보존합니다.'
],
map: eleventhBattleMap,
units: eleventhBattleUnits,
bonds: eleventhBattleBonds,
mapTextureKey: 'battle-map-eleventh',
leaderUnitId: 'xudu-road-leader-ji-ling',
quickVictoryTurnLimit: 18,
baseVictoryGold: 1320,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '기령 격파',
rewardGold: 820,
unitId: 'xudu-road-leader-ji-ling'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 320,
unitId: 'liu-bei'
},
{
id: 'village',
kind: 'secure-terrain',
label: '허도 길목 마을 확보',
rewardGold: 460,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '18턴 이내 승리',
rewardGold: 360,
maxTurn: 18
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 4', '상처약 3', '탁주 1', '조조군 군문 통행 +1'],
victoryPages: eleventhBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const twelfthBattleScenario: BattleScenarioDefinition = {
id: 'twelfth-battle-xiapi-outer-siege',
title: '하비 외곽전',
victoryConditionLabel: '장료 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조조는 하비 포위망의 남쪽 둑길을 유비군에게 맡깁니다. 장료를 격파하면 여포군 선봉은 성 안으로 물러납니다.',
'강줄기와 둑길이 전장을 나눕니다. 여포군 기병은 길을 타고 돌파하고, 성루 궁병과 진궁은 후방에서 압박합니다.',
'둑길 진영을 확보하고 20턴 안에 승리하면 조조 휘하에서의 공적과 유비군의 독자 보급을 함께 지킬 수 있습니다.'
],
map: twelfthBattleMap,
units: twelfthBattleUnits,
bonds: twelfthBattleBonds,
mapTextureKey: 'battle-map-twelfth',
leaderUnitId: 'xiapi-leader-zhang-liao',
quickVictoryTurnLimit: 20,
baseVictoryGold: 1440,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '장료 격파',
rewardGold: 900,
unitId: 'xiapi-leader-zhang-liao'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 340,
unitId: 'liu-bei'
},
{
id: 'camp',
kind: 'secure-terrain',
label: '하비 둑길 진영 확보',
rewardGold: 500,
terrain: 'camp'
},
{
id: 'quick',
kind: 'quick-victory',
label: '20턴 이내 승리',
rewardGold: 390,
maxTurn: 20
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 4', '상처약 3', '탁주 2', '하비 포위 공적 +1'],
victoryPages: twelfthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirteenthBattleScenario: BattleScenarioDefinition = {
id: 'thirteenth-battle-xiapi-final',
title: '하비 결전',
victoryConditionLabel: '여포 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'여포가 하비 성 안에서 마지막 돌파를 준비합니다. 여포를 격파하면 서주를 뒤흔든 난전도 끝을 맞습니다.',
'진궁은 성루 궁병과 수문 수비를 이용해 접근로를 끊으려 합니다. 기병 돌파대와 성문 수비대를 나누어 상대하십시오.',
'성문 요새를 확보하고 22턴 안에 승리하면 조조 휘하에서도 유비군의 전공과 독자 보급 명분을 모두 남길 수 있습니다.'
],
map: thirteenthBattleMap,
units: thirteenthBattleUnits,
bonds: thirteenthBattleBonds,
mapTextureKey: 'battle-map-thirteenth',
leaderUnitId: 'xiapi-final-leader-lu-bu',
quickVictoryTurnLimit: 22,
baseVictoryGold: 1560,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '여포 격파',
rewardGold: 980,
unitId: 'xiapi-final-leader-lu-bu'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 360,
unitId: 'liu-bei'
},
{
id: 'gate',
kind: 'secure-terrain',
label: '하비 성문 확보',
rewardGold: 560,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '22턴 이내 승리',
rewardGold: 420,
maxTurn: 22
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 5', '상처약 3', '탁주 2', '하비 결전 공적 +1'],
victoryPages: thirteenthBattleVictoryPages,
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 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', '상처약 4', '탁주 2', '원소 접선 문서 +1'],
victoryPages: fifteenthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const sixteenthBattleScenario: BattleScenarioDefinition = {
id: 'sixteenth-battle-liu-biao-refuge',
title: '유표 의탁로',
victoryConditionLabel: '조인 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'원소 진영을 떠난 유비군은 형주의 유표에게 의탁하기 위해 남쪽 길을 엽니다. 조운이 합류했지만 조조군 추격대도 형주 관문 앞에 따라붙었습니다.',
'중앙 강줄기와 숲길은 행군을 늦추고, 동쪽 관문은 수비병과 궁병이 지키고 있습니다. 조운의 기동력과 책사들의 지원을 함께 활용하십시오.',
'조인을 격파하고 형주 관문을 확보하십시오. 25턴 안에 승리하면 유비군의 의탁 명분과 군자금을 더 단단히 챙길 수 있습니다.'
],
map: sixteenthBattleMap,
units: sixteenthBattleUnits,
bonds: sixteenthBattleBonds,
mapTextureKey: 'battle-map-sixteenth',
leaderUnitId: 'liu-biao-road-leader-cao-ren',
quickVictoryTurnLimit: 25,
baseVictoryGold: 1880,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '조인 격파',
rewardGold: 1200,
unitId: 'liu-biao-road-leader-cao-ren'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 420,
unitId: 'liu-bei'
},
{
id: 'jingzhou-gate',
kind: 'secure-terrain',
label: '형주 관문 확보',
rewardGold: 680,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '25턴 이내 승리',
rewardGold: 540,
maxTurn: 25
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 6', '상처약 5', '탁주 2', '형주 접선 문서 +1'],
victoryPages: sixteenthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const seventeenthBattleScenario: BattleScenarioDefinition = {
id: 'seventeenth-battle-wolong-visit-road',
title: '융중 방문로',
victoryConditionLabel: '채순 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'형주에서 모은 와룡의 단서를 따라 유비군은 융중으로 향합니다. 그러나 산길에는 채씨 가병이 먼저 길목을 잡고 있습니다.',
'숲과 언덕, 좁은 물길이 많은 전장입니다. 조운의 기동력과 책사들의 후원을 살려 산길의 궁병과 감시병을 끊어 내십시오.',
'채순을 격파하고 융중 초가로 향하는 길을 확보하십시오. 26턴 안에 승리하면 제갈량 영입의 명분과 보급을 더 단단히 챙길 수 있습니다.'
],
map: seventeenthBattleMap,
units: seventeenthBattleUnits,
bonds: seventeenthBattleBonds,
mapTextureKey: 'battle-map-seventeenth',
leaderUnitId: 'wolong-road-leader-cai-xun',
quickVictoryTurnLimit: 26,
baseVictoryGold: 1960,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '채순 격파',
rewardGold: 1260,
unitId: 'wolong-road-leader-cai-xun'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 440,
unitId: 'liu-bei'
},
{
id: 'longzhong-cottage',
kind: 'secure-terrain',
label: '융중 초가 길 확보',
rewardGold: 720,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '26턴 이내 승리',
rewardGold: 560,
maxTurn: 26
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 6', '상처약 5', '탁주 2', '와룡의 서찰 +1'],
victoryPages: seventeenthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const eighteenthBattleScenario: BattleScenarioDefinition = {
id: 'eighteenth-battle-bowang-ambush',
title: '박망파 매복전',
victoryConditionLabel: '하후돈 퇴각',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조조군 선봉 하후돈이 신야로 향합니다. 제갈량은 박망파의 숲길과 좁은 물길을 이용해 적의 속도를 끊으려 합니다.',
'숲길 궁병과 기병이 동시에 압박하지만, 강줄기와 매복 지형을 이용하면 조조군 전열을 갈라낼 수 있습니다. 제갈량의 책략과 조운의 기동을 함께 활용하십시오.',
'하후돈을 퇴각시키고 박망파의 길목을 지키십시오. 27턴 안에 승리하면 강동과 손잡을 시간을 더 벌 수 있습니다.'
],
map: eighteenthBattleMap,
units: eighteenthBattleUnits,
bonds: eighteenthBattleBonds,
mapTextureKey: 'battle-map-eighteenth',
leaderUnitId: 'bowang-leader-xiahou-dun',
quickVictoryTurnLimit: 27,
baseVictoryGold: 2080,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '하후돈 퇴각',
rewardGold: 1340,
unitId: 'bowang-leader-xiahou-dun'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 460,
unitId: 'liu-bei'
},
{
id: 'ambush-village',
kind: 'secure-terrain',
label: '박망파 매복지 확보',
rewardGold: 760,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '27턴 이내 승리',
rewardGold: 600,
maxTurn: 27
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 7', '상처약 4', '탁주 2', '강동 풍문 +1'],
victoryPages: eighteenthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const nineteenthBattleScenario: BattleScenarioDefinition = {
id: 'nineteenth-battle-changban-refuge',
title: '장판파 피난로',
victoryConditionLabel: '조순 퇴각',
defeatConditionLabel: '유비 또는 조운 퇴각',
openingObjectiveLines: [
'조조군 호표기가 피난 행렬을 따라 장판파로 들이칩니다. 백성을 버리지 않으려면 남쪽 피난로와 다리목을 동시에 지켜야 합니다.',
'조운은 넓은 길을 오가며 흩어진 병력을 모을 수 있고, 장비는 다리목을 막아 추격 기병을 늦추기 좋습니다. 제갈량과 손건은 전후 강동 사절 명분을 정리합니다.',
'조순을 퇴각시키고 유비와 조운을 지키십시오. 피난민 마을을 확보하면 다음 강동 사절 준비가 안정됩니다.'
],
map: nineteenthBattleMap,
units: nineteenthBattleUnits,
bonds: nineteenthBattleBonds,
mapTextureKey: 'battle-map-nineteenth',
leaderUnitId: 'changban-leader-cao-chun',
quickVictoryTurnLimit: 28,
baseVictoryGold: 2220,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '조순 퇴각',
rewardGold: 1440,
unitId: 'changban-leader-cao-chun'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 480,
unitId: 'liu-bei'
},
{
id: 'zhao-yun',
kind: 'keep-unit-alive',
label: '조운 생존',
rewardGold: 620,
unitId: 'zhao-yun'
},
{
id: 'refugee-village',
kind: 'secure-terrain',
label: '피난민 마을 확보',
rewardGold: 820,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '28턴 이내 승리',
rewardGold: 620,
maxTurn: 28
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhao-yun' }
],
itemRewards: ['콩 7', '상처약 5', '탁주 2', '피난로 지도 +1', '강동 풍문 +1'],
victoryPages: nineteenthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const twentiethBattleScenario: BattleScenarioDefinition = {
id: 'twentieth-battle-jiangdong-envoy',
title: '강동 사절로',
victoryConditionLabel: '문빙 퇴각',
defeatConditionLabel: '유비, 제갈량 또는 손건 퇴각',
openingObjectiveLines: [
'장판파를 벗어난 유비군은 강동과 손잡을 사절을 보내야 합니다. 문빙의 추격대가 강나루를 닫기 전에 길을 열어야 합니다.',
'이번 전투는 제갈량과 손건을 지키는 것이 핵심입니다. 전열이 다리목을 붙들고, 기동 장수가 추격 기병을 끊어야 사절 문서가 강동으로 향할 수 있습니다.',
'문빙을 퇴각시키고 강나루를 확보하십시오. 제갈량과 손건이 살아남으면 적벽대전으로 향할 외교 명분이 완성됩니다.'
],
map: twentiethBattleMap,
units: twentiethBattleUnits,
bonds: twentiethBattleBonds,
mapTextureKey: 'battle-map-twentieth',
leaderUnitId: 'envoy-road-leader-wen-pin',
quickVictoryTurnLimit: 31,
baseVictoryGold: 2380,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '문빙 퇴각',
rewardGold: 1540,
unitId: 'envoy-road-leader-wen-pin'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 760,
unitId: 'zhuge-liang'
},
{
id: 'sun-qian',
kind: 'keep-unit-alive',
label: '손건 생존',
rewardGold: 620,
unitId: 'sun-qian'
},
{
id: 'river-port',
kind: 'secure-terrain',
label: '강나루 확보',
rewardGold: 860,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '31턴 이내 승리',
rewardGold: 640,
maxTurn: 31
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' },
{ kind: 'unit-defeated', unitId: 'sun-qian' }
],
itemRewards: ['콩 8', '상처약 6', '탁주 3', '강동 사절 문서 +1', '화공 논의 +1'],
victoryPages: twentiethBattleVictoryPages,
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 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 twentyThirdBattleScenario: BattleScenarioDefinition = {
id: 'twenty-third-battle-jingzhou-south-entry',
title: '형주 남부 진입전',
victoryConditionLabel: '형도영 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'적벽의 불길로 조조의 기세가 꺾인 지금, 유비군은 형주 남부의 길과 민심을 열어야 합니다.',
'형도영의 가병은 영릉으로 이어지는 길목과 마을을 붙잡고 있습니다. 성채만 몰아치면 마을이 흔들리니 보급 거점을 함께 지키십시오.',
'유비와 제갈량을 지키며 형도영을 물리치고, 남부 마을을 안정시키면 마량이 군영에 합류합니다.'
],
map: twentyThirdBattleMap,
units: twentyThirdBattleUnits,
bonds: twentyThirdBattleBonds,
mapTextureKey: 'battle-map-twenty-third',
leaderUnitId: 'jing-south-leader-xing-daorong',
quickVictoryTurnLimit: 32,
baseVictoryGold: 3020,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '형도영 퇴각',
rewardGold: 2000,
unitId: 'jing-south-leader-xing-daorong'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 600,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 900,
unitId: 'zhuge-liang'
},
{
id: 'southern-village',
kind: 'secure-terrain',
label: '남부 마을 안정',
rewardGold: 980,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '32턴 이내 승리',
rewardGold: 760,
maxTurn: 32
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 9', '상처약 7', '탁주 4', '형주 진입 문서 +1', '마량 합류'],
victoryPages: twentyThirdBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const twentyFourthBattleScenario: BattleScenarioDefinition = {
id: 'twenty-fourth-battle-guiyang-persuasion',
title: '계양 설득전',
victoryConditionLabel: '조범 항복',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'형주 남부의 첫 길목을 연 유비군은 계양으로 향합니다. 이번 전투는 성채를 불태우는 싸움이 아니라 조범의 마음을 굽히는 싸움입니다.',
'마량의 서신과 제갈량의 계책이 맞물리려면 마을을 안정시키고, 성채 주변 친위대를 물리쳐야 합니다.',
'유비와 제갈량을 지키며 조범을 항복시키면, 형주의 문사 이적이 군영에 합류합니다.'
],
map: twentyFourthBattleMap,
units: twentyFourthBattleUnits,
bonds: twentyFourthBattleBonds,
mapTextureKey: 'battle-map-twenty-fourth',
leaderUnitId: 'guiyang-leader-zhao-fan',
quickVictoryTurnLimit: 33,
baseVictoryGold: 3180,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '조범 항복',
rewardGold: 2100,
unitId: 'guiyang-leader-zhao-fan'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 620,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 880,
unitId: 'zhuge-liang'
},
{
id: 'guiyang-village',
kind: 'secure-terrain',
label: '계양 마을 안정',
rewardGold: 1040,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '33턴 이내 승리',
rewardGold: 800,
maxTurn: 33
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 10', '상처약 7', '탁주 4', '계양 설득 문서 +1', '이적 합류'],
victoryPages: twentyFourthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const twentyFifthBattleScenario: BattleScenarioDefinition = {
id: 'twenty-fifth-battle-wuling-mountain-road',
title: '무릉 산길 확보전',
victoryConditionLabel: '김선 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'계양이 열린 뒤 유비군은 무릉의 산길로 들어섭니다. 좁은 길과 흩어진 마을 때문에 단순 돌파만으로는 근거지를 얻을 수 없습니다.',
'마량과 이적은 무릉의 내부 동요를 읽고, 김선 아래 장수 공지가 백성 피해를 염려한다고 보고합니다.',
'유비와 제갈량을 지키며 김선을 물러나게 하고 산길 마을을 안정시키면, 공지가 군영에 합류합니다.'
],
map: twentyFifthBattleMap,
units: twentyFifthBattleUnits,
bonds: twentyFifthBattleBonds,
mapTextureKey: 'battle-map-twenty-fifth',
leaderUnitId: 'wuling-leader-jin-xuan',
quickVictoryTurnLimit: 34,
baseVictoryGold: 3360,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '김선 퇴각',
rewardGold: 2200,
unitId: 'wuling-leader-jin-xuan'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 640,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 900,
unitId: 'zhuge-liang'
},
{
id: 'wuling-village',
kind: 'secure-terrain',
label: '무릉 마을 안정',
rewardGold: 1080,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '34턴 이내 승리',
rewardGold: 840,
maxTurn: 34
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 11', '상처약 8', '탁주 4', '무릉 산길 지도 +1', '공지 합류'],
victoryPages: twentyFifthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const twentySixthBattleScenario: BattleScenarioDefinition = {
id: 'twenty-sixth-battle-changsha-veteran',
title: '장사 노장 대면전',
victoryConditionLabel: '한현 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'무릉 산길을 연 유비군은 장사로 향합니다. 장사에는 노장 황충과 의심 많은 태수 한현이 버티고 있습니다.',
'이번 전투는 황충을 욕보이지 않고 한현의 의심을 꺾어야 합니다. 마을을 안정시키고 성문 전열을 흔들어 장사 내부의 길을 여십시오.',
'유비와 제갈량을 지키며 한현을 물러나게 하면 황충과 위연이 군영에 합류합니다.'
],
map: twentySixthBattleMap,
units: twentySixthBattleUnits,
bonds: twentySixthBattleBonds,
mapTextureKey: 'battle-map-twenty-sixth',
leaderUnitId: 'changsha-leader-han-xuan',
quickVictoryTurnLimit: 35,
baseVictoryGold: 3560,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '한현 퇴각',
rewardGold: 2320,
unitId: 'changsha-leader-han-xuan'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 660,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 940,
unitId: 'zhuge-liang'
},
{
id: 'changsha-village',
kind: 'secure-terrain',
label: '장사 마을 안정',
rewardGold: 1120,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '35턴 이내 승리',
rewardGold: 880,
maxTurn: 35
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 12', '상처약 8', '탁주 5', '장사 사절 문서 +1', '황충 합류', '위연 합류'],
victoryPages: twentySixthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const twentySeventhBattleScenario: BattleScenarioDefinition = {
id: 'twenty-seventh-battle-yizhou-relief-road',
title: '익주 원군로',
victoryConditionLabel: '양회 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'장사까지 안정시킨 유비군은 유장의 원군 요청을 따라 익주로 향합니다. 원군로에는 양회의 전초 병력이 관문과 마을을 함께 틀어쥐고 있습니다.',
'이번 전투는 길목의 마을을 지키면서 관문 전열을 무너뜨려야 합니다. 황충과 위연까지 합류한 큰 로스터에서 산길, 돌파, 책략 역할을 직접 골라 출전하십시오.',
'유비와 제갈량을 지키며 양회를 물러나게 하면 봉추 방통이 군영에 합류합니다.'
],
map: twentySeventhBattleMap,
units: twentySeventhBattleUnits,
bonds: twentySeventhBattleBonds,
mapTextureKey: 'battle-map-twenty-seventh',
leaderUnitId: 'yizhou-leader-yang-huai',
quickVictoryTurnLimit: 36,
baseVictoryGold: 3760,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '양회 퇴각',
rewardGold: 2420,
unitId: 'yizhou-leader-yang-huai'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 700,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 980,
unitId: 'zhuge-liang'
},
{
id: 'yizhou-village',
kind: 'secure-terrain',
label: '익주 마을 안정',
rewardGold: 1160,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '36턴 이내 승리',
rewardGold: 920,
maxTurn: 36
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 12', '상처약 9', '탁주 5', '익주 길목 지도 +1', '방통 합류'],
victoryPages: twentySeventhBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const twentyEighthBattleScenario: BattleScenarioDefinition = {
id: 'twenty-eighth-battle-fu-pass-entry',
title: '부수관 진입전',
victoryConditionLabel: '고패 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'익주 원군로를 연 유비군은 부수관의 첫 문 앞에 섰습니다. 고패는 좁은 협곡과 성루 궁병을 이용해 원군의 명분을 관문 앞에서 묶으려 합니다.',
'이번 전투부터 방통이 출전 후보에 들어옵니다. 와룡과 봉추를 함께 세우면 계책은 강해지지만, 전열과 보급 선택이 더 날카로워집니다.',
'유비와 제갈량을 지키며 고패를 물러나게 하면 익주 내부 인재 법정이 군영에 합류합니다.'
],
map: twentyEighthBattleMap,
units: twentyEighthBattleUnits,
bonds: twentyEighthBattleBonds,
mapTextureKey: 'battle-map-twenty-eighth',
leaderUnitId: 'fupass-leader-gao-pei',
quickVictoryTurnLimit: 37,
baseVictoryGold: 3980,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '고패 퇴각',
rewardGold: 2520,
unitId: 'fupass-leader-gao-pei'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 740,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 1020,
unitId: 'zhuge-liang'
},
{
id: 'fu-pass-village',
kind: 'secure-terrain',
label: '부수관 마을 안정',
rewardGold: 1220,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '37턴 이내 승리',
rewardGold: 960,
maxTurn: 37
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 13', '상처약 9', '탁주 6', '부수관 보급표 +1', '법정 합류'],
victoryPages: twentyEighthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const twentyNinthBattleScenario: BattleScenarioDefinition = {
id: 'twenty-ninth-battle-luo-outer-wall',
title: '낙성 외곽전',
victoryConditionLabel: '장임 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'부수관을 넘어선 유비군은 낙성 외곽 방어선에 도착했습니다. 장임은 성 밖 마을과 고개를 이용해 시간을 벌고 있습니다.',
'이번 전투부터 법정도 출전 후보입니다. 익주 내부 사정을 아는 법정을 데려가면 오의와 성문 장수들을 설득할 실마리가 커집니다.',
'유비와 제갈량을 지키며 장임을 물러나게 하십시오. 마을을 안정시키면 오의가 낙성으로 향하는 길을 열 수 있습니다.'
],
map: twentyNinthBattleMap,
units: twentyNinthBattleUnits,
bonds: twentyNinthBattleBonds,
mapTextureKey: 'battle-map-twenty-ninth',
leaderUnitId: 'luo-leader-zhang-ren',
quickVictoryTurnLimit: 38,
baseVictoryGold: 4200,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '장임 퇴각',
rewardGold: 2640,
unitId: 'luo-leader-zhang-ren'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 780,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 1080,
unitId: 'zhuge-liang'
},
{
id: 'luo-village',
kind: 'secure-terrain',
label: '낙성 외곽 마을 안정',
rewardGold: 1280,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '38턴 이내 승리',
rewardGold: 1000,
maxTurn: 38
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 14', '상처약 10', '탁주 6', '낙성 외곽 지도 +1', '오의 합류'],
victoryPages: twentyNinthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirtiethBattleScenario: BattleScenarioDefinition = {
id: 'thirtieth-battle-luofeng-ambush',
title: '낙봉파 매복전',
victoryConditionLabel: '장임 매복 격파',
defeatConditionLabel: '유비 또는 방통 퇴각',
openingObjectiveLines: [
'낙성 본성으로 가는 빠른 길인 낙봉파에 장임의 매복이 숨어 있습니다. 좁은 길과 고지 궁병을 동시에 살피며 진군해야 합니다.',
'오의가 새로 출전 후보에 들어왔습니다. 낙성의 길을 아는 오의를 데려가면 매복 위치를 읽기 쉽지만, 여섯 명 제한은 더 빡빡해집니다.',
'유비와 방통을 지키며 장임의 매복을 격파하십시오. 낙봉파를 넘으면 낙성 본성 공략이 열립니다.'
],
map: thirtiethBattleMap,
units: thirtiethBattleUnits,
bonds: thirtiethBattleBonds,
mapTextureKey: 'battle-map-thirtieth',
leaderUnitId: 'luofeng-leader-zhang-ren',
quickVictoryTurnLimit: 39,
baseVictoryGold: 4440,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '장임 매복 격파',
rewardGold: 2760,
unitId: 'luofeng-leader-zhang-ren'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 820,
unitId: 'liu-bei'
},
{
id: 'pang-tong',
kind: 'keep-unit-alive',
label: '방통 생존',
rewardGold: 1180,
unitId: 'pang-tong'
},
{
id: 'luofeng-village',
kind: 'secure-terrain',
label: '낙봉파 길목 확보',
rewardGold: 1320,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '39턴 이내 승리',
rewardGold: 1040,
maxTurn: 39
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'pang-tong' }
],
itemRewards: ['콩 15', '상처약 11', '탁주 6', '낙봉파 정찰표 +1', '봉추 생환 +1'],
victoryPages: thirtiethBattleVictoryPages,
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: 48,
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: '48턴 이내 승리',
rewardGold: 1120,
maxTurn: 48
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'pang-tong' }
],
itemRewards: ['콩 16', '상처약 12', '탁주 7', '낙성 항복 권고문 +1', '엄안 합류'],
victoryPages: thirtyFirstBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirtySecondBattleScenario: BattleScenarioDefinition = {
id: 'thirty-second-battle-mianzhu-gate',
title: '면죽관 압박전',
victoryConditionLabel: '이엄 수비선 격파',
defeatConditionLabel: '유비 또는 엄안 퇴각',
openingObjectiveLines: [
'면죽관은 성도 앞 마지막 완충 지대입니다. 관문을 장악하면 유장의 항복 권고가 현실적인 압박으로 바뀝니다.',
'엄안은 익주 장수들의 마음을 흔드는 첫 증거입니다. 엄안을 지키며 이엄에게 유비군의 군율과 예우를 보여 주십시오.',
'이엄을 격파하되 마을과 창고를 안정시키면 성도 항복 권고의 명분이 강해집니다.'
],
map: thirtySecondBattleMap,
units: thirtySecondBattleUnits,
bonds: thirtySecondBattleBonds,
mapTextureKey: 'battle-map-thirty-second',
leaderUnitId: 'chengdu-leader-li-yan',
quickVictoryTurnLimit: 50,
baseVictoryGold: 5040,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '이엄 수비선 격파',
rewardGold: 3120,
unitId: 'chengdu-leader-li-yan'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 960,
unitId: 'liu-bei'
},
{
id: 'yan-yan',
kind: 'keep-unit-alive',
label: '엄안 생존',
rewardGold: 1260,
unitId: 'yan-yan'
},
{
id: 'mianzhu-storehouse',
kind: 'secure-terrain',
label: '면죽관 창고 확보',
rewardGold: 1540,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '50턴 이내 승리',
rewardGold: 1180,
maxTurn: 50
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'yan-yan' }
],
itemRewards: ['콩 18', '상처약 13', '탁주 7', '성도 항복 권고문 +1', '이엄 합류'],
victoryPages: thirtySecondBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirtyThirdBattleScenario: BattleScenarioDefinition = {
id: 'thirty-third-battle-chengdu-surrender',
title: '성도 항복 권고전',
victoryConditionLabel: '황권 방어선 격파',
defeatConditionLabel: '유비 또는 이엄 퇴각',
openingObjectiveLines: [
'성도 외곽의 마지막 방어선입니다. 황권을 물리치면 유장의 항복 권고가 실제 선택지로 바뀝니다.',
'이엄은 방금 합류한 익주 장수로, 이번 전장에서 유비군의 군율을 증언하는 핵심 인물입니다. 이엄을 반드시 지키십시오.',
'성도 창고와 마을을 안정시키면 항복 조건에 대한 신뢰가 커지고, 익주 확보 이후의 수습이 쉬워집니다.'
],
map: thirtyThirdBattleMap,
units: thirtyThirdBattleUnits,
bonds: thirtyThirdBattleBonds,
mapTextureKey: 'battle-map-thirty-third',
leaderUnitId: 'chengdu-final-leader-huang-quan',
quickVictoryTurnLimit: 48,
baseVictoryGold: 5340,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '황권 방어선 격파',
rewardGold: 3360,
unitId: 'chengdu-final-leader-huang-quan'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 980,
unitId: 'liu-bei'
},
{
id: 'li-yan',
kind: 'keep-unit-alive',
label: '이엄 생존',
rewardGold: 1320,
unitId: 'li-yan'
},
{
id: 'chengdu-storehouse',
kind: 'secure-terrain',
label: '성도 창고 확보',
rewardGold: 1620,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '48턴 이내 승리',
rewardGold: 1240,
maxTurn: 48
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'li-yan' }
],
itemRewards: ['콩 20', '상처약 15', '탁주 8', '익주 안정문 +1', '황권 합류'],
victoryPages: thirtyThirdBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirtyFourthBattleScenario: BattleScenarioDefinition = {
id: 'thirty-fourth-battle-jiameng-pass',
title: '가맹관 마초 대면전',
victoryConditionLabel: '마초 돌격 저지',
defeatConditionLabel: '유비 또는 황권 퇴각',
openingObjectiveLines: [
'가맹관은 익주와 한중을 잇는 목입니다. 이 길을 열면 촉한 건국 이후 북방 전선의 첫 기반이 마련됩니다.',
'황권은 이번 전장이 첫 출전입니다. 한중 길과 익주 내정의 균형을 잡으려면 황권을 지켜야 합니다.',
'마초의 돌격을 받아내고 방덕의 친위대를 제압하면, 서량 기병을 유비군으로 끌어들일 말길이 열립니다.'
],
map: thirtyFourthBattleMap,
units: thirtyFourthBattleUnits,
bonds: thirtyFourthBattleBonds,
mapTextureKey: 'battle-map-thirty-fourth',
leaderUnitId: 'jiameng-leader-ma-chao',
quickVictoryTurnLimit: 50,
baseVictoryGold: 5660,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '마초 돌격 저지',
rewardGold: 3560,
unitId: 'jiameng-leader-ma-chao'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1000,
unitId: 'liu-bei'
},
{
id: 'huang-quan',
kind: 'keep-unit-alive',
label: '황권 생존',
rewardGold: 1360,
unitId: 'huang-quan'
},
{
id: 'jiameng-storehouse',
kind: 'secure-terrain',
label: '가맹관 보급 창고 확보',
rewardGold: 1680,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '50턴 이내 승리',
rewardGold: 1300,
maxTurn: 50
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'huang-quan' }
],
itemRewards: ['콩 22', '상처약 16', '탁주 8', '서량 기병 전술서 +1', '마초 합류'],
victoryPages: thirtyFourthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirtyFifthBattleScenario: BattleScenarioDefinition = {
id: 'thirty-fifth-battle-yangping-scout',
title: '양평관 정찰전',
victoryConditionLabel: '양평관 선봉 격파',
defeatConditionLabel: '유비 또는 마초 퇴각',
openingObjectiveLines: [
'양평관은 한중 전선으로 들어가는 첫 관문입니다. 관문을 빼앗기보다 지형과 보급로를 확인하는 것이 목표입니다.',
'마초는 이번 전장이 합류 후 첫 출전입니다. 서량 기병의 속도를 활용하되 유비군의 전열과 너무 멀어지지 않게 해야 합니다.',
'장위의 선봉과 염포의 책략대를 물리치고 관문 창고를 확보하면, 흩어진 서량 기병과 마대가 합류할 길이 열립니다.'
],
map: thirtyFifthBattleMap,
units: thirtyFifthBattleUnits,
bonds: thirtyFifthBattleBonds,
mapTextureKey: 'battle-map-thirty-fifth',
leaderUnitId: 'yangping-leader-zhang-wei',
quickVictoryTurnLimit: 52,
baseVictoryGold: 5900,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '양평관 선봉 격파',
rewardGold: 3720,
unitId: 'yangping-leader-zhang-wei'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1000,
unitId: 'liu-bei'
},
{
id: 'ma-chao',
kind: 'keep-unit-alive',
label: '마초 생존',
rewardGold: 1500,
unitId: 'ma-chao'
},
{
id: 'yangping-storehouse',
kind: 'secure-terrain',
label: '양평관 창고 확보',
rewardGold: 1760,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '52턴 이내 승리',
rewardGold: 1360,
maxTurn: 52
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'ma-chao' }
],
itemRewards: ['콩 24', '상처약 18', '탁주 8', '서량장창 +1', '마대 합류'],
victoryPages: thirtyFifthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirtySixthBattleScenario: BattleScenarioDefinition = {
id: 'thirty-sixth-battle-dingjun-vanguard',
title: '정군산 전초전',
victoryConditionLabel: '하후연 선봉 격파',
defeatConditionLabel: '유비 또는 황충 퇴각',
openingObjectiveLines: [
'정군산은 한중 전선의 고지입니다. 능선을 장악하면 한중 본전의 주도권을 유비군이 가져올 수 있습니다.',
'황충과 법정의 계책이 이번 전투의 중심입니다. 황충이 무너지면 정군산의 기세도 꺾입니다.',
'마초와 마대는 서쪽 능선을 흔들고, 왕평을 설득할 실마리를 찾아 한중 산길의 마음을 유비군 쪽으로 돌리십시오.'
],
map: thirtySixthBattleMap,
units: thirtySixthBattleUnits,
bonds: thirtySixthBattleBonds,
mapTextureKey: 'battle-map-thirty-sixth',
leaderUnitId: 'dingjun-leader-xiahou-yuan',
quickVictoryTurnLimit: 70,
baseVictoryGold: 6240,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '하후연 선봉 격파',
rewardGold: 3920,
unitId: 'dingjun-leader-xiahou-yuan'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1000,
unitId: 'liu-bei'
},
{
id: 'huang-zhong',
kind: 'keep-unit-alive',
label: '황충 생존',
rewardGold: 1640,
unitId: 'huang-zhong'
},
{
id: 'dingjun-ridge-storehouse',
kind: 'secure-terrain',
label: '정군산 보급 창고 확보',
rewardGold: 1860,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '70턴 이내 승리',
rewardGold: 1440,
maxTurn: 70
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'huang-zhong' }
],
itemRewards: ['콩 26', '상처약 20', '탁주 9', '산악 지형도 +1', '왕평 합류'],
victoryPages: thirtySixthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirtySeventhBattleScenario: BattleScenarioDefinition = {
id: 'thirty-seventh-battle-hanzhong-decisive',
title: '한중 결전',
victoryConditionLabel: '조조 본진 격파',
defeatConditionLabel: '유비 또는 왕평 퇴각',
openingObjectiveLines: [
'한중 결전은 정군산 이후 북문 전체를 안정시키는 싸움입니다. 조조군 본진을 흔들어 한중의 주도권을 완전히 가져오십시오.',
'왕평은 이번 전장의 길잡이입니다. 왕평이 무너지면 산길과 보급로를 잇는 계획도 무너집니다.',
'황충과 법정은 정군산의 여세를 이어 고지를 누르고, 마초와 마대는 조조군 기병의 퇴로를 끊어 한중을 유비군의 깃발 아래 묶으십시오.'
],
map: thirtySeventhBattleMap,
units: thirtySeventhBattleUnits,
bonds: thirtySeventhBattleBonds,
mapTextureKey: 'battle-map-thirty-seventh',
leaderUnitId: 'hanzhong-leader-cao-cao',
quickVictoryTurnLimit: 58,
baseVictoryGold: 6840,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '조조 본진 격파',
rewardGold: 4320,
unitId: 'hanzhong-leader-cao-cao'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1120,
unitId: 'liu-bei'
},
{
id: 'wang-ping',
kind: 'keep-unit-alive',
label: '왕평 생존',
rewardGold: 1680,
unitId: 'wang-ping'
},
{
id: 'hanzhong-storehouse',
kind: 'secure-terrain',
label: '한중 보급 창고 확보',
rewardGold: 2040,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '58턴 이내 승리',
rewardGold: 1560,
maxTurn: 58
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'wang-ping' }
],
itemRewards: ['콩 30', '상처약 22', '탁주 10', '한중 병법서 1', '한중왕 즉위 준비'],
victoryPages: thirtySeventhBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirtyEighthBattleScenario: BattleScenarioDefinition = {
id: 'thirty-eighth-battle-jing-defense',
title: '형주 방위 전초전',
victoryConditionLabel: '여몽 정찰대 격파',
defeatConditionLabel: '유비 또는 관우 퇴각',
openingObjectiveLines: [
'촉한 건국 직후 형주는 위와 오의 시선이 동시에 모이는 전선이 되었습니다. 봉화대와 나루를 지켜 형주의 불안을 먼저 누르십시오.',
'관우는 이번 전투의 핵심입니다. 관우가 무너지면 형주의 방위 명분도 함께 흔들립니다.',
'강변 마을을 확보하고 오군의 정찰선을 몰아내면, 번성으로 이어질 다음 전선의 숨통을 열 수 있습니다.'
],
map: thirtyEighthBattleMap,
units: thirtyEighthBattleUnits,
bonds: thirtyEighthBattleBonds,
mapTextureKey: 'battle-map-thirty-eighth',
leaderUnitId: 'jing-defense-leader-lu-meng',
quickVictoryTurnLimit: 60,
baseVictoryGold: 7280,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '여몽 정찰대 격파',
rewardGold: 4580,
unitId: 'jing-defense-leader-lu-meng'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1160,
unitId: 'liu-bei'
},
{
id: 'guan-yu',
kind: 'keep-unit-alive',
label: '관우 생존',
rewardGold: 1820,
unitId: 'guan-yu'
},
{
id: 'jing-beacon',
kind: 'secure-terrain',
label: '형주 봉화대 확보',
rewardGold: 2180,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '60턴 이내 승리',
rewardGold: 1640,
maxTurn: 60
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'guan-yu' }
],
itemRewards: ['콩 32', '상처약 24', '탁주 10', '형주 봉화도 1', '번성 전선 준비'],
victoryPages: thirtyEighthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const thirtyNinthBattleScenario: BattleScenarioDefinition = {
id: 'thirty-ninth-battle-fan-castle-vanguard',
title: '번성 외곽 압박전',
victoryConditionLabel: '방덕 선봉 격파',
defeatConditionLabel: '유비 또는 관우 퇴각',
openingObjectiveLines: [
'형주 방위가 안정된 사이 관우는 번성 외곽으로 북상했습니다. 조조군의 보루와 나루를 먼저 장악해야 다음 결전을 열 수 있습니다.',
'이번 전투는 관우가 핵심입니다. 관우가 무너지면 번성 전선의 사기가 흔들리니, 유비와 관우를 함께 지키며 전선을 밀어 올리십시오.',
'성채 안쪽의 조인, 수로를 보는 우금, 기병을 이끄는 방덕이 서로 다른 방식으로 버틸 것입니다. 기동대와 책사를 골고루 출전시키면 공명과 성장 기회가 커집니다.'
],
map: thirtyNinthBattleMap,
units: thirtyNinthBattleUnits,
bonds: thirtyNinthBattleBonds,
mapTextureKey: 'battle-map-thirty-ninth',
leaderUnitId: 'fan-castle-leader-pang-de',
quickVictoryTurnLimit: 62,
baseVictoryGold: 7600,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '방덕 선봉 격파',
rewardGold: 4800,
unitId: 'fan-castle-leader-pang-de'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1200,
unitId: 'liu-bei'
},
{
id: 'guan-yu',
kind: 'keep-unit-alive',
label: '관우 생존',
rewardGold: 1900,
unitId: 'guan-yu'
},
{
id: 'outer-fort',
kind: 'secure-terrain',
label: '번성 외곽 보루 확보',
rewardGold: 2320,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '62턴 이내 승리',
rewardGold: 1720,
maxTurn: 62
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'guan-yu' }
],
itemRewards: ['콩 34', '상처약 25', '탁주 10', '번성 외곽도 1', '한수 수공 준비'],
victoryPages: thirtyNinthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortiethBattleScenario: BattleScenarioDefinition = {
id: 'fortieth-battle-han-river-flood',
title: '한수 수공',
victoryConditionLabel: '우금 본대 격파',
defeatConditionLabel: '유비 또는 관우 퇴각',
openingObjectiveLines: [
'한수의 수위가 오르며 번성 외곽이 진흙과 물길로 갈라졌습니다. 우금의 본대를 강과 둑 사이에 묶어 칠군을 흔드십시오.',
'관우는 이번 전투의 중심입니다. 관우가 전선을 잃으면 수공의 명분과 병사의 사기가 함께 무너집니다.',
'우금은 본진을 지키고, 방덕은 기병으로 돌파를 시도합니다. 법정, 마량, 황권 같은 참모와 기동대를 함께 운용하면 물길을 장악하기 쉽습니다.'
],
map: fortiethBattleMap,
units: fortiethBattleUnits,
bonds: fortiethBattleBonds,
mapTextureKey: 'battle-map-fortieth',
leaderUnitId: 'han-river-leader-yu-jin',
quickVictoryTurnLimit: 64,
baseVictoryGold: 7920,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '우금 본대 격파',
rewardGold: 5060,
unitId: 'han-river-leader-yu-jin'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1240,
unitId: 'liu-bei'
},
{
id: 'guan-yu',
kind: 'keep-unit-alive',
label: '관우 생존',
rewardGold: 1960,
unitId: 'guan-yu'
},
{
id: 'river-bank',
kind: 'secure-terrain',
label: '한수 둑길 확보',
rewardGold: 2440,
terrain: 'road'
},
{
id: 'quick',
kind: 'quick-victory',
label: '64턴 이내 승리',
rewardGold: 1800,
maxTurn: 64
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'guan-yu' }
],
itemRewards: ['콩 36', '상처약 26', '탁주 11', '한수 수위표 1', '칠군 항복문 1'],
victoryPages: fortiethBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortyFirstBattleScenario: BattleScenarioDefinition = {
id: 'forty-first-battle-fan-castle-siege',
title: '번성 공성전',
victoryConditionLabel: '조인 성문 방어선 격파',
defeatConditionLabel: '유비 또는 관우 퇴각',
openingObjectiveLines: [
'한수 수공으로 칠군은 무너졌지만 번성 성문은 아직 버티고 있습니다. 외성 보루와 수문을 끊어 조인의 방어선을 흔드십시오.',
'관우는 성문 압박의 핵심입니다. 관우가 무너지면 번성 포위의 명분과 형주 전선의 사기가 함께 꺾입니다.',
'방덕의 결사 기병은 정면 돌파를 노리고, 강동 정찰대는 뒤의 나루를 살핍니다. 성벽 압박과 후방 경계를 함께 맡을 무장을 고르십시오.'
],
map: fortyFirstBattleMap,
units: fortyFirstBattleUnits,
bonds: fortyFirstBattleBonds,
mapTextureKey: 'battle-map-forty-first',
leaderUnitId: 'fan-siege-leader-cao-ren',
quickVictoryTurnLimit: 66,
baseVictoryGold: 8240,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '조인 성문 방어선 격파',
rewardGold: 5320,
unitId: 'fan-siege-leader-cao-ren'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1280,
unitId: 'liu-bei'
},
{
id: 'guan-yu',
kind: 'keep-unit-alive',
label: '관우 생존',
rewardGold: 2020,
unitId: 'guan-yu'
},
{
id: 'outer-wall',
kind: 'secure-terrain',
label: '번성 외성 보루 확보',
rewardGold: 2560,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '66턴 이내 승리',
rewardGold: 1880,
maxTurn: 66
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'guan-yu' }
],
itemRewards: ['콩 38', '상처약 28', '탁주 12', '번성 성문도 1', '방덕 결사문 1'],
victoryPages: fortyFirstBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortySecondBattleScenario: BattleScenarioDefinition = {
id: 'forty-second-battle-jing-rear-crisis',
title: '강릉 나루 경계전',
victoryConditionLabel: '여몽 정찰대 격퇴',
defeatConditionLabel: '유비 또는 관우 퇴각',
openingObjectiveLines: [
'번성의 성문은 흔들렸지만 강릉 나루에는 강동의 작은 배가 늘었습니다. 상선으로 위장한 정찰대를 몰아내 후방의 창고를 지키십시오.',
'관우가 번성 전선과 형주 후방을 함께 붙잡아야 합니다. 관우가 쓰러지면 전선의 승세와 후방의 민심이 동시에 흔들립니다.',
'여몽은 정찰대를 깊숙이 보내고, 육손은 부드러운 말로 빈틈을 살핍니다. 마량과 미축 같은 후방 담당을 데려가면 균열을 읽고 창고를 지키기 쉽습니다.'
],
map: fortySecondBattleMap,
units: fortySecondBattleUnits,
bonds: fortySecondBattleBonds,
mapTextureKey: 'battle-map-forty-second',
leaderUnitId: 'jing-rear-leader-lu-meng',
quickVictoryTurnLimit: 68,
baseVictoryGold: 8520,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '여몽 정찰대 격퇴',
rewardGold: 5560,
unitId: 'jing-rear-leader-lu-meng'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1320,
unitId: 'liu-bei'
},
{
id: 'guan-yu',
kind: 'keep-unit-alive',
label: '관우 생존',
rewardGold: 2080,
unitId: 'guan-yu'
},
{
id: 'warehouse',
kind: 'secure-terrain',
label: '강릉 창고 확보',
rewardGold: 2680,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '68턴 이내 승리',
rewardGold: 1960,
maxTurn: 68
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'guan-yu' }
],
itemRewards: ['콩 40', '상처약 30', '탁주 12', '강동 정찰 기록 1', '강릉 창고 장부 1'],
victoryPages: fortySecondBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortyThirdBattleScenario: BattleScenarioDefinition = {
id: 'forty-third-battle-gongan-collapse',
title: '공안 성문 변고',
victoryConditionLabel: '여몽 본대 저지',
defeatConditionLabel: '유비 또는 관우 퇴각',
openingObjectiveLines: [
'강릉 나루의 정찰대는 물러났지만 공안 성문에는 더 큰 균열이 생겼습니다. 강동 본대가 성문 안쪽의 흔들림을 이용하기 전에 여몽을 저지하십시오.',
'부사인과 미방의 병사들은 아직 완전히 돌아서지 않았습니다. 성문과 창고를 지키면 후방의 신뢰를 조금이라도 붙들 수 있습니다.',
'마량, 미축, 황권, 왕평 같은 후방 수습 담당을 데려가면 장부와 지형, 성문 병사들의 흔들림을 읽기 좋습니다.'
],
map: fortyThirdBattleMap,
units: fortyThirdBattleUnits,
bonds: fortyThirdBattleBonds,
mapTextureKey: 'battle-map-forty-third',
leaderUnitId: 'jing-collapse-leader-lu-meng',
quickVictoryTurnLimit: 70,
baseVictoryGold: 8920,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '여몽 본대 저지',
rewardGold: 5840,
unitId: 'jing-collapse-leader-lu-meng'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1380,
unitId: 'liu-bei'
},
{
id: 'guan-yu',
kind: 'keep-unit-alive',
label: '관우 생존',
rewardGold: 2160,
unitId: 'guan-yu'
},
{
id: 'gongan-gate',
kind: 'secure-terrain',
label: '공안 성문 확보',
rewardGold: 2820,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '70턴 이내 승리',
rewardGold: 2040,
maxTurn: 70
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'guan-yu' }
],
itemRewards: ['콩 42', '상처약 32', '탁주 13', '공안 성문 기록 1', '부사인 군령서 1'],
victoryPages: fortyThirdBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortyFourthBattleScenario: BattleScenarioDefinition = {
id: 'forty-fourth-battle-maicheng-isolation',
title: '맥성 고립전',
victoryConditionLabel: '맥성 포위망 돌파',
defeatConditionLabel: '유비 또는 관우 퇴각',
openingObjectiveLines: [
'공안 성문을 잠시 붙들었지만 후방 소식은 끊겼습니다. 맥성 북문으로 빠지는 좁은 길을 열어 관우 전선의 잔병을 수습하십시오.',
'강동군은 숲길과 갈대 물목을 막고, 위군 추격대는 북쪽 길을 압박합니다. 포위망의 한쪽만 밀어서는 길이 다시 닫힙니다.',
'왕평, 조운, 마대, 황충처럼 지형 판단과 기동, 고지 견제에 강한 장수를 데려가면 맥성의 좁은 퇴로를 지키기 좋습니다.'
],
map: fortyFourthBattleMap,
units: fortyFourthBattleUnits,
bonds: fortyFourthBattleBonds,
mapTextureKey: 'battle-map-forty-fourth',
leaderUnitId: 'maicheng-leader-lu-meng',
quickVictoryTurnLimit: 72,
baseVictoryGold: 9280,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '여몽 봉쇄선 돌파',
rewardGold: 6120,
unitId: 'maicheng-leader-lu-meng'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1440,
unitId: 'liu-bei'
},
{
id: 'guan-yu',
kind: 'keep-unit-alive',
label: '관우 생존',
rewardGold: 2260,
unitId: 'guan-yu'
},
{
id: 'maicheng-gate',
kind: 'secure-terrain',
label: '맥성 북문 확보',
rewardGold: 2960,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '72턴 이내 승리',
rewardGold: 2120,
maxTurn: 72
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'guan-yu' }
],
itemRewards: ['콩 44', '상처약 34', '탁주 14', '맥성 북문 지도 1', '갈대 물목 표식 1'],
victoryPages: fortyFourthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortyFifthBattleScenario: BattleScenarioDefinition = {
id: 'forty-fifth-battle-yiling-vanguard',
title: '이릉 진격로',
victoryConditionLabel: '육손 전초선 격파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'형주 상실의 비보가 촉한 군영을 뒤흔들었습니다. 유비는 오군을 향해 동진하며 이릉으로 향하는 첫 길을 열고자 합니다.',
'오군은 정면 결전을 피하고 숲길, 강변, 나루에 전초선을 깔았습니다. 길게 늘어선 진영이 끊기지 않게 강변 보급로를 확보하십시오.',
'장비, 조운, 마초처럼 돌파와 기동에 강한 장수로 선봉을 밀고, 제갈량과 황권처럼 보급과 화계를 읽는 참모를 곁에 두면 안정적입니다.'
],
map: fortyFifthBattleMap,
units: fortyFifthBattleUnits,
bonds: fortyFifthBattleBonds,
mapTextureKey: 'battle-map-forty-fifth',
leaderUnitId: 'yiling-leader-lu-xun',
quickVictoryTurnLimit: 74,
baseVictoryGold: 9560,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '육손 전초선 격파',
rewardGold: 6360,
unitId: 'yiling-leader-lu-xun'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1600,
unitId: 'liu-bei'
},
{
id: 'river-camp',
kind: 'secure-terrain',
label: '강변 진영 확보',
rewardGold: 3120,
terrain: 'camp'
},
{
id: 'yiling-road',
kind: 'secure-terrain',
label: '동진로 보급점 확보',
rewardGold: 2480,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '74턴 이내 승리',
rewardGold: 2200,
maxTurn: 74
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 46', '상처약 36', '탁주 15', '이릉 동진 지도 1', '강변 진영 말뚝 1'],
victoryPages: fortyFifthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortySixthBattleScenario: BattleScenarioDefinition = {
id: 'forty-sixth-battle-yiling-fire',
title: '이릉 화공전',
victoryConditionLabel: '오군 화공망 돌파',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'육손은 긴 촉한 진영이 마른 숲과 강변 군막 사이로 늘어진 순간을 기다렸습니다. 오군의 화공이 시작되며 진영 곳곳이 끊어집니다.',
'불타는 군막을 모두 지키려 하기보다, 서쪽 협곡과 강변 물길을 열어 병사를 모아야 합니다. 마을과 군막 지점을 확보하면 퇴로가 안정됩니다.',
'황권과 제갈량은 화공의 번짐을 읽고, 조운과 왕평은 흩어진 길을 찾습니다. 누가 퇴로를 맡고 누가 불길을 뚫을지 출진 편성에서 결정하십시오.'
],
map: fortySixthBattleMap,
units: fortySixthBattleUnits,
bonds: fortySixthBattleBonds,
mapTextureKey: 'battle-map-forty-sixth',
leaderUnitId: 'yiling-fire-leader-lu-xun',
quickVictoryTurnLimit: 76,
baseVictoryGold: 9840,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '육손 화공 지휘선 돌파',
rewardGold: 6600,
unitId: 'yiling-fire-leader-lu-xun'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 1700,
unitId: 'liu-bei'
},
{
id: 'fire-camps',
kind: 'secure-terrain',
label: '불타는 군막 수습',
rewardGold: 3300,
terrain: 'camp'
},
{
id: 'retreat-road',
kind: 'secure-terrain',
label: '서쪽 퇴로 확보',
rewardGold: 2600,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '76턴 이내 돌파',
rewardGold: 2280,
maxTurn: 76
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 48', '상처약 38', '탁주 16', '화공 방화선 표식 1', '백제성 퇴로 지도 1'],
victoryPages: fortySixthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortySeventhBattleScenario: BattleScenarioDefinition = {
id: 'forty-seventh-battle-nanzhong-stabilization',
title: '남중 안정로',
victoryConditionLabel: '남중 반란 지휘선 진정',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'백제성의 유탁 뒤 촉한은 제갈량을 중심으로 다시 숨을 고르려 합니다. 그러나 남중의 반란군은 그 틈을 타 성도 남쪽 길과 창고를 흔듭니다.',
'옹개의 지휘선을 흩뜨리되 마을과 창고를 함부로 불태우지 마십시오. 남중 평정은 적을 모두 쓰러뜨리는 싸움이 아니라, 돌아설 마음을 남겨 두는 싸움입니다.',
'제갈량은 반드시 생존해야 합니다. 조운과 왕평으로 산길을 열고, 마량과 황권으로 마을과 보급을 안정시키면 다음 남만 본전의 발판이 생깁니다.'
],
map: fortySeventhBattleMap,
units: fortySeventhBattleUnits,
bonds: fortySeventhBattleBonds,
mapTextureKey: 'battle-map-forty-seventh',
leaderUnitId: 'nanzhong-leader-yong-kai',
quickVictoryTurnLimit: 78,
baseVictoryGold: 10120,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '옹개 지휘선 진정',
rewardGold: 6840,
unitId: 'nanzhong-leader-yong-kai'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 1860,
unitId: 'zhuge-liang'
},
{
id: 'villages',
kind: 'secure-terrain',
label: '남중 마을 안정',
rewardGold: 3420,
terrain: 'village'
},
{
id: 'supply-camps',
kind: 'secure-terrain',
label: '남쪽 창고 확보',
rewardGold: 2720,
terrain: 'camp'
},
{
id: 'quick',
kind: 'quick-victory',
label: '78턴 이내 안정',
rewardGold: 2360,
maxTurn: 78
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 42', '상처약 30', '탁주 13', '남중 산길 지도 1', '마을 회유 문서 1'],
victoryPages: fortySeventhBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortyEighthBattleScenario: BattleScenarioDefinition = {
id: 'forty-eighth-battle-meng-huo-main-force',
title: '맹획 본대전',
victoryConditionLabel: '맹획 본대 제압과 회유',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'남중의 첫 길은 열렸지만 맹획은 더 깊은 숲에서 호족과 맹수 기병을 모았습니다. 오늘의 승리는 적장을 베는 것이 아니라 생포해 돌려보낼 명분을 만드는 데 있습니다.',
'마을, 포로 수용소, 산채 창고를 함부로 불태우지 마십시오. 회유할 사람과 끝까지 싸울 사람을 구분해야 남중이 다시 반란으로 돌아가지 않습니다.',
'제갈량은 반드시 생존해야 합니다. 조운과 마초로 돌격을 막고, 왕평과 황권으로 포로와 산길을 정리하며, 마량으로 마을의 말을 붙잡으십시오.'
],
map: fortyEighthBattleMap,
units: fortyEighthBattleUnits,
bonds: fortyEighthBattleBonds,
mapTextureKey: 'battle-map-forty-eighth',
leaderUnitId: 'menghuo-leader',
quickVictoryTurnLimit: 82,
baseVictoryGold: 10580,
objectives: [
{
id: 'pacify-meng-huo',
kind: 'pacify-leader',
label: '맹획 생포와 회유',
rewardGold: 7200,
unitId: 'menghuo-leader'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 1900,
unitId: 'zhuge-liang'
},
{
id: 'amnesty-villages',
kind: 'secure-terrain',
label: '회유 마을 보호',
rewardGold: 3580,
terrain: 'village'
},
{
id: 'captive-camps',
kind: 'secure-terrain',
label: '포로 수용소 확보',
rewardGold: 2860,
terrain: 'camp'
},
{
id: 'quick',
kind: 'quick-victory',
label: '82턴 이내 생포',
rewardGold: 2440,
maxTurn: 82
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 44', '상처약 32', '탁주 14', '맹획 회유 서신 1', '남중 포로 명부 1'],
victoryPages: fortyEighthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fortyNinthBattleScenario: BattleScenarioDefinition = {
id: 'forty-ninth-battle-meng-huo-second-capture',
title: '칠종칠금 2차전',
victoryConditionLabel: '맹획 재생포와 마을 회유',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'맹획은 한 번 풀려났지만 곧바로 다시 산채를 모았습니다. 이번 싸움의 목적도 참수가 아니라 두 번째 생포와 더 넓은 회유 명분입니다.',
'강가 늪지와 산채 길목에 매복이 많습니다. 포로장과 마을을 지키면 맹획을 돌려보낸 뒤에도 남중 사람들이 촉한군의 군율을 기억할 것입니다.',
'제갈량은 반드시 생존해야 합니다. 왕평으로 산길을 읽고, 황권으로 포로 장부를 지키며, 조운과 황충으로 맹수 돌격과 고지 궁병을 동시에 억제하십시오.'
],
map: fortyNinthBattleMap,
units: fortyNinthBattleUnits,
bonds: fortyNinthBattleBonds,
mapTextureKey: 'battle-map-forty-ninth',
leaderUnitId: 'menghuo-second-leader',
quickVictoryTurnLimit: 86,
baseVictoryGold: 11140,
objectives: [
{
id: 'pacify-meng-huo-second',
kind: 'pacify-leader',
label: '맹획 두 번째 생포',
rewardGold: 7600,
unitId: 'menghuo-second-leader'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 1980,
unitId: 'zhuge-liang'
},
{
id: 'amnesty-villages',
kind: 'secure-terrain',
label: '회유 마을 유지',
rewardGold: 3740,
terrain: 'village'
},
{
id: 'captive-camps',
kind: 'secure-terrain',
label: '포로장 군율 유지',
rewardGold: 3020,
terrain: 'camp'
},
{
id: 'quick',
kind: 'quick-victory',
label: '86턴 이내 재생포',
rewardGold: 2520,
maxTurn: 86
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 46', '상처약 34', '탁주 15', '칠종칠금 회유문 1', '포로 안심 장부 1'],
victoryPages: fortyNinthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftiethBattleScenario: BattleScenarioDefinition = {
id: 'fiftieth-battle-meng-huo-third-capture',
title: '칠종칠금 3차전',
victoryConditionLabel: '맹획 세 번째 생포와 호족 회유',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'맹획이 세 번째로 군세를 모으자 남중 호족들의 마음이 갈라지고 있습니다. 이번 승리는 적장을 잡는 동시에, 지켜본 호족들이 촉한군의 질서를 인정하게 만드는 싸움입니다.',
'산채와 마을, 포로장을 함부로 짓밟지 마십시오. 회유를 받아들일 호족에게는 길을 남기고, 끝까지 선동하는 자만 생포망 안으로 몰아야 합니다.',
'제갈량은 반드시 생존해야 합니다. 마량으로 호족의 말을 붙잡고, 황권과 왕평으로 장부와 길목을 지키며, 조운과 마초로 맹수 돌파를 봉쇄하십시오.'
],
map: fiftiethBattleMap,
units: fiftiethBattleUnits,
bonds: fiftiethBattleBonds,
mapTextureKey: 'battle-map-fiftieth',
leaderUnitId: 'menghuo-third-leader',
quickVictoryTurnLimit: 90,
baseVictoryGold: 11720,
objectives: [
{
id: 'pacify-meng-huo-third',
kind: 'pacify-leader',
label: '맹획 세 번째 생포',
rewardGold: 8000,
unitId: 'menghuo-third-leader'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2060,
unitId: 'zhuge-liang'
},
{
id: 'clan-villages',
kind: 'secure-terrain',
label: '호족 마을 보호',
rewardGold: 3920,
terrain: 'village'
},
{
id: 'captive-camps',
kind: 'secure-terrain',
label: '포로장 신뢰 유지',
rewardGold: 3180,
terrain: 'camp'
},
{
id: 'quick',
kind: 'quick-victory',
label: '90턴 이내 세 번째 생포',
rewardGold: 2600,
maxTurn: 90
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 42', '상처약 30', '탁주 14', '남중 호족 설득문 1', '세 번째 회유 장부 1'],
victoryPages: fiftiethBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftyFirstBattleScenario: BattleScenarioDefinition = {
id: 'fifty-first-battle-meng-huo-fourth-capture',
title: '칠종칠금 4차전',
victoryConditionLabel: '맹획 네 번째 생포와 회유 퇴로 유지',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'세 번째 생포 뒤 호족 회의에서 열어 둔 퇴로가 이번 전장의 핵심입니다. 물러설 뜻이 있는 호족을 몰살하면 남중은 다시 모두 적이 됩니다.',
'오돌골의 등갑병과 독천 제사장들이 화덕 주변을 지키고 있습니다. 화덕 요새를 제압하되 마을과 포로장을 지켜, 촉한군의 약속이 전투 중에도 지켜진다는 것을 보여야 합니다.',
'제갈량은 반드시 생존해야 합니다. 마량으로 호족 문서를 전하고, 황권과 왕평으로 장부와 퇴로를 지키며, 마초와 마대로 추격선을 조절하십시오.'
],
map: fiftyFirstBattleMap,
units: fiftyFirstBattleUnits,
bonds: fiftyFirstBattleBonds,
mapTextureKey: 'battle-map-fifty-first',
leaderUnitId: 'menghuo-fourth-leader',
quickVictoryTurnLimit: 24,
baseVictoryGold: 12280,
objectives: [
{
id: 'pacify-meng-huo-fourth',
kind: 'pacify-leader',
label: '맹획 네 번째 생포',
rewardGold: 8420,
unitId: 'menghuo-fourth-leader'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2140,
unitId: 'zhuge-liang'
},
{
id: 'amnesty-route',
kind: 'secure-terrain',
label: '회유 퇴로 유지',
rewardGold: 4140,
terrain: 'road'
},
{
id: 'captive-camps',
kind: 'secure-terrain',
label: '포로장 보증 유지',
rewardGold: 3360,
terrain: 'camp'
},
{
id: 'fire-forts',
kind: 'secure-terrain',
label: '화덕 요새 제압',
rewardGold: 3640,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '24턴 이내 네 번째 생포',
rewardGold: 2780,
maxTurn: 24
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 34', '상처약 24', '탁주 12', '호족 보증 장부 1', '회유 퇴로 표식 1'],
victoryPages: fiftyFirstBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftySecondBattleScenario: BattleScenarioDefinition = {
id: 'fifty-second-battle-meng-huo-fifth-capture',
title: '칠종칠금 5차전',
victoryConditionLabel: '맹획 다섯 번째 생포와 강경파 분리',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'강경파 호족이 회유 퇴로를 배신이라 부르며 길목을 막고 있습니다. 맹획을 다시 생포하되, 물러설 뜻이 있는 호족이 본대와 갈라질 길을 지켜야 합니다.',
'마을 보증과 포로장 장부가 흔들리면 지난 네 번의 회유도 약해집니다. 강경파 요새를 누르고, 마을과 포로장을 지켜 남중 안의 의심을 끊으십시오.',
'제갈량은 반드시 생존해야 합니다. 마량과 황권으로 말을 남기고, 왕평과 마대로 퇴로를 열며, 조운과 황충으로 추격선을 억제하십시오.'
],
map: fiftySecondBattleMap,
units: fiftySecondBattleUnits,
bonds: fiftySecondBattleBonds,
mapTextureKey: 'battle-map-fifty-second',
leaderUnitId: 'menghuo-fifth-leader',
quickVictoryTurnLimit: 26,
baseVictoryGold: 12940,
objectives: [
{
id: 'pacify-meng-huo-fifth',
kind: 'pacify-leader',
label: '맹획 다섯 번째 생포',
rewardGold: 8780,
unitId: 'menghuo-fifth-leader'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2220,
unitId: 'zhuge-liang'
},
{
id: 'hardliner-separation',
kind: 'secure-terrain',
label: '강경파 분리로 확보',
rewardGold: 4380,
terrain: 'road'
},
{
id: 'clan-villages',
kind: 'secure-terrain',
label: '회유 마을 보호',
rewardGold: 4040,
terrain: 'village'
},
{
id: 'hardliner-forts',
kind: 'secure-terrain',
label: '강경파 요새 제압',
rewardGold: 3860,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '26턴 이내 다섯 번째 생포',
rewardGold: 2920,
maxTurn: 26
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 36', '상처약 26', '탁주 13', '강경파 분리 장부 1', '남중 회유 깃발 1'],
victoryPages: fiftySecondBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftyThirdBattleScenario: BattleScenarioDefinition = {
id: 'fifty-third-battle-meng-huo-sixth-capture',
title: '칠종칠금 6차전',
victoryConditionLabel: '맹획 여섯 번째 생포와 마을 신뢰 유지',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'맹획은 남은 자존심을 내세워 깊은 계곡의 부족들을 다시 불러 모았습니다. 이번 전투는 적 본영을 누르면서도 마을 신뢰를 깨뜨리지 않는 것이 핵심입니다.',
'강경파 잔당은 신뢰 장부와 계곡 퇴로를 동시에 흔들려 합니다. 마을, 길목, 요새를 함께 지키면 마지막 설득으로 이어질 근거가 생깁니다.',
'제갈량은 반드시 생존해야 합니다. 마량과 황권으로 말과 장부를 남기고, 왕평과 마대로 계곡 길을 지키며, 조운과 위연으로 잔당 추격을 끊으십시오.'
],
map: fiftyThirdBattleMap,
units: fiftyThirdBattleUnits,
bonds: fiftyThirdBattleBonds,
mapTextureKey: 'battle-map-fifty-third',
leaderUnitId: 'menghuo-sixth-leader',
quickVictoryTurnLimit: 28,
baseVictoryGold: 13620,
objectives: [
{
id: 'pacify-meng-huo-sixth',
kind: 'pacify-leader',
label: '맹획 여섯 번째 생포',
rewardGold: 9180,
unitId: 'menghuo-sixth-leader'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2320,
unitId: 'zhuge-liang'
},
{
id: 'trust-road',
kind: 'secure-terrain',
label: '신뢰 퇴로 확보',
rewardGold: 4560,
terrain: 'road'
},
{
id: 'village-trust',
kind: 'secure-terrain',
label: '마을 신뢰 유지',
rewardGold: 4240,
terrain: 'village'
},
{
id: 'hardliner-remnants',
kind: 'secure-terrain',
label: '강경파 잔당 요새 제압',
rewardGold: 4040,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '28턴 이내 여섯 번째 생포',
rewardGold: 3060,
maxTurn: 28
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 38', '상처약 28', '탁주 14', '남중 신뢰 장부 1', '계곡 회유 표식 1'],
victoryPages: fiftyThirdBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftyFourthBattleScenario: BattleScenarioDefinition = {
id: 'fifty-fourth-battle-meng-huo-final-capture',
title: '칠종칠금 7차전',
victoryConditionLabel: '맹획 마지막 생포와 남중 회의장 보호',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'맹획은 일곱 번째이자 마지막 대결을 남중의 촌장들이 보는 앞에서 열었습니다. 이번 전투는 승리뿐 아니라 군율과 약속을 증명하는 자리입니다.',
'회의장과 마을, 항복로가 무너지면 맹획을 잡아도 남중의 마음은 닫힙니다. 잔당 요새를 누르고, 물러설 자의 길과 촌장들의 증언을 지키십시오.',
'제갈량은 반드시 생존해야 합니다. 황권은 약속 장부를, 마량과 왕평은 회의장과 마을길을, 조운과 마대는 항복로 차단선을 맡기 좋습니다.'
],
map: fiftyFourthBattleMap,
units: fiftyFourthBattleUnits,
bonds: fiftyFourthBattleBonds,
mapTextureKey: 'battle-map-fifty-fourth',
leaderUnitId: 'menghuo-final-leader',
quickVictoryTurnLimit: 30,
baseVictoryGold: 14360,
objectives: [
{
id: 'pacify-meng-huo-final',
kind: 'pacify-leader',
label: '맹획 일곱 번째 생포',
rewardGold: 9640,
unitId: 'menghuo-final-leader'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2420,
unitId: 'zhuge-liang'
},
{
id: 'council-road',
kind: 'secure-terrain',
label: '항복 회의장 길 확보',
rewardGold: 4820,
terrain: 'road'
},
{
id: 'village-witnesses',
kind: 'secure-terrain',
label: '촌장 증언 마을 보호',
rewardGold: 4480,
terrain: 'village'
},
{
id: 'final-remnant-forts',
kind: 'secure-terrain',
label: '최후 잔당 요새 제압',
rewardGold: 4260,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '30턴 이내 마지막 생포',
rewardGold: 3220,
maxTurn: 30
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 42', '상처약 30', '탁주 15', '남중 평정 장부 1', '맹획 항복 서약 1'],
victoryPages: fiftyFourthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftyFifthBattleScenario: BattleScenarioDefinition = {
id: 'fifty-fifth-battle-northern-qishan-road',
title: '제1차 북벌 출진로',
victoryConditionLabel: '기산 산길 돌파와 한중 보급로 확보',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'남중 평정 이후 처음으로 촉한의 군세가 북쪽을 향합니다. 조진의 전초 부대가 기산으로 향하는 길목과 마을, 보급 거점을 누르고 있으니 먼저 산길을 뚫어야 합니다.',
'이번 전투는 유비공이 아니라 제갈량이 직접 지휘하는 북벌의 첫 실전입니다. 출전 무장을 고를 때 기동, 보급, 산길 수비, 원거리 견제를 함께 고려해야 합니다.',
'조진을 물러나게 하고 기산 산길과 한중 보급 캠프, 서쪽 마을을 확보하십시오. 촉한의 북벌은 여기서부터 긴 전선으로 이어집니다.'
],
map: fiftyFifthBattleMap,
units: fiftyFifthBattleUnits,
bonds: fiftyFifthBattleBonds,
mapTextureKey: 'battle-map-fifty-fifth',
leaderUnitId: 'northern-first-leader-cao-zhen',
quickVictoryTurnLimit: 90,
baseVictoryGold: 14920,
objectives: [
{
id: 'repel-cao-zhen',
kind: 'defeat-leader',
label: '조진 전초대 격퇴',
rewardGold: 9980,
unitId: 'northern-first-leader-cao-zhen'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2600,
unitId: 'zhuge-liang'
},
{
id: 'qishan-road',
kind: 'secure-terrain',
label: '기산 산길 확보',
rewardGold: 5100,
terrain: 'road'
},
{
id: 'hanzhong-supply-camp',
kind: 'secure-terrain',
label: '한중 보급 거점 유지',
rewardGold: 4860,
terrain: 'camp'
},
{
id: 'western-villages',
kind: 'secure-terrain',
label: '서쪽 마을 안정',
rewardGold: 4520,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '90턴 이내 출진로 확보',
rewardGold: 3360,
maxTurn: 90
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 60', '상처약 44', '탁주 22', '기산 출진 장부 1', '한중 보급 표식 1'],
victoryPages: fiftyFifthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftySixthBattleScenario: BattleScenarioDefinition = {
id: 'fifty-sixth-battle-tianshui-advance',
title: '천수 진군로',
victoryConditionLabel: '천수 길목 돌파와 곽회 방어선 격퇴',
defeatConditionLabel: '제갈량 퇴각',
openingObjectiveLines: [
'기산 출진로를 열었지만 위군은 천수와 가정 사이에 새 방어선을 폈습니다. 곽회가 본영을 잡고, 강유라는 젊은 장수가 산길의 허점을 살피고 있습니다.',
'이번 전투는 적장을 베는 것만으로 끝나지 않습니다. 천수 길목, 물길, 마을, 가정으로 이어지는 고개를 함께 보아야 북벌이 끊기지 않습니다.',
'곽회를 물러나게 하고 강유의 움직임을 확인하십시오. 다음 전선에서 그 이름이 촉한에 어떤 의미가 될지 여기서 처음 드러납니다.'
],
map: fiftySixthBattleMap,
units: fiftySixthBattleUnits,
bonds: fiftySixthBattleBonds,
mapTextureKey: 'battle-map-fifty-sixth',
leaderUnitId: 'northern-second-leader-guo-huai',
quickVictoryTurnLimit: 112,
baseVictoryGold: 15480,
objectives: [
{
id: 'repel-guo-huai',
kind: 'defeat-leader',
label: '곽회 방어선 격퇴',
rewardGold: 10380,
unitId: 'northern-second-leader-guo-huai'
},
{
id: 'test-jiang-wei',
kind: 'defeat-leader',
label: '강유의 전술 확인',
rewardGold: 4800,
unitId: 'northern-second-officer-jiang-wei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2720,
unitId: 'zhuge-liang'
},
{
id: 'tianshui-road',
kind: 'secure-terrain',
label: '천수 진군로 확보',
rewardGold: 5400,
terrain: 'road'
},
{
id: 'jieting-forts',
kind: 'secure-terrain',
label: '가정 고개 요새 압박',
rewardGold: 5060,
terrain: 'fort'
},
{
id: 'waterline-villages',
kind: 'secure-terrain',
label: '물길 마을 안정',
rewardGold: 4740,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '112턴 이내 천수로 확보',
rewardGold: 3480,
maxTurn: 112
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 62', '상처약 46', '탁주 23', '천수 진군 장부 1', '가정 지형 표식 1'],
victoryPages: fiftySixthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftySeventhBattleScenario: BattleScenarioDefinition = {
id: 'fifty-seventh-battle-jieting-crisis',
title: '가정 배치 위기',
victoryConditionLabel: '가정 고지와 물길 확보 및 장합 선봉 저지',
defeatConditionLabel: '제갈량 또는 왕평 퇴각',
openingObjectiveLines: [
'천수 방면에서 길을 열었지만 가정의 배치가 흔들리면 북벌군의 퇴로와 군량이 동시에 끊깁니다.',
'마속은 높은 곳을 주장하고, 왕평은 물길과 수레 길을 먼저 보아야 한다고 말합니다. 이번 전투는 고지를 차지하는 것보다 버틸 수 있는 진영을 만드는 일이 더 중요합니다.',
'장합의 선봉을 막고 물길을 확보하십시오. 강유에게 남긴 길도 여기서 시험받습니다.'
],
map: fiftySeventhBattleMap,
units: fiftySeventhBattleUnits,
bonds: fiftySeventhBattleBonds,
mapTextureKey: 'battle-map-fifty-seventh',
leaderUnitId: 'northern-third-leader-zhang-he',
quickVictoryTurnLimit: 114,
baseVictoryGold: 16140,
objectives: [
{
id: 'repel-zhang-he',
kind: 'defeat-leader',
label: '장합 선봉 저지',
rewardGold: 10840,
unitId: 'northern-third-leader-zhang-he'
},
{
id: 'contact-jiang-wei',
kind: 'defeat-leader',
label: '강유 접촉로 확보',
rewardGold: 5200,
unitId: 'northern-third-officer-jiang-wei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2840,
unitId: 'zhuge-liang'
},
{
id: 'wang-ping',
kind: 'keep-unit-alive',
label: '왕평 생존',
rewardGold: 2860,
unitId: 'wang-ping'
},
{
id: 'jieting-waterline',
kind: 'secure-terrain',
label: '가정 물길 확보',
rewardGold: 5600,
terrain: 'river'
},
{
id: 'ridge-camps',
kind: 'secure-terrain',
label: '고지 아래 진영 유지',
rewardGold: 5360,
terrain: 'camp'
},
{
id: 'ridge-forts',
kind: 'secure-terrain',
label: '가정 고지 압박',
rewardGold: 5240,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '114턴 이내 가정 수습',
rewardGold: 3600,
maxTurn: 114
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'zhuge-liang' },
{ kind: 'unit-defeated', unitId: 'wang-ping' }
],
itemRewards: ['콩 64', '상처약 48', '탁주 24', '가정 물길 장부 1', '강유 합류'],
victoryPages: fiftySeventhBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftyEighthBattleScenario: BattleScenarioDefinition = {
id: 'fifty-eighth-battle-qishan-retreat',
title: '기산 후퇴로',
victoryConditionLabel: '기산 퇴로와 군량 수레 확보 및 사마의 본대 저지',
defeatConditionLabel: '제갈량 퇴각 또는 군량 퇴로 상실',
openingObjectiveLines: [
'가정의 위기는 넘겼지만 북벌군의 보급선은 이미 길게 늘어졌습니다. 무리한 추격보다 기산으로 돌아가는 군량 수레 길을 먼저 열어 병사를 살려야 합니다.',
'강유가 촉한의 장수로 처음 출전 후보에 들어왔습니다. 천수의 낮은 길을 아는 강유, 물길을 보는 왕평, 회수 기동의 조운과 마대 중 누구에게 자리를 줄지 결정하십시오.',
'장합의 빠른 추격을 끊고 사마의의 본대를 저지하십시오. 물길과 수레 길, 후방 진영을 함께 확보하면 다음 북벌을 준비할 병력과 장부를 지킬 수 있습니다.'
],
map: fiftyEighthBattleMap,
units: fiftyEighthBattleUnits,
bonds: fiftyEighthBattleBonds,
mapTextureKey: 'battle-map-fifty-eighth',
leaderUnitId: 'northern-fourth-leader-sima-yi',
quickVictoryTurnLimit: 116,
baseVictoryGold: 16680,
objectives: [
{
id: 'repel-sima-yi',
kind: 'defeat-leader',
label: '사마의 본대 저지',
rewardGold: 11400,
unitId: 'northern-fourth-leader-sima-yi'
},
{
id: 'halt-zhang-he',
kind: 'defeat-leader',
label: '장합 추격 차단',
rewardGold: 5600,
unitId: 'northern-fourth-officer-zhang-he'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 2980,
unitId: 'zhuge-liang'
},
{
id: 'qishan-cart-road',
kind: 'secure-terrain',
label: '기산 군량 수레 길 확보',
rewardGold: 5900,
terrain: 'road'
},
{
id: 'qishan-waterline',
kind: 'secure-terrain',
label: '퇴각 물길 확보',
rewardGold: 5780,
terrain: 'river'
},
{
id: 'rear-camps',
kind: 'secure-terrain',
label: '후방 진영 수습',
rewardGold: 5480,
terrain: 'camp'
},
{
id: 'ridge-forts',
kind: 'secure-terrain',
label: '위군 능선 거점 제압',
rewardGold: 5320,
terrain: 'fort'
},
{
id: 'quick',
kind: 'quick-victory',
label: '116턴 이내 기산 후퇴 완료',
rewardGold: 3720,
maxTurn: 116
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 66', '상처약 50', '탁주 25', '기산 퇴각 지도 1', '강유 첫 출전 기록 1'],
victoryPages: fiftyEighthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const fiftyNinthBattleScenario: BattleScenarioDefinition = {
id: 'fifty-ninth-battle-chencang-siege',
title: '진창 공성전',
victoryConditionLabel: '학소 진창 수비 압박과 왕쌍 추격 차단',
defeatConditionLabel: '제갈량 퇴각 또는 공성 진영 붕괴',
openingObjectiveLines: [
'기산에서 후퇴한 뒤 촉한군은 병사와 장부를 다시 묶어 진창 성채를 압박합니다. 학소가 성벽을 굳게 지키고 있어 성문 하나만 바라보는 공격은 오래 버티지 못합니다.',
'강유는 길을 알고, 왕평은 진영 표식을 보며, 위연은 돌파를 원합니다. 여기에 황권과 마량, 법정의 장부와 계책을 어떻게 넣을지에 따라 공성전의 무게가 달라집니다.',
'학소의 수비를 흔들고 왕쌍의 추격을 차단하십시오. 공성 진영과 군량 수레 길을 함께 지키면 다음 북방 계산으로 이어갈 수 있습니다.'
],
map: fiftyNinthBattleMap,
units: fiftyNinthBattleUnits,
bonds: fiftyNinthBattleBonds,
mapTextureKey: 'battle-map-fifty-ninth',
leaderUnitId: 'northern-fifth-leader-hao-zhao',
quickVictoryTurnLimit: 118,
baseVictoryGold: 17280,
objectives: [
{
id: 'pressure-hao-zhao',
kind: 'defeat-leader',
label: '학소 진창 수비 압박',
rewardGold: 12040,
unitId: 'northern-fifth-leader-hao-zhao'
},
{
id: 'halt-wang-shuang',
kind: 'defeat-leader',
label: '왕쌍 추격 차단',
rewardGold: 6000,
unitId: 'northern-fifth-officer-wang-shuang'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 3100,
unitId: 'zhuge-liang'
},
{
id: 'chencang-gate',
kind: 'secure-terrain',
label: '진창 성문 압박',
rewardGold: 6200,
terrain: 'fort'
},
{
id: 'siege-camps',
kind: 'secure-terrain',
label: '공성 진영 유지',
rewardGold: 5940,
terrain: 'camp'
},
{
id: 'grain-road',
kind: 'secure-terrain',
label: '군량 수레 길 확보',
rewardGold: 5820,
terrain: 'road'
},
{
id: 'rear-villages',
kind: 'secure-terrain',
label: '후방 마을 안정',
rewardGold: 5480,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '118턴 이내 진창 압박 완료',
rewardGold: 3840,
maxTurn: 118
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 68', '상처약 52', '탁주 26', '진창 공성 장부 1', '왕쌍 추격 기록 1'],
victoryPages: fiftyNinthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const sixtiethBattleScenario: BattleScenarioDefinition = {
id: 'sixtieth-battle-wudu-yinping',
title: '무도·음평 확보전',
victoryConditionLabel: '곽회 구원로 차단과 무도·음평 확보',
defeatConditionLabel: '제갈량 퇴각 또는 두 고을 보급선 붕괴',
openingObjectiveLines: [
'진창에서 물러난 뒤 촉한군은 무도와 음평의 산길을 동시에 압박합니다. 성 하나를 오래 치는 대신 두 고을의 길목을 얻어 북벌의 숨통을 넓히려 합니다.',
'곽회는 구원 기병과 산길 수비대를 보내 두 길을 끊으려 합니다. 강유가 길을 읽고 위연이 돌파하되, 조운·마대·왕평·황권·마량 중 누구를 데려갈지 선택이 전투의 모양을 바꿉니다.',
'곽회의 본대를 늦추고 무도와 음평의 마을, 수레 길, 산길 진영을 함께 안정시키십시오. 두 고을을 얻어도 보급이 끊기면 다음 북벌은 다시 좁아집니다.'
],
map: sixtiethBattleMap,
units: sixtiethBattleUnits,
bonds: sixtiethBattleBonds,
mapTextureKey: 'battle-map-sixtieth',
leaderUnitId: 'northern-sixth-leader-guo-huai',
quickVictoryTurnLimit: 120,
baseVictoryGold: 17920,
objectives: [
{
id: 'repel-guo-huai-relief',
kind: 'defeat-leader',
label: '곽회 구원로 차단',
rewardGold: 12600,
unitId: 'northern-sixth-leader-guo-huai'
},
{
id: 'secure-wudu-guard',
kind: 'defeat-leader',
label: '무도 고개 수비 제압',
rewardGold: 6280,
unitId: 'northern-sixth-officer-wudu'
},
{
id: 'secure-yinping-guard',
kind: 'defeat-leader',
label: '음평 물목 수비 제압',
rewardGold: 6240,
unitId: 'northern-sixth-officer-yinping'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 3200,
unitId: 'zhuge-liang'
},
{
id: 'two-commandery-road',
kind: 'secure-terrain',
label: '두 고을 수레 길 확보',
rewardGold: 6040,
terrain: 'road'
},
{
id: 'wudu-yinping-villages',
kind: 'secure-terrain',
label: '무도·음평 마을 안정',
rewardGold: 5900,
terrain: 'village'
},
{
id: 'mountain-camps',
kind: 'secure-terrain',
label: '산길 진영 유지',
rewardGold: 5760,
terrain: 'camp'
},
{
id: 'quick',
kind: 'quick-victory',
label: '120턴 이내 두 고을 확보',
rewardGold: 3920,
maxTurn: 120
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 70', '상처약 54', '탁주 27', '무도·음평 장부 1', '곽회 구원로 기록 1'],
victoryPages: sixtiethBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const sixtyFirstBattleScenario: BattleScenarioDefinition = {
id: 'sixty-first-battle-hanzhong-rain-defense',
title: '한중 우로 방어전',
victoryConditionLabel: '한중 북문과 두 고을 보급선 방어',
defeatConditionLabel: '제갈량 퇴각 또는 보급 방어선 붕괴',
openingObjectiveLines: [
'무도와 음평을 확보한 뒤 위군은 조진을 앞세워 한중 북문의 빗길을 압박합니다. 새로 얻은 두 고을은 이제 전리품이 아니라 지켜야 할 보급 책임입니다.',
'조진의 본대를 늦추고 사마의 별동대가 봉화로 길을 잇기 전에 끊으십시오. 강유와 왕평은 길을 보고, 이엄과 황권은 군량 흐름을 맞추며, 위연은 반격할 순간을 기다립니다.',
'한중 창고 진영, 무도·음평 수레 길, 전방 마을을 함께 지키십시오. 어느 하나가 무너지면 다음 북벌은 출발하기 전에 숨이 막힙니다.'
],
map: sixtyFirstBattleMap,
units: sixtyFirstBattleUnits,
bonds: sixtyFirstBattleBonds,
mapTextureKey: 'battle-map-sixty-first',
leaderUnitId: 'northern-seventh-leader-cao-zhen',
quickVictoryTurnLimit: 122,
baseVictoryGold: 18480,
objectives: [
{
id: 'repel-cao-zhen-main',
kind: 'defeat-leader',
label: '조진 본대 격퇴',
rewardGold: 13000,
unitId: 'northern-seventh-leader-cao-zhen'
},
{
id: 'check-sima-yi-column',
kind: 'defeat-leader',
label: '사마의 별동대 견제',
rewardGold: 6680,
unitId: 'northern-seventh-officer-sima-yi'
},
{
id: 'hold-wudu-yinping-supply',
kind: 'defeat-leader',
label: '무도·음평 보급선 방어',
rewardGold: 6540,
unitId: 'northern-seventh-officer-supply'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 3300,
unitId: 'zhuge-liang'
},
{
id: 'hanzhong-granary-camps',
kind: 'secure-terrain',
label: '한중 창고 진영 유지',
rewardGold: 6260,
terrain: 'camp'
},
{
id: 'rain-pass-roads',
kind: 'secure-terrain',
label: '빗길 수레길 확보',
rewardGold: 6120,
terrain: 'road'
},
{
id: 'front-villages',
kind: 'secure-terrain',
label: '전방 마을 안심',
rewardGold: 5960,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '122턴 이내 방어선 안정',
rewardGold: 4040,
maxTurn: 122
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 72', '상처약 56', '탁주 28', '한중 우로 장부 1', '조진 역공 기록 1'],
victoryPages: sixtyFirstBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const sixtySecondBattleScenario: BattleScenarioDefinition = {
id: 'sixty-second-battle-qishan-renewed-offensive',
title: '기산 재출정전',
victoryConditionLabel: '노성 지연선 돌파와 기산 보급로 전진',
defeatConditionLabel: '제갈량 퇴각 또는 회수선 붕괴',
openingObjectiveLines: [
'한중 우로 방어 후 촉한군은 지켜 낸 무도·음평 보급선을 다시 북쪽 공격로로 바꾸려 합니다. 노성 앞의 위군 지연선은 사마의가 시간을 벌기 위해 세운 첫 벽입니다.',
'강유와 위연은 앞길을 열고, 조운과 왕평은 깊이 들어간 부대가 돌아올 표식을 남겨야 합니다. 황권과 마량은 군량과 민심을 함께 보아 공세가 약탈처럼 보이지 않게 해야 합니다.',
'사마의의 본영, 장합의 추격대, 곽회의 측면 차단을 동시에 끊으십시오. 기산 수레 길과 전방 마을, 회수 진영을 지켜야 다음 북벌이 더 깊이 이어집니다.'
],
map: sixtySecondBattleMap,
units: sixtySecondBattleUnits,
bonds: sixtySecondBattleBonds,
mapTextureKey: 'battle-map-sixty-second',
leaderUnitId: 'northern-eighth-leader-sima-yi',
quickVictoryTurnLimit: 124,
baseVictoryGold: 19240,
objectives: [
{
id: 'press-sima-yi-delay-line',
kind: 'defeat-leader',
label: '사마의 지연선 돌파',
rewardGold: 13600,
unitId: 'northern-eighth-leader-sima-yi'
},
{
id: 'check-zhang-he-pursuit',
kind: 'defeat-leader',
label: '장합 추격대 저지',
rewardGold: 8200,
unitId: 'northern-eighth-officer-zhang-he'
},
{
id: 'break-guo-huai-flank',
kind: 'defeat-leader',
label: '곽회 측면 차단 해제',
rewardGold: 7600,
unitId: 'northern-eighth-officer-guo-huai'
},
{
id: 'qishan-supply-camps',
kind: 'secure-terrain',
label: '기산 보급 진영 유지',
rewardGold: 6400,
terrain: 'camp'
},
{
id: 'lucheng-front-villages',
kind: 'secure-terrain',
label: '노성 앞 마을 안심',
rewardGold: 6200,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '124턴 이내 지연선 돌파',
rewardGold: 4180,
maxTurn: 124
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 74', '상처약 58', '탁주 29', '기산 재출정 장부 1', '노성 지연선 기록 1'],
victoryPages: sixtySecondBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const sixtyThirdBattleScenario: BattleScenarioDefinition = {
id: 'sixty-third-battle-lucheng-pursuit',
title: '노성 추격전',
victoryConditionLabel: '노성 추격로 확보와 회수 표식 유지',
defeatConditionLabel: '제갈량 퇴각 또는 보급 수레 붕괴',
openingObjectiveLines: [
'기산 재출정으로 노성 앞 지연선을 밀어 낸 촉한군은 더 깊은 추격로를 열려 합니다. 그러나 사마의는 물러나는 척하며 회수 표식과 보급 수레를 끊으려 합니다.',
'강유와 위연은 낮은 길과 돌파선을 나누고, 조운과 왕평은 장합의 기병이 뒤를 흔들기 전에 예비대와 표식을 이어야 합니다.',
'사마의의 노성 방어 본영, 장합의 회수선 추격대, 곽회의 봉화 차단로를 동시에 끊으십시오. 추격로를 얻어도 수레와 마을을 잃으면 다음 북벌은 깊어질 수 없습니다.'
],
map: sixtyThirdBattleMap,
units: sixtyThirdBattleUnits,
bonds: sixtyThirdBattleBonds,
mapTextureKey: 'battle-map-sixty-third',
leaderUnitId: 'northern-ninth-leader-sima-yi',
quickVictoryTurnLimit: 126,
baseVictoryGold: 19880,
objectives: [
{
id: 'break-sima-yi-lucheng-defense',
kind: 'defeat-leader',
label: '사마의 노성 방어 돌파',
rewardGold: 14100,
unitId: 'northern-ninth-leader-sima-yi'
},
{
id: 'stop-zhang-he-return-raid',
kind: 'defeat-leader',
label: '장합 회수선 추격 저지',
rewardGold: 8500,
unitId: 'northern-ninth-officer-zhang-he'
},
{
id: 'silence-guo-huai-beacons',
kind: 'defeat-leader',
label: '곽회 봉화 차단',
rewardGold: 7900,
unitId: 'northern-ninth-officer-guo-huai'
},
{
id: 'hold-return-supply-camps',
kind: 'secure-terrain',
label: '회수 보급 진영 유지',
rewardGold: 6640,
terrain: 'camp'
},
{
id: 'reassure-lucheng-villages',
kind: 'secure-terrain',
label: '노성 주변 마을 안심',
rewardGold: 6440,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '126턴 이내 추격로 확보',
rewardGold: 4360,
maxTurn: 126
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 76', '상처약 60', '탁주 30', '노성 추격 장부 1', '회수 표식 기록 1'],
victoryPages: sixtyThirdBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const sixtyFourthBattleScenario: BattleScenarioDefinition = {
id: 'sixty-fourth-battle-weishui-camps',
title: '위수 진영전',
victoryConditionLabel: '위수 남안 진영 확보와 봉화 차단',
defeatConditionLabel: '제갈량 퇴각 또는 보급 수레 붕괴',
openingObjectiveLines: [
'노성 추격 뒤에도 사마의는 위수 북안에 진영을 겹겹이 세우고 시간을 벌고 있습니다. 촉한군은 강을 성급히 넘기보다 남안의 진영과 물목, 봉화선을 먼저 끊어야 합니다.',
'강유와 왕평은 낮은 길과 회수 표식을 맡고, 황권과 이엄은 긴 수레길을 전장 기준으로 맞춥니다. 위연과 마대는 장합의 기병이 뒤를 물기 전에 진영 사이를 흔들어야 합니다.',
'사마의의 위수 본영, 장합의 물목 추격대, 곽회의 봉화선을 동시에 늦추십시오. 강가 마을과 보급 진영을 지키면 다음 북방 공세가 더 깊게 이어집니다.'
],
map: sixtyFourthBattleMap,
units: sixtyFourthBattleUnits,
bonds: sixtyFourthBattleBonds,
mapTextureKey: 'battle-map-sixty-fourth',
leaderUnitId: 'northern-tenth-leader-sima-yi',
quickVictoryTurnLimit: 128,
baseVictoryGold: 20560,
objectives: [
{
id: 'break-sima-yi-weishui-camps',
kind: 'defeat-leader',
label: '사마의 위수 본영 압박',
rewardGold: 14600,
unitId: 'northern-tenth-leader-sima-yi'
},
{
id: 'stop-zhang-he-crossing-raid',
kind: 'defeat-leader',
label: '장합 물목 추격 저지',
rewardGold: 8840,
unitId: 'northern-tenth-officer-zhang-he'
},
{
id: 'silence-guo-huai-weishui-beacons',
kind: 'defeat-leader',
label: '곽회 위수 봉화 차단',
rewardGold: 8220,
unitId: 'northern-tenth-officer-guo-huai'
},
{
id: 'hold-weishui-supply-camps',
kind: 'secure-terrain',
label: '위수 보급 진영 확보',
rewardGold: 6880,
terrain: 'camp'
},
{
id: 'reassure-river-villages',
kind: 'secure-terrain',
label: '강가 마을 안심',
rewardGold: 6660,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '128턴 이내 위수 진영 장악',
rewardGold: 4540,
maxTurn: 128
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 78', '상처약 62', '탁주 30', '위수 진영 장부 1', '강안 봉화 기록 1'],
victoryPages: sixtyFourthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const sixtyFifthBattleScenario: BattleScenarioDefinition = {
id: 'sixty-fifth-battle-weishui-northbank',
title: '위수 북안 압박전',
victoryConditionLabel: '위수 북안 전진 진영 압박과 재추격 저지',
defeatConditionLabel: '제갈량 퇴각 또는 보급 수레 붕괴',
openingObjectiveLines: [
'위수 남안 진영을 얻었지만 사마의는 북안에 더 촘촘한 지연선을 세웠습니다. 이번 출전은 강북을 끝내는 결전이 아니라, 전진 진영과 봉화선을 눌러 다음 북방 공세의 숨을 만드는 싸움입니다.',
'강유와 마대는 낮은 물목과 측면 기병을 읽고, 왕평과 황권은 정지선과 장부를 맞춥니다. 제갈량과 이엄은 진영을 얻은 뒤에도 수레가 끊기지 않을 군령을 세워야 합니다.',
'사마의의 북안 지연선, 장합의 재추격대, 곽회의 북안 봉화를 동시에 늦추십시오. 강북 마을과 전진 진영을 지키면 다음 북방 선택지가 더 선명해집니다.'
],
map: sixtyFifthBattleMap,
units: sixtyFifthBattleUnits,
bonds: sixtyFifthBattleBonds,
mapTextureKey: 'battle-map-sixty-fifth',
leaderUnitId: 'northern-eleventh-leader-sima-yi',
quickVictoryTurnLimit: 130,
baseVictoryGold: 21240,
objectives: [
{
id: 'break-sima-yi-northbank-delay-line',
kind: 'defeat-leader',
label: '사마의 북안 지연선 압박',
rewardGold: 15100,
unitId: 'northern-eleventh-leader-sima-yi'
},
{
id: 'stop-zhang-he-rearguard-raid',
kind: 'defeat-leader',
label: '장합 재추격대 저지',
rewardGold: 9160,
unitId: 'northern-eleventh-officer-zhang-he'
},
{
id: 'silence-guo-huai-northbank-beacons',
kind: 'defeat-leader',
label: '곽회 북안 봉화 차단',
rewardGold: 8520,
unitId: 'northern-eleventh-officer-guo-huai'
},
{
id: 'hold-northbank-forward-camps',
kind: 'secure-terrain',
label: '북안 전진 진영 확보',
rewardGold: 7100,
terrain: 'camp'
},
{
id: 'reassure-northbank-villages',
kind: 'secure-terrain',
label: '강북 마을 안심',
rewardGold: 6900,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '130턴 이내 북안 압박',
rewardGold: 4720,
maxTurn: 130
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 80', '상처약 64', '탁주 31', '북안 전진 장부 1', '위수 재추격 기록 1'],
victoryPages: sixtyFifthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const sixtySixthBattleScenario: BattleScenarioDefinition = {
id: 'sixty-sixth-battle-wuzhang-final',
title: '오장원 최종전',
victoryConditionLabel: '오장원 본영 방어와 장부 계승 확보',
defeatConditionLabel: '제갈량 퇴각 또는 귀환 장부 붕괴',
openingObjectiveLines: [
'위수 북안의 압박을 지나 오장원 본영까지 돌아왔습니다. 이번 싸움은 더 멀리 나아가는 전투가 아니라, 촉한군이 살아서 돌아가고 다음 세대가 장부를 이어 받을 길을 지키는 최종전입니다.',
'강유는 제갈량의 작전도를 이어 받고, 왕평과 마대는 퇴로와 측면을 나누어 맡았습니다. 황권과 이엄은 군량 장부를 보전하며 본영의 질서를 붙들어야 합니다.',
'사마의의 본대, 장합의 추격 기병, 곽회의 봉화 차단대를 동시에 누르십시오. 오장원 본영과 주변 마을을 지켜 내면 북벌의 뜻은 패배가 아니라 계승으로 남습니다.'
],
map: sixtySixthBattleMap,
units: sixtySixthBattleUnits,
bonds: sixtySixthBattleBonds,
mapTextureKey: 'battle-map-sixty-sixth',
leaderUnitId: 'northern-twelfth-leader-sima-yi',
quickVictoryTurnLimit: 90,
baseVictoryGold: 22400,
objectives: [
{
id: 'hold-wuzhang-main-camp',
kind: 'defeat-leader',
label: '사마의 오장원 본대 격파',
rewardGold: 16000,
unitId: 'northern-twelfth-leader-sima-yi'
},
{
id: 'stop-zhang-he-final-pursuit',
kind: 'defeat-leader',
label: '장합 최종 추격대 저지',
rewardGold: 9800,
unitId: 'northern-twelfth-officer-zhang-he'
},
{
id: 'silence-guo-huai-wuzhang-beacons',
kind: 'defeat-leader',
label: '곽회 봉화 차단',
rewardGold: 9100,
unitId: 'northern-twelfth-officer-guo-huai'
},
{
id: 'preserve-wuzhang-camps',
kind: 'secure-terrain',
label: '오장원 본영 확보',
rewardGold: 7600,
terrain: 'camp'
},
{
id: 'protect-returning-villages',
kind: 'secure-terrain',
label: '귀환로 마을 보호',
rewardGold: 7200,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '90턴 이내 오장원 수습',
rewardGold: 5000,
maxTurn: 90
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 84', '상처약 66', '탁주 32', '오장원 귀환 장부 1', '강유 계승 지도 1'],
victoryPages: sixtySixthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
'first-battle-zhuo-commandery': firstBattleScenario,
'second-battle-yellow-turban-pursuit': secondBattleScenario,
'third-battle-guangzong-road': thirdBattleScenario,
'fourth-battle-guangzong-camp': fourthBattleScenario,
'fifth-battle-sishui-vanguard': fifthBattleScenario,
'sixth-battle-jieqiao-relief': sixthBattleScenario,
'seventh-battle-xuzhou-rescue': seventhBattleScenario,
'eighth-battle-xiaopei-supply-road': eighthBattleScenario,
'ninth-battle-xuzhou-gate-night-raid': ninthBattleScenario,
'tenth-battle-xuzhou-breakout': tenthBattleScenario,
'eleventh-battle-xudu-refuge-road': eleventhBattleScenario,
'twelfth-battle-xiapi-outer-siege': twelfthBattleScenario,
'thirteenth-battle-xiapi-final': thirteenthBattleScenario,
'fourteenth-battle-cao-break': fourteenthBattleScenario,
'fifteenth-battle-yuan-refuge-road': fifteenthBattleScenario,
'sixteenth-battle-liu-biao-refuge': sixteenthBattleScenario,
'seventeenth-battle-wolong-visit-road': seventeenthBattleScenario,
'eighteenth-battle-bowang-ambush': eighteenthBattleScenario,
'nineteenth-battle-changban-refuge': nineteenthBattleScenario,
'twentieth-battle-jiangdong-envoy': twentiethBattleScenario,
'twenty-first-battle-red-cliffs-vanguard': twentyFirstBattleScenario,
'twenty-second-battle-red-cliffs-fire': twentySecondBattleScenario,
'twenty-third-battle-jingzhou-south-entry': twentyThirdBattleScenario,
'twenty-fourth-battle-guiyang-persuasion': twentyFourthBattleScenario,
'twenty-fifth-battle-wuling-mountain-road': twentyFifthBattleScenario,
'twenty-sixth-battle-changsha-veteran': twentySixthBattleScenario,
'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,
'thirty-first-battle-luo-main-gate': thirtyFirstBattleScenario,
'thirty-second-battle-mianzhu-gate': thirtySecondBattleScenario,
'thirty-third-battle-chengdu-surrender': thirtyThirdBattleScenario,
'thirty-fourth-battle-jiameng-pass': thirtyFourthBattleScenario,
'thirty-fifth-battle-yangping-scout': thirtyFifthBattleScenario,
'thirty-sixth-battle-dingjun-vanguard': thirtySixthBattleScenario,
'thirty-seventh-battle-hanzhong-decisive': thirtySeventhBattleScenario,
'thirty-eighth-battle-jing-defense': thirtyEighthBattleScenario,
'thirty-ninth-battle-fan-castle-vanguard': thirtyNinthBattleScenario,
'fortieth-battle-han-river-flood': fortiethBattleScenario,
'forty-first-battle-fan-castle-siege': fortyFirstBattleScenario,
'forty-second-battle-jing-rear-crisis': fortySecondBattleScenario,
'forty-third-battle-gongan-collapse': fortyThirdBattleScenario,
'forty-fourth-battle-maicheng-isolation': fortyFourthBattleScenario,
'forty-fifth-battle-yiling-vanguard': fortyFifthBattleScenario,
'forty-sixth-battle-yiling-fire': fortySixthBattleScenario,
'forty-seventh-battle-nanzhong-stabilization': fortySeventhBattleScenario,
'forty-eighth-battle-meng-huo-main-force': fortyEighthBattleScenario,
'forty-ninth-battle-meng-huo-second-capture': fortyNinthBattleScenario,
'fiftieth-battle-meng-huo-third-capture': fiftiethBattleScenario,
'fifty-first-battle-meng-huo-fourth-capture': fiftyFirstBattleScenario,
'fifty-second-battle-meng-huo-fifth-capture': fiftySecondBattleScenario,
'fifty-third-battle-meng-huo-sixth-capture': fiftyThirdBattleScenario,
'fifty-fourth-battle-meng-huo-final-capture': fiftyFourthBattleScenario,
'fifty-fifth-battle-northern-qishan-road': fiftyFifthBattleScenario,
'fifty-sixth-battle-tianshui-advance': fiftySixthBattleScenario,
'fifty-seventh-battle-jieting-crisis': fiftySeventhBattleScenario,
'fifty-eighth-battle-qishan-retreat': fiftyEighthBattleScenario,
'fifty-ninth-battle-chencang-siege': fiftyNinthBattleScenario,
'sixtieth-battle-wudu-yinping': sixtiethBattleScenario,
'sixty-first-battle-hanzhong-rain-defense': sixtyFirstBattleScenario,
'sixty-second-battle-qishan-renewed-offensive': sixtySecondBattleScenario,
'sixty-third-battle-lucheng-pursuit': sixtyThirdBattleScenario,
'sixty-fourth-battle-weishui-camps': sixtyFourthBattleScenario,
'sixty-fifth-battle-weishui-northbank': sixtyFifthBattleScenario,
'sixty-sixth-battle-wuzhang-final': sixtySixthBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];
export function getBattleScenario(id: string | undefined) {
if (id && id in battleScenarios) {
return battleScenarios[id as BattleScenarioId];
}
return defaultBattleScenario;
}