diff --git a/src/game/data/battles.ts b/src/game/data/battles.ts index 14358ef..3b4f891 100644 --- a/src/game/data/battles.ts +++ b/src/game/data/battles.ts @@ -6202,6 +6202,76 @@ export const fortyThirdBattleScenario: BattleScenarioDefinition = { '부사인과 미방의 병사들은 아직 완전히 돌아서지 않았습니다. 성문과 창고를 지키면 후방의 신뢰를 조금이라도 붙들 수 있습니다.', '마량, 미축, 황권, 왕평 같은 후방 수습 담당을 데려가면 장부와 지형, 성문 병사들의 흔들림을 읽기 좋습니다.' ], + tacticalGuide: { + summary: + '공안 성문 변고는 강동 본대가 칼보다 먼저 의심과 군령서를 밀어 넣는 전투입니다. 여몽은 성문 바깥에서 압박하고, 육손의 설객은 부사인과 미방의 두려움을 흔드니 마량·미축·황권으로 장부와 군령을 붙잡고 조운·왕평으로 나루 복병을 끊어야 합니다.', + route: '서남 창고 장부 확인 → 나루 복병 차단 → 공안 서문 접근로 확보 → 부사인·미방 친위대 분리 → 여몽 본대 저지', + focus: + '이 전투는 여몽만 쓰러뜨리는 싸움이 아니라 공안 서문 접근로를 다시 잠그고 후방장의 배신 명분을 줄이는 싸움입니다. 성문 목표를 확보하면 다음 맥성 고립전에서 형주가 왜 급격히 무너지는지 더 선명하게 이어집니다.', + roles: [ + '유비: 흔들리는 공안 병사들에게 형주의 명분을 보여 주는 중심', + '관우: 번성 전선과 후방 성문을 함께 묶는 핵심 장수', + '마량: 공안 수비대 민심과 강동 설객의 말투를 읽는 현지 참모', + '미축: 강릉 창고 장부와 미방의 침묵을 추적하는 보급 축', + '황권: 부사인과 미방의 군령서를 신중히 판정해 내분을 줄이는 참모', + '왕평: 성문과 강변 숲길의 지형을 읽어 복병을 막는 수비 카드', + '조운: 나루와 성문 사이를 오가며 백의 복병을 차단하는 기동 카드' + ], + events: { + 'village-approach': { + title: '공안 성문', + lines: [ + '마량: 성문 병사들이 칼보다 명령서를 더 두려워합니다. 부사인 쪽 군령을 먼저 가려야 합니다.', + '미축: 창고 장부와 성문 출입 기록이 맞지 않습니다. 이 문을 붙들지 못하면 후방 전체가 비게 됩니다.' + ] + }, + 'enemy-posture': { + 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: 'ma-liang', role: 'support', reason: '수비대 민심과 강동 설객을 읽습니다.' }, + { unitId: 'mi-zhu', role: 'support', reason: '창고 장부와 미방의 흔들림을 추적합니다.' }, + { unitId: 'huang-quan', role: 'support', reason: '부사인 군령을 판정해 내분을 줄입니다.' }, + { unitId: 'wang-ping', role: 'flank', reason: '성문과 숲길 복병을 읽어 막습니다.' }, + { unitId: 'zhao-yun', role: 'flank', reason: '나루와 성문 사이 백의 복병을 차단합니다.' } + ], + recommendedClasses: [ + { label: '형주 명분', classKeys: ['lord'], reason: '유비가 있어야 공안 병사들이 완전히 돌아서지 않습니다.' }, + { label: '성문 전열', classKeys: ['spearman', 'infantry'], reason: '관우가 외성 성문을 붙들어 여몽 본대를 막습니다.' }, + { label: '군령 판정', classKeys: ['strategist'], reason: '마량과 황권이 설객, 군령서, 수비대 동요를 가려냅니다.' }, + { label: '장부 수습', classKeys: ['lord', 'strategist'], reason: '미축이 창고와 미방의 침묵을 전투 목표로 연결합니다.' }, + { label: '복병 차단', classKeys: ['cavalry', 'infantry'], reason: '조운과 왕평이 나루, 숲길, 성문 옆길을 빠르게 막습니다.' } + ], + deploymentSlots: [ + { x: 8, y: 61, role: 'reserve', unitId: 'liu-bei', label: '형주 명분' }, + { x: 15, y: 56, role: 'front', unitId: 'guan-yu', label: '성문 전열' }, + { x: 17, y: 61, role: 'support', unitId: 'ma-liang', label: '민심 판정' }, + { x: 11, y: 61, role: 'support', unitId: 'mi-zhu', label: '창고 장부' }, + { x: 26, y: 62, role: 'support', unitId: 'huang-quan', label: '군령 판정' }, + { x: 25, y: 52, role: 'flank', unitId: 'wang-ping', label: '숲길 경계' }, + { x: 18, y: 58, role: 'flank', unitId: 'zhao-yun', label: '나루 차단' } + ], + note: + '공안 성문 변고는 여몽 본대를 막는 동시에 성문과 장부를 다시 붙드는 전투입니다. 마량·황권으로 군령의 진위를 읽고, 미축으로 창고 기록을 확인하며, 조운·왕평으로 강변 복병을 끊으십시오.' + }, map: fortyThirdBattleMap, units: fortyThirdBattleUnits, bonds: fortyThirdBattleBonds, @@ -6234,9 +6304,11 @@ export const fortyThirdBattleScenario: BattleScenarioDefinition = { { id: 'gongan-gate', kind: 'secure-terrain', - label: '공안 성문 확보', + label: '공안 서문 접근로 확보', rewardGold: 2820, - terrain: 'fort' + terrain: 'fort', + targetTile: { x: 42, y: 65, radius: 8 }, + threatRadius: 0 }, { id: 'quick', @@ -6251,6 +6323,13 @@ export const fortyThirdBattleScenario: BattleScenarioDefinition = { { kind: 'unit-defeated', unitId: 'guan-yu' } ], itemRewards: ['콩 42', '상처약 32', '탁주 13', '공안 성문 기록 1', '부사인 군령서 1'], + campaignReward: { + supplies: ['콩 42', '상처약 32', '탁주 13'], + equipment: ['공안 성문 기록 1'], + reputation: ['부사인 군령서 1'], + unlockLabel: '맥성 고립전', + note: '공안 성문은 잠시 붙들었지만 부사인과 미방의 군령은 이미 흔들리고 있습니다. 다음 군영에서는 관우의 전선이 맥성 쪽으로 고립되는 흐름을 준비해야 합니다.' + }, victoryPages: fortyThirdBattleVictoryPages, nextCampScene: 'CampScene' }; diff --git a/src/game/data/scenario.ts b/src/game/data/scenario.ts index a6253fd..0de05b9 100644 --- a/src/game/data/scenario.ts +++ b/src/game/data/scenario.ts @@ -3100,7 +3100,7 @@ export const fortyThirdBattleIntroPages: StoryPage[] = [ chapter: '공안의 성문', background: 'story-jingzhou-crisis', speaker: '미축', - text: '강릉 창고 장부를 대조하니 공안으로 보낸 군량이 사라진 흔적이 있습니다. 성문을 지키는 병사들은 명령을 기다린다 하면서도 강동 배를 그냥 들이고 있습니다.' + text: '강릉 창고 장부를 대조하니 공안으로 보낸 군량과 성문 출입 기록이 맞지 않습니다. 병사들은 명령을 기다린다 하면서도 강동 배를 그냥 들이고 있습니다.' }, { id: 'forty-third-fu-shiren-wavers', @@ -3108,7 +3108,7 @@ export const fortyThirdBattleIntroPages: StoryPage[] = [ chapter: '흔들리는 수비장', background: 'story-jingzhou-crisis', speaker: '마량', - text: '부사인은 관우 장군의 엄한 군령을 두려워하고, 미방은 강동의 말에 마음이 흔들립니다. 이 싸움은 적을 베는 일보다 성문 안의 믿음을 붙드는 일이 더 어렵습니다.' + text: '부사인은 관우 장군의 엄한 군령을 두려워하고, 미방은 강동의 말에 마음이 흔들립니다. 이 싸움은 성문 안의 믿음을 붙들지 못하면 이겨도 후방이 비는 싸움입니다.' }, { id: 'forty-third-lu-meng-infiltration', @@ -3116,7 +3116,7 @@ export const fortyThirdBattleIntroPages: StoryPage[] = [ chapter: '강동의 본대', background: 'story-jingzhou-crisis', speaker: '제갈량', - text: '여몽은 더는 작은 정찰선만 보내지 않을 것입니다. 흰 옷의 상인이 길을 열고, 육손의 글이 의심을 누그러뜨린 뒤, 본대가 공안 성문을 향해 움직일 것입니다.' + text: '여몽은 더는 작은 정찰선만 보내지 않을 것입니다. 흰 옷의 상인이 길을 열고, 육손의 글이 의심을 누그러뜨린 뒤, 본대가 성문과 나루를 동시에 압박할 것입니다.' }, { id: 'forty-third-sortie', @@ -3125,7 +3125,7 @@ export const fortyThirdBattleIntroPages: StoryPage[] = [ background: 'story-jingzhou-crisis', speaker: '관우', portrait: 'guanYu', - text: '번성 앞 깃발을 거둘 수 없다면, 후방의 성문을 먼저 다시 잠가야 하오. 공안 성문을 붙들고 부사인의 병사들을 안정시켜 형주가 한순간에 무너지지 않게 하시오.' + text: '번성 앞 깃발을 거둘 수 없다면, 후방의 성문을 먼저 다시 잠가야 하오. 성문을 붙들고 부사인의 군령을 가려 형주가 한순간에 무너지지 않게 하시오.' } ]; @@ -3135,7 +3135,7 @@ export const fortyThirdBattleVictoryPages: StoryPage[] = [ bgm: 'militia-theme', chapter: '잠긴 성문', background: 'story-jingzhou-crisis', - text: '공안 성문은 다시 잠겼고, 강동의 선봉은 물러났습니다. 그러나 부사인의 얼굴에는 안도보다 두려움이 더 짙게 남았습니다.' + text: '공안 성문은 다시 잠겼고, 강동의 선봉은 물러났습니다. 그러나 부사인의 얼굴에는 안도보다 두려움이 더 짙었고, 성 안의 말은 이미 여러 갈래로 갈라졌습니다.' }, { id: 'forty-third-mi-fang-silence', @@ -3143,7 +3143,7 @@ export const fortyThirdBattleVictoryPages: StoryPage[] = [ chapter: '말 없는 장부', background: 'story-jingzhou-crisis', speaker: '미축', - text: '미방은 끝내 분명한 대답을 하지 않았습니다. 창고 장부는 맞춰 놓았으나, 사람의 마음은 장부처럼 줄을 맞추기 어렵습니다.' + text: '미방은 끝내 분명한 대답을 하지 않았습니다. 창고 장부는 맞춰 놓았으나, 군령서와 사람의 마음은 장부처럼 줄을 맞추기 어렵습니다.' }, { id: 'forty-third-next-shadow', @@ -3151,7 +3151,7 @@ export const fortyThirdBattleVictoryPages: StoryPage[] = [ chapter: '맥성으로 드리우는 그림자', background: 'story-jingzhou-crisis', speaker: '제갈량', - text: '성문 하나를 지켰지만 형주는 이미 바깥과 안쪽에서 함께 갈라지고 있습니다. 다음 장에서는 관우의 번성 전선이 고립으로 바뀌는 순간을 다루어야 합니다.' + text: '성문 하나를 지켰지만 형주는 이미 바깥과 안쪽에서 함께 갈라지고 있습니다. 다음에는 관우의 번성 전선이 맥성으로 밀려 고립되는 길을 막아야 합니다.' } ]; diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index 38452f0..34eccac 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -1454,15 +1454,31 @@ const sortieRulesByBattleId: Partial