Add Fan Castle siege chapter
This commit is contained in:
@@ -28,6 +28,7 @@ import {
|
||||
hanzhongScoutRecruitBonds,
|
||||
hanzhongScoutRecruitUnits,
|
||||
fanCastleBonds,
|
||||
fanCastleSiegeBonds,
|
||||
jingDefenseBonds,
|
||||
jingzhouRecruitBonds,
|
||||
jingzhouRecruitUnits,
|
||||
@@ -355,9 +356,10 @@ const campaignTimelineChapters: CampaignTimelineChapter[] = [
|
||||
'thirty-seventh-battle-hanzhong-decisive',
|
||||
'thirty-eighth-battle-jing-defense',
|
||||
'thirty-ninth-battle-fan-castle-vanguard',
|
||||
'fortieth-battle-han-river-flood'
|
||||
'fortieth-battle-han-river-flood',
|
||||
'forty-first-battle-fan-castle-siege'
|
||||
],
|
||||
nextHints: ['왕업 선언', '오호대장군', '북벌 준비']
|
||||
nextHints: ['왕업 선언', '번성 포위', '형주 위기']
|
||||
}
|
||||
];
|
||||
|
||||
@@ -401,7 +403,8 @@ const campBattleIds = {
|
||||
thirtySeventh: 'thirty-seventh-battle-hanzhong-decisive',
|
||||
thirtyEighth: 'thirty-eighth-battle-jing-defense',
|
||||
thirtyNinth: 'thirty-ninth-battle-fan-castle-vanguard',
|
||||
fortieth: 'fortieth-battle-han-river-flood'
|
||||
fortieth: 'fortieth-battle-han-river-flood',
|
||||
fortyFirst: 'forty-first-battle-fan-castle-siege'
|
||||
} as const;
|
||||
|
||||
const defaultRequiredSortieUnitIds = ['liu-bei'];
|
||||
@@ -864,6 +867,20 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
|
||||
{ unitId: 'ma-chao', reason: '방덕 기병의 돌파를 맞받아치는 기병 대응 카드입니다.' }
|
||||
],
|
||||
note: '한수 수공은 스물두 명 중 일곱 명만 출전합니다. 유비와 관우는 필수이며, 나머지 다섯 자리에 물길 참모, 기동대, 원거리 압박을 어떻게 섞을지 고르는 전투입니다.'
|
||||
},
|
||||
'forty-first-battle-fan-castle-siege': {
|
||||
maxUnits: 7,
|
||||
requiredUnitIds: ['liu-bei', 'guan-yu'],
|
||||
recommended: [
|
||||
{ unitId: 'liu-bei', reason: '번성 포위의 큰 명분과 패배 조건의 중심입니다.' },
|
||||
{ unitId: 'guan-yu', reason: '성문을 압박하는 핵심 장수이며 생존 목표입니다.' },
|
||||
{ unitId: 'huang-zhong', reason: '성벽 궁병과 외성 보루를 안정적으로 견제합니다.' },
|
||||
{ unitId: 'ma-liang', reason: '형주 민심과 강동의 움직임을 함께 읽는 현지 참모입니다.' },
|
||||
{ unitId: 'fa-zheng', reason: '조인의 수성전과 방덕의 결사 돌격을 읽는 책략 축입니다.' },
|
||||
{ unitId: 'zhao-yun', reason: '성문과 나루 사이를 빠르게 보강하는 기동 축입니다.' },
|
||||
{ unitId: 'ma-chao', reason: '방덕 기병과 조조군 북로 기병을 맞받아치는 강한 기병 대응 카드입니다.' }
|
||||
],
|
||||
note: '번성 공성전은 스물두 명 중 일곱 명만 출전합니다. 유비와 관우는 필수이며, 성벽 압박, 방덕 기병 대응, 강동 정찰 경계를 어떻게 나눌지 고르는 전투입니다.'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4188,6 +4205,87 @@ const campDialogues: CampDialogue[] = [
|
||||
rewardExp: 13
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'guan-huang-after-fan-siege',
|
||||
title: '성벽을 겨눈 노장',
|
||||
availableAfterBattleIds: [campBattleIds.fortyFirst],
|
||||
unitIds: ['guan-yu', 'huang-zhong'],
|
||||
bondId: 'guan-yu__huang-zhong',
|
||||
rewardExp: 44,
|
||||
lines: [
|
||||
'황충: 성벽 위 궁병은 오래 버티는 법을 압니다. 다음에는 사다리보다 먼저 그 눈을 흔들어야 합니다.',
|
||||
'관우: 노장의 화살이 성문 위를 누르면, 칼을 든 병사들이 한 걸음 더 나아갈 수 있소.',
|
||||
'황충: 병사들이 오르기 전에 제가 먼저 길을 열겠습니다. 성벽을 보는 눈은 아직 흐려지지 않았습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'mark-wall-archers',
|
||||
label: '성벽 궁병 위치를 표시한다',
|
||||
response: '황충은 성벽의 사각을 표시했고, 관우군의 다음 공성 대형이 더 안정되었습니다.',
|
||||
rewardExp: 16
|
||||
},
|
||||
{
|
||||
id: 'prepare-siege-cover',
|
||||
label: '사다리 엄호를 준비한다',
|
||||
response: '관우와 황충은 사다리 부대의 엄호 순서를 정하며 성문 압박을 더 날카롭게 다듬었습니다.',
|
||||
rewardExp: 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'guan-maliang-after-fan-siege',
|
||||
title: '형주의 낮은 목소리',
|
||||
availableAfterBattleIds: [campBattleIds.fortyFirst],
|
||||
unitIds: ['guan-yu', 'ma-liang'],
|
||||
bondId: 'guan-yu__ma-liang',
|
||||
rewardExp: 42,
|
||||
lines: [
|
||||
'마량: 번성의 성벽만 보면 형주의 마음을 놓칠 수 있습니다. 강 건너의 말이 점점 빨라지고 있습니다.',
|
||||
'관우: 성을 치는 동안 뒤를 잊는다면 그것은 승리가 아니오. 형주의 소리를 계속 들려주시오.',
|
||||
'마량: 나루의 상인과 마을 노인을 다시 만나겠습니다. 전선의 힘은 뒤의 믿음에서 나옵니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'listen-to-jing-villages',
|
||||
label: '형주 마을의 소문을 듣는다',
|
||||
response: '마량이 마을의 불안한 소문을 모아 관우에게 전했고, 후방 경계가 더 촘촘해졌습니다.',
|
||||
rewardExp: 16
|
||||
},
|
||||
{
|
||||
id: 'calm-river-merchants',
|
||||
label: '강변 상인을 안심시킨다',
|
||||
response: '관우군은 상인들에게 군율을 설명했고, 강변 보급로의 불안이 조금 줄었습니다.',
|
||||
rewardExp: 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'liu-guan-after-fan-siege',
|
||||
title: '왕업과 성문',
|
||||
availableAfterBattleIds: [campBattleIds.fortyFirst],
|
||||
unitIds: ['liu-bei', 'guan-yu'],
|
||||
bondId: 'liu-bei__guan-yu_fan-siege',
|
||||
rewardExp: 46,
|
||||
lines: [
|
||||
'유비: 운장, 성문은 흔들렸지만 형주의 바람이 편치 않소. 승세가 커질수록 마음도 무거워지는구려.',
|
||||
'관우: 형님의 뜻을 높이려면 이 성을 넘어야 합니다. 다만 뒤의 나루까지 제 눈에서 놓지 않겠습니다.',
|
||||
'유비: 그대의 칼이 앞을 열고, 우리의 의가 뒤를 지키게 합시다. 다음 선택이 더 중요해질 것이오.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'share-siege-burden',
|
||||
label: '공성의 짐을 나눈다',
|
||||
response: '유비와 관우는 번성 포위의 책임을 함께 나누며 병사들에게 오만을 경계하라는 군령을 내렸습니다.',
|
||||
rewardExp: 17
|
||||
},
|
||||
{
|
||||
id: 'warn-about-rear',
|
||||
label: '후방 경계를 당부한다',
|
||||
response: '관우는 전선 장수들에게 뒤의 나루를 확인하라 명했고, 유비는 형주 민심을 살피게 했습니다.',
|
||||
rewardExp: 16
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -5717,6 +5815,66 @@ const campVisits: CampVisitDefinition[] = [
|
||||
itemRewards: ['탁주 3']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'fan-siege-wall-works',
|
||||
title: '번성 외성 자재 점검',
|
||||
location: '번성 남문 공성진',
|
||||
availableAfterBattleIds: [campBattleIds.fortyFirst],
|
||||
bondId: 'guan-yu__huang-zhong',
|
||||
description: '관우와 황충이 성벽 앞 공성진을 돌며 사다리, 방패, 궁병 엄호 위치를 다시 정합니다.',
|
||||
lines: [
|
||||
'황충: 성벽 아래에 오래 머무르면 병사들의 눈이 먼저 흔들립니다. 엄호 지점을 더 낮게 잡겠습니다.',
|
||||
'관우: 성문을 두드리는 병사들이 하늘만 보게 두어서는 안 되오. 방패와 화살의 순서를 맞춥시다.',
|
||||
'공성진에는 새 사다리와 큰 방패가 나뉘어 놓였고, 궁병들은 성벽 사각을 다시 익혔습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'reinforce-siege-ladders',
|
||||
label: '사다리를 보강한다',
|
||||
response: '공성 사다리가 보강되어 다음 성벽 압박 준비가 더 단단해졌습니다.',
|
||||
bondExp: 34,
|
||||
itemRewards: ['공성 사다리 1', '상처약 5']
|
||||
},
|
||||
{
|
||||
id: 'set-cover-archers',
|
||||
label: '엄호 궁병을 배치한다',
|
||||
response: '황충의 궁병 배치가 성벽 아래 병사들의 부담을 줄였습니다.',
|
||||
bondExp: 32,
|
||||
gold: 880,
|
||||
itemRewards: ['탁주 3']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'fan-siege-river-watch',
|
||||
title: '강동 정찰선 감시',
|
||||
location: '강릉 동쪽 나루',
|
||||
availableAfterBattleIds: [campBattleIds.fortyFirst],
|
||||
bondId: 'guan-yu__ma-liang',
|
||||
description: '관우와 마량이 강 건너 배의 움직임을 살피며, 번성 포위 중 비워진 후방의 위험을 점검합니다.',
|
||||
lines: [
|
||||
'마량: 성벽을 향한 깃발이 많아질수록 나루의 빈틈도 커집니다. 오늘 본 작은 배가 내일의 큰 소식이 될 수 있습니다.',
|
||||
'관우: 강동이 움직인다면 성문 앞 승리도 반쪽이 되오. 나루마다 신호를 세우시오.',
|
||||
'정찰병들은 밤 신호와 낮 깃발을 새로 맞췄고, 강변 마을에는 낯선 배를 알리는 절차가 전해졌습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'post-river-signals',
|
||||
label: '나루 신호를 세운다',
|
||||
response: '나루마다 신호 순서가 정리되어 강동 정찰선의 움직임을 더 빨리 알 수 있게 되었습니다.',
|
||||
bondExp: 34,
|
||||
itemRewards: ['강동 정찰 기록 1']
|
||||
},
|
||||
{
|
||||
id: 'calm-river-villages',
|
||||
label: '강변 마을을 안심시킨다',
|
||||
response: '마량은 마을 어른들에게 군령을 설명했고, 관우군의 후방 민심이 조금 더 안정되었습니다.',
|
||||
bondExp: 32,
|
||||
gold: 920,
|
||||
itemRewards: ['콩 12']
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -5803,7 +5961,7 @@ export class CampScene extends Phaser.Scene {
|
||||
return;
|
||||
}
|
||||
|
||||
if (battleId === campBattleIds.fortieth) {
|
||||
if (battleId === campBattleIds.fortieth || battleId === campBattleIds.fortyFirst) {
|
||||
this.campaign = ensureCampaignRosterUnits(
|
||||
[
|
||||
...xuzhouRecruitUnits,
|
||||
@@ -5845,7 +6003,8 @@ export class CampScene extends Phaser.Scene {
|
||||
...hanzhongDecisiveBonds,
|
||||
...jingDefenseBonds,
|
||||
...fanCastleBonds,
|
||||
...hanRiverFloodBonds
|
||||
...hanRiverFloodBonds,
|
||||
...fanCastleSiegeBonds
|
||||
]
|
||||
);
|
||||
this.report = this.campaign.firstBattleReport ?? this.report;
|
||||
@@ -6480,6 +6639,9 @@ export class CampScene extends Phaser.Scene {
|
||||
if (this.campaign?.step === 'hanzhong-king-camp') {
|
||||
return '한중왕 즉위 준비 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.fortyFirst) {
|
||||
return '번성 공성전 후 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.fortieth) {
|
||||
return '한수 수공 후 군영';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user