Add Chengdu surrender chapter
This commit is contained in:
@@ -9,6 +9,8 @@ import {
|
||||
caoBreakRecruitUnits,
|
||||
chengduPressureRecruitBonds,
|
||||
chengduPressureRecruitUnits,
|
||||
chengduSurrenderRecruitBonds,
|
||||
chengduSurrenderRecruitUnits,
|
||||
changshaRecruitBonds,
|
||||
changshaRecruitUnits,
|
||||
firstBattleBonds,
|
||||
@@ -325,9 +327,10 @@ const campaignTimelineChapters: CampaignTimelineChapter[] = [
|
||||
'twenty-ninth-battle-luo-outer-wall',
|
||||
'thirtieth-battle-luofeng-ambush',
|
||||
'thirty-first-battle-luo-main-gate',
|
||||
'thirty-second-battle-mianzhu-gate'
|
||||
'thirty-second-battle-mianzhu-gate',
|
||||
'thirty-third-battle-chengdu-surrender'
|
||||
],
|
||||
nextHints: ['형주 방위', '익주 진입', '방통·법정 합류']
|
||||
nextHints: ['형주 방위', '익주 진입', '성도 항복']
|
||||
},
|
||||
{
|
||||
id: 'shu-han',
|
||||
@@ -371,7 +374,8 @@ const campBattleIds = {
|
||||
twentyNinth: 'twenty-ninth-battle-luo-outer-wall',
|
||||
thirtieth: 'thirtieth-battle-luofeng-ambush',
|
||||
thirtyFirst: 'thirty-first-battle-luo-main-gate',
|
||||
thirtySecond: 'thirty-second-battle-mianzhu-gate'
|
||||
thirtySecond: 'thirty-second-battle-mianzhu-gate',
|
||||
thirtyThird: 'thirty-third-battle-chengdu-surrender'
|
||||
} as const;
|
||||
|
||||
const requiredSortieUnitIds = new Set(['liu-bei']);
|
||||
@@ -730,6 +734,18 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
|
||||
{ unitId: 'huang-zhong', reason: '관문 궁병과 고지 수비를 안정적으로 견제합니다.' }
|
||||
],
|
||||
note: '면죽관 압박전은 열일곱 명 중 여섯 명만 출전합니다. 엄안이 새로 후보에 들어오며, 이엄을 설득하려면 익주 출신 장수와 책사를 함께 고르는 편이 좋습니다.'
|
||||
},
|
||||
'thirty-third-battle-chengdu-surrender': {
|
||||
maxUnits: 6,
|
||||
recommended: [
|
||||
{ unitId: 'liu-bei', reason: '성도 항복 권고와 익주 확보 명분의 중심입니다.' },
|
||||
{ unitId: 'li-yan', reason: '이엄의 첫 출전입니다. 성도 수비장들에게 유비군의 군율을 증언할 수 있습니다.' },
|
||||
{ unitId: 'zhuge-liang', reason: '항복 조건과 익주 수습책을 동시에 설계하는 핵심 책사입니다.' },
|
||||
{ unitId: 'fa-zheng', reason: '유장 진영의 속사정과 황권의 신중한 판단을 읽는 역할입니다.' },
|
||||
{ unitId: 'yan-yan', reason: '엄안의 항복 선례가 황권과 익주 장수들의 마음을 흔듭니다.' },
|
||||
{ unitId: 'wu-yi', reason: '성도 외곽 길과 창고 위치를 아는 현지 장수입니다.' }
|
||||
],
|
||||
note: '성도 항복 권고전은 열여덟 명 중 여섯 명만 출전합니다. 새로 합류한 이엄을 데려가면 설득과 생존 목표가 맞물리고, 책사 비중을 늘리면 항복 명분이 강해집니다.'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3406,6 +3422,87 @@ const campDialogues: CampDialogue[] = [
|
||||
rewardExp: 12
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'liu-huang-after-chengdu',
|
||||
title: '항복과 보전',
|
||||
availableAfterBattleIds: [campBattleIds.thirtyThird],
|
||||
unitIds: ['liu-bei', 'huang-quan'],
|
||||
bondId: 'liu-bei__huang-quan',
|
||||
rewardExp: 38,
|
||||
lines: [
|
||||
'황권: 패배한 장수에게 가장 두려운 것은 처벌보다, 백성이 새 질서 아래에서 버려지는 일입니다.',
|
||||
'유비: 그 두려움을 알기에 그대를 맞이하오. 익주의 사람을 익주의 길로 안정시키는 일에 힘을 빌려 주시오.',
|
||||
'황권: 그렇다면 저는 성도 안의 창고와 관직 명단을 정리해, 항복이 혼란으로 번지지 않게 하겠습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'entrust-chengdu-order',
|
||||
label: '성도 질서를 맡긴다',
|
||||
response: '황권은 항복한 관료와 병사들의 이름을 정리하며, 유비군의 명령이 보복이 아니라 질서임을 보였습니다.',
|
||||
rewardExp: 14
|
||||
},
|
||||
{
|
||||
id: 'promise-yizhou-protection',
|
||||
label: '익주 보전을 약속한다',
|
||||
response: '유비의 약속이 군영 안에 전해지자 황권은 처음으로 긴 숨을 내쉬고 고개를 숙였습니다.',
|
||||
rewardExp: 13
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'zhuge-huang-after-chengdu',
|
||||
title: '성도 수습책',
|
||||
availableAfterBattleIds: [campBattleIds.thirtyThird],
|
||||
unitIds: ['zhuge-liang', 'huang-quan'],
|
||||
bondId: 'zhuge-liang__huang-quan',
|
||||
rewardExp: 36,
|
||||
lines: [
|
||||
'제갈량: 성도는 얻었으나 아직 다스린 것은 아닙니다. 관문보다 장부가 더 오래 남는 법이지요.',
|
||||
'황권: 익주의 장부에는 사람의 두려움도 함께 적혀 있습니다. 급히 고치면 반발만 커질 것입니다.',
|
||||
'제갈량: 그래서 그대의 신중함이 필요합니다. 새 나라는 칼보다 제도 위에 오래 서야 합니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'sort-yizhou-ledgers',
|
||||
label: '익주 장부를 정리한다',
|
||||
response: '제갈량과 황권은 군량, 관직, 백성 명부를 나누어 보며 다음 장의 내정 과제를 분명히 했습니다.',
|
||||
rewardExp: 13
|
||||
},
|
||||
{
|
||||
id: 'draft-shu-foundation-policy',
|
||||
label: '건국 준비안을 쓴다',
|
||||
response: '두 사람은 아직 나라 이름을 말하지 않았지만, 이미 나라가 버틸 기둥을 하나씩 적기 시작했습니다.',
|
||||
rewardExp: 13
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'fa-huang-after-chengdu',
|
||||
title: '익주 책사들의 균형',
|
||||
availableAfterBattleIds: [campBattleIds.thirtyThird],
|
||||
unitIds: ['fa-zheng', 'huang-quan'],
|
||||
bondId: 'fa-zheng__huang-quan',
|
||||
rewardExp: 35,
|
||||
lines: [
|
||||
'법정: 성도가 열렸으니 이제 빠르게 마음을 잡아야 합니다. 머뭇거리면 오래된 의심이 다시 살아납니다.',
|
||||
'황권: 빠름이 항상 안정은 아닙니다. 익주 사람은 강제로 바뀌는 것을 오래 기억합니다.',
|
||||
'법정: 좋습니다. 저는 흔들 곳을 짚고, 그대는 무너지지 않게 받치십시오.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'divide-policy-tempo',
|
||||
label: '정책 속도를 나눈다',
|
||||
response: '법정은 급히 처리할 군사 문제를, 황권은 천천히 설득할 내정 문제를 맡아 균형을 잡았습니다.',
|
||||
rewardExp: 13
|
||||
},
|
||||
{
|
||||
id: 'appease-yizhou-officers',
|
||||
label: '익주 장수를 달랜다',
|
||||
response: '두 책사는 항복 장수들의 자리를 함부로 흔들지 않는 대신, 군율 위반은 단호히 다루기로 했습니다.',
|
||||
rewardExp: 12
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -4455,6 +4552,66 @@ const campVisits: CampVisitDefinition[] = [
|
||||
itemRewards: ['성도 장수 명단 1']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'chengdu-storehouse-order',
|
||||
title: '성도 창고 정리',
|
||||
location: '성도 남창',
|
||||
availableAfterBattleIds: [campBattleIds.thirtyThird],
|
||||
bondId: 'liu-bei__huang-quan',
|
||||
description: '유비와 황권이 성도 창고를 열어 항복 병사와 백성의 배급 질서를 바로잡습니다.',
|
||||
lines: [
|
||||
'황권: 성도 창고는 익주의 배를 붙잡는 곳입니다. 여기서 불공평하다는 말이 나오면 항복은 금세 원망이 됩니다.',
|
||||
'유비: 그렇다면 전리품보다 장부를 먼저 세우시오. 우리 병사도 그 질서를 따르게 하겠소.',
|
||||
'창고 문 앞에는 칼보다 붓이 먼저 놓였고, 성도 백성은 새 군령이 약탈이 아님을 확인하기 시작했습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'share-chengdu-rations',
|
||||
label: '배급 기준을 공개한다',
|
||||
response: '배급 기준이 성도 남창에 붙자 항복 병사와 백성의 불안이 조금씩 가라앉았습니다.',
|
||||
bondExp: 30,
|
||||
itemRewards: ['콩 8', '상처약 4']
|
||||
},
|
||||
{
|
||||
id: 'preserve-chengdu-ledger',
|
||||
label: '창고 장부를 보전한다',
|
||||
response: '황권은 기존 장부를 태우지 않고 그대로 보전해, 유비군이 익주를 빼앗기만 한 것이 아님을 보였습니다.',
|
||||
bondExp: 28,
|
||||
gold: 480,
|
||||
itemRewards: ['성도 창고 장부 1']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'shu-foundation-council',
|
||||
title: '촉한 건국 준비 회의',
|
||||
location: '성도 임시 관청',
|
||||
availableAfterBattleIds: [campBattleIds.thirtyThird],
|
||||
bondId: 'zhuge-liang__huang-quan',
|
||||
description: '제갈량과 황권이 익주 수습 뒤 유비군이 국가의 틀로 나아가기 위한 첫 행정 과제를 정합니다.',
|
||||
lines: [
|
||||
'제갈량: 형주와 익주가 이어졌으니 이제 군영의 규칙만으로는 부족합니다. 법, 창고, 장수의 자리를 세워야 합니다.',
|
||||
'황권: 익주 사람은 새 이름보다 오늘의 질서를 먼저 봅니다. 세금을 낮추고 병사의 약탈을 막는 것이 첫걸음입니다.',
|
||||
'임시 관청의 등불 아래에서 다음 장의 목적은 전장 하나가 아니라 나라의 틀로 넓어졌습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'draft-yizhou-stabilization',
|
||||
label: '익주 안정책을 쓴다',
|
||||
response: '제갈량과 황권은 세금, 군량, 항복 장수의 배치를 나누어 적으며 촉한 건국의 첫 초안을 만들었습니다.',
|
||||
bondExp: 30,
|
||||
itemRewards: ['익주 안정책 1']
|
||||
},
|
||||
{
|
||||
id: 'prepare-hanzhong-road',
|
||||
label: '한중 길을 검토한다',
|
||||
response: '아직 이른 이야기였지만, 북쪽 관문과 한중으로 향하는 길이 지도 가장자리에 조용히 표시되었습니다.',
|
||||
bondExp: 28,
|
||||
gold: 500,
|
||||
itemRewards: ['한중 길 초안 1']
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -4541,6 +4698,45 @@ export class CampScene extends Phaser.Scene {
|
||||
return;
|
||||
}
|
||||
|
||||
if (battleId === campBattleIds.thirtyThird) {
|
||||
this.campaign = ensureCampaignRosterUnits(
|
||||
[
|
||||
...xuzhouRecruitUnits,
|
||||
...caoBreakRecruitUnits,
|
||||
...liuBiaoRecruitUnits,
|
||||
...zhugeRecruitUnits,
|
||||
...jingzhouRecruitUnits,
|
||||
...guiyangRecruitUnits,
|
||||
...wulingRecruitUnits,
|
||||
...changshaRecruitUnits,
|
||||
...yizhouRecruitUnits,
|
||||
...fuPassRecruitUnits,
|
||||
...luoCastleRecruitUnits,
|
||||
...luoCastleProperRecruitUnits,
|
||||
...chengduPressureRecruitUnits,
|
||||
...chengduSurrenderRecruitUnits
|
||||
],
|
||||
[
|
||||
...xuzhouRecruitBonds,
|
||||
...caoBreakRecruitBonds,
|
||||
...liuBiaoRecruitBonds,
|
||||
...zhugeRecruitBonds,
|
||||
...jingzhouRecruitBonds,
|
||||
...guiyangRecruitBonds,
|
||||
...wulingRecruitBonds,
|
||||
...changshaRecruitBonds,
|
||||
...yizhouRecruitBonds,
|
||||
...fuPassRecruitBonds,
|
||||
...luoCastleRecruitBonds,
|
||||
...luoCastleProperRecruitBonds,
|
||||
...chengduPressureRecruitBonds,
|
||||
...chengduSurrenderRecruitBonds
|
||||
]
|
||||
);
|
||||
this.report = this.campaign.firstBattleReport ?? this.report;
|
||||
return;
|
||||
}
|
||||
|
||||
if (battleId === campBattleIds.thirtySecond) {
|
||||
this.campaign = ensureCampaignRosterUnits(
|
||||
[
|
||||
@@ -4854,6 +5050,9 @@ export class CampScene extends Phaser.Scene {
|
||||
|
||||
private currentCampTitle() {
|
||||
const battleId = this.currentCampBattleId();
|
||||
if (battleId === campBattleIds.thirtyThird) {
|
||||
return '성도 항복 후 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.thirtySecond) {
|
||||
return '면죽관 압박전 후 군영';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user