Refine Red Cliffs fire battle flow

This commit is contained in:
2026-07-04 18:25:36 +09:00
parent 0791488f5d
commit 11ac104c43
4 changed files with 127 additions and 21 deletions

View File

@@ -2964,16 +2964,80 @@ export const twentySecondBattleScenario: BattleScenarioDefinition = {
victoryConditionLabel: '조조 본선 퇴각', victoryConditionLabel: '조조 본선 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각', defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [ openingObjectiveLines: [
'황개의 거짓 항복선이 조조 함대로 향합니다. 조조군 감시선이 화선을 알아차리면 적벽의 불길은 시작되기도 전에 꺼집니다.', '배다리 거점과 강동 포구가 열리자 황개의 거짓 항복선이 조조 함대로 향합니다. 감시선이 화선을 알아차리면 적벽의 불길은 시작되기도 전에 꺼집니다.',
'강 위에는 연환선과 배다리가 얽혀 있습니다. 전열 장수로 갑판 보병을 고, 기동 장수로 강안 기병을 어 화선 접안로 열어야 합니다.', '강 위에는 연환선과 배다리가 얽혀 있습니다. 조운은 강안 기병을 고, 관우와 장비는 갑판 보병을 어 화선 접안로와 동남풍 신호 지점을 열어야 합니다.',
'제갈량을 지키고 조조 본선을 퇴각시키십시오. 화선 준비 지점을 확보하면 적벽대전의 결정적 승리를 얻을 수 있습니다.' '제갈량을 지키고 조조 본선을 퇴각시키십시오. 화선 접안로와 연환선 돌파 지점을 확보하면 형주 남부로 향할 결정적 승리를 얻습니다.'
], ],
tacticalGuide: {
summary: '21전에서 확보한 배다리와 포구를 발판으로, 감시선을 누르고 화선이 조조 본선에 닿을 길을 여는 적벽 결전입니다.',
route: '서남 동맹 진영 → 화선 접안로 → 동남풍 신호 지점 → 연환선 돌파 → 조조 본선',
focus:
'초반에는 조운으로 강안 기병과 감시병을 끊어 화선이 들키지 않게 하고, 관우와 장비가 갑판 보병을 받아내야 합니다. 제갈량은 후방에서 동남풍 타이밍을 보존하고, 유비는 전선이 너무 동쪽으로 찢어지지 않게 지휘하십시오.',
roles: [
'유비: 동맹 명분과 전선 지휘',
'제갈량: 동남풍 판단과 책략 지원',
'조운: 강안 기병과 감시병 차단',
'관우: 갑판 보병 정면 압박',
'장비: 배다리와 연환선 돌파',
'미축: 화공전 장기 피해 회복과 보급'
],
events: {
'village-approach': {
title: '화선 접안로 접근',
lines: [
'이 지점을 누르면 황개의 화선이 조조 함대 가까이 붙을 수 있습니다.',
'감시병과 선상 궁병을 오래 남겨 두지 말고, 전열을 좁게 유지해 동남풍 신호 지점까지 이어 가십시오.'
]
},
'cavalry-approach': {
title: '강안 기병 견제',
lines: [
'조조군 기병이 강안으로 돌아 제갈량과 보급선을 노립니다.',
'조운이 먼저 끊어야 화선의 접근과 동남풍 판단이 흔들리지 않습니다.'
]
},
'leader-wavering': {
title: '조조 본선 동요',
lines: [
'화선이 연환선 사이로 파고들자 조조 본선의 지휘가 흔들립니다.',
'친위를 정리하고 조조를 몰아내면 적벽의 불길이 형주 남부로 가는 길을 엽니다.'
]
}
}
},
sortie: {
sortieLimit: 6,
requiredUnits: ['liu-bei', 'zhuge-liang'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'reserve', reason: '적벽 결전의 명분이자 패배 조건의 중심입니다.' },
{ unitId: 'zhuge-liang', role: 'support', reason: '동남풍과 화공 시점을 판단하는 핵심 책략 담당입니다.' },
{ unitId: 'zhao-yun', role: 'flank', reason: '화선을 노리는 강안 기병과 감시병을 빠르게 끊습니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '갑판 보병과 본선 친위를 정면에서 받아낼 전열입니다.' },
{ unitId: 'zhang-fei', role: 'front', reason: '배다리와 좁은 연환선 길을 밀어붙이는 돌파 역할입니다.' },
{ unitId: 'mi-zhu', role: 'support', reason: '화공전의 장기 피해를 버티기 위한 회복과 보급을 맡습니다.' }
],
recommendedClasses: [
{ label: '동맹 지휘', classKeys: ['lord'], reason: '유비가 무너지지 않아야 손유 동맹의 결전 명분이 유지됩니다.' },
{ label: '동남풍 책략', classKeys: ['strategist'], reason: '제갈량의 생존과 판단이 화공 성공의 핵심입니다.' },
{ label: '갑판 전열', classKeys: ['infantry', 'spearman'], reason: '좁은 배다리와 갑판에서는 튼튼한 전열이 피해를 받아내야 합니다.' },
{ label: '강안 기동', classKeys: ['cavalry'], reason: '기동 장수가 감시병과 기병을 먼저 끊어 화선 접안로를 엽니다.' }
],
deploymentSlots: [
{ x: 4, y: 23, role: 'reserve', unitId: 'liu-bei', label: '동맹 지휘' },
{ x: 6, y: 21, role: 'front', unitId: 'guan-yu', label: '갑판 전열' },
{ x: 6, y: 25, role: 'front', unitId: 'zhang-fei', label: '연환선 돌파' },
{ x: 8, y: 20, role: 'flank', unitId: 'zhao-yun', label: '강안 차단' },
{ x: 6, y: 22, role: 'support', unitId: 'zhuge-liang', label: '동남풍 판단' },
{ x: 5, y: 27, role: 'support', unitId: 'mi-zhu', label: '화공 보급' }
],
note: '적벽 화공전은 강 위의 결전입니다. 유비와 제갈량을 반드시 포함하고, 조운으로 감시병과 기병을 끊은 뒤 관우와 장비가 화선 접안로와 연환선을 열어야 합니다.'
},
map: twentySecondBattleMap, map: twentySecondBattleMap,
units: twentySecondBattleUnits, units: twentySecondBattleUnits,
bonds: twentySecondBattleBonds, bonds: twentySecondBattleBonds,
mapTextureKey: 'battle-map-twenty-second', mapTextureKey: 'battle-map-twenty-second',
leaderUnitId: 'redcliff-fire-leader-cao-cao', leaderUnitId: 'redcliff-fire-leader-cao-cao',
quickVictoryTurnLimit: 31, quickVictoryTurnLimit: 42,
baseVictoryGold: 2840, baseVictoryGold: 2840,
objectives: [ objectives: [
{ {
@@ -3002,14 +3066,34 @@ export const twentySecondBattleScenario: BattleScenarioDefinition = {
kind: 'secure-terrain', kind: 'secure-terrain',
label: '화선 접안로 확보', label: '화선 접안로 확보',
rewardGold: 980, rewardGold: 980,
terrain: 'village' terrain: 'village',
targetTile: { x: 28, y: 20, radius: 3 },
threatRadius: 0
},
{
id: 'wind-signal',
kind: 'secure-terrain',
label: '동남풍 신호 지점 확보',
rewardGold: 880,
terrain: 'village',
targetTile: { x: 35, y: 14, radius: 4 },
threatRadius: 0
},
{
id: 'chain-fleet',
kind: 'secure-terrain',
label: '연환선 돌파 지점 확보',
rewardGold: 1040,
terrain: 'fort',
targetTile: { x: 36, y: 14, radius: 3 },
threatRadius: 0
}, },
{ {
id: 'quick', id: 'quick',
kind: 'quick-victory', kind: 'quick-victory',
label: '31턴 이내 승리', label: '42턴 이내 승리',
rewardGold: 720, rewardGold: 720,
maxTurn: 31 maxTurn: 42
} }
], ],
defeatConditions: [ defeatConditions: [
@@ -3017,6 +3101,13 @@ export const twentySecondBattleScenario: BattleScenarioDefinition = {
{ kind: 'unit-defeated', unitId: 'zhuge-liang' } { kind: 'unit-defeated', unitId: 'zhuge-liang' }
], ],
itemRewards: ['콩 9', '상처약 6', '탁주 4', '화공 전과 +1', '동남풍 기록 +1'], itemRewards: ['콩 9', '상처약 6', '탁주 4', '화공 전과 +1', '동남풍 기록 +1'],
campaignReward: {
supplies: ['콩 9', '상처약 6', '탁주 4'],
reputation: ['적벽 화공 전과 +1', '동남풍 기록 +1', '손유 동맹 명성 +1'],
unlockBattleId: 'twenty-third-battle-jingzhou-south-entry',
unlockLabel: '형주 남부 진입전 개방',
note: '화선 접안로와 동남풍 신호 지점을 확보해 조조 본선을 몰아냈습니다. 조조의 남하가 꺾였으니 유비군은 형주 남부의 길과 민심을 열 차례입니다.'
},
victoryPages: twentySecondBattleVictoryPages, victoryPages: twentySecondBattleVictoryPages,
nextCampScene: 'CampScene' nextCampScene: 'CampScene'
}; };

View File

@@ -444,8 +444,8 @@ const sortieFlows: Record<string, SortieFlow> = {
eyebrow: '다음 전장', eyebrow: '다음 전장',
title: twentyThirdBattleScenario.title, title: twentyThirdBattleScenario.title,
description: description:
'적벽의 불길 조조의 남하가 꺾였습니다. 유비군은 이제 형주 남부의 길목을 열고, 백성을 먼저 안정시키며 머물 땅을 마련해야 합니다.', '화선 접안로와 동남풍 신호 지점을 열어 적벽의 불길 조조 본선을 물러나게 했습니다. 유비군은 이제 형주 남부의 길목을 열고, 백성을 먼저 안정시키며 머물 땅을 마련해야 합니다.',
rewardHint: `예상 보상: ${twentyThirdBattleScenario.title} 개방 / 마량 합류`, rewardHint: `예상 보상: ${twentyThirdBattleScenario.title} 개방 / 마량 합류 / 적벽 명성`,
nextBattleId: twentyThirdBattleScenario.id, nextBattleId: twentyThirdBattleScenario.id,
campaignStep: 'twenty-third-battle', campaignStep: 'twenty-third-battle',
pages: [...twentySecondBattleVictoryPages, ...twentyThirdBattleIntroPages] pages: [...twentySecondBattleVictoryPages, ...twentyThirdBattleIntroPages]

View File

@@ -1705,7 +1705,7 @@ export const twentySecondBattleIntroPages: StoryPage[] = [
chapter: '황개의 결단', chapter: '황개의 결단',
background: 'story-red-cliffs', background: 'story-red-cliffs',
speaker: '주유', speaker: '주유',
text: '황개 장군 거짓 항복의 배를 준비했습니다. 조조가 그 배를 의심하지 않게 하려면, 유비군은 강안의 감시선을 흔들어 화선이 다가갈 길을 열어야 합니다.' text: '배다리와 포구가 열렸으니 황개 장군 거짓 항복선도 강 위로 나설 수 있습니다. 조조가 그 배를 의심하지 않게 하려면, 유비군은 강안의 감시선을 흔들어 화선이 다가갈 길을 열어야 합니다.'
}, },
{ {
id: 'twenty-second-zhuge-wind-watch', id: 'twenty-second-zhuge-wind-watch',
@@ -1713,7 +1713,7 @@ export const twentySecondBattleIntroPages: StoryPage[] = [
chapter: '동남풍을 기다리다', chapter: '동남풍을 기다리다',
background: 'story-red-cliffs', background: 'story-red-cliffs',
speaker: '제갈량', speaker: '제갈량',
text: '바람은 아직 완전히 돌지 않았습니다. 그러나 때가 오면 불길은 강 위에서 산처럼 번질 것입니다. 그 전까지 조조의 척후와 갑판 궁병을 묶어 두어야 합니다.' text: '바람은 아직 완전히 돌지 않았습니다. 그러나 신호 지점을 잡아 두면 때가 왔을 때 불길은 강 위에서 산처럼 번질 것입니다. 그 전까지 조조의 척후와 갑판 궁병을 묶어 두어야 합니다.'
}, },
{ {
id: 'twenty-second-liu-bei-fire-line', id: 'twenty-second-liu-bei-fire-line',
@@ -1730,7 +1730,7 @@ export const twentySecondBattleIntroPages: StoryPage[] = [
chapter: '적벽 화공전', chapter: '적벽 화공전',
background: 'story-red-cliffs', background: 'story-red-cliffs',
speaker: '제갈량', speaker: '제갈량',
text: '조조의 함대가 사슬로 묶인 채 강북에 모였습니다. 화선의 길을 막는 초병고, 조조 본선이 불길에 휩싸일 때까지 전선을 지키십시오.' text: '조조의 함대가 사슬로 묶인 채 강북에 모였습니다. 화선 접안로와 동남풍 신호 지점고, 연환선이 불길에 휩싸일 때까지 전선을 지키십시오.'
} }
]; ];
@@ -1740,7 +1740,7 @@ export const twentySecondBattleVictoryPages: StoryPage[] = [
bgm: 'battle-prep', bgm: 'battle-prep',
chapter: '불길이 일다', chapter: '불길이 일다',
background: 'story-red-cliffs', background: 'story-red-cliffs',
text: '화선이 조조군 함대에 닿자 강 위가 붉게 일렁였습니다. 사슬로 묶인 배들은 서로를 구하지 못했고, 장강의 바람은 불길을 북쪽으로 몰아붙였습니다.' text: '화선이 접안로를 지나 조조군 함대에 닿자 강 위가 붉게 일렁였습니다. 사슬로 묶인 배들은 서로를 구하지 못했고, 장강의 바람은 불길을 북쪽으로 몰아붙였습니다.'
}, },
{ {
id: 'twenty-second-cao-cao-retreat', id: 'twenty-second-cao-cao-retreat',
@@ -1757,7 +1757,7 @@ export const twentySecondBattleVictoryPages: StoryPage[] = [
background: 'story-red-cliffs', background: 'story-red-cliffs',
speaker: '유비', speaker: '유비',
portrait: 'liuBei', portrait: 'liuBei',
text: '조조의 대군은 물러났지만 우리의 근본은 아직 없습니다. 이제 백성이 머물 땅을 얻고, 형주와 익주로 향할 길을 차근히 세워야 합니다.' text: '조조의 대군은 물러났지만 우리의 근본은 아직 없습니다. 적벽에서 얻은 명성과 동맹의 신뢰를 헛되이 하지 않으려면, 이제 형주 남부의 길과 민심을 차근히 열어야 합니다.'
} }
]; ];

