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,
  twentyNinthBattleBonds,
  twentyNinthBattleMap,
  twentyNinthBattleUnits,
  twentyNinthBattleVictoryPages,
  tenthBattleBonds,
  tenthBattleMap,
  tenthBattleUnits,
  tenthBattleVictoryPages,
  thirtyFifthBattleBonds,
  thirtyFifthBattleMap,
  thirtyFifthBattleUnits,
  thirtyFifthBattleVictoryPages,
  thirtyFourthBattleBonds,
  thirtyFourthBattleMap,
  thirtyFourthBattleUnits,
  thirtyFourthBattleVictoryPages,
  thirtyFirstBattleBonds,
  thirtyFirstBattleMap,
  thirtyFirstBattleUnits,
  thirtyFirstBattleVictoryPages,
  thirtySecondBattleBonds,
  thirtySecondBattleMap,
  thirtySecondBattleUnits,
  thirtySecondBattleVictoryPages,
  thirtyThirdBattleBonds,
  thirtyThirdBattleMap,
  thirtyThirdBattleUnits,
  thirtyThirdBattleVictoryPages,
  thirtySixthBattleBonds,
  thirtySixthBattleMap,
  thirtySixthBattleUnits,
  thirtySixthBattleVictoryPages,
  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';

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';

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 twentyNinthBattleScenario: BattleScenarioDefinition = {
  id: 'twenty-ninth-battle-luo-outer-wall',
  title: '낙성 외곽전',
  victoryConditionLabel: '장임 퇴각',
  defeatConditionLabel: '유비 또는 제갈량 퇴각',
  openingObjectiveLines: [
    '부수관을 넘어선 유비군은 낙성 외곽 방어선에 도착했습니다. 장임은 성 밖 마을과 고개를 이용해 시간을 벌고 있습니다.',
    '이번 전투부터 법정도 출전 후보입니다. 익주 내부 사정을 아는 법정을 데려가면 오의와 성문 장수들을 설득할 실마리가 커집니다.',
    '유비와 제갈량을 지키며 장임을 물러나게 하십시오. 마을을 안정시키면 오의가 낙성으로 향하는 길을 열 수 있습니다.'
  ],
  map: twentyNinthBattleMap,
  units: twentyNinthBattleUnits,
  bonds: twentyNinthBattleBonds,
  mapTextureKey: 'battle-map-twenty-ninth',
  leaderUnitId: 'luo-leader-zhang-ren',
  quickVictoryTurnLimit: 38,
  baseVictoryGold: 4200,
  objectives: [
    {
      id: 'leader',
      kind: 'defeat-leader',
      label: '장임 퇴각',
      rewardGold: 2640,
      unitId: 'luo-leader-zhang-ren'
    },
    {
      id: 'liu-bei',
      kind: 'keep-unit-alive',
      label: '유비 생존',
      rewardGold: 780,
      unitId: 'liu-bei'
    },
    {
      id: 'zhuge-liang',
      kind: 'keep-unit-alive',
      label: '제갈량 생존',
      rewardGold: 1080,
      unitId: 'zhuge-liang'
    },
    {
      id: 'luo-village',
      kind: 'secure-terrain',
      label: '낙성 외곽 마을 안정',
      rewardGold: 1280,
      terrain: 'village'
    },
    {
      id: 'quick',
      kind: 'quick-victory',
      label: '38턴 이내 승리',
      rewardGold: 1000,
      maxTurn: 38
    }
  ],
  defeatConditions: [
    { kind: 'unit-defeated', unitId: 'liu-bei' },
    { kind: 'unit-defeated', unitId: 'zhuge-liang' }
  ],
  itemRewards: ['콩 14', '상처약 10', '탁주 6', '낙성 외곽 지도 +1', '오의 합류'],
  victoryPages: twentyNinthBattleVictoryPages,
  nextCampScene: 'CampScene'
};

