Refine Xiapi outer siege flow

This commit is contained in:
2026-07-04 16:20:52 +09:00
parent 19c0ebfdc6
commit 47527c53f5
4 changed files with 101 additions and 20 deletions

View File

@@ -1556,16 +1556,85 @@ export const twelfthBattleScenario: BattleScenarioDefinition = {
victoryConditionLabel: '장료 격파', victoryConditionLabel: '장료 격파',
defeatConditionLabel: '유비 퇴각', defeatConditionLabel: '유비 퇴각',
openingObjectiveLines: [ openingObjectiveLines: [
'조조는 하비 포위망의 남쪽 둑길을 유비군에게 맡깁니다. 장료를 격파하면 여포군 선봉은 성 안으로 물러납니다.', '허도 입성로에서 군율을 보인 유비군에게 조조는 하비 포위망의 남쪽 둑길을 맡깁니다. 장료를 격파하면 여포군 선봉은 성 안으로 물러납니다.',
'강줄기와 둑길이 전장을 나눕니다. 여포군 기병은 길을 타고 돌파하고, 성루 궁병과 진궁은 후방에서 압박합니다.', '강줄기와 둑길이 전장을 가릅니다. 여포군 기병은 길을 타고 포위망을 찢으려 하고, 진궁과 성루 궁병은 중앙 보급 진영을 압박합니다.',
'둑길 진영을 확보하고 20턴 안에 승리하면 조조 휘하에서의 공적과 유비군의 독자 보급을 함께 지킬 수 있습니다.' '둑길 보급 진영을 확보하고 35턴 안에 승리하면 조조 휘하의 공적과 유비군의 독자 보급 명분을 함께 지킬 수 있습니다.'
], ],
tacticalGuide: {
summary: '서남쪽 진영에서 둑길 보급 진영을 먼저 잡고, 장비가 기병 돌파를 끊는 동안 관우가 장료 선봉을 받아냅니다.',
route: '서남 진영 → 둑길 보급 진영 → 중앙 강가 길 → 장료 선봉',
focus:
'하비 외곽은 물길 때문에 전열이 갈라지기 쉽습니다. 보급 진영을 확보해 회복선을 만들고, 간옹은 진궁과 궁병 압박을 늦추며, 미축은 둑길 전열이 끊기지 않게 받쳐야 합니다.',
roles: [
'유비: 후방 지휘와 조조군 보고 명분 유지',
'관우: 중앙 둑길 정면 전열과 장료 견제',
'장비: 남쪽 길 기병 돌파 차단',
'간옹: 진궁/궁병 압박 완화와 전황 보고',
'미축: 보급 진영 유지와 회복품 운용'
],
events: {
'village-approach': {
title: '둑길 보급 진영 접근',
lines: [
'강가의 보급 진영이 흔들리면 조조군 포위망도 함께 벌어집니다.',
'이곳을 확보하면 유비군의 독자 보급선을 지키면서 장료 선봉을 압박할 수 있습니다.'
]
},
'enemy-posture': {
title: '하비 외곽 진형',
lines: [
'기병은 남북 둑길을 타고 찌르고, 궁병은 강 건너와 성루에서 사격 각을 잡습니다.',
'관우가 중앙을 막고 장비가 남쪽 길을 끊으면 장료가 움직일 공간이 줄어듭니다.'
]
},
'cavalry-approach': {
title: '여포군 기병 돌파',
lines: [
'여포군 기병이 둑길을 타고 포위망의 빈틈을 노립니다.',
'장비를 길목에 세우고 간옹의 둔화로 속도를 줄이면 보급 진영을 지키기 쉽습니다.'
]
},
'leader-wavering': {
title: '장료 선봉 흔들림',
lines: [
'둑길 보급 진영이 안정되자 장료 선봉의 돌파 각이 좁아지고 있습니다.',
'유비를 후방에 두고 관우와 장비가 양쪽 길을 압박하면 마지막 전열이 무너집니다.'
]
}
}
},
sortie: {
sortieLimit: 5,
requiredUnits: ['liu-bei'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'support', reason: '조조 휘하 작전에서도 유비군의 명분을 지켜야 합니다. 후방 지휘와 생존이 우선입니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '중앙 둑길에서 장료 선봉을 받아낼 정면 전열입니다.' },
{ unitId: 'zhang-fei', role: 'flank', reason: '여포군 기병 돌파를 남쪽 길목에서 끊는 측면 차단 역할입니다.' },
{ unitId: 'jian-yong', role: 'support', reason: '진궁과 궁병 압박을 늦추고 조조군 보고 명분을 정리합니다.' },
{ unitId: 'mi-zhu', role: 'reserve', reason: '둑길 보급 진영을 지키고 회복품 운용을 안정시킵니다.' }
],
recommendedClasses: [
{ label: '후방 지휘', classKeys: ['lord'], reason: '유비 생존과 조조군 보고 명분이 전투 후 흐름을 좌우합니다.' },
{ label: '둑길 전열', classKeys: ['infantry'], reason: '좁은 길에서 장료 선봉과 보병을 안정적으로 받아냅니다.' },
{ label: '기병 차단', classKeys: ['spearman'], reason: '남북 둑길을 타고 돌파하는 여포군 기병을 끊기 좋습니다.' },
{ label: '책략 견제', classKeys: ['strategist'], reason: '진궁과 궁병의 압박을 늦추면 보급 진영 확보가 쉬워집니다.' },
{ label: '보급 유지', classKeys: ['quartermaster'], 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: 'support', unitId: 'jian-yong', x: 5, y: 20, label: '책략 견제' },
{ role: 'reserve', unitId: 'mi-zhu', x: 3, y: 21, label: '보급 유지' }
],
note: '하비 외곽전은 길이 좁고 물길이 전열을 자릅니다. 추천 배치는 관우가 중앙 둑길을 버티고, 장비가 기병 돌파를 끊으며, 간옹과 미축이 책략/보급으로 전열을 붙잡는 형태입니다.'
},
map: twelfthBattleMap, map: twelfthBattleMap,
units: twelfthBattleUnits, units: twelfthBattleUnits,
bonds: twelfthBattleBonds, bonds: twelfthBattleBonds,
mapTextureKey: 'battle-map-twelfth', mapTextureKey: 'battle-map-twelfth',
leaderUnitId: 'xiapi-leader-zhang-liao', leaderUnitId: 'xiapi-leader-zhang-liao',
quickVictoryTurnLimit: 20, quickVictoryTurnLimit: 35,
baseVictoryGold: 1440, baseVictoryGold: 1440,
objectives: [ objectives: [
{ {
@@ -1585,20 +1654,30 @@ export const twelfthBattleScenario: BattleScenarioDefinition = {
{ {
id: 'camp', id: 'camp',
kind: 'secure-terrain', kind: 'secure-terrain',
label: '하비 둑길 진영 확보', label: '둑길 보급 진영 확보',
rewardGold: 500, rewardGold: 500,
terrain: 'camp' terrain: 'camp',
targetTile: { x: 23, y: 15, radius: 4 },
threatRadius: 2
}, },
{ {
id: 'quick', id: 'quick',
kind: 'quick-victory', kind: 'quick-victory',
label: '20턴 이내 승리', label: '35턴 이내 승리',
rewardGold: 390, rewardGold: 390,
maxTurn: 20 maxTurn: 35
} }
], ],
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }], defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
itemRewards: ['콩 4', '상처약 3', '탁주 2', '하비 포위 공적 +1'], itemRewards: ['콩 4', '상처약 3', '탁주 2', '하비 포위 공적 +1'],
campaignReward: {
supplies: ['콩 4', '상처약 3', '탁주 2'],
equipment: ['병법서 1'],
reputation: ['하비 포위 공적 +1'],
unlockBattleId: 'thirteenth-battle-xiapi-final',
unlockLabel: '하비 결전 개방',
note: '하비 외곽의 둑길과 보급 진영을 장악해 조조군 포위망이 성문과 수문까지 좁혀집니다.'
},
victoryPages: twelfthBattleVictoryPages, victoryPages: twelfthBattleVictoryPages,
nextCampScene: 'CampScene' nextCampScene: 'CampScene'
}; };

