From d27cd7c2bffdabb0a14f3952f3c5d6229eefdcdd Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sat, 4 Jul 2026 21:18:03 +0900 Subject: [PATCH] Refine Jing defense battle flow --- src/game/data/battles.ts | 81 +++++++++++++++++++++++++++++++++++- src/game/data/scenario.ts | 10 ++--- src/game/scenes/CampScene.ts | 20 ++++++++- 3 files changed, 103 insertions(+), 8 deletions(-) diff --git a/src/game/data/battles.ts b/src/game/data/battles.ts index f395ae1..0b8ed38 100644 --- a/src/game/data/battles.ts +++ b/src/game/data/battles.ts @@ -5492,6 +5492,76 @@ export const thirtyEighthBattleScenario: 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: 'zhang-fei', role: 'front', reason: '관우의 전열 압박을 보조하며 강한 정면 대응을 맡습니다.' }, + { unitId: 'ma-liang', role: 'support', reason: '형주 민심과 봉화대 확보를 읽는 현지 책사입니다.' }, + { unitId: 'mi-zhu', role: 'support', reason: '강릉과 나루 사이 보급을 안정시키는 군량관입니다.' }, + { unitId: 'zhuge-liang', role: 'support', reason: '촉한 건국 직후 형주 전선의 정치적 위험을 해석합니다.' }, + { unitId: 'zhao-yun', role: 'flank', reason: '강변 척후와 기병 대응을 안정적으로 맡습니다.' } + ], + recommendedClasses: [ + { label: '형주 명분', classKeys: ['lord'], reason: '유비가 전장에 있어야 형주 방위 명분이 흔들리지 않습니다.' }, + { label: '북문 전열', classKeys: ['spearman', 'infantry'], reason: '관우와 장비가 북쪽 성채 압박을 받아 냅니다.' }, + { label: '강변 기동', classKeys: ['cavalry'], reason: '조운이 나루와 강변 척후를 빠르게 끊어 줍니다.' }, + { label: '민심 판단', classKeys: ['strategist'], reason: '마량과 제갈량이 봉화대·민심·정치적 위험을 읽습니다.' }, + { label: '보급 안정', classKeys: ['infantry', 'strategist'], reason: '미축이 강릉과 나루 사이 보급선을 지켜 줍니다.' } + ], + deploymentSlots: [ + { x: 5, y: 51, role: 'reserve', unitId: 'liu-bei', label: '형주 명분' }, + { x: 9, y: 46, role: 'front', unitId: 'guan-yu', label: '북문 전열' }, + { x: 6, y: 53, role: 'front', unitId: 'zhang-fei', label: '남안 압박' }, + { x: 10, y: 51, role: 'support', unitId: 'ma-liang', label: '봉화 판단' }, + { x: 8, y: 52, role: 'support', unitId: 'mi-zhu', label: '보급 안정' }, + { x: 8, y: 48, role: 'support', unitId: 'zhuge-liang', label: '양면 해석' }, + { x: 11, y: 49, role: 'flank', unitId: 'zhao-yun', label: '강변 기동' } + ], + note: + '형주 방위 전초전은 촉한 건국 직후 형주가 위와 오 사이에 놓이는 첫 시험입니다. 관우를 전열의 중심에 세우고, 마량·미축·제갈량의 지원과 조운의 강변 기동으로 봉화대와 나루를 안정시키십시오.' + }, map: thirtyEighthBattleMap, units: thirtyEighthBattleUnits, bonds: thirtyEighthBattleBonds, @@ -5526,7 +5596,9 @@ export const thirtyEighthBattleScenario: BattleScenarioDefinition = { kind: 'secure-terrain', label: '형주 봉화대 확보', rewardGold: 2180, - terrain: 'village' + terrain: 'village', + targetTile: { x: 70, y: 40, radius: 5 }, + threatRadius: 0 }, { id: 'quick', @@ -5541,6 +5613,13 @@ export const thirtyEighthBattleScenario: BattleScenarioDefinition = { { kind: 'unit-defeated', unitId: 'guan-yu' } ], itemRewards: ['콩 32', '상처약 24', '탁주 10', '형주 봉화도 1', '번성 전선 준비'], + campaignReward: { + supplies: ['콩 32', '상처약 24', '탁주 10'], + equipment: ['형주 봉화도 1'], + reputation: ['번성 전선 준비'], + unlockLabel: '번성 외곽 압박전', + note: '형주 봉화대와 강변 마을을 안정시키고 여몽 정찰대를 물리쳤습니다. 다음 군영에서는 번성 외곽 압박을 준비합니다.' + }, victoryPages: thirtyEighthBattleVictoryPages, nextCampScene: 'CampScene' }; diff --git a/src/game/data/scenario.ts b/src/game/data/scenario.ts index 77a04a2..a880cc5 100644 --- a/src/game/data/scenario.ts +++ b/src/game/data/scenario.ts @@ -2781,7 +2781,7 @@ export const thirtyEighthBattleIntroPages: StoryPage[] = [ chapter: '형주의 먹구름', background: 'story-jingzhou-crisis', speaker: '제갈량', - text: '촉한의 이름이 세워지자 형주의 무게가 더 커졌습니다. 관우가 지키는 강릉과 남군은 조조와 손권이 동시에 바라보는 칼끝이 되었습니다.' + text: '촉한의 이름이 세워지자 형주의 무게가 더 커졌습니다. 강릉의 봉화가 흔들리고 나루의 배가 낯선 깃발을 달기 시작했습니다.' }, { id: 'thirty-eighth-guan-yu-front', @@ -2790,7 +2790,7 @@ export const thirtyEighthBattleIntroPages: StoryPage[] = [ background: 'story-jingzhou-crisis', speaker: '관우', portrait: 'guanYu', - text: '형주는 형님의 등을 지키는 문입니다. 위의 정찰대가 북쪽에서 움직이고, 오의 배가 강가를 맴돈다면 먼저 봉화대와 나루를 묶어야 합니다.' + text: '형주는 형님의 등을 지키는 문입니다. 북쪽 길은 위의 척후가 보고, 강가 나루는 오의 정찰선이 맴돕니다. 봉화대를 먼저 세우고 두 길을 끊겠습니다.' }, { id: 'thirty-eighth-two-fronts', @@ -2798,7 +2798,7 @@ export const thirtyEighthBattleIntroPages: StoryPage[] = [ chapter: '강과 성 사이', background: 'story-jingzhou-crisis', speaker: '마량', - text: '강변 마을은 오의 말에 흔들리고, 북쪽 성채는 위의 군세를 두려워합니다. 백성이 흔들리면 형주는 성벽보다 먼저 무너집니다.' + text: '중앙 강변 마을이 흔들리면 봉화도 늦게 오르고, 봉화가 늦으면 성채는 구원을 믿지 못합니다. 마을과 봉화대를 함께 잡아야 합니다.' }, { id: 'thirty-eighth-sortie', @@ -2807,7 +2807,7 @@ export const thirtyEighthBattleIntroPages: StoryPage[] = [ background: 'story-jingzhou-crisis', speaker: '유비', portrait: 'liuBei', - text: '촉한의 이름을 세운 지금, 형주를 잃는다면 그 이름도 흔들릴 것이오. 관우는 봉화대를 지키고, 모두 강과 성 사이의 불안을 잠재우시오.' + text: '관우는 북문을 지키고, 조운은 나루의 척후를 끊으시오. 마량과 미축은 봉화대와 보급을 살펴 형주의 백성이 어느 깃발을 믿어야 하는지 보여 주시오.' } ]; @@ -2817,7 +2817,7 @@ export const thirtyEighthBattleVictoryPages: StoryPage[] = [ bgm: 'militia-theme', chapter: '봉화가 다시 오르다', background: 'story-jingzhou-crisis', - text: '형주의 봉화대가 다시 불을 밝혔습니다. 위의 정찰대는 물러났고 오의 배는 강 건너로 물러났지만, 두 시선이 동시에 형주를 향하고 있다는 사실은 분명해졌습니다.' + text: '형주의 봉화대가 다시 불을 밝혔습니다. 중앙 강변 마을은 안정을 되찾았고, 여몽의 정찰선은 강 건너로 물러났지만 두 시선이 동시에 형주를 향하고 있다는 사실은 분명해졌습니다.' }, { id: 'thirty-eighth-guan-yu-resolve', diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index ccf4789..d3acf09 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -1307,12 +1307,28 @@ const sortieRulesByBattleId: Partial