Add Cao Cao refuge road chapter
This commit is contained in:
@@ -556,7 +556,19 @@ const enemyAiByUnitId: Record<string, EnemyAiBehavior> = {
|
||||
'xuzhou-escape-archer-b': 'hold',
|
||||
'xuzhou-escape-raider-a': 'aggressive',
|
||||
'xuzhou-escape-raider-b': 'aggressive',
|
||||
'xuzhou-escape-leader-song-xian': 'guard'
|
||||
'xuzhou-escape-leader-song-xian': 'guard',
|
||||
'xudu-road-raider-a': 'guard',
|
||||
'xudu-road-raider-b': 'guard',
|
||||
'xudu-road-raider-c': 'guard',
|
||||
'xudu-road-bandit-a': 'aggressive',
|
||||
'xudu-road-bandit-b': 'aggressive',
|
||||
'xudu-road-archer-a': 'hold',
|
||||
'xudu-road-archer-b': 'hold',
|
||||
'xudu-road-cavalry-a': 'aggressive',
|
||||
'xudu-road-cavalry-b': 'aggressive',
|
||||
'xudu-road-guard-a': 'guard',
|
||||
'xudu-road-guard-b': 'guard',
|
||||
'xudu-road-leader-ji-ling': 'guard'
|
||||
};
|
||||
|
||||
const defaultEnemyAiByClass: Partial<Record<UnitClassKey, EnemyAiBehavior>> = {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import Phaser from 'phaser';
|
||||
import eighthBattleMapUrl from '../../assets/images/battle/eighth-battle-map.svg';
|
||||
import eleventhBattleMapUrl from '../../assets/images/battle/eleventh-battle-map.svg';
|
||||
import fifthBattleMapUrl from '../../assets/images/battle/fifth-battle-map.svg';
|
||||
import firstBattleMapUrl from '../../assets/images/battle/first-battle-map.png';
|
||||
import fourthBattleMapUrl from '../../assets/images/battle/fourth-battle-map.svg';
|
||||
@@ -78,6 +79,7 @@ export class BootScene extends Phaser.Scene {
|
||||
this.load.image('battle-map-eighth', eighthBattleMapUrl);
|
||||
this.load.image('battle-map-ninth', ninthBattleMapUrl);
|
||||
this.load.image('battle-map-tenth', tenthBattleMapUrl);
|
||||
this.load.image('battle-map-eleventh', eleventhBattleMapUrl);
|
||||
this.load.image('portrait-liu-bei', liuBeiPortraitUrl);
|
||||
this.load.image('portrait-guan-yu', guanYuPortraitUrl);
|
||||
this.load.image('portrait-zhang-fei', zhangFeiPortraitUrl);
|
||||
|
||||
@@ -140,7 +140,8 @@ const campBattleIds = {
|
||||
seventh: 'seventh-battle-xuzhou-rescue',
|
||||
eighth: 'eighth-battle-xiaopei-supply-road',
|
||||
ninth: 'ninth-battle-xuzhou-gate-night-raid',
|
||||
tenth: 'tenth-battle-xuzhou-breakout'
|
||||
tenth: 'tenth-battle-xuzhou-breakout',
|
||||
eleventh: 'eleventh-battle-xudu-refuge-road'
|
||||
} as const;
|
||||
|
||||
const requiredSortieUnitIds = new Set(['liu-bei']);
|
||||
@@ -1010,6 +1011,87 @@ const campDialogues: CampDialogue[] = [
|
||||
rewardExp: 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'liu-guan-after-cao-cao-refuge',
|
||||
title: '남의 깃발 아래',
|
||||
availableAfterBattleIds: [campBattleIds.eleventh],
|
||||
unitIds: ['liu-bei', 'guan-yu'],
|
||||
bondId: 'liu-bei__guan-yu',
|
||||
rewardExp: 22,
|
||||
lines: [
|
||||
'관우: 조조의 깃발 아래 서 있으니 병사들의 눈빛이 조심스러워졌습니다.',
|
||||
'유비: 운장, 깃발은 잠시 빌릴 수 있어도 뜻은 빌릴 수 없다. 우리가 지켜야 할 선을 잊지 맙시다.',
|
||||
'관우: 형님의 뜻이 흔들리지 않는다면, 남의 진영에서도 우리의 칼은 길을 잃지 않을 것입니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'keep-oath-visible',
|
||||
label: '도원의 뜻을 분명히 한다',
|
||||
response: '관우는 병사들에게 조조의 명을 따르되 유비군의 군율을 잃지 말라고 전했다.',
|
||||
rewardExp: 10
|
||||
},
|
||||
{
|
||||
id: 'watch-cao-cao-camp',
|
||||
label: '조조 진영의 움직임을 살핀다',
|
||||
response: '관우는 지나친 경계가 오히려 의심을 부른다며 조용한 감시를 맡았다.',
|
||||
rewardExp: 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'liu-jian-yong-after-cao-cao-refuge',
|
||||
title: '웃음 뒤의 문장',
|
||||
availableAfterBattleIds: [campBattleIds.eleventh],
|
||||
unitIds: ['liu-bei', 'jian-yong'],
|
||||
bondId: 'liu-bei__jian-yong',
|
||||
rewardExp: 20,
|
||||
lines: [
|
||||
'간옹: 조조는 웃으며 맞았지만, 그 웃음은 사람을 묶는 줄이기도 하네.',
|
||||
'유비: 그 줄을 끊으면 목이 조이고, 그대로 두면 발이 묶일 것이오.',
|
||||
'간옹: 그래서 말과 문서를 조심해야지. 지금은 충심을 보이되, 떠날 길의 이름을 잊지 않는 때라네.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'write-carefully',
|
||||
label: '문서를 조심스럽게 정리한다',
|
||||
response: '간옹은 조조에게 보일 문서와 유비군 내부 문서를 따로 정리했다.',
|
||||
rewardExp: 9
|
||||
},
|
||||
{
|
||||
id: 'hear-rumors',
|
||||
label: '허도 소문을 모은다',
|
||||
response: '간옹은 말 많은 술자리와 시장길에서 조조 진영의 분위기를 살피기로 했다.',
|
||||
rewardExp: 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'liu-mi-after-cao-cao-refuge',
|
||||
title: '빌린 창고',
|
||||
availableAfterBattleIds: [campBattleIds.eleventh],
|
||||
unitIds: ['liu-bei', 'mi-zhu'],
|
||||
bondId: 'liu-bei__mi-zhu',
|
||||
rewardExp: 18,
|
||||
lines: [
|
||||
'미축: 조조군의 창고를 빌리더라도 우리 병사의 식량 장부는 따로 남겨 두겠습니다.',
|
||||
'유비: 군량 하나에도 마음이 묶이는 법이오. 빌린 것은 빌린 것이라 분명히 해야 하오.',
|
||||
'미축: 그렇다면 보급은 받되, 유비군이 스스로 버틸 양도 함께 모아 두겠습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'separate-ledgers',
|
||||
label: '장부를 분리한다',
|
||||
response: '미축은 조조군 보급과 유비군 예비 군량을 따로 기록해 훗날의 발목을 줄였다.',
|
||||
rewardExp: 8
|
||||
},
|
||||
{
|
||||
id: 'save-refugee-grain',
|
||||
label: '피난민 군량을 남긴다',
|
||||
response: '미축은 병사 몫을 줄이지 않으면서도 피난민에게 갈 곡식을 별도로 숨겨 두었다.',
|
||||
rewardExp: 8
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -1092,7 +1174,8 @@ export class CampScene extends Phaser.Scene {
|
||||
(battleId !== campBattleIds.seventh &&
|
||||
battleId !== campBattleIds.eighth &&
|
||||
battleId !== campBattleIds.ninth &&
|
||||
battleId !== campBattleIds.tenth) ||
|
||||
battleId !== campBattleIds.tenth &&
|
||||
battleId !== campBattleIds.eleventh) ||
|
||||
!this.campaign
|
||||
) {
|
||||
return;
|
||||
@@ -1114,6 +1197,9 @@ export class CampScene extends Phaser.Scene {
|
||||
|
||||
private currentCampTitle() {
|
||||
const battleId = this.currentCampBattleId();
|
||||
if (battleId === campBattleIds.eleventh) {
|
||||
return '허도 의탁 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.tenth) {
|
||||
return '서주 상실 후 군영';
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import { soundDirector } from '../audio/SoundDirector';
|
||||
import { firstBattleVictoryPages } from '../data/scenario';
|
||||
import {
|
||||
eighthBattleScenario,
|
||||
eleventhBattleScenario,
|
||||
fifthBattleScenario,
|
||||
fourthBattleScenario,
|
||||
ninthBattleScenario,
|
||||
@@ -319,7 +320,8 @@ export class TitleScene extends Phaser.Scene {
|
||||
campaign.step === 'seventh-camp' ||
|
||||
campaign.step === 'eighth-camp' ||
|
||||
campaign.step === 'ninth-camp' ||
|
||||
campaign.step === 'tenth-camp'
|
||||
campaign.step === 'tenth-camp' ||
|
||||
campaign.step === 'eleventh-camp'
|
||||
) {
|
||||
this.scene.start('CampScene');
|
||||
return;
|
||||
@@ -375,6 +377,11 @@ export class TitleScene extends Phaser.Scene {
|
||||
return;
|
||||
}
|
||||
|
||||
if (campaign.step === 'eleventh-battle') {
|
||||
this.scene.start('BattleScene', { battleId: eleventhBattleScenario.id });
|
||||
return;
|
||||
}
|
||||
|
||||
if (campaign.step === 'first-victory-story') {
|
||||
this.scene.start('StoryScene', { pages: firstBattleVictoryPages, nextScene: 'TitleScene' });
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user