Refine Fan Castle siege battle flow

This commit is contained in:
2026-07-04 21:46:57 +09:00
parent 64b2162933
commit 69b9624e38
3 changed files with 104 additions and 9 deletions

View File

@@ -5918,6 +5918,76 @@ export const fortyFirstBattleScenario: BattleScenarioDefinition = {
'관우는 성문 압박의 핵심입니다. 관우가 무너지면 번성 포위의 명분과 형주 전선의 사기가 함께 꺾입니다.',
'방덕의 결사 기병은 정면 돌파를 노리고, 강동 정찰대는 뒤의 나루를 살핍니다. 성벽 압박과 후방 경계를 함께 맡을 무장을 고르십시오.'
],
tacticalGuide: {
summary:
'번성 공성전은 조인의 성문을 바로 두드리는 전투가 아니라, 외성 보루와 수문 고지를 끊어 성 안의 방어선을 좁히는 전투입니다. 관우가 성문 앞 압박을 유지하는 동안 황충은 성벽 궁병을 누르고, 조운·마초는 방덕의 결사 돌격과 강동 나루 정찰을 동시에 차단해야 합니다.',
route: '서남 포위진 → 강동 나루 척후 정리 → 성문 외성 보루 압박 → 방덕 결사 기병 차단 → 조인 성문 방어선 격파',
focus:
'번성만 바라보면 다음 형주 후방 위기가 갑작스럽게 느껴집니다. 외성 보루를 밀면서도 남서 나루의 강동 척후를 놓치지 말고, 마량과 법정으로 성문과 후방의 위험을 함께 읽게 해야 포위전의 다음 흐름이 자연스럽습니다.',
roles: [
'유비: 번성 포위의 명분과 패배 조건의 중심',
'관우: 성문 압박과 생존 목표의 핵심 전열',
'황충: 성벽 궁병과 외성 보루를 누르는 원거리 축',
'마량: 형주 후방과 강동 정찰을 읽는 현지 참모',
'법정: 조인의 수성전과 방덕 돌격을 읽는 책략 축',
'조운: 성문과 나루 사이 빈틈을 메우는 기동 축',
'마초: 방덕 결사 기병을 맞받아치는 돌파 억제 카드'
],
events: {
'village-approach': {
title: '강가 나루의 그림자',
lines: [
'마량: 성문만 보면 뒤의 나루가 비어 보입니다. 강동의 척후가 이미 물길을 살피고 있습니다.',
'조운: 나루를 한 번 눌러 두면 성문 앞 병사들도 등 뒤를 걱정하지 않을 것입니다.'
]
},
'cavalry-approach': {
title: '방덕 결사대',
lines: [
'마초: 방덕의 기병은 물러설 뜻이 없습니다. 성문 앞으로 튀어나오기 전에 제가 길목을 끊겠습니다.',
'관우: 굳센 적일수록 정면에서 받아 내야 한다. 전열을 흐트러뜨리지 마라.'
]
},
'leader-wavering': {
title: '성문 방어선',
lines: [
'조인: 외성 보루까지 밀렸다고 성문을 열 수는 없다. 남은 병력을 모두 성문으로 모아라.',
'관우: 보루와 수문을 잃은 성은 오래 버티지 못한다. 병사들에게 오만 대신 경계를 명하라.'
]
}
}
},
sortie: {
sortieLimit: 7,
requiredUnits: ['liu-bei', 'guan-yu'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'reserve', reason: '번성 포위의 큰 명분과 패배 조건의 중심입니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '성문을 압박하는 핵심 장수이며 생존 목표입니다.' },
{ unitId: 'huang-zhong', role: 'support', reason: '성벽 궁병과 외성 보루를 안정적으로 견제합니다.' },
{ unitId: 'ma-liang', role: 'support', reason: '형주 민심과 강동의 움직임을 함께 읽는 현지 참모입니다.' },
{ unitId: 'fa-zheng', role: 'support', reason: '조인의 수성전과 방덕의 결사 돌격을 읽는 책략 축입니다.' },
{ unitId: 'zhao-yun', role: 'flank', reason: '성문과 나루 사이를 빠르게 보강하는 기동 축입니다.' },
{ unitId: 'ma-chao', role: 'flank', reason: '방덕 기병과 조조군 북로 기병을 맞받아치는 강한 기병 대응 카드입니다.' }
],
recommendedClasses: [
{ label: '포위 명분', classKeys: ['lord'], reason: '유비가 있어야 번성 포위와 항복 처리의 명분이 유지됩니다.' },
{ label: '성문 전열', classKeys: ['spearman', 'infantry'], reason: '관우가 외성 보루와 성문 앞 압박을 붙잡습니다.' },
{ label: '성벽 사거리', classKeys: ['archer'], reason: '황충이 성벽 궁병과 보루 위 적을 먼저 누릅니다.' },
{ label: '수성전 판단', classKeys: ['strategist'], reason: '법정과 마량이 조인의 버티기와 강동 나루의 징후를 읽습니다.' },
{ label: '기병 차단', classKeys: ['cavalry'], reason: '조운과 마초가 방덕 결사 기병과 남서 나루 척후를 묶습니다.' }
],
deploymentSlots: [
{ x: 5, y: 58, role: 'reserve', unitId: 'liu-bei', label: '포위 명분' },
{ x: 12, y: 53, role: 'front', unitId: 'guan-yu', label: '성문 압박' },
{ x: 18, y: 54, role: 'support', unitId: 'huang-zhong', label: '성벽 견제' },
{ x: 14, y: 58, role: 'support', unitId: 'ma-liang', label: '형주 후방' },
{ x: 19, y: 58, role: 'support', unitId: 'fa-zheng', label: '수성전 판단' },
{ x: 15, y: 56, role: 'flank', unitId: 'zhao-yun', label: '나루 보강' },
{ x: 23, y: 53, role: 'flank', unitId: 'ma-chao', label: '방덕 봉쇄' }
],
note:
'번성 공성전은 성문 압박과 후방 나루 경계를 함께 보는 전투입니다. 관우·황충으로 외성 보루를 밀고, 조운·마초로 방덕과 강동 척후의 길목을 막으며, 마량·법정으로 다음 형주 위기의 징후를 읽으십시오.'
},
map: fortyFirstBattleMap,
units: fortyFirstBattleUnits,
bonds: fortyFirstBattleBonds,
@@ -5950,9 +6020,11 @@ export const fortyFirstBattleScenario: BattleScenarioDefinition = {
{
id: 'outer-wall',
kind: 'secure-terrain',
label: '번성 성 보루 확보',
label: '번성 성 보루 확보',
rewardGold: 2560,
terrain: 'fort'
terrain: 'fort',
targetTile: { x: 78, y: 21, radius: 8 },
threatRadius: 0
},
{
id: 'quick',
@@ -5967,6 +6039,13 @@ export const fortyFirstBattleScenario: BattleScenarioDefinition = {
{ kind: 'unit-defeated', unitId: 'guan-yu' }
],
itemRewards: ['콩 38', '상처약 28', '탁주 12', '번성 성문도 1', '방덕 결사문 1'],
campaignReward: {
supplies: ['콩 38', '상처약 28', '탁주 12'],
equipment: ['번성 성문도 1'],
reputation: ['방덕 결사문 1'],
unlockLabel: '강릉 나루 경계전',
note: '번성 성문 보루와 방어선을 밀어냈지만, 강동 정찰대가 형주 후방을 살피기 시작했습니다. 다음 군영에서는 강릉 나루와 창고 경계를 준비합니다.'
},
victoryPages: fortyFirstBattleVictoryPages,
nextCampScene: 'CampScene'
};