View File

@@ -857,15 +857,30 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
}, },
'twenty-second-battle-red-cliffs-fire': { 'twenty-second-battle-red-cliffs-fire': {
maxUnits: 6, maxUnits: 6,
requiredUnitIds: ['liu-bei', 'zhuge-liang'],
recommended: [ recommended: [
{ unitId: 'liu-bei', reason: '적벽 결전의 명분 패배 조건의 중심입니다.' }, { unitId: 'liu-bei', role: 'reserve', reason: '적벽 결전의 명분이자 패배 조건의 중심입니다.' },
{ unitId: 'zhuge-liang', reason: '동남풍과 화공 시점을 판단하는 핵심 책략 담당입니다.' }, { unitId: 'zhuge-liang', role: 'support', reason: '동남풍과 화공 시점을 판단하는 핵심 책략 담당입니다.' },
{ unitId: 'guan-yu', reason: '갑판 보병과 본선 친위를 정면에서 받아낼 전열입니다.' }, { unitId: 'zhao-yun', role: 'flank', reason: '화선을 노리는 강안 기병과 감시병을 빠르게 끊습니다.' },
{ unitId: 'zhao-yun', reason: '화선을 노리는 강안 기병과 척후를 빠르게 끊습니다.' }, { unitId: 'guan-yu', role: 'front', reason: '갑판 보병과 본선 친위를 정면에서 받아낼 전열입니다.' },
{ unitId: 'zhang-fei', reason: '배다리와 좁은 갑판 길을 밀어붙이는 돌파 역할입니다.' }, { unitId: 'zhang-fei', role: 'front', reason: '배다리와 좁은 연환선 길을 밀어붙이는 돌파 역할입니다.' },
{ unitId: 'mi-zhu', reason: '화공전의 장기 피해를 버티기 위한 회복과 보급을 맡습니다.' } { unitId: 'mi-zhu', role: 'support', reason: '화공전의 장기 피해를 버티기 위한 회복과 보급을 맡습니다.' }
], ],
note: '적벽 화공전은 강 위의 결전입니다. 제갈량의 책략과 전열 유지, 화선 접안로 확보를 중심으로 여섯 명을 고르십시오.' recommendedClasses: [
{ label: '동맹 지휘', classKeys: ['lord'], reason: '유비가 무너지지 않아야 손유 동맹의 결전 명분이 유지됩니다.' },
{ label: '동남풍 책략', classKeys: ['strategist'], reason: '제갈량의 생존과 판단이 화공 성공의 핵심입니다.' },
{ label: '갑판 전열', classKeys: ['infantry', 'spearman'], reason: '좁은 배다리와 갑판에서는 튼튼한 전열이 피해를 받아내야 합니다.' },
{ label: '강안 기동', classKeys: ['cavalry'], reason: '기동 장수가 감시병과 기병을 먼저 끊어 화선 접안로를 엽니다.' }
],
deploymentSlots: [
{ x: 4, y: 23, role: 'reserve', unitId: 'liu-bei', label: '동맹 지휘' },
{ x: 6, y: 21, role: 'front', unitId: 'guan-yu', label: '갑판 전열' },
{ x: 6, y: 25, role: 'front', unitId: 'zhang-fei', label: '연환선 돌파' },
{ x: 8, y: 20, role: 'flank', unitId: 'zhao-yun', label: '강안 차단' },
{ x: 6, y: 22, role: 'support', unitId: 'zhuge-liang', label: '동남풍 판단' },
{ x: 5, y: 27, role: 'support', unitId: 'mi-zhu', label: '화공 보급' }
],
note: '적벽 화공전은 강 위의 결전입니다. 유비와 제갈량을 반드시 포함하고, 조운으로 감시병과 기병을 끊은 뒤 관우와 장비가 화선 접안로와 연환선을 열어야 합니다.'
}, },
'twenty-third-battle-jingzhou-south-entry': { 'twenty-third-battle-jingzhou-south-entry': {
maxUnits: 6, maxUnits: 6,