export const thirtiethBattleScenario: BattleScenarioDefinition = {
  id: 'thirtieth-battle-luofeng-ambush',
  title: '낙봉파 매복전',
  victoryConditionLabel: '장임 매복 격파',
  defeatConditionLabel: '유비 또는 방통 퇴각',
  openingObjectiveLines: [
    '낙성 본성으로 가는 빠른 길인 낙봉파에 장임의 매복이 숨어 있습니다. 좁은 길과 고지 궁병을 동시에 살피며 진군해야 합니다.',
    '오의가 새로 출전 후보에 들어왔습니다. 낙성의 길을 아는 오의를 데려가면 매복 위치를 읽기 쉽지만, 여섯 명 제한은 더 빡빡해집니다.',
    '유비와 방통을 지키며 장임의 매복을 격파하십시오. 낙봉파를 넘으면 낙성 본성 공략이 열립니다.'
  ],
  map: thirtiethBattleMap,
  units: thirtiethBattleUnits,
  bonds: thirtiethBattleBonds,
  mapTextureKey: 'battle-map-thirtieth',
  leaderUnitId: 'luofeng-leader-zhang-ren',
  quickVictoryTurnLimit: 39,
  baseVictoryGold: 4440,
  objectives: [
    {
      id: 'leader',
      kind: 'defeat-leader',
      label: '장임 매복 격파',
      rewardGold: 2760,
      unitId: 'luofeng-leader-zhang-ren'
    },
    {
      id: 'liu-bei',
      kind: 'keep-unit-alive',
      label: '유비 생존',
      rewardGold: 820,
      unitId: 'liu-bei'
    },
    {
      id: 'pang-tong',
      kind: 'keep-unit-alive',
      label: '방통 생존',
      rewardGold: 1180,
      unitId: 'pang-tong'
    },
    {
      id: 'luofeng-village',
      kind: 'secure-terrain',
      label: '낙봉파 길목 확보',
      rewardGold: 1320,
      terrain: 'village'
    },
    {
      id: 'quick',
      kind: 'quick-victory',
      label: '39턴 이내 승리',
      rewardGold: 1040,
      maxTurn: 39
    }
  ],
  defeatConditions: [
    { kind: 'unit-defeated', unitId: 'liu-bei' },
    { kind: 'unit-defeated', unitId: 'pang-tong' }
  ],
  itemRewards: ['콩 15', '상처약 11', '탁주 6', '낙봉파 정찰표 +1', '봉추 생환 +1'],
  victoryPages: thirtiethBattleVictoryPages,
  nextCampScene: 'CampScene'
};

export const thirtyFirstBattleScenario: BattleScenarioDefinition = {
  id: 'thirty-first-battle-luo-main-gate',
  title: '낙성 본성 공략',
  victoryConditionLabel: '장임 본성 격파',
  defeatConditionLabel: '유비 또는 방통 퇴각',
  openingObjectiveLines: [
    '낙성 본성은 높은 성벽과 좁은 성문으로 버티고 있습니다. 성문을 무너뜨리되 백성 피해를 줄여야 다음 익주 진입이 쉬워집니다.',
    '엄안이 성 안의 노장으로 버티고 있습니다. 황충, 법정, 오의를 데려가면 성벽 궁병과 항복 설득을 함께 압박하기 좋습니다.',
    '유비와 방통을 지키며 장임을 격파하십시오. 낙성이 열리면 익주 심부와 성도 압박으로 나아갑니다.'
  ],
  map: thirtyFirstBattleMap,
  units: thirtyFirstBattleUnits,
  bonds: thirtyFirstBattleBonds,
  mapTextureKey: 'battle-map-thirty-first',
  leaderUnitId: 'luo-main-leader-zhang-ren',
  quickVictoryTurnLimit: 42,
  baseVictoryGold: 4720,
  objectives: [
    {
      id: 'leader',
      kind: 'defeat-leader',
      label: '장임 본성 격파',
      rewardGold: 2920,
      unitId: 'luo-main-leader-zhang-ren'
    },
    {
      id: 'liu-bei',
      kind: 'keep-unit-alive',
      label: '유비 생존',
      rewardGold: 900,
      unitId: 'liu-bei'
    },
    {
      id: 'pang-tong',
      kind: 'keep-unit-alive',
      label: '방통 생존',
      rewardGold: 1220,
      unitId: 'pang-tong'
    },
    {
      id: 'main-gate',
      kind: 'secure-terrain',
      label: '낙성 성문 확보',
      rewardGold: 1480,
      terrain: 'fort'
    },
    {
      id: 'quick',
      kind: 'quick-victory',
      label: '42턴 이내 승리',
      rewardGold: 1120,
      maxTurn: 42
    }
  ],
  defeatConditions: [
    { kind: 'unit-defeated', unitId: 'liu-bei' },
    { kind: 'unit-defeated', unitId: 'pang-tong' }
  ],
  itemRewards: ['콩 16', '상처약 12', '탁주 7', '낙성 항복 권고문 +1', '엄안 합류'],
  victoryPages: thirtyFirstBattleVictoryPages,
  nextCampScene: 'CampScene'
};

