import { firstBattleBonds, fifteenthBattleBonds, fifteenthBattleMap, fifteenthBattleUnits, fifteenthBattleVictoryPages, fourteenthBattleBonds, fourteenthBattleMap, fourteenthBattleUnits, fourteenthBattleVictoryPages, eighthBattleBonds, eighthBattleMap, eighthBattleUnits, eighthBattleVictoryPages, eighteenthBattleBonds, eighteenthBattleMap, eighteenthBattleUnits, eighteenthBattleVictoryPages, eleventhBattleBonds, eleventhBattleMap, eleventhBattleUnits, eleventhBattleVictoryPages, firstBattleMap, firstBattleUnits, firstBattleVictoryPages, ninthBattleBonds, ninthBattleMap, ninthBattleUnits, ninthBattleVictoryPages, nineteenthBattleBonds, nineteenthBattleMap, nineteenthBattleUnits, nineteenthBattleVictoryPages, twentyEighthBattleBonds, twentyEighthBattleMap, twentyEighthBattleUnits, twentyEighthBattleVictoryPages, tenthBattleBonds, tenthBattleMap, tenthBattleUnits, tenthBattleVictoryPages, 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, 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'; 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'; export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory'; export type BattleObjectiveDefinition = { id: string; kind: BattleObjectiveKind; label: string; rewardGold: number; unitId?: string; terrain?: string; maxTurn?: number; }; export type BattleDefeatConditionDefinition = { kind: 'unit-defeated'; unitId: string; }; export type BattleScenarioDefinition = { id: BattleScenarioId; title: string; victoryConditionLabel: string; defeatConditionLabel: string; openingObjectiveLines: string[]; map: BattleMap; units: UnitData[]; bonds: BattleBond[]; mapTextureKey: string; leaderUnitId: string; quickVictoryTurnLimit: number; baseVictoryGold: number; objectives: BattleObjectiveDefinition[]; defeatConditions: BattleDefeatConditionDefinition[]; itemRewards: string[]; victoryPages: StoryPage[]; nextCampScene: string; }; export const firstBattleScenario: BattleScenarioDefinition = { id: 'first-battle-zhuo-commandery', title: '탁현의 전투', victoryConditionLabel: '두령 한석 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '두령 한석을 격파하면 황건적의 전열이 무너집니다.', '유비가 퇴각하면 의용군은 전투를 지속할 수 없습니다.', '마을을 확보하고 8턴 안에 승리하면 추가 보상이 붙습니다.' ], map: firstBattleMap, units: firstBattleUnits, bonds: firstBattleBonds, mapTextureKey: 'battle-map-first', leaderUnitId: 'rebel-leader', quickVictoryTurnLimit: 8, 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: 150, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '8턴 안에 승리', rewardGold: 120, maxTurn: 8 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 1', '탁주 1', '의용군 명성 +1'], victoryPages: firstBattleVictoryPages, nextCampScene: 'CampScene' }; export const secondBattleScenario: BattleScenarioDefinition = { id: 'second-battle-yellow-turban-pursuit', title: '황건 잔당 추격', victoryConditionLabel: '두령 한석 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '황건 잔당이 북쪽 마을로 달아났습니다. 두령 한석을 격파하면 적의 퇴로가 무너집니다.', '마을 주변에 적 위협이 남아 있으면 보상이 줄어듭니다. 길목의 습격조를 먼저 정리하십시오.', '12턴 이내에 승리하면 의용군의 추격전 명성이 오릅니다.' ], map: secondBattleMap, units: secondBattleUnits, bonds: secondBattleBonds, mapTextureKey: 'battle-map-second', leaderUnitId: 'pursuit-leader-han-seok', quickVictoryTurnLimit: 12, 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' }, { id: 'quick', kind: 'quick-victory', label: '12턴 이내 승리', rewardGold: 150, maxTurn: 12 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 2', '탁주 1', '의용군 명성 +2'], victoryPages: secondBattleVictoryPages, nextCampScene: 'CampScene' }; export const thirdBattleScenario: BattleScenarioDefinition = { id: 'third-battle-guangzong-road', title: '광종 구원로', victoryConditionLabel: '전령 마원 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '황건 전령 마원이 광종 본대로 향하고 있습니다. 마원을 격파하면 적의 연락망이 끊어집니다.', '강가 길목과 요새 주변의 궁병을 방치하면 전선이 오래 묶입니다. 지형 보정을 살펴 진군하십시오.', '14턴 이내에 승리하면 광종 구원로 확보 명성이 오릅니다.' ], map: thirdBattleMap, units: thirdBattleUnits, bonds: thirdBattleBonds, mapTextureKey: 'battle-map-third', leaderUnitId: 'guangzong-leader-ma-yuan', quickVictoryTurnLimit: 14, 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: 220, terrain: 'fort' }, { id: 'quick', kind: 'quick-victory', label: '14턴 이내 승리', rewardGold: 180, maxTurn: 14 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 2', '상처약 1', '의용군 명성 +3'], victoryPages: thirdBattleVictoryPages, nextCampScene: 'CampScene' }; export const fourthBattleScenario: BattleScenarioDefinition = { id: 'fourth-battle-guangzong-camp', title: '광종 본영전', victoryConditionLabel: '장각 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '황건 본영의 중심에는 장각이 있습니다. 장각을 격파하면 광종의 황건 세력은 무너집니다.', '요새와 숲의 궁병이 진입로를 막고 있습니다. 측면의 기병과 중앙 수비병을 나누어 상대하십시오.', '16턴 이내에 승리하면 황건적 토벌의 공적이 크게 오릅니다.' ], 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' }, { id: 'quick', kind: 'quick-victory', label: '16턴 이내 승리', rewardGold: 220, maxTurn: 16 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 2', '상처약 1', '탁주 1', '황건 토벌 공적 +1'], victoryPages: fourthBattleVictoryPages, nextCampScene: 'CampScene' }; export const fifthBattleScenario: BattleScenarioDefinition = { id: 'fifth-battle-sishui-vanguard', title: '사수관 전초전', victoryConditionLabel: '호진 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '반동탁 연합으로 향하는 길목을 동탁군 장수 호진이 막고 있습니다. 호진을 격파하면 사수관 앞 전초 진지가 흔들립니다.', '중앙 길은 빠르지만 궁병과 기병의 반격을 받기 쉽습니다. 숲길 척후를 처리하고 요새 주변을 차근히 압박하십시오.', '14턴 이내에 승리하면 공손찬 진영에서 세 형제의 무공이 더 크게 알려집니다.' ], 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' }, { id: 'quick', kind: 'quick-victory', label: '14턴 이내 승리', rewardGold: 230, maxTurn: 14 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 2', '상처약 1', '탁주 1', '반동탁 공적 +1'], victoryPages: fifthBattleVictoryPages, nextCampScene: 'CampScene' }; export const sixthBattleScenario: BattleScenarioDefinition = { id: 'sixth-battle-jieqiao-relief', title: '계교 원군로', victoryConditionLabel: '곡의 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '공손찬의 보급로를 원소군 교위 곡의가 끊으려 합니다. 곡의를 격파하면 계교로 향하는 길을 다시 열 수 있습니다.', '강가의 궁병과 측면 기병이 동시에 압박합니다. 숲길 척후를 먼저 밀어내고 중앙 길을 확보하십시오.', '15턴 이내에 승리하면 공손찬 진영에서 세 형제의 신뢰가 커집니다.' ], 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' }, { id: 'quick', kind: 'quick-victory', label: '15턴 이내 승리', rewardGold: 250, maxTurn: 15 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 2', '상처약 2', '탁주 1', '공손찬 신뢰 +1'], victoryPages: sixthBattleVictoryPages, nextCampScene: 'CampScene' }; export const seventhBattleScenario: BattleScenarioDefinition = { id: 'seventh-battle-xuzhou-rescue', title: '서주 구원전', victoryConditionLabel: '하후돈 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '조조군 선봉 하후돈이 서주 피난로와 마을을 압박하고 있습니다. 하후돈을 격파하면 서주 성문까지 길을 열 수 있습니다.', '강가 궁병은 자리를 지키고, 기병은 길을 따라 빠르게 추격합니다. 마을을 확보하며 선봉을 단계적으로 끊어 내십시오.', '16턴 이내에 승리하면 도겸과 서주 백성의 신뢰가 크게 오릅니다.' ], map: seventhBattleMap, units: seventhBattleUnits, bonds: seventhBattleBonds, mapTextureKey: 'battle-map-seventh', leaderUnitId: 'xuzhou-leader-xiahou-dun', quickVictoryTurnLimit: 16, 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' }, { id: 'quick', kind: 'quick-victory', label: '16턴 이내 승리', rewardGold: 270, maxTurn: 16 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 2', '상처약 2', '탁주 1', '서주 민심 +1'], victoryPages: seventhBattleVictoryPages, nextCampScene: 'CampScene' }; export const eighthBattleScenario: BattleScenarioDefinition = { id: 'eighth-battle-xiaopei-supply-road', title: '소패 보급로 방위전', victoryConditionLabel: '고순 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '여포군의 척후와 습격병이 소패 보급로를 흔들고 있습니다. 고순을 격파하면 서주의 첫 방위선을 지킬 수 있습니다.', '기병은 길을 타고 빠르게 파고들고, 궁병은 강 건너와 언덕에서 사거리를 잡습니다. 마을과 창고 지형을 이용해 버티십시오.', '18턴 이내 승리하면 서주 보급망과 새 합류 무장의 명성이 크게 오릅니다.' ], 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' }, { id: 'quick', kind: 'quick-victory', label: '18턴 이내 승리', rewardGold: 300, maxTurn: 18 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 3', '상처약 2', '탁주 1', '서주 보급망 +1'], victoryPages: eighthBattleVictoryPages, nextCampScene: 'CampScene' }; export const ninthBattleScenario: BattleScenarioDefinition = { id: 'ninth-battle-xuzhou-gate-night-raid', title: '서주 성문 야습', victoryConditionLabel: '조표 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '조표가 성문 수비병을 움직이고 여포군 기병이 밤길을 타고 접근합니다. 조표를 격파하면 성문을 다시 장악할 수 있습니다.', '성벽 궁병은 높은 곳을 지키고, 여포군 기병은 길을 따라 빠르게 파고듭니다. 마을과 성문 지형을 이용해 전열을 끊어야 합니다.', '18턴 이내 성문을 안정시키면 서주 내부 불안을 잠시나마 눌러 둘 수 있습니다.' ], 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' }, { id: 'quick', kind: 'quick-victory', label: '18턴 이내 승리', rewardGold: 320, maxTurn: 18 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 3', '상처약 2', '탁주 1', '서주 성문 수비 +1'], victoryPages: ninthBattleVictoryPages, nextCampScene: 'CampScene' }; export const tenthBattleScenario: BattleScenarioDefinition = { id: 'tenth-battle-xuzhou-breakout', title: '서주 탈출전', victoryConditionLabel: '송헌 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '서주는 여포에게 넘어갔고, 유비군은 성 밖으로 빠져나갈 길을 열어야 합니다. 송헌을 격파하면 추격대의 지휘가 무너집니다.', '여포군 기병은 길을 따라 빠르게 압박하고, 성내 배반병은 숲과 마을 근처에서 퇴로를 끊으려 합니다.', '서쪽 진영과 마을을 확보한 채 20턴 안에 돌파하면 조조 의탁으로 이어질 병력과 보급을 더 많이 보존합니다.' ], map: tenthBattleMap, units: tenthBattleUnits, bonds: tenthBattleBonds, mapTextureKey: 'battle-map-tenth', leaderUnitId: 'xuzhou-escape-leader-song-xian', quickVictoryTurnLimit: 20, baseVictoryGold: 1240, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '송헌 격파', rewardGold: 760, unitId: 'xuzhou-escape-leader-song-xian' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 300, unitId: 'liu-bei' }, { id: 'village', kind: 'secure-terrain', label: '피난 마을 확보', rewardGold: 420, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '20턴 이내 돌파', rewardGold: 340, maxTurn: 20 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 4', '상처약 2', '탁주 1', '서주 피난민 보호 +1'], victoryPages: tenthBattleVictoryPages, nextCampScene: 'CampScene' }; export const eleventhBattleScenario: BattleScenarioDefinition = { id: 'eleventh-battle-xudu-refuge-road', title: '허도 입성로', victoryConditionLabel: '기령 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '조조는 유비군을 받아들이는 대신 허도 입성로를 어지럽히는 원술 잔군을 치라는 명을 내립니다. 기령을 격파하면 길이 열립니다.', '원술군 기병은 길을 따라 돌파하고, 약탈병은 숲과 마을을 끼고 보급을 노립니다. 조조군의 감시 속에서 군율을 증명해야 합니다.', '마을을 확보하고 18턴 안에 승리하면 조조 의탁 이후에도 병력과 민심을 더 많이 보존합니다.' ], map: eleventhBattleMap, units: eleventhBattleUnits, bonds: eleventhBattleBonds, mapTextureKey: 'battle-map-eleventh', leaderUnitId: 'xudu-road-leader-ji-ling', quickVictoryTurnLimit: 18, baseVictoryGold: 1320, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '기령 격파', rewardGold: 820, unitId: 'xudu-road-leader-ji-ling' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 320, unitId: 'liu-bei' }, { id: 'village', kind: 'secure-terrain', label: '허도 길목 마을 확보', rewardGold: 460, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '18턴 이내 승리', rewardGold: 360, maxTurn: 18 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 4', '상처약 3', '탁주 1', '조조군 군문 통행 +1'], victoryPages: eleventhBattleVictoryPages, nextCampScene: 'CampScene' }; export const twelfthBattleScenario: BattleScenarioDefinition = { id: 'twelfth-battle-xiapi-outer-siege', title: '하비 외곽전', victoryConditionLabel: '장료 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '조조는 하비 포위망의 남쪽 둑길을 유비군에게 맡깁니다. 장료를 격파하면 여포군 선봉은 성 안으로 물러납니다.', '강줄기와 둑길이 전장을 나눕니다. 여포군 기병은 길을 타고 돌파하고, 성루 궁병과 진궁은 후방에서 압박합니다.', '둑길 진영을 확보하고 20턴 안에 승리하면 조조 휘하에서의 공적과 유비군의 독자 보급을 함께 지킬 수 있습니다.' ], map: twelfthBattleMap, units: twelfthBattleUnits, bonds: twelfthBattleBonds, mapTextureKey: 'battle-map-twelfth', leaderUnitId: 'xiapi-leader-zhang-liao', quickVictoryTurnLimit: 20, baseVictoryGold: 1440, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '장료 격파', rewardGold: 900, unitId: 'xiapi-leader-zhang-liao' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 340, unitId: 'liu-bei' }, { id: 'camp', kind: 'secure-terrain', label: '하비 둑길 진영 확보', rewardGold: 500, terrain: 'camp' }, { id: 'quick', kind: 'quick-victory', label: '20턴 이내 승리', rewardGold: 390, maxTurn: 20 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 4', '상처약 3', '탁주 2', '하비 포위 공적 +1'], victoryPages: twelfthBattleVictoryPages, nextCampScene: 'CampScene' }; export const thirteenthBattleScenario: BattleScenarioDefinition = { id: 'thirteenth-battle-xiapi-final', title: '하비 결전', victoryConditionLabel: '여포 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '여포가 하비 성 안에서 마지막 돌파를 준비합니다. 여포를 격파하면 서주를 뒤흔든 난전도 끝을 맞습니다.', '진궁은 성루 궁병과 수문 수비를 이용해 접근로를 끊으려 합니다. 기병 돌파대와 성문 수비대를 나누어 상대하십시오.', '성문 요새를 확보하고 22턴 안에 승리하면 조조 휘하에서도 유비군의 전공과 독자 보급 명분을 모두 남길 수 있습니다.' ], map: thirteenthBattleMap, units: thirteenthBattleUnits, bonds: thirteenthBattleBonds, mapTextureKey: 'battle-map-thirteenth', leaderUnitId: 'xiapi-final-leader-lu-bu', quickVictoryTurnLimit: 22, baseVictoryGold: 1560, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '여포 격파', rewardGold: 980, unitId: 'xiapi-final-leader-lu-bu' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 360, unitId: 'liu-bei' }, { id: 'gate', kind: 'secure-terrain', label: '하비 성문 확보', rewardGold: 560, terrain: 'fort' }, { id: 'quick', kind: 'quick-victory', label: '22턴 이내 승리', rewardGold: 420, maxTurn: 22 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 5', '상처약 3', '탁주 2', '하비 결전 공적 +1'], victoryPages: thirteenthBattleVictoryPages, nextCampScene: 'CampScene' }; export const fourteenthBattleScenario: BattleScenarioDefinition = { id: 'fourteenth-battle-cao-break', title: '서주 재기', victoryConditionLabel: '차주 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '조조의 감시대가 서주 관문과 역참을 틀어쥐고 있습니다. 차주를 격파하면 유비군은 조조 휘하를 벗어날 첫 발판을 세웁니다.', '조조군 기병은 길을 따라 추격하고, 궁병은 관문 뒤에서 사거리를 잡습니다. 손건의 문서와 간옹의 말로 민심을 흔들며 길목을 열어야 합니다.', '서주 관문을 확보하고 22턴 안에 승리하면 원소 진영으로 향할 명분과 보급을 더 많이 보존합니다.' ], map: fourteenthBattleMap, units: fourteenthBattleUnits, bonds: fourteenthBattleBonds, mapTextureKey: 'battle-map-fourteenth', leaderUnitId: 'cao-break-leader-che-zhou', quickVictoryTurnLimit: 22, baseVictoryGold: 1660, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '차주 격파', rewardGold: 1040, unitId: 'cao-break-leader-che-zhou' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 380, unitId: 'liu-bei' }, { id: 'gate', kind: 'secure-terrain', label: '서주 관문 확보', rewardGold: 600, terrain: 'fort' }, { id: 'quick', kind: 'quick-victory', label: '22턴 이내 승리', rewardGold: 460, maxTurn: 22 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 5', '상처약 3', '탁주 2', '손건 문서 +1'], victoryPages: fourteenthBattleVictoryPages, nextCampScene: 'CampScene' }; export const fifteenthBattleScenario: BattleScenarioDefinition = { id: 'fifteenth-battle-yuan-refuge-road', title: '원소 의탁로', victoryConditionLabel: '채양 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '유비군은 조조의 추격을 피해 원소 진영으로 향합니다. 채양을 격파하면 북상로의 압박을 끊고 접선지로 나아갈 수 있습니다.', '강줄기와 고갯길 사이로 추격 기병이 파고들고, 궁병은 접선지를 향한 길을 끊으려 합니다. 전열을 세우면서도 손건과 간옹의 책략 지원을 살려야 합니다.', '원소 사자가 기다리는 북동쪽 접선지를 확보하고 24턴 안에 승리하면 다음 의탁 장을 더 유리하게 시작합니다.' ], map: fifteenthBattleMap, units: fifteenthBattleUnits, bonds: fifteenthBattleBonds, mapTextureKey: 'battle-map-fifteenth', leaderUnitId: 'yuan-refuge-leader-cai-yang', quickVictoryTurnLimit: 24, baseVictoryGold: 1760, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '채양 격파', rewardGold: 1120, unitId: 'yuan-refuge-leader-cai-yang' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 400, unitId: 'liu-bei' }, { id: 'rendezvous', kind: 'secure-terrain', label: '원소 사자 접선지 확보', rewardGold: 640, terrain: 'fort' }, { id: 'quick', kind: 'quick-victory', label: '24턴 이내 승리', rewardGold: 500, maxTurn: 24 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 6', '상처약 3', '탁주 2', '원소 접선 문서 +1'], victoryPages: fifteenthBattleVictoryPages, nextCampScene: 'CampScene' }; export const sixteenthBattleScenario: BattleScenarioDefinition = { id: 'sixteenth-battle-liu-biao-refuge', title: '유표 의탁로', victoryConditionLabel: '조인 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '원소 진영을 떠난 유비군은 형주의 유표에게 의탁하기 위해 남쪽 길을 엽니다. 조운이 합류했지만 조조군 추격대도 형주 관문 앞에 따라붙었습니다.', '중앙 강줄기와 숲길은 행군을 늦추고, 동쪽 관문은 수비병과 궁병이 지키고 있습니다. 조운의 기동력과 책사들의 지원을 함께 활용하십시오.', '조인을 격파하고 형주 관문을 확보하십시오. 25턴 안에 승리하면 유비군의 의탁 명분과 군자금을 더 단단히 챙길 수 있습니다.' ], map: sixteenthBattleMap, units: sixteenthBattleUnits, bonds: sixteenthBattleBonds, mapTextureKey: 'battle-map-sixteenth', leaderUnitId: 'liu-biao-road-leader-cao-ren', quickVictoryTurnLimit: 25, baseVictoryGold: 1880, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '조인 격파', rewardGold: 1200, unitId: 'liu-biao-road-leader-cao-ren' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 420, unitId: 'liu-bei' }, { id: 'jingzhou-gate', kind: 'secure-terrain', label: '형주 관문 확보', rewardGold: 680, terrain: 'fort' }, { id: 'quick', kind: 'quick-victory', label: '25턴 이내 승리', rewardGold: 540, maxTurn: 25 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 6', '상처약 4', '탁주 2', '형주 접선 문서 +1'], victoryPages: sixteenthBattleVictoryPages, nextCampScene: 'CampScene' }; export const seventeenthBattleScenario: BattleScenarioDefinition = { id: 'seventeenth-battle-wolong-visit-road', title: '융중 방문로', victoryConditionLabel: '채순 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '형주에서 모은 와룡의 단서를 따라 유비군은 융중으로 향합니다. 그러나 산길에는 채씨 가병이 먼저 길목을 잡고 있습니다.', '숲과 언덕, 좁은 물길이 많은 전장입니다. 조운의 기동력과 책사들의 후원을 살려 산길의 궁병과 감시병을 끊어 내십시오.', '채순을 격파하고 융중 초가로 향하는 길을 확보하십시오. 26턴 안에 승리하면 제갈량 영입의 명분과 보급을 더 단단히 챙길 수 있습니다.' ], map: seventeenthBattleMap, units: seventeenthBattleUnits, bonds: seventeenthBattleBonds, mapTextureKey: 'battle-map-seventeenth', leaderUnitId: 'wolong-road-leader-cai-xun', quickVictoryTurnLimit: 26, baseVictoryGold: 1960, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '채순 격파', rewardGold: 1260, unitId: 'wolong-road-leader-cai-xun' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 440, unitId: 'liu-bei' }, { id: 'longzhong-cottage', kind: 'secure-terrain', label: '융중 초가 길 확보', rewardGold: 720, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '26턴 이내 승리', rewardGold: 560, maxTurn: 26 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 6', '상처약 4', '탁주 2', '와룡의 서찰 +1'], victoryPages: seventeenthBattleVictoryPages, nextCampScene: 'CampScene' }; export const eighteenthBattleScenario: BattleScenarioDefinition = { id: 'eighteenth-battle-bowang-ambush', title: '박망파 매복전', victoryConditionLabel: '하후돈 퇴각', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ '조조군 선봉 하후돈이 신야로 향합니다. 제갈량은 박망파의 숲길과 좁은 물길을 이용해 적의 속도를 끊으려 합니다.', '숲길 궁병과 기병이 동시에 압박하지만, 강줄기와 매복 지형을 이용하면 조조군 전열을 갈라낼 수 있습니다. 제갈량의 책략과 조운의 기동을 함께 활용하십시오.', '하후돈을 퇴각시키고 박망파의 길목을 지키십시오. 27턴 안에 승리하면 강동과 손잡을 시간을 더 벌 수 있습니다.' ], map: eighteenthBattleMap, units: eighteenthBattleUnits, bonds: eighteenthBattleBonds, mapTextureKey: 'battle-map-eighteenth', leaderUnitId: 'bowang-leader-xiahou-dun', quickVictoryTurnLimit: 27, baseVictoryGold: 2080, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '하후돈 퇴각', rewardGold: 1340, unitId: 'bowang-leader-xiahou-dun' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 460, unitId: 'liu-bei' }, { id: 'ambush-village', kind: 'secure-terrain', label: '박망파 매복지 확보', rewardGold: 760, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '27턴 이내 승리', rewardGold: 600, maxTurn: 27 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 7', '상처약 4', '탁주 2', '강동 풍문 +1'], victoryPages: eighteenthBattleVictoryPages, nextCampScene: 'CampScene' }; export const nineteenthBattleScenario: BattleScenarioDefinition = { id: 'nineteenth-battle-changban-refuge', title: '장판파 피난로', victoryConditionLabel: '조순 퇴각', defeatConditionLabel: '유비 또는 조운 퇴각', openingObjectiveLines: [ '조조군 호표기가 피난 행렬을 따라 장판파로 들이칩니다. 백성을 버리지 않으려면 남쪽 피난로와 다리목을 동시에 지켜야 합니다.', '조운은 넓은 길을 오가며 흩어진 병력을 모을 수 있고, 장비는 다리목을 막아 추격 기병을 늦추기 좋습니다. 제갈량과 손건은 전후 강동 사절 명분을 정리합니다.', '조순을 퇴각시키고 유비와 조운을 지키십시오. 피난민 마을을 확보하면 다음 강동 사절 준비가 안정됩니다.' ], map: nineteenthBattleMap, units: nineteenthBattleUnits, bonds: nineteenthBattleBonds, mapTextureKey: 'battle-map-nineteenth', leaderUnitId: 'changban-leader-cao-chun', quickVictoryTurnLimit: 28, baseVictoryGold: 2220, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '조순 퇴각', rewardGold: 1440, unitId: 'changban-leader-cao-chun' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 480, unitId: 'liu-bei' }, { id: 'zhao-yun', kind: 'keep-unit-alive', label: '조운 생존', rewardGold: 620, unitId: 'zhao-yun' }, { id: 'refugee-village', kind: 'secure-terrain', label: '피난민 마을 확보', rewardGold: 820, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '28턴 이내 승리', rewardGold: 620, maxTurn: 28 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhao-yun' } ], itemRewards: ['콩 7', '상처약 5', '탁주 2', '피난로 지도 +1', '강동 풍문 +1'], victoryPages: nineteenthBattleVictoryPages, nextCampScene: 'CampScene' }; export const twentiethBattleScenario: BattleScenarioDefinition = { id: 'twentieth-battle-jiangdong-envoy', title: '강동 사절로', victoryConditionLabel: '문빙 퇴각', defeatConditionLabel: '유비, 제갈량 또는 손건 퇴각', openingObjectiveLines: [ '장판파를 벗어난 유비군은 강동과 손잡을 사절을 보내야 합니다. 문빙의 추격대가 강나루를 닫기 전에 길을 열어야 합니다.', '이번 전투는 제갈량과 손건을 지키는 것이 핵심입니다. 전열이 다리목을 붙들고, 기동 장수가 추격 기병을 끊어야 사절 문서가 강동으로 향할 수 있습니다.', '문빙을 퇴각시키고 강나루를 확보하십시오. 제갈량과 손건이 살아남으면 적벽대전으로 향할 외교 명분이 완성됩니다.' ], map: twentiethBattleMap, units: twentiethBattleUnits, bonds: twentiethBattleBonds, mapTextureKey: 'battle-map-twentieth', leaderUnitId: 'envoy-road-leader-wen-pin', quickVictoryTurnLimit: 29, baseVictoryGold: 2380, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '문빙 퇴각', rewardGold: 1540, unitId: 'envoy-road-leader-wen-pin' }, { id: 'zhuge-liang', kind: 'keep-unit-alive', label: '제갈량 생존', rewardGold: 760, unitId: 'zhuge-liang' }, { id: 'sun-qian', kind: 'keep-unit-alive', label: '손건 생존', rewardGold: 620, unitId: 'sun-qian' }, { id: 'river-port', kind: 'secure-terrain', label: '강나루 확보', rewardGold: 860, terrain: 'fort' }, { id: 'quick', kind: 'quick-victory', label: '29턴 이내 승리', rewardGold: 640, maxTurn: 29 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhuge-liang' }, { kind: 'unit-defeated', unitId: 'sun-qian' } ], itemRewards: ['콩 8', '상처약 5', '탁주 3', '강동 사절 문서 +1', '화공 논의 +1'], victoryPages: twentiethBattleVictoryPages, nextCampScene: 'CampScene' }; export const twentyFirstBattleScenario: BattleScenarioDefinition = { id: 'twenty-first-battle-red-cliffs-vanguard', title: '적벽 전초전', victoryConditionLabel: '채모 퇴각', defeatConditionLabel: '유비 또는 제갈량 퇴각', openingObjectiveLines: [ '강동 회담이 결전으로 기울자 조조군 수군 선봉이 적벽 포구를 시험합니다. 첫 전선을 빼앗기면 손유 동맹의 사기가 크게 흔들립니다.', '강 위의 전장은 강줄기와 배다리가 길을 나눕니다. 기동 장수로 강안 기병을 끊고, 전열 장수로 포구 수비대를 밀어내야 합니다.', '채모를 퇴각시키고 제갈량을 지키십시오. 강동 포구를 확보하면 화공을 논할 발판이 마련됩니다.' ], map: twentyFirstBattleMap, units: twentyFirstBattleUnits, bonds: twentyFirstBattleBonds, mapTextureKey: 'battle-map-twenty-first', leaderUnitId: 'redcliff-vanguard-leader-cai-mao', quickVictoryTurnLimit: 30, baseVictoryGold: 2540, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '채모 퇴각', rewardGold: 1660, unitId: 'redcliff-vanguard-leader-cai-mao' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 520, unitId: 'liu-bei' }, { id: 'zhuge-liang', kind: 'keep-unit-alive', label: '제갈량 생존', rewardGold: 800, unitId: 'zhuge-liang' }, { id: 'red-cliffs-port', kind: 'secure-terrain', label: '강동 포구 확보', rewardGold: 900, terrain: 'fort' }, { id: 'quick', kind: 'quick-victory', label: '30턴 이내 승리', rewardGold: 680, maxTurn: 30 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhuge-liang' } ], itemRewards: ['콩 8', '상처약 6', '탁주 3', '화공 논의 +1', '동맹 군의 기록 +1'], victoryPages: twentyFirstBattleVictoryPages, nextCampScene: 'CampScene' }; export const twentySecondBattleScenario: BattleScenarioDefinition = { id: 'twenty-second-battle-red-cliffs-fire', title: '적벽 화공전', victoryConditionLabel: '조조 본선 퇴각', defeatConditionLabel: '유비 또는 제갈량 퇴각', openingObjectiveLines: [ '황개의 거짓 항복선이 조조 함대로 향합니다. 조조군 감시선이 화선을 알아차리면 적벽의 불길은 시작되기도 전에 꺼집니다.', '강 위에는 연환선과 배다리가 얽혀 있습니다. 전열 장수로 갑판 보병을 묶고, 기동 장수로 강안 기병을 끊어 화선 접안로를 열어야 합니다.', '제갈량을 지키고 조조 본선을 퇴각시키십시오. 화선 준비 지점을 확보하면 적벽대전의 결정적 승리를 얻을 수 있습니다.' ], map: twentySecondBattleMap, units: twentySecondBattleUnits, bonds: twentySecondBattleBonds, mapTextureKey: 'battle-map-twenty-second', leaderUnitId: 'redcliff-fire-leader-cao-cao', quickVictoryTurnLimit: 31, baseVictoryGold: 2840, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '조조 본선 퇴각', rewardGold: 1900, unitId: 'redcliff-fire-leader-cao-cao' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 560, unitId: 'liu-bei' }, { id: 'zhuge-liang', kind: 'keep-unit-alive', label: '제갈량 생존', rewardGold: 860, unitId: 'zhuge-liang' }, { id: 'fire-ship-landing', kind: 'secure-terrain', label: '화선 접안로 확보', rewardGold: 980, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '31턴 이내 승리', rewardGold: 720, maxTurn: 31 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhuge-liang' } ], itemRewards: ['콩 9', '상처약 6', '탁주 4', '화공 전과 +1', '동남풍 기록 +1'], victoryPages: twentySecondBattleVictoryPages, nextCampScene: 'CampScene' }; export const twentyThirdBattleScenario: BattleScenarioDefinition = { id: 'twenty-third-battle-jingzhou-south-entry', title: '형주 남부 진입전', victoryConditionLabel: '형도영 퇴각', defeatConditionLabel: '유비 또는 제갈량 퇴각', openingObjectiveLines: [ '적벽의 불길로 조조의 기세가 꺾인 지금, 유비군은 형주 남부의 길과 민심을 열어야 합니다.', '형도영의 가병은 영릉으로 이어지는 길목과 마을을 붙잡고 있습니다. 성채만 몰아치면 마을이 흔들리니 보급 거점을 함께 지키십시오.', '유비와 제갈량을 지키며 형도영을 물리치고, 남부 마을을 안정시키면 마량이 군영에 합류합니다.' ], map: twentyThirdBattleMap, units: twentyThirdBattleUnits, bonds: twentyThirdBattleBonds, mapTextureKey: 'battle-map-twenty-third', leaderUnitId: 'jing-south-leader-xing-daorong', quickVictoryTurnLimit: 32, baseVictoryGold: 3020, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '형도영 퇴각', rewardGold: 2000, unitId: 'jing-south-leader-xing-daorong' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 600, unitId: 'liu-bei' }, { id: 'zhuge-liang', kind: 'keep-unit-alive', label: '제갈량 생존', rewardGold: 900, unitId: 'zhuge-liang' }, { id: 'southern-village', kind: 'secure-terrain', label: '남부 마을 안정', rewardGold: 980, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '32턴 이내 승리', rewardGold: 760, maxTurn: 32 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhuge-liang' } ], itemRewards: ['콩 9', '상처약 7', '탁주 4', '형주 진입 문서 +1', '마량 합류'], victoryPages: twentyThirdBattleVictoryPages, nextCampScene: 'CampScene' }; export const twentyFourthBattleScenario: BattleScenarioDefinition = { id: 'twenty-fourth-battle-guiyang-persuasion', title: '계양 설득전', victoryConditionLabel: '조범 항복', defeatConditionLabel: '유비 또는 제갈량 퇴각', openingObjectiveLines: [ '형주 남부의 첫 길목을 연 유비군은 계양으로 향합니다. 이번 전투는 성채를 불태우는 싸움이 아니라 조범의 마음을 굽히는 싸움입니다.', '마량의 서신과 제갈량의 계책이 맞물리려면 마을을 안정시키고, 성채 주변 친위대를 물리쳐야 합니다.', '유비와 제갈량을 지키며 조범을 항복시키면, 형주의 문사 이적이 군영에 합류합니다.' ], map: twentyFourthBattleMap, units: twentyFourthBattleUnits, bonds: twentyFourthBattleBonds, mapTextureKey: 'battle-map-twenty-fourth', leaderUnitId: 'guiyang-leader-zhao-fan', quickVictoryTurnLimit: 33, baseVictoryGold: 3180, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '조범 항복', rewardGold: 2100, unitId: 'guiyang-leader-zhao-fan' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 620, unitId: 'liu-bei' }, { id: 'zhuge-liang', kind: 'keep-unit-alive', label: '제갈량 생존', rewardGold: 880, unitId: 'zhuge-liang' }, { id: 'guiyang-village', kind: 'secure-terrain', label: '계양 마을 안정', rewardGold: 1040, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '33턴 이내 승리', rewardGold: 800, maxTurn: 33 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhuge-liang' } ], itemRewards: ['콩 10', '상처약 7', '탁주 4', '계양 설득 문서 +1', '이적 합류'], victoryPages: twentyFourthBattleVictoryPages, nextCampScene: 'CampScene' }; export const twentyFifthBattleScenario: BattleScenarioDefinition = { id: 'twenty-fifth-battle-wuling-mountain-road', title: '무릉 산길 확보전', victoryConditionLabel: '김선 퇴각', defeatConditionLabel: '유비 또는 제갈량 퇴각', openingObjectiveLines: [ '계양이 열린 뒤 유비군은 무릉의 산길로 들어섭니다. 좁은 길과 흩어진 마을 때문에 단순 돌파만으로는 근거지를 얻을 수 없습니다.', '마량과 이적은 무릉의 내부 동요를 읽고, 김선 아래 장수 공지가 백성 피해를 염려한다고 보고합니다.', '유비와 제갈량을 지키며 김선을 물러나게 하고 산길 마을을 안정시키면, 공지가 군영에 합류합니다.' ], map: twentyFifthBattleMap, units: twentyFifthBattleUnits, bonds: twentyFifthBattleBonds, mapTextureKey: 'battle-map-twenty-fifth', leaderUnitId: 'wuling-leader-jin-xuan', quickVictoryTurnLimit: 34, baseVictoryGold: 3360, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '김선 퇴각', rewardGold: 2200, unitId: 'wuling-leader-jin-xuan' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 640, unitId: 'liu-bei' }, { id: 'zhuge-liang', kind: 'keep-unit-alive', label: '제갈량 생존', rewardGold: 900, unitId: 'zhuge-liang' }, { id: 'wuling-village', kind: 'secure-terrain', label: '무릉 마을 안정', rewardGold: 1080, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '34턴 이내 승리', rewardGold: 840, maxTurn: 34 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhuge-liang' } ], itemRewards: ['콩 11', '상처약 8', '탁주 4', '무릉 산길 지도 +1', '공지 합류'], victoryPages: twentyFifthBattleVictoryPages, nextCampScene: 'CampScene' }; export const twentySixthBattleScenario: BattleScenarioDefinition = { id: 'twenty-sixth-battle-changsha-veteran', title: '장사 노장 대면전', victoryConditionLabel: '한현 퇴각', defeatConditionLabel: '유비 또는 제갈량 퇴각', openingObjectiveLines: [ '무릉 산길을 연 유비군은 장사로 향합니다. 장사에는 노장 황충과 의심 많은 태수 한현이 버티고 있습니다.', '이번 전투는 황충을 욕보이지 않고 한현의 의심을 꺾어야 합니다. 마을을 안정시키고 성문 전열을 흔들어 장사 내부의 길을 여십시오.', '유비와 제갈량을 지키며 한현을 물러나게 하면 황충과 위연이 군영에 합류합니다.' ], map: twentySixthBattleMap, units: twentySixthBattleUnits, bonds: twentySixthBattleBonds, mapTextureKey: 'battle-map-twenty-sixth', leaderUnitId: 'changsha-leader-han-xuan', quickVictoryTurnLimit: 35, baseVictoryGold: 3560, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '한현 퇴각', rewardGold: 2320, unitId: 'changsha-leader-han-xuan' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 660, unitId: 'liu-bei' }, { id: 'zhuge-liang', kind: 'keep-unit-alive', label: '제갈량 생존', rewardGold: 940, unitId: 'zhuge-liang' }, { id: 'changsha-village', kind: 'secure-terrain', label: '장사 마을 안정', rewardGold: 1120, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '35턴 이내 승리', rewardGold: 880, maxTurn: 35 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhuge-liang' } ], itemRewards: ['콩 12', '상처약 8', '탁주 5', '장사 사절 문서 +1', '황충 합류', '위연 합류'], victoryPages: twentySixthBattleVictoryPages, nextCampScene: 'CampScene' }; export const twentySeventhBattleScenario: BattleScenarioDefinition = { id: 'twenty-seventh-battle-yizhou-relief-road', title: '익주 원군로', victoryConditionLabel: '양회 퇴각', defeatConditionLabel: '유비 또는 제갈량 퇴각', openingObjectiveLines: [ '장사까지 안정시킨 유비군은 유장의 원군 요청을 따라 익주로 향합니다. 원군로에는 양회의 전초 병력이 관문과 마을을 함께 틀어쥐고 있습니다.', '이번 전투는 길목의 마을을 지키면서 관문 전열을 무너뜨려야 합니다. 황충과 위연까지 합류한 큰 로스터에서 산길, 돌파, 책략 역할을 직접 골라 출전하십시오.', '유비와 제갈량을 지키며 양회를 물러나게 하면 봉추 방통이 군영에 합류합니다.' ], map: twentySeventhBattleMap, units: twentySeventhBattleUnits, bonds: twentySeventhBattleBonds, mapTextureKey: 'battle-map-twenty-seventh', leaderUnitId: 'yizhou-leader-yang-huai', quickVictoryTurnLimit: 36, baseVictoryGold: 3760, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '양회 퇴각', rewardGold: 2420, unitId: 'yizhou-leader-yang-huai' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 700, unitId: 'liu-bei' }, { id: 'zhuge-liang', kind: 'keep-unit-alive', label: '제갈량 생존', rewardGold: 980, unitId: 'zhuge-liang' }, { id: 'yizhou-village', kind: 'secure-terrain', label: '익주 마을 안정', rewardGold: 1160, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '36턴 이내 승리', rewardGold: 920, maxTurn: 36 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhuge-liang' } ], itemRewards: ['콩 12', '상처약 9', '탁주 5', '익주 길목 지도 +1', '방통 합류'], victoryPages: twentySeventhBattleVictoryPages, nextCampScene: 'CampScene' }; export const twentyEighthBattleScenario: BattleScenarioDefinition = { id: 'twenty-eighth-battle-fu-pass-entry', title: '부수관 진입전', victoryConditionLabel: '고패 퇴각', defeatConditionLabel: '유비 또는 제갈량 퇴각', openingObjectiveLines: [ '익주 원군로를 연 유비군은 부수관의 첫 문 앞에 섰습니다. 고패는 좁은 협곡과 성루 궁병을 이용해 원군의 명분을 관문 앞에서 묶으려 합니다.', '이번 전투부터 방통이 출전 후보에 들어옵니다. 와룡과 봉추를 함께 세우면 계책은 강해지지만, 전열과 보급 선택이 더 날카로워집니다.', '유비와 제갈량을 지키며 고패를 물러나게 하면 익주 내부 인재 법정이 군영에 합류합니다.' ], map: twentyEighthBattleMap, units: twentyEighthBattleUnits, bonds: twentyEighthBattleBonds, mapTextureKey: 'battle-map-twenty-eighth', leaderUnitId: 'fupass-leader-gao-pei', quickVictoryTurnLimit: 37, baseVictoryGold: 3980, objectives: [ { id: 'leader', kind: 'defeat-leader', label: '고패 퇴각', rewardGold: 2520, unitId: 'fupass-leader-gao-pei' }, { id: 'liu-bei', kind: 'keep-unit-alive', label: '유비 생존', rewardGold: 740, unitId: 'liu-bei' }, { id: 'zhuge-liang', kind: 'keep-unit-alive', label: '제갈량 생존', rewardGold: 1020, unitId: 'zhuge-liang' }, { id: 'fu-pass-village', kind: 'secure-terrain', label: '부수관 마을 안정', rewardGold: 1220, terrain: 'village' }, { id: 'quick', kind: 'quick-victory', label: '37턴 이내 승리', rewardGold: 960, maxTurn: 37 } ], defeatConditions: [ { kind: 'unit-defeated', unitId: 'liu-bei' }, { kind: 'unit-defeated', unitId: 'zhuge-liang' } ], itemRewards: ['콩 13', '상처약 9', '탁주 6', '부수관 보급표 +1', '법정 합류'], victoryPages: twentyEighthBattleVictoryPages, nextCampScene: 'CampScene' }; export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id; export const battleScenarios: Record = { '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 }; export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId]; export function getBattleScenario(id: string | undefined) { if (id && id in battleScenarios) { return battleScenarios[id as BattleScenarioId]; } return defaultBattleScenario; }