Refine Changsha veteran battle flow

This commit is contained in:
2026-07-04 19:13:10 +09:00
parent 58cdead7aa
commit 90684a7ab3
4 changed files with 143 additions and 25 deletions

View File

@@ -3601,22 +3601,88 @@ export const twentySixthBattleScenario: BattleScenarioDefinition = {
victoryConditionLabel: '한현 퇴각',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'무릉 산길을 연 유비군은 장사로 향합니다. 장사에는 노장 황충과 의심 많은 태수 한현이 버티고 있습니다.',
'이번 전투는 황충을 욕보이지 않고 한현의 의심을 꺾어야 합니다. 마을을 안정시키고 성문 전열을 흔들어 장사 내부의 길을 여십시오.',
'유비와 제갈량을 지키며 한현을 물러나게 하면 황충과 위연이 군영에 합류합니다.'
'무릉 산길을 연 유비군은 공지가 알려 준 길을 따라 장사로 향합니다. 장사에는 노장 황충과 의심 많은 태수 한현이 버티고 있습니다.',
'한현은 황충의 명망까지 의심하며 성문 병력을 몰아세우고 있습니다. 마을을 안정시키고 황충 전열을 예로 대하면, 위연이 성 안의 부당함을 더는 따르지 못할 것입니다.',
'유비와 제갈량을 지키며 장사 성문 의심선을 흔들고 한현을 물러나게 하면 황충과 위연이 군영에 합류합니다.'
],
tacticalGuide: {
summary:
'장사 전투는 노장 황충을 꺾어 모욕하는 싸움이 아니라, 한현의 의심을 전장에서 무너뜨리고 장사 내부의 사람을 얻는 싸움입니다. 공지의 길 정보와 이적의 예법을 함께 살리십시오.',
route: '서남 유비군 진영 → 서문 마을 안정 → 황충 전열 예우 → 성문 의심선 압박 → 한현 퇴각',
focus:
'관우가 황충의 전열을 정면에서 받아 예를 세우는 동안 조운은 동문 기병과 척후를 끊으십시오. 공지는 장사 길 정보를 읽고, 이적은 황충과 위연에게 닿을 문안을 준비하면 좋습니다.',
roles: [
'유비: 장사 항복 명분과 패배 조건의 중심',
'공지: 무릉에서 얻은 장사 접근로와 성 안 소문',
'제갈량: 한현의 의심을 꺾는 성문 압박 판단',
'관우: 노장 황충의 전열을 받아내는 무인의 예',
'장비: 서문 보병 전열을 밀어내는 돌파 역할',
'조운: 동문 기병과 척후 차단'
],
events: {
'village-approach': {
title: '장사 서문 마을',
lines: [
'공지: 이 마을이 흔들리면 장사 사람들은 한현의 말만 듣게 됩니다. 먼저 길과 창고를 지켜 주십시오.',
'이적: 백성이 다치지 않아야 황충 장군에게도 예가 닿습니다. 싸움보다 군율을 먼저 보일 때입니다.'
]
},
'vanguard-broken': {
title: '황충 전열 예우',
lines: [
'관우: 노장의 활은 꺾을 것이 아니라 예로 맞을 상대다. 전열을 흐트러뜨리되 이름을 욕보이지 마라.',
'제갈량: 황충을 얕보지 않는 태도가 장사 병사들의 마음을 흔들 것입니다.'
]
},
'leader-wavering': {
title: '한현의 의심',
lines: [
'황충의 전열이 예를 잃지 않은 채 물러서자, 한현의 의심 많은 명령은 성 안에서도 힘을 잃기 시작합니다.',
'위연: 백성을 지키는 군이라면 성문을 닫고 있을 이유가 없겠군.'
]
}
}
},
sortie: {
sortieLimit: 6,
requiredUnits: ['liu-bei', 'zhuge-liang'],
recommendedUnits: [
{ unitId: 'liu-bei', role: 'reserve', reason: '장사 항복 명분이자 패배 조건의 중심입니다.' },
{ unitId: 'guan-yu', role: 'front', reason: '황충과 무인의 예를 나누며 전열을 받아낼 주력입니다.' },
{ unitId: 'zhang-fei', role: 'front', reason: '서문 보병 전열을 밀어내고 성문 압박을 유지하는 돌파 역할입니다.' },
{ unitId: 'zhao-yun', role: 'flank', reason: '장사 성문 주변 기병과 척후를 빠르게 정리하기 좋습니다.' },
{ unitId: 'zhuge-liang', role: 'support', reason: '한현의 의심과 성문 방어선을 끊는 작전 핵심입니다.' },
{ unitId: 'gong-zhi', 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: 27, role: 'reserve', unitId: 'liu-bei', label: '항복 명분' },
{ x: 6, y: 25, role: 'front', unitId: 'guan-yu', label: '노장 전열' },
{ x: 6, y: 29, role: 'front', unitId: 'zhang-fei', label: '서문 돌파' },
{ x: 8, y: 25, role: 'flank', unitId: 'zhao-yun', label: '동문 차단' },
{ x: 5, y: 27, role: 'support', unitId: 'zhuge-liang', label: '의심 해소' },
{ x: 9, y: 30, role: 'support', unitId: 'gong-zhi', label: '장사 길' }
],
note:
'장사 노장 대면전은 공지의 현지 정보가 처음 강하게 추천되는 전장입니다. 서문 마을을 안정시키고, 황충 전열을 예로 받아낸 뒤 한현의 의심선을 압박하십시오.'
},
map: twentySixthBattleMap,
units: twentySixthBattleUnits,
bonds: twentySixthBattleBonds,
mapTextureKey: 'battle-map-twenty-sixth',
leaderUnitId: 'changsha-leader-han-xuan',
quickVictoryTurnLimit: 35,
quickVictoryTurnLimit: 46,
baseVictoryGold: 3560,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '한현 퇴각',
kind: 'pacify-leader',
label: '한현 의심 해소',
rewardGold: 2320,
unitId: 'changsha-leader-han-xuan'
},
@@ -3634,19 +3700,48 @@ export const twentySixthBattleScenario: BattleScenarioDefinition = {
rewardGold: 940,
unitId: 'zhuge-liang'
},
{
id: 'west-village',
kind: 'secure-terrain',
label: '서문 마을 안정',
rewardGold: 980,
terrain: 'village',
targetTile: { x: 40, y: 20, radius: 12 },
threatRadius: 0
},
{
id: 'changsha-village',
kind: 'secure-terrain',
label: '장사 마을 안정',
rewardGold: 1120,
terrain: 'village'
terrain: 'village',
targetTile: { x: 37, y: 16, radius: 4 },
threatRadius: 0
},
{
id: 'huang-zhong-line',
kind: 'secure-terrain',
label: '황충 전열 예우',
rewardGold: 1180,
terrain: 'road',
targetTile: { x: 45, y: 16, radius: 8 },
threatRadius: 0
},
{
id: 'gate-pressure',
kind: 'secure-terrain',
label: '성문 의심선 압박',
rewardGold: 1100,
terrain: 'fort',
targetTile: { x: 45, y: 16, radius: 6 },
threatRadius: 0
},
{
id: 'quick',
kind: 'quick-victory',
label: '35턴 이내 승리',
label: '46턴 이내 승리',
rewardGold: 880,
maxTurn: 35
maxTurn: 46
}
],
defeatConditions: [
@@ -3654,6 +3749,14 @@ export const twentySixthBattleScenario: BattleScenarioDefinition = {
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 12', '상처약 8', '탁주 5', '장사 사절 문서 +1', '황충 합류', '위연 합류'],
campaignReward: {
supplies: ['콩 12', '상처약 8', '탁주 5'],
reputation: ['장사 사절 문서 +1', '황충 예우 +1'],
recruits: ['huang-zhong', 'wei-yan'],
unlockBattleId: 'twenty-seventh-battle-yizhou-relief-road',
unlockLabel: '익주 원군로 개방',
note: '황충의 명예를 지키며 한현의 의심을 꺾었습니다. 황충과 위연이 합류하고, 익주 원군 요청으로 다음 길이 열립니다.'
},
victoryPages: twentySixthBattleVictoryPages,
nextCampScene: 'CampScene'
};

View File

@@ -488,8 +488,8 @@ const sortieFlows: Record<string, SortieFlow> = {
eyebrow: '다음 전장',
title: twentySeventhBattleScenario.title,
description:
'장사까지 열리며 형주 남부의 뿌리가 단단해졌습니다. 이제 유장의 원군 요청을 명분으로 익주 원군로를 열고, 봉추 방통의 마음까지 얻어야 합니다.',
rewardHint: `예상 보상: ${twentySeventhBattleScenario.title} 개방 / 방통 합류`,
'서문 마을을 지키고 황충의 명예를 세운 끝에 장사까지 열렸습니다. 황충과 위연이 합류하며 형주 남부의 뿌리가 단단해졌고, 이제 유장의 원군 요청을 명분으로 익주 원군로를 열어야 합니다.',
rewardHint: `예상 보상: ${twentySeventhBattleScenario.title} 개방 / 황충·위연 전력화 / 방통 합류`,
nextBattleId: twentySeventhBattleScenario.id,
campaignStep: 'twenty-seventh-battle',
pages: [...twentySixthBattleVictoryPages, ...twentySeventhBattleIntroPages]

View File

@@ -1954,7 +1954,7 @@ export const twentySixthBattleIntroPages: StoryPage[] = [
chapter: '장사의 노장',
background: 'story-yizhou',
speaker: '공지',
text: '장사에는 황충이라는 노장이 있습니다. 나이는 들었으나 활은 여전히 매섭고, 성 안 병사들은 그 이름을 믿고 버팁니다.'
text: '장사 서문으로 가는 길은 제가 안내하겠습니다. 그 성에는 황충이라는 노장이 있습니다. 활은 여전히 매섭고, 성 안 병사들은 그 이름을 믿고 버팁니다.'
},
{
id: 'twenty-sixth-han-xuan-suspicion',
@@ -1962,7 +1962,7 @@ export const twentySixthBattleIntroPages: StoryPage[] = [
chapter: '의심 많은 태수',
background: 'story-yizhou',
speaker: '이적',
text: '한현은 황충의 명망도 의심한다고 합니다. 성을 무너뜨리기보다 황충의 체면을 지키면, 장사 사람들의 마음도 흔들릴 것입니다.'
text: '한현은 황충의 명망도 의심한다고 합니다. 성을 부수기보다 서문 마을을 지키고 황충 장군의 체면을 세우면, 장사 사람들의 마음도 흔들릴 것입니다.'
},
{
id: 'twenty-sixth-wei-yan-rumor',
@@ -1970,7 +1970,7 @@ export const twentySixthBattleIntroPages: StoryPage[] = [
chapter: '성문 안의 불씨',
background: 'story-yizhou',
speaker: '마량',
text: '위연이라는 장수는 성 안의 부당함을 참지 못한다고 들었습니다. 백성을 해치지 않고 한현의 의심을 꺾으면, 성 안에서 길이 열릴 수 있습니다.'
text: '위연이라는 장수는 한현의 의심과 부당한 명령을 참지 못한다고 들었습니다. 성문 전열을 흔들되 백성을 해치지 않으면, 성 안에서 길이 열릴 수 있습니다.'
},
{
id: 'twenty-sixth-changsha-sortie',
@@ -1979,7 +1979,7 @@ export const twentySixthBattleIntroPages: StoryPage[] = [
background: 'story-yizhou',
speaker: '유비',
portrait: 'liuBei',
text: '오늘은 노장의 이름을 꺾으러 가는 것이 아니오. 예를 갖추고 한현의 의심을 물리쳐, 장사의 사람을 얻어야 하오.'
text: '오늘은 노장의 이름을 꺾으러 가는 것이 아니오. 마을을 지키고 예를 갖춘 뒤 한현의 의심을 물리쳐, 장사의 사람을 얻어야 하오.'
}
];
@@ -1989,7 +1989,7 @@ export const twentySixthBattleVictoryPages: StoryPage[] = [
bgm: 'militia-theme',
chapter: '장사 성문이 열리다',
background: 'story-yizhou',
text: '한현의 의심이 전장 위에서 무너지자, 장사 성문은 크게 흔들렸습니다. 유비군은 황충의 명예를 욕보이지 않고 병사들에게 길을 열었습니다.'
text: '서문 마을이 안정되고 황충의 전열이 예를 잃지 않은 채 물러서자, 한현의 의심은 성 안에서도 힘을 잃었습니다. 장사 성문은 크게 흔들렸습니다.'
},
{
id: 'twenty-sixth-huang-zhong-joins',
@@ -1997,7 +1997,7 @@ export const twentySixthBattleVictoryPages: StoryPage[] = [
chapter: '황충의 합류',
background: 'story-yizhou',
speaker: '황충',
text: '늙은 몸이라 하나, 아직 활은 뜻을 향해 날아갈 수 있습니다. 장사를 예로 대하신 주공의 군에 제 활을 맡기겠습니다.'
text: '전장에서 늙은 이름을 욕보이지 않고 예로 맞아 주셨습니다. 아직 활은 뜻을 향해 날아갈 수 있으니, 장사를 예로 대하신 주공의 군에 제 활을 맡기겠습니다.'
},
{
id: 'twenty-sixth-wei-yan-joins',
@@ -2005,7 +2005,7 @@ export const twentySixthBattleVictoryPages: StoryPage[] = [
chapter: '위연의 결심',
background: 'story-yizhou',
speaker: '위연',
text: '의심과 두려움으로 닫힌 성문을 더는 따를 수 없습니다. 제 창은 닫힌 문을 여는 데 쓰겠습니다.'
text: '마을을 지키는 군을 향해 의심만 내세우는 성문을 더는 따를 수 없습니다. 제 창은 닫힌 문을 여는 데 쓰겠습니다.'
},
{
id: 'twenty-sixth-next-yi-province',