export const thirtySecondBattleScenario: BattleScenarioDefinition = {
  id: 'thirty-second-battle-mianzhu-gate',
  title: '면죽관 압박전',
  victoryConditionLabel: '이엄 수비선 격파',
  defeatConditionLabel: '유비 또는 엄안 퇴각',
  openingObjectiveLines: [
    '면죽관은 성도 앞 마지막 완충 지대입니다. 관문을 장악하면 유장의 항복 권고가 현실적인 압박으로 바뀝니다.',
    '엄안은 익주 장수들의 마음을 흔드는 첫 증거입니다. 엄안을 지키며 이엄에게 유비군의 군율과 예우를 보여 주십시오.',
    '이엄을 격파하되 마을과 창고를 안정시키면 성도 항복 권고의 명분이 강해집니다.'
  ],
  map: thirtySecondBattleMap,
  units: thirtySecondBattleUnits,
  bonds: thirtySecondBattleBonds,
  mapTextureKey: 'battle-map-thirty-second',
  leaderUnitId: 'chengdu-leader-li-yan',
  quickVictoryTurnLimit: 45,
  baseVictoryGold: 5040,
  objectives: [
    {
      id: 'leader',
      kind: 'defeat-leader',
      label: '이엄 수비선 격파',
      rewardGold: 3120,
      unitId: 'chengdu-leader-li-yan'
    },
    {
      id: 'liu-bei',
      kind: 'keep-unit-alive',
      label: '유비 생존',
      rewardGold: 960,
      unitId: 'liu-bei'
    },
    {
      id: 'yan-yan',
      kind: 'keep-unit-alive',
      label: '엄안 생존',
      rewardGold: 1260,
      unitId: 'yan-yan'
    },
    {
      id: 'mianzhu-storehouse',
      kind: 'secure-terrain',
      label: '면죽관 창고 확보',
      rewardGold: 1540,
      terrain: 'village'
    },
    {
      id: 'quick',
      kind: 'quick-victory',
      label: '45턴 이내 승리',
      rewardGold: 1180,
      maxTurn: 45
    }
  ],
  defeatConditions: [
    { kind: 'unit-defeated', unitId: 'liu-bei' },
    { kind: 'unit-defeated', unitId: 'yan-yan' }
  ],
  itemRewards: ['콩 18', '상처약 13', '탁주 7', '성도 항복 권고문 +1', '이엄 합류'],
  victoryPages: thirtySecondBattleVictoryPages,
  nextCampScene: 'CampScene'
};

export const thirtyThirdBattleScenario: BattleScenarioDefinition = {
  id: 'thirty-third-battle-chengdu-surrender',
  title: '성도 항복 권고전',
  victoryConditionLabel: '황권 방어선 격파',
  defeatConditionLabel: '유비 또는 이엄 퇴각',
  openingObjectiveLines: [
    '성도 외곽의 마지막 방어선입니다. 황권을 물리치면 유장의 항복 권고가 실제 선택지로 바뀝니다.',
    '이엄은 방금 합류한 익주 장수로, 이번 전장에서 유비군의 군율을 증언하는 핵심 인물입니다. 이엄을 반드시 지키십시오.',
    '성도 창고와 마을을 안정시키면 항복 조건에 대한 신뢰가 커지고, 익주 확보 이후의 수습이 쉬워집니다.'
  ],
  map: thirtyThirdBattleMap,
  units: thirtyThirdBattleUnits,
  bonds: thirtyThirdBattleBonds,
  mapTextureKey: 'battle-map-thirty-third',
  leaderUnitId: 'chengdu-final-leader-huang-quan',
  quickVictoryTurnLimit: 48,
  baseVictoryGold: 5340,
  objectives: [
    {
      id: 'leader',
      kind: 'defeat-leader',
      label: '황권 방어선 격파',
      rewardGold: 3360,
      unitId: 'chengdu-final-leader-huang-quan'
    },
    {
      id: 'liu-bei',
      kind: 'keep-unit-alive',
      label: '유비 생존',
      rewardGold: 980,
      unitId: 'liu-bei'
    },
    {
      id: 'li-yan',
      kind: 'keep-unit-alive',
      label: '이엄 생존',
      rewardGold: 1320,
      unitId: 'li-yan'
    },
    {
      id: 'chengdu-storehouse',
      kind: 'secure-terrain',
      label: '성도 창고 확보',
      rewardGold: 1620,
      terrain: 'village'
    },
    {
      id: 'quick',
      kind: 'quick-victory',
      label: '48턴 이내 승리',
      rewardGold: 1240,
      maxTurn: 48
    }
  ],
  defeatConditions: [
    { kind: 'unit-defeated', unitId: 'liu-bei' },
    { kind: 'unit-defeated', unitId: 'li-yan' }
  ],
  itemRewards: ['콩 20', '상처약 15', '탁주 8', '익주 안정문 +1', '황권 합류'],
  victoryPages: thirtyThirdBattleVictoryPages,
  nextCampScene: 'CampScene'
};

