Refine Jingzhou south entry battle flow

This commit is contained in:
2026-07-04 18:38:12 +09:00
parent 11ac104c43
commit 626213b626
4 changed files with 130 additions and 23 deletions

View File

@@ -3118,16 +3118,80 @@ export const twentyThirdBattleScenario: BattleScenarioDefinition = {
victoryConditionLabel: '형도영 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'적벽의 불길로 조조의 기세가 꺾인 지금, 유비군은 형주 남부의 길과 민심을 열어야 합니다.',
'형도영의 가병은 영릉으로 이어지는 길목과 마을을 붙잡고 있습니다. 성채만 몰아치면 마을이 흔들리니 보급 거점을 함께 지키십시오.',
'유비와 제갈량을 지키며 형도영을 물리치고, 남부 마을을 안정시키면 마량이 군영에 합류합니다.'
'적벽의 불길로 조조의 남하가 꺾인 지금, 유비군은 형주 남부의 길과 민심을 열어야 합니다.',
'형도영의 가병은 영릉으로 이어지는 마을, 강가 길목, 성채 관문을 나누어 붙잡고 있습니다. 성채만 몰아치면 마을이 흔들리니 길목을 차례로 안정시키십시오.',
'유비와 제갈량을 지키며 형도영을 물리치고 남부 마을과 영릉 관문을 확보하면, 백미 마량이 군영에 합류합니다.'
],
tacticalGuide: {
summary: '적벽 승리 뒤 처음으로 머물 땅을 얻는 전투입니다. 약탈전처럼 보이지 않게 마을을 안정시키며 영릉 관문까지 길을 열어야 합니다.',
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: 'guan-yu', role: 'front', reason: '형도영의 보병 전열을 정면에서 받아낼 주력입니다.' },
{ unitId: 'zhao-yun', role: 'flank', reason: '척후와 기병을 빠르게 끊어 마을을 안정시키기 좋습니다.' },
{ unitId: 'sun-qian', role: 'support', 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: 25, role: 'reserve', unitId: 'liu-bei', label: '진입 명분' },
{ x: 6, y: 23, role: 'front', unitId: 'guan-yu', label: '길목 전열' },
{ x: 8, y: 22, role: 'flank', unitId: 'zhao-yun', label: '우회 차단' },
{ x: 6, y: 24, role: 'support', unitId: 'zhuge-liang', label: '민심 판단' },
{ x: 8, y: 25, role: 'support', unitId: 'sun-qian', label: '외교 문안' },
{ x: 5, y: 29, role: 'support', unitId: 'mi-zhu', label: '남부 보급' }
],
note: '형주 남부 진입전은 적벽 뒤 첫 근거지 확보 전투입니다. 유비와 제갈량을 반드시 포함하고, 마을 안정과 영릉 관문 확보를 함께 챙기면 마량 합류가 자연스럽게 이어집니다.'
},
map: twentyThirdBattleMap,
units: twentyThirdBattleUnits,
bonds: twentyThirdBattleBonds,
mapTextureKey: 'battle-map-twenty-third',
leaderUnitId: 'jing-south-leader-xing-daorong',
quickVictoryTurnLimit: 32,
quickVictoryTurnLimit: 44,
baseVictoryGold: 3020,
objectives: [
{
@@ -3156,14 +3220,34 @@ export const twentyThirdBattleScenario: BattleScenarioDefinition = {
kind: 'secure-terrain',
label: '남부 마을 안정',
rewardGold: 980,
terrain: 'village'
terrain: 'village',
targetTile: { x: 34, y: 18, radius: 7 },
threatRadius: 0
},
{
id: 'southern-road',
kind: 'secure-terrain',
label: '강가 길목 확보',
rewardGold: 860,
terrain: 'village',
targetTile: { x: 37, y: 18, radius: 6 },
threatRadius: 0
},
{
id: 'yingling-gate',
kind: 'secure-terrain',
label: '영릉 관문 확보',
rewardGold: 1080,
terrain: 'fort',
targetTile: { x: 38, y: 18, radius: 4 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '32턴 이내 승리',
label: '44턴 이내 승리',
rewardGold: 760,
maxTurn: 32
maxTurn: 44
}
],
defeatConditions: [
@@ -3171,6 +3255,14 @@ export const twentyThirdBattleScenario: BattleScenarioDefinition = {
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 9', '상처약 7', '탁주 4', '형주 진입 문서 +1', '마량 합류'],
campaignReward: {
supplies: ['콩 9', '상처약 7', '탁주 4'],
reputation: ['형주 진입 문서 +1', '남부 마을 안정 +1'],
recruits: ['ma-liang'],
unlockBattleId: 'twenty-fourth-battle-guiyang-persuasion',
unlockLabel: '계양 설득전 개방',
note: '마을과 영릉 관문을 함께 안정시켜 형주 선비층의 신뢰를 얻었습니다. 백미 마량이 합류하고, 그의 현지 정보로 계양 설득전이 열립니다.'
},
victoryPages: twentyThirdBattleVictoryPages,
nextCampScene: 'CampScene'
};

View File

@@ -455,8 +455,8 @@ const sortieFlows: Record<string, SortieFlow> = {
eyebrow: '다음 전장',
title: twentyFourthBattleScenario.title,
description:
'형주 남부의 첫 길목을 열고 마량이 합류했습니다. 이제 마량의 현지 정보와 유비군의 군율을 앞세워 계양의 문을 열어야 합니다.',
rewardHint: `예상 보상: ${twentyFourthBattleScenario.title} 개방 / 이적 합류`,
'남부 마을과 영릉 관문을 함께 안정시키며 마량이 합류했습니다. 이제 백미 마량의 현지 지도와 유비군의 군율을 앞세워 계양의 문을 말로 먼저 열어야 합니다.',
rewardHint: `예상 보상: ${twentyFourthBattleScenario.title} 개방 / 이적 합류 / 계양 설득 명분`,
nextBattleId: twentyFourthBattleScenario.id,
campaignStep: 'twenty-fourth-battle',
pages: [...twentyThirdBattleVictoryPages, ...twentyFourthBattleIntroPages]

View File

@@ -1769,7 +1769,7 @@ export const twentyThirdBattleIntroPages: StoryPage[] = [
background: 'story-yizhou',
speaker: '유비',
portrait: 'liuBei',
text: '적벽의 불길은 조조를 막았지만 백성이 기대어 살 땅은 아직 없소. 형주 남부의 군현을 힘으로 짓밟지 말고, 먼저 길과 민심을 열어야 하오.'
text: '적벽의 불길은 조조를 막았지만 백성이 기대어 살 땅은 아직 없소. 이제 형주 남부의 첫 마을과 길목을 조심스럽게 열어, 우리가 머물 명분을 세워야 하오.'
},
{
id: 'twenty-third-zhuge-plan',
@@ -1777,7 +1777,7 @@ export const twentyThirdBattleIntroPages: StoryPage[] = [
chapter: '군현을 여는 계책',
background: 'story-yizhou',
speaker: '제갈량',
text: '영릉의 유도는 아직 마음을 정하지 못했고, 형도영은 길목을 막아 자신의 힘을 보이려 합니다. 그를 물리치되 백성을 다치게 하지 않으면 형주 남부가 움직일 것입니다.'
text: '형도영의 가병은 남부 마을, 강가 길목, 영릉 관문을 차례로 붙잡고 있습니다. 성채만 들이치면 민심이 흩어지니, 먼저 마을을 안정시키고 길목을 확보해야 합니다.'
},
{
id: 'twenty-third-ma-liang-rumor',
@@ -1785,7 +1785,7 @@ export const twentyThirdBattleIntroPages: StoryPage[] = [
chapter: '백미의 소문',
background: 'story-yizhou',
speaker: '손건',
text: '형주 선비들 사이에 마량이라는 이름이 오갑니다. 눈썹이 희어 백미라 불리는 사인데, 남부 군현의 민심과 길을 누구보다 잘 안다고 합니다.'
text: '형주 선비들 사이에 마량이라는 이름이 오갑니다. 흰 눈썹으로 백미라 불리는 사인데, 남부 군현의 마을길과 사람 마음을 누구보다 잘 안다고 합니다.'
},
{
id: 'twenty-third-jingzhou-sortie',
@@ -1793,7 +1793,7 @@ export const twentyThirdBattleIntroPages: StoryPage[] = [
chapter: '형주 남부 진입전',
background: 'story-yizhou',
speaker: '제갈량',
text: '형도영의 가병이 남부 길목과 마을을 막고 있습니다. 성급히 몰아붙이면 백성이 흩어지니, 전열을 세우고 마을을 지키며 길목을 확보하십시오.'
text: '관우 장군은 길목 전열을 누르고, 조운 장군은 우회 기병을 끊으십시오. 유비 공과 저는 후방에서 민심을 지키며 남부 마을, 강가 길목, 영릉 관문을 차례로 확보하겠습니다.'
}
];
@@ -1803,7 +1803,7 @@ export const twentyThirdBattleVictoryPages: StoryPage[] = [
bgm: 'militia-theme',
chapter: '남부 길목이 열리다',
background: 'story-yizhou',
text: '형도영이 물러서자 남부 군현으로 이어지는 길이 열렸습니다. 유비군은 약탈 없이 마을을 안정시키며 적벽 이후 처음으로 머물 땅의 윤곽을 얻었습니다.'
text: '남부 마을과 강가 길목, 영릉 관문이 차례로 안정되자 형도영의 가병은 물러났습니다. 유비군은 약탈 없이 첫 근거지의 윤곽을 얻었습니다.'
},
{
id: 'twenty-third-ma-liang-joins',
@@ -1811,7 +1811,7 @@ export const twentyThirdBattleVictoryPages: StoryPage[] = [
chapter: '마량의 합류',
background: 'story-yizhou',
speaker: '마량',
text: '주공께서 성을 먼저 살피셨다는 말을 들었습니다. 형주 남부 길과 사람을 잇는 일이라면, 제 작은 글과 말도 보탬이 될 것입니다.'
text: '주공께서 성채보다 마을을 먼저 살피셨다는 말을 들었습니다. 이 백미가 아는 남부 길과 사람의 이름을 적어 올리겠습니다. 계양의 문도 말로 먼저 두드릴 수 있습니다.'
},
{
id: 'twenty-third-next-commandery',
@@ -1819,7 +1819,7 @@ export const twentyThirdBattleVictoryPages: StoryPage[] = [
chapter: '군현을 차례로',
background: 'story-yizhou',
speaker: '제갈량',
text: '영릉 문은 열렸지만 형주 남부 전체가 움직인 것은 아닙니다. 계양, 무릉, 장사까지 차례로 설득하고 지켜야 비로소 근거지가 됩니다.'
text: '영릉 문은 열렸지만 형주 남부 전체가 움직인 것은 아닙니다. 마량의 지도를 앞세워 계양, 무릉, 장사까지 차례로 설득하고 지켜야 비로소 근거지가 됩니다.'
}
];

View File

@@ -884,15 +884,30 @@ const sortieRulesByBattleId: Partial<Record<BattleScenarioId, SortieRuleDefiniti
},
'twenty-third-battle-jingzhou-south-entry': {
maxUnits: 6,
requiredUnitIds: ['liu-bei', 'zhuge-liang'],
recommended: [
{ unitId: 'liu-bei', reason: '형주 남부 진입의 명분이자 패배 조건의 중심입니다.' },
{ unitId: 'zhuge-liang', reason: '마을을 해치지 않고 길목을 여는 작전 핵심입니다.' },
{ unitId: 'guan-yu', reason: '형도영의 보병 전열을 정면에서 받아낼 주력입니다.' },
{ unitId: 'zhao-yun', reason: '척후와 기병을 빠르게 끊어 마을을 안정시키기 좋습니다.' },
{ unitId: 'sun-qian', reason: '마량과 형주 선비층으로 이어질 외교 명분을 정리합니다.' },
{ unitId: 'mi-zhu', reason: '긴 남부 길목에서 회복과 보급을 맡기 좋습니다.' }
{ unitId: 'liu-bei', role: 'reserve', reason: '형주 남부 진입의 명분이자 패배 조건의 중심입니다.' },
{ unitId: 'zhuge-liang', role: 'support', reason: '마을을 해치지 않고 길목과 관문을 여는 작전 핵심입니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '형도영의 보병 전열을 정면에서 받아낼 주력입니다.' },
{ unitId: 'zhao-yun', role: 'flank', reason: '척후와 기병을 빠르게 끊어 강가 길목을 안정시키기 좋습니다.' },
{ unitId: 'sun-qian', role: 'support', 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: 25, role: 'reserve', unitId: 'liu-bei', label: '진입 명분' },
{ x: 6, y: 23, role: 'front', unitId: 'guan-yu', label: '길목 전열' },
{ x: 8, y: 22, role: 'flank', unitId: 'zhao-yun', label: '우회 차단' },
{ x: 6, y: 24, role: 'support', unitId: 'zhuge-liang', label: '민심 판단' },
{ x: 8, y: 25, role: 'support', unitId: 'sun-qian', label: '외교 문안' },
{ x: 5, y: 29, role: 'support', unitId: 'mi-zhu', label: '남부 보급' }
],
note: '형주 남부 진입전은 적벽 뒤 첫 근거지 확보 전투입니다. 유비와 제갈량을 반드시 포함하고, 남부 마을과 영릉 관문을 함께 안정시키면 백미 마량 합류가 자연스럽게 이어집니다.'
},
'twenty-fourth-battle-guiyang-persuasion': {
maxUnits: 6,