View File

@@ -333,7 +333,8 @@ const sortieFlows: Record<string, SortieFlow> = {
afterBattleId: twelfthBattleScenario.id, afterBattleId: twelfthBattleScenario.id,
eyebrow: '다음 전장', eyebrow: '다음 전장',
title: thirteenthBattleScenario.title, title: thirteenthBattleScenario.title,
description: '하비 외곽 포위망이 좁혀졌고, 여포의 마지막 운명도 가까워졌습니다. 성문과 수문을 뚫고 여포를 격파하면 조조 휘하에서 깊어지는 긴장이 다음 흐름으로 이어집니다.', description:
'하비 외곽의 둑길 보급 진영을 장악하면서 포위망이 성문과 수문까지 좁혀졌습니다. 이제 여포의 마지막 돌파를 꺾어야 하며, 조조 휘하에서 깊어지는 긴장도 함께 드러납니다.',
rewardHint: `예상 보상: ${thirteenthBattleScenario.title} 개방`, rewardHint: `예상 보상: ${thirteenthBattleScenario.title} 개방`,
nextBattleId: thirteenthBattleScenario.id, nextBattleId: thirteenthBattleScenario.id,
campaignStep: 'thirteenth-battle', campaignStep: 'thirteenth-battle',

View File

@@ -1080,7 +1080,7 @@ export const twelfthBattleIntroPages: StoryPage[] = [
bgm: 'story-dark', bgm: 'story-dark',
chapter: '조조의 명', chapter: '조조의 명',
background: 'story-wandering', background: 'story-wandering',
text: '허도에 머문 지 오래지 않아 조조는 유비군을 하비 포위전에 부른다. 여포를 치는 명령은 서주를 잃은 한을 풀 기회이자, 조조의 칼끝이 어디를 향하는지 가늠하는 시험이었다.' text: '허도 입성로에서 군율을 보인 뒤, 조조는 곧장 유비군을 하비 포위전에 불렀다. 여포를 치는 명령은 서주를 잃은 한을 풀 기회이자, 조조의 칼끝이 어디를 향하는지 가늠하는 두 번째 시험이었다.'
}, },
{ {
id: 'twelfth-xiapi-shadow', id: 'twelfth-xiapi-shadow',
@@ -1088,7 +1088,7 @@ export const twelfthBattleIntroPages: StoryPage[] = [
chapter: '하비의 물길', chapter: '하비의 물길',
background: 'story-wandering', background: 'story-wandering',
speaker: '미축', speaker: '미축',
text: '하비 외곽은 강과 진흙이 얽혀 있습니다. 보급로를 끊고 둑길을 잡지 못하면, 여포군 기병이 포위망의 빈틈을 찢고 나올 것입니다.' text: '하비 외곽은 강과 진흙이 얽혀 있습니다. 중앙의 둑길 보급 진영을 잡지 못하면, 여포군 기병이 포위망의 빈틈을 찢고 조조군 장부에는 우리 실책만 남을 것입니다.'
}, },
{ {
id: 'twelfth-brothers-before-lubu', id: 'twelfth-brothers-before-lubu',
@@ -1097,7 +1097,7 @@ export const twelfthBattleIntroPages: StoryPage[] = [
background: 'story-wandering', background: 'story-wandering',
speaker: '장비', speaker: '장비',
portrait: 'zhangFei', portrait: 'zhangFei',
text: '형님, 이번엔 여포의 이름만 들어도 창끝이 뜨겁습니다. 허나 서두르지 않겠습니다. 먼저 포위망을 조이고, 놈의 날뛰는 길을 끊겠습니다.' text: '형님, 여포의 이름만 들어도 창끝이 뜨겁습니다. 허나 이번엔 서두르지 않겠습니다. 남쪽 둑길을 끊어 기병이 날뛰는 길부터 막겠습니다.'
}, },
{ {
id: 'twelfth-xiapi-sortie', id: 'twelfth-xiapi-sortie',
@@ -1106,7 +1106,7 @@ export const twelfthBattleIntroPages: StoryPage[] = [
background: 'story-wandering', background: 'story-wandering',
speaker: '유비', speaker: '유비',
portrait: 'liuBei', portrait: 'liuBei',
text: '여포를 치는 싸움이 조조의 명이라 해도, 서주 백성이 다시 짓밟히지 않게 하는 일은 우리의 뜻이다. 물길을 잡고 포위망을 열어라.' text: '관우는 중앙 둑길을 지키고, 장비는 기병을 막아라. 간옹과 미축은 보급 진영을 놓치지 마라. 조조의 명을 따르되, 서주 백성이 다시 짓밟히지 않게 하는 일은 우리의 뜻이다.'
} }
]; ];
@@ -1116,7 +1116,7 @@ export const twelfthBattleVictoryPages: StoryPage[] = [
bgm: 'militia-theme', bgm: 'militia-theme',
chapter: '무너진 외곽 진영', chapter: '무너진 외곽 진영',
background: 'story-wandering', background: 'story-wandering',
text: '유비군은 하비 외곽의 둑길 보급 진영을 장악했다. 여포군 선봉은 성 안으로 물러났고, 조조군은 포위망을 한층 더 좁혔다.' text: '유비군은 하비 외곽의 둑길 보급 진영을 장악했고, 장료의 선봉은 성 안으로 물러났다. 조조군은 포위망을 성문과 수문 가까이까지 좁혔다.'
}, },
{ {
id: 'twelfth-cao-cao-watches', id: 'twelfth-cao-cao-watches',
@@ -1124,7 +1124,7 @@ export const twelfthBattleVictoryPages: StoryPage[] = [
chapter: '칭찬과 감시', chapter: '칭찬과 감시',
background: 'story-wandering', background: 'story-wandering',
speaker: '간옹', speaker: '간옹',
text: '현덕, 조조는 오늘의 공을 칭찬하겠지만 동시에 더 깊이 살필 걸세. 여포를 치는 동안에도, 우리가 조조의 손안에만 있지 않다는 것을 잊지 말아야 하네.' text: '현덕, 조조는 오늘의 공을 칭찬하겠지만 동시에 더 깊이 살필 걸세. 다음은 하비 성문과 수문일 테니, 여포를 치는 동안에도 우리가 조조의 손안에만 있지 않다는 것을 잊지 말아야 하네.'
} }
]; ];

