Refine Yiling fire battle flow

This commit is contained in:
2026-07-04 22:57:43 +09:00
parent 18c90673f7
commit 46bba51790
3 changed files with 117 additions and 13 deletions

View File

@@ -6627,6 +6627,82 @@ export const fortySixthBattleScenario: BattleScenarioDefinition = {
'불타는 군막을 모두 지키려 하기보다, 서쪽 협곡과 강변 물길을 열어 병사를 모아야 합니다. 마을과 군막 지점을 확보하면 퇴로가 안정됩니다.', '불타는 군막을 모두 지키려 하기보다, 서쪽 협곡과 강변 물길을 열어 병사를 모아야 합니다. 마을과 군막 지점을 확보하면 퇴로가 안정됩니다.',
'황권과 제갈량은 화공의 번짐을 읽고, 조운과 왕평은 흩어진 길을 찾습니다. 누가 퇴로를 맡고 누가 불길을 뚫을지 출진 편성에서 결정하십시오.' '황권과 제갈량은 화공의 번짐을 읽고, 조운과 왕평은 흩어진 길을 찾습니다. 누가 퇴로를 맡고 누가 불길을 뚫을지 출진 편성에서 결정하십시오.'
], ],
tacticalGuide: {
summary:
'이릉 화공전은 45전에서 길게 늘어진 촉한 군막이 육손의 화공에 끊기는 전투입니다. 모든 군막을 되찾는 싸움이 아니라, 불길 속에서 유비와 남은 병사를 서쪽 퇴로로 모으는 싸움입니다.',
route: '서쪽 퇴로 확인 -> 불타는 중앙 군막 수습 -> 강변 물길 차단대 견제 -> 오군 화공 지휘선 돌파 -> 백제성 방향으로 병력 회수',
focus:
'군막 목표와 퇴로 목표를 먼저 확보하면 전투 결과 화면에서 패전 수습의 의미가 선명해집니다. 빠른 돌파보다 흩어진 병사를 모아 유비를 살리는 판단이 중요합니다.',
roles: [
'유비: 퇴로의 중심입니다. 전열 깊숙이 들어가기보다 남은 병사가 모일 기준점이 되어야 합니다.',
'황권: 군막 간격과 보급 장부를 읽어 어느 길을 버리고 어느 길을 살릴지 판단합니다.',
'제갈량: 화공의 번짐과 육손의 의도를 읽고 다음 백제성 수습까지 연결합니다.',
'마량: 형주 잔병과 민심을 붙들어 불길 속 사기 붕괴를 막습니다.',
'조운/왕평: 끊어진 군막 사이를 오가며 서쪽 퇴로와 강변 물길을 이어 줍니다.',
'마초: 오군 추격 기병과 불길 바깥 차단선을 밀어내는 측면 압박입니다.'
],
events: {
'ally-danger': {
title: '불길 번짐',
lines: [
'황권: 군막 사이가 너무 멉니다. 먼저 서쪽 퇴로에 표식을 세워 병사들이 모일 길을 남겨야 합니다.',
'유비: 진영을 잃어도 사람을 잃을 수는 없다. 살아 돌아갈 길을 열어라.'
]
},
'village-approach': {
title: '서쪽 퇴로',
lines: [
'왕평: 저 마을 길목이 백제성으로 빠지는 좁은 숨구멍입니다.',
'조운: 퇴로를 잡으면 흩어진 병사를 데려올 수 있습니다.'
]
},
'enemy-posture': {
title: '화공망',
lines: [
'제갈량: 육손은 우리를 태우려는 것이 아니라 흩뜨리려 합니다. 군막 수습과 퇴로 확보를 함께 보십시오.',
'마량: 불길 뒤에도 깃발을 모을 자리가 필요합니다.'
]
},
'leader-wavering': {
title: '육손의 포위',
lines: [
'육손: 불길이 길을 자르면 장수의 용맹도 서로를 구하지 못한다.',
'마초: 포위의 끝을 치면 불길 바깥 길은 열린다.'
]
}
}
},
sortie: {
sortieLimit: 7,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'reserve', reason: '불길 속에서 병사를 버리지 않고 퇴로를 여는 주장입니다.' },
{ unitId: 'huang-quan', role: 'support', reason: '군막 간격, 보급 장부, 서쪽 퇴로를 계산하는 핵심 참모입니다.' },
{ unitId: 'zhuge-liang', role: 'support', reason: '육손의 화공 의도와 다음 백제성 수습까지 읽습니다.' },
{ unitId: 'ma-liang', role: 'support', reason: '형주 잔병과 현지 민심을 모아 불길 속 사기를 붙잡습니다.' },
{ unitId: 'zhao-yun', role: 'flank', reason: '끊어진 군막 사이를 빠르게 오가며 흩어진 아군을 회수합니다.' },
{ unitId: 'wang-ping', role: 'flank', reason: '숲길과 강변 퇴로의 지형 판단으로 빠져나갈 길을 찾습니다.' },
{ unitId: 'ma-chao', role: 'front', reason: '오군 추격 기병과 불길 바깥 차단선을 강하게 밀어냅니다.' }
],
recommendedClasses: [
{ label: '퇴로 주장', classKeys: ['lord'], reason: '유비를 중심으로 병사를 모아 패배 조건을 안정시킵니다.' },
{ label: '화공 판단', classKeys: ['strategist'], reason: '불길, 군막, 보급로를 동시에 읽어야 피해가 줄어듭니다.' },
{ label: '퇴로 기동', classKeys: ['cavalry'], reason: '끊어진 군막과 서쪽 퇴로 사이를 빠르게 이어 줍니다.' },
{ label: '불길 돌파', classKeys: ['infantry', 'spearman'], reason: '중앙 군막을 수습하고 화공 지휘선까지 버틸 전열이 필요합니다.' },
{ label: '강변 견제', classKeys: ['archer'], reason: '강변 수군과 숲그늘 궁병을 멀리서 눌러 줍니다.' }
],
deploymentSlots: [
{ x: 18, y: 41, role: 'reserve', unitId: 'liu-bei', label: '퇴로 주장' },
{ x: 10, y: 37, role: 'support', unitId: 'huang-quan', label: '보급 계산' },
{ x: 12, y: 43, role: 'support', unitId: 'zhuge-liang', label: '화공 판독' },
{ x: 17, y: 35, role: 'support', unitId: 'ma-liang', label: '사기 수습' },
{ x: 24, y: 38, role: 'flank', unitId: 'zhao-yun', label: '군막 회수' },
{ x: 24, y: 34, role: 'flank', unitId: 'wang-ping', label: '퇴로 판단' },
{ x: 31, y: 39, role: 'front', unitId: 'ma-chao', label: '차단선 돌파' }
],
note:
'이릉 화공전은 불길을 모두 끄는 전투가 아닙니다. 유비를 살리고, 중앙 군막을 수습한 뒤, 서쪽 퇴로로 병사를 모아 백제성 방향을 여십시오.'
},
map: fortySixthBattleMap, map: fortySixthBattleMap,
units: fortySixthBattleUnits, units: fortySixthBattleUnits,
bonds: fortySixthBattleBonds, bonds: fortySixthBattleBonds,
@@ -6652,16 +6728,20 @@ export const fortySixthBattleScenario: BattleScenarioDefinition = {
{ {
id: 'fire-camps', id: 'fire-camps',
kind: 'secure-terrain', kind: 'secure-terrain',
label: '불타는 군막 수습', label: '중앙 불타는 군막 수습',
rewardGold: 3300, rewardGold: 3300,
terrain: 'camp' terrain: 'camp',
targetTile: { x: 49, y: 42, radius: 5 },
threatRadius: 0
}, },
{ {
id: 'retreat-road', id: 'retreat-road',
kind: 'secure-terrain', kind: 'secure-terrain',
label: '서쪽 퇴로 확보', label: '서쪽 퇴로 확보',
rewardGold: 2600, rewardGold: 2600,
terrain: 'village' terrain: 'village',
targetTile: { x: 14, y: 55, radius: 4 },
threatRadius: 0
}, },
{ {
id: 'quick', id: 'quick',
@@ -6673,6 +6753,14 @@ export const fortySixthBattleScenario: BattleScenarioDefinition = {
], ],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 48', '상처약 38', '탁주 16', '화공 방화선 표식 1', '백제성 퇴로 지도 1'], itemRewards: ['콩 48', '상처약 38', '탁주 16', '화공 방화선 표식 1', '백제성 퇴로 지도 1'],
campaignReward: {
supplies: ['콩 48', '상처약 38', '탁주 16'],
equipment: ['백제성 퇴로 지도 1'],
reputation: ['화공 방화선 표식 1'],
unlockLabel: '백제성 수습',
note:
'불길 속에서 퇴로는 열렸지만 이릉의 패전은 촉한의 군심을 크게 꺾었습니다. 다음 군영에서는 백제성에서 남은 장수와 병사를 수습하고 남중 안정로로 눈을 돌려야 합니다.'
},
victoryPages: fortySixthBattleVictoryPages, victoryPages: fortySixthBattleVictoryPages,
nextCampScene: 'CampScene' nextCampScene: 'CampScene'
}; };

