7833 lines
354 KiB
TypeScript
7833 lines
354 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턴 안에 돌파하면 조조 의탁으로 이어질 병력과 보급을 더 많이 보존합니다.'
|
|
],
|
|
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: 'liu-bei', role: 'support', reason: '퇴각 지휘의 중심이자 패배 조건이므로 후방 생존을 우선해야 합니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '여포군 추격대를 받아내며 유비와 보급 수레 뒤를 지키는 전열입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'flank', reason: '실책을 만회하며 남쪽 퇴로를 여는 돌파 담당입니다.' },
|
|
{ unitId: 'jian-yong', role: 'support', reason: '화계와 격려로 기병 돌입을 늦추고 퇴로 판단을 보조합니다.' },
|
|
{ unitId: 'mi-zhu', role: 'reserve', reason: '피난민과 보급 수레를 보존하고 회복품 운용을 안정시킵니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '퇴각 지휘', classKeys: ['lord'], reason: '유비가 살아남아야 다음 의탁과 재편이 이어집니다.' },
|
|
{ label: '추격 차단', classKeys: ['infantry'], reason: '동쪽 기병 압박을 정면에서 받아낼 전열이 필요합니다.' },
|
|
{ label: '퇴로 돌파', classKeys: ['spearman'], reason: '남쪽 길목의 배반병과 기병을 빠르게 끊어야 합니다.' },
|
|
{ label: '책략 지연', classKeys: ['strategist'], reason: '화계와 격려로 추격 속도를 늦추면 손실이 줄어듭니다.' },
|
|
{ label: '보급 보존', classKeys: ['quartermaster'], reason: '피난민과 보급품을 지키면 전투 후 보상이 실제 정비로 이어집니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ role: 'support', unitId: 'liu-bei', x: 3, y: 14, label: '퇴각 지휘' },
|
|
{ role: 'front', unitId: 'guan-yu', x: 4, y: 15, label: '추격 차단' },
|
|
{ role: 'flank', unitId: 'zhang-fei', x: 3, y: 16, label: '남쪽 돌파' },
|
|
{ role: 'support', unitId: 'jian-yong', x: 5, y: 17, label: '책략 지연' },
|
|
{ role: 'reserve', unitId: 'mi-zhu', x: 4, y: 18, label: '보급 수레' }
|
|
],
|
|
note: '서주 탈출전은 성을 되찾는 전투가 아니라 퇴로를 여는 전투입니다. 관우는 추격을 막고, 장비는 남쪽 길을 열며, 간옹과 미축은 책략과 보급으로 손실을 줄이는 편성이 기본입니다.'
|
|
},
|
|
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',
|
|
targetTile: { x: 13, y: 17, radius: 4 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '20턴 이내 돌파',
|
|
rewardGold: 340,
|
|
maxTurn: 20
|
|
}
|
|
],
|
|
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
|
itemRewards: ['콩 4', '상처약 2', '탁주 1', '서주 피난민 보호 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 4', '상처약 2', '탁주 1'],
|
|
equipment: ['철창 1'],
|
|
reputation: ['서주 피난민 보호 +1'],
|
|
unlockBattleId: 'eleventh-battle-xudu-refuge-road',
|
|
unlockLabel: '허도 입성로 개방',
|
|
note: '서주는 잃었지만 병력과 피난민 일부를 보존해 조조 의탁 전선으로 이어집니다.'
|
|
},
|
|
victoryPages: tenthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const eleventhBattleScenario: BattleScenarioDefinition = {
|
|
id: 'eleventh-battle-xudu-refuge-road',
|
|
title: '허도 입성로',
|
|
victoryConditionLabel: '기령 격파',
|
|
defeatConditionLabel: '유비 퇴각',
|
|
openingObjectiveLines: [
|
|
'조조는 유비군을 받아들이되, 허도 입성로를 어지럽히는 원술 잔군 토벌을 첫 시험으로 내립니다. 기령을 격파하면 군문 통행이 열립니다.',
|
|
'원술군 약탈병은 마을 보급로를 흔들고, 기병은 동쪽 길에서 돌파합니다. 조조군의 감시 속에서 백성을 해치지 않는 군율을 보여야 합니다.',
|
|
'길목 마을을 안정시키고 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: 'liu-bei', role: 'support', reason: '조조가 지켜보는 의탁의 중심입니다. 패배 조건이므로 후방 지휘를 유지해야 합니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '기령 본대와 마주 설 정면 전열입니다. 중앙 길목을 열어 군율을 보여줍니다.' },
|
|
{ unitId: 'zhang-fei', role: 'flank', reason: '마을 주변 약탈병과 기병 돌파를 끊는 측면 압박 역할입니다.' },
|
|
{ unitId: 'jian-yong', role: 'support', reason: '조조군 감시 속에서 책략 보조와 전황 보고를 맡기 좋습니다.' },
|
|
{ unitId: 'mi-zhu', role: 'reserve', reason: '허도 입성 전 보급과 회복을 안정시키고 마을 확보 보상을 살립니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '후방 지휘', classKeys: ['lord'], reason: '유비 생존과 군율 증명이 전투의 핵심입니다.' },
|
|
{ label: '정면 돌파', classKeys: ['infantry'], reason: '중앙 길목에서 원술 보병과 기령 본대를 안정적으로 받아냅니다.' },
|
|
{ label: '측면 차단', classKeys: ['spearman'], reason: '마을 주변 약탈병과 길목 기병을 빠르게 끊기 좋습니다.' },
|
|
{ label: '책략 보조', classKeys: ['strategist'], reason: '기병 돌파와 궁병 압박을 늦추면 손실이 줄어듭니다.' },
|
|
{ label: '보급 유지', classKeys: ['quartermaster'], reason: '마을 보급로를 지키는 목표와 실제 전열 유지가 함께 맞물립니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ role: 'support', unitId: 'liu-bei', x: 3, y: 15, label: '후방 지휘' },
|
|
{ role: 'front', unitId: 'guan-yu', x: 4, y: 14, label: '중앙 돌파' },
|
|
{ role: 'flank', unitId: 'zhang-fei', x: 4, y: 16, label: '마을 차단' },
|
|
{ role: 'support', unitId: 'jian-yong', x: 5, y: 17, label: '책략 보고' },
|
|
{ role: 'reserve', unitId: 'mi-zhu', x: 3, y: 18, label: '보급 안정' }
|
|
],
|
|
note: '허도 입성로는 조조군 감시 아래 치르는 첫 시험입니다. 추천 배치는 관우가 중앙을 열고, 장비가 마을 약탈병을 끊으며, 유비와 보조 무장이 후방에서 군율과 보급을 지키는 형태입니다.'
|
|
},
|
|
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',
|
|
targetTile: { x: 10, y: 11, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '18턴 이내 승리',
|
|
rewardGold: 360,
|
|
maxTurn: 18
|
|
}
|
|
],
|
|
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
|
itemRewards: ['콩 4', '상처약 3', '탁주 1', '조조군 군문 통행 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 4', '상처약 3', '탁주 1'],
|
|
equipment: ['철린갑 1'],
|
|
reputation: ['조조군 군문 통행 +1'],
|
|
unlockBattleId: 'twelfth-battle-xiapi-outer-siege',
|
|
unlockLabel: '하비 외곽전 개방',
|
|
note: '허도 입성로에서 군율과 보급 능력을 보여 주어 조조 휘하 하비 포위 임무로 이어집니다.'
|
|
},
|
|
victoryPages: eleventhBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twelfthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twelfth-battle-xiapi-outer-siege',
|
|
title: '하비 외곽전',
|
|
victoryConditionLabel: '장료 격파',
|
|
defeatConditionLabel: '유비 퇴각',
|
|
openingObjectiveLines: [
|
|
'허도 입성로에서 군율을 보인 유비군에게 조조는 하비 포위망의 남쪽 둑길을 맡깁니다. 장료를 격파하면 여포군 선봉은 성 안으로 물러납니다.',
|
|
'강줄기와 둑길이 전장을 가릅니다. 여포군 기병은 길을 타고 포위망을 찢으려 하고, 진궁과 성루 궁병은 중앙 보급 진영을 압박합니다.',
|
|
'둑길 보급 진영을 확보하고 35턴 안에 승리하면 조조 휘하의 공적과 유비군의 독자 보급 명분을 함께 지킬 수 있습니다.'
|
|
],
|
|
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: 'liu-bei', role: 'support', reason: '조조 휘하 작전에서도 유비군의 명분을 지켜야 합니다. 후방 지휘와 생존이 우선입니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '중앙 둑길에서 장료 선봉을 받아낼 정면 전열입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'flank', reason: '여포군 기병 돌파를 남쪽 길목에서 끊는 측면 차단 역할입니다.' },
|
|
{ unitId: 'jian-yong', role: 'support', reason: '진궁과 궁병 압박을 늦추고 조조군 보고 명분을 정리합니다.' },
|
|
{ unitId: 'mi-zhu', role: 'reserve', reason: '둑길 보급 진영을 지키고 회복품 운용을 안정시킵니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '후방 지휘', classKeys: ['lord'], reason: '유비 생존과 조조군 보고 명분이 전투 후 흐름을 좌우합니다.' },
|
|
{ label: '둑길 전열', classKeys: ['infantry'], reason: '좁은 길에서 장료 선봉과 보병을 안정적으로 받아냅니다.' },
|
|
{ label: '기병 차단', classKeys: ['spearman'], reason: '남북 둑길을 타고 돌파하는 여포군 기병을 끊기 좋습니다.' },
|
|
{ label: '책략 견제', classKeys: ['strategist'], reason: '진궁과 궁병의 압박을 늦추면 보급 진영 확보가 쉬워집니다.' },
|
|
{ label: '보급 유지', classKeys: ['quartermaster'], reason: '강가 포위전에서는 회복품과 독자 보급선이 실제 전투 유지력으로 이어집니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ role: 'support', unitId: 'liu-bei', x: 3, y: 18, label: '후방 지휘' },
|
|
{ role: 'front', unitId: 'guan-yu', x: 4, y: 17, label: '둑길 전열' },
|
|
{ role: 'flank', unitId: 'zhang-fei', x: 4, y: 19, label: '기병 차단' },
|
|
{ role: 'support', unitId: 'jian-yong', x: 5, y: 20, label: '책략 견제' },
|
|
{ role: 'reserve', unitId: 'mi-zhu', x: 3, y: 21, label: '보급 유지' }
|
|
],
|
|
note: '하비 외곽전은 길이 좁고 물길이 전열을 자릅니다. 추천 배치는 관우가 중앙 둑길을 버티고, 장비가 기병 돌파를 끊으며, 간옹과 미축이 책략/보급으로 전열을 붙잡는 형태입니다.'
|
|
},
|
|
map: twelfthBattleMap,
|
|
units: twelfthBattleUnits,
|
|
bonds: twelfthBattleBonds,
|
|
mapTextureKey: 'battle-map-twelfth',
|
|
leaderUnitId: 'xiapi-leader-zhang-liao',
|
|
quickVictoryTurnLimit: 35,
|
|
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',
|
|
targetTile: { x: 23, y: 15, radius: 4 },
|
|
threatRadius: 2
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '35턴 이내 승리',
|
|
rewardGold: 390,
|
|
maxTurn: 35
|
|
}
|
|
],
|
|
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
|
itemRewards: ['콩 4', '상처약 3', '탁주 2', '하비 포위 공적 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 4', '상처약 3', '탁주 2'],
|
|
equipment: ['병법서 1'],
|
|
reputation: ['하비 포위 공적 +1'],
|
|
unlockBattleId: 'thirteenth-battle-xiapi-final',
|
|
unlockLabel: '하비 결전 개방',
|
|
note: '하비 외곽의 둑길과 보급 진영을 장악해 조조군 포위망이 성문과 수문까지 좁혀집니다.'
|
|
},
|
|
victoryPages: twelfthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirteenthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirteenth-battle-xiapi-final',
|
|
title: '하비 결전',
|
|
victoryConditionLabel: '여포 격파',
|
|
defeatConditionLabel: '유비 퇴각',
|
|
openingObjectiveLines: [
|
|
'여포가 하비 성 안에서 마지막 돌파를 준비합니다. 성문 전열을 밀어내고 수문 쪽 포위망을 닫아야 비장군의 기동을 묶을 수 있습니다.',
|
|
'진궁은 성루 궁병과 수문 수비로 접근로를 끊으려 합니다. 관우가 성문을 누르고 장비가 기병 돌파를 끊는 동안, 책사와 보급 장수가 전열을 붙잡아야 합니다.',
|
|
'성문과 수문 포위망을 확보하고 35턴 안에 승리하면 조조 휘하에서도 유비군의 전공, 보급 명분, 새 인맥을 모두 남길 수 있습니다.'
|
|
],
|
|
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: 'liu-bei', role: 'support', reason: '조조 앞에서 여포의 끝을 두고 말해야 할 주장입니다. 후방 지휘와 생존을 맡깁니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '하비 성문 요새를 정면에서 밀어낼 핵심 전열입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'flank', reason: '수문 둑길로 빠지는 여포군 기병 돌파를 끊는 측면 차단 역할입니다.' },
|
|
{ unitId: 'jian-yong', role: 'support', reason: '진궁의 책략과 조조군 시선을 동시에 살피며 전황 보고를 정리합니다.' },
|
|
{ unitId: 'mi-zhu', role: 'reserve', reason: '회복품과 보급선을 맡아 성문 앞 장기전을 안정시킵니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '후방 지휘', classKeys: ['lord'], reason: '유비 생존과 전후 명분이 다음 조조 이탈 흐름을 좌우합니다.' },
|
|
{ label: '성문 전열', classKeys: ['infantry'], reason: '요새 수비병과 여포 본진 사이를 안정적으로 밀어낼 수 있습니다.' },
|
|
{ label: '기병 차단', classKeys: ['spearman'], reason: '수문 둑길과 성내 도로를 타고 돌파하는 기병을 받아치기 좋습니다.' },
|
|
{ label: '책략 견제', classKeys: ['strategist'], reason: '진궁과 성루 궁병의 압박을 늦추면 성문 확보가 쉬워집니다.' },
|
|
{ label: '보급 유지', classKeys: ['quartermaster'], reason: '결전은 피해 누적이 크므로 회복품 배정과 보급 유지가 전열을 살립니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ role: 'support', unitId: 'liu-bei', x: 3, y: 19, label: '후방 지휘' },
|
|
{ role: 'front', unitId: 'guan-yu', x: 4, y: 18, label: '성문 전열' },
|
|
{ role: 'flank', unitId: 'zhang-fei', x: 4, y: 20, label: '수문 차단' },
|
|
{ role: 'support', unitId: 'jian-yong', x: 5, y: 19, label: '책략 견제' },
|
|
{ role: 'reserve', unitId: 'mi-zhu', x: 3, y: 21, label: '보급 유지' }
|
|
],
|
|
note: '하비 결전은 성문 돌파와 수문 차단을 동시에 보는 전투입니다. 추천 배치는 관우가 중앙을 누르고 장비가 남쪽 기병을 끊으며, 유비와 책사/보급 장수가 뒤에서 전열을 지키는 형태입니다.'
|
|
},
|
|
map: thirteenthBattleMap,
|
|
units: thirteenthBattleUnits,
|
|
bonds: thirteenthBattleBonds,
|
|
mapTextureKey: 'battle-map-thirteenth',
|
|
leaderUnitId: 'xiapi-final-leader-lu-bu',
|
|
quickVictoryTurnLimit: 35,
|
|
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',
|
|
targetTile: { x: 27, y: 12, radius: 3 },
|
|
threatRadius: 1
|
|
},
|
|
{
|
|
id: 'sluice',
|
|
kind: 'secure-terrain',
|
|
label: '수문 포위망 장악',
|
|
rewardGold: 520,
|
|
terrain: 'fort',
|
|
targetTile: { x: 26, y: 15, radius: 3 },
|
|
threatRadius: 1
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '35턴 이내 승리',
|
|
rewardGold: 420,
|
|
maxTurn: 35
|
|
}
|
|
],
|
|
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
|
itemRewards: ['콩 5', '상처약 3', '탁주 2', '하비 결전 공적 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 5', '상처약 3', '탁주 2'],
|
|
equipment: ['하비 군령패 1'],
|
|
reputation: ['하비 결전 공적 +1', '여포 토벌 명성 +1'],
|
|
recruits: ['sun-qian'],
|
|
unlockBattleId: 'fourteenth-battle-cao-break',
|
|
unlockLabel: '서주 재기 개방',
|
|
note: '성문과 수문 포위망을 함께 장악해 여포의 마지막 돌파를 꺾고, 손건이 조조의 감시망을 벗어날 문서와 길을 준비합니다.'
|
|
},
|
|
victoryPages: thirteenthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const fourteenthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'fourteenth-battle-cao-break',
|
|
title: '서주 재기',
|
|
victoryConditionLabel: '차주 격파',
|
|
defeatConditionLabel: '유비 퇴각',
|
|
openingObjectiveLines: [
|
|
'조조의 감시대가 서주 역참과 동쪽 관문을 틀어쥐고 있습니다. 차주를 격파하면 유비군은 조조 휘하를 벗어날 첫 발판을 세웁니다.',
|
|
'손건은 역참 문서와 민심을 정리하고, 관우와 장비는 길을 따라 밀고 오는 조조군 기병을 막아야 합니다. 관문 뒤의 궁병 사거리를 의식하며 전열을 나누십시오.',
|
|
'역참 문서를 확보하고 서주 관문을 돌파하십시오. 30턴 안에 승리하면 원소 진영으로 향할 명분과 보급을 더 많이 보존합니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '서남 진영에서 출발해 역참 문서를 장악하고, 동쪽 관문을 열어 조조의 감시망 밖으로 빠져나가는 전환 전투입니다.',
|
|
route: '서남 진영 → 서주 역참 → 동쪽 관문 → 차주 본진',
|
|
focus:
|
|
'차주만 서둘러 치면 후방 추격 기병과 관문 궁병이 유비를 압박합니다. 손건은 역참 문서를 정리하고, 관우는 관문 전열을 누르며, 장비는 남쪽 길의 기병 돌파를 받아쳐야 합니다.',
|
|
roles: [
|
|
'유비: 이탈 명분 유지와 생존',
|
|
'관우: 동쪽 관문 정면 돌파',
|
|
'장비: 남쪽 길목 추격 기병 차단',
|
|
'손건: 역참 문서 확보와 민심 설득',
|
|
'미축: 장기 이탈전에 필요한 회복품과 보급 유지'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '감시망 핵심 지점 접근',
|
|
lines: [
|
|
'이 지점을 잡으면 조조군의 보고선과 추격로가 동시에 흔들립니다.',
|
|
'주변 수비병을 정리한 뒤 유비군의 이름으로 문서와 길을 확보하십시오.'
|
|
]
|
|
},
|
|
'enemy-posture': {
|
|
title: '차주의 봉쇄 진형',
|
|
lines: [
|
|
'차주는 관문 뒤에 수비대를 세우고, 기병은 남쪽 길을 따라 돌아 들어옵니다.',
|
|
'손건이 역참을 잡는 동안 관우와 장비가 전열과 측면을 나누어 막아야 합니다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '조조군 추격 기병',
|
|
lines: [
|
|
'조조군 기병이 길을 타고 후방을 노립니다.',
|
|
'장비를 남쪽 길목에 세우고 유비를 무리하게 앞세우지 않으면 추격을 끊고 관문을 압박할 수 있습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '차주 수비선 동요',
|
|
lines: [
|
|
'역참과 관문이 흔들리자 차주의 보고선이 끊기고 있습니다.',
|
|
'관문 주변 적을 정리한 뒤 차주를 몰아치면 조조의 장막 밖으로 나갈 길이 열립니다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'support', reason: '조조 휘하를 떠나는 명분과 생존 조건의 중심입니다. 후방 지휘를 맡깁니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '동쪽 서주 관문 수비대를 정면에서 밀어낼 핵심 전열입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'flank', reason: '남쪽 길목으로 돌진하는 조조군 기병을 받아치는 측면 차단 역할입니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '역참 문서와 민심을 정리해 이탈 명분과 목표 보상을 직접 살립니다.' },
|
|
{ unitId: 'mi-zhu', role: 'reserve', reason: '회복품과 보급선 운용으로 긴 이탈전을 안정시킵니다.' },
|
|
{ unitId: 'jian-yong', role: 'support', reason: '간옹의 말과 책략 지원은 조조군 감시망을 흔드는 데 유리합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '이탈 지휘', classKeys: ['lord'], reason: '유비 생존과 전후 명분이 원소 의탁 흐름의 출발점입니다.' },
|
|
{ label: '관문 돌파', classKeys: ['infantry'], reason: '요새 수비대와 차주 본진 사이를 안정적으로 밀 수 있습니다.' },
|
|
{ label: '추격 차단', classKeys: ['spearman'], reason: '길을 따라 달려드는 기병을 받아치고 후방을 지키기 좋습니다.' },
|
|
{ label: '문서 설득', classKeys: ['strategist'], reason: '역참 문서와 민심 목표를 살리면 이탈 명분이 더 분명해집니다.' },
|
|
{ label: '보급 유지', classKeys: ['quartermaster'], reason: '허도를 떠난 뒤에는 회복품과 보급 보존이 다음 전투의 여유를 만듭니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ role: 'support', unitId: 'liu-bei', x: 3, y: 19, label: '후방 지휘' },
|
|
{ role: 'front', unitId: 'guan-yu', x: 4, y: 18, label: '관문 전열' },
|
|
{ role: 'flank', unitId: 'zhang-fei', x: 4, y: 20, label: '추격 차단' },
|
|
{ role: 'support', unitId: 'sun-qian', x: 5, y: 19, label: '문서 확보' },
|
|
{ role: 'reserve', unitId: 'mi-zhu', x: 3, y: 21, label: '보급 유지' },
|
|
{ role: 'support', unitId: 'jian-yong', x: 5, y: 21, label: '책략 지원' }
|
|
],
|
|
note: '서주 재기는 조조의 감시망을 끊는 전투입니다. 추천 배치는 손건이 역참 문서를 잡고, 관우가 관문을 누르며, 장비가 남쪽 추격 기병을 막는 형태입니다.'
|
|
},
|
|
map: fourteenthBattleMap,
|
|
units: fourteenthBattleUnits,
|
|
bonds: fourteenthBattleBonds,
|
|
mapTextureKey: 'battle-map-fourteenth',
|
|
leaderUnitId: 'cao-break-leader-che-zhou',
|
|
quickVictoryTurnLimit: 30,
|
|
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: 'relay',
|
|
kind: 'secure-terrain',
|
|
label: '역참 문서 확보',
|
|
rewardGold: 520,
|
|
terrain: 'village',
|
|
targetTile: { x: 14, y: 14, radius: 4 },
|
|
threatRadius: 1
|
|
},
|
|
{
|
|
id: 'gate',
|
|
kind: 'secure-terrain',
|
|
label: '서주 관문 돌파',
|
|
rewardGold: 640,
|
|
terrain: 'fort',
|
|
targetTile: { x: 26, y: 12, radius: 3 },
|
|
threatRadius: 1
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '30턴 이내 승리',
|
|
rewardGold: 460,
|
|
maxTurn: 30
|
|
}
|
|
],
|
|
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
|
itemRewards: ['콩 5', '상처약 3', '탁주 2', '손건 문서 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 5', '상처약 3', '탁주 2'],
|
|
equipment: ['서주 통행문서 1'],
|
|
reputation: ['조조 이탈 명분 +1', '서주 민심 +1'],
|
|
unlockBattleId: 'fifteenth-battle-yuan-refuge-road',
|
|
unlockLabel: '원소 의탁로 개방',
|
|
note: '역참 문서와 서주 관문을 함께 장악해 조조의 감시망을 끊고, 원소 진영으로 향할 접선 명분을 확보합니다.'
|
|
},
|
|
victoryPages: fourteenthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const fifteenthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'fifteenth-battle-yuan-refuge-road',
|
|
title: '원소 의탁로',
|
|
victoryConditionLabel: '채양 격파',
|
|
defeatConditionLabel: '유비 퇴각',
|
|
openingObjectiveLines: [
|
|
'유비군은 조조의 추격을 피해 원소 진영으로 향합니다. 손건의 통행 문서가 닿으려면 채양의 추격대를 떨쳐 내고 북동쪽 접선지까지 길을 열어야 합니다.',
|
|
'채양 본진의 봉화대를 끊지 못하면 후방 추격 기병이 계속 따라붙습니다. 장비는 남쪽 추격로를 막고, 관우는 고갯길을 밀어 접선지 앞 수비선을 흔드십시오.',
|
|
'원소 사자가 기다리는 북동쪽 요새 접선지를 확보하고 55턴 안에 승리하면, 조운의 재합류와 다음 의탁로를 더 안정적으로 준비할 수 있습니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '서남 진영에서 중앙 고갯길을 밀고, 채양 본진 봉화대를 끊어 북동쪽 원소 접선지로 나아가는 도주/접선 전투입니다.',
|
|
route: '서남 진영 → 중앙 고갯길 → 채양 본진 봉화대 → 원소 사자 접선지',
|
|
focus:
|
|
'채양만 향해 달리면 뒤따라온 기병과 고지 궁병이 유비의 후방을 찌릅니다. 장비는 남쪽 추격로를 막고, 관우는 중앙 고갯길을 지나 채양 본진 봉화대를 끊으며, 손건과 간옹은 접선 문서와 책략 지원을 맡아야 합니다.',
|
|
roles: [
|
|
'유비: 의탁 명분 유지와 생존',
|
|
'관우: 중앙 고갯길 정면 돌파',
|
|
'장비: 남쪽 추격 기병 차단',
|
|
'손건: 원소 접선 문서 정리',
|
|
'간옹: 추격대 동요와 책략 지원',
|
|
'미축: 장기 도주전 보급 유지'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '접선 핵심 지점 접근',
|
|
lines: [
|
|
'이 지점을 잡으면 조조군의 추격로와 원소 사자에게 닿는 길이 함께 열립니다.',
|
|
'주변 방어 병력을 정리한 뒤 손건의 문서를 앞세우면 접선 명분을 잃지 않고 북상할 수 있습니다.'
|
|
]
|
|
},
|
|
'enemy-posture': {
|
|
title: '채양의 추격 진형',
|
|
lines: [
|
|
'채양은 북동쪽 요새에 버티고, 기병은 남쪽 길을 타고 후방을 물려 합니다.',
|
|
'장비로 추격로를 끊고 관우가 중앙을 누르면 손건과 간옹이 접선 문서를 안전하게 밀어 올릴 수 있습니다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '조조군 추격 기병',
|
|
lines: [
|
|
'기병이 길을 따라 유비의 후방을 노립니다.',
|
|
'장비를 남쪽 길목에 세워 먼저 받아치면 접선지로 나아갈 전열이 흐트러지지 않습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '채양 수비선 동요',
|
|
lines: [
|
|
'추격로와 접선지가 흔들리자 채양의 봉쇄선이 좁아지고 있습니다.',
|
|
'유비를 무리하게 앞세우지 말고 관우와 장비가 양쪽 압박을 유지하면 북상로가 열립니다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'support', reason: '원소에게 의탁할 명분과 생존 조건을 모두 짊어집니다. 후방 지휘를 맡깁니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '중앙 고갯길과 접선지 앞 수비선을 정면에서 밀어낼 핵심 전열입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'flank', reason: '남쪽으로 붙는 추격 기병을 받아쳐 후방 길목을 끊는 역할입니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '원소 사자와의 접선 문서를 정리해 접선지 확보 목표에 직접 힘을 보탭니다.' },
|
|
{ unitId: 'jian-yong', role: 'support', reason: '간옹의 말과 책략은 채양 추격대의 전열을 늦추는 데 유리합니다.' },
|
|
{ unitId: 'mi-zhu', role: 'reserve', reason: '긴 도주전에서 회복품과 보급선을 유지해 다음 의탁로까지 피해를 줄입니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '의탁 지휘', classKeys: ['lord'], reason: '유비 생존과 전후 명분이 원소 의탁 흐름을 좌우합니다.' },
|
|
{ label: '고갯길 전열', classKeys: ['infantry'], reason: '중앙 수비선과 채양 본진 앞 보병을 안정적으로 밀 수 있습니다.' },
|
|
{ label: '추격 차단', classKeys: ['spearman'], reason: '길을 따라 따라붙는 기병을 받아치고 후방을 지키기 좋습니다.' },
|
|
{ label: '접선 문서', classKeys: ['strategist'], reason: '원소 사자와의 접선 명분, 궁병 견제, 책략 지원이 함께 필요합니다.' },
|
|
{ label: '보급 유지', classKeys: ['quartermaster'], reason: '도주전은 피해 누적이 크므로 회복품과 보급 보존이 다음 전투 여유로 이어집니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ role: 'support', unitId: 'liu-bei', x: 3, y: 18, label: '후방 지휘' },
|
|
{ role: 'front', unitId: 'guan-yu', x: 4, y: 17, label: '고갯길 전열' },
|
|
{ role: 'flank', unitId: 'zhang-fei', x: 4, y: 19, label: '추격 차단' },
|
|
{ role: 'support', unitId: 'sun-qian', x: 5, y: 18, label: '접선 문서' },
|
|
{ role: 'support', unitId: 'jian-yong', x: 5, y: 20, label: '책략 지원' },
|
|
{ role: 'reserve', unitId: 'mi-zhu', x: 3, y: 20, label: '보급 유지' }
|
|
],
|
|
note: '원소 의탁로는 중앙 고갯길을 열고 채양 본진 봉화대를 끊은 뒤 북동쪽 접선지로 오르는 전투입니다. 추천 배치는 장비가 남쪽 기병을 막고, 관우가 고갯길을 열며, 손건과 간옹이 접선 문서와 책략으로 전열을 받치는 형태입니다.'
|
|
},
|
|
map: fifteenthBattleMap,
|
|
units: fifteenthBattleUnits,
|
|
bonds: fifteenthBattleBonds,
|
|
mapTextureKey: 'battle-map-fifteenth',
|
|
leaderUnitId: 'yuan-refuge-leader-cai-yang',
|
|
quickVictoryTurnLimit: 55,
|
|
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',
|
|
targetTile: { x: 31, y: 12, radius: 4 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'rear-guard',
|
|
kind: 'secure-terrain',
|
|
label: '채양 본진 봉화대 차단',
|
|
rewardGold: 520,
|
|
terrain: 'fort',
|
|
targetTile: { x: 31, y: 11, radius: 3 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '55턴 이내 승리',
|
|
rewardGold: 500,
|
|
maxTurn: 55
|
|
}
|
|
],
|
|
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
|
itemRewards: ['콩 6', '상처약 4', '탁주 2', '원소 접선 문서 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 6', '상처약 4', '탁주 2'],
|
|
equipment: ['원소 접선 문서 1'],
|
|
reputation: ['조조 추격 차단 +1', '원소 의탁 명분 +1'],
|
|
recruits: ['zhao-yun'],
|
|
unlockBattleId: 'sixteenth-battle-liu-biao-refuge',
|
|
unlockLabel: '유표 의탁로 개방',
|
|
note: '채양 본진 봉화대와 원소 사자 접선지를 함께 확보해 조조군의 추격 명분을 끊고, 조운이 다시 유비군에 합류할 길을 엽니다.'
|
|
},
|
|
victoryPages: fifteenthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const sixteenthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'sixteenth-battle-liu-biao-refuge',
|
|
title: '유표 의탁로',
|
|
victoryConditionLabel: '조인 격파',
|
|
defeatConditionLabel: '유비 퇴각',
|
|
openingObjectiveLines: [
|
|
'원소 진영을 오래 빌릴 수 없게 된 유비군은 형주의 유표에게 의탁하기 위해 다시 남쪽 길을 잡습니다. 조운이 재합류했지만 조조군 추격대도 강가 관문 앞에 따라붙었습니다.',
|
|
'중앙 강줄기 옆 접선로를 열어 유표의 사자에게 통행 명분을 보이고, 조운은 길게 늘어진 추격 기병을 끊어야 합니다. 관우와 장비는 관문 앞 수비선을 흔드십시오.',
|
|
'조인을 격파하고 형주 관문을 확보하십시오. 58턴 안에 승리하면 유비군의 형주 의탁 명분과 다음 융중 방문 준비가 더 단단해집니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '서남 진영에서 중앙 강가 접선로를 열고, 조운으로 추격 기병을 끊은 뒤 동쪽 형주 관문까지 밀고 가는 의탁 전투입니다.',
|
|
route: '서남 진영 → 중앙 강가 접선로 → 형주 관문 → 유표 사자 접촉',
|
|
focus:
|
|
'조인만 향해 달리면 강가 기병과 관문 궁병이 후방을 끊습니다. 조운은 중앙 길의 기병을 빠르게 받아치고, 관우와 장비는 관문 앞 수비선을 나누어 밀며, 손건은 유표 측 접선 문서를 끝까지 지켜야 합니다.',
|
|
roles: [
|
|
'유비: 형주 의탁 명분 유지와 생존',
|
|
'조운: 중앙 강가 추격 기병 차단',
|
|
'관우: 관문 수비대 정면 돌파',
|
|
'장비: 남쪽 길목 압박과 후방 차단',
|
|
'손건: 유표 사자 접선 문서 정리',
|
|
'미축: 긴 행군 보급과 회복 유지'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '형주 사자 접선로 접근',
|
|
lines: [
|
|
'이 강가 길목을 잡으면 유표의 사자에게 닿는 명분로가 열립니다.',
|
|
'조운으로 추격 기병을 먼저 끊고 손건의 문서를 앞으로 올리면, 관문 돌파가 단순 도주가 아니라 의탁의 형식이 됩니다.'
|
|
]
|
|
},
|
|
'enemy-posture': {
|
|
title: '조인의 관문 봉쇄',
|
|
lines: [
|
|
'조인은 형주 관문 앞에 수비병과 궁병을 세우고, 기병으로 중앙 강가 길을 물려 합니다.',
|
|
'관우는 관문 전열을 누르고, 장비는 남쪽 길을 흔들며, 조운은 기병이 유비의 뒤를 물기 전에 잘라 내십시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '추격 기병 접근',
|
|
lines: [
|
|
'조조군 기병이 강가 길을 타고 빠르게 붙습니다.',
|
|
'새로 합류한 조운을 중앙에 세우면 기병을 먼저 끊고 아군 전열이 관문 앞까지 안정적으로 전진할 수 있습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '조인의 봉쇄선 동요',
|
|
lines: [
|
|
'접선로와 관문 수비선이 동시에 흔들리자 조인의 추격 명분도 약해지고 있습니다.',
|
|
'유비를 무리하게 앞세우지 말고, 조운과 관우가 길을 연 뒤 손건이 접선 명분을 마무리하십시오.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'support', reason: '형주 의탁 명분과 생존 조건을 모두 짊어집니다. 후방 지휘에 둡니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '새로 합류한 백마 기병으로 중앙 강가 길의 추격 기병을 빠르게 끊습니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '형주 관문 수비대를 정면에서 밀어낼 핵심 전열입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'flank', reason: '남쪽 길목을 압박해 조인의 수비선이 한곳에 모이지 못하게 합니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '유표 사자와의 접선 문서를 정리해 관문 확보 목표에 직접 힘을 보탭니다.' },
|
|
{ unitId: 'mi-zhu', role: 'reserve', reason: '긴 행군과 관문전의 피해 누적을 회복품과 보급으로 줄입니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '의탁 지휘', classKeys: ['lord'], reason: '유비 생존과 전후 명분이 형주 의탁 흐름의 중심입니다.' },
|
|
{ label: '관문 전열', classKeys: ['infantry'], reason: '동쪽 관문 수비대와 조인의 전열을 안정적으로 밀 수 있습니다.' },
|
|
{ label: '기병 차단', classKeys: ['cavalry'], reason: '중앙 강가 길을 따라 붙는 추격 기병을 조운이 빠르게 끊을 수 있습니다.' },
|
|
{ label: '측면 압박', classKeys: ['spearman'], reason: '남쪽 길목의 기병과 보병을 받아치며 관문 수비선을 흔들기 좋습니다.' },
|
|
{ label: '접선 문서', classKeys: ['strategist'], reason: '유표 사자와의 접선 명분, 궁병 견제, 책략 지원이 함께 필요합니다.' },
|
|
{ label: '보급 유지', classKeys: ['quartermaster'], reason: '긴 의탁로에서는 회복과 소모품 배분이 다음 전투 여유로 이어집니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ role: 'support', unitId: 'liu-bei', x: 3, y: 20, label: '후방 지휘' },
|
|
{ role: 'front', unitId: 'guan-yu', x: 4, y: 19, label: '관문 전열' },
|
|
{ role: 'flank', unitId: 'zhang-fei', x: 4, y: 21, label: '남쪽 압박' },
|
|
{ role: 'flank', unitId: 'zhao-yun', x: 6, y: 21, label: '기병 차단' },
|
|
{ role: 'support', unitId: 'sun-qian', x: 5, y: 20, label: '접선 문서' },
|
|
{ role: 'reserve', unitId: 'mi-zhu', x: 3, y: 22, label: '보급 유지' }
|
|
],
|
|
note: '유표 의탁로는 새로 합류한 조운의 기동력을 처음 체감하는 전투입니다. 중앙 강가 접선로를 조운이 열고, 관우와 장비가 관문 앞 수비선을 나누어 밀며, 손건과 미축이 의탁 명분과 보급을 받치는 편성이 안정적입니다.'
|
|
},
|
|
map: sixteenthBattleMap,
|
|
units: sixteenthBattleUnits,
|
|
bonds: sixteenthBattleBonds,
|
|
mapTextureKey: 'battle-map-sixteenth',
|
|
leaderUnitId: 'liu-biao-road-leader-cao-ren',
|
|
quickVictoryTurnLimit: 58,
|
|
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-rendezvous',
|
|
kind: 'secure-terrain',
|
|
label: '형주 사자 접선로 확보',
|
|
rewardGold: 560,
|
|
terrain: 'village',
|
|
targetTile: { x: 22, y: 10, radius: 3 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'jingzhou-gate',
|
|
kind: 'secure-terrain',
|
|
label: '형주 관문 확보',
|
|
rewardGold: 720,
|
|
terrain: 'fort',
|
|
targetTile: { x: 31, y: 14, radius: 4 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '58턴 이내 승리',
|
|
rewardGold: 540,
|
|
maxTurn: 58
|
|
}
|
|
],
|
|
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
|
itemRewards: ['콩 6', '상처약 5', '탁주 2', '유표 객장 서찰 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 6', '상처약 5', '탁주 2'],
|
|
equipment: ['유표 객장 서찰 1'],
|
|
reputation: ['형주 의탁 명분 +1', '조운 재합류 전공 +1'],
|
|
unlockBattleId: 'seventeenth-battle-wolong-visit-road',
|
|
unlockLabel: '융중 방문로 개방',
|
|
note: '중앙 접선로와 형주 관문을 함께 확보해 유표의 객장으로 들어갈 명분을 얻고, 조운의 기동 전공이 유비군의 새 전열로 자리 잡습니다.'
|
|
},
|
|
victoryPages: sixteenthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const seventeenthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'seventeenth-battle-wolong-visit-road',
|
|
title: '융중 방문로',
|
|
victoryConditionLabel: '채순 격파',
|
|
defeatConditionLabel: '유비 퇴각',
|
|
openingObjectiveLines: [
|
|
'형주 객장에 머물던 유비군은 선비들의 말을 모아 융중의 와룡을 찾아갑니다. 그러나 채씨 가병이 산길과 초가 앞을 막아 유비의 방문을 견제합니다.',
|
|
'중앙 산길의 문사 접선지를 확보해 와룡의 거처가 맞는지 확인하고, 조운은 숲길 척후와 기병을 끊어 유비가 직접 예를 갖춰 나아갈 길을 여십시오.',
|
|
'채순을 격파하고 융중 초가 길을 확보하십시오. 60턴 안에 승리하면 제갈량 영입과 박망파 계책 준비가 더 안정적으로 이어집니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '서남 진영에서 산길 문사 접선지를 확인하고, 숲길 감시병을 끊어 동쪽 융중 초가까지 예를 갖춰 나아가는 방문 전투입니다.',
|
|
route: '서남 진영 → 산길 문사 접선지 → 숲길 감시선 → 융중 초가 길',
|
|
focus:
|
|
'채순만 급히 치면 유비의 방문이 무례한 돌파처럼 보입니다. 손건은 산길 문사에게 와룡의 거처를 확인하고, 조운은 숲길 척후와 기병을 끊으며, 관우와 장비가 초가 앞 감시선을 정리해야 합니다.',
|
|
roles: [
|
|
'유비: 직접 예를 갖추는 방문 주체',
|
|
'조운: 산길 척후와 기병 차단',
|
|
'관우: 초가 앞 수비선 정면 돌파',
|
|
'장비: 좁은 길목 압박과 후방 차단',
|
|
'손건: 선비 접선과 방문 예법 정리',
|
|
'미축: 산길 장기전 보급 유지'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '산길 문사 접선지 접근',
|
|
lines: [
|
|
'이 길목의 문사에게 닿으면 와룡의 거처와 초가로 오르는 예법을 확인할 수 있습니다.',
|
|
'손건을 너무 뒤에 두지 말고, 조운이 척후를 끊는 동안 유비의 방문 명분을 먼저 세우십시오.'
|
|
]
|
|
},
|
|
'enemy-posture': {
|
|
title: '채씨 가병의 감시선',
|
|
lines: [
|
|
'채순은 초가 앞을 직접 막고, 궁병과 기병은 숲길에서 유비군의 예행을 흐트러뜨리려 합니다.',
|
|
'관우가 정면 수비선을 누르고 장비가 좁은 길목을 흔들면, 조운이 척후와 기병을 빠르게 정리할 수 있습니다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '산길 기병 접근',
|
|
lines: [
|
|
'산길 기병이 중앙 길목으로 파고듭니다.',
|
|
'조운을 앞세워 먼저 끊으면 유비와 손건이 문사 접선지까지 무리 없이 올라갈 수 있습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '채순 감시선 동요',
|
|
lines: [
|
|
'문사 접선지와 초가 길이 모두 흔들리자 채순의 명분도 약해지고 있습니다.',
|
|
'유비가 직접 나아갈 길을 열되, 마지막까지 초가 주변을 거칠게 밟지 않도록 전열을 정돈하십시오.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'support', reason: '와룡을 직접 찾아가 예를 갖추는 방문 주체입니다. 생존 조건도 함께 짊어집니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '산길 척후와 기병을 빠르게 끊어 유비의 방문로를 안정시킵니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '초가 앞 수비병을 정면에서 밀어낼 전열 핵심입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'flank', reason: '좁은 길목을 압박해 채순의 감시선이 한곳에 버티지 못하게 합니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '형주 선비와 접선하고 와룡 방문의 예와 명분을 정리합니다.' },
|
|
{ unitId: 'mi-zhu', role: 'reserve', reason: '산길 장기전의 회복품과 보급을 맡아 다음 박망파 전투 여유를 남깁니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '방문 주체', classKeys: ['lord'], reason: '유비가 직접 예를 갖춰 방문해야 제갈량 영입 명분이 살아납니다.' },
|
|
{ label: '초가 전열', classKeys: ['infantry'], reason: '초가 앞 수비병과 채순의 전열을 안정적으로 밀 수 있습니다.' },
|
|
{ label: '척후 차단', classKeys: ['cavalry'], reason: '산길 척후와 기병을 빠르게 끊어 방문로를 열 수 있습니다.' },
|
|
{ label: '길목 압박', classKeys: ['spearman'], reason: '좁은 길목의 기병과 보병을 받아치며 감시선을 흔들기 좋습니다.' },
|
|
{ label: '방문 예법', classKeys: ['strategist'], reason: '선비 접선, 방문 명분, 궁병 견제와 책략 지원이 함께 필요합니다.' },
|
|
{ label: '보급 유지', classKeys: ['quartermaster'], reason: '산길 전투는 피해 누적이 커 회복과 소모품 운용이 중요합니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ role: 'support', unitId: 'liu-bei', x: 3, y: 21, label: '방문 주체' },
|
|
{ role: 'front', unitId: 'guan-yu', x: 4, y: 20, label: '초가 전열' },
|
|
{ role: 'flank', unitId: 'zhang-fei', x: 4, y: 22, label: '길목 압박' },
|
|
{ role: 'flank', unitId: 'zhao-yun', x: 6, y: 22, label: '척후 차단' },
|
|
{ role: 'support', unitId: 'sun-qian', x: 5, y: 21, label: '방문 예법' },
|
|
{ role: 'reserve', unitId: 'mi-zhu', x: 3, y: 23, label: '보급 유지' }
|
|
],
|
|
note: '융중 방문로는 제갈량 영입 직전의 예행 전투입니다. 조운으로 척후와 기병을 끊고, 손건으로 산길 문사 접선지를 확인한 뒤, 관우와 장비가 초가 앞 감시선을 정리하는 편성이 안정적입니다.'
|
|
},
|
|
map: seventeenthBattleMap,
|
|
units: seventeenthBattleUnits,
|
|
bonds: seventeenthBattleBonds,
|
|
mapTextureKey: 'battle-map-seventeenth',
|
|
leaderUnitId: 'wolong-road-leader-cai-xun',
|
|
quickVictoryTurnLimit: 60,
|
|
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: 'scholar-rendezvous',
|
|
kind: 'secure-terrain',
|
|
label: '산길 문사 접선지 확인',
|
|
rewardGold: 600,
|
|
terrain: 'village',
|
|
targetTile: { x: 22, y: 17, radius: 10 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'longzhong-cottage',
|
|
kind: 'secure-terrain',
|
|
label: '융중 초가 길 확보',
|
|
rewardGold: 720,
|
|
terrain: 'village',
|
|
targetTile: { x: 29, y: 14, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '60턴 이내 승리',
|
|
rewardGold: 560,
|
|
maxTurn: 60
|
|
}
|
|
],
|
|
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
|
itemRewards: ['콩 6', '상처약 5', '탁주 2', '와룡의 서찰 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 6', '상처약 5', '탁주 2'],
|
|
equipment: ['와룡의 서찰 1'],
|
|
reputation: ['와룡 방문 예우 +1', '형주 선비 신망 +1'],
|
|
recruits: ['zhuge-liang'],
|
|
unlockBattleId: 'eighteenth-battle-bowang-ambush',
|
|
unlockLabel: '박망파 매복전 개방',
|
|
note: '산길 문사 접선지와 융중 초가 길을 모두 확보해 유비의 삼고초려 명분을 세우고, 제갈량이 유비군에 합류할 길을 엽니다.'
|
|
},
|
|
victoryPages: seventeenthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const eighteenthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'eighteenth-battle-bowang-ambush',
|
|
title: '박망파 매복전',
|
|
victoryConditionLabel: '하후돈 퇴각',
|
|
defeatConditionLabel: '유비 퇴각',
|
|
openingObjectiveLines: [
|
|
'제갈량이 합류한 뒤 처음 맞는 실전입니다. 조조군 선봉 하후돈은 신야로 곧장 밀고 들어오지만, 박망파의 숲길과 물길은 매복에 유리합니다.',
|
|
'서쪽 진영은 일부러 길을 내주는 듯 버티고, 중앙 숲길의 화공 매복지를 확보하십시오. 조운은 기병을 끊고, 관우와 장비는 좁은 길목에서 적 전열을 갈라야 합니다.',
|
|
'하후돈을 퇴각시키고 박망파의 길목을 지키십시오. 40턴 안에 승리하면 강동과 손잡을 시간을 더 벌 수 있습니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '서쪽 신야 진영에서 조조군 선봉을 숲길 안쪽으로 끌어들인 뒤, 중앙 화공 매복지와 동쪽 길목에서 하후돈의 전열을 끊는 전투입니다.',
|
|
route: '서쪽 신야 진영 → 박망 숲길 미끼선 → 화공 매복지 → 하후돈 본대',
|
|
focus:
|
|
'하후돈을 바로 치기보다 박망 숲길 중앙의 매복지를 먼저 잡아야 제갈량의 첫 계책이 살아납니다. 조운이 기병을 늦추고, 관우와 장비가 길목을 막는 동안 제갈량은 화공과 혼란으로 적 전열을 나눕니다.',
|
|
roles: [
|
|
'제갈량: 화공 매복과 적 전열 분리',
|
|
'유비: 후방 지휘와 생존 조건 유지',
|
|
'조운: 추격 기병 차단과 측면 흔들기',
|
|
'관우: 좁은 길목 전열 유지',
|
|
'장비: 매복 후 역습과 돌파',
|
|
'손건: 강동 사절로 이어질 전후 보고 정리'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '화공 매복지 접근',
|
|
lines: [
|
|
'이 숲길 안쪽을 잡으면 하후돈의 선봉을 좁은 길과 불길 사이에 묶을 수 있습니다.',
|
|
'제갈량을 너무 뒤에 두지 말고, 관우와 장비가 길목을 누르는 동안 화공 책략을 준비하십시오.'
|
|
]
|
|
},
|
|
'enemy-posture': {
|
|
title: '하후돈 선봉 돌입',
|
|
lines: [
|
|
'하후돈은 속도를 믿고 곧장 밀고 들어옵니다.',
|
|
'초반에는 서쪽 진영을 무리하게 넓히지 말고, 조조군 기병이 숲길 안으로 들어오도록 전열을 낮게 잡으십시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '추격 기병 접근',
|
|
lines: [
|
|
'조조군 기병이 숲길 측면으로 파고듭니다.',
|
|
'조운이 먼저 끊어 내면 제갈량의 화공 매복지가 안정되고, 유비의 후방 지휘선도 흔들리지 않습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '하후돈 전열 동요',
|
|
lines: [
|
|
'매복지와 길목이 모두 유비군 손에 들어오자 하후돈의 전열이 길게 찢어지고 있습니다.',
|
|
'남은 친위병을 정리하고 하후돈을 몰아내면 강동 사절로 이어질 시간을 벌 수 있습니다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'support', reason: '후방에서 전열을 묶는 지휘 주체이며 패배 조건입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '박망파 화공 매복과 혼란 책략을 맡는 이번 전투의 핵심입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '추격 기병을 끊고 숲길 측면을 빠르게 흔들 수 있습니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '좁은 길목에서 하후돈 친위와 보병 전열을 받아냅니다.' },
|
|
{ unitId: 'zhang-fei', role: 'flank', reason: '매복 후 역습으로 적 선봉을 밀어내는 돌파 역할입니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '전후 보고와 강동 사절로 이어질 명분을 정리합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '화공 책략', classKeys: ['strategist'], reason: '박망파 매복은 제갈량의 화공과 혼란 책략이 중심입니다.' },
|
|
{ label: '후방 지휘', classKeys: ['lord'], reason: '유비가 안전하게 버텨야 조조군 선봉을 끌어들일 수 있습니다.' },
|
|
{ label: '길목 전열', classKeys: ['infantry'], reason: '좁은 숲길에서 적 보병과 친위대를 안정적으로 받아낼 수 있습니다.' },
|
|
{ label: '기병 차단', classKeys: ['cavalry'], reason: '조조군 기병을 먼저 끊어 화공 매복지가 흔들리지 않게 합니다.' },
|
|
{ label: '역습 돌파', classKeys: ['spearman'], reason: '매복이 시작된 뒤 밀려든 적을 밀어내기 좋습니다.' },
|
|
{ label: '전후 보고', classKeys: ['strategist'], reason: '강동 사절로 이어질 명분과 보상 흐름을 보조합니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ role: 'support', unitId: 'liu-bei', x: 3, y: 18, label: '후방 지휘' },
|
|
{ role: 'front', unitId: 'guan-yu', x: 4, y: 17, label: '길목 전열' },
|
|
{ role: 'flank', unitId: 'zhang-fei', x: 4, y: 19, label: '역습 돌파' },
|
|
{ role: 'flank', unitId: 'zhao-yun', x: 6, y: 17, label: '기병 차단' },
|
|
{ role: 'support', unitId: 'zhuge-liang', x: 6, y: 19, label: '화공 책략' },
|
|
{ role: 'support', unitId: 'sun-qian', x: 5, y: 20, label: '전후 보고' }
|
|
],
|
|
note: '박망파 매복전은 제갈량의 첫 실전 계책입니다. 유비와 제갈량을 반드시 포함하고, 조운으로 기병을 끊은 뒤 관우와 장비가 숲길 길목을 눌러 화공 매복지를 안정시키는 편성이 좋습니다.'
|
|
},
|
|
map: eighteenthBattleMap,
|
|
units: eighteenthBattleUnits,
|
|
bonds: eighteenthBattleBonds,
|
|
mapTextureKey: 'battle-map-eighteenth',
|
|
leaderUnitId: 'bowang-leader-xiahou-dun',
|
|
quickVictoryTurnLimit: 40,
|
|
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',
|
|
targetTile: { x: 27, y: 18, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '40턴 이내 승리',
|
|
rewardGold: 600,
|
|
maxTurn: 40
|
|
}
|
|
],
|
|
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
|
itemRewards: ['콩 7', '상처약 4', '탁주 2', '강동 풍문 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 7', '상처약 4', '탁주 2'],
|
|
reputation: ['박망파 첫 계책 +1', '강동 사절 명분 +1'],
|
|
unlockBattleId: 'nineteenth-battle-changban-refuge',
|
|
unlockLabel: '장판파 피난로 개방',
|
|
note: '제갈량의 첫 화공 매복으로 조조군 선봉을 늦추고, 강동과 손잡을 시간을 벌어 장판파 피난로로 이어집니다.'
|
|
},
|
|
victoryPages: eighteenthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const nineteenthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'nineteenth-battle-changban-refuge',
|
|
title: '장판파 피난로',
|
|
victoryConditionLabel: '조순 퇴각',
|
|
defeatConditionLabel: '유비 또는 조운 퇴각',
|
|
openingObjectiveLines: [
|
|
'조조군 호표기가 피난 행렬을 따라 장판파로 들이칩니다. 백성을 버리지 않으려면 남쪽 피난로와 다리목을 동시에 지켜야 합니다.',
|
|
'조운은 넓은 길을 오가며 흩어진 병력을 모을 수 있고, 장비는 다리목을 막아 추격 기병을 늦추기 좋습니다. 제갈량과 손건은 전후 강동 사절 명분을 정리합니다.',
|
|
'조순을 퇴각시키고 유비와 조운을 지키십시오. 피난민 마을과 장판교 길목을 확보하고 36턴 안에 승리하면 다음 강동 사절 준비가 안정됩니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '서쪽 피난 행렬을 지키며 중앙 마을을 잡고, 장판교 길목에서 추격 기병을 늦춘 뒤 조순을 밀어냅니다.',
|
|
route: '서쪽 피난 진영 → 중앙 피난민 마을 → 장판교 길목 → 조순 본대',
|
|
focus: '조운은 흩어진 전열을 오가며 중앙 피난로를 열고, 장비와 관우는 장판교 길목을 막아 기병 돌파를 늦추십시오. 유비는 뒤에서 피난 행렬을 유지하고 제갈량과 손건은 다음 강동 사절 명분을 정리합니다.',
|
|
roles: ['유비: 후방 피난 지휘', '조운: 피난로 기동/구원', '장비: 장판교 길목 저지', '관우: 전열 받침', '제갈량: 퇴로 판단/책략', '손건: 강동 사절 기록'],
|
|
events: {
|
|
'village-approach': {
|
|
title: '피난민 거점 접근',
|
|
lines: ['중앙 마을은 피난 행렬이 다시 모이는 지점입니다.', '조운으로 길을 열고 주변 추격대를 몰아내면 백성과 보급을 함께 보존할 수 있습니다.']
|
|
},
|
|
'cavalry-approach': {
|
|
title: '호표기 접근',
|
|
lines: ['추격 기병은 길을 따라 빠르게 파고듭니다.', '장비와 관우를 좁은 길목에 세워 조운이 피난로를 정리할 시간을 벌어야 합니다.']
|
|
},
|
|
'leader-wavering': {
|
|
title: '조순 전열 흔들림',
|
|
lines: ['조순의 친위가 무너지면 추격대의 속도도 꺾입니다.', '남은 병력을 조운과 전열 장수에게 모아 퇴각로를 완전히 여십시오.']
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhao-yun'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '피난 행렬의 중심이며 패배 조건입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '피난로를 오가며 흩어진 병력과 백성을 붙잡는 핵심 기동 장수입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '장판교와 좁은 길목에서 추격 기병을 늦추는 역할입니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '장비가 버티는 다리목 전열을 안정적으로 받쳐 줍니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '피난로 판단과 강동 사절 명분을 전투 뒤로 연결합니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '강동에 보낼 기록과 외교 명분을 정리합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '피난 지휘', classKeys: ['lord'], reason: '유비가 후방에서 무너지지 않아야 피난 행렬이 유지됩니다.' },
|
|
{ label: '기동 구원', classKeys: ['cavalry'], reason: '조운 같은 기동 장수가 마을과 다리목 사이를 오가야 합니다.' },
|
|
{ label: '길목 전열', classKeys: ['infantry', 'spearman'], reason: '장판교 길목은 튼튼한 전열이 있어야 추격 기병을 늦출 수 있습니다.' },
|
|
{ label: '책략/기록', classKeys: ['strategist'], reason: '제갈량과 손건은 전투 결과를 다음 강동 사절로 이어 줍니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 22, role: 'reserve', unitId: 'liu-bei', label: '후방 피난 지휘' },
|
|
{ x: 5, y: 20, role: 'front', unitId: 'guan-yu', label: '전열 받침' },
|
|
{ x: 6, y: 22, role: 'front', unitId: 'zhang-fei', label: '장판교 전열' },
|
|
{ x: 8, y: 20, role: 'flank', unitId: 'zhao-yun', label: '피난로 기동' },
|
|
{ x: 5, y: 23, role: 'support', unitId: 'zhuge-liang', label: '퇴로 판단' },
|
|
{ x: 6, y: 24, role: 'support', unitId: 'sun-qian', label: '사절 기록' }
|
|
],
|
|
note: '장판파 피난로는 유비와 조운 생존이 핵심입니다. 조운으로 중앙 피난로를 열고, 장비와 관우가 장판교 길목을 막아 제갈량과 손건이 강동에 전할 근거를 남기는 편성이 좋습니다.'
|
|
},
|
|
map: nineteenthBattleMap,
|
|
units: nineteenthBattleUnits,
|
|
bonds: nineteenthBattleBonds,
|
|
mapTextureKey: 'battle-map-nineteenth',
|
|
leaderUnitId: 'changban-leader-cao-chun',
|
|
quickVictoryTurnLimit: 36,
|
|
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',
|
|
targetTile: { x: 20, y: 20, radius: 6 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'changban-bridge',
|
|
kind: 'secure-terrain',
|
|
label: '장판교 길목 확보',
|
|
rewardGold: 760,
|
|
terrain: 'road',
|
|
targetTile: { x: 23, y: 22, radius: 6 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '36턴 이내 승리',
|
|
rewardGold: 620,
|
|
maxTurn: 36
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhao-yun' }
|
|
],
|
|
itemRewards: ['콩 7', '상처약 5', '탁주 2', '피난로 지도 +1', '장판교 방어 기록 +1', '강동 풍문 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 7', '상처약 5', '탁주 2'],
|
|
reputation: ['피난민 보호 +1', '장판교 방어 기록 +1', '강동 풍문 +1'],
|
|
unlockBattleId: 'twentieth-battle-jiangdong-envoy',
|
|
unlockLabel: '강동 사절로 개방',
|
|
note: '장판파에서 백성과 조운을 지켜 강동에 조조 남하를 전할 명분을 확보합니다.'
|
|
},
|
|
victoryPages: nineteenthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentiethBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twentieth-battle-jiangdong-envoy',
|
|
title: '강동 사절로',
|
|
victoryConditionLabel: '문빙 퇴각',
|
|
defeatConditionLabel: '유비, 제갈량 또는 손건 퇴각',
|
|
openingObjectiveLines: [
|
|
'장판파를 벗어난 유비군은 강동에 보낼 사절 문서를 하구 나루까지 옮겨야 합니다. 문빙의 추격대가 강변 길목과 포구를 막기 전에 길을 열어야 합니다.',
|
|
'제갈량과 손건은 뒤에서 문서와 회담 논리를 지키고, 조운은 추격 기병을 끊으며 전열 장수는 강변 길목을 붙드십시오.',
|
|
'문빙을 퇴각시키고 강변 접선지와 강나루를 확보하십시오. 제갈량과 손건이 살아남으면 적벽대전으로 향할 외교 명분이 완성됩니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '서남쪽 피난 진영에서 출발해 강변 접선지를 잡고, 길목의 추격 기병을 끊은 뒤 동쪽 강나루를 열어 문빙을 몰아내는 사절 호위전입니다.',
|
|
route: '서남 피난 진영 → 강변 접선지 → 하구 나루 → 문빙 본대',
|
|
focus:
|
|
'제갈량과 손건을 무리하게 앞으로 세우지 말고, 조운으로 중간 추격 기병을 끊어 사절 문서가 지나갈 틈을 만드십시오. 관우와 장비는 강변 길목의 보병을 받아내고, 유비는 후방에서 사절단의 퇴로를 유지해야 합니다.',
|
|
roles: [
|
|
'유비: 후방 지휘와 사절단 퇴로 유지',
|
|
'제갈량: 강동 설득 논리와 책략 지원',
|
|
'손건: 사절 문서와 회담 기록 보존',
|
|
'조운: 추격 기병 차단과 측면 호위',
|
|
'관우: 강변 길목 전열 유지',
|
|
'장비: 포구 수비대 돌파'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '강변 접선지 접근',
|
|
lines: [
|
|
'이 접선지를 잡으면 사절 문서를 나루까지 옮길 길이 보입니다.',
|
|
'제갈량과 손건은 전열 뒤에 두고, 조운이 먼저 추격 기병을 끊어 통로를 여십시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '추격 기병 압박',
|
|
lines: [
|
|
'문빙의 기병이 강변 길목으로 파고듭니다.',
|
|
'조운을 측면으로 돌리고 관우와 장비가 길목을 눌러야 사절단이 뒤에서 무너지지 않습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '문빙 본대 동요',
|
|
lines: [
|
|
'접선지와 포구가 모두 열리자 문빙의 추격선이 길게 늘어졌습니다.',
|
|
'남은 수비대를 정리하고 문빙을 몰아내면 강동 회담으로 이어질 길이 열립니다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang', 'sun-qian'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '사절을 보내는 결단과 패배 조건의 중심입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '강동 설득 논리를 지키는 핵심 인물이며 반드시 보호해야 합니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '사절 문서와 회담 기록을 맡는 생존 목표입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '추격 기병을 끊고 사절의 측면을 지키는 데 좋습니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '강변 길목에서 보병 전열과 포구 수비대를 받아냅니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '포구 수비대를 빠르게 흔들어 사절단이 길게 물리지 않게 합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '사절 보호', classKeys: ['strategist'], reason: '제갈량과 손건을 안전하게 유지해야 강동 회담으로 이어집니다.' },
|
|
{ label: '후방 지휘', classKeys: ['lord'], reason: '유비가 퇴로를 붙들어야 사절단이 끊기지 않습니다.' },
|
|
{ label: '기병 차단', classKeys: ['cavalry'], reason: '조운 같은 기동 장수가 중간 추격 기병을 먼저 끊어야 합니다.' },
|
|
{ label: '길목 전열', classKeys: ['infantry', 'spearman'], reason: '강변 길목과 포구 수비대를 안정적으로 받아낼 전열이 필요합니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 22, role: 'reserve', unitId: 'liu-bei', label: '후방 지휘' },
|
|
{ x: 5, y: 20, role: 'front', unitId: 'guan-yu', label: '강변 전열' },
|
|
{ x: 6, y: 23, role: 'front', unitId: 'zhang-fei', label: '포구 돌파' },
|
|
{ x: 8, y: 21, role: 'flank', unitId: 'zhao-yun', label: '측면 호위' },
|
|
{ x: 6, y: 21, role: 'support', unitId: 'zhuge-liang', label: '회담 논리' },
|
|
{ x: 4, y: 24, role: 'support', unitId: 'sun-qian', label: '사절 문서' }
|
|
],
|
|
note: '강동 사절로는 제갈량과 손건을 무사히 나루까지 보내는 전투입니다. 유비는 후방 지휘, 조운은 측면 호위, 관우와 장비는 강변 길목과 포구 돌파를 맡는 편성이 안정적입니다.'
|
|
},
|
|
map: twentiethBattleMap,
|
|
units: twentiethBattleUnits,
|
|
bonds: twentiethBattleBonds,
|
|
mapTextureKey: 'battle-map-twentieth',
|
|
leaderUnitId: 'envoy-road-leader-wen-pin',
|
|
quickVictoryTurnLimit: 38,
|
|
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',
|
|
targetTile: { x: 35, y: 18, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'envoy-rendezvous',
|
|
kind: 'secure-terrain',
|
|
label: '강변 접선지 확보',
|
|
rewardGold: 720,
|
|
terrain: 'village',
|
|
targetTile: { x: 29, y: 16, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '38턴 이내 승리',
|
|
rewardGold: 640,
|
|
maxTurn: 38
|
|
}
|
|
],
|
|
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'],
|
|
campaignReward: {
|
|
supplies: ['콩 8', '상처약 6', '탁주 3'],
|
|
equipment: ['강동 사절 문서 1'],
|
|
reputation: ['강동 회담 명분 +1', '화공 논의 +1'],
|
|
unlockBattleId: 'twenty-first-battle-red-cliffs-vanguard',
|
|
unlockLabel: '적벽 전초전 개방',
|
|
note: '강변 접선지와 강나루를 확보해 제갈량과 손건이 손권·주유에게 전할 회담 명분을 완성합니다.'
|
|
},
|
|
victoryPages: twentiethBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentyFirstBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twenty-first-battle-red-cliffs-vanguard',
|
|
title: '적벽 전초전',
|
|
victoryConditionLabel: '채모 퇴각',
|
|
defeatConditionLabel: '유비 또는 제갈량 퇴각',
|
|
openingObjectiveLines: [
|
|
'강동 회담이 결전으로 기울자 조조군 수군 선봉이 적벽 포구를 시험합니다. 첫 강상 전선을 빼앗기면 손유 동맹의 사기가 크게 흔들립니다.',
|
|
'강 위의 전장은 강줄기와 배다리가 길을 나눕니다. 조운은 강안 기병을 끊고, 관우와 장비는 배다리와 포구 수비대를 밀어내야 합니다.',
|
|
'채모를 퇴각시키고 제갈량을 지키십시오. 배다리 거점과 강동 포구를 확보하면 다음 화공전의 발판이 마련됩니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '서남쪽 동맹 진영에서 배다리 거점을 잡고, 강안 기병과 선상 궁병을 끊은 뒤 동쪽 포구의 채모 선봉을 몰아내는 첫 강상 전투입니다.',
|
|
route: '서남 동맹 진영 → 배다리 거점 → 강동 포구 → 채모 본대',
|
|
focus:
|
|
'강안 기병이 후방을 흔들기 전에 조운으로 먼저 끊고, 관우와 장비가 배다리와 포구 전열을 받아내야 합니다. 제갈량은 뒤에서 화공 논리를 보존하고, 유비는 손유 동맹의 전선을 무리하게 넓히지 않도록 지휘하십시오.',
|
|
roles: [
|
|
'유비: 손유 동맹 전선 지휘',
|
|
'제갈량: 화공 논의와 책략 지원',
|
|
'조운: 강안 기병 차단',
|
|
'관우: 배다리 전열 유지',
|
|
'장비: 포구 수비대 돌파',
|
|
'손건: 동맹 회담 기록 보존'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '배다리 거점 접근',
|
|
lines: [
|
|
'이 거점을 잡으면 강동 수군과 유비군의 전선이 처음으로 맞물립니다.',
|
|
'궁병의 사거리에 오래 서지 말고, 전열 장수로 배다리를 눌러 포구까지 이어지는 길을 만드십시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '강안 기병 접근',
|
|
lines: [
|
|
'조조군 기병이 강안으로 우회해 후방을 노립니다.',
|
|
'조운이 먼저 끊어야 제갈량과 손건의 동맹 기록선이 흔들리지 않습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '채모 선봉 동요',
|
|
lines: [
|
|
'배다리와 포구가 모두 손유 동맹 쪽으로 넘어오자 채모의 선봉이 배 위에서 흔들립니다.',
|
|
'남은 친위를 정리하고 채모를 물리치면 화공을 논할 첫 실전 근거가 생깁니다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '손유 동맹의 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '바람과 화공을 잇는 계책 담당이며 반드시 생존해야 합니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '강안의 기병과 척후를 빠르게 끊어 포구를 안정시킵니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '배다리와 포구 전열에서 적 수군을 받아낼 핵심 전열입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '좁은 강변 길목을 밀어붙이며 적 보병을 흔드는 돌파 역할입니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '강동 회담 기록과 동맹 명분을 전투 뒤 보고로 이어 줍니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '동맹 지휘', classKeys: ['lord'], reason: '유비가 무너지지 않아야 손유 동맹 전선이 유지됩니다.' },
|
|
{ label: '화공 책략', classKeys: ['strategist'], reason: '제갈량의 생존과 판단이 다음 적벽 화공전으로 이어집니다.' },
|
|
{ label: '강안 기동', classKeys: ['cavalry'], reason: '기동 장수가 강안 기병과 척후를 빠르게 끊어야 합니다.' },
|
|
{ label: '배다리 전열', classKeys: ['infantry', 'spearman'], reason: '배다리와 포구 수비대는 튼튼한 전열이 받아내야 합니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 24, role: 'reserve', unitId: 'liu-bei', label: '동맹 지휘' },
|
|
{ x: 6, y: 22, role: 'front', unitId: 'guan-yu', label: '배다리 전열' },
|
|
{ x: 6, y: 25, role: 'front', unitId: 'zhang-fei', label: '포구 돌파' },
|
|
{ x: 8, y: 21, role: 'flank', unitId: 'zhao-yun', label: '강안 기동' },
|
|
{ x: 6, y: 23, role: 'support', unitId: 'zhuge-liang', label: '화공 판단' },
|
|
{ x: 8, y: 24, role: 'support', unitId: 'sun-qian', label: '동맹 기록' }
|
|
],
|
|
note: '적벽 전초전은 손유 동맹의 첫 강상 전투입니다. 유비와 제갈량을 반드시 포함하고, 조운으로 강안 기병을 끊은 뒤 관우와 장비가 배다리와 포구를 눌러 화공 논의의 발판을 만드는 편성이 좋습니다.'
|
|
},
|
|
map: twentyFirstBattleMap,
|
|
units: twentyFirstBattleUnits,
|
|
bonds: twentyFirstBattleBonds,
|
|
mapTextureKey: 'battle-map-twenty-first',
|
|
leaderUnitId: 'redcliff-vanguard-leader-cai-mao',
|
|
quickVictoryTurnLimit: 40,
|
|
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',
|
|
targetTile: { x: 35, y: 18, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'pontoon-line',
|
|
kind: 'secure-terrain',
|
|
label: '배다리 거점 확보',
|
|
rewardGold: 760,
|
|
terrain: 'village',
|
|
targetTile: { x: 29, y: 18, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '40턴 이내 승리',
|
|
rewardGold: 680,
|
|
maxTurn: 40
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
|
|
],
|
|
itemRewards: ['콩 8', '상처약 6', '탁주 3', '화공 논의 +1', '동맹 군의 기록 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 8', '상처약 6', '탁주 3'],
|
|
reputation: ['손유 동맹 첫 전선 +1', '화공 논의 +1'],
|
|
unlockBattleId: 'twenty-second-battle-red-cliffs-fire',
|
|
unlockLabel: '적벽 화공전 개방',
|
|
note: '배다리 거점과 강동 포구를 확보해 조조 수군이 강 위에서 흔들릴 수 있음을 증명하고, 주유와 황개의 화공 논의를 본격화합니다.'
|
|
},
|
|
victoryPages: twentyFirstBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentySecondBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twenty-second-battle-red-cliffs-fire',
|
|
title: '적벽 화공전',
|
|
victoryConditionLabel: '조조 본선 퇴각',
|
|
defeatConditionLabel: '유비 또는 제갈량 퇴각',
|
|
openingObjectiveLines: [
|
|
'배다리 거점과 강동 포구가 열리자 황개의 거짓 항복선이 조조 함대로 향합니다. 감시선이 화선을 알아차리면 적벽의 불길은 시작되기도 전에 꺼집니다.',
|
|
'강 위에는 연환선과 배다리가 얽혀 있습니다. 조운은 강안 기병을 끊고, 관우와 장비는 갑판 보병을 묶어 화선 접안로와 동남풍 신호 지점을 열어야 합니다.',
|
|
'제갈량을 지키고 조조 본선을 퇴각시키십시오. 화선 접안로와 연환선 돌파 지점을 확보하면 형주 남부로 향할 결정적 승리를 얻습니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '21전에서 확보한 배다리와 포구를 발판으로, 감시선을 누르고 화선이 조조 본선에 닿을 길을 여는 적벽 결전입니다.',
|
|
route: '서남 동맹 진영 → 화선 접안로 → 동남풍 신호 지점 → 연환선 돌파 → 조조 본선',
|
|
focus:
|
|
'초반에는 조운으로 강안 기병과 감시병을 끊어 화선이 들키지 않게 하고, 관우와 장비가 갑판 보병을 받아내야 합니다. 제갈량은 후방에서 동남풍 타이밍을 보존하고, 유비는 전선이 너무 동쪽으로 찢어지지 않게 지휘하십시오.',
|
|
roles: [
|
|
'유비: 동맹 명분과 전선 지휘',
|
|
'제갈량: 동남풍 판단과 책략 지원',
|
|
'조운: 강안 기병과 감시병 차단',
|
|
'관우: 갑판 보병 정면 압박',
|
|
'장비: 배다리와 연환선 돌파',
|
|
'미축: 화공전 장기 피해 회복과 보급'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '화선 접안로 접근',
|
|
lines: [
|
|
'이 지점을 누르면 황개의 화선이 조조 함대 가까이 붙을 수 있습니다.',
|
|
'감시병과 선상 궁병을 오래 남겨 두지 말고, 전열을 좁게 유지해 동남풍 신호 지점까지 이어 가십시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '강안 기병 견제',
|
|
lines: [
|
|
'조조군 기병이 강안으로 돌아 제갈량과 보급선을 노립니다.',
|
|
'조운이 먼저 끊어야 화선의 접근과 동남풍 판단이 흔들리지 않습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '조조 본선 동요',
|
|
lines: [
|
|
'화선이 연환선 사이로 파고들자 조조 본선의 지휘가 흔들립니다.',
|
|
'친위를 정리하고 조조를 몰아내면 적벽의 불길이 형주 남부로 가는 길을 엽니다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '적벽 결전의 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '동남풍과 화공 시점을 판단하는 핵심 책략 담당입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '화선을 노리는 강안 기병과 감시병을 빠르게 끊습니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '갑판 보병과 본선 친위를 정면에서 받아낼 전열입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '배다리와 좁은 연환선 길을 밀어붙이는 돌파 역할입니다.' },
|
|
{ unitId: 'mi-zhu', role: 'support', reason: '화공전의 장기 피해를 버티기 위한 회복과 보급을 맡습니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '동맹 지휘', classKeys: ['lord'], reason: '유비가 무너지지 않아야 손유 동맹의 결전 명분이 유지됩니다.' },
|
|
{ label: '동남풍 책략', classKeys: ['strategist'], reason: '제갈량의 생존과 판단이 화공 성공의 핵심입니다.' },
|
|
{ label: '갑판 전열', classKeys: ['infantry', 'spearman'], reason: '좁은 배다리와 갑판에서는 튼튼한 전열이 피해를 받아내야 합니다.' },
|
|
{ label: '강안 기동', classKeys: ['cavalry'], reason: '기동 장수가 감시병과 기병을 먼저 끊어 화선 접안로를 엽니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 23, role: 'reserve', unitId: 'liu-bei', label: '동맹 지휘' },
|
|
{ x: 6, y: 21, role: 'front', unitId: 'guan-yu', label: '갑판 전열' },
|
|
{ x: 6, y: 25, role: 'front', unitId: 'zhang-fei', label: '연환선 돌파' },
|
|
{ x: 8, y: 20, role: 'flank', unitId: 'zhao-yun', label: '강안 차단' },
|
|
{ x: 6, y: 22, role: 'support', unitId: 'zhuge-liang', label: '동남풍 판단' },
|
|
{ x: 5, y: 27, role: 'support', unitId: 'mi-zhu', label: '화공 보급' }
|
|
],
|
|
note: '적벽 화공전은 강 위의 결전입니다. 유비와 제갈량을 반드시 포함하고, 조운으로 감시병과 기병을 끊은 뒤 관우와 장비가 화선 접안로와 연환선을 열어야 합니다.'
|
|
},
|
|
map: twentySecondBattleMap,
|
|
units: twentySecondBattleUnits,
|
|
bonds: twentySecondBattleBonds,
|
|
mapTextureKey: 'battle-map-twenty-second',
|
|
leaderUnitId: 'redcliff-fire-leader-cao-cao',
|
|
quickVictoryTurnLimit: 42,
|
|
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',
|
|
targetTile: { x: 28, y: 20, radius: 3 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'wind-signal',
|
|
kind: 'secure-terrain',
|
|
label: '동남풍 신호 지점 확보',
|
|
rewardGold: 880,
|
|
terrain: 'village',
|
|
targetTile: { x: 35, y: 14, radius: 4 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'chain-fleet',
|
|
kind: 'secure-terrain',
|
|
label: '연환선 돌파 지점 확보',
|
|
rewardGold: 1040,
|
|
terrain: 'fort',
|
|
targetTile: { x: 36, y: 14, radius: 3 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '42턴 이내 승리',
|
|
rewardGold: 720,
|
|
maxTurn: 42
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
|
|
],
|
|
itemRewards: ['콩 9', '상처약 6', '탁주 4', '화공 전과 +1', '동남풍 기록 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 9', '상처약 6', '탁주 4'],
|
|
reputation: ['적벽 화공 전과 +1', '동남풍 기록 +1', '손유 동맹 명성 +1'],
|
|
unlockBattleId: 'twenty-third-battle-jingzhou-south-entry',
|
|
unlockLabel: '형주 남부 진입전 개방',
|
|
note: '화선 접안로와 동남풍 신호 지점을 확보해 조조 본선을 몰아냈습니다. 조조의 남하가 꺾였으니 유비군은 형주 남부의 길과 민심을 열 차례입니다.'
|
|
},
|
|
victoryPages: twentySecondBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentyThirdBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twenty-third-battle-jingzhou-south-entry',
|
|
title: '형주 남부 진입전',
|
|
victoryConditionLabel: '형도영 퇴각',
|
|
defeatConditionLabel: '유비 또는 제갈량 퇴각',
|
|
openingObjectiveLines: [
|
|
'적벽의 불길로 조조의 남하가 꺾인 지금, 유비군은 형주 남부의 길과 민심을 열어야 합니다.',
|
|
'형도영의 가병은 영릉으로 이어지는 마을, 강가 길목, 성채 관문을 나누어 붙잡고 있습니다. 성채만 몰아치면 마을이 흔들리니 길목을 차례로 안정시키십시오.',
|
|
'유비와 제갈량을 지키며 형도영을 물리치고 남부 마을과 영릉 관문을 확보하면, 백미 마량이 군영에 합류합니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '적벽 승리 뒤 처음으로 머물 땅을 얻는 전투입니다. 약탈전처럼 보이지 않게 마을을 안정시키며 영릉 관문까지 길을 열어야 합니다.',
|
|
route: '서남 유비군 진영 → 남부 마을 → 강가 길목 → 영릉 관문 → 형도영 본대',
|
|
focus:
|
|
'초반 척후와 기병을 조운으로 끊고, 관우가 중앙 보병을 받아내는 동안 제갈량과 손건은 마을 안정 명분을 지켜야 합니다. 형도영 본대에 닿기 전에 강가 길목과 관문을 함께 확보하면 마량 합류가 자연스럽게 이어집니다.',
|
|
roles: [
|
|
'유비: 형주 진입 명분과 민심 유지',
|
|
'제갈량: 마을 피해를 줄이는 작전 판단',
|
|
'관우: 영릉 가병 전열 압박',
|
|
'조운: 척후와 기병 차단',
|
|
'손건: 마량과 형주 선비층으로 이어질 외교 문안',
|
|
'미축: 긴 남부 길목 회복과 보급'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '남부 마을 접근',
|
|
lines: [
|
|
'마을을 먼저 안정시키면 형주 선비층이 유비군을 약탈군이 아니라 질서를 세우는 군대로 봅니다.',
|
|
'궁병과 기병을 남겨 둔 채 성채로 뛰면 보급선이 흔들리니 중앙 전열을 좁게 잡으십시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '영릉 기병 우회',
|
|
lines: [
|
|
'영릉 기병이 강가와 남쪽 언덕으로 돌아 후방을 흔듭니다.',
|
|
'조운이나 기동 장수로 먼저 끊어야 제갈량과 보급 담당이 안정적으로 따라갑니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '형도영 본대 동요',
|
|
lines: [
|
|
'마을과 관문이 흔들리지 않자 형도영의 가병들이 물러설 명분을 찾기 시작합니다.',
|
|
'친위를 정리하고 형도영을 물리치면 마량이 유비군의 군율을 확인하게 됩니다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '형주 남부 진입의 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '마을을 해치지 않고 길목을 여는 작전 핵심입니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '형도영의 보병 전열을 정면에서 받아낼 주력입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '척후와 기병을 빠르게 끊어 마을을 안정시키기 좋습니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '마량과 형주 선비층으로 이어질 외교 명분을 정리합니다.' },
|
|
{ unitId: 'mi-zhu', role: 'support', reason: '긴 남부 길목에서 회복과 보급을 맡기 좋습니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '진입 명분', classKeys: ['lord'], reason: '유비가 살아 남아야 형주 남부 진입의 명분이 유지됩니다.' },
|
|
{ label: '민심 책략', classKeys: ['strategist'], reason: '제갈량의 판단이 마을 피해와 다음 합류 보상을 좌우합니다.' },
|
|
{ label: '길목 전열', classKeys: ['infantry', 'spearman'], reason: '영릉 가병의 중앙 전열은 정면에서 눌러야 합니다.' },
|
|
{ label: '우회 차단', classKeys: ['cavalry'], reason: '기동 장수가 척후와 기병을 끊어 보급선을 안정시킵니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 25, role: 'reserve', unitId: 'liu-bei', label: '진입 명분' },
|
|
{ x: 6, y: 23, role: 'front', unitId: 'guan-yu', label: '길목 전열' },
|
|
{ x: 8, y: 22, role: 'flank', unitId: 'zhao-yun', label: '우회 차단' },
|
|
{ x: 6, y: 24, role: 'support', unitId: 'zhuge-liang', label: '민심 판단' },
|
|
{ x: 8, y: 25, role: 'support', unitId: 'sun-qian', label: '외교 문안' },
|
|
{ x: 5, y: 29, role: 'support', unitId: 'mi-zhu', label: '남부 보급' }
|
|
],
|
|
note: '형주 남부 진입전은 적벽 뒤 첫 근거지 확보 전투입니다. 유비와 제갈량을 반드시 포함하고, 마을 안정과 영릉 관문 확보를 함께 챙기면 마량 합류가 자연스럽게 이어집니다.'
|
|
},
|
|
map: twentyThirdBattleMap,
|
|
units: twentyThirdBattleUnits,
|
|
bonds: twentyThirdBattleBonds,
|
|
mapTextureKey: 'battle-map-twenty-third',
|
|
leaderUnitId: 'jing-south-leader-xing-daorong',
|
|
quickVictoryTurnLimit: 44,
|
|
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',
|
|
targetTile: { x: 34, y: 18, radius: 7 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'southern-road',
|
|
kind: 'secure-terrain',
|
|
label: '강가 길목 확보',
|
|
rewardGold: 860,
|
|
terrain: 'village',
|
|
targetTile: { x: 37, y: 18, radius: 6 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'yingling-gate',
|
|
kind: 'secure-terrain',
|
|
label: '영릉 관문 확보',
|
|
rewardGold: 1080,
|
|
terrain: 'fort',
|
|
targetTile: { x: 38, y: 18, radius: 4 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '44턴 이내 승리',
|
|
rewardGold: 760,
|
|
maxTurn: 44
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
|
|
],
|
|
itemRewards: ['콩 9', '상처약 7', '탁주 4', '형주 진입 문서 +1', '마량 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 9', '상처약 7', '탁주 4'],
|
|
reputation: ['형주 진입 문서 +1', '남부 마을 안정 +1'],
|
|
recruits: ['ma-liang'],
|
|
unlockBattleId: 'twenty-fourth-battle-guiyang-persuasion',
|
|
unlockLabel: '계양 설득전 개방',
|
|
note: '마을과 영릉 관문을 함께 안정시켜 형주 선비층의 신뢰를 얻었습니다. 백미 마량이 합류하고, 그의 현지 정보로 계양 설득전이 열립니다.'
|
|
},
|
|
victoryPages: twentyThirdBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentyFourthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twenty-fourth-battle-guiyang-persuasion',
|
|
title: '계양 설득전',
|
|
victoryConditionLabel: '조범 항복',
|
|
defeatConditionLabel: '유비·제갈량·마량 퇴각',
|
|
openingObjectiveLines: [
|
|
'형주 남부의 첫 길목을 연 유비군은 마량의 서신을 앞세워 계양으로 향합니다. 이번 전투는 성채를 불태우는 싸움이 아니라 조범이 문을 열 명분을 만드는 싸움입니다.',
|
|
'서신이 마을 장로들에게 닿기 전에 길목 군사들이 백성을 겁박하면 설득 명분이 무너집니다. 남부 마을과 계양 서신로를 먼저 안정시키십시오.',
|
|
'유비, 제갈량, 마량을 지키며 성문 친위대를 물리고 조범을 항복시키면, 형주의 문사 이적이 군영에 합류합니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary: '마량이 처음으로 전장 설득의 중심에 서는 전투입니다. 적을 모두 베는 것보다 마을과 서신로를 안정시킨 뒤 조범이 물러설 명분을 만드는 흐름이 중요합니다.',
|
|
route: '서남 유비군 진영 → 계양 남부 마을 → 서신 길목 → 성문 친위대 → 조범 항복',
|
|
focus:
|
|
'마량과 제갈량은 후방에서 서신과 민심 판단을 맡기고, 관우가 성문 보병을 받아내는 동안 조운은 남문 기병을 끊으십시오. 조범을 몰아붙이기 전에 마을과 서신 길목을 확보하면 이적 합류가 자연스럽게 이어집니다.',
|
|
roles: [
|
|
'유비: 계양 설득 명분과 패배 조건의 중심',
|
|
'마량: 백미의 현지 서신과 마을 장로 설득',
|
|
'제갈량: 성채 압박 수위와 항복 조건 판단',
|
|
'관우: 조범 친위대와 성문 보병 전열 고정',
|
|
'조운: 산길 척후와 남문 기병 차단',
|
|
'손건: 이적에게 전할 외교 문안 정리'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '계양 마을 접근',
|
|
lines: [
|
|
'마량: 먼저 마을 장로들이 볼 수 있게 군율을 보이십시오. 여기서 약탈이 나면 조범은 끝까지 성문을 닫을 것입니다.',
|
|
'제갈량: 마을을 안정시킨 뒤 성문을 압박하면, 계양은 싸움보다 항복 조건을 먼저 따지게 됩니다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '남문 기병 견제',
|
|
lines: [
|
|
'조운: 남문 기병이 서신로를 흔들고 있습니다. 먼저 끊어 두면 마량 선생의 문안이 마을까지 닿을 것입니다.',
|
|
'기병을 방치하면 후방 문사들이 위험해지니, 전열을 넓히기 전에 우회로를 막으십시오.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '조범의 동요',
|
|
lines: [
|
|
'계양 마을과 서신 길목이 안정되자 조범의 친위대가 더 이상 백성을 앞세우지 못합니다.',
|
|
'유비: 이제 성문을 부수기보다 항복 조건을 보이시오. 계양이 스스로 문을 열게 해야 하오.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang', 'ma-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '계양 설득의 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'ma-liang', role: 'support', reason: '계양 토호와 마을 장로에게 닿을 서신을 읽는 핵심 문사입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '성채를 압박하면서도 항복 명분을 유지하는 작전 핵심입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '산길 척후와 남문 기병을 빠르게 끊어 서신로를 안정시킵니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '조범 친위대와 성문 보병을 받아낼 주력 전열입니다.' },
|
|
{ unitId: 'sun-qian', role: 'support', reason: '이적 합류로 이어질 외교 문안과 항복 조건을 정리합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '설득 명분', classKeys: ['lord'], reason: '유비가 살아 남아야 계양의 항복 명분이 유지됩니다.' },
|
|
{ label: '서신 문관', classKeys: ['strategist'], reason: '마량과 제갈량의 생존이 마을 안정과 이적 합류의 핵심입니다.' },
|
|
{ label: '성문 전열', classKeys: ['infantry', 'spearman'], reason: '조범 친위대와 성문 보병은 튼튼한 전열이 받아내야 합니다.' },
|
|
{ label: '남문 차단', classKeys: ['cavalry'], reason: '기동 장수가 산길 척후와 남문 기병을 먼저 끊어야 서신로가 열립니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 5, y: 24, role: 'reserve', unitId: 'liu-bei', label: '설득 명분' },
|
|
{ x: 7, y: 22, role: 'front', unitId: 'guan-yu', label: '성문 전열' },
|
|
{ x: 9, y: 22, role: 'flank', unitId: 'zhao-yun', label: '남문 차단' },
|
|
{ x: 6, y: 24, role: 'support', unitId: 'zhuge-liang', label: '항복 조건' },
|
|
{ x: 8, y: 26, role: 'support', unitId: 'ma-liang', label: '백미 서신' },
|
|
{ x: 9, y: 25, role: 'support', unitId: 'sun-qian', label: '외교 문안' }
|
|
],
|
|
note: '계양 설득전은 마량이 처음으로 필수 출전하는 전장입니다. 유비, 제갈량, 마량을 지키며 마을과 서신 길목을 안정시킨 뒤 성문 친위대를 압박하는 편성이 좋습니다.'
|
|
},
|
|
map: twentyFourthBattleMap,
|
|
units: twentyFourthBattleUnits,
|
|
bonds: twentyFourthBattleBonds,
|
|
mapTextureKey: 'battle-map-twenty-fourth',
|
|
leaderUnitId: 'guiyang-leader-zhao-fan',
|
|
quickVictoryTurnLimit: 42,
|
|
baseVictoryGold: 3180,
|
|
objectives: [
|
|
{
|
|
id: 'leader',
|
|
kind: 'pacify-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: 'ma-liang',
|
|
kind: 'keep-unit-alive',
|
|
label: '마량 생존',
|
|
rewardGold: 880,
|
|
unitId: 'ma-liang'
|
|
},
|
|
{
|
|
id: 'guiyang-village',
|
|
kind: 'secure-terrain',
|
|
label: '계양 마을 안정',
|
|
rewardGold: 1040,
|
|
terrain: 'village',
|
|
targetTile: { x: 31, y: 18, radius: 8 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'letter-road',
|
|
kind: 'secure-terrain',
|
|
label: '서신 길목 확보',
|
|
rewardGold: 920,
|
|
terrain: 'village',
|
|
targetTile: { x: 35, y: 15, radius: 6 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'gate-pressure',
|
|
kind: 'secure-terrain',
|
|
label: '성문 친위대 압박',
|
|
rewardGold: 1120,
|
|
terrain: 'fort',
|
|
targetTile: { x: 40, y: 19, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '42턴 이내 승리',
|
|
rewardGold: 800,
|
|
maxTurn: 42
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhuge-liang' },
|
|
{ kind: 'unit-defeated', unitId: 'ma-liang' }
|
|
],
|
|
itemRewards: ['콩 10', '상처약 7', '탁주 4', '계양 설득 문서 +1', '이적 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 10', '상처약 7', '탁주 4'],
|
|
reputation: ['계양 설득 문서 +1', '계양 민심 안정 +1'],
|
|
recruits: ['yi-ji'],
|
|
unlockBattleId: 'twenty-fifth-battle-wuling-mountain-road',
|
|
unlockLabel: '무릉 산길 확보전 개방',
|
|
note: '마량의 서신과 유비군의 군율로 계양의 문을 열었습니다. 이적이 합류하고, 두 문사의 현지 정보가 무릉 산길 확보전으로 이어집니다.'
|
|
},
|
|
victoryPages: twentyFourthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentyFifthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twenty-fifth-battle-wuling-mountain-road',
|
|
title: '무릉 산길 확보전',
|
|
victoryConditionLabel: '김선 퇴각',
|
|
defeatConditionLabel: '유비·제갈량·마량 퇴각',
|
|
openingObjectiveLines: [
|
|
'계양이 열린 뒤 유비군은 마량과 이적이 맞춘 지도를 들고 무릉의 산길로 들어섭니다. 이번 전투는 성문 돌파보다 길과 마을을 이어 놓는 것이 먼저입니다.',
|
|
'김선의 병력은 서쪽 고갯길, 남쪽 마을, 동쪽 창고를 나누어 막고 있습니다. 길목 척후를 정리하고 마을과 보급 창고를 안정시키면 공지에게 설득의 말이 닿습니다.',
|
|
'유비, 제갈량, 마량을 지키며 산길을 열고 김선을 물러나게 하면, 무릉의 길을 아는 공지가 군영에 합류합니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'무릉은 성 하나를 빼앗는 전투가 아니라 험한 산길과 흩어진 마을을 이어 근거지를 만드는 전투입니다. 마량의 현지 기록과 이적의 문안을 살려 길목을 차례로 안정시키는 흐름이 중요합니다.',
|
|
route: '서남 유비군 진영 → 서쪽 고갯길 척후 → 무릉 남쪽 마을 → 동쪽 보급 창고 → 김선 퇴각',
|
|
focus:
|
|
'장비가 협곡 보병을 받아내는 동안 조운은 능선 척후와 기병을 끊으십시오. 마량과 제갈량은 후방에서 산길 이름과 항복 조건을 맞추고, 이적은 공지에게 보낼 서약 문안을 정리하면 좋습니다.',
|
|
roles: [
|
|
'유비: 무릉 군율과 패배 조건의 중심',
|
|
'마량: 산길 이름과 마을 장로 기록을 읽는 현지 문사',
|
|
'제갈량: 좁은 길 전열과 김선 설득 조건 판단',
|
|
'이적: 공지에게 보낼 서약 문안과 백성 보호 명분',
|
|
'조운: 능선 척후와 산길 기병 차단',
|
|
'장비: 협곡 보병 전열을 밀어내는 돌파 역할'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '무릉 마을 접근',
|
|
lines: [
|
|
'마량: 이 마을 이름이 지도와 다릅니다. 먼저 장로들이 믿을 수 있게 군율을 보이면 길이 이어질 것입니다.',
|
|
'이적: 마을을 지키면 공지에게 보낼 말이 살아납니다. 백성이 다치면 무릉은 산길마다 문을 닫을 것입니다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '능선 기병 견제',
|
|
lines: [
|
|
'조운: 능선 기병이 고갯길을 끊으려 합니다. 여기서 멈추면 마량 선생의 지도도 쓸 수 없습니다.',
|
|
'장비: 좁은 길은 한 번 밀리면 다시 잡기 어렵다. 앞길은 내가 열 테니 측면을 끊어라!'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '김선의 동요',
|
|
lines: [
|
|
'산길과 창고가 안정되자 김선의 친위대가 더 이상 마을을 방패로 삼지 못합니다.',
|
|
'유비: 이제 무릉을 굴복시키지 말고 길을 열어 주시오. 공지가 움직일 명분은 충분하오.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang', 'ma-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '무릉 군율의 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'ma-liang', role: 'support', reason: '무릉 산길과 마을 이름을 읽어 지점 목표를 연결하는 핵심 문사입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '좁은 산길 전열과 김선 설득 조건을 판단하는 작전 핵심입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '능선 척후와 산길 기병을 빠르게 끊어 고갯길을 안정시킵니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '협곡 보병 전열을 밀어내며 산길 입구를 여는 돌파 역할입니다.' },
|
|
{ unitId: 'yi-ji', role: 'support', reason: '공지에게 보낼 서약 문안과 백성 보호 명분을 정리합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '군율 명분', classKeys: ['lord'], reason: '유비가 살아 남아야 무릉 마을이 유비군의 약속을 믿습니다.' },
|
|
{ label: '산길 문사', classKeys: ['strategist'], reason: '마량과 제갈량, 이적의 문안이 마을 안정과 공지 합류로 이어집니다.' },
|
|
{ label: '협곡 전열', classKeys: ['infantry', 'spearman'], reason: '좁은 길의 보병 전열은 튼튼한 돌파 장수가 받아내야 합니다.' },
|
|
{ label: '능선 차단', classKeys: ['cavalry'], reason: '기동 장수가 척후와 기병을 끊어야 산길 목표를 놓치지 않습니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 28, role: 'reserve', unitId: 'liu-bei', label: '군율 중심' },
|
|
{ x: 6, y: 28, role: 'front', unitId: 'zhang-fei', label: '협곡 돌파' },
|
|
{ x: 8, y: 26, role: 'flank', unitId: 'zhao-yun', label: '능선 차단' },
|
|
{ x: 5, y: 29, role: 'support', unitId: 'zhuge-liang', label: '산길 계책' },
|
|
{ x: 7, y: 31, role: 'support', unitId: 'ma-liang', label: '마을 기록' },
|
|
{ x: 9, y: 28, role: 'support', unitId: 'yi-ji', label: '서약 문안' }
|
|
],
|
|
note:
|
|
'무릉 산길 확보전은 마량과 이적의 형주 지식이 처음 함께 쓰이는 전장입니다. 산길 입구를 열고, 마을과 창고를 안정시킨 뒤 김선을 물러나게 하십시오.'
|
|
},
|
|
map: twentyFifthBattleMap,
|
|
units: twentyFifthBattleUnits,
|
|
bonds: twentyFifthBattleBonds,
|
|
mapTextureKey: 'battle-map-twenty-fifth',
|
|
leaderUnitId: 'wuling-leader-jin-xuan',
|
|
quickVictoryTurnLimit: 44,
|
|
baseVictoryGold: 3360,
|
|
objectives: [
|
|
{
|
|
id: 'leader',
|
|
kind: 'pacify-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: 'ma-liang',
|
|
kind: 'keep-unit-alive',
|
|
label: '마량 생존',
|
|
rewardGold: 880,
|
|
unitId: 'ma-liang'
|
|
},
|
|
{
|
|
id: 'mountain-pass',
|
|
kind: 'secure-terrain',
|
|
label: '산길 주로 확보',
|
|
rewardGold: 900,
|
|
terrain: 'road',
|
|
targetTile: { x: 38, y: 20, radius: 9 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'wuling-village',
|
|
kind: 'secure-terrain',
|
|
label: '무릉 마을 안정',
|
|
rewardGold: 1080,
|
|
terrain: 'village',
|
|
targetTile: { x: 37, y: 23, radius: 10 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'supply-store',
|
|
kind: 'secure-terrain',
|
|
label: '산길 창고 확보',
|
|
rewardGold: 1040,
|
|
terrain: 'village',
|
|
targetTile: { x: 38, y: 24, radius: 7 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '44턴 이내 승리',
|
|
rewardGold: 840,
|
|
maxTurn: 44
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhuge-liang' },
|
|
{ kind: 'unit-defeated', unitId: 'ma-liang' }
|
|
],
|
|
itemRewards: ['콩 11', '상처약 8', '탁주 4', '무릉 산길 지도 +1', '공지 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 11', '상처약 8', '탁주 4'],
|
|
reputation: ['무릉 산길 지도 +1', '무릉 마을 서약 +1'],
|
|
recruits: ['gong-zhi'],
|
|
unlockBattleId: 'twenty-sixth-battle-changsha-veteran',
|
|
unlockLabel: '장사 노장 대면전 개방',
|
|
note: '마량과 이적의 문안으로 무릉 산길과 마을을 안정시켰습니다. 공지가 합류하고, 장사로 향하는 길이 열립니다.'
|
|
},
|
|
victoryPages: twentyFifthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentySixthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twenty-sixth-battle-changsha-veteran',
|
|
title: '장사 노장 대면전',
|
|
victoryConditionLabel: '한현 퇴각',
|
|
defeatConditionLabel: '유비 또는 제갈량 퇴각',
|
|
openingObjectiveLines: [
|
|
'무릉 산길을 연 유비군은 공지가 알려 준 길을 따라 장사로 향합니다. 장사에는 노장 황충과 의심 많은 태수 한현이 버티고 있습니다.',
|
|
'한현은 황충의 명망까지 의심하며 성문 병력을 몰아세우고 있습니다. 마을을 안정시키고 황충 전열을 예로 대하면, 위연이 성 안의 부당함을 더는 따르지 못할 것입니다.',
|
|
'유비와 제갈량을 지키며 장사 성문 의심선을 흔들고 한현을 물러나게 하면 황충과 위연이 군영에 합류합니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'장사 전투는 노장 황충을 꺾어 모욕하는 싸움이 아니라, 한현의 의심을 전장에서 무너뜨리고 장사 내부의 사람을 얻는 싸움입니다. 공지의 길 정보와 이적의 예법을 함께 살리십시오.',
|
|
route: '서남 유비군 진영 → 서문 마을 안정 → 황충 전열 예우 → 성문 의심선 압박 → 한현 퇴각',
|
|
focus:
|
|
'관우가 황충의 전열을 정면에서 받아 예를 세우는 동안 조운은 동문 기병과 척후를 끊으십시오. 공지는 장사 길 정보를 읽고, 이적은 황충과 위연에게 닿을 문안을 준비하면 좋습니다.',
|
|
roles: [
|
|
'유비: 장사 항복 명분과 패배 조건의 중심',
|
|
'공지: 무릉에서 얻은 장사 접근로와 성 안 소문',
|
|
'제갈량: 한현의 의심을 꺾는 성문 압박 판단',
|
|
'관우: 노장 황충의 전열을 받아내는 무인의 예',
|
|
'장비: 서문 보병 전열을 밀어내는 돌파 역할',
|
|
'조운: 동문 기병과 척후 차단'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '장사 서문 마을',
|
|
lines: [
|
|
'공지: 이 마을이 흔들리면 장사 사람들은 한현의 말만 듣게 됩니다. 먼저 길과 창고를 지켜 주십시오.',
|
|
'이적: 백성이 다치지 않아야 황충 장군에게도 예가 닿습니다. 싸움보다 군율을 먼저 보일 때입니다.'
|
|
]
|
|
},
|
|
'vanguard-broken': {
|
|
title: '황충 전열 예우',
|
|
lines: [
|
|
'관우: 노장의 활은 꺾을 것이 아니라 예로 맞을 상대다. 전열을 흐트러뜨리되 이름을 욕보이지 마라.',
|
|
'제갈량: 황충을 얕보지 않는 태도가 장사 병사들의 마음을 흔들 것입니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '한현의 의심',
|
|
lines: [
|
|
'황충의 전열이 예를 잃지 않은 채 물러서자, 한현의 의심 많은 명령은 성 안에서도 힘을 잃기 시작합니다.',
|
|
'위연: 백성을 지키는 군이라면 성문을 닫고 있을 이유가 없겠군.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '장사 항복 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '황충과 무인의 예를 나누며 전열을 받아낼 주력입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '서문 보병 전열을 밀어내고 성문 압박을 유지하는 돌파 역할입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '장사 성문 주변 기병과 척후를 빠르게 정리하기 좋습니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '한현의 의심과 성문 방어선을 끊는 작전 핵심입니다.' },
|
|
{ unitId: 'gong-zhi', role: 'support', reason: '무릉에서 얻은 현지 정보로 장사 접근로와 성 안 소문을 읽습니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '항복 명분', classKeys: ['lord'], reason: '유비가 살아 남아야 장사를 예로 대한다는 명분이 유지됩니다.' },
|
|
{ label: '예법 문사', classKeys: ['strategist'], reason: '공지와 이적, 제갈량이 황충 예우와 항복 조건을 연결합니다.' },
|
|
{ label: '노장 전열', classKeys: ['infantry', 'spearman'], reason: '황충의 전열은 힘만이 아니라 무인의 예로 받아내야 합니다.' },
|
|
{ label: '동문 차단', classKeys: ['cavalry'], reason: '기동 장수가 동문 기병과 척후를 끊어 성문 압박을 안정시킵니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 27, role: 'reserve', unitId: 'liu-bei', label: '항복 명분' },
|
|
{ x: 6, y: 25, role: 'front', unitId: 'guan-yu', label: '노장 전열' },
|
|
{ x: 6, y: 29, role: 'front', unitId: 'zhang-fei', label: '서문 돌파' },
|
|
{ x: 8, y: 25, role: 'flank', unitId: 'zhao-yun', label: '동문 차단' },
|
|
{ x: 5, y: 27, role: 'support', unitId: 'zhuge-liang', label: '의심 해소' },
|
|
{ x: 9, y: 30, role: 'support', unitId: 'gong-zhi', label: '장사 길' }
|
|
],
|
|
note:
|
|
'장사 노장 대면전은 공지의 현지 정보가 처음 강하게 추천되는 전장입니다. 서문 마을을 안정시키고, 황충 전열을 예로 받아낸 뒤 한현의 의심선을 압박하십시오.'
|
|
},
|
|
map: twentySixthBattleMap,
|
|
units: twentySixthBattleUnits,
|
|
bonds: twentySixthBattleBonds,
|
|
mapTextureKey: 'battle-map-twenty-sixth',
|
|
leaderUnitId: 'changsha-leader-han-xuan',
|
|
quickVictoryTurnLimit: 46,
|
|
baseVictoryGold: 3560,
|
|
objectives: [
|
|
{
|
|
id: 'leader',
|
|
kind: 'pacify-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: 'west-village',
|
|
kind: 'secure-terrain',
|
|
label: '서문 마을 안정',
|
|
rewardGold: 980,
|
|
terrain: 'village',
|
|
targetTile: { x: 40, y: 20, radius: 12 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'changsha-village',
|
|
kind: 'secure-terrain',
|
|
label: '장사 마을 안정',
|
|
rewardGold: 1120,
|
|
terrain: 'village',
|
|
targetTile: { x: 37, y: 16, radius: 4 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'huang-zhong-line',
|
|
kind: 'secure-terrain',
|
|
label: '황충 전열 예우',
|
|
rewardGold: 1180,
|
|
terrain: 'road',
|
|
targetTile: { x: 45, y: 16, radius: 8 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'gate-pressure',
|
|
kind: 'secure-terrain',
|
|
label: '성문 의심선 압박',
|
|
rewardGold: 1100,
|
|
terrain: 'fort',
|
|
targetTile: { x: 45, y: 16, radius: 6 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '46턴 이내 승리',
|
|
rewardGold: 880,
|
|
maxTurn: 46
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
|
|
],
|
|
itemRewards: ['콩 12', '상처약 8', '탁주 5', '장사 사절 문서 +1', '황충 합류', '위연 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 12', '상처약 8', '탁주 5'],
|
|
reputation: ['장사 사절 문서 +1', '황충 예우 +1'],
|
|
recruits: ['huang-zhong', 'wei-yan'],
|
|
unlockBattleId: 'twenty-seventh-battle-yizhou-relief-road',
|
|
unlockLabel: '익주 원군로 개방',
|
|
note: '황충의 명예를 지키며 한현의 의심을 꺾었습니다. 황충과 위연이 합류하고, 익주 원군 요청으로 다음 길이 열립니다.'
|
|
},
|
|
victoryPages: twentySixthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentySeventhBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twenty-seventh-battle-yizhou-relief-road',
|
|
title: '익주 원군로',
|
|
victoryConditionLabel: '양회 퇴각',
|
|
defeatConditionLabel: '유비 또는 제갈량 퇴각',
|
|
openingObjectiveLines: [
|
|
'장사까지 안정시킨 유비군은 유장의 원군 요청을 따라 익주로 향합니다. 원군로에는 양회의 전초 병력이 산길 마을과 관문 전열을 함께 틀어쥐고 있습니다.',
|
|
'이번 전투는 길목 마을을 보호하고 산비탈 척후를 끊은 뒤, 관문 보급선을 흔들어야 양회의 전초 병력이 물러납니다. 황충과 위연이 처음 실전 선택지로 빛나는 전장입니다.',
|
|
'유비와 제갈량을 지키며 익주 원군로를 군율 있게 열면, 봉추 방통이 유비군의 움직임을 직접 확인하고 군영에 합류합니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'익주 원군로는 침공이 아니라 원군 요청에 응한다는 명분을 증명하는 전장입니다. 마을 창고를 보호하고 산길 척후를 끊어야 방통이 유비군의 군율을 신뢰합니다.',
|
|
route: '서남 유비군 진영 → 산길 초입 척후 차단 → 원군로 마을 보호 → 관문 보급선 압박 → 양회 퇴각',
|
|
focus:
|
|
'조운은 긴 원군로의 척후와 기병을 먼저 끊고, 황충은 산비탈 궁병을 견제하십시오. 위연이 관문 전열을 흔드는 동안 미축이나 손건은 마을 보급을 지켜 원군 명분을 살리는 편성이 좋습니다.',
|
|
roles: [
|
|
'유비: 익주 원군 요청과 패배 조건의 중심',
|
|
'제갈량: 산길 전열과 관문 압박 순서를 읽는 작전 핵심',
|
|
'황충: 산비탈 궁병을 안정적으로 견제하는 노련한 원거리 장수',
|
|
'위연: 좁은 관문 전열을 빠르게 흔드는 돌파 역할',
|
|
'조운: 원군로 척후와 기병 차단',
|
|
'미축: 마을 보급과 회복 도구를 지키는 후방 안정'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '원군로 마을',
|
|
lines: [
|
|
'미축: 이 마을 창고를 지켜야 익주 백성이 우리를 원군으로 받아들입니다. 군량보다 신뢰가 먼저입니다.',
|
|
'유비: 백성의 길을 밟고 들어가면서 백성을 다치게 할 수는 없소. 마을부터 안정시키시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '산길 척후 차단',
|
|
lines: [
|
|
'조운: 척후가 산길을 따라 후방으로 돌고 있습니다. 이 길을 잃으면 원군로 전체가 끊깁니다.',
|
|
'황충: 산비탈 궁병은 급히 쫓기보다 시야를 꺾어야 하오. 내가 견제할 테니 전열을 올리시오.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '봉추의 시선',
|
|
lines: [
|
|
'관문 보급선이 흔들리자 양회의 병사들이 마을을 방패로 삼지 못하고 물러서기 시작합니다.',
|
|
'방통: 말뿐인 인의라면 산길에서 무너졌을 터. 이 군은 길목의 작은 약속도 지키는군.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '익주 원군 요청의 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '산길 전열과 관문 압박 순서를 함께 잡는 핵심 책사입니다.' },
|
|
{ unitId: 'huang-zhong', role: 'support', reason: '산비탈 궁병과 성루 궁병을 안정적으로 견제할 새 원거리 주력입니다.' },
|
|
{ unitId: 'wei-yan', role: 'front', reason: '좁은 관문 전열을 빠르게 흔들어 보급선을 여는 돌파 역할입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '원군로의 척후와 기병을 먼저 끊어 후방 혼란을 막습니다.' },
|
|
{ unitId: 'mi-zhu', role: 'support', reason: '큰 로스터 전투에서 마을 보급과 회복 도구를 안정시키기 좋습니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '원군 명분', classKeys: ['lord'], reason: '유비가 살아 남아야 익주 원군 요청이라는 명분이 유지됩니다.' },
|
|
{ label: '산길 책략', classKeys: ['strategist'], reason: '제갈량과 문관이 산길 순서와 관문 압박을 읽어야 합니다.' },
|
|
{ label: '관문 돌파', classKeys: ['infantry', 'spearman'], reason: '위연 같은 돌파 장수가 좁은 관문 전열을 흔들어야 합니다.' },
|
|
{ label: '척후 차단', classKeys: ['cavalry'], reason: '기동 장수가 산길 척후와 기병을 먼저 끊어 후방을 지켜야 합니다.' },
|
|
{ label: '산비탈 견제', classKeys: ['archer'], reason: '황충의 원거리 견제가 성루 궁병과 산비탈 궁병을 안정적으로 눌러 줍니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 30, role: 'reserve', unitId: 'liu-bei', label: '원군 명분' },
|
|
{ x: 5, y: 30, role: 'support', unitId: 'zhuge-liang', label: '산길 계책' },
|
|
{ x: 7, y: 31, role: 'support', unitId: 'huang-zhong', label: '산비탈 견제' },
|
|
{ x: 9, y: 29, role: 'front', unitId: 'wei-yan', label: '관문 돌파' },
|
|
{ x: 8, y: 30, role: 'flank', unitId: 'zhao-yun', label: '척후 차단' },
|
|
{ x: 4, y: 34, role: 'support', unitId: 'mi-zhu', label: '보급 안정' }
|
|
],
|
|
note:
|
|
'익주 원군로는 황충과 위연이 합류 후 바로 실전 선택지로 느껴지는 전장입니다. 마을 보급을 해치지 않고 산길 척후와 관문 전열을 차례로 끊어 방통의 신뢰를 얻으십시오.'
|
|
},
|
|
map: twentySeventhBattleMap,
|
|
units: twentySeventhBattleUnits,
|
|
bonds: twentySeventhBattleBonds,
|
|
mapTextureKey: 'battle-map-twenty-seventh',
|
|
leaderUnitId: 'yizhou-leader-yang-huai',
|
|
quickVictoryTurnLimit: 60,
|
|
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',
|
|
targetTile: { x: 38, y: 17, radius: 12 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'mountain-scouts',
|
|
kind: 'secure-terrain',
|
|
label: '산길 척후 차단',
|
|
rewardGold: 1080,
|
|
terrain: 'road',
|
|
targetTile: { x: 40, y: 24, radius: 16 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'slope-archers',
|
|
kind: 'secure-terrain',
|
|
label: '산비탈 궁병 견제',
|
|
rewardGold: 1100,
|
|
terrain: 'hill',
|
|
targetTile: { x: 40, y: 18, radius: 12 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'gate-supply',
|
|
kind: 'secure-terrain',
|
|
label: '관문 보급선 압박',
|
|
rewardGold: 1220,
|
|
terrain: 'fort',
|
|
targetTile: { x: 42, y: 16, radius: 8 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '48턴 이내 승리',
|
|
rewardGold: 920,
|
|
maxTurn: 48
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
|
|
],
|
|
itemRewards: ['콩 12', '상처약 9', '탁주 5', '익주 길목 지도 +1', '방통 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 12', '상처약 9', '탁주 5'],
|
|
reputation: ['익주 길목 지도 +1', '원군 군율 +1'],
|
|
recruits: ['pang-tong'],
|
|
unlockBattleId: 'twenty-eighth-battle-fu-pass-entry',
|
|
unlockLabel: '부수관 진입전 개방',
|
|
note: '원군로 마을과 관문 보급선을 안정시켜 방통의 신뢰를 얻었습니다. 방통이 합류하고 부수관으로 향하는 길이 열립니다.'
|
|
},
|
|
victoryPages: twentySeventhBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentyEighthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twenty-eighth-battle-fu-pass-entry',
|
|
title: '부수관 진입전',
|
|
victoryConditionLabel: '고패 퇴각',
|
|
defeatConditionLabel: '유비 또는 제갈량 퇴각',
|
|
openingObjectiveLines: [
|
|
'익주 원군로를 연 유비군은 부수관의 첫 문 앞에 섰습니다. 고패는 좁은 협곡과 성루 궁병을 이용해 원군의 명분을 관문 앞에서 묶으려 합니다.',
|
|
'이번 전투부터 방통이 출전 후보에 들어옵니다. 와룡과 봉추를 함께 세우면 성루와 보급선 압박이 강해지지만, 전열과 회복 선택은 더 날카로워집니다.',
|
|
'유비와 제갈량을 지키며 관문 창고를 봉인하고 고패를 물러나게 하면, 익주 내부 인재 법정이 군영에 합류합니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'부수관 진입전은 방통이 처음 전장 선택지로 들어오는 관문전입니다. 관문을 무작정 부수기보다 창고를 봉인하고 성루 사격선을 꺾어 익주 내부의 의심을 낮추십시오.',
|
|
route: '서남 유비군 진영 → 협곡 척후 차단 → 부수관 마을 안정 → 성루 사격선 억제 → 고패 퇴각',
|
|
focus:
|
|
'방통은 성루와 보급선을 흔드는 기책에 강하고, 제갈량은 전체 전열을 안정시킵니다. 둘을 함께 세우면 관문 압박은 좋아지지만 전열 한 자리가 비므로 위연이나 조운으로 빈틈을 메우십시오.',
|
|
roles: [
|
|
'유비: 부수관 진입 명분과 패배 조건의 중심',
|
|
'제갈량: 협곡 전열과 보급선 압박 순서 판단',
|
|
'방통: 성루 사격선과 관문 창고를 흔드는 기책 담당',
|
|
'위연: 좁은 관문 보병 전열을 여는 돌파 역할',
|
|
'황충: 성루 궁병과 산루 궁병 견제',
|
|
'조운: 협곡 기병과 복병 차단'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '부수관 마을',
|
|
lines: [
|
|
'방통: 관문을 열어도 마을 창고를 건드리면 익주의 문은 다시 닫힐 것입니다. 먼저 보급을 봉인하십시오.',
|
|
'유비: 군량을 탐하지 마시오. 이 길은 백성을 지키러 들어가는 길이오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '협곡 기병 차단',
|
|
lines: [
|
|
'조운: 협곡 기병이 후방을 끊으려 합니다. 방통 선생의 계책이 닿기 전에 길부터 지키겠습니다.',
|
|
'제갈량: 기병을 놓치면 성루 압박이 늦어집니다. 전열과 후방을 동시에 보십시오.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '고패의 흔들림',
|
|
lines: [
|
|
'성루 사격선과 관문 창고가 동시에 묶이자 고패의 병사들이 더는 좁은 길을 믿고 버티지 못합니다.',
|
|
'법정: 창고를 봉인하고도 관문을 연다라. 익주 안쪽에도 이 소식이 닿을 것입니다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '부수관 진입 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'pang-tong', role: 'support', reason: '성루 사격선과 관문 창고를 흔드는 이번 전투의 새 기책 축입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '방통의 기책을 전체 전열과 보급선 판단으로 연결합니다.' },
|
|
{ unitId: 'wei-yan', role: 'front', reason: '좁은 관문 보병 전열을 빠르게 열어 책사들의 압박 시간을 벌어 줍니다.' },
|
|
{ unitId: 'huang-zhong', role: 'support', reason: '성루 궁병과 산루 궁병을 안정적으로 견제합니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '협곡 기병과 복병을 빠르게 끊어 후방을 지킵니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '관문 명분', classKeys: ['lord'], reason: '유비가 살아 남아야 부수관 진입의 명분이 유지됩니다.' },
|
|
{ label: '와룡봉추', classKeys: ['strategist'], reason: '제갈량과 방통을 함께 세우면 관문 압박과 계책 성공률이 안정됩니다.' },
|
|
{ label: '협곡 돌파', classKeys: ['infantry', 'spearman'], reason: '위연 같은 돌파 장수가 좁은 길의 보병 전열을 열어야 합니다.' },
|
|
{ label: '기병 차단', classKeys: ['cavalry'], reason: '기동 장수가 협곡 기병과 복병을 끊어 책사를 보호합니다.' },
|
|
{ label: '성루 견제', classKeys: ['archer'], reason: '황충의 원거리 견제가 성루 궁병을 억제합니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 32, role: 'reserve', unitId: 'liu-bei', label: '관문 명분' },
|
|
{ x: 5, y: 32, role: 'support', unitId: 'zhuge-liang', label: '전열 판단' },
|
|
{ x: 9, y: 33, role: 'support', unitId: 'pang-tong', label: '성루 기책' },
|
|
{ x: 10, y: 31, role: 'front', unitId: 'wei-yan', label: '협곡 돌파' },
|
|
{ x: 7, y: 33, role: 'support', unitId: 'huang-zhong', label: '성루 견제' },
|
|
{ x: 8, y: 32, role: 'flank', unitId: 'zhao-yun', label: '기병 차단' }
|
|
],
|
|
note:
|
|
'부수관 진입전은 방통을 처음 실전 편성으로 시험하는 전장입니다. 와룡과 봉추를 같이 세우면 관문 압박은 강해지지만, 전열과 보급 선택을 더 신중히 해야 합니다.'
|
|
},
|
|
map: twentyEighthBattleMap,
|
|
units: twentyEighthBattleUnits,
|
|
bonds: twentyEighthBattleBonds,
|
|
mapTextureKey: 'battle-map-twenty-eighth',
|
|
leaderUnitId: 'fupass-leader-gao-pei',
|
|
quickVictoryTurnLimit: 50,
|
|
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',
|
|
targetTile: { x: 40, y: 19, radius: 13 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'canyon-screen',
|
|
kind: 'secure-terrain',
|
|
label: '협곡 기병 차단',
|
|
rewardGold: 1160,
|
|
terrain: 'road',
|
|
targetTile: { x: 42, y: 24, radius: 16 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'tower-archers',
|
|
kind: 'secure-terrain',
|
|
label: '성루 궁병 억제',
|
|
rewardGold: 1200,
|
|
terrain: 'fort',
|
|
targetTile: { x: 46, y: 17, radius: 10 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'gate-granary',
|
|
kind: 'secure-terrain',
|
|
label: '관문 창고 봉인',
|
|
rewardGold: 1280,
|
|
terrain: 'fort',
|
|
targetTile: { x: 49, y: 18, radius: 8 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '50턴 이내 승리',
|
|
rewardGold: 960,
|
|
maxTurn: 50
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
|
|
],
|
|
itemRewards: ['콩 13', '상처약 9', '탁주 6', '부수관 보급표 +1', '법정 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 13', '상처약 9', '탁주 6'],
|
|
reputation: ['부수관 보급표 +1', '와룡봉추 편성 경험 +1'],
|
|
recruits: ['fa-zheng'],
|
|
unlockBattleId: 'twenty-ninth-battle-luo-outer-wall',
|
|
unlockLabel: '낙성 외곽전 개방',
|
|
note: '부수관 창고를 봉인하고 관문을 열었습니다. 법정이 합류하고 낙성 외곽으로 향하는 길이 열립니다.'
|
|
},
|
|
victoryPages: twentyEighthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const twentyNinthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'twenty-ninth-battle-luo-outer-wall',
|
|
title: '낙성 외곽전',
|
|
victoryConditionLabel: '장임 퇴각',
|
|
defeatConditionLabel: '유비 또는 제갈량 퇴각',
|
|
openingObjectiveLines: [
|
|
'부수관을 넘어선 유비군은 낙성 외곽 방어선에 도착했습니다. 장임은 성 밖 마을과 고개를 이용해 시간을 벌고 있습니다.',
|
|
'이번 전투부터 법정도 출전 후보입니다. 법정은 성문 장수들의 속내와 오의의 흔들리는 마음을 읽지만, 전열 한 자리를 책사에게 맡기는 부담도 커집니다.',
|
|
'유비와 제갈량을 지키며 외곽 마을과 성벽 사격선을 안정시키고 장임을 물러나게 하십시오. 오의를 설득하면 낙성 안쪽 길이 열립니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'낙성 외곽전은 법정이 처음 실전 편성으로 들어오는 전장입니다. 성 밖 마을을 함부로 밀어붙이지 말고, 고개 척후와 성벽 궁병을 차례로 누르며 오의가 마음을 돌릴 명분을 만드십시오.',
|
|
route: '서남 유비군 진영 → 외곽 마을 위무 → 고개 척후 차단 → 성벽 사격선 억제 → 오의 설득 압박 → 장임 퇴각',
|
|
focus:
|
|
'법정을 세우면 오의 설득과 성문 정보가 강해지지만 전열이 얇아집니다. 위연이나 조운으로 길목을 열고, 황충으로 성벽 궁병을 묶어 법정과 제갈량이 움직일 시간을 벌어야 합니다.',
|
|
roles: [
|
|
'유비: 낙성 외곽 위무와 패배 조건의 중심',
|
|
'제갈량: 장임 방어선과 낙봉파로 이어지는 큰 흐름 판단',
|
|
'법정: 오의 설득과 성문 장수들의 속내를 읽는 내부 정보 담당',
|
|
'위연: 외곽 보병 전열과 고개 척후를 여는 돌파 역할',
|
|
'황충: 성벽 궁병과 산루 궁병 견제',
|
|
'조운: 넓은 외곽의 기병과 복병 차단'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '낙성 외곽 방어선',
|
|
lines: [
|
|
'법정: 이 마을을 거칠게 넘으면 오의도 성문 안으로 숨어 버릴 것입니다. 먼저 백성을 안심시키십시오.',
|
|
'유비: 칼보다 군율을 먼저 보이시오. 낙성의 문은 사람의 마음에서 먼저 열릴 것이오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '외곽 기병 접근',
|
|
lines: [
|
|
'조운: 성 밖 기병이 후방을 찌르려 합니다. 법정의 말이 닿기 전에 길이 끊기지 않게 막겠습니다.',
|
|
'제갈량: 기병을 놓치면 마을 위무와 성벽 압박이 갈라집니다. 측면을 먼저 안정시키십시오.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '장임의 후퇴 준비',
|
|
lines: [
|
|
'마을과 성벽 사격선이 흔들리자 장임의 병사들이 낙성 안쪽 퇴로를 돌아보기 시작합니다.',
|
|
'오의: 백성을 앞세우지 않고도 여기까지 왔단 말인가. 이 군이라면 낙성의 길을 말해 볼 수 있겠군.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'zhuge-liang'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '낙성 외곽 마을을 안정시키는 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '오의 설득과 성문 장수들의 속내를 읽는 이번 전투의 새 정보 축입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '법정의 내부 정보를 전체 방어선과 다음 낙봉파 판단으로 연결합니다.' },
|
|
{ unitId: 'wei-yan', role: 'front', reason: '외곽 보병 전열과 고개 척후를 빠르게 열어 책사들의 시간을 벌어 줍니다.' },
|
|
{ unitId: 'huang-zhong', role: 'support', reason: '성벽 궁병과 산루 궁병을 안정적으로 견제합니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '넓어진 외곽 맵에서 기병과 복병을 빠르게 차단합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '외곽 명분', classKeys: ['lord'], reason: '유비가 살아 남아야 마을 위무와 오의 설득의 명분이 유지됩니다.' },
|
|
{ label: '익주 정보', classKeys: ['strategist'], reason: '제갈량과 법정이 함께 있으면 성문 정보와 전열 판단이 안정됩니다.' },
|
|
{ label: '고개 돌파', classKeys: ['infantry', 'spearman'], reason: '위연 같은 전열 무장이 길목 보병을 열어야 책사가 움직일 수 있습니다.' },
|
|
{ label: '성벽 견제', classKeys: ['archer'], reason: '황충의 원거리 견제가 성벽 궁병과 산루 궁병을 억제합니다.' },
|
|
{ label: '기병 차단', classKeys: ['cavalry'], reason: '기동 장수가 넓은 외곽의 기병과 복병을 끊어 후방을 지킵니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 34, role: 'reserve', unitId: 'liu-bei', label: '마을 위무' },
|
|
{ x: 5, y: 34, role: 'support', unitId: 'zhuge-liang', label: '방어선 판단' },
|
|
{ x: 11, y: 36, role: 'support', unitId: 'fa-zheng', label: '성문 정보' },
|
|
{ x: 10, y: 33, role: 'front', unitId: 'wei-yan', label: '고개 돌파' },
|
|
{ x: 7, y: 35, role: 'support', unitId: 'huang-zhong', label: '성벽 견제' },
|
|
{ x: 8, y: 34, role: 'flank', unitId: 'zhao-yun', label: '기병 차단' }
|
|
],
|
|
note:
|
|
'낙성 외곽전은 법정을 처음 실전 편성으로 시험하는 전장입니다. 법정과 제갈량을 함께 세우면 설득과 정보가 강해지지만, 방통까지 넣을지 전열 무장을 세울지 선택이 더 중요해집니다.'
|
|
},
|
|
map: twentyNinthBattleMap,
|
|
units: twentyNinthBattleUnits,
|
|
bonds: twentyNinthBattleBonds,
|
|
mapTextureKey: 'battle-map-twenty-ninth',
|
|
leaderUnitId: 'luo-leader-zhang-ren',
|
|
quickVictoryTurnLimit: 48,
|
|
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',
|
|
targetTile: { x: 42, y: 20, radius: 20 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'luo-ridge-scouts',
|
|
kind: 'secure-terrain',
|
|
label: '고개 척후 차단',
|
|
rewardGold: 1220,
|
|
terrain: 'road',
|
|
targetTile: { x: 42, y: 23, radius: 18 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'luo-wall-archers',
|
|
kind: 'secure-terrain',
|
|
label: '성벽 궁병 억제',
|
|
rewardGold: 1260,
|
|
terrain: 'fort',
|
|
targetTile: { x: 50, y: 18, radius: 12 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'wu-yi-route',
|
|
kind: 'secure-terrain',
|
|
label: '오의 진영 압박',
|
|
rewardGold: 1320,
|
|
terrain: 'road',
|
|
targetTile: { x: 47, y: 23, radius: 9 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '60턴 이내 승리',
|
|
rewardGold: 1000,
|
|
maxTurn: 60
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
|
|
],
|
|
itemRewards: ['콩 14', '상처약 10', '탁주 6', '낙성 외곽 지도 +1', '오의 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 14', '상처약 10', '탁주 6'],
|
|
reputation: ['낙성 외곽 지도 +1', '오의 설득 명분 +1'],
|
|
recruits: ['wu-yi'],
|
|
unlockBattleId: 'thirtieth-battle-luofeng-ambush',
|
|
unlockLabel: '낙봉파 매복전 개방',
|
|
note: '낙성 외곽 마을과 성벽 사격선을 안정시켰습니다. 오의가 합류하고 낙봉파로 향하는 길이 열립니다.'
|
|
},
|
|
victoryPages: twentyNinthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtiethBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirtieth-battle-luofeng-ambush',
|
|
title: '낙봉파 매복전',
|
|
victoryConditionLabel: '장임 매복 격파',
|
|
defeatConditionLabel: '유비 또는 방통 퇴각',
|
|
openingObjectiveLines: [
|
|
'낙성 본성으로 가는 빠른 길인 낙봉파에 장임의 매복이 숨어 있습니다. 좁은 길과 고지 궁병을 동시에 살피며 진군해야 합니다.',
|
|
'오의가 새로 출전 후보에 들어왔습니다. 오의는 샛길과 고지 매복을 짚어 주지만, 방통과 함께 세우면 책사와 안내역이 늘어 전열 선택이 더 빡빡해집니다.',
|
|
'유비와 방통을 지키며 퇴로, 고지 궁병, 후미 기병을 차례로 정리하고 장임의 매복을 격파하십시오. 낙봉파를 넘으면 낙성 본성 공략이 열립니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'낙봉파 매복전은 빠른 길의 위험을 관리하는 전장입니다. 방통을 앞세워 매복을 읽되, 오의의 길 안내로 퇴로를 열고 조운과 황충으로 후미 기병과 고지 궁병을 끊어야 합니다.',
|
|
route: '서남 유비군 진영 → 퇴로 길목 확보 → 매복 비탈 탐색 → 고지 궁병 억제 → 후미 기병 차단 → 장임 매복 격파',
|
|
focus:
|
|
'방통은 매복을 읽는 핵심 생존 조건이고, 오의는 낙봉파의 샛길을 알려 줍니다. 둘을 함께 세우면 위험을 빨리 발견하지만 전열이 얇아지므로 조운이나 황충으로 실제 압박을 받아내야 합니다.',
|
|
roles: [
|
|
'유비: 낙봉파 돌파 명분과 패배 조건의 중심',
|
|
'방통: 매복 판독과 생존 조건의 중심',
|
|
'오의: 샛길, 고지, 퇴로를 알려 주는 현지 안내역',
|
|
'법정: 장임의 매복 습관과 익주 장수 심리 판단',
|
|
'조운: 후미 기병과 복병을 끊는 기동 차단',
|
|
'황충: 고지 궁병과 성루 궁병 견제'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '낙봉파 퇴로',
|
|
lines: [
|
|
'오의: 이 길은 빠르지만 뒤가 좁습니다. 먼저 퇴로를 잡아야 방통 선생이 마음 놓고 매복을 읽을 수 있습니다.',
|
|
'방통: 좋은 길은 돌아갈 길까지 보여야 합니다. 이 비탈을 우리 길로 만들어 두십시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '후미 기병 차단',
|
|
lines: [
|
|
'조운: 적 기병이 뒤를 끊으려 합니다. 방통 선생이 고지 쪽을 보는 동안 후미는 제가 맡겠습니다.',
|
|
'법정: 후미가 막히면 매복을 알아도 빠져나올 수 없습니다. 기병부터 묶으십시오.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '장임 매복 붕괴',
|
|
lines: [
|
|
'퇴로와 고지 사격선이 동시에 무너지자 장임의 매복 병력이 더는 숨을 곳을 믿지 못합니다.',
|
|
'방통: 이제야 길이 길답게 보이는군요. 장임을 몰아 낙성 본성 앞으로 밀어붙입시다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'pang-tong'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '낙봉파 돌파 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'pang-tong', role: 'support', reason: '매복을 읽는 핵심 책사이며 반드시 살려야 하는 생존 조건입니다.' },
|
|
{ unitId: 'wu-yi', role: 'flank', reason: '낙봉파 샛길과 고지 매복 위치를 아는 새 합류 안내역입니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '장임의 방어 습관과 익주 장수들의 심리를 읽어 매복 대응을 돕습니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '후미 기병과 복병을 빠르게 차단해 방통의 퇴로를 지킵니다.' },
|
|
{ unitId: 'huang-zhong', role: 'support', reason: '고지 궁병과 성루 궁병을 안정적으로 견제합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '돌파 명분', classKeys: ['lord'], reason: '유비가 살아 남아야 낙봉파 돌파의 명분이 유지됩니다.' },
|
|
{ label: '매복 판독', classKeys: ['strategist'], reason: '방통과 법정이 있으면 매복 경고와 적 심리 판단이 안정됩니다.' },
|
|
{ label: '현지 안내', classKeys: ['infantry', 'spearman'], reason: '오의 같은 현지 장수가 샛길과 퇴로 확보를 돕습니다.' },
|
|
{ label: '후미 차단', classKeys: ['cavalry'], reason: '기동 장수가 후미 기병과 복병을 끊어 방통을 지킵니다.' },
|
|
{ label: '고지 견제', classKeys: ['archer'], reason: '황충의 원거리 견제가 고지 궁병의 압박을 줄입니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 36, role: 'reserve', unitId: 'liu-bei', label: '돌파 명분' },
|
|
{ x: 9, y: 36, role: 'support', unitId: 'pang-tong', label: '매복 판독' },
|
|
{ x: 12, y: 36, role: 'flank', unitId: 'wu-yi', label: '길 안내' },
|
|
{ x: 11, y: 38, role: 'support', unitId: 'fa-zheng', label: '속내 읽기' },
|
|
{ x: 8, y: 36, role: 'flank', unitId: 'zhao-yun', label: '후미 차단' },
|
|
{ x: 7, y: 37, role: 'support', unitId: 'huang-zhong', label: '고지 견제' }
|
|
],
|
|
note:
|
|
'낙봉파 매복전은 방통 생환이 핵심입니다. 오의를 데려가면 길 안내가 강해지지만 전열 무장이 줄어드므로, 후미 차단과 고지 견제를 누가 맡을지 먼저 정해야 합니다.'
|
|
},
|
|
map: thirtiethBattleMap,
|
|
units: thirtiethBattleUnits,
|
|
bonds: thirtiethBattleBonds,
|
|
mapTextureKey: 'battle-map-thirtieth',
|
|
leaderUnitId: 'luofeng-leader-zhang-ren',
|
|
quickVictoryTurnLimit: 62,
|
|
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',
|
|
targetTile: { x: 44, y: 21, radius: 14 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'luofeng-ambush-slope',
|
|
kind: 'secure-terrain',
|
|
label: '매복 비탈 탐색',
|
|
rewardGold: 1280,
|
|
terrain: 'road',
|
|
targetTile: { x: 48, y: 23, radius: 13 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'luofeng-high-archers',
|
|
kind: 'secure-terrain',
|
|
label: '고지 궁병 억제',
|
|
rewardGold: 1340,
|
|
terrain: 'fort',
|
|
targetTile: { x: 47, y: 17, radius: 14 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'luofeng-rear-cavalry',
|
|
kind: 'secure-terrain',
|
|
label: '후미 기병 차단',
|
|
rewardGold: 1300,
|
|
terrain: 'road',
|
|
targetTile: { x: 51, y: 29, radius: 14 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '62턴 이내 승리',
|
|
rewardGold: 1040,
|
|
maxTurn: 62
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'pang-tong' }
|
|
],
|
|
itemRewards: ['콩 15', '상처약 11', '탁주 6', '낙봉파 정찰표 +1', '봉추 생환 +1'],
|
|
campaignReward: {
|
|
supplies: ['콩 15', '상처약 11', '탁주 6'],
|
|
reputation: ['낙봉파 정찰표 +1', '봉추 생환 +1'],
|
|
unlockBattleId: 'thirty-first-battle-luo-main-gate',
|
|
unlockLabel: '낙성 본성 공략 개방',
|
|
note: '낙봉파의 퇴로와 고지를 정리하고 방통을 살려 냈습니다. 장임은 낙성 본성으로 물러납니다.'
|
|
},
|
|
victoryPages: thirtiethBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtyFirstBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirty-first-battle-luo-main-gate',
|
|
title: '낙성 본성 공략',
|
|
victoryConditionLabel: '장임 본성 격파',
|
|
defeatConditionLabel: '유비 또는 방통 퇴각',
|
|
openingObjectiveLines: [
|
|
'낙성 본성은 높은 성벽과 좁은 성문으로 버티고 있습니다. 성문을 무너뜨리되 백성 피해를 줄여야 다음 익주 진입이 쉬워집니다.',
|
|
'엄안이 성 안의 노장으로 버티고 있습니다. 황충, 법정, 오의를 데려가면 성벽 궁병과 항복 설득을 함께 압박하기 좋습니다.',
|
|
'유비와 방통을 지키며 장임을 격파하십시오. 낙성이 열리면 익주 심부와 성도 압박으로 나아갑니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'낙성 본성 공략은 성문을 힘으로 여는 싸움이면서 동시에 익주 백성의 마음을 닫지 않는 싸움입니다. 외성 민가를 안정시키고 성벽 궁병을 억제한 뒤, 법정과 오의가 엄안에게 항복의 명분을 보여 주어야 합니다.',
|
|
route: '서남 유비군 진영 → 외성 민가 안정 → 성벽 사격선 억제 → 낙성 성문 확보 → 엄안 예우 압박 → 장임 본성 격파',
|
|
focus:
|
|
'방통은 성문 돌파 순서를 계산하고, 법정과 오의는 엄안 설득의 말길을 엽니다. 황충은 성벽 궁병을 견제하고 장비는 성문 친위대를 짧게 무너뜨리는 역할이 분명합니다.',
|
|
roles: [
|
|
'유비: 낙성 항복 명분과 패배 조건의 중심',
|
|
'방통: 성문 돌파 순서와 퇴로 계산',
|
|
'법정: 엄안 설득과 익주 장수 심리 판단',
|
|
'오의: 낙성 내부 지형과 성문 방어 습관 안내',
|
|
'황충: 성벽 궁병과 엄안의 원거리 압박 견제',
|
|
'장비: 성문 친위대를 밀어내는 정면 돌파'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '외성 민가 안정',
|
|
lines: [
|
|
'법정: 저 민가를 먼저 안정시키면 성 안의 노장들도 유비공의 군율을 보게 됩니다.',
|
|
'유비: 성문을 열기 전에 백성의 마음을 지키시오. 낙성은 빼앗는 성이 아니라 맡겨 받는 성이어야 하오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '성문 기병 견제',
|
|
lines: [
|
|
'장비: 성문 앞 기병이 옆구리를 찌르려 한다. 내가 먼저 흔들어 놓겠다!',
|
|
'오의: 저 기병을 묶어야 성벽 궁병의 사격선으로 끌려 들어가지 않습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '엄안의 마음이 움직이다',
|
|
lines: [
|
|
'성문과 민가가 안정되자 엄안의 병사들이 더는 백성을 방패로 삼으려 하지 않습니다.',
|
|
'엄안: 성을 치면서도 백성을 해치지 않는 군이라... 노장이 외면하기 어려운 길이로군.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'pang-tong'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '낙성 항복 명분이자 패배 조건의 중심입니다.' },
|
|
{ unitId: 'pang-tong', role: 'support', reason: '성문 돌파 순서와 퇴로를 함께 계산하는 핵심 책사입니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '엄안 설득과 익주 장수 심리 판단을 맡습니다.' },
|
|
{ unitId: 'wu-yi', role: 'flank', reason: '낙성 내부 지형과 성문 방어 습관을 아는 새 합류 장수입니다.' },
|
|
{ unitId: 'huang-zhong', role: 'support', reason: '성벽 궁병과 노장 엄안의 원거리 압박에 대응하기 좋습니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '성문 앞 친위대를 짧게 무너뜨리는 정면 돌파력이 필요합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '항복 명분', classKeys: ['lord'], reason: '유비가 살아 있어야 성문 개방 이후 항복 명분이 유지됩니다.' },
|
|
{ label: '성문 설계', classKeys: ['strategist'], reason: '방통과 법정이 성문 돌파와 엄안 설득을 안정시킵니다.' },
|
|
{ label: '정면 돌파', classKeys: ['infantry', 'spearman'], reason: '성문 친위대를 밀어내려면 굵은 전열이 필요합니다.' },
|
|
{ label: '성벽 견제', classKeys: ['archer'], reason: '황충 같은 궁병이 성벽 사격선을 끊어 줍니다.' },
|
|
{ label: '측면 기동', classKeys: ['cavalry'], reason: '성문 앞 기병과 복병을 빠르게 묶어야 합니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 39, role: 'reserve', unitId: 'liu-bei', label: '항복 명분' },
|
|
{ x: 9, y: 38, role: 'support', unitId: 'pang-tong', label: '성문 설계' },
|
|
{ x: 11, y: 40, role: 'support', unitId: 'fa-zheng', label: '엄안 설득' },
|
|
{ x: 12, y: 38, role: 'flank', unitId: 'wu-yi', label: '내성 길' },
|
|
{ x: 7, y: 39, role: 'support', unitId: 'huang-zhong', label: '성벽 견제' },
|
|
{ x: 4, y: 41, role: 'front', unitId: 'zhang-fei', label: '성문 돌파' }
|
|
],
|
|
note:
|
|
'낙성 본성 공략은 성문을 여는 힘과 항복을 받아낼 명분을 함께 봐야 합니다. 법정·오의를 세우면 엄안 설득이 선명해지고, 장비·황충을 세우면 성문 돌파가 안정됩니다.'
|
|
},
|
|
map: thirtyFirstBattleMap,
|
|
units: thirtyFirstBattleUnits,
|
|
bonds: thirtyFirstBattleBonds,
|
|
mapTextureKey: 'battle-map-thirty-first',
|
|
leaderUnitId: 'luo-main-leader-zhang-ren',
|
|
quickVictoryTurnLimit: 66,
|
|
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: 'outer-village',
|
|
kind: 'secure-terrain',
|
|
label: '외성 민가 안정',
|
|
rewardGold: 1320,
|
|
terrain: 'village',
|
|
targetTile: { x: 46, y: 25, radius: 14 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'wall-archers',
|
|
kind: 'secure-terrain',
|
|
label: '성벽 궁병 억제',
|
|
rewardGold: 1380,
|
|
terrain: 'fort',
|
|
targetTile: { x: 49, y: 18, radius: 15 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'main-gate',
|
|
kind: 'secure-terrain',
|
|
label: '낙성 성문 확보',
|
|
rewardGold: 1520,
|
|
terrain: 'fort',
|
|
targetTile: { x: 52, y: 21, radius: 14 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'yan-yan-honor',
|
|
kind: 'secure-terrain',
|
|
label: '엄안 예우 압박',
|
|
rewardGold: 1420,
|
|
terrain: 'fort',
|
|
targetTile: { x: 50, y: 22, radius: 14 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '66턴 이내 승리',
|
|
rewardGold: 1120,
|
|
maxTurn: 66
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'pang-tong' }
|
|
],
|
|
itemRewards: ['콩 16', '상처약 12', '탁주 7', '낙성 항복 권고문 +1', '엄안 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 16', '상처약 12', '탁주 7'],
|
|
reputation: ['낙성 항복 권고문 +1', '엄안 예우 +1'],
|
|
recruits: ['yan-yan'],
|
|
unlockBattleId: 'thirty-second-battle-mianzhu-gate',
|
|
unlockLabel: '면죽관 압박전 개방',
|
|
note: '낙성 성문을 열고 외성 민가를 안정시켜 엄안이 합류했습니다. 성도 앞 면죽관으로 향합니다.'
|
|
},
|
|
victoryPages: thirtyFirstBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtySecondBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirty-second-battle-mianzhu-gate',
|
|
title: '면죽관 압박전',
|
|
victoryConditionLabel: '이엄 수비선 격파',
|
|
defeatConditionLabel: '유비 또는 엄안 퇴각',
|
|
openingObjectiveLines: [
|
|
'면죽관은 성도 앞 마지막 완충 지대입니다. 관문을 장악하면 유장의 항복 권고가 현실적인 압박으로 바뀝니다.',
|
|
'엄안은 익주 장수들의 마음을 흔드는 첫 증거입니다. 엄안을 지키며 이엄에게 유비군의 군율과 예우를 보여 주십시오.',
|
|
'이엄을 격파하되 마을과 창고를 안정시키면 성도 항복 권고의 명분이 강해집니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'면죽관 압박전은 낙성에서 얻은 항복 명분을 성도 앞까지 이어 가는 전장입니다. 엄안을 전열에 세워 익주 장수 예우를 보이고, 외곽 마을과 보급 창고를 안정시켜 이엄이 끝까지 버틸 이유를 줄여야 합니다.',
|
|
route: '서남 유비군 진영 → 외곽 마을 안정 → 관문 궁병 억제 → 면죽관 관문 압박 → 보급 창고 확보 → 이엄 수비선 격파',
|
|
focus:
|
|
'엄안은 이엄 설득의 살아 있는 증거입니다. 법정과 오의는 관문과 창고의 약점을 짚고, 방통은 무리한 정면 돌파 대신 관문 압박 순서를 잡아 줍니다.',
|
|
roles: [
|
|
'유비: 성도 항복 권고와 패배 조건의 중심',
|
|
'엄안: 익주 장수 예우의 증거이자 생존 조건',
|
|
'법정: 이엄의 심리와 성도 수비장들의 속내 판단',
|
|
'오의: 면죽관 관문과 보급 창고 위치 안내',
|
|
'방통: 관문 압박 순서와 퇴로 계산',
|
|
'황충: 관문 궁병과 고지 사격선 견제'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '면죽 외곽 마을',
|
|
lines: [
|
|
'엄안: 이 마을을 함부로 밟지 마시오. 이엄은 성벽보다 백성의 눈을 더 두려워할 줄 아는 장수요.',
|
|
'유비: 낙성에서 보인 군율을 여기서도 지켜야 하오. 마을을 안정시킨 뒤 관문을 압박합시다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '창고 기병 견제',
|
|
lines: [
|
|
'오의: 적 기병이 창고 쪽 길을 끊으려 합니다. 보급 창고를 잃으면 이엄은 끝까지 버틸 명분을 얻습니다.',
|
|
'황충: 고지 사격선과 기병 돌격이 맞물리기 전에 활로 길을 열겠습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '이엄의 저울이 기울다',
|
|
lines: [
|
|
'외곽 마을과 보급 창고가 안정되자 이엄의 병사들은 더는 성도까지 불길이 번질 것이라 믿지 않습니다.',
|
|
'이엄: 엄안 장군까지 저 군영에 섰다면, 내 칼끝도 고집만으로 버틸 수는 없겠군.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'yan-yan'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '성도 항복 권고와 패배 조건의 중심입니다.' },
|
|
{ unitId: 'yan-yan', role: 'support', reason: '엄안의 첫 출전입니다. 이엄에게 익주 장수 예우를 증명합니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '성도 수비장들의 심리와 이엄의 판단을 읽는 책사입니다.' },
|
|
{ unitId: 'wu-yi', role: 'flank', reason: '면죽관 관문과 보급 창고 위치를 아는 현지 장수입니다.' },
|
|
{ unitId: 'pang-tong', role: 'support', reason: '무리한 돌파 대신 관문 압박과 퇴로 확보를 동시에 계산합니다.' },
|
|
{ unitId: 'huang-zhong', role: 'support', reason: '관문 궁병과 고지 수비를 안정적으로 견제합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '항복 명분', classKeys: ['lord'], reason: '유비가 살아 있어야 성도 항복 권고의 명분이 유지됩니다.' },
|
|
{ label: '익주 증언', classKeys: ['archer'], reason: '엄안과 황충이 관문 궁병을 견제하며 예우의 증거를 보여 줍니다.' },
|
|
{ label: '관문 설계', classKeys: ['strategist'], reason: '법정과 방통이 이엄의 심리와 관문 압박 순서를 잡습니다.' },
|
|
{ label: '현지 안내', classKeys: ['infantry', 'spearman'], reason: '오의 같은 익주 장수가 마을과 창고 위치를 짚어 줍니다.' },
|
|
{ label: '측면 기동', classKeys: ['cavalry'], reason: '관문 앞 기병과 창고 차단 병력을 빠르게 묶을 수 있습니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 40, role: 'reserve', unitId: 'liu-bei', label: '항복 명분' },
|
|
{ x: 11, y: 37, role: 'support', unitId: 'yan-yan', label: '익주 증언' },
|
|
{ x: 11, y: 41, role: 'support', unitId: 'fa-zheng', label: '이엄 판단' },
|
|
{ x: 12, y: 39, role: 'flank', unitId: 'wu-yi', label: '창고 길' },
|
|
{ x: 9, y: 39, role: 'support', unitId: 'pang-tong', label: '관문 설계' },
|
|
{ x: 7, y: 40, role: 'support', unitId: 'huang-zhong', label: '궁병 견제' }
|
|
],
|
|
note:
|
|
'면죽관 압박전은 엄안의 첫 출전을 설득의 증거로 쓰는 전투입니다. 관문을 무너뜨리는 힘보다 외곽 마을과 보급 창고를 안정시키는 명분이 중요합니다.'
|
|
},
|
|
map: thirtySecondBattleMap,
|
|
units: thirtySecondBattleUnits,
|
|
bonds: thirtySecondBattleBonds,
|
|
mapTextureKey: 'battle-map-thirty-second',
|
|
leaderUnitId: 'chengdu-leader-li-yan',
|
|
quickVictoryTurnLimit: 70,
|
|
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: 'outer-village',
|
|
kind: 'secure-terrain',
|
|
label: '외곽 마을 안정',
|
|
rewardGold: 1380,
|
|
terrain: 'village',
|
|
targetTile: { x: 46, y: 27, radius: 18 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'pass-archers',
|
|
kind: 'secure-terrain',
|
|
label: '관문 궁병 억제',
|
|
rewardGold: 1440,
|
|
terrain: 'fort',
|
|
targetTile: { x: 50, y: 18, radius: 16 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'mianzhu-gate',
|
|
kind: 'secure-terrain',
|
|
label: '면죽관 관문 압박',
|
|
rewardGold: 1560,
|
|
terrain: 'fort',
|
|
targetTile: { x: 52, y: 22, radius: 16 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'mianzhu-storehouse',
|
|
kind: 'secure-terrain',
|
|
label: '성도 보급 창고 확보',
|
|
rewardGold: 1600,
|
|
terrain: 'village',
|
|
targetTile: { x: 56, y: 30, radius: 18 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '70턴 이내 승리',
|
|
rewardGold: 1180,
|
|
maxTurn: 70
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'yan-yan' }
|
|
],
|
|
itemRewards: ['콩 18', '상처약 13', '탁주 7', '성도 항복 권고문 +1', '이엄 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 18', '상처약 13', '탁주 7'],
|
|
reputation: ['성도 항복 권고문 +1', '면죽관 군율 증명 +1'],
|
|
recruits: ['li-yan'],
|
|
unlockBattleId: 'thirty-third-battle-chengdu-surrender',
|
|
unlockLabel: '성도 항복 권고전 개방',
|
|
note: '면죽관과 보급 창고를 안정시키고 이엄이 합류했습니다. 성도 항복 권고의 마지막 길이 열립니다.'
|
|
},
|
|
victoryPages: thirtySecondBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtyThirdBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirty-third-battle-chengdu-surrender',
|
|
title: '성도 항복 권고전',
|
|
victoryConditionLabel: '황권 방어선 격파',
|
|
defeatConditionLabel: '유비 또는 이엄 퇴각',
|
|
openingObjectiveLines: [
|
|
'성도 외곽의 마지막 방어선입니다. 황권을 물리치면 유장의 항복 권고가 실제 선택지로 바뀝니다.',
|
|
'이엄은 방금 합류한 익주 장수로, 이번 전장에서 유비군의 군율을 증언하는 핵심 인물입니다. 이엄을 반드시 지키십시오.',
|
|
'성도 창고와 마을을 안정시키면 항복 조건에 대한 신뢰가 커지고, 익주 확보 이후의 수습이 쉬워집니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'성도 항복 권고전은 익주를 불태워 빼앗는 전투가 아니라, 유장이 항복을 선택할 수밖에 없는 조건을 만드는 전장입니다. 이엄의 증언을 지키고 외곽 마을과 창고를 안정시켜 황권의 신중한 판단을 흔들어야 합니다.',
|
|
route: '서남 유비군 진영 → 외곽 마을 안정 → 남문 사격선 억제 → 항복 반대파 압박 → 성도 창고 확보 → 황권 방어선 격파',
|
|
focus:
|
|
'이엄은 면죽관에서 본 군율을 증언하는 핵심 생존 조건입니다. 제갈량과 법정은 항복 조건을 정리하고, 엄안과 오의는 익주 장수와 지형의 말길을 이어 줍니다.',
|
|
roles: [
|
|
'유비: 성도 항복 권고와 패배 조건의 중심',
|
|
'이엄: 면죽관 군율을 증언하는 새 합류 장수',
|
|
'제갈량: 항복 조건과 익주 수습책 설계',
|
|
'법정: 황권의 신중한 판단과 유장 진영 속내 해석',
|
|
'엄안: 익주 노장의 항복 선례',
|
|
'오의: 성도 외곽 길과 창고 위치 안내'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '성도 외곽 마을',
|
|
lines: [
|
|
'이엄: 황권은 마을이 불타는 순간 항복 권고를 거짓으로 볼 것입니다. 먼저 백성의 길을 지켜야 합니다.',
|
|
'제갈량: 성도를 얻는 길은 성문보다 민심에서 열립니다. 외곽 마을을 안정시킨 뒤 남문을 압박하십시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '남문 반격 차단',
|
|
lines: [
|
|
'오의: 성도 기병이 창고와 남문 사이를 끊으려 합니다. 저 길을 놓치면 항복 조건을 전달할 틈도 사라집니다.',
|
|
'엄안: 익주 병사에게는 도망칠 길보다 물러설 명분이 필요하오. 기병을 묶되 지나친 추격은 삼가시오.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '황권의 판단',
|
|
lines: [
|
|
'마을과 창고가 보전되고 남문 반대파가 밀려나자, 황권은 더 이상 결전만이 익주를 지키는 길이라고 말하지 못합니다.',
|
|
'황권: 이엄과 엄안이 헛되이 고개를 숙인 것이 아니었군. 백성을 살리는 조건이라면 들어 보겠습니다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'li-yan'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '성도 항복 권고와 익주 확보 명분의 중심입니다.' },
|
|
{ unitId: 'li-yan', role: 'support', reason: '이엄의 첫 출전입니다. 면죽관에서 본 군율을 증언합니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '항복 조건과 익주 수습책을 동시에 설계하는 핵심 책사입니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '황권의 신중한 판단과 유장 진영의 속내를 읽습니다.' },
|
|
{ unitId: 'yan-yan', role: 'support', reason: '엄안의 항복 선례가 황권과 익주 장수들의 마음을 흔듭니다.' },
|
|
{ unitId: 'wu-yi', role: 'flank', reason: '성도 외곽 길과 창고 위치를 아는 현지 장수입니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '항복 명분', classKeys: ['lord'], reason: '유비가 살아 있어야 성도 항복 권고가 힘을 얻습니다.' },
|
|
{ label: '익주 증언', classKeys: ['infantry', 'spearman'], reason: '이엄과 오의가 군율과 현지 사정을 증언합니다.' },
|
|
{ label: '권고 설계', classKeys: ['strategist'], reason: '제갈량과 법정이 항복 조건과 황권의 심리를 정리합니다.' },
|
|
{ label: '노장 선례', classKeys: ['archer'], reason: '엄안이 익주 노장의 항복 선례로 설득력을 보탭니다.' },
|
|
{ label: '측면 차단', classKeys: ['cavalry'], reason: '성도 기병의 남문 반격과 창고 차단을 빠르게 묶을 수 있습니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 42, role: 'reserve', unitId: 'liu-bei', label: '항복 명분' },
|
|
{ x: 13, y: 40, role: 'support', unitId: 'li-yan', label: '익주 증언' },
|
|
{ x: 6, y: 40, role: 'support', unitId: 'zhuge-liang', label: '권고 설계' },
|
|
{ x: 11, y: 43, role: 'support', unitId: 'fa-zheng', label: '황권 판단' },
|
|
{ x: 11, y: 39, role: 'support', unitId: 'yan-yan', label: '노장 선례' },
|
|
{ x: 12, y: 41, role: 'flank', unitId: 'wu-yi', label: '창고 길' }
|
|
],
|
|
note:
|
|
'성도 항복 권고전은 성문을 부수기보다 항복 조건을 믿게 만드는 전투입니다. 이엄을 지키고, 마을과 창고를 안정시키며, 황권이 물러설 명분을 만들어야 합니다.'
|
|
},
|
|
map: thirtyThirdBattleMap,
|
|
units: thirtyThirdBattleUnits,
|
|
bonds: thirtyThirdBattleBonds,
|
|
mapTextureKey: 'battle-map-thirty-third',
|
|
leaderUnitId: 'chengdu-final-leader-huang-quan',
|
|
quickVictoryTurnLimit: 72,
|
|
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: 'outer-village',
|
|
kind: 'secure-terrain',
|
|
label: '성도 외곽 마을 안정',
|
|
rewardGold: 1440,
|
|
terrain: 'village',
|
|
targetTile: { x: 47, y: 29, radius: 20 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'south-gate-archers',
|
|
kind: 'secure-terrain',
|
|
label: '남문 궁병 억제',
|
|
rewardGold: 1500,
|
|
terrain: 'fort',
|
|
targetTile: { x: 52, y: 18, radius: 17 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'surrender-line',
|
|
kind: 'secure-terrain',
|
|
label: '항복 반대파 압박',
|
|
rewardGold: 1600,
|
|
terrain: 'fort',
|
|
targetTile: { x: 54, y: 22, radius: 17 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'chengdu-storehouse',
|
|
kind: 'secure-terrain',
|
|
label: '성도 창고 확보',
|
|
rewardGold: 1660,
|
|
terrain: 'village',
|
|
targetTile: { x: 59, y: 32, radius: 18 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
id: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '72턴 이내 승리',
|
|
rewardGold: 1240,
|
|
maxTurn: 72
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'li-yan' }
|
|
],
|
|
itemRewards: ['콩 20', '상처약 15', '탁주 8', '익주 안정문 +1', '황권 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 20', '상처약 15', '탁주 8'],
|
|
reputation: ['익주 안정문 +1', '성도 항복 권고 완료 +1'],
|
|
recruits: ['huang-quan'],
|
|
unlockBattleId: 'thirty-fourth-battle-jiameng-pass',
|
|
unlockLabel: '가맹관 마초 대면전 개방',
|
|
note: '성도 외곽과 창고를 보전하며 황권이 합류했습니다. 익주 기반이 마련되고 한중으로 향하는 북문이 열립니다.'
|
|
},
|
|
victoryPages: thirtyThirdBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtyFourthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirty-fourth-battle-jiameng-pass',
|
|
title: '가맹관 마초 대면전',
|
|
victoryConditionLabel: '마초 돌격 저지',
|
|
defeatConditionLabel: '유비 또는 황권 퇴각',
|
|
openingObjectiveLines: [
|
|
'가맹관은 익주와 한중을 잇는 목입니다. 이 길을 열면 촉한 건국 이후 북방 전선의 첫 기반이 마련됩니다.',
|
|
'황권은 이번 전장이 첫 출전입니다. 한중 길과 익주 내정의 균형을 잡으려면 황권을 지켜야 합니다.',
|
|
'마초의 첫 돌격을 받아내고 서량 선봉을 끊으면, 서량 기병을 유비군으로 끌어들일 말길이 열립니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'가맹관 마초 대면전은 마초를 꺾어 버리는 전투가 아니라, 서량 기병의 첫 돌격을 받아내고 유비군의 군율과 포용을 보여 주는 전장입니다. 황권의 길 해석을 지키며 산길 척후선과 보급로를 안정시키면 마초가 장로 진영에 머물 이유가 약해집니다.',
|
|
route: '서남 유비군 진영 → 산길 척후선 확인 → 가맹관 보급로 보전 → 서량 기병 돌격선 차단 → 마초 돌격 저지',
|
|
focus:
|
|
'황권은 한중 길과 익주 북문을 읽는 첫 출전 참모입니다. 조운과 장비는 마초의 돌격을 받아 내고, 법정은 마초가 장로에게 마음을 다 주지 못한 틈을 설득의 명분으로 바꿉니다.',
|
|
roles: [
|
|
'유비: 마초를 받아들일 명분과 패배 조건의 중심',
|
|
'황권: 가맹관 길과 한중 정세를 해석하는 새 합류 참모',
|
|
'조운: 서량 기병 돌격을 기동으로 받아 내는 후속 전열',
|
|
'장비: 정면 돌파선을 막아 서량 기세를 꺾는 전열',
|
|
'법정: 마초와 장로 사이의 균열을 읽는 설득 책사',
|
|
'황충: 산허리 궁병과 관문 사격선을 견제하는 원거리 축'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '가맹관 말길',
|
|
lines: [
|
|
'황권: 이 길은 성도와 한중을 잇는 북문입니다. 보급 창고와 산길을 보전해야 마초에게도 머물 곳을 보여 줄 수 있습니다.',
|
|
'유비: 창끝만 꺾어서는 장수를 얻지 못하오. 돌격을 받아 내되, 병사와 말길은 함부로 짓밟지 맙시다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '서량 돌격선',
|
|
lines: [
|
|
'조운: 적 기병은 길이 열리면 한 번에 깊이 들어옵니다. 전열을 넓히지 말고 돌아 나갈 길을 먼저 끊겠습니다.',
|
|
'장비: 좋다. 정면은 내가 막을 테니, 빠져나가는 말발굽은 조운이 끊어라.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '마초의 시선이 흔들리다',
|
|
lines: [
|
|
'서량 선봉이 끊기고 황권이 전열을 지키자, 마초는 유비군이 약탈로 길을 여는 군대가 아님을 보게 됩니다.',
|
|
'마초: 돌격을 막고도 보급을 불태우지 않는군. 저 깃발 아래라면 서량의 창도 다른 길을 찾을 수 있겠소.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'huang-quan'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '마초를 받아들일 명분과 패배 조건의 중심입니다.' },
|
|
{ unitId: 'huang-quan', role: 'support', reason: '황권의 첫 출전입니다. 익주 북문과 한중 길을 해석합니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '서량 기병의 돌격을 기동으로 받아 내고 후속을 끊습니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '마초의 정면 돌격을 받아 내는 강한 전열 압박입니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '마초가 장로에게 마음을 다 주지 못한 틈을 읽습니다.' },
|
|
{ unitId: 'huang-zhong', role: 'support', reason: '산허리 궁병과 관문 사격선을 안정적으로 견제합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '포용 명분', classKeys: ['lord'], reason: '유비가 살아 있어야 마초 합류의 명분이 유지됩니다.' },
|
|
{ label: '길 해석', classKeys: ['strategist'], reason: '황권과 법정이 가맹관 길과 마초의 속내를 읽습니다.' },
|
|
{ label: '돌격 저지', classKeys: ['spearman', 'infantry'], reason: '장비 같은 전열 무장이 서량 기병의 첫 충돌을 받아 냅니다.' },
|
|
{ label: '기병 회수', classKeys: ['cavalry'], reason: '조운이 깊게 들어온 기병의 후속과 퇴로를 끊습니다.' },
|
|
{ label: '사격 견제', classKeys: ['archer'], reason: '황충이 관문 궁병과 고지 사격선을 누릅니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 44, role: 'reserve', unitId: 'liu-bei', label: '포용 명분' },
|
|
{ x: 14, y: 44, role: 'support', unitId: 'huang-quan', label: '길 해석' },
|
|
{ x: 8, y: 43, role: 'flank', unitId: 'zhao-yun', label: '기병 회수' },
|
|
{ x: 4, y: 46, role: 'front', unitId: 'zhang-fei', label: '돌격 저지' },
|
|
{ x: 11, y: 45, role: 'support', unitId: 'fa-zheng', label: '설득 책략' },
|
|
{ x: 7, y: 44, role: 'support', unitId: 'huang-zhong', label: '사격 견제' }
|
|
],
|
|
note:
|
|
'가맹관 마초 대면전은 서량 기병을 완전히 몰살하는 싸움이 아니라, 첫 돌격을 막고 보급로와 말길을 보전해 마초가 유비군을 인정하게 만드는 전투입니다.'
|
|
},
|
|
map: thirtyFourthBattleMap,
|
|
units: thirtyFourthBattleUnits,
|
|
bonds: thirtyFourthBattleBonds,
|
|
mapTextureKey: 'battle-map-thirty-fourth',
|
|
leaderUnitId: 'jiameng-leader-ma-chao',
|
|
quickVictoryTurnLimit: 76,
|
|
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: 'quick',
|
|
kind: 'quick-victory',
|
|
label: '76턴 이내 승리',
|
|
rewardGold: 1300,
|
|
maxTurn: 76
|
|
}
|
|
],
|
|
defeatConditions: [
|
|
{ kind: 'unit-defeated', unitId: 'liu-bei' },
|
|
{ kind: 'unit-defeated', unitId: 'huang-quan' }
|
|
],
|
|
itemRewards: ['콩 22', '상처약 16', '탁주 8', '서량 기병 전술서 +1', '마초 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 22', '상처약 16', '탁주 8'],
|
|
reputation: ['서량 기병 전술서 +1', '가맹관 말길 보전 +1'],
|
|
recruits: ['ma-chao'],
|
|
unlockBattleId: 'thirty-fifth-battle-yangping-scout',
|
|
unlockLabel: '양평관 정찰전 개방',
|
|
note: '가맹관에서 서량 돌격을 받아 내고 마초가 합류했습니다. 보급로와 말길을 보전한 덕분에 양평관 정찰을 시작할 수 있습니다.'
|
|
},
|
|
victoryPages: thirtyFourthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtyFifthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirty-fifth-battle-yangping-scout',
|
|
title: '양평관 정찰전',
|
|
victoryConditionLabel: '양평관 선봉 격파',
|
|
defeatConditionLabel: '유비 또는 마초 퇴각',
|
|
openingObjectiveLines: [
|
|
'양평관은 한중 전선으로 들어가는 첫 관문입니다. 관문을 빼앗기보다 지형과 보급로를 확인하는 것이 목표입니다.',
|
|
'마초는 이번 전장이 합류 후 첫 출전입니다. 서량 기병의 속도를 활용하되 유비군의 전열과 너무 멀어지지 않게 해야 합니다.',
|
|
'장위의 선봉과 염포의 책략대를 물리치고 관문 창고를 확보하면, 흩어진 서량 기병과 마대가 합류할 길이 열립니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'양평관 정찰전은 한중을 빼앗기 위한 본전이 아니라, 마초가 유비군의 선봉으로 처음 달리며 양평관의 지형과 보급 창고를 확인하는 전장입니다. 장위를 밀어내되 마초를 깊이 고립시키지 않고, 황권이 창고와 산길을 기록할 시간을 벌어야 합니다.',
|
|
route: '서남 유비군 진영 → 서쪽 척후선 정리 → 마초 선봉 돌파 → 관문 창고 확인 → 염포 책략대 억제 → 장위 선봉 격파',
|
|
focus:
|
|
'마초는 새로 합류한 돌파 카드이지만 아직 유비군 전열과 호흡을 맞추는 단계입니다. 황권은 창고와 산길을 기록하고, 조운과 법정은 마초가 너무 깊이 들어가지 않게 후속을 잡아 줍니다.',
|
|
roles: [
|
|
'유비: 한중 정찰 명분과 패배 조건의 중심',
|
|
'마초: 첫 아군 출전이자 서쪽 선봉 돌파 담당',
|
|
'황권: 양평관 창고와 산길을 기록하는 현지 참모',
|
|
'제갈량: 한중 본전으로 이어질 전선 설계',
|
|
'조운: 마초의 돌격 뒤를 회수하는 기동 후속',
|
|
'법정: 장로군의 동요와 염포 책략 판단'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '양평관 창고',
|
|
lines: [
|
|
'황권: 저 창고는 군량보다 말먹이가 중요합니다. 마초의 기병이 한중 길에서 오래 버티려면 반드시 기록해 두어야 합니다.',
|
|
'마초: 길만 뚫고 지나가면 다시 흩어질 뿐입니다. 이번에는 창고와 귀환로를 남기고 달리겠습니다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '선봉 기병 접촉',
|
|
lines: [
|
|
'조운: 마초 장군의 돌격이 빠릅니다. 후속 기병과 보병이 끊어지지 않게 중앙 길을 비워 두겠습니다.',
|
|
'법정: 장로군은 추격을 유도합니다. 깊이 들어간 창은 강하지만, 돌아올 길이 있어야 다음 전투가 됩니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '장위의 선봉이 흔들리다',
|
|
lines: [
|
|
'창고와 산길이 유비군 손에 기록되자 장위의 선봉은 더 이상 양평관 전체를 가릴 수 없습니다.',
|
|
'장위: 마초가 유비군 깃발 아래서 달린다고? 그렇다면 한중 길도 예전처럼 막기 어렵겠군.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'ma-chao'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '한중 정찰 명분과 패배 조건의 중심입니다.' },
|
|
{ unitId: 'ma-chao', role: 'flank', reason: '마초의 첫 아군 출전입니다. 서량 기병으로 양평관 선봉을 흔듭니다.' },
|
|
{ unitId: 'huang-quan', role: 'support', reason: '양평관 지형과 창고 확보 목표를 읽는 현지 참모입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '한중 본전으로 이어질 전선 설계와 적 책사 견제를 맡습니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '마초가 너무 깊게 들어가지 않도록 기병 후속을 안정시킵니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '장로군의 내부 동요와 염포의 책략을 읽는 데 강합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '정찰 명분', classKeys: ['lord'], reason: '유비가 살아 있어야 한중 정찰이 다음 전선으로 이어집니다.' },
|
|
{ label: '서량 선봉', classKeys: ['cavalry'], reason: '마초와 조운이 돌파와 회수를 나누면 기병 운용이 안정됩니다.' },
|
|
{ label: '창고 기록', classKeys: ['strategist'], reason: '황권과 제갈량, 법정이 창고와 산길 정보를 전장 보상으로 연결합니다.' },
|
|
{ label: '관문 압박', classKeys: ['infantry', 'spearman'], reason: '보병 전열이 관문 앞에서 기병이 돌아올 시간을 벌어 줍니다.' },
|
|
{ label: '고지 견제', classKeys: ['archer'], reason: '궁병은 관문 궁병과 창고 주변 사격선을 억제합니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 46, role: 'reserve', unitId: 'liu-bei', label: '정찰 명분' },
|
|
{ x: 13, y: 42, role: 'flank', unitId: 'ma-chao', label: '서량 선봉' },
|
|
{ x: 14, y: 46, role: 'support', unitId: 'huang-quan', label: '창고 기록' },
|
|
{ x: 6, y: 44, role: 'support', unitId: 'zhuge-liang', label: '전선 설계' },
|
|
{ x: 8, y: 45, role: 'flank', unitId: 'zhao-yun', label: '기병 회수' },
|
|
{ x: 11, y: 45, role: 'support', unitId: 'fa-zheng', label: '책략 판단' }
|
|
],
|
|
note:
|
|
'양평관 정찰전은 마초가 처음 아군 선봉으로 나서는 전투입니다. 마초를 앞세우되 황권이 창고와 산길을 기록할 시간을 벌어, 마대 합류와 한중 본전 준비로 연결하십시오.'
|
|
},
|
|
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',
|
|
targetTile: { x: 62, y: 28, radius: 6 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
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', '마대 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 24', '상처약 18', '탁주 8'],
|
|
equipment: ['서량장창 +1'],
|
|
recruits: ['ma-dai'],
|
|
unlockBattleId: 'thirty-sixth-battle-dingjun-vanguard',
|
|
unlockLabel: '정군산 전초전 개방',
|
|
note: '양평관 창고와 산길을 확인하고 마대가 합류했습니다. 이제 마초와 마대의 기병 운용을 정군산 전초전에서 시험할 수 있습니다.'
|
|
},
|
|
victoryPages: thirtyFifthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtySixthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirty-sixth-battle-dingjun-vanguard',
|
|
title: '정군산 전초전',
|
|
victoryConditionLabel: '하후연 선봉 격파',
|
|
defeatConditionLabel: '유비 또는 황충 퇴각',
|
|
openingObjectiveLines: [
|
|
'정군산은 한중 전선의 고지입니다. 능선을 장악하면 한중 본전의 주도권을 유비군이 가져올 수 있습니다.',
|
|
'황충과 법정의 계책이 이번 전투의 중심입니다. 황충이 무너지면 정군산의 기세도 꺾입니다.',
|
|
'마초와 마대는 서쪽 능선을 흔들고, 왕평을 설득할 실마리를 찾아 한중 산길의 마음을 유비군 쪽으로 돌리십시오.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'정군산 전초전은 황충과 법정이 고지 돌파의 타이밍을 만들고, 마초와 마대가 서쪽 능선을 흔들어 하후연 선봉의 시야를 분산시키는 전장입니다. 왕평은 아직 적진에 있지만 산길을 아는 장수이므로, 하후연만 급히 치기보다 능선 창고와 길목을 먼저 눌러 귀순 명분을 만들어야 합니다.',
|
|
route: '서남 유비군 전열 → 서쪽 능선 정리 → 황충 고지 압박 → 정군산 창고 확보 → 왕평 접촉 → 하후연 선봉 격파',
|
|
focus:
|
|
'황충은 전투의 칼끝이지만 패배 조건이기도 합니다. 법정이 책략으로 고지 사격선을 끊고, 마초와 마대는 깊이 들어가기보다 하후연의 기병과 장합을 분산시켜 황충이 치고 올라갈 시간을 벌어야 합니다.',
|
|
roles: [
|
|
'유비: 한중 공략 명분과 패배 조건의 중심',
|
|
'황충: 정군산 고지 돌파와 하후연 선봉 격파 담당',
|
|
'법정: 황충의 돌파 타이밍과 적 고지 책략 견제',
|
|
'마초: 서쪽 능선 기병 압박과 적 시선 분산',
|
|
'마대: 마초 후속 회수와 좁은 산길 기병 운용',
|
|
'미축: 장기전 보급과 회복 안정'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '정군산 창고',
|
|
lines: [
|
|
'법정: 저 창고를 누르면 하후연의 고지 병력이 오래 버티지 못합니다. 황충 장군이 오를 길이 생깁니다.',
|
|
'황충: 보급을 끊고 길을 열면 활 한 번으로도 산의 기세를 바꿀 수 있소.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '서쪽 능선 기병',
|
|
lines: [
|
|
'마대: 산길은 넓지 않습니다. 숙부님이 앞을 흔들면 제가 퇴로를 붙잡겠습니다.',
|
|
'마초: 깊이 찌르기보다 적의 눈을 돌린다. 오늘의 돌격은 황충 장군의 길을 만들기 위한 것이다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '하후연 선봉이 흔들리다',
|
|
lines: [
|
|
'왕평: 유비군이 창고와 능선을 함께 잡았습니다. 산길을 아는 자라면 어느 깃발이 오래 버틸지 알 수 있습니다.',
|
|
'하후연: 노장이 고지를 타고, 서량 기병이 옆구리를 흔든다니. 정군산을 가볍게 넘겨볼 수 없겠군.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 6,
|
|
requiredUnits: ['liu-bei', 'huang-zhong'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '한중 공략 명분과 패배 조건의 중심입니다.' },
|
|
{ unitId: 'huang-zhong', role: 'front', reason: '정군산 전초전의 핵심 장수입니다. 하후연 선봉 격파와 생존 목표가 맞물립니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '황충이 고지를 오를 타이밍과 적 책략 사격선을 읽는 참모입니다.' },
|
|
{ unitId: 'ma-chao', role: 'flank', reason: '서쪽 능선을 흔들어 장합과 하후연 기병의 시선을 분산시킵니다.' },
|
|
{ unitId: 'ma-dai', role: 'flank', reason: '마초의 돌파 뒤를 회수하고 좁은 산길 기병 운용을 안정시킵니다.' },
|
|
{ unitId: 'mi-zhu', role: 'support', reason: '정군산 장기전에서 회복 도구와 보급 운용을 안정시키는 선택지입니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '고지 돌파', classKeys: ['archer', 'infantry'], reason: '황충과 보병 전열이 능선 위 사격선을 밀어냅니다.' },
|
|
{ label: '책략 타이밍', classKeys: ['strategist'], reason: '법정이 하후연 선봉의 허점과 고지 책략대를 끊어 줍니다.' },
|
|
{ label: '서쪽 우회', classKeys: ['cavalry'], reason: '마초와 마대가 적 기병의 시선을 갈라 황충의 돌파 길을 엽니다.' },
|
|
{ label: '보급 안정', classKeys: ['quartermaster'], reason: '미축과 보급 담당은 황충 생존 목표를 안정시키는 역할입니다.' },
|
|
{ label: '군주 생존', classKeys: ['lord'], reason: '유비가 살아 있어야 왕평 귀순과 한중 본전으로 이어집니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 48, role: 'reserve', unitId: 'liu-bei', label: '한중 명분' },
|
|
{ x: 8, y: 47, role: 'front', unitId: 'huang-zhong', label: '고지 돌파' },
|
|
{ x: 10, y: 49, role: 'support', unitId: 'fa-zheng', label: '책략 타이밍' },
|
|
{ x: 13, y: 44, role: 'flank', unitId: 'ma-chao', label: '서쪽 우회' },
|
|
{ x: 15, y: 45, role: 'flank', unitId: 'ma-dai', label: '퇴로 회수' },
|
|
{ x: 6, y: 50, role: 'support', unitId: 'mi-zhu', label: '보급 안정' }
|
|
],
|
|
note:
|
|
'정군산 전초전은 황충이 전투의 칼끝이지만 동시에 패배 조건입니다. 법정으로 길을 읽고, 마초·마대가 서쪽을 흔들며, 미축이 보급을 받쳐 황충이 무리 없이 하후연 선봉까지 닿게 하십시오.'
|
|
},
|
|
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',
|
|
targetTile: { x: 51, y: 35, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
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', '왕평 합류'],
|
|
campaignReward: {
|
|
supplies: ['콩 26', '상처약 20', '탁주 9'],
|
|
equipment: ['산악 지형도 +1'],
|
|
recruits: ['wang-ping'],
|
|
unlockBattleId: 'thirty-seventh-battle-hanzhong-decisive',
|
|
unlockLabel: '한중 결전 개방',
|
|
note: '정군산 능선과 보급 창고를 확보하고 왕평이 합류했습니다. 이제 왕평의 산길 지식으로 한중 결전의 북문을 흔들 수 있습니다.'
|
|
},
|
|
victoryPages: thirtySixthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtySeventhBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirty-seventh-battle-hanzhong-decisive',
|
|
title: '한중 결전',
|
|
victoryConditionLabel: '조조 본진 격파',
|
|
defeatConditionLabel: '유비 또는 왕평 퇴각',
|
|
openingObjectiveLines: [
|
|
'한중 결전은 정군산 이후 북문 전체를 안정시키는 싸움입니다. 조조군 본진을 흔들어 한중의 주도권을 완전히 가져오십시오.',
|
|
'왕평은 이번 전장의 길잡이입니다. 왕평이 무너지면 산길과 보급로를 잇는 계획도 무너집니다.',
|
|
'황충과 법정은 정군산의 여세를 이어 고지를 누르고, 마초와 마대는 조조군 기병의 퇴로를 끊어 한중을 유비군의 깃발 아래 묶으십시오.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'한중 결전은 조조 본진만 급히 치는 전투가 아니라, 왕평의 산길 지식을 활용해 보급 창고와 서쪽 숲길을 잇고 조조군 퇴로를 흔드는 전장입니다. 황충과 법정은 정군산의 여세로 중앙 고지를 누르고, 마초와 마대는 북쪽 기병을 묶어 본진 압박의 틈을 만듭니다.',
|
|
route: '서남 유비군 진영 → 서곡 척후선 정리 → 중앙 창고 확보 → 왕평 산길 안내 → 북쪽 기병 견제 → 조조 본진 격파',
|
|
focus:
|
|
'왕평은 새로 합류한 길잡이이자 패배 조건입니다. 너무 앞세우면 위험하지만 뒤에 두기만 하면 창고와 산길 목표가 흐려지므로, 법정·제갈량의 지원 안에서 중앙 창고를 먼저 열고 조조 본진으로 압박을 이어가야 합니다.',
|
|
roles: [
|
|
'유비: 한중 획득 명분과 패배 조건의 중심',
|
|
'왕평: 산길과 보급 창고를 잇는 새 길잡이',
|
|
'황충: 정군산 여세를 이어 중앙 고지 압박',
|
|
'법정: 조조군 본진을 흔드는 유인책과 책략 판단',
|
|
'마초: 북쪽 기병 견제와 퇴로 압박',
|
|
'마대: 마초 돌격 회수와 산길 기병 보조',
|
|
'제갈량: 한중왕 즉위와 다음 정치 흐름 설계'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '한중 창고',
|
|
lines: [
|
|
'왕평: 저 창고를 잡으면 산길의 병사들은 조조군 본진이 오래 버티지 못한다는 것을 압니다.',
|
|
'제갈량: 보급로가 마음을 흔들고, 마음이 성문을 흔듭니다. 이곳을 지나 본진으로 오르십시오.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '북쪽 기병 견제',
|
|
lines: [
|
|
'마대: 북쪽 길은 보기보다 좁습니다. 마초 장군이 묶고 제가 퇴로를 잘라 보겠습니다.',
|
|
'법정: 기병이 뒤를 보게 만들면 조조의 본진도 정면만 볼 수 없습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '조조 본진 압박',
|
|
lines: [
|
|
'황충: 정군산의 바람이 아직 칼끝에 남아 있소. 본진까지 몰아붙입시다.',
|
|
'조조: 산길의 병사가 길을 바꾸고, 유비가 명분을 세웠다. 한중을 오래 붙잡기는 어렵겠군.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 7,
|
|
requiredUnits: ['liu-bei', 'wang-ping'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '한중을 얻는 명분과 패배 조건의 중심입니다.' },
|
|
{ unitId: 'wang-ping', role: 'support', reason: '한중 산길과 보급 창고를 잇는 길잡이이며 생존 목표와 맞물립니다.' },
|
|
{ unitId: 'huang-zhong', role: 'front', reason: '정군산의 여세를 이어 중앙 고지와 조조 본진을 압박합니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '조조군 본진을 흔드는 유인책과 고지 운용의 핵심 참모입니다.' },
|
|
{ unitId: 'ma-chao', role: 'flank', reason: '북쪽 기병대를 묶고 조조군 퇴로를 흔드는 기동 축입니다.' },
|
|
{ unitId: 'ma-dai', role: 'flank', reason: '마초의 돌격을 회수하고 좁은 산길 기병 운용을 보조합니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '한중 승리 이후 한중왕 즉위와 촉한 건국 흐름까지 설계합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '한중 명분', classKeys: ['lord'], reason: '유비가 살아 있어야 한중왕 즉위 준비가 이어집니다.' },
|
|
{ label: '산길 안내', classKeys: ['spearman'], reason: '왕평은 새로 합류한 길잡이이며 창고 확보와 생존 목표가 맞물립니다.' },
|
|
{ label: '고지 압박', classKeys: ['archer', 'infantry'], reason: '황충과 전열 병과가 중앙 창고와 고지를 열어 줍니다.' },
|
|
{ label: '본진 유인', classKeys: ['strategist'], reason: '법정과 제갈량이 조조 본진을 무리 없이 끌어냅니다.' },
|
|
{ label: '퇴로 차단', classKeys: ['cavalry'], reason: '마초와 마대가 북쪽 기병을 묶고 조조군의 뒤를 흔듭니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 4, y: 50, role: 'reserve', unitId: 'liu-bei', label: '한중 명분' },
|
|
{ x: 16, y: 49, role: 'support', unitId: 'wang-ping', label: '산길 안내' },
|
|
{ x: 7, y: 50, role: 'front', unitId: 'huang-zhong', label: '고지 압박' },
|
|
{ x: 11, y: 51, role: 'support', unitId: 'fa-zheng', label: '본진 유인' },
|
|
{ x: 13, y: 46, role: 'flank', unitId: 'ma-chao', label: '퇴로 압박' },
|
|
{ x: 15, y: 47, role: 'flank', unitId: 'ma-dai', label: '기병 회수' },
|
|
{ x: 6, y: 48, role: 'support', unitId: 'zhuge-liang', label: '건국 설계' }
|
|
],
|
|
note:
|
|
'한중 결전은 왕평이 합류한 뒤 처음 치르는 본전입니다. 왕평을 보호하며 중앙 창고를 열고, 황충·법정의 고지 압박과 마초·마대의 퇴로 차단을 한 흐름으로 묶어 조조 본진을 무너뜨리십시오.'
|
|
},
|
|
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',
|
|
targetTile: { x: 69, y: 22, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
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', '한중왕 즉위 준비'],
|
|
campaignReward: {
|
|
supplies: ['콩 30', '상처약 22', '탁주 10'],
|
|
equipment: ['한중 병법서 1'],
|
|
reputation: ['한중왕 즉위 준비'],
|
|
unlockLabel: '한중왕 즉위 준비',
|
|
note: '한중의 창고와 산길을 장악하고 조조군 본진을 물리쳤습니다. 다음 군영에서는 한중왕 즉위와 촉한 건국 명분을 정리합니다.'
|
|
},
|
|
victoryPages: thirtySeventhBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtyEighthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirty-eighth-battle-jing-defense',
|
|
title: '형주 방위 전초전',
|
|
victoryConditionLabel: '여몽 정찰대 격파',
|
|
defeatConditionLabel: '유비 또는 관우 퇴각',
|
|
openingObjectiveLines: [
|
|
'촉한 건국 직후 형주는 위와 오의 시선이 동시에 모이는 전선이 되었습니다. 봉화대와 나루를 지켜 형주의 불안을 먼저 누르십시오.',
|
|
'관우는 이번 전투의 핵심입니다. 관우가 무너지면 형주의 방위 명분도 함께 흔들립니다.',
|
|
'강변 마을을 확보하고 오군의 정찰선을 몰아내면, 번성으로 이어질 다음 전선의 숨통을 열 수 있습니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'형주 방위 전초전은 촉한 건국 직후 형주가 위와 오 사이에 놓이는 첫 방어전입니다. 관우가 북문 전선을 붙잡는 동안, 마량은 강변 민심과 봉화대를 안정시키고 조운은 나루를 넘보는 오군 척후를 끊어야 합니다.',
|
|
route: '서남 형주 본영 → 남안 나루 척후 정리 → 중앙 강변 마을 확보 → 동쪽 봉화대 수복 → 여몽 정찰대 격파',
|
|
focus:
|
|
'관우 생존이 전장의 축입니다. 관우를 너무 앞세워 고립시키지 말고, 유비와 미축의 후방 보급, 마량의 봉화대 판단, 조운의 강변 기동을 묶어 위·오 양쪽의 정찰선을 차례로 끊어야 합니다.',
|
|
roles: [
|
|
'유비: 촉한 명분과 형주 방위 책임의 중심',
|
|
'관우: 북문과 봉화대를 지키는 핵심 전열',
|
|
'장비: 관우 전열을 보조하는 정면 압박',
|
|
'마량: 형주 민심과 봉화대 확보의 현지 책사',
|
|
'미축: 강릉·나루 보급 안정',
|
|
'제갈량: 위와 오가 동시에 움직이는 정치적 위험 해석',
|
|
'조운: 강변 척후와 기병 대응'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '봉화대와 강변 마을',
|
|
lines: [
|
|
'마량: 봉화대가 꺼지면 강변 마을은 어느 깃발을 믿어야 할지 모르게 됩니다.',
|
|
'관우: 먼저 봉화를 다시 올리고, 나루의 척후를 끊어 형주의 마음을 붙잡겠다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '나루 기동대',
|
|
lines: [
|
|
'조운: 강변 기병은 정면보다 옆을 노립니다. 제가 나루의 틈을 막겠습니다.',
|
|
'미축: 보급 수레가 흔들리면 전열도 흔들립니다. 강릉 쪽 길을 열어 두겠습니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '여몽 정찰대',
|
|
lines: [
|
|
'여몽: 형주의 봉화가 이렇게 빠르게 살아날 줄은 몰랐다. 더 깊이 들어가기는 어렵겠군.',
|
|
'관우: 형주는 촉한의 등이다. 정찰대 하나라도 이 땅의 마음을 흔들게 두지 않겠다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 7,
|
|
requiredUnits: ['liu-bei', 'guan-yu'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '촉한의 이름을 세운 뒤 형주 방위 명분을 직접 확인합니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '형주 방위 전초전의 핵심 장수이며 생존 목표입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '관우의 전열 압박을 보조하며 강한 정면 대응을 맡습니다.' },
|
|
{ unitId: 'ma-liang', role: 'support', reason: '형주 민심과 봉화대 확보를 읽는 현지 책사입니다.' },
|
|
{ unitId: 'mi-zhu', role: 'support', reason: '강릉과 나루 사이 보급을 안정시키는 군량관입니다.' },
|
|
{ unitId: 'zhuge-liang', role: 'support', reason: '촉한 건국 직후 형주 전선의 정치적 위험을 해석합니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '강변 척후와 기병 대응을 안정적으로 맡습니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '형주 명분', classKeys: ['lord'], reason: '유비가 전장에 있어야 형주 방위 명분이 흔들리지 않습니다.' },
|
|
{ label: '북문 전열', classKeys: ['spearman', 'infantry'], reason: '관우와 장비가 북쪽 성채 압박을 받아 냅니다.' },
|
|
{ label: '강변 기동', classKeys: ['cavalry'], reason: '조운이 나루와 강변 척후를 빠르게 끊어 줍니다.' },
|
|
{ label: '민심 판단', classKeys: ['strategist'], reason: '마량과 제갈량이 봉화대·민심·정치적 위험을 읽습니다.' },
|
|
{ label: '보급 안정', classKeys: ['infantry', 'strategist'], reason: '미축이 강릉과 나루 사이 보급선을 지켜 줍니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 5, y: 51, role: 'reserve', unitId: 'liu-bei', label: '형주 명분' },
|
|
{ x: 9, y: 46, role: 'front', unitId: 'guan-yu', label: '북문 전열' },
|
|
{ x: 6, y: 53, role: 'front', unitId: 'zhang-fei', label: '남안 압박' },
|
|
{ x: 10, y: 51, role: 'support', unitId: 'ma-liang', label: '봉화 판단' },
|
|
{ x: 8, y: 52, role: 'support', unitId: 'mi-zhu', label: '보급 안정' },
|
|
{ x: 8, y: 48, role: 'support', unitId: 'zhuge-liang', label: '양면 해석' },
|
|
{ x: 11, y: 49, role: 'flank', unitId: 'zhao-yun', label: '강변 기동' }
|
|
],
|
|
note:
|
|
'형주 방위 전초전은 촉한 건국 직후 형주가 위와 오 사이에 놓이는 첫 시험입니다. 관우를 전열의 중심에 세우고, 마량·미축·제갈량의 지원과 조운의 강변 기동으로 봉화대와 나루를 안정시키십시오.'
|
|
},
|
|
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',
|
|
targetTile: { x: 70, y: 40, radius: 5 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
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', '번성 전선 준비'],
|
|
campaignReward: {
|
|
supplies: ['콩 32', '상처약 24', '탁주 10'],
|
|
equipment: ['형주 봉화도 1'],
|
|
reputation: ['번성 전선 준비'],
|
|
unlockLabel: '번성 외곽 압박전',
|
|
note: '형주 봉화대와 강변 마을을 안정시키고 여몽 정찰대를 물리쳤습니다. 다음 군영에서는 번성 외곽 압박을 준비합니다.'
|
|
},
|
|
victoryPages: thirtyEighthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const thirtyNinthBattleScenario: BattleScenarioDefinition = {
|
|
id: 'thirty-ninth-battle-fan-castle-vanguard',
|
|
title: '번성 외곽 압박전',
|
|
victoryConditionLabel: '방덕 선봉 격파',
|
|
defeatConditionLabel: '유비 또는 관우 퇴각',
|
|
openingObjectiveLines: [
|
|
'형주 방위가 안정된 사이 관우는 번성 외곽으로 북상했습니다. 조조군의 보루와 나루를 먼저 장악해야 다음 결전을 열 수 있습니다.',
|
|
'이번 전투는 관우가 핵심입니다. 관우가 무너지면 번성 전선의 사기가 흔들리니, 유비와 관우를 함께 지키며 전선을 밀어 올리십시오.',
|
|
'성채 안쪽의 조인, 수로를 보는 우금, 기병을 이끄는 방덕이 서로 다른 방식으로 버틸 것입니다. 기동대와 책사를 골고루 출전시키면 공명과 성장 기회가 커집니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'번성 외곽 압박전은 관우가 형주 방위에서 북상 공세로 전환하는 첫 전투입니다. 외곽 보루와 나루를 먼저 누르면 방덕의 기병 선봉이 고립되고, 다음 한수 수공을 준비할 제방·수문 정보도 확보할 수 있습니다.',
|
|
route: '서남 형주 진영 → 강변 척후 정리 → 중로 보병선 돌파 → 외곽 보루 확보 → 방덕 기병 선봉 격파',
|
|
focus:
|
|
'방덕 기병은 빠르게 밀고 들어오지만 보루를 잃으면 버티기 어렵습니다. 관우와 장비가 정면을 세우고, 황충이 보루 궁병을 누르며, 법정은 제방과 수문을 읽어 다음 수공 준비까지 연결해야 합니다.',
|
|
roles: [
|
|
'유비: 번성 공세의 명분과 패배 조건의 중심',
|
|
'관우: 외곽 보루 압박과 생존 목표의 핵심 전열',
|
|
'장비: 방덕 기병 돌파를 받아 내는 전열 보강',
|
|
'조운: 강변과 보루 사이 기동 대응',
|
|
'황충: 보루 궁병과 성벽 압박의 원거리 축',
|
|
'법정: 한수 물길과 제방을 읽는 수공 준비 참모',
|
|
'마량: 형주 민심과 보급선 안정'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '외곽 보루',
|
|
lines: [
|
|
'법정: 저 보루를 잡으면 한수의 물길과 수문을 살필 자리를 얻습니다.',
|
|
'황충: 성벽 위 궁병은 오래 두면 전열을 갉아먹습니다. 제가 먼저 눌러 보겠습니다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '방덕 기병',
|
|
lines: [
|
|
'장비: 방덕이 돌파로 길을 열려는군. 정면은 내가 받아 내겠다.',
|
|
'조운: 기병이 돌아 나오는 틈은 제가 끊겠습니다. 보루 쪽으로 몰아넣으십시오.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '방덕 선봉 고립',
|
|
lines: [
|
|
'방덕: 보루가 흔들리니 기병의 발도 묶이는군. 그러나 물러서지는 않겠다.',
|
|
'관우: 그 결기는 보았다. 하지만 오늘은 번성의 바깥문을 열어야 한다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 7,
|
|
requiredUnits: ['liu-bei', 'guan-yu'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '번성 전선의 큰 명분과 패배 조건의 중심입니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '번성 외곽 압박전의 핵심 장수이며 생존 목표입니다.' },
|
|
{ unitId: 'zhang-fei', role: 'front', reason: '방덕 기병의 돌파를 정면에서 받아치는 강한 전열입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '강변과 보루 사이 기동 대응을 안정적으로 맡습니다.' },
|
|
{ unitId: 'huang-zhong', role: 'support', reason: '외곽 보루의 궁병과 성벽 압박에 강한 원거리 축입니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '한수 물길과 제방을 읽어 다음 수공 준비와 맞물립니다.' },
|
|
{ unitId: 'ma-liang', role: 'support', reason: '형주 민심과 보급선을 안정시키며 관우 전선을 보조합니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '번성 명분', classKeys: ['lord'], reason: '유비가 있어야 형주 전선의 공세 명분이 흔들리지 않습니다.' },
|
|
{ label: '보루 전열', classKeys: ['spearman', 'infantry'], reason: '관우와 장비가 방덕 기병 돌파를 받아 냅니다.' },
|
|
{ label: '기동 견제', classKeys: ['cavalry'], reason: '조운이 강변과 보루 사이 빈틈을 메웁니다.' },
|
|
{ label: '성벽 압박', classKeys: ['archer'], reason: '황충이 보루 궁병과 성벽 압박을 안정적으로 맡습니다.' },
|
|
{ label: '수공 준비', classKeys: ['strategist'], reason: '법정과 마량이 제방·수문·보급선을 다음 전투로 연결합니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 5, y: 54, role: 'reserve', unitId: 'liu-bei', label: '번성 명분' },
|
|
{ x: 10, y: 49, role: 'front', unitId: 'guan-yu', label: '보루 전열' },
|
|
{ x: 6, y: 56, role: 'front', unitId: 'zhang-fei', label: '기병 수비' },
|
|
{ x: 13, y: 52, role: 'flank', unitId: 'zhao-yun', label: '강변 기동' },
|
|
{ x: 16, y: 50, role: 'support', unitId: 'huang-zhong', label: '성벽 압박' },
|
|
{ x: 17, y: 54, role: 'support', unitId: 'fa-zheng', label: '수공 준비' },
|
|
{ x: 12, y: 54, role: 'support', unitId: 'ma-liang', label: '보급 안정' }
|
|
],
|
|
note:
|
|
'번성 외곽 압박전은 관우가 방어에서 공세로 전환하는 첫 전장입니다. 외곽 보루를 확보해 방덕 기병을 고립시키고, 법정·마량으로 제방과 보급 정보를 챙겨 다음 한수 수공을 준비하십시오.'
|
|
},
|
|
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',
|
|
targetTile: { x: 68, y: 34, radius: 6 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
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', '한수 수공 준비'],
|
|
campaignReward: {
|
|
supplies: ['콩 34', '상처약 25', '탁주 10'],
|
|
equipment: ['번성 외곽도 1'],
|
|
reputation: ['한수 수공 준비'],
|
|
unlockLabel: '한수 수공',
|
|
note: '번성 외곽 보루와 나루를 장악하고 방덕 선봉을 밀어냈습니다. 다음 군영에서는 한수 수위와 제방을 활용한 수공을 준비합니다.'
|
|
},
|
|
victoryPages: thirtyNinthBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const fortiethBattleScenario: BattleScenarioDefinition = {
|
|
id: 'fortieth-battle-han-river-flood',
|
|
title: '한수 수공',
|
|
victoryConditionLabel: '우금 본대 격파',
|
|
defeatConditionLabel: '유비 또는 관우 퇴각',
|
|
openingObjectiveLines: [
|
|
'한수의 수위가 오르며 번성 외곽이 진흙과 물길로 갈라졌습니다. 우금의 본대를 강과 둑 사이에 묶어 칠군을 흔드십시오.',
|
|
'관우는 이번 전투의 중심입니다. 관우가 전선을 잃으면 수공의 명분과 병사의 사기가 함께 무너집니다.',
|
|
'우금은 본진을 지키고, 방덕은 기병으로 돌파를 시도합니다. 법정, 마량, 황권 같은 참모와 기동대를 함께 운용하면 물길을 장악하기 쉽습니다.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'한수 수공은 성벽을 바로 치는 전투가 아니라, 둑길과 수문을 장악해 우금의 칠군을 강과 진흙 사이에 묶는 전투입니다. 법정은 수위와 타이밍을 잡고, 황권은 퇴로를 신중히 끊으며, 관우는 물길이 만든 틈으로 본대를 압박해야 합니다.',
|
|
route: '서남 형주 진영 → 하류 척후 정리 → 중앙 둑길 확보 → 수문 주변 기병 견제 → 우금 본대 격파',
|
|
focus:
|
|
'둑길 목표를 놓치면 수공이 단순 돌파전처럼 느껴집니다. 관우가 전열을 붙잡는 동안 법정·마량·황권을 둑길 가까이 두고, 조운과 마초로 방덕 기병의 옆길을 차단해야 칠군 항복 흐름이 자연스럽게 이어집니다.',
|
|
roles: [
|
|
'유비: 수공 명분과 패배 조건의 중심',
|
|
'관우: 한수 전선 지휘와 생존 목표의 핵심 전열',
|
|
'법정: 수위와 둑길 타이밍을 잡는 참모',
|
|
'마량: 형주 제방과 민심을 함께 살피는 현지 책사',
|
|
'황권: 퇴로와 포로 처리를 신중히 판정하는 참모',
|
|
'조운: 둑길과 나루 사이 빠른 보강',
|
|
'마초: 방덕 기병 돌파를 맞받아치는 기동 카드'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '둑길과 수문',
|
|
lines: [
|
|
'법정: 수문 가까운 둑길을 잡으면 우금의 본대는 높은 길을 잃습니다.',
|
|
'황권: 물이 적을 삼키게 하려면 퇴로를 너무 일찍 닫지 않는 신중함도 필요합니다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '방덕의 돌파',
|
|
lines: [
|
|
'마초: 방덕의 기병은 물길이 좁아지기 전에 치고 나올 것입니다. 제가 맞받아치겠습니다.',
|
|
'조운: 둑 위 빈틈을 메우면 기병의 발은 물과 진흙 사이에 묶입니다.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '칠군의 항복',
|
|
lines: [
|
|
'우금: 물길과 퇴로가 모두 막혔다. 병사를 살리려면 더 버틸 수 없겠군.',
|
|
'관우: 무기를 내려놓는 자는 살려라. 오늘의 물길은 성벽보다 먼저 사람의 마음을 흔들었다.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 7,
|
|
requiredUnits: ['liu-bei', 'guan-yu'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '칠군을 흔드는 대의명분과 패배 조건의 중심입니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '한수 수공의 전선 지휘관이며 생존 목표입니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '수위와 둑길을 읽어 수공의 타이밍을 잡는 핵심 참모입니다.' },
|
|
{ unitId: 'ma-liang', role: 'support', reason: '형주 현지의 제방과 민심을 함께 살피는 보조 책사입니다.' },
|
|
{ unitId: 'huang-quan', role: 'support', reason: '물길과 퇴로를 신중하게 판정해 포위 안정성을 높입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '제방과 나루 사이를 빠르게 보강하는 기동 축입니다.' },
|
|
{ unitId: 'ma-chao', role: 'flank', reason: '방덕 기병의 돌파를 맞받아치는 기병 대응 카드입니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '수공 명분', classKeys: ['lord'], reason: '유비가 있어야 칠군 항복 이후 처리 명분이 분명해집니다.' },
|
|
{ label: '둑길 전열', classKeys: ['spearman', 'infantry'], reason: '관우가 둑길과 수문 사이 전선을 붙잡습니다.' },
|
|
{ label: '물길 판단', classKeys: ['strategist'], reason: '법정·마량·황권이 수위, 퇴로, 포로 처리를 나눠 봅니다.' },
|
|
{ label: '기병 봉쇄', classKeys: ['cavalry'], reason: '조운과 마초가 방덕 기병을 물가로 몰아넣습니다.' },
|
|
{ label: '고지 지원', classKeys: ['archer'], reason: '둑 위 궁병 대응이 있으면 본대 압박이 안정됩니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 5, y: 56, role: 'reserve', unitId: 'liu-bei', label: '수공 명분' },
|
|
{ x: 11, y: 51, role: 'front', unitId: 'guan-yu', label: '둑길 전열' },
|
|
{ x: 18, y: 56, role: 'support', unitId: 'fa-zheng', label: '수위 판단' },
|
|
{ x: 13, y: 56, role: 'support', unitId: 'ma-liang', label: '제방 민심' },
|
|
{ x: 21, y: 57, role: 'support', unitId: 'huang-quan', label: '퇴로 판정' },
|
|
{ x: 14, y: 54, role: 'flank', unitId: 'zhao-yun', label: '나루 보강' },
|
|
{ x: 22, y: 51, role: 'flank', unitId: 'ma-chao', label: '기병 봉쇄' }
|
|
],
|
|
note:
|
|
'한수 수공은 둑길과 수문을 잡아 우금 본대를 강과 진흙 사이에 묶는 전투입니다. 법정·마량·황권으로 물길을 읽고, 조운·마초로 방덕 기병의 돌파를 막으며 관우의 전열을 유지하십시오.'
|
|
},
|
|
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: 'fort',
|
|
targetTile: { x: 74, y: 29, radius: 6 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
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'],
|
|
campaignReward: {
|
|
supplies: ['콩 36', '상처약 26', '탁주 11'],
|
|
equipment: ['한수 수위표 1'],
|
|
reputation: ['칠군 항복문 1'],
|
|
unlockLabel: '번성 포위',
|
|
note: '한수 둑길과 수문 주변을 장악해 우금의 칠군을 항복시켰습니다. 다음 군영에서는 번성 성벽을 직접 압박할 준비를 합니다.'
|
|
},
|
|
victoryPages: fortiethBattleVictoryPages,
|
|
nextCampScene: 'CampScene'
|
|
};
|
|
|
|
export const fortyFirstBattleScenario: BattleScenarioDefinition = {
|
|
id: 'forty-first-battle-fan-castle-siege',
|
|
title: '번성 공성전',
|
|
victoryConditionLabel: '조인 성문 방어선 격파',
|
|
defeatConditionLabel: '유비 또는 관우 퇴각',
|
|
openingObjectiveLines: [
|
|
'한수 수공으로 칠군은 무너졌지만 번성 성문은 아직 버티고 있습니다. 외성 보루와 수문을 끊어 조인의 방어선을 흔드십시오.',
|
|
'관우는 성문 압박의 핵심입니다. 관우가 무너지면 번성 포위의 명분과 형주 전선의 사기가 함께 꺾입니다.',
|
|
'방덕의 결사 기병은 정면 돌파를 노리고, 강동 정찰대는 뒤의 나루를 살핍니다. 성벽 압박과 후방 경계를 함께 맡을 무장을 고르십시오.'
|
|
],
|
|
tacticalGuide: {
|
|
summary:
|
|
'번성 공성전은 조인의 성문을 바로 두드리는 전투가 아니라, 외성 보루와 수문 고지를 끊어 성 안의 방어선을 좁히는 전투입니다. 관우가 성문 앞 압박을 유지하는 동안 황충은 성벽 궁병을 누르고, 조운·마초는 방덕의 결사 돌격과 강동 나루 정찰을 동시에 차단해야 합니다.',
|
|
route: '서남 포위진 → 강동 나루 척후 정리 → 성문 외성 보루 압박 → 방덕 결사 기병 차단 → 조인 성문 방어선 격파',
|
|
focus:
|
|
'번성만 바라보면 다음 형주 후방 위기가 갑작스럽게 느껴집니다. 외성 보루를 밀면서도 남서 나루의 강동 척후를 놓치지 말고, 마량과 법정으로 성문과 후방의 위험을 함께 읽게 해야 포위전의 다음 흐름이 자연스럽습니다.',
|
|
roles: [
|
|
'유비: 번성 포위의 명분과 패배 조건의 중심',
|
|
'관우: 성문 압박과 생존 목표의 핵심 전열',
|
|
'황충: 성벽 궁병과 외성 보루를 누르는 원거리 축',
|
|
'마량: 형주 후방과 강동 정찰을 읽는 현지 참모',
|
|
'법정: 조인의 수성전과 방덕 돌격을 읽는 책략 축',
|
|
'조운: 성문과 나루 사이 빈틈을 메우는 기동 축',
|
|
'마초: 방덕 결사 기병을 맞받아치는 돌파 억제 카드'
|
|
],
|
|
events: {
|
|
'village-approach': {
|
|
title: '강가 나루의 그림자',
|
|
lines: [
|
|
'마량: 성문만 보면 뒤의 나루가 비어 보입니다. 강동의 척후가 이미 물길을 살피고 있습니다.',
|
|
'조운: 나루를 한 번 눌러 두면 성문 앞 병사들도 등 뒤를 걱정하지 않을 것입니다.'
|
|
]
|
|
},
|
|
'cavalry-approach': {
|
|
title: '방덕 결사대',
|
|
lines: [
|
|
'마초: 방덕의 기병은 물러설 뜻이 없습니다. 성문 앞으로 튀어나오기 전에 제가 길목을 끊겠습니다.',
|
|
'관우: 굳센 적일수록 정면에서 받아 내야 한다. 전열을 흐트러뜨리지 마라.'
|
|
]
|
|
},
|
|
'leader-wavering': {
|
|
title: '성문 방어선',
|
|
lines: [
|
|
'조인: 외성 보루까지 밀렸다고 성문을 열 수는 없다. 남은 병력을 모두 성문으로 모아라.',
|
|
'관우: 보루와 수문을 잃은 성은 오래 버티지 못한다. 병사들에게 오만 대신 경계를 명하라.'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
sortie: {
|
|
sortieLimit: 7,
|
|
requiredUnits: ['liu-bei', 'guan-yu'],
|
|
recommendedUnits: [
|
|
{ unitId: 'liu-bei', role: 'reserve', reason: '번성 포위의 큰 명분과 패배 조건의 중심입니다.' },
|
|
{ unitId: 'guan-yu', role: 'front', reason: '성문을 압박하는 핵심 장수이며 생존 목표입니다.' },
|
|
{ unitId: 'huang-zhong', role: 'support', reason: '성벽 궁병과 외성 보루를 안정적으로 견제합니다.' },
|
|
{ unitId: 'ma-liang', role: 'support', reason: '형주 민심과 강동의 움직임을 함께 읽는 현지 참모입니다.' },
|
|
{ unitId: 'fa-zheng', role: 'support', reason: '조인의 수성전과 방덕의 결사 돌격을 읽는 책략 축입니다.' },
|
|
{ unitId: 'zhao-yun', role: 'flank', reason: '성문과 나루 사이를 빠르게 보강하는 기동 축입니다.' },
|
|
{ unitId: 'ma-chao', role: 'flank', reason: '방덕 기병과 조조군 북로 기병을 맞받아치는 강한 기병 대응 카드입니다.' }
|
|
],
|
|
recommendedClasses: [
|
|
{ label: '포위 명분', classKeys: ['lord'], reason: '유비가 있어야 번성 포위와 항복 처리의 명분이 유지됩니다.' },
|
|
{ label: '성문 전열', classKeys: ['spearman', 'infantry'], reason: '관우가 외성 보루와 성문 앞 압박을 붙잡습니다.' },
|
|
{ label: '성벽 사거리', classKeys: ['archer'], reason: '황충이 성벽 궁병과 보루 위 적을 먼저 누릅니다.' },
|
|
{ label: '수성전 판단', classKeys: ['strategist'], reason: '법정과 마량이 조인의 버티기와 강동 나루의 징후를 읽습니다.' },
|
|
{ label: '기병 차단', classKeys: ['cavalry'], reason: '조운과 마초가 방덕 결사 기병과 남서 나루 척후를 묶습니다.' }
|
|
],
|
|
deploymentSlots: [
|
|
{ x: 5, y: 58, role: 'reserve', unitId: 'liu-bei', label: '포위 명분' },
|
|
{ x: 12, y: 53, role: 'front', unitId: 'guan-yu', label: '성문 압박' },
|
|
{ x: 18, y: 54, role: 'support', unitId: 'huang-zhong', label: '성벽 견제' },
|
|
{ x: 14, y: 58, role: 'support', unitId: 'ma-liang', label: '형주 후방' },
|
|
{ x: 19, y: 58, role: 'support', unitId: 'fa-zheng', label: '수성전 판단' },
|
|
{ x: 15, y: 56, role: 'flank', unitId: 'zhao-yun', label: '나루 보강' },
|
|
{ x: 23, y: 53, role: 'flank', unitId: 'ma-chao', label: '방덕 봉쇄' }
|
|
],
|
|
note:
|
|
'번성 공성전은 성문 압박과 후방 나루 경계를 함께 보는 전투입니다. 관우·황충으로 외성 보루를 밀고, 조운·마초로 방덕과 강동 척후의 길목을 막으며, 마량·법정으로 다음 형주 위기의 징후를 읽으십시오.'
|
|
},
|
|
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',
|
|
targetTile: { x: 78, y: 21, radius: 8 },
|
|
threatRadius: 0
|
|
},
|
|
{
|
|
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'],
|
|
campaignReward: {
|
|
supplies: ['콩 38', '상처약 28', '탁주 12'],
|
|
equipment: ['번성 성문도 1'],
|
|
reputation: ['방덕 결사문 1'],
|
|
unlockLabel: '강릉 나루 경계전',
|
|
note: '번성 성문 보루와 방어선을 밀어냈지만, 강동 정찰대가 형주 후방을 살피기 시작했습니다. 다음 군영에서는 강릉 나루와 창고 경계를 준비합니다.'
|
|
},
|
|
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;
|
|
}
|