Refine Bowang ambush battle flow

This commit is contained in:
2026-07-04 17:43:43 +09:00
parent 6d81c3f83c
commit 8d199329b7
4 changed files with 102 additions and 20 deletions

View File

@@ -2409,16 +2409,89 @@ export const eighteenthBattleScenario: BattleScenarioDefinition = {
victoryConditionLabel: '하후돈 퇴각',
defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [
'조조군 선봉 하후돈 신야로 향합니다. 제갈량은 박망파의 숲길과 좁은 물길을 이용해 적의 속도를 끊으려 합니다.',
'숲길 궁병과 기병이 동시에 압박하지만, 강줄기와 매복 지형을 이용하면 조조군 전열을 갈라낼 수 있습니다. 제갈량의 책략과 조운의 기동을 함께 활용하십시오.',
'하후돈을 퇴각시키고 박망파의 길목을 지키십시오. 27턴 안에 승리하면 강동과 손잡을 시간을 더 벌 수 있습니다.'
'제갈량이 합류한 뒤 처음 맞는 실전입니다. 조조군 선봉 하후돈 신야로 곧장 밀고 들어오지만, 박망파의 숲길과 물길은 매복에 유리합니다.',
'서쪽 진영은 일부러 길을 내주는 듯 버티고, 중앙 숲길의 화공 매복지를 확보하십시오. 조운은 기병을 끊고, 관우와 장비는 좁은 길목에서 적 전열을 갈라야 합니다.',
'하후돈을 퇴각시키고 박망파의 길목을 지키십시오. 40턴 안에 승리하면 강동과 손잡을 시간을 더 벌 수 있습니다.'
],
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', 'zhuge-liang'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'support', reason: '후방에서 전열을 묶는 지휘 주체이며 패배 조건입니다.' },
{ unitId: 'zhuge-liang', 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: '전후 보고와 강동 사절로 이어질 명분을 정리합니다.' }
],
recommendedClasses: [
{ label: '화공 책략', classKeys: ['strategist'], reason: '박망파 매복은 제갈량의 화공과 혼란 책략이 중심입니다.' },
{ label: '후방 지휘', classKeys: ['lord'], reason: '유비가 안전하게 버텨야 조조군 선봉을 끌어들일 수 있습니다.' },
{ label: '길목 전열', classKeys: ['infantry'], reason: '좁은 숲길에서 적 보병과 친위대를 안정적으로 받아낼 수 있습니다.' },
{ label: '기병 차단', classKeys: ['cavalry'], reason: '조조군 기병을 먼저 끊어 화공 매복지가 흔들리지 않게 합니다.' },
{ label: '역습 돌파', classKeys: ['spearman'], reason: '매복이 시작된 뒤 밀려든 적을 밀어내기 좋습니다.' },
{ label: '전후 보고', classKeys: ['strategist'], reason: '강동 사절로 이어질 명분과 보상 흐름을 보조합니다.' }
],
deploymentSlots: [
{ role: 'support', unitId: 'liu-bei', x: 3, y: 18, label: '후방 지휘' },
{ role: 'front', unitId: 'guan-yu', x: 4, y: 17, label: '길목 전열' },
{ role: 'flank', unitId: 'zhang-fei', x: 4, y: 19, label: '역습 돌파' },
{ role: 'flank', unitId: 'zhao-yun', x: 6, y: 17, label: '기병 차단' },
{ role: 'support', unitId: 'zhuge-liang', x: 6, y: 19, label: '화공 책략' },
{ role: 'support', unitId: 'sun-qian', x: 5, y: 20, label: '전후 보고' }
],
note: '박망파 매복전은 제갈량의 첫 실전 계책입니다. 유비와 제갈량을 반드시 포함하고, 조운으로 기병을 끊은 뒤 관우와 장비가 숲길 길목을 눌러 화공 매복지를 안정시키는 편성이 좋습니다.'
},
map: eighteenthBattleMap,
units: eighteenthBattleUnits,
bonds: eighteenthBattleBonds,
mapTextureKey: 'battle-map-eighteenth',
leaderUnitId: 'bowang-leader-xiahou-dun',
quickVictoryTurnLimit: 27,
quickVictoryTurnLimit: 40,
baseVictoryGold: 2080,
objectives: [
{
@@ -2438,20 +2511,29 @@ export const eighteenthBattleScenario: BattleScenarioDefinition = {
{
id: 'ambush-village',
kind: 'secure-terrain',
label: '박망파 매복지 확보',
label: '박망파 화공 매복지 확보',
rewardGold: 760,
terrain: 'village'
terrain: 'village',
targetTile: { x: 27, y: 18, radius: 5 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '27턴 이내 승리',
label: '40턴 이내 승리',
rewardGold: 600,
maxTurn: 27
maxTurn: 40
}
],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 7', '상처약 4', '탁주 2', '강동 풍문 +1'],
campaignReward: {
supplies: ['콩 7', '상처약 4', '탁주 2'],
reputation: ['박망파 첫 계책 +1', '강동 사절 명분 +1'],
unlockBattleId: 'nineteenth-battle-changban-refuge',
unlockLabel: '장판파 피난로 개방',
note: '제갈량의 첫 화공 매복으로 조조군 선봉을 늦추고, 강동과 손잡을 시간을 벌어 장판파 피난로로 이어집니다.'
},
victoryPages: eighteenthBattleVictoryPages,
nextCampScene: 'CampScene'
};

View File

@@ -400,8 +400,8 @@ const sortieFlows: Record<string, SortieFlow> = {
eyebrow: '다음 전장',
title: nineteenthBattleScenario.title,
description:
'박망파에서 조조군 선봉을 늦췄지만 대군의 남하는 계속됩니다. 신야의 백성을 데리고 장판파 피난로를 열어야 강동 사절로 이어질 시간을 벌 수 있습니다.',
rewardHint: `예상 보상: ${nineteenthBattleScenario.title} 개방 / 장판파 피난로 확보`,
'박망파의 화공 매복으로 조조군 선봉을 늦췄지만 대군의 남하는 계속됩니다. 신야의 백성을 데리고 장판파 피난로를 열어야 강동 사절로 이어질 시간을 벌 수 있습니다.',
rewardHint: `예상 보상: ${nineteenthBattleScenario.title} 개방 / 박망파 지연 성공`,
nextBattleId: nineteenthBattleScenario.id,
campaignStep: 'nineteenth-battle',
pages: [...eighteenthBattleVictoryPages, ...nineteenthBattleIntroPages]

View File

@@ -1461,7 +1461,7 @@ export const eighteenthBattleIntroPages: StoryPage[] = [
chapter: '박망파의 계책',
background: 'story-wolong',
speaker: '제갈량',
text: '하후돈의 선봉은 빠르나 숲과 좁은 길을 가볍게 여길 것입니다. 길을 내어 주는 척하다가 박망파의 숲길에서 불과 매복으로 그 기세를 꺾겠습니다.'
text: '하후돈의 선봉은 빠르나 숲과 좁은 길을 가볍게 여길 것입니다. 서쪽 진영은 물러나는 듯 버티고, 중앙 숲길의 화공 매복지에서 그 기세를 꺾겠습니다.'
},
{
id: 'eighteenth-generals-doubt',
@@ -1470,7 +1470,7 @@ export const eighteenthBattleIntroPages: StoryPage[] = [
background: 'story-wolong',
speaker: '관우',
portrait: 'guanYu',
text: '군사의 말이 이치에 맞다 하여도, 전장은 말과 다릅니다. 그러나 형님께서 맡기셨다면 우리 또한 그 계책을 전장에서 증명하겠습니다.'
text: '군사의 말이 이치에 맞다 하여도, 전장은 말과 다릅니다. 그러나 형님께서 맡기셨다면 좁은 길목은 우리가 막고, 그 계책을 전장에서 증명하겠습니다.'
},
{
id: 'eighteenth-bowang-sortie',
@@ -1479,7 +1479,7 @@ export const eighteenthBattleIntroPages: StoryPage[] = [
background: 'story-wolong',
speaker: '유비',
portrait: 'liuBei',
text: '오늘 싸움은 적을 많이 베는 것보다 조조군의 발을 묶는 것이 중요하오. 공명의 계책을 중심에 두고, 숲길과 불길 사이에서 전열을 흩트리지 맙시다.'
text: '오늘 싸움은 적을 많이 베는 것보다 조조군의 발을 묶는 것이 중요하오. 조운은 기병을 끊고, 관우와 장비는 숲길 길목을 눌러 공명의 화공을 살립시다.'
}
];
@@ -1489,7 +1489,7 @@ export const eighteenthBattleVictoryPages: StoryPage[] = [
bgm: 'militia-theme',
chapter: '숲길의 불빛',
background: 'story-wolong',
text: '박망파의 숲길에 불빛이 번지고, 하후돈의 선봉은 좁은 길에서 서로의 퇴로를 막았다. 유비군은 큰 병력 없이도 조조군의 진격을 늦추었다.'
text: '박망파의 숲길에 불빛이 번지고, 하후돈의 선봉은 좁은 길에서 서로의 퇴로를 막았다. 유비군은 화공 매복지를 지켜 내며 조조군의 진격을 늦추었다.'
},
{
id: 'eighteenth-zhuge-trust-earned',

View File

@@ -765,14 +765,14 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
'eighteenth-battle-bowang-ambush': {
maxUnits: 6,
recommended: [
{ unitId: 'liu-bei', reason: '박망파 매복전의 패배 조건이자 군의 중심입니다.' },
{ unitId: 'zhuge-liang', reason: '이번 전투의 핵심인 매복 계책과 화공 판단을 맡습니다.' },
{ unitId: 'zhao-yun', reason: '조조군 기병을 끊고 숲길 측면을 빠르게 흔듭니다.' },
{ unitId: 'guan-yu', reason: '좁은 길목에서 하후돈 친위를 받아낼 전열입니다.' },
{ unitId: 'liu-bei', reason: '후방에서 전열을 묶는 지휘 주체이며 패배 조건입니다.' },
{ unitId: 'zhuge-liang', reason: '박망파 화공 매복과 혼란 책략을 맡는 핵심입니다.' },
{ unitId: 'zhao-yun', reason: '추격 기병을 끊고 숲길 측면을 빠르게 흔듭니다.' },
{ unitId: 'guan-yu', reason: '좁은 길목에서 하후돈 친위와 보병 전열을 받아냅니다.' },
{ unitId: 'zhang-fei', reason: '매복 후 역습으로 적 선봉을 밀어내는 돌파 역할입니다.' },
{ unitId: 'sun-qian', reason: '강동 사절로 이어질 명분과 전후 보고를 정리합니다.' }
{ unitId: 'sun-qian', reason: '전후 보고와 강동 사절로 이어질 명분 정리합니다.' }
],
note: '제갈량의 첫 실전 계책입니다. 책략 담당을 포함해 전열, 기동, 보급 중 무엇을 남길지 결정해야 합니다.'
note: '제갈량의 첫 실전 계책입니다. 유비와 제갈량을 중심으로 조운이 기병을 끊고, 관우와 장비가 숲길 길목을 눌러 화공 매복지를 안정시키는 편성이 좋습니다.'
},
'nineteenth-battle-changban-refuge': {
maxUnits: 6,