import type { CampaignStep } from '../state/campaignState'; import { defaultBattleScenario, eighthBattleScenario, fifthBattleScenario, fourthBattleScenario, ninthBattleScenario, secondBattleScenario, seventhBattleScenario, sixthBattleScenario, tenthBattleScenario, thirdBattleScenario, type BattleScenarioId } from './battles'; import { eighthBattleIntroPages, eighthBattleVictoryPages, fifthBattleIntroPages, fifthBattleVictoryPages, firstBattleVictoryPages, fourthBattleIntroPages, fourthBattleVictoryPages, ninthBattleIntroPages, ninthBattleVictoryPages, secondBattleIntroPages, secondBattleVictoryPages, seventhBattleIntroPages, seventhBattleVictoryPages, sixthBattleIntroPages, sixthBattleVictoryPages, tenthBattleIntroPages, tenthBattleVictoryPages, thirdBattleIntroPages, thirdBattleVictoryPages, type StoryPage } from './scenario'; export type SortieFlow = { afterBattleId: string; eyebrow: string; title: string; description: string; rewardHint: string; nextBattleId?: BattleScenarioId; campaignStep?: CampaignStep; pages: StoryPage[]; unavailableNotice?: string; }; const sortieFlows: Record = { [defaultBattleScenario.id]: { afterBattleId: defaultBattleScenario.id, eyebrow: '다음 전장', title: secondBattleScenario.title, description: '탁현을 물러난 황건 잔당이 인근 마을을 위협하고 있습니다. 의용군은 첫 승리의 기세를 몰아 추격에 나섭니다.', rewardHint: '예상 보상: 군자금, 소모품, 의용군 명성', nextBattleId: secondBattleScenario.id, campaignStep: 'second-battle', pages: [...firstBattleVictoryPages, ...secondBattleIntroPages] }, [secondBattleScenario.id]: { afterBattleId: secondBattleScenario.id, eyebrow: '다음 전장', title: thirdBattleScenario.title, description: '탁현을 넘어 광종으로 향하는 길목에서 황건 전령이 관군의 움직임을 본대로 전하려 합니다. 강가 요새와 좁은 길을 돌파해야 합니다.', rewardHint: `예상 보상: ${thirdBattleScenario.title} 개방`, nextBattleId: thirdBattleScenario.id, campaignStep: 'third-battle', pages: [...secondBattleVictoryPages, ...thirdBattleIntroPages] }, [thirdBattleScenario.id]: { afterBattleId: thirdBattleScenario.id, eyebrow: '다음 전장', title: fourthBattleScenario.title, description: '광종 구원로를 연 의용군은 이제 황건 본영을 향합니다. 장각을 격파해 황건적 토벌의 큰 고비를 넘겨야 합니다.', rewardHint: `예상 보상: ${fourthBattleScenario.title} 개방`, nextBattleId: fourthBattleScenario.id, campaignStep: 'fourth-battle', pages: [...thirdBattleVictoryPages, ...fourthBattleIntroPages] }, [fourthBattleScenario.id]: { afterBattleId: fourthBattleScenario.id, eyebrow: '다음 전장', title: fifthBattleScenario.title, description: '황건적 토벌로 이름을 알린 세 형제는 반동탁 연합의 흐름에 몸을 싣습니다. 공손찬의 진영으로 향하는 길목에서 사수관 전초 병력을 상대해야 합니다.', rewardHint: `예상 보상: ${fifthBattleScenario.title} 개방`, nextBattleId: fifthBattleScenario.id, campaignStep: 'fifth-battle', pages: [...fourthBattleVictoryPages, ...fifthBattleIntroPages] }, [fifthBattleScenario.id]: { afterBattleId: fifthBattleScenario.id, eyebrow: '다음 전장', title: sixthBattleScenario.title, description: '공손찬의 군영에 의탁한 세 형제는 북방 전선의 보급로를 지키는 임무를 맡습니다. 계교로 향하는 길목에서 원소군 별동대를 상대해야 합니다.', rewardHint: `예상 보상: ${sixthBattleScenario.title} 개방`, nextBattleId: sixthBattleScenario.id, campaignStep: 'sixth-battle', pages: [...fifthBattleVictoryPages, ...sixthBattleIntroPages] }, [sixthBattleScenario.id]: { afterBattleId: sixthBattleScenario.id, eyebrow: '다음 전장', title: seventhBattleScenario.title, description: '계교 원군로를 열어 공손찬의 신뢰를 얻은 유비군에게 서주의 도겸이 원군을 청합니다. 조조군 선봉을 밀어내고 서주 피난로를 열어야 합니다.', rewardHint: `예상 보상: ${seventhBattleScenario.title} 개방`, nextBattleId: seventhBattleScenario.id, campaignStep: 'seventh-battle', pages: [...sixthBattleVictoryPages, ...seventhBattleIntroPages] }, [seventhBattleScenario.id]: { afterBattleId: seventhBattleScenario.id, eyebrow: '다음 전장', title: eighthBattleScenario.title, description: '도겸에게 서주를 맡은 뒤 첫 과제는 소패 보급로를 지키는 일입니다. 여포군의 그림자가 드리우기 전에 새로 합류한 장수들과 방위선을 세워야 합니다.', rewardHint: `예상 보상: ${eighthBattleScenario.title} 개방`, nextBattleId: eighthBattleScenario.id, campaignStep: 'eighth-battle', pages: [...seventhBattleVictoryPages, ...eighthBattleIntroPages] }, [eighthBattleScenario.id]: { afterBattleId: eighthBattleScenario.id, eyebrow: '다음 전장', title: ninthBattleScenario.title, description: '여포를 의탁시킨 뒤 서주 성문 안팎의 불안이 터집니다. 조표의 야습을 막아 성문을 지켜내야 합니다.', rewardHint: `예상 보상: ${ninthBattleScenario.title} 개방`, nextBattleId: ninthBattleScenario.id, campaignStep: 'ninth-battle', pages: [...eighthBattleVictoryPages, ...ninthBattleIntroPages] }, [ninthBattleScenario.id]: { afterBattleId: ninthBattleScenario.id, eyebrow: '다음 전장', title: tenthBattleScenario.title, description: '장비의 성급함과 여포의 야심이 맞물려 서주는 무너집니다. 성을 되찾기보다 포위망을 뚫고 다음 길을 찾는 전투가 됩니다.', rewardHint: `예상 보상: ${tenthBattleScenario.title} 개방`, nextBattleId: tenthBattleScenario.id, campaignStep: 'tenth-battle', pages: [...ninthBattleVictoryPages, ...tenthBattleIntroPages] }, [tenthBattleScenario.id]: { afterBattleId: tenthBattleScenario.id, eyebrow: '다음 장 준비', title: '조조 의탁의 길', description: '서주를 잃은 유비군은 살아남은 병력과 백성을 추슬러 허도로 향할 길을 찾습니다. 다음 흐름은 조조 의탁과 그 안의 긴장으로 이어집니다.', rewardHint: '다음 장: 조조 의탁 준비 중', pages: tenthBattleVictoryPages, unavailableNotice: '조조 의탁 장은 다음 작업에서 이어집니다. 군영에서 성장과 출전 구성을 정비하십시오.' } }; export function getSortieFlow(latestBattleId?: string) { return sortieFlows[latestBattleId ?? defaultBattleScenario.id] ?? sortieFlows[defaultBattleScenario.id]; }