Refine Chencang siege battle flow

This commit is contained in:
2026-07-05 00:57:52 +09:00
parent 3d68681074
commit 8b18313238
3 changed files with 119 additions and 12 deletions

View File

@@ -8649,6 +8649,81 @@ export const fiftyNinthBattleScenario: BattleScenarioDefinition = {
'강유는 길을 알고, 왕평은 진영 표식을 보며, 위연은 돌파를 원합니다. 여기에 황권과 마량, 법정의 장부와 계책을 어떻게 넣을지에 따라 공성전의 무게가 달라집니다.',
'학소의 수비를 흔들고 왕쌍의 추격을 차단하십시오. 공성 진영과 군량 수레 길을 함께 지키면 다음 북방 계산으로 이어갈 수 있습니다.'
],
tacticalGuide: {
summary: '진창 성벽을 무리하게 깨기보다 공성 진영과 군량 수레 길을 지키며 학소를 압박하고, 왕쌍의 추격 기병을 먼저 끊습니다.',
route: '후방 마을 -> 군량 수레 길 -> 공성 진영 -> 진창 성문 -> 왕쌍 추격 차단',
focus:
'위연은 성문 압박에 쓰되 깊이 밀어 넣지 말고, 강유와 왕평으로 길과 진영 표식을 붙잡으십시오. 마대/조운은 왕쌍을 늦추고 황권/법정은 장기 공성의 시간을 계산합니다.',
roles: ['제갈량: 공성 총지휘', '강유: 진창 길 안내', '위연: 성문 압박', '왕평: 공성 진영 유지', '마대/조운: 왕쌍 추격 차단', '황권/법정: 군량과 성벽 계책'],
events: {
'village-approach': {
title: '후방 마을 안정',
lines: [
'황권: 후방 마을을 잃으면 수레가 멈춥니다. 성문보다 먼저 병사의 밥길을 붙잡아야 합니다.',
'마량: 백성의 길을 막지 않으면 공성 진영도 오래 버틸 수 있습니다.'
]
},
'vanguard-broken': {
title: '성문 압박 시작',
lines: [
'위연: 성문 앞 진영이 흔들립니다. 더 밀 수 있습니다.',
'제갈량: 성문만 보지 마십시오. 왕쌍이 움직이면 깊은 전진이 곧 퇴로가 됩니다.'
]
},
'cavalry-approach': {
title: '왕쌍 기병 접근',
lines: [
'강유: 서쪽 길에서 기병 먼지가 오릅니다. 왕쌍이 보급로를 찌르려 합니다.',
'마대: 추격 기병은 넓은 길로 끌어내 끊겠습니다. 성벽 앞 병력은 흩어지지 마십시오.'
]
},
'enemy-posture': {
title: '학소의 성벽',
lines: [
'강유: 학소는 성을 버릴 장수가 아닙니다. 무너뜨리기보다 흔들어 다음 계산을 남겨야 합니다.',
'법정: 성벽의 빈틈은 힘이 아니라 시간에서 납니다. 보급로가 살아 있어야 계책도 살아납니다.'
]
},
'ally-danger': {
title: '공성 진영 흔들림',
lines: [
'왕평: 진영 표식이 길게 늘어졌습니다. 지금은 앞으로 나가는 칸보다 돌아올 칸을 먼저 봐야 합니다.',
'제갈량: 오늘의 승리는 성문을 부수는 데만 있지 않습니다. 병사와 장부가 함께 돌아와야 다음 북벌이 있습니다.'
]
}
}
},
sortie: {
sortieLimit: 7,
requiredUnits: ['zhuge-liang'],
recommendedUnits: [
{ unitId: 'zhuge-liang', role: 'support', reason: '진창 공성전의 총지휘관입니다. 성벽 압박과 보급 철수 시점을 함께 계산해야 합니다.' },
{ unitId: 'jiang-wei', role: 'front', reason: '진창 길과 천수 방면 지형을 잇는 새 길잡이입니다. 성문보다 보급로를 먼저 읽습니다.' },
{ unitId: 'wang-ping', role: 'front', reason: '공성 진영과 후방 표식을 안정시키는 장수입니다. 오래 끄는 성채전에서 진영 붕괴를 막습니다.' },
{ unitId: 'wei-yan', role: 'front', reason: '성문 압박을 맡길 돌파 장수입니다. 다만 무리한 전진을 보급 판단과 함께 제어해야 합니다.' },
{ unitId: 'ma-dai', role: 'flank', reason: '왕쌍의 기병 추격과 우회를 늦추는 기병 담당입니다. 성벽보다 보급로 측면을 먼저 지킵니다.' },
{ unitId: 'huang-quan', role: 'support', reason: '진창 공성전의 군량 제한을 계산하는 보급 담당입니다. 장기전의 위험을 줄입니다.' },
{ unitId: 'fa-zheng', role: 'support', reason: '학소의 성벽 대응과 위군 군리의 빈틈을 읽는 책략 담당입니다.' }
],
recommendedClasses: [
{ label: '공성 총지휘', classKeys: ['strategist'], reason: '제갈량이 성문 압박, 보급, 철수 시점을 한 번에 조율합니다.' },
{ label: '성문 압박', classKeys: ['infantry', 'spearman'], reason: '위연과 강유가 앞길을 열되 성벽 아래에서 고립되지 않게 버팁니다.' },
{ label: '추격 차단', classKeys: ['cavalry'], reason: '왕쌍의 기병이 군량 수레 길을 찌르기 전에 측면에서 늦춥니다.' },
{ label: '진영 유지', classKeys: ['infantry', 'archer'], reason: '왕평이 공성 진영과 후방 표식을 붙들어 전열이 길어지는 것을 막습니다.' },
{ label: '군량 계책', classKeys: ['strategist'], reason: '황권과 법정이 장기 공성의 시간을 계산하고 무리한 돌파를 제어합니다.' }
],
deploymentSlots: [
{ x: 44, y: 82, role: 'support', unitId: 'zhuge-liang', label: '공성 지휘' },
{ x: 48, y: 80, role: 'front', unitId: 'jiang-wei', label: '진창 길' },
{ x: 50, y: 78, role: 'front', unitId: 'wang-ping', label: '진영 표식' },
{ x: 52, y: 82, role: 'front', unitId: 'wei-yan', label: '성문 압박' },
{ x: 56, y: 86, role: 'flank', unitId: 'ma-dai', label: '왕쌍 차단' },
{ x: 44, y: 84, role: 'support', unitId: 'huang-quan', label: '군량 계산' },
{ x: 46, y: 78, role: 'support', unitId: 'fa-zheng', label: '성벽 계책' }
],
note:
'진창 공성전은 성문을 치는 장수만 고르면 전열이 길어집니다. 강유와 왕평으로 길을 잡고, 위연의 돌파와 마대의 추격 차단, 황권·법정의 보급 판단을 7명 안에 담으십시오.'
},
map: fiftyNinthBattleMap,
units: fiftyNinthBattleUnits,
bonds: fiftyNinthBattleBonds,
@@ -8683,28 +8758,36 @@ export const fiftyNinthBattleScenario: BattleScenarioDefinition = {
kind: 'secure-terrain',
label: '진창 성문 압박',
rewardGold: 6200,
terrain: 'fort'
terrain: 'fort',
targetTile: { x: 101, y: 48, radius: 6 },
threatRadius: 0
},
{
id: 'siege-camps',
kind: 'secure-terrain',
label: '공성 진영 유지',
rewardGold: 5940,
terrain: 'camp'
terrain: 'camp',
targetTile: { x: 64, y: 68, radius: 7 },
threatRadius: 0
},
{
id: 'grain-road',
kind: 'secure-terrain',
label: '군량 수레 길 확보',
rewardGold: 5820,
terrain: 'road'
terrain: 'road',
targetTile: { x: 56, y: 76, radius: 6 },
threatRadius: 0
},
{
id: 'rear-villages',
kind: 'secure-terrain',
label: '후방 마을 안정',
rewardGold: 5480,
terrain: 'village'
terrain: 'village',
targetTile: { x: 20, y: 85, radius: 6 },
threatRadius: 0
},
{
id: 'quick',
@@ -8716,6 +8799,14 @@ export const fiftyNinthBattleScenario: BattleScenarioDefinition = {
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'zhuge-liang' }],
itemRewards: ['콩 68', '상처약 52', '탁주 26', '진창 공성 장부 1', '왕쌍 추격 기록 1'],
campaignReward: {
supplies: ['콩 68', '상처약 52', '탁주 26'],
equipment: ['진창 공성 장부 1'],
reputation: ['왕쌍 추격 기록 1'],
unlockLabel: '무도·음평 확보전',
note:
'진창 성벽은 무리하게 깨지 않았지만, 공성 진영과 군량 수레 길을 지키며 학소의 수비를 압박했습니다. 왕쌍의 추격을 끊은 경험은 다음 무도·음평 확보전의 넓은 산길 계산으로 이어집니다.'
},
victoryPages: fiftyNinthBattleVictoryPages,
nextCampScene: 'CampScene'
};