export const thirtyFourthBattleScenario: BattleScenarioDefinition = {
  id: 'thirty-fourth-battle-jiameng-pass',
  title: '가맹관 마초 대면전',
  victoryConditionLabel: '마초 돌격 저지',
  defeatConditionLabel: '유비 또는 황권 퇴각',
  openingObjectiveLines: [
    '가맹관은 익주와 한중을 잇는 목입니다. 이 길을 열면 촉한 건국 이후 북방 전선의 첫 기반이 마련됩니다.',
    '황권은 이번 전장이 첫 출전입니다. 한중 길과 익주 내정의 균형을 잡으려면 황권을 지켜야 합니다.',
    '마초의 돌격을 받아내고 방덕의 친위대를 제압하면, 서량 기병을 유비군으로 끌어들일 말길이 열립니다.'
  ],
  map: thirtyFourthBattleMap,
  units: thirtyFourthBattleUnits,
  bonds: thirtyFourthBattleBonds,
  mapTextureKey: 'battle-map-thirty-fourth',
  leaderUnitId: 'jiameng-leader-ma-chao',
  quickVictoryTurnLimit: 50,
  baseVictoryGold: 5660,
  objectives: [
    {
      id: 'leader',
      kind: 'defeat-leader',
      label: '마초 돌격 저지',
      rewardGold: 3560,
      unitId: 'jiameng-leader-ma-chao'
    },
    {
      id: 'liu-bei',
      kind: 'keep-unit-alive',
      label: '유비 생존',
      rewardGold: 1000,
      unitId: 'liu-bei'
    },
    {
      id: 'huang-quan',
      kind: 'keep-unit-alive',
      label: '황권 생존',
      rewardGold: 1360,
      unitId: 'huang-quan'
    },
    {
      id: 'jiameng-storehouse',
      kind: 'secure-terrain',
      label: '가맹관 보급 창고 확보',
      rewardGold: 1680,
      terrain: 'village'
    },
    {
      id: 'quick',
      kind: 'quick-victory',
      label: '50턴 이내 승리',
      rewardGold: 1300,
      maxTurn: 50
    }
  ],
  defeatConditions: [
    { kind: 'unit-defeated', unitId: 'liu-bei' },
    { kind: 'unit-defeated', unitId: 'huang-quan' }
  ],
  itemRewards: ['콩 22', '상처약 16', '탁주 8', '서량 기병 전술서 +1', '마초 합류'],
  victoryPages: thirtyFourthBattleVictoryPages,
  nextCampScene: 'CampScene'
};