View File

@@ -3289,7 +3289,7 @@ export const fortySixthBattleIntroPages: StoryPage[] = [
chapter: '길어진 진영', chapter: '길어진 진영',
background: 'story-yiling-fire-attack', background: 'story-yiling-fire-attack',
speaker: '황권', speaker: '황권',
text: '이릉의 첫 진영은 세웠지만, 촉한의 군막은 강변과 숲길을 따라 너무 길게 늘어졌습니다. 물길은 멀고, 마른 풀은 높으며, 오군은 여전히 큰 싸움을 피하고 있습니다.' text: '이릉의 첫 진영은 세웠지만, 촉한의 군막은 강변과 숲길을 따라 너무 길게 늘어졌습니다. 보급 말뚝 사이가 멀어졌고, 마른 풀과 빈 군막은 작은 불씨에도 흔들릴 형세입니다.'
}, },
{ {
id: 'forty-sixth-lu-xun-fire', id: 'forty-sixth-lu-xun-fire',
@@ -3297,7 +3297,7 @@ export const fortySixthBattleIntroPages: StoryPage[] = [
chapter: '기다린 불씨', chapter: '기다린 불씨',
background: 'story-yiling-fire-attack', background: 'story-yiling-fire-attack',
speaker: '제갈량', speaker: '제갈량',
text: '육손의 침묵은 물러남이 아니었습니다. 바람이 동쪽에서 불고 군막이 말랐을 때, 오군의 작은 횃불이 긴 진영 전체를 흔드는 칼이 되었습니다.' text: '육손의 침묵은 물러남이 아니었습니다. 바람이 동쪽에서 불고 군막이 말랐을 때, 오군의 작은 횃불은 중앙 군막을 끊고 서쪽 퇴로까지 흔드는 칼이 되었습니다.'
}, },
{ {
id: 'forty-sixth-liu-bei-orders', id: 'forty-sixth-liu-bei-orders',
@@ -3315,7 +3315,7 @@ export const fortySixthBattleIntroPages: StoryPage[] = [
background: 'story-yiling-fire-attack', background: 'story-yiling-fire-attack',
speaker: '유비', speaker: '유비',
portrait: 'liuBei', portrait: 'liuBei',
text: '육손의 화공망이 진영을 갈라 놓았소. 불타는 군막 사이로 퇴로를 열고, 흩어진 병사를 모아 서쪽 협곡으로 빠져나가오.' text: '육손의 화공망이 진영을 갈라 놓았소. 중앙 군막을 수습하고 서쪽 퇴로에 깃발을 세우시오. 흩어진 병사를 모아 백제성 방향으로 빠져나가야 하오.'
} }
]; ];
@@ -3325,7 +3325,7 @@ export const fortySixthBattleVictoryPages: StoryPage[] = [
bgm: 'story-dark', bgm: 'story-dark',
chapter: '불길을 뚫은 길', chapter: '불길을 뚫은 길',
background: 'story-yiling-fire-attack', background: 'story-yiling-fire-attack',
text: '불타는 군막 사이로 좁은 퇴로가 열렸습니다. 승리라 부르기에는 잃은 것이 많았지만, 유비의 깃발은 완전히 꺼지지 않았습니다.' text: '중앙 군막의 불길은 겨우 갈라졌고, 서쪽 퇴로에는 백제성으로 향하는 표식이 남았습니다. 승리라 부르기에는 잃은 것이 많았지만, 유비의 깃발은 완전히 꺼지지 않았습니다.'
}, },
{ {
id: 'forty-sixth-retreat-baidi', id: 'forty-sixth-retreat-baidi',

View File

@@ -1544,15 +1544,31 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
maxUnits: 7, maxUnits: 7,
requiredUnitIds: ['liu-bei'], requiredUnitIds: ['liu-bei'],
recommended: [ recommended: [
{ unitId: 'liu-bei', reason: '이릉 화공 속에서 병사를 버리지 않고 퇴로를 열어야 하는 주장입니다.' }, { unitId: 'liu-bei', reason: '불길 속에서 병사를 버리지 않고 퇴로를 는 주장입니다.' },
{ unitId: 'huang-quan', reason: '군막 간격, 보급 장부, 서쪽 퇴로를 신중하게 계산하는 핵심 참모입니다.' }, { unitId: 'huang-quan', reason: '군막 간격, 보급 장부, 서쪽 퇴로를 계산하는 핵심 참모입니다.' },
{ unitId: 'zhuge-liang', reason: '육손의 화공 의도와 다음 백제성 수습까지 읽는 큰 책략 축입니다.' }, { unitId: 'zhuge-liang', reason: '육손의 화공 의도와 다음 백제성 수습까지 읽니다.' },
{ unitId: 'ma-liang', reason: '형주 잔병과 현지 민심을 모아 불길 속 사기를 붙잡습니다.' }, { unitId: 'ma-liang', reason: '형주 잔병과 현지 민심을 모아 불길 속 사기를 붙잡습니다.' },
{ unitId: 'zhao-yun', reason: '끊어진 군막 사이를 빠르게 오가며 흩어진 아군을 회수합니다.' }, { unitId: 'zhao-yun', reason: '끊어진 군막 사이를 빠르게 오가며 흩어진 아군을 회수합니다.' },
{ unitId: 'wang-ping', reason: '숲길과 강변 퇴로의 지형 판단으로 포위망을 빠져나갈 길을 찾습니다.' }, { unitId: 'wang-ping', reason: '숲길과 강변 퇴로의 지형 판단으로 빠져나갈 길을 찾습니다.' },
{ unitId: 'ma-chao', reason: '오군 추격 기병과 불길 바깥 차단선을 강하게 밀어낼 수 있습니다.' } { unitId: 'ma-chao', reason: '오군 추격 기병과 불길 바깥 차단선을 강하게 밀어니다.' }
], ],
note: '이릉 화공전은 스물두 명 중 일곱 명만 출전합니다. 유비는 필수이며, 불길 수습, 퇴로 확보, 추격 차단 중 무엇을 두껍게 할지 선택하는 전투입니다.' recommendedClasses: [
{ label: '퇴로 주장', classKeys: ['lord'], reason: '유비를 중심으로 병사를 모아 패배 조건을 안정시킵니다.' },
{ label: '화공 판단', classKeys: ['strategist'], reason: '불길, 군막, 보급로를 동시에 읽어야 피해가 줄어듭니다.' },
{ label: '퇴로 기동', classKeys: ['cavalry'], reason: '끊어진 군막과 서쪽 퇴로 사이를 빠르게 이어 줍니다.' },
{ label: '불길 돌파', classKeys: ['infantry', 'spearman'], reason: '중앙 군막을 수습하고 화공 지휘선까지 버틸 전열이 필요합니다.' },
{ label: '강변 견제', classKeys: ['archer'], reason: '강변 수군과 숲그늘 궁병을 멀리서 눌러 줍니다.' }
],
deploymentSlots: [
{ x: 18, y: 41, role: 'reserve', unitId: 'liu-bei', label: '퇴로 주장' },
{ x: 10, y: 37, role: 'support', unitId: 'huang-quan', label: '보급 계산' },
{ x: 12, y: 43, role: 'support', unitId: 'zhuge-liang', label: '화공 판독' },
{ x: 17, y: 35, role: 'support', unitId: 'ma-liang', label: '사기 수습' },
{ x: 24, y: 38, role: 'flank', unitId: 'zhao-yun', label: '군막 회수' },
{ x: 24, y: 34, role: 'flank', unitId: 'wang-ping', label: '퇴로 판단' },
{ x: 31, y: 39, role: 'front', unitId: 'ma-chao', label: '차단선 돌파' }
],
note: '이릉 화공전은 불길을 모두 끄는 전투가 아닙니다. 유비를 살리고, 중앙 군막을 수습한 뒤, 서쪽 퇴로로 병사를 모아 백제성 방향을 여십시오.'
}, },
'forty-seventh-battle-nanzhong-stabilization': { 'forty-seventh-battle-nanzhong-stabilization': {
maxUnits: 7, maxUnits: 7,