Refine Changban refugee battle flow

This commit is contained in:
2026-07-04 17:55:44 +09:00
parent 8d199329b7
commit 3336b5edbc
4 changed files with 101 additions and 21 deletions

View File

@@ -2546,14 +2546,61 @@ export const nineteenthBattleScenario: BattleScenarioDefinition = {
openingObjectiveLines: [
'조조군 호표기가 피난 행렬을 따라 장판파로 들이칩니다. 백성을 버리지 않으려면 남쪽 피난로와 다리목을 동시에 지켜야 합니다.',
'조운은 넓은 길을 오가며 흩어진 병력을 모을 수 있고, 장비는 다리목을 막아 추격 기병을 늦추기 좋습니다. 제갈량과 손건은 전후 강동 사절 명분을 정리합니다.',
'조순을 퇴각시키고 유비와 조운을 지키십시오. 피난민 마을을 확보하면 다음 강동 사절 준비가 안정됩니다.'
'조순을 퇴각시키고 유비와 조운을 지키십시오. 피난민 마을과 장판교 길목을 확보하고 36턴 안에 승리하면 다음 강동 사절 준비가 안정됩니다.'
],
tacticalGuide: {
summary: '서쪽 피난 행렬을 지키며 중앙 마을을 잡고, 장판교 길목에서 추격 기병을 늦춘 뒤 조순을 밀어냅니다.',
route: '서쪽 피난 진영 → 중앙 피난민 마을 → 장판교 길목 → 조순 본대',
focus: '조운은 흩어진 전열을 오가며 중앙 피난로를 열고, 장비와 관우는 장판교 길목을 막아 기병 돌파를 늦추십시오. 유비는 뒤에서 피난 행렬을 유지하고 제갈량과 손건은 다음 강동 사절 명분을 정리합니다.',
roles: ['유비: 후방 피난 지휘', '조운: 피난로 기동/구원', '장비: 장판교 길목 저지', '관우: 전열 받침', '제갈량: 퇴로 판단/책략', '손건: 강동 사절 기록'],
events: {
'village-approach': {
title: '피난민 거점 접근',
lines: ['중앙 마을은 피난 행렬이 다시 모이는 지점입니다.', '조운으로 길을 열고 주변 추격대를 몰아내면 백성과 보급을 함께 보존할 수 있습니다.']
},
'cavalry-approach': {
title: '호표기 접근',
lines: ['추격 기병은 길을 따라 빠르게 파고듭니다.', '장비와 관우를 좁은 길목에 세워 조운이 피난로를 정리할 시간을 벌어야 합니다.']
},
'leader-wavering': {
title: '조순 전열 흔들림',
lines: ['조순의 친위가 무너지면 추격대의 속도도 꺾입니다.', '남은 병력을 조운과 전열 장수에게 모아 퇴각로를 완전히 여십시오.']
}
}
},
sortie: {
sortieLimit: 6,
requiredUnits: ['liu-bei', 'zhao-yun'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'reserve', reason: '피난 행렬의 중심이며 패배 조건입니다.' },
{ unitId: 'zhao-yun', role: 'flank', reason: '피난로를 오가며 흩어진 병력과 백성을 붙잡는 핵심 기동 장수입니다.' },
{ unitId: 'zhang-fei', role: 'front', reason: '장판교와 좁은 길목에서 추격 기병을 늦추는 역할입니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '장비가 버티는 다리목 전열을 안정적으로 받쳐 줍니다.' },
{ unitId: 'zhuge-liang', role: 'support', reason: '피난로 판단과 강동 사절 명분을 전투 뒤로 연결합니다.' },
{ unitId: 'sun-qian', role: 'support', reason: '강동에 보낼 기록과 외교 명분을 정리합니다.' }
],
recommendedClasses: [
{ label: '피난 지휘', classKeys: ['lord'], reason: '유비가 후방에서 무너지지 않아야 피난 행렬이 유지됩니다.' },
{ label: '기동 구원', classKeys: ['cavalry'], reason: '조운 같은 기동 장수가 마을과 다리목 사이를 오가야 합니다.' },
{ label: '길목 전열', classKeys: ['infantry', 'spearman'], reason: '장판교 길목은 튼튼한 전열이 있어야 추격 기병을 늦출 수 있습니다.' },
{ label: '책략/기록', classKeys: ['strategist'], reason: '제갈량과 손건은 전투 결과를 다음 강동 사절로 이어 줍니다.' }
],
deploymentSlots: [
{ x: 4, y: 22, role: 'reserve', unitId: 'liu-bei', label: '후방 피난 지휘' },
{ x: 5, y: 20, role: 'front', unitId: 'guan-yu', label: '전열 받침' },
{ x: 6, y: 22, role: 'front', unitId: 'zhang-fei', label: '장판교 전열' },
{ x: 8, y: 20, role: 'flank', unitId: 'zhao-yun', label: '피난로 기동' },
{ x: 5, y: 23, role: 'support', unitId: 'zhuge-liang', label: '퇴로 판단' },
{ x: 6, y: 24, role: 'support', unitId: 'sun-qian', label: '사절 기록' }
],
note: '장판파 피난로는 유비와 조운 생존이 핵심입니다. 조운으로 중앙 피난로를 열고, 장비와 관우가 장판교 길목을 막아 제갈량과 손건이 강동에 전할 근거를 남기는 편성이 좋습니다.'
},
map: nineteenthBattleMap,
units: nineteenthBattleUnits,
bonds: nineteenthBattleBonds,
mapTextureKey: 'battle-map-nineteenth',
leaderUnitId: 'changban-leader-cao-chun',
quickVictoryTurnLimit: 28,
quickVictoryTurnLimit: 36,
baseVictoryGold: 2220,
objectives: [
{
@@ -2582,21 +2629,39 @@ export const nineteenthBattleScenario: BattleScenarioDefinition = {
kind: 'secure-terrain',
label: '피난민 마을 확보',
rewardGold: 820,
terrain: 'village'
terrain: 'village',
targetTile: { x: 20, y: 20, radius: 6 },
threatRadius: 0
},
{
id: 'changban-bridge',
kind: 'secure-terrain',
label: '장판교 길목 확보',
rewardGold: 760,
terrain: 'road',
targetTile: { x: 23, y: 22, radius: 6 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '28턴 이내 승리',
label: '36턴 이내 승리',
rewardGold: 620,
maxTurn: 28
maxTurn: 36
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhao-yun' }
],
itemRewards: ['콩 7', '상처약 5', '탁주 2', '피난로 지도 +1', '강동 풍문 +1'],
itemRewards: ['콩 7', '상처약 5', '탁주 2', '피난로 지도 +1', '장판교 방어 기록 +1', '강동 풍문 +1'],
campaignReward: {
supplies: ['콩 7', '상처약 5', '탁주 2'],
reputation: ['피난민 보호 +1', '장판교 방어 기록 +1', '강동 풍문 +1'],
unlockBattleId: 'twentieth-battle-jiangdong-envoy',
unlockLabel: '강동 사절로 개방',
note: '장판파에서 백성과 조운을 지켜 강동에 조조 남하를 전할 명분을 확보합니다.'
},
victoryPages: nineteenthBattleVictoryPages,
nextCampScene: 'CampScene'
};

View File

@@ -411,8 +411,8 @@ const sortieFlows: Record<string, SortieFlow> = {
eyebrow: '다음 전장',
title: twentiethBattleScenario.title,
description:
'장판파에서 피난로를 열어 백성과 군을 다시 모았습니다. 이제 제갈량과 손건을 강나루까지 보내 강동 사절의 길을 열어야 합니다.',
rewardHint: `예상 보상: ${twentiethBattleScenario.title} 개방 / 강동 사절 문서 확보`,
'장판파에서 피난민 마을과 장판교 길목을 지켜 백성과 군을 다시 모았습니다. 이제 제갈량과 손건을 강나루까지 보내 강동 사절의 길을 열어야 합니다.',
rewardHint: `예상 보상: ${twentiethBattleScenario.title} 개방 / 피난민 보호·장판교 방어 기록`,
nextBattleId: twentiethBattleScenario.id,
campaignStep: 'twentieth-battle',
pages: [...nineteenthBattleVictoryPages, ...twentiethBattleIntroPages]

View File

@@ -1517,7 +1517,7 @@ export const nineteenthBattleIntroPages: StoryPage[] = [
chapter: '조조의 남하',
background: 'story-red-cliffs',
speaker: '손건',
text: '박망파에서 시간을 벌었지만 조조의 대군은 멈추지 않았습니다. 신야의 백성들이 남쪽으로 몰리고, 장판 길목에는 추격 기병이 먼저 닿고 있습니다.'
text: '박망파에서 시간을 벌었지만 조조의 대군은 멈추지 않았습니다. 신야의 백성들이 남쪽으로 몰리고, 중앙 피난민 마을과 장판 길목에는 추격 기병이 먼저 닿고 있습니다.'
},
{
id: 'nineteenth-zhao-yun-rescue',
@@ -1525,7 +1525,7 @@ export const nineteenthBattleIntroPages: StoryPage[] = [
chapter: '백마의 구원',
background: 'story-red-cliffs',
speaker: '조운',
text: '주공, 피난 행렬이 흩어지면 백성도 군도 모두 잃습니다. 제가 앞뒤를 오가며 길을 묶겠습니다. 다리와 마을을 먼저 지켜 주십시오.'
text: '주공, 피난 행렬이 흩어지면 백성도 군도 모두 잃습니다. 제가 중앙 마을과 다리목 사이를 오가며 길을 묶겠습니다. 장판교는 익덕 장군께 맡겨 주십시오.'
},
{
id: 'nineteenth-zhang-fei-bridge',
@@ -1534,7 +1534,7 @@ export const nineteenthBattleIntroPages: StoryPage[] = [
background: 'story-red-cliffs',
speaker: '장비',
portrait: 'zhangFei',
text: '형님은 백성을 이끌고 남쪽 길을 보시오. 뒤쫓는 놈들은 제가 다리목에서 한 번 꺾어 놓겠습니다. 다만 누가 옆을 받쳐 줄지는 잘 골라야겠소!'
text: '형님은 백성을 이끌고 남쪽 길을 보시오. 뒤쫓는 놈들은 제가 장판교 길목에서 한 번 꺾어 놓겠습니다. 다만 전열을 받쳐 줄 장수는 곁에 붙여 주시오!'
},
{
id: 'nineteenth-changban-sortie',
@@ -1543,7 +1543,7 @@ export const nineteenthBattleIntroPages: StoryPage[] = [
background: 'story-red-cliffs',
speaker: '유비',
portrait: 'liuBei',
text: '오늘의 싸움은 이기는 것만으로 끝나지 않소. 백성이 지나갈 길을 열고, 조운과 익덕이 무너지지 않게 서로 받쳐야 하오. 함께할 무장을 신중히 정합시다.'
text: '오늘의 싸움은 이기는 것만으로 끝나지 않소. 조운은 피난로를 열고, 익덕은 장판교를 막으며, 나는 후방에서 백성을 모으겠소. 함께할 무장을 신중히 정합시다.'
}
];
@@ -1553,7 +1553,7 @@ export const nineteenthBattleVictoryPages: StoryPage[] = [
bgm: 'militia-theme',
chapter: '피난로가 열리다',
background: 'story-red-cliffs',
text: '장판파의 먼지 속에서 유비군은 피난 행렬을 가까스로 남쪽 길로 흘려보냈습니다. 조운의 창과 장비의 호령이 무너질 뻔한 길목을 붙들었습니다.'
text: '장판파의 먼지 속에서 유비군은 중앙 마을의 피난 행렬을 가까스로 남쪽 길로 흘려보냈습니다. 조운의 창과 장비의 호령이 무너질 뻔한 장판교 길목을 붙들었습니다.'
},
{
id: 'nineteenth-zhao-yun-returns',
@@ -1569,7 +1569,7 @@ export const nineteenthBattleVictoryPages: StoryPage[] = [
chapter: '강동으로 보낼 사절',
background: 'story-red-cliffs',
speaker: '제갈량',
text: '조조의 남하는 이제 강동도 외면할 수 없습니다. 장판파에서 지켜낸 백성의 길 조조군의 속도를 함께 전하면, 손권과 마주 앉을 명분이 생깁니다.'
text: '조조의 남하는 이제 강동도 외면할 수 없습니다. 장판파에서 지켜낸 백성의 길, 장판교 방어 기록, 조조군의 속도를 함께 전하면 손권과 마주 앉을 명분이 생깁니다.'
}
];

View File

@@ -776,15 +776,30 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
},
'nineteenth-battle-changban-refuge': {
maxUnits: 6,
requiredUnitIds: ['liu-bei', 'zhao-yun'],
recommended: [
{ unitId: 'liu-bei', reason: '피난 행렬의 중심이며 패배 조건입니다.' },
{ unitId: 'zhao-yun', reason: '피난로를 오가며 흩어진 병력과 백성을 붙잡는 핵심 기동 장수입니다.' },
{ unitId: 'zhang-fei', reason: '장판교와 좁은 길목에서 추격 기병을 늦추는 역할입니다.' },
{ unitId: 'zhuge-liang', reason: '피난로 판단과 강동 사절 명분을 전투 뒤로 연결합니다.' },
{ unitId: 'guan-yu', reason: '다리목 전열과 친위 보병을 받아낼 안정적인 전열입니다.' },
{ unitId: 'sun-qian', reason: '강동에 보낼 기록과 외교 명분을 정리합니다.' }
{ unitId: 'liu-bei', role: 'reserve', reason: '피난 행렬의 중심이며 패배 조건입니다.' },
{ unitId: 'zhao-yun', role: 'flank', reason: '피난로를 오가며 흩어진 병력과 백성을 붙잡는 핵심 기동 장수입니다.' },
{ unitId: 'zhang-fei', role: 'front', reason: '장판교와 좁은 길목에서 추격 기병을 늦추는 역할입니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '장비가 버티는 다리목 전열을 안정적으로 받쳐 줍니다.' },
{ unitId: 'zhuge-liang', role: 'support', reason: '피난로 판단과 강동 사절 명분을 전투 뒤로 연결합니다.' },
{ unitId: 'sun-qian', role: 'support', reason: '강동에 보낼 기록과 외교 명분을 정리합니다.' }
],
note: '장판파는 출전 제한보다 역할이 많은 전장입니다. 조운과 장비를 중심으로 기동, 전열, 책략, 보급 중 무엇을 우선할지 직접 선택하십시오.'
recommendedClasses: [
{ label: '피난 지휘', classKeys: ['lord'], reason: '유비가 후방에서 무너지지 않아야 피난 행렬이 유지됩니다.' },
{ label: '기동 구원', classKeys: ['cavalry'], reason: '조운 같은 기동 장수가 마을과 다리목 사이를 오가야 합니다.' },
{ label: '길목 전열', classKeys: ['infantry', 'spearman'], reason: '장판교 길목은 튼튼한 전열이 있어야 추격 기병을 늦출 수 있습니다.' },
{ label: '책략/기록', classKeys: ['strategist'], reason: '제갈량과 손건은 전투 결과를 다음 강동 사절로 이어 줍니다.' }
],
deploymentSlots: [
{ x: 4, y: 22, role: 'reserve', unitId: 'liu-bei', label: '후방 피난 지휘' },
{ x: 5, y: 20, role: 'front', unitId: 'guan-yu', label: '전열 받침' },
{ x: 6, y: 22, role: 'front', unitId: 'zhang-fei', label: '장판교 전열' },
{ x: 8, y: 20, role: 'flank', unitId: 'zhao-yun', label: '피난로 기동' },
{ x: 5, y: 23, role: 'support', unitId: 'zhuge-liang', label: '퇴로 판단' },
{ x: 6, y: 24, role: 'support', unitId: 'sun-qian', label: '사절 기록' }
],
note: '장판파 피난로는 유비와 조운 생존이 핵심입니다. 조운으로 중앙 피난로를 열고, 장비와 관우가 장판교 길목을 막아 제갈량과 손건이 강동에 전할 근거를 남기는 편성이 좋습니다.'
},
'twentieth-battle-jiangdong-envoy': {
maxUnits: 6,