View File

@@ -4068,7 +4068,7 @@ export const fiftyNinthBattleIntroPages: StoryPage[] = [
chapter: '진창 성채',
background: 'story-chencang-siege',
speaker: '제갈량',
text: '기산에서 병사를 살렸기에 다시 북쪽을 볼 수 있습니다. 그러나 이번 길은 넓은 들이 아니라 진창의 굳은 성채입니다. 성문을 무리하게 깨기보다 공성 진영, 군량 수레, 퇴로를 함께 보아야 합니다.'
text: '기산에서 병사를 살렸기에 다시 북쪽을 볼 수 있습니다. 그러나 이번 길은 넓은 들이 아니라 진창의 굳은 성채입니다. 성문을 깨는 장수, 공성 진영을 붙드는 장수, 군량 수레 길을 지킬 장수를 나누어야 합니다.'
},
{
id: 'fifty-ninth-hao-zhao-wall',
@@ -4076,7 +4076,7 @@ export const fiftyNinthBattleIntroPages: StoryPage[] = [
chapter: '학소의 성벽',
background: 'story-chencang-siege',
speaker: '강유',
text: '진창의 수비장 학소는 성을 버리지 않을 사람입니다. 제가 앞길을 살피겠습니다만, 성벽만 바라보면 왕쌍의 기병이 뒤를 물 것입니다. 조운, 마대, 왕평 중 누구를 앞으로 세우느냐가 이번 편성의 무게입니다.'
text: '진창의 수비장 학소는 성을 버리지 않을 사람입니다. 위연 장군이 성문을 누르는 동안 제가 앞길을 겠습니다. 다만 성벽만 바라보면 왕쌍의 기병이 군량 수레 길을 물 것입니다.'
},
{
id: 'fifty-ninth-supply-limit',
@@ -4084,7 +4084,7 @@ export const fiftyNinthBattleIntroPages: StoryPage[] = [
chapter: '군량의 시간',
background: 'story-chencang-siege',
speaker: '황권',
text: '성채 하나에 오래 묶이면 북벌 전체가 굶습니다. 법정의 계책, 마량의 문서, 황권의 장부가 함께 있어야 공성전이 단순한 힘겨루기로 흐르지 않습니다. 진창을 압박하되 돌아갈 수 있는 시간을 남기십시오.'
text: '성채 하나에 오래 묶이면 북벌 전체가 굶습니다. 법정의 계책과 제 장부가 있어야 물러날 날을 놓치지 않습니다. 진창을 압박하되, 공성 진영과 후방 마을을 먼저 안정시키십시오.'
}
];
@@ -4094,7 +4094,7 @@ export const fiftyNinthBattleVictoryPages: StoryPage[] = [
bgm: 'militia-theme',
chapter: '진창 압박',
background: 'story-chencang-siege',
text: '촉한군은 진창의 외곽 진영과 보급로를 흔들었지만, 학소의 성벽은 끝내 쉽게 열리지 않았습니다. 승리라 부르기에는 조심스럽고 패배라 덮기에는 얻은 길이 분명한 전투였습니다.'
text: '촉한군은 진창의 외곽 진영과 보급로를 흔들었지만, 학소의 성벽은 끝내 쉽게 열리지 않았습니다. 성문 앞에서 무리한 손실을 내지 않고 공성 진영과 수레 길을 보존한 것이 다음 북방 계산의 바탕이 되었습니다.'
},
{
id: 'fifty-ninth-victory-wang-shuang-cut',
@@ -4102,7 +4102,7 @@ export const fiftyNinthBattleVictoryPages: StoryPage[] = [
chapter: '왕쌍 추격 차단',
background: 'story-chencang-siege',
speaker: '조운',
text: '왕쌍의 기병은 공성 진영 뒤를 물려 했으나, 강유의 길 안내와 마대의 우회, 왕평의 진영 표식이 먼저 움직였습니다. 오래 버티는 성을 상대로도 물러날 때를 정하는 장수가 필요합니다.'
text: '왕쌍의 기병은 군량 수레 길을 물려 했으나, 강유의 길 안내와 마대의 우회, 왕평의 진영 표식이 먼저 움직였습니다. 오래 버티는 성을 상대로도 물러날 때를 정하는 장수가 필요합니다.'
},
{
id: 'fifty-ninth-next-northern-plan',

View File

@@ -1940,14 +1940,30 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
excludedUnitIds: ['liu-bei'],
recommended: [
{ unitId: 'zhuge-liang', reason: '진창 공성전의 총지휘관입니다. 성벽 압박과 보급 철수 시점을 함께 계산해야 합니다.' },
{ unitId: 'jiang-wei', reason: '진창 길과 천수 방면 지형을 잇는 새 길잡이입니다. 강유의 역할이 전투 전반으로 넓어집니다.' },
{ unitId: 'jiang-wei', reason: '진창 길과 천수 방면 지형을 잇는 새 길잡이입니다. 성문보다 보급로를 먼저 읽습니다.' },
{ unitId: 'wang-ping', reason: '공성 진영과 후방 표식을 안정시키는 장수입니다. 오래 끄는 성채전에서 진영 붕괴를 막습니다.' },
{ unitId: 'ma-dai', reason: '왕쌍의 기병 추격과 우회를 늦추는 기병 담당입니다. 조운을 빼는 선택도 여기서 고민하게 됩니다.' },
{ unitId: 'wei-yan', reason: '성문 압박을 맡길 돌파 장수입니다. 다만 무리한 전진을 보급 판단과 함께 제어해야 합니다.' },
{ unitId: 'ma-dai', reason: '왕쌍의 기병 추격과 우회를 늦추는 기병 담당입니다. 성벽보다 보급로 측면을 먼저 지킵니다.' },
{ unitId: 'huang-quan', reason: '진창 공성전의 군량 제한을 계산하는 보급 담당입니다. 장기전의 위험을 줄입니다.' },
{ unitId: 'fa-zheng', reason: '학소의 성벽 대응과 위군 군리의 빈틈을 읽는 책략 담당입니다.' }
],
note: '진창 공성전은 강유가 계속 중요하지만, 위연의 돌파와 조운·마대의 기동, 왕평의 진영 유지, 황권·법정의 보급 판단을 7명 안에서 갈라야 합니다.'
recommendedClasses: [
{ label: '공성 총지휘', classKeys: ['strategist'], reason: '제갈량이 성문 압박, 보급, 철수 시점을 한 번에 조율합니다.' },
{ label: '성문 압박', classKeys: ['infantry', 'spearman'], reason: '위연과 강유가 앞길을 열되 성벽 아래에서 고립되지 않게 버팁니다.' },
{ label: '추격 차단', classKeys: ['cavalry'], reason: '왕쌍의 기병이 군량 수레 길을 찌르기 전에 측면에서 늦춥니다.' },
{ label: '진영 유지', classKeys: ['infantry', 'archer'], reason: '왕평이 공성 진영과 후방 표식을 붙들어 전열이 길어지는 것을 막습니다.' },
{ label: '군량 계책', classKeys: ['strategist'], reason: '황권과 법정이 장기 공성의 시간을 계산하고 무리한 돌파를 제어합니다.' }
],
deploymentSlots: [
{ x: 44, y: 82, role: 'support', unitId: 'zhuge-liang', label: '공성 지휘' },
{ x: 48, y: 80, role: 'front', unitId: 'jiang-wei', label: '진창 길' },
{ x: 50, y: 78, role: 'front', unitId: 'wang-ping', label: '진영 표식' },
{ x: 52, y: 82, role: 'front', unitId: 'wei-yan', label: '성문 압박' },
{ x: 56, y: 86, role: 'flank', unitId: 'ma-dai', label: '왕쌍 차단' },
{ x: 44, y: 84, role: 'support', unitId: 'huang-quan', label: '군량 계산' },
{ x: 46, y: 78, role: 'support', unitId: 'fa-zheng', label: '성벽 계책' }
],
note: '진창 공성전은 성문을 치는 장수만 고르면 전열이 길어집니다. 강유와 왕평으로 길을 잡고, 위연의 돌파와 마대의 추격 차단, 황권·법정의 보급 판단을 7명 안에 담으십시오.'
},
'sixtieth-battle-wudu-yinping': {
maxUnits: 7,