export const thirtyFifthBattleScenario: BattleScenarioDefinition = {
  id: 'thirty-fifth-battle-yangping-scout',
  title: '양평관 정찰전',
  victoryConditionLabel: '양평관 선봉 격파',
  defeatConditionLabel: '유비 또는 마초 퇴각',
  openingObjectiveLines: [
    '양평관은 한중 전선으로 들어가는 첫 관문입니다. 관문을 빼앗기보다 지형과 보급로를 확인하는 것이 목표입니다.',
    '마초는 이번 전장이 합류 후 첫 출전입니다. 서량 기병의 속도를 활용하되 유비군의 전열과 너무 멀어지지 않게 해야 합니다.',
    '장위의 선봉과 염포의 책략대를 물리치고 관문 창고를 확보하면, 흩어진 서량 기병과 마대가 합류할 길이 열립니다.'
  ],
  map: thirtyFifthBattleMap,
  units: thirtyFifthBattleUnits,
  bonds: thirtyFifthBattleBonds,
  mapTextureKey: 'battle-map-thirty-fifth',
  leaderUnitId: 'yangping-leader-zhang-wei',
  quickVictoryTurnLimit: 52,
  baseVictoryGold: 5900,
  objectives: [
    {
      id: 'leader',
      kind: 'defeat-leader',
      label: '양평관 선봉 격파',
      rewardGold: 3720,
      unitId: 'yangping-leader-zhang-wei'
    },
    {
      id: 'liu-bei',
      kind: 'keep-unit-alive',
      label: '유비 생존',
      rewardGold: 1000,
      unitId: 'liu-bei'
    },
    {
      id: 'ma-chao',
      kind: 'keep-unit-alive',
      label: '마초 생존',
      rewardGold: 1500,
      unitId: 'ma-chao'
    },
    {
      id: 'yangping-storehouse',
      kind: 'secure-terrain',
      label: '양평관 창고 확보',
      rewardGold: 1760,
      terrain: 'village'
    },
    {
      id: 'quick',
      kind: 'quick-victory',
      label: '52턴 이내 승리',
      rewardGold: 1360,
      maxTurn: 52
    }
  ],
  defeatConditions: [
    { kind: 'unit-defeated', unitId: 'liu-bei' },
    { kind: 'unit-defeated', unitId: 'ma-chao' }
  ],
  itemRewards: ['콩 24', '상처약 18', '탁주 8', '서량장창 +1', '마대 합류'],
  victoryPages: thirtyFifthBattleVictoryPages,
  nextCampScene: 'CampScene'
};

export const thirtySixthBattleScenario: BattleScenarioDefinition = {
  id: 'thirty-sixth-battle-dingjun-vanguard',
  title: '정군산 전초전',
  victoryConditionLabel: '하후연 선봉 격파',
  defeatConditionLabel: '유비 또는 황충 퇴각',
  openingObjectiveLines: [
    '정군산은 한중 전선의 고지입니다. 능선을 장악하면 한중 본전의 주도권을 유비군이 가져올 수 있습니다.',
    '황충과 법정의 계책이 이번 전투의 중심입니다. 황충이 무너지면 정군산의 기세도 꺾입니다.',
    '마초와 마대는 서쪽 능선을 흔들고, 왕평을 설득할 실마리를 찾아 한중 산길의 마음을 유비군 쪽으로 돌리십시오.'
  ],
  map: thirtySixthBattleMap,
  units: thirtySixthBattleUnits,
  bonds: thirtySixthBattleBonds,
  mapTextureKey: 'battle-map-thirty-sixth',
  leaderUnitId: 'dingjun-leader-xiahou-yuan',
  quickVictoryTurnLimit: 54,
  baseVictoryGold: 6240,
  objectives: [
    {
      id: 'leader',
      kind: 'defeat-leader',
      label: '하후연 선봉 격파',
      rewardGold: 3920,
      unitId: 'dingjun-leader-xiahou-yuan'
    },
    {
      id: 'liu-bei',
      kind: 'keep-unit-alive',
      label: '유비 생존',
      rewardGold: 1000,
      unitId: 'liu-bei'
    },
    {
      id: 'huang-zhong',
      kind: 'keep-unit-alive',
      label: '황충 생존',
      rewardGold: 1640,
      unitId: 'huang-zhong'
    },
    {
      id: 'dingjun-ridge-storehouse',
      kind: 'secure-terrain',
      label: '정군산 보급 창고 확보',
      rewardGold: 1860,
      terrain: 'village'
    },
    {
      id: 'quick',
      kind: 'quick-victory',
      label: '54턴 이내 승리',
      rewardGold: 1440,
      maxTurn: 54
    }
  ],
  defeatConditions: [
    { kind: 'unit-defeated', unitId: 'liu-bei' },
    { kind: 'unit-defeated', unitId: 'huang-zhong' }
  ],
  itemRewards: ['콩 26', '상처약 20', '탁주 9', '산악 지형도 +1', '왕평 합류'],
  victoryPages: thirtySixthBattleVictoryPages,
  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
};

export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];

export function getBattleScenario(id: string | undefined) {
  if (id && id in battleScenarios) {
    return battleScenarios[id as BattleScenarioId];
  }
  return defaultBattleScenario;
}