View File

@@ -695,12 +695,13 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
'twelfth-battle-xiapi-outer-siege': { 'twelfth-battle-xiapi-outer-siege': {
maxUnits: 5, maxUnits: 5,
recommended: [ recommended: [
{ unitId: 'liu-bei', reason: '조조 휘하 작전에서도 유비군의 명분을 지켜야 합니다.' }, { unitId: 'liu-bei', reason: '조조 휘하 작전에서도 유비군의 명분을 지켜야 합니다. 후방 지휘와 생존이 우선입니다.' },
{ unitId: 'zhang-fei', reason: '여포군 기병 돌파를 막고 둑길을 압박합니다.' }, { unitId: 'guan-yu', reason: '중앙 둑길에서 장료 선봉을 받아낼 정면 전열입니다.' },
{ unitId: 'jian-yong', reason: '조조군 감시 속 명분과 보고 문서를 조율합니다.' }, { unitId: 'zhang-fei', reason: '여포군 기병 돌파를 남쪽 길목에서 끊는 측면 차단에 좋습니다.' },
{ unitId: 'mi-zhu', reason: '강가 포위전의 보급과 회복 운용에 유리합니다.' } { unitId: 'jian-yong', reason: '진궁과 궁병 압박을 늦추고 조조군 보고 문서를 조율합니다.' },
{ unitId: 'mi-zhu', reason: '둑길 보급 진영을 지키고 회복품 운용을 안정시킵니다.' }
], ],
note: '하비 외곽전은 강줄기와 둑길이 전장을 나눕니다. 돌파와 보급, 조조군 보고까지 함께 고려하십시오.' note: '하비 외곽전은 강줄기와 둑길이 전장을 나눕니다. 보급 진영을 먼저 안정시키고, 장비로 기병 돌파를 끊은 뒤 장료 선봉을 압박하십시오.'
}, },
'thirteenth-battle-xiapi-final': { 'thirteenth-battle-xiapi-final': {
maxUnits: 5, maxUnits: 5,