155 lines
6.8 KiB
TypeScript
155 lines
6.8 KiB
TypeScript
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<string, SortieFlow> = {
|
|
[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];
|
|
}
|