diff --git a/src/game/data/battles.ts b/src/game/data/battles.ts index 5e2ff88..28f7148 100644 --- a/src/game/data/battles.ts +++ b/src/game/data/battles.ts @@ -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' }; diff --git a/src/game/data/scenario.ts b/src/game/data/scenario.ts index 1a3e691..e0cd517 100644 --- a/src/game/data/scenario.ts +++ b/src/game/data/scenario.ts @@ -2973,7 +2973,7 @@ export const fortyFirstBattleIntroPages: StoryPage[] = [ chapter: '성벽 앞의 밤', background: 'story-fan-castle-flood', speaker: '제갈량', - text: '한수의 물길은 조조군의 칠군을 무너뜨렸지만, 번성의 성벽은 아직 닫혀 있습니다. 조인은 성문을 걸어 잠그고, 방덕은 마지막 돌격을 준비합니다.' + text: '한수의 물길은 조조군의 칠군을 무너뜨렸지만, 번성의 성벽은 아직 닫혀 있습니다. 조인은 성문 보루와 수문 고지에 병력을 모으고, 방덕은 마지막 돌격을 준비합니다.' }, { id: 'forty-first-siege-plan', @@ -2981,7 +2981,7 @@ export const fortyFirstBattleIntroPages: StoryPage[] = [ chapter: '포위의 순서', background: 'story-fan-castle-flood', speaker: '마량', - text: '성벽을 바로 두드리면 병사만 지칩니다. 외성 보루와 수문, 강가의 낮은 마을을 먼저 붙잡아야 성 안의 사기가 흔들립니다.' + text: '성벽을 바로 두드리면 병사만 지칩니다. 성문 보루를 먼저 잡고 황충으로 성벽 궁병을 눌러야, 조인의 방어선이 성 안쪽으로 밀립니다.' }, { id: 'forty-first-wu-shadow', @@ -2990,7 +2990,7 @@ export const fortyFirstBattleIntroPages: StoryPage[] = [ background: 'story-fan-castle-flood', speaker: '관우', portrait: 'guanYu', - text: '북쪽 성문만 보아서는 안 되오. 강동의 배가 멀리서 움직이고 있으니, 번성을 치는 동안 뒤의 나루도 비워 두지 마시오.' + text: '북쪽 성문만 보아서는 안 되오. 강동의 배가 멀리서 움직이고 있으니, 조운은 나루를 살피고 마초는 방덕의 결사 기병을 맞받아치시오.' }, { id: 'forty-first-sortie', @@ -2999,7 +2999,7 @@ export const fortyFirstBattleIntroPages: StoryPage[] = [ background: 'story-fan-castle-flood', speaker: '유비', portrait: 'liuBei', - text: '관우가 성문을 압박하고, 남은 무장들은 보루와 나루를 나누어 맡아라. 이번 싸움은 성을 치면서도 뒤의 그림자를 놓치지 않는 싸움이다.' + text: '관우는 성문 압박을 맡고, 황충은 성벽 사거리를 누르시오. 마량과 법정은 조인의 버티기와 강동의 움직임을 함께 읽어, 성을 치면서도 뒤의 그림자를 놓치지 마시오.' } ]; @@ -3009,7 +3009,7 @@ export const fortyFirstBattleVictoryPages: StoryPage[] = [ bgm: 'militia-theme', chapter: '성문이 흔들리다', background: 'story-fan-castle-flood', - text: '번성의 외성 보루가 무너지고 조인의 방어선은 성 안쪽으로 밀려났습니다. 방덕의 결사대도 더는 성문 밖에서 버티지 못했습니다.' + text: '번성의 성문 보루와 수문 고지가 무너지자 조인의 방어선은 성 안쪽으로 밀려났습니다. 방덕의 결사대도 더는 성문 밖에서 버티지 못했습니다.' }, { id: 'forty-first-pang-de-end', @@ -3026,7 +3026,7 @@ export const fortyFirstBattleVictoryPages: StoryPage[] = [ chapter: '형주의 불안', background: 'story-fan-castle-flood', speaker: '제갈량', - text: '번성의 성벽은 흔들렸으나, 강 건너 오의 움직임은 더 가까워졌습니다. 다음 장에서는 포위의 승세와 형주 후방의 균열을 함께 다루어야 합니다.' + text: '번성의 성벽은 흔들렸으나, 강 건너 오의 움직임은 더 가까워졌습니다. 강릉 나루와 창고를 살피지 않으면 포위의 승세가 형주 후방의 균열로 돌아올 것입니다.' } ]; diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index b3b1925..7ea1ad8 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -1402,7 +1402,23 @@ const sortieRulesByBattleId: Partial