Add Jieting sortie and Jiang Wei recruitment flow
This commit is contained in:
@@ -27,6 +27,8 @@ import {
|
||||
hanzhongMainRecruitUnits,
|
||||
hanzhongScoutRecruitBonds,
|
||||
hanzhongScoutRecruitUnits,
|
||||
jiangWeiRecruitBonds,
|
||||
jiangWeiRecruitUnits,
|
||||
mengHuoFourthCaptureBonds,
|
||||
mengHuoFifthCaptureBonds,
|
||||
mengHuoSixthCaptureBonds,
|
||||
@@ -51,6 +53,7 @@ import {
|
||||
nanzhongRecoveryBonds,
|
||||
northernFirstBattleBonds,
|
||||
northernSecondBattleBonds,
|
||||
northernThirdBattleBonds,
|
||||
wulingRecruitBonds,
|
||||
wulingRecruitUnits,
|
||||
xuzhouRecruitBonds,
|
||||
@@ -433,8 +436,12 @@ const campaignTimelineChapters: CampaignTimelineChapter[] = [
|
||||
title: '북벌 준비',
|
||||
period: '출사표를 향해',
|
||||
description: '남중 평정으로 뒤를 안정시킨 뒤, 한중 창고와 출전 무장 편성을 정비해 첫 북벌을 준비하는 장입니다.',
|
||||
battleIds: ['fifty-fifth-battle-northern-qishan-road', 'fifty-sixth-battle-tianshui-advance'],
|
||||
nextHints: ['한중 창고 정비', '출전 무장 재편', '기산 출진로', '천수·가정 방면']
|
||||
battleIds: [
|
||||
'fifty-fifth-battle-northern-qishan-road',
|
||||
'fifty-sixth-battle-tianshui-advance',
|
||||
'fifty-seventh-battle-jieting-crisis'
|
||||
],
|
||||
nextHints: ['한중 창고 정비', '출전 무장 재편', '기산 출진로', '천수·가정 방면', '강유 합류']
|
||||
}
|
||||
];
|
||||
|
||||
@@ -494,7 +501,8 @@ const campBattleIds = {
|
||||
fiftyThird: 'fifty-third-battle-meng-huo-sixth-capture',
|
||||
fiftyFourth: 'fifty-fourth-battle-meng-huo-final-capture',
|
||||
fiftyFifth: 'fifty-fifth-battle-northern-qishan-road',
|
||||
fiftySixth: 'fifty-sixth-battle-tianshui-advance'
|
||||
fiftySixth: 'fifty-sixth-battle-tianshui-advance',
|
||||
fiftySeventh: 'fifty-seventh-battle-jieting-crisis'
|
||||
} as const;
|
||||
|
||||
const defaultRequiredSortieUnitIds = ['liu-bei'];
|
||||
@@ -1183,6 +1191,21 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
|
||||
{ unitId: 'ma-dai', reason: '서량 기병의 감각으로 우회 기병과 물목 차단에 대응하기 좋습니다.' }
|
||||
],
|
||||
note: '천수 진군로는 길을 뚫는 전투이면서 강유의 재능을 처음 확인하는 전장입니다. 제갈량을 중심으로 지형, 기동, 보급, 설득 역할을 7명 안에 담으십시오.'
|
||||
},
|
||||
'fifty-seventh-battle-jieting-crisis': {
|
||||
maxUnits: 7,
|
||||
requiredUnitIds: ['zhuge-liang'],
|
||||
excludedUnitIds: ['liu-bei'],
|
||||
recommended: [
|
||||
{ unitId: 'zhuge-liang', reason: '가정 배치 위기의 총지휘관입니다. 고지와 물길 판단을 끝까지 조율해야 합니다.' },
|
||||
{ unitId: 'wang-ping', reason: '가정의 물길과 고지 배치를 읽는 핵심 장수입니다. 왕평 생존 목표도 직접 걸려 있습니다.' },
|
||||
{ unitId: 'ma-liang', reason: '마속의 고집과 강유 접촉을 말로 풀어 다음 전선의 명분을 지킵니다.' },
|
||||
{ unitId: 'huang-quan', reason: '물길과 수레 길 보급을 장부로 붙잡아 장기전 붕괴를 막습니다.' },
|
||||
{ unitId: 'fa-zheng', reason: '장합의 차단선과 위군 군리의 빈틈을 읽는 책략 담당입니다.' },
|
||||
{ unitId: 'zhao-yun', reason: '위군 기병의 우회와 빠른 압박을 끊고 퇴로를 회수합니다.' },
|
||||
{ unitId: 'ma-dai', reason: '좁은 고개에서 기병을 지나치게 깊이 보내지 않고 되돌리는 역할에 어울립니다.' }
|
||||
],
|
||||
note: '가정 전투는 공격력이 높은 장수만으로는 버티기 어렵습니다. 제갈량과 왕평을 중심으로 물길, 수레 길, 설득, 기동 회수 역할을 7명 안에 담으십시오.'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -5989,6 +6012,87 @@ const campDialogues: CampDialogue[] = [
|
||||
rewardExp: 24
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'northern-third-zhuge-wang-after-jieting',
|
||||
title: '가정의 물길',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySeventh],
|
||||
unitIds: ['zhuge-liang', 'wang-ping'],
|
||||
bondId: 'zhuge-liang__wang-ping_northern-third',
|
||||
rewardExp: 90,
|
||||
lines: [
|
||||
'왕평: 승상, 고지를 얻고도 물길을 잃는다면 병사는 하루 만에 마음을 잃습니다.',
|
||||
'제갈량: 오늘 그 차이를 보았습니다. 지도 위의 높은 점보다 병사가 버틸 낮은 길이 더 무거울 때가 있습니다.',
|
||||
'왕평: 다음에는 진영을 세우기 전에 물, 수레, 퇴로를 먼저 세겠습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'write-jieting-water-rule',
|
||||
label: '물길 배치 원칙을 적는다',
|
||||
response: '제갈량은 왕평의 말을 군령으로 정리했고, 다음 북벌의 진영 후보에는 물길 표시가 먼저 붙게 되었습니다.',
|
||||
rewardExp: 31
|
||||
},
|
||||
{
|
||||
id: 'train-ridge-retreat',
|
||||
label: '고지 퇴로 훈련을 한다',
|
||||
response: '왕평은 고지에서 내려오는 길을 반복해 걷게 했고, 병사들은 높이 오르는 일보다 내려와 버티는 일을 먼저 배웠습니다.',
|
||||
rewardExp: 29
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'northern-third-ma-jiangwei-oath',
|
||||
title: '강유의 첫 밤',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySeventh],
|
||||
unitIds: ['ma-liang', 'jiang-wei'],
|
||||
bondId: 'ma-liang__jiang-wei',
|
||||
rewardExp: 82,
|
||||
lines: [
|
||||
'강유: 제 이름이 촉한의 장부에 적혔지만, 아직 병사들의 눈에는 어제의 적일 것입니다.',
|
||||
'마량: 그래서 글보다 행동이 먼저일 때가 있습니다. 하지만 첫 행동이 흔들리지 않게 말이 길을 잡아 줄 수 있습니다.',
|
||||
'강유: 천수의 길과 사람을 알고 있습니다. 제가 아는 것을 숨기지 않겠습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'write-jiangwei-first-duty',
|
||||
label: '강유의 첫 임무를 적는다',
|
||||
response: '마량은 강유의 첫 임무를 천수 길 안내와 병사 안심으로 나누어 적었고, 새 장수의 자리가 조금 선명해졌습니다.',
|
||||
rewardExp: 27
|
||||
},
|
||||
{
|
||||
id: 'share-tianshui-roads',
|
||||
label: '천수 길을 함께 그린다',
|
||||
response: '강유는 천수 사람들이 실제로 쓰는 낮은 길을 표시했고, 마량은 그 길이 군대의 길이 되지 않도록 주의문을 붙였습니다.',
|
||||
rewardExp: 26
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'northern-third-zhao-madai-recovery',
|
||||
title: '되돌아오는 말발굽',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySeventh],
|
||||
unitIds: ['zhao-yun', 'ma-dai'],
|
||||
bondId: 'zhao-yun__ma-dai_northern-third',
|
||||
rewardExp: 80,
|
||||
lines: [
|
||||
'조운: 가정에서는 빠른 말보다 돌아오는 말이 더 귀했습니다.',
|
||||
'마대: 좁은 고개에서는 이기는 길과 살아 돌아오는 길이 다르지 않았습니다.',
|
||||
'조운: 다음 출전에서도 기병은 먼저 멈출 자리를 알아야 합니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'set-return-posts',
|
||||
label: '귀환 표식을 세운다',
|
||||
response: '조운과 마대는 고개마다 돌아올 표식을 세웠고, 기병대는 돌파 뒤 흩어지지 않는 훈련을 익혔습니다.',
|
||||
rewardExp: 26
|
||||
},
|
||||
{
|
||||
id: 'pair-scout-and-reserve',
|
||||
label: '정찰과 예비대를 묶는다',
|
||||
response: '마대가 정찰을 내보내면 조운이 예비대를 가까이 붙이는 방식으로, 기병 운용의 무리한 빈틈이 줄었습니다.',
|
||||
rewardExp: 25
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -8595,6 +8699,66 @@ const campVisits: CampVisitDefinition[] = [
|
||||
itemRewards: ['탁주 6']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'northern-third-jieting-map-room',
|
||||
title: '가정 지도실',
|
||||
location: '가정 하곡 지도막',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySeventh],
|
||||
bondId: 'wang-ping__jiang-wei',
|
||||
description: '왕평과 강유가 가정, 천수, 한중을 잇는 실제 길과 물길을 하나의 북방 지형책으로 다시 묶습니다.',
|
||||
lines: [
|
||||
'왕평: 이 고개는 지도보다 물길이 먼저입니다. 높은 곳보다 낮은 길이 더 오래 버팁니다.',
|
||||
'강유: 천수 사람들은 이 길을 군대보다 먼저 알고 있었습니다. 제가 알고 있던 길을 모두 내놓겠습니다.',
|
||||
'지도막에는 가정의 실패를 반복하지 않기 위한 낮은 길, 물길, 수레 회전 지점이 새로 그려졌습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'bind-jieting-tianshui-map',
|
||||
label: '가정과 천수 지도를 묶는다',
|
||||
response: '왕평은 고개마다 물길을 표시했고, 강유는 천수 사람들이 쓰는 길을 덧그려 북방 지형책을 보강했습니다.',
|
||||
bondExp: 66,
|
||||
itemRewards: ['북방 지형책 1']
|
||||
},
|
||||
{
|
||||
id: 'mark-low-road-supply',
|
||||
label: '낮은 보급로를 표시한다',
|
||||
response: '강유는 위군이 잘 보지 못하는 낮은 길을 알려 주었고, 왕평은 그 길을 군대가 지나도 마을을 해치지 않도록 나누었습니다.',
|
||||
bondExp: 64,
|
||||
gold: 2360,
|
||||
itemRewards: ['콩 24', '상처약 16']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'northern-third-jiangwei-drill',
|
||||
title: '강유 편성 훈련',
|
||||
location: '가정 후방 훈련장',
|
||||
availableAfterBattleIds: [campBattleIds.fiftySeventh],
|
||||
bondId: 'zhuge-liang__jiang-wei',
|
||||
description: '제갈량이 새로 합류한 강유를 다음 출전 선택지 안에 넣기 위해, 기존 장수들과 임무 구분을 정리합니다.',
|
||||
lines: [
|
||||
'제갈량: 새 장수가 들어오면 강해지는 만큼 편성은 더 어려워집니다. 누가 앞서고 누가 남는지 더 분명해야 합니다.',
|
||||
'강유: 저는 천수의 길을 알지만 촉한의 호흡은 아직 배워야 합니다.',
|
||||
'훈련장에는 강유의 기병 운용, 왕평의 지형 판단, 조운과 마대의 회수 임무가 나란히 적혔습니다.'
|
||||
],
|
||||
choices: [
|
||||
{
|
||||
id: 'set-jiangwei-sortie-role',
|
||||
label: '강유의 출전 역할을 정한다',
|
||||
response: '제갈량은 강유를 기동 정찰과 천수 길 안내에 먼저 배치했고, 병사들은 새 장수의 자리를 조금씩 받아들였습니다.',
|
||||
bondExp: 66,
|
||||
itemRewards: ['탁주 7']
|
||||
},
|
||||
{
|
||||
id: 'compare-cavalry-roles',
|
||||
label: '기병 역할을 비교한다',
|
||||
response: '조운은 회수, 마대는 우회, 강유는 천수 길 안내로 역할이 나뉘었고, 다음 출전 선택은 더 흥미로운 고민이 되었습니다.',
|
||||
bondExp: 64,
|
||||
gold: 2280,
|
||||
itemRewards: ['기병 편성표 1']
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -8699,7 +8863,8 @@ export class CampScene extends Phaser.Scene {
|
||||
battleId === campBattleIds.fiftyThird ||
|
||||
battleId === campBattleIds.fiftyFourth ||
|
||||
battleId === campBattleIds.fiftyFifth ||
|
||||
battleId === campBattleIds.fiftySixth
|
||||
battleId === campBattleIds.fiftySixth ||
|
||||
battleId === campBattleIds.fiftySeventh
|
||||
) {
|
||||
this.campaign = ensureCampaignRosterUnits(
|
||||
[
|
||||
@@ -8719,7 +8884,8 @@ export class CampScene extends Phaser.Scene {
|
||||
...chengduSurrenderRecruitUnits,
|
||||
...hanzhongOpeningRecruitUnits,
|
||||
...hanzhongScoutRecruitUnits,
|
||||
...hanzhongMainRecruitUnits
|
||||
...hanzhongMainRecruitUnits,
|
||||
...(battleId === campBattleIds.fiftySeventh ? jiangWeiRecruitUnits : [])
|
||||
],
|
||||
[
|
||||
...xuzhouRecruitBonds,
|
||||
@@ -8758,7 +8924,9 @@ export class CampScene extends Phaser.Scene {
|
||||
...mengHuoSixthCaptureBonds,
|
||||
...mengHuoFinalCaptureBonds,
|
||||
...northernFirstBattleBonds,
|
||||
...northernSecondBattleBonds
|
||||
...northernSecondBattleBonds,
|
||||
...(battleId === campBattleIds.fiftySeventh ? northernThirdBattleBonds : []),
|
||||
...(battleId === campBattleIds.fiftySeventh ? jiangWeiRecruitBonds : [])
|
||||
]
|
||||
);
|
||||
this.report = this.campaign.firstBattleReport ?? this.report;
|
||||
@@ -9399,6 +9567,9 @@ export class CampScene extends Phaser.Scene {
|
||||
if (this.campaign?.step === 'northern-campaign-prep-camp') {
|
||||
return '북벌 준비 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.fiftySeventh) {
|
||||
return '가정 배치 위기 후 군영';
|
||||
}
|
||||
if (battleId === campBattleIds.fiftySixth) {
|
||||
return '천수 진군로 후 군영';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user