From 6d81c3f83c03b95ac17b9b52a33d19280023b3d1 Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sat, 4 Jul 2026 17:35:04 +0900 Subject: [PATCH] Refine Wolong visit battle flow --- src/game/data/battles.ts | 107 +++++++++++++++++++++++++++++++--- src/game/data/campaignFlow.ts | 8 +-- src/game/data/scenario.ts | 17 +++--- src/game/scenes/CampScene.ts | 14 ++--- 4 files changed, 119 insertions(+), 27 deletions(-) diff --git a/src/game/data/battles.ts b/src/game/data/battles.ts index 1bf9b7b..a48b2b4 100644 --- a/src/game/data/battles.ts +++ b/src/game/data/battles.ts @@ -2263,16 +2263,89 @@ export const seventeenthBattleScenario: BattleScenarioDefinition = { victoryConditionLabel: '채순 격파', defeatConditionLabel: '유비 퇴각', openingObjectiveLines: [ - '형주에서 모은 와룡의 단서를 따라 유비군은 융중으로 향합니다. 그러나 산길에는 채씨 가병이 먼저 길목을 잡고 있습니다.', - '숲과 언덕, 좁은 물길이 많은 전장입니다. 조운의 기동력과 책사들의 후원을 살려 산길의 궁병과 감시병을 끊어 내십시오.', - '채순을 격파하고 융중 초가로 향하는 길을 확보하십시오. 26턴 안에 승리하면 제갈량 영입의 명분과 보급을 더 단단히 챙길 수 있습니다.' + '형주 객장에 머물던 유비군은 선비들의 말을 모아 융중의 와룡을 찾아갑니다. 그러나 채씨 가병이 산길과 초가 앞을 막아 유비의 방문을 견제합니다.', + '중앙 산길의 문사 접선지를 확보해 와룡의 거처가 맞는지 확인하고, 조운은 숲길 척후와 기병을 끊어 유비가 직접 예를 갖춰 나아갈 길을 여십시오.', + '채순을 격파하고 융중 초가 길을 확보하십시오. 60턴 안에 승리하면 제갈량 영입과 박망파 계책 준비가 더 안정적으로 이어집니다.' ], + tacticalGuide: { + summary: '서남 진영에서 산길 문사 접선지를 확인하고, 숲길 감시병을 끊어 동쪽 융중 초가까지 예를 갖춰 나아가는 방문 전투입니다.', + route: '서남 진영 → 산길 문사 접선지 → 숲길 감시선 → 융중 초가 길', + focus: + '채순만 급히 치면 유비의 방문이 무례한 돌파처럼 보입니다. 손건은 산길 문사에게 와룡의 거처를 확인하고, 조운은 숲길 척후와 기병을 끊으며, 관우와 장비가 초가 앞 감시선을 정리해야 합니다.', + roles: [ + '유비: 직접 예를 갖추는 방문 주체', + '조운: 산길 척후와 기병 차단', + '관우: 초가 앞 수비선 정면 돌파', + '장비: 좁은 길목 압박과 후방 차단', + '손건: 선비 접선과 방문 예법 정리', + '미축: 산길 장기전 보급 유지' + ], + events: { + 'village-approach': { + title: '산길 문사 접선지 접근', + lines: [ + '이 길목의 문사에게 닿으면 와룡의 거처와 초가로 오르는 예법을 확인할 수 있습니다.', + '손건을 너무 뒤에 두지 말고, 조운이 척후를 끊는 동안 유비의 방문 명분을 먼저 세우십시오.' + ] + }, + 'enemy-posture': { + title: '채씨 가병의 감시선', + lines: [ + '채순은 초가 앞을 직접 막고, 궁병과 기병은 숲길에서 유비군의 예행을 흐트러뜨리려 합니다.', + '관우가 정면 수비선을 누르고 장비가 좁은 길목을 흔들면, 조운이 척후와 기병을 빠르게 정리할 수 있습니다.' + ] + }, + 'cavalry-approach': { + title: '산길 기병 접근', + lines: [ + '산길 기병이 중앙 길목으로 파고듭니다.', + '조운을 앞세워 먼저 끊으면 유비와 손건이 문사 접선지까지 무리 없이 올라갈 수 있습니다.' + ] + }, + 'leader-wavering': { + title: '채순 감시선 동요', + lines: [ + '문사 접선지와 초가 길이 모두 흔들리자 채순의 명분도 약해지고 있습니다.', + '유비가 직접 나아갈 길을 열되, 마지막까지 초가 주변을 거칠게 밟지 않도록 전열을 정돈하십시오.' + ] + } + } + }, + sortie: { + sortieLimit: 6, + requiredUnits: ['liu-bei'], + recommendedUnits: [ + { unitId: 'liu-bei', role: 'support', reason: '와룡을 직접 찾아가 예를 갖추는 방문 주체입니다. 생존 조건도 함께 짊어집니다.' }, + { unitId: 'zhao-yun', role: 'flank', reason: '산길 척후와 기병을 빠르게 끊어 유비의 방문로를 안정시킵니다.' }, + { unitId: 'guan-yu', role: 'front', reason: '초가 앞 수비병을 정면에서 밀어낼 전열 핵심입니다.' }, + { unitId: 'zhang-fei', role: 'flank', reason: '좁은 길목을 압박해 채순의 감시선이 한곳에 버티지 못하게 합니다.' }, + { unitId: 'sun-qian', role: 'support', reason: '형주 선비와 접선하고 와룡 방문의 예와 명분을 정리합니다.' }, + { unitId: 'mi-zhu', role: 'reserve', reason: '산길 장기전의 회복품과 보급을 맡아 다음 박망파 전투 여유를 남깁니다.' } + ], + recommendedClasses: [ + { label: '방문 주체', classKeys: ['lord'], reason: '유비가 직접 예를 갖춰 방문해야 제갈량 영입 명분이 살아납니다.' }, + { label: '초가 전열', classKeys: ['infantry'], reason: '초가 앞 수비병과 채순의 전열을 안정적으로 밀 수 있습니다.' }, + { label: '척후 차단', classKeys: ['cavalry'], reason: '산길 척후와 기병을 빠르게 끊어 방문로를 열 수 있습니다.' }, + { label: '길목 압박', classKeys: ['spearman'], reason: '좁은 길목의 기병과 보병을 받아치며 감시선을 흔들기 좋습니다.' }, + { label: '방문 예법', classKeys: ['strategist'], reason: '선비 접선, 방문 명분, 궁병 견제와 책략 지원이 함께 필요합니다.' }, + { label: '보급 유지', classKeys: ['quartermaster'], reason: '산길 전투는 피해 누적이 커 회복과 소모품 운용이 중요합니다.' } + ], + deploymentSlots: [ + { role: 'support', unitId: 'liu-bei', x: 3, y: 21, label: '방문 주체' }, + { role: 'front', unitId: 'guan-yu', x: 4, y: 20, label: '초가 전열' }, + { role: 'flank', unitId: 'zhang-fei', x: 4, y: 22, label: '길목 압박' }, + { role: 'flank', unitId: 'zhao-yun', x: 6, y: 22, label: '척후 차단' }, + { role: 'support', unitId: 'sun-qian', x: 5, y: 21, label: '방문 예법' }, + { role: 'reserve', unitId: 'mi-zhu', x: 3, y: 23, label: '보급 유지' } + ], + note: '융중 방문로는 제갈량 영입 직전의 예행 전투입니다. 조운으로 척후와 기병을 끊고, 손건으로 산길 문사 접선지를 확인한 뒤, 관우와 장비가 초가 앞 감시선을 정리하는 편성이 안정적입니다.' + }, map: seventeenthBattleMap, units: seventeenthBattleUnits, bonds: seventeenthBattleBonds, mapTextureKey: 'battle-map-seventeenth', leaderUnitId: 'wolong-road-leader-cai-xun', - quickVictoryTurnLimit: 26, + quickVictoryTurnLimit: 60, baseVictoryGold: 1960, objectives: [ { @@ -2289,23 +2362,43 @@ export const seventeenthBattleScenario: BattleScenarioDefinition = { rewardGold: 440, unitId: 'liu-bei' }, + { + id: 'scholar-rendezvous', + kind: 'secure-terrain', + label: '산길 문사 접선지 확인', + rewardGold: 600, + terrain: 'village', + targetTile: { x: 22, y: 17, radius: 10 }, + threatRadius: 0 + }, { id: 'longzhong-cottage', kind: 'secure-terrain', label: '융중 초가 길 확보', rewardGold: 720, - terrain: 'village' + terrain: 'village', + targetTile: { x: 29, y: 14, radius: 5 }, + threatRadius: 0 }, { id: 'quick', kind: 'quick-victory', - label: '26턴 이내 승리', + label: '60턴 이내 승리', rewardGold: 560, - maxTurn: 26 + maxTurn: 60 } ], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], itemRewards: ['콩 6', '상처약 5', '탁주 2', '와룡의 서찰 +1'], + campaignReward: { + supplies: ['콩 6', '상처약 5', '탁주 2'], + equipment: ['와룡의 서찰 1'], + reputation: ['와룡 방문 예우 +1', '형주 선비 신망 +1'], + recruits: ['zhuge-liang'], + unlockBattleId: 'eighteenth-battle-bowang-ambush', + unlockLabel: '박망파 매복전 개방', + note: '산길 문사 접선지와 융중 초가 길을 모두 확보해 유비의 삼고초려 명분을 세우고, 제갈량이 유비군에 합류할 길을 엽니다.' + }, victoryPages: seventeenthBattleVictoryPages, nextCampScene: 'CampScene' }; diff --git a/src/game/data/campaignFlow.ts b/src/game/data/campaignFlow.ts index d54fb38..9b15b1a 100644 --- a/src/game/data/campaignFlow.ts +++ b/src/game/data/campaignFlow.ts @@ -378,8 +378,8 @@ const sortieFlows: Record = { eyebrow: '다음 전장', title: seventeenthBattleScenario.title, description: - '유표에게 의탁한 유비군은 형주에서 숨을 돌리지만, 손님으로 머무는 것만으로 천하의 길을 열 수는 없습니다. 형주에서 모은 와룡의 단서를 따라 융중으로 향해야 합니다.', - rewardHint: `예상 보상: ${seventeenthBattleScenario.title} 개방 / 와룡 단서`, + '유표에게 의탁한 유비군은 형주에서 숨을 돌리지만, 손님으로 머무는 것만으로 천하의 길을 열 수는 없습니다. 형주 선비들에게 모은 단서를 따라 융중으로 향하고, 산길의 문사 접선지와 초가 방문로를 먼저 확보해야 합니다.', + rewardHint: `예상 보상: ${seventeenthBattleScenario.title} 개방 / 와룡 방문 예우`, nextBattleId: seventeenthBattleScenario.id, campaignStep: 'seventeenth-battle', pages: [...sixteenthBattleVictoryPages, ...seventeenthBattleIntroPages] @@ -389,8 +389,8 @@ const sortieFlows: Record = { eyebrow: '다음 전장', title: eighteenthBattleScenario.title, description: - '제갈량이 합류하며 유비군은 비로소 천하의 큰 판을 바라보게 됩니다. 조조군 선봉이 신야로 다가오자, 공명은 박망파의 숲길에서 첫 계책을 펼치려 합니다.', - rewardHint: `예상 보상: ${eighteenthBattleScenario.title} 개방 / 제갈량 책략 실전`, + '융중 방문로를 열고 예를 갖춘 유비군에 제갈량이 합류합니다. 조조군 선봉이 신야로 다가오자, 공명은 박망파의 숲길에서 첫 계책을 실전으로 펼치려 합니다.', + rewardHint: `예상 보상: ${eighteenthBattleScenario.title} 개방 / 제갈량 첫 계책`, nextBattleId: eighteenthBattleScenario.id, campaignStep: 'eighteenth-battle', pages: [...seventeenthBattleVictoryPages, ...eighteenthBattleIntroPages] diff --git a/src/game/data/scenario.ts b/src/game/data/scenario.ts index cf81182..5d2f9ba 100644 --- a/src/game/data/scenario.ts +++ b/src/game/data/scenario.ts @@ -1390,7 +1390,7 @@ export const seventeenthBattleIntroPages: StoryPage[] = [ chapter: '와룡의 단서', background: 'story-wolong', speaker: '손건', - text: '형주 선비들의 말이 하나로 모입니다. 융중의 초가에 머무는 제갈공명, 사람들은 그를 와룡이라 부릅니다. 주공께서 직접 찾아가 예를 다한다면 길이 열릴지도 모릅니다.' + text: '형주 객사에 드나드는 선비들의 말이 하나로 모였습니다. 융중 초가의 제갈공명, 사람들은 그를 와룡이라 부릅니다. 다만 채씨 가문도 그 소문을 듣고 길목을 살피고 있습니다.' }, { id: 'seventeenth-liu-bei-third-visit', @@ -1399,7 +1399,7 @@ export const seventeenthBattleIntroPages: StoryPage[] = [ background: 'story-wolong', speaker: '유비', portrait: 'liuBei', - text: '한 번 찾아가 만나지 못했다 하여 뜻이 얕아지는 것은 아니오. 천하를 구할 계책을 구하려면, 내가 먼저 몸을 낮추어 그 문 앞에 서야 하오.' + text: '사람을 얻으러 가는 길이라면 칼보다 예가 앞서야 하오. 산길의 선비에게 먼저 거처와 예법을 확인하고, 초가 앞에서는 군세보다 뜻을 보이겠소.' }, { id: 'seventeenth-road-to-longzhong', @@ -1407,16 +1407,15 @@ export const seventeenthBattleIntroPages: StoryPage[] = [ chapter: '융중 방문로', background: 'story-wolong', speaker: '조운', - text: '융중으로 향하는 산길에 수상한 가병들이 숨어 있습니다. 주공의 방문이 형주 안의 권신들에게 알려진 듯합니다. 길을 먼저 정리하겠습니다.' + text: '산길 중앙에 문사들이 모이는 접선지가 있고, 그 너머 숲길에는 채씨 가병의 척후와 기병이 보입니다. 제가 먼저 숲길을 끊어 주공의 방문로를 열겠습니다.' }, { id: 'seventeenth-longzhong-sortie', bgm: 'battle-prep', chapter: '와룡을 찾아', background: 'story-wolong', - speaker: '장비', - portrait: 'zhangFei', - text: '군사 하나 만나러 가는데 길목마다 잔챙이들이 성가시게 하는군요. 그래도 형님 뜻이라면 길부터 시원하게 열어 보겠습니다.' + speaker: '손건', + text: '먼저 산길 문사 접선지를 확보해 초가로 오르는 길을 확인하십시오. 그 뒤 관우 장군과 장비 장군이 초가 앞 감시선을 정리하면, 주공께서 예를 갖춰 나아갈 수 있습니다.' } ]; @@ -1426,7 +1425,7 @@ export const seventeenthBattleVictoryPages: StoryPage[] = [ bgm: 'militia-theme', chapter: '열린 초가 길', background: 'story-wolong', - text: '융중으로 향하는 길목의 가병들이 흩어지고, 산길은 조용해졌다. 유비는 갑옷의 먼지를 털지도 않은 채 제갈량의 초가 앞에 다시 섰다.' + text: '산길 문사 접선지가 확보되고, 초가 앞을 막던 채씨 가병도 물러났다. 유비는 군세를 뒤로 물린 채 손건에게 예를 다시 확인하고 조용히 초가 앞에 섰다.' }, { id: 'seventeenth-zhuge-liang-counsel', @@ -1434,7 +1433,7 @@ export const seventeenthBattleVictoryPages: StoryPage[] = [ chapter: '천하삼분의 말', background: 'story-wolong', speaker: '제갈량', - text: '한실을 일으키려면 먼저 형주와 익주를 얻어 근본을 세우고, 때를 기다려 북벌의 길을 여십시오. 주공의 뜻이 백성에게 닿는다면, 저는 그 길에 지혜를 보태겠습니다.' + text: '형주와 익주를 근본으로 삼고, 백성을 얻어 때를 기다리십시오. 길을 묻는 마음이 군세보다 앞선다면, 저는 그 뜻에 계책을 보태겠습니다.' }, { id: 'seventeenth-zhuge-liang-joins', @@ -1443,7 +1442,7 @@ export const seventeenthBattleVictoryPages: StoryPage[] = [ background: 'story-wolong', speaker: '유비', portrait: 'liuBei', - text: '공명 선생이 함께한다면 우리 군은 비로소 길을 보는 눈을 얻은 것이오. 이제 형주의 머무름은 다음 큰 전장을 준비하는 시간이 될 것이오.' + text: '공명 선생이 함께한다면 우리 군은 비로소 길을 보는 눈을 얻은 것이오. 조조의 선봉이 신야로 다가온다 하니, 박망파의 숲길에서 첫 계책을 시험할 때가 오겠소.' } ]; diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index f69cef1..281d707 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -753,14 +753,14 @@ const sortieRulesByBattleId: Partial