Add fifth Meng Huo capture battle
This commit is contained in:
@@ -883,7 +883,16 @@ const unitTexture: Record<string, string> = {
|
||||
'menghuo-fourth-officer-mangyachang': 'unit-rebel-leader',
|
||||
'menghuo-fourth-officer-dongtuna': 'unit-rebel-leader',
|
||||
'menghuo-fourth-officer-ahuinan': 'unit-rebel-leader',
|
||||
'menghuo-fourth-leader': 'unit-rebel-leader'
|
||||
'menghuo-fourth-leader': 'unit-rebel-leader',
|
||||
'menghuo-fifth-shaman-a': 'unit-rebel-archer',
|
||||
'menghuo-fifth-shaman-b': 'unit-rebel-archer',
|
||||
'menghuo-fifth-shaman-c': 'unit-rebel-archer',
|
||||
'menghuo-fifth-shaman-d': 'unit-rebel-archer',
|
||||
'menghuo-fifth-officer-zhurong': 'unit-rebel-leader',
|
||||
'menghuo-fifth-officer-mulu': 'unit-rebel-leader',
|
||||
'menghuo-fifth-officer-duosi': 'unit-rebel-leader',
|
||||
'menghuo-fifth-officer-mengyou': 'unit-rebel-leader',
|
||||
'menghuo-fifth-leader': 'unit-rebel-leader'
|
||||
};
|
||||
|
||||
const unitTextureByClass: Partial<Record<UnitClassKey, string>> = {
|
||||
@@ -2422,7 +2431,48 @@ const enemyAiByUnitId: Record<string, EnemyAiBehavior> = {
|
||||
'menghuo-fourth-officer-mangyachang': 'aggressive',
|
||||
'menghuo-fourth-officer-dongtuna': 'guard',
|
||||
'menghuo-fourth-officer-ahuinan': 'guard',
|
||||
'menghuo-fourth-leader': 'hold'
|
||||
'menghuo-fourth-leader': 'hold',
|
||||
'menghuo-fifth-scout-a': 'aggressive',
|
||||
'menghuo-fifth-scout-b': 'aggressive',
|
||||
'menghuo-fifth-scout-c': 'aggressive',
|
||||
'menghuo-fifth-scout-d': 'aggressive',
|
||||
'menghuo-fifth-scout-e': 'aggressive',
|
||||
'menghuo-fifth-scout-f': 'aggressive',
|
||||
'menghuo-fifth-vine-a': 'guard',
|
||||
'menghuo-fifth-vine-b': 'guard',
|
||||
'menghuo-fifth-vine-c': 'guard',
|
||||
'menghuo-fifth-vine-d': 'guard',
|
||||
'menghuo-fifth-vine-e': 'guard',
|
||||
'menghuo-fifth-vine-f': 'guard',
|
||||
'menghuo-fifth-archer-a': 'hold',
|
||||
'menghuo-fifth-archer-b': 'hold',
|
||||
'menghuo-fifth-archer-c': 'hold',
|
||||
'menghuo-fifth-archer-d': 'hold',
|
||||
'menghuo-fifth-archer-e': 'hold',
|
||||
'menghuo-fifth-beast-a': 'aggressive',
|
||||
'menghuo-fifth-beast-b': 'aggressive',
|
||||
'menghuo-fifth-beast-c': 'aggressive',
|
||||
'menghuo-fifth-beast-d': 'aggressive',
|
||||
'menghuo-fifth-beast-e': 'aggressive',
|
||||
'menghuo-fifth-ambusher-a': 'aggressive',
|
||||
'menghuo-fifth-ambusher-b': 'aggressive',
|
||||
'menghuo-fifth-ambusher-c': 'aggressive',
|
||||
'menghuo-fifth-ambusher-d': 'aggressive',
|
||||
'menghuo-fifth-ambusher-e': 'aggressive',
|
||||
'menghuo-fifth-ambusher-f': 'aggressive',
|
||||
'menghuo-fifth-guard-a': 'guard',
|
||||
'menghuo-fifth-guard-b': 'guard',
|
||||
'menghuo-fifth-guard-c': 'guard',
|
||||
'menghuo-fifth-guard-d': 'guard',
|
||||
'menghuo-fifth-shaman-a': 'hold',
|
||||
'menghuo-fifth-shaman-b': 'hold',
|
||||
'menghuo-fifth-shaman-c': 'hold',
|
||||
'menghuo-fifth-shaman-d': 'hold',
|
||||
'menghuo-fifth-officer-zhurong': 'aggressive',
|
||||
'menghuo-fifth-officer-mulu': 'aggressive',
|
||||
'menghuo-fifth-officer-duosi': 'guard',
|
||||
'menghuo-fifth-officer-mengyou': 'guard',
|
||||
'menghuo-fifth-leader': 'hold'
|
||||
};
|
||||
|
||||
const defaultEnemyAiByClass: Partial<Record<UnitClassKey, EnemyAiBehavior>> = {
|
||||
|
||||
@@ -27,8 +27,9 @@ import {
|
||||
hanzhongMainRecruitUnits,
|
||||
hanzhongScoutRecruitBonds,
|
||||
hanzhongScoutRecruitUnits,
|
||||
mengHuoThirdCaptureBonds,
|
||||
mengHuoFourthCaptureBonds,
|
||||
mengHuoFifthCaptureBonds,
|
||||
mengHuoThirdCaptureBonds,
|
||||
fanCastleBonds,
|
||||
fanCastleSiegeBonds,
|
||||
jingCollapseBonds,
|
||||
@@ -415,7 +416,8 @@ const campaignTimelineChapters: CampaignTimelineChapter[] = [
|
||||
'forty-eighth-battle-meng-huo-main-force',
|
||||
'forty-ninth-battle-meng-huo-second-capture',
|
||||
'fiftieth-battle-meng-huo-third-capture',
|
||||
'fifty-first-battle-meng-huo-fourth-capture'
|
||||
'fifty-first-battle-meng-huo-fourth-capture',
|
||||
'fifty-second-battle-meng-huo-fifth-capture'
|
||||
],
|
||||
nextHints: ['왕업 선언', '번성 포위', '형주 위기', '이릉 화공', '남중 안정', '맹획 회유', '칠종칠금']
|
||||
}
|
||||
@@ -472,7 +474,8 @@ const campBattleIds = {
|
||||
fortyEighth: 'forty-eighth-battle-meng-huo-main-force',
|
||||
fortyNinth: 'forty-ninth-battle-meng-huo-second-capture',
|
||||
fiftieth: 'fiftieth-battle-meng-huo-third-capture',
|
||||
fiftyFirst: 'fifty-first-battle-meng-huo-fourth-capture'
|
||||
fiftyFirst: 'fifty-first-battle-meng-huo-fourth-capture',
|
||||
fiftySecond: 'fifty-second-battle-meng-huo-fifth-capture'
|
||||
} as const;
|
||||
|
||||
const defaultRequiredSortieUnitIds = ['liu-bei'];
|
||||
@@ -1089,6 +1092,20 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
|
||||
{ unitId: 'ma-dai', reason: '마초와 함께 회유 퇴로 주변의 빠른 차단과 회수를 맡습니다.' }
|
||||
],
|
||||
note: '칠종칠금 4차전은 이전 군영의 호족 회유 선택이 전장 목표로 바뀌는 전투입니다. 생포만 노리지 말고, 회유 퇴로와 보증 장부를 지킬 편성을 고르십시오.'
|
||||
},
|
||||
'fifty-second-battle-meng-huo-fifth-capture': {
|
||||
maxUnits: 7,
|
||||
requiredUnitIds: ['zhuge-liang'],
|
||||
recommended: [
|
||||
{ unitId: 'zhuge-liang', reason: '다섯 번째 생포와 강경파 분리 명분을 직접 지휘하는 필수 장수입니다.' },
|
||||
{ unitId: 'huang-quan', reason: '강경파와 회유파를 장부로 분리해 군율과 약속을 동시에 지킵니다.' },
|
||||
{ unitId: 'ma-liang', reason: '물러설 호족에게 남길 말을 정리해 마을 회유 목표를 돕습니다.' },
|
||||
{ unitId: 'wang-ping', reason: '죽림과 협곡의 분리로를 읽어 회유 퇴로를 확보합니다.' },
|
||||
{ unitId: 'zhao-yun', reason: '맹수 추격대가 회유로를 짓밟지 못하게 중심을 받쳐 줍니다.' },
|
||||
{ unitId: 'huang-zhong', reason: '고지 궁병과 제사장을 억제해 강경파 요새 공략을 안정시킵니다.' },
|
||||
{ unitId: 'ma-dai', reason: '마초와 다른 빠른 우회로를 맡아 분리로 주변 추격선을 끊습니다.' }
|
||||
],
|
||||
note: '칠종칠금 5차전은 맹획 생포에 더해 강경파 호족을 본대에서 떼어 내는 전투입니다. 마을 회유, 장부 분리, 퇴로 유지, 추격 억제를 맡을 장수를 균형 있게 고르십시오.'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -5388,6 +5405,87 @@ const campDialogues: CampDialogue[] = [
|
||||
rewardExp: 19
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'fifth-capture-zhuge-huangquan-separation',
|
||||
title: '갈라진 이름의 장부',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySecond],
|
||||
unitIds: ['zhuge-liang', 'huang-quan'],
|
||||
bondId: 'zhuge-liang__huang-quan_fifth-capture',
|
||||
rewardExp: 66,
|
||||
lines: [
|
||||
'황권: 다섯 번째 생포 뒤에는 끝까지 싸운 자와 물러난 자의 이름을 더 엄격히 나누어야 합니다.',
|
||||
'제갈량: 처벌을 위한 장부가 되면 다시 원한이 됩니다. 약속을 지킨 자를 보호하는 장부로 남겨야 합니다.',
|
||||
'황권: 그렇다면 강경파를 누르되, 돌아선 자의 길은 먼저 지켜 두겠습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'write-hardliner-ledger',
|
||||
label: '강경파 장부를 나눈다',
|
||||
response: '황권은 강경파와 회유파의 이름을 따로 적었고, 제갈량은 석방의 기준을 병사들에게 다시 알렸습니다.',
|
||||
rewardExp: 23
|
||||
},
|
||||
{
|
||||
id: 'protect-returning-clans',
|
||||
label: '돌아선 호족을 보호한다',
|
||||
response: '제갈량은 물러난 호족의 마을을 함부로 징발하지 말라 명했고, 황권은 그 이름을 보증 장부에 옮겼습니다.',
|
||||
rewardExp: 22
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'fifth-capture-maliang-wangping-routes',
|
||||
title: '말이 닿는 길',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySecond],
|
||||
unitIds: ['ma-liang', 'wang-ping'],
|
||||
bondId: 'ma-liang__wang-ping_fifth-capture',
|
||||
rewardExp: 62,
|
||||
lines: [
|
||||
'마량: 말만 남기면 길이 막히고, 길만 열면 뜻이 흐려집니다.',
|
||||
'왕평: 그래서 이번 지도에는 말이 닿을 마을과 군대가 지나갈 길을 따로 그려야 합니다.',
|
||||
'마량: 다음 싸움에서는 그 지도가 곧 회유의 증거가 되겠습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'copy-amnesty-routes',
|
||||
label: '회유 길을 베낀다',
|
||||
response: '왕평은 낮은 길을 다시 그렸고, 마량은 그 길마다 붙일 짧은 문장을 적었습니다.',
|
||||
rewardExp: 21
|
||||
},
|
||||
{
|
||||
id: 'separate-village-messages',
|
||||
label: '마을별 문구를 나눈다',
|
||||
response: '마량은 마을마다 다른 두려움을 적었고, 왕평은 그 마을로 이어지는 좁은 길을 표시했습니다.',
|
||||
rewardExp: 20
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'fifth-capture-zhaoyun-huangzhong-containment',
|
||||
title: '멀리서 막는 추격',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySecond],
|
||||
unitIds: ['zhao-yun', 'huang-zhong'],
|
||||
bondId: 'zhao-yun__huang-zhong_fifth-capture',
|
||||
rewardExp: 60,
|
||||
lines: [
|
||||
'황충: 이번 강경파는 가까이 붙으면 오히려 회유 길을 흔들었소.',
|
||||
'조운: 그래서 먼저 끊어야 했습니다. 칼끝이 아니라 거리로 막는 싸움이었습니다.',
|
||||
'황충: 다음에도 고지와 중앙을 함께 잡아야 맹획을 잡되 남중을 잃지 않겠소.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'train-distant-containment',
|
||||
label: '원거리 억제선을 훈련한다',
|
||||
response: '황충은 고지 사격선을 정했고, 조운은 그 앞을 지키는 간격을 병사들에게 익혔습니다.',
|
||||
rewardExp: 20
|
||||
},
|
||||
{
|
||||
id: 'hold-center-and-hill',
|
||||
label: '중앙과 고지를 나눈다',
|
||||
response: '조운은 중앙 방어선을 맡고, 황충은 고지 궁병을 견제할 위치를 다시 표시했습니다.',
|
||||
rewardExp: 20
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -7635,6 +7733,65 @@ const campVisits: CampVisitDefinition[] = [
|
||||
itemRewards: ['탁주 4']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'fifth-capture-hardliner-ledger',
|
||||
title: '강경파 분리 장부',
|
||||
location: '남중 포로장',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySecond],
|
||||
bondId: 'zhuge-liang__huang-quan_fifth-capture',
|
||||
description: '제갈량과 황권이 다섯 번째 생포 뒤 강경파와 회유파의 이름을 나누어 기록합니다.',
|
||||
lines: [
|
||||
'황권: 같은 남중 사람이라도 오늘부터 장부의 의미가 달라집니다.',
|
||||
'제갈량: 끝까지 싸운 자를 적는 일보다, 돌아선 자를 지키는 일이 먼저입니다.',
|
||||
'포로장 한편에는 강경파 분리 장부와 돌아선 호족의 보증문이 나뉘어 놓였습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'seal-hardliner-list',
|
||||
label: '강경파 명부를 봉한다',
|
||||
response: '황권은 강경파 명부를 따로 봉했고, 제갈량은 남은 호족에게 다시 석방의 조건을 알렸습니다.',
|
||||
bondExp: 52,
|
||||
itemRewards: ['강경파 분리 장부 1']
|
||||
},
|
||||
{
|
||||
id: 'protect-amnesty-witnesses',
|
||||
label: '회유 증인을 보호한다',
|
||||
response: '제갈량은 회유 길을 통과한 증인을 보호하게 했고, 황권은 그 이름을 보증 장부에 더했습니다.',
|
||||
bondExp: 50,
|
||||
gold: 1760,
|
||||
itemRewards: ['남중 회유 깃발 1']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'fifth-capture-amnesty-banners',
|
||||
title: '회유 깃발 정비',
|
||||
location: '남중 죽림 길목',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySecond],
|
||||
bondId: 'ma-liang__wang-ping_fifth-capture',
|
||||
description: '마량과 왕평이 다음 전투에서 물러날 호족이 알아볼 회유 깃발과 길목 표식을 정비합니다.',
|
||||
lines: [
|
||||
'마량: 글을 읽지 못하는 자도 알아볼 표식이 필요합니다.',
|
||||
'왕평: 낮은 길에는 흰 깃발, 군용길에는 검은 표식을 세우겠습니다.',
|
||||
'죽림 길목마다 회유 깃발과 군용 표식이 서로 다른 방향을 가리키기 시작했습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'raise-amnesty-banners',
|
||||
label: '회유 깃발을 세운다',
|
||||
response: '마량은 짧은 회유문을 깃발에 달았고, 왕평은 물러날 길목에 같은 표식을 반복해 세웠습니다.',
|
||||
bondExp: 50,
|
||||
itemRewards: ['콩 12']
|
||||
},
|
||||
{
|
||||
id: 'separate-war-paths',
|
||||
label: '군용길을 분리한다',
|
||||
response: '왕평은 군대가 지나갈 길을 따로 표시했고, 마량은 그 길이 마을로 이어지지 않게 문구를 고쳤습니다.',
|
||||
bondExp: 48,
|
||||
itemRewards: ['상처약 12']
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -7734,7 +7891,8 @@ export class CampScene extends Phaser.Scene {
|
||||
battleId === campBattleIds.fortyEighth ||
|
||||
battleId === campBattleIds.fortyNinth ||
|
||||
battleId === campBattleIds.fiftieth ||
|
||||
battleId === campBattleIds.fiftyFirst
|
||||
battleId === campBattleIds.fiftyFirst ||
|
||||
battleId === campBattleIds.fiftySecond
|
||||
) {
|
||||
this.campaign = ensureCampaignRosterUnits(
|
||||
[
|
||||
@@ -7788,7 +7946,8 @@ export class CampScene extends Phaser.Scene {
|
||||
...mengHuoPacificationBonds,
|
||||
...mengHuoSecondCaptureBonds,
|
||||
...mengHuoThirdCaptureBonds,
|
||||
...mengHuoFourthCaptureBonds
|
||||
...mengHuoFourthCaptureBonds,
|
||||
...mengHuoFifthCaptureBonds
|
||||
]
|
||||
);
|
||||
this.report = this.campaign.firstBattleReport ?? this.report;
|
||||
@@ -8426,6 +8585,9 @@ export class CampScene extends Phaser.Scene {
|
||||
if (this.campaign?.step === 'baidi-entrustment-camp') {
|
||||
return '백제성 유탁 후 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.fiftySecond) {
|
||||
return '칠종칠금 5차전 후 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.fiftyFirst) {
|
||||
return '칠종칠금 4차전 후 군영';
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
eleventhBattleScenario,
|
||||
fiftiethBattleScenario,
|
||||
fiftyFirstBattleScenario,
|
||||
fiftySecondBattleScenario,
|
||||
fortiethBattleScenario,
|
||||
fortyFirstBattleScenario,
|
||||
fortySecondBattleScenario,
|
||||
@@ -402,6 +403,7 @@ export class TitleScene extends Phaser.Scene {
|
||||
campaign.step === 'forty-ninth-camp' ||
|
||||
campaign.step === 'fiftieth-camp' ||
|
||||
campaign.step === 'fifty-first-camp' ||
|
||||
campaign.step === 'fifty-second-camp' ||
|
||||
campaign.step === 'hanzhong-king-camp' ||
|
||||
campaign.step === 'shu-han-foundation-camp' ||
|
||||
campaign.step === 'baidi-entrustment-camp'
|
||||
@@ -665,6 +667,11 @@ export class TitleScene extends Phaser.Scene {
|
||||
return;
|
||||
}
|
||||
|
||||
if (campaign.step === 'fifty-second-battle') {
|
||||
this.scene.start('BattleScene', { battleId: fiftySecondBattleScenario.id });
|
||||
return;
|
||||
}
|
||||
|
||||
if (campaign.step === 'first-victory-story') {
|
||||
this.scene.start('StoryScene', { pages: firstBattleVictoryPages, nextScene: 'TitleScene' });
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user