Add Guiyang persuasion chapter

This commit is contained in:
2026-06-23 07:58:54 +09:00
parent d26a16d2a1
commit f8cc2f329c
11 changed files with 1134 additions and 28 deletions

View File

@@ -51,6 +51,10 @@ import {
twentyThirdBattleMap,
twentyThirdBattleUnits,
twentyThirdBattleVictoryPages,
twentyFourthBattleBonds,
twentyFourthBattleMap,
twentyFourthBattleUnits,
twentyFourthBattleVictoryPages,
twentiethBattleBonds,
twentiethBattleMap,
twentiethBattleUnits,
@@ -120,7 +124,8 @@ export type BattleScenarioId =
| 'twentieth-battle-jiangdong-envoy'
| 'twenty-first-battle-red-cliffs-vanguard'
| 'twenty-second-battle-red-cliffs-fire'
| 'twenty-third-battle-jingzhou-south-entry';
| 'twenty-third-battle-jingzhou-south-entry'
| 'twenty-fourth-battle-guiyang-persuasion';
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
@@ -1429,6 +1434,69 @@ export const twentyThirdBattleScenario: BattleScenarioDefinition = {
nextCampScene: 'CampScene'
};
export const twentyFourthBattleScenario: BattleScenarioDefinition = {
id: 'twenty-fourth-battle-guiyang-persuasion',
title: '계양 설득전',
victoryConditionLabel: '조범 항복',
defeatConditionLabel: '유비 또는 제갈량 퇴각',
openingObjectiveLines: [
'형주 남부의 첫 길목을 연 유비군은 계양으로 향합니다. 이번 전투는 성채를 불태우는 싸움이 아니라 조범의 마음을 굽히는 싸움입니다.',
'마량의 서신과 제갈량의 계책이 맞물리려면 마을을 안정시키고, 성채 주변 친위대를 물리쳐야 합니다.',
'유비와 제갈량을 지키며 조범을 항복시키면, 형주의 문사 이적이 군영에 합류합니다.'
],
map: twentyFourthBattleMap,
units: twentyFourthBattleUnits,
bonds: twentyFourthBattleBonds,
mapTextureKey: 'battle-map-twenty-fourth',
leaderUnitId: 'guiyang-leader-zhao-fan',
quickVictoryTurnLimit: 33,
baseVictoryGold: 3180,
objectives: [
{
id: 'leader',
kind: 'defeat-leader',
label: '조범 항복',
rewardGold: 2100,
unitId: 'guiyang-leader-zhao-fan'
},
{
id: 'liu-bei',
kind: 'keep-unit-alive',
label: '유비 생존',
rewardGold: 620,
unitId: 'liu-bei'
},
{
id: 'zhuge-liang',
kind: 'keep-unit-alive',
label: '제갈량 생존',
rewardGold: 880,
unitId: 'zhuge-liang'
},
{
id: 'guiyang-village',
kind: 'secure-terrain',
label: '계양 마을 안정',
rewardGold: 1040,
terrain: 'village'
},
{
id: 'quick',
kind: 'quick-victory',
label: '33턴 이내 승리',
rewardGold: 800,
maxTurn: 33
}
],
defeatConditions: [
{ kind: 'unit-defeated', unitId: 'liu-bei' },
{ kind: 'unit-defeated', unitId: 'zhuge-liang' }
],
itemRewards: ['콩 10', '상처약 7', '탁주 4', '계양 설득 문서 +1', '이적 합류'],
victoryPages: twentyFourthBattleVictoryPages,
nextCampScene: 'CampScene'
};
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
@@ -1454,7 +1522,8 @@ export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition>
'twentieth-battle-jiangdong-envoy': twentiethBattleScenario,
'twenty-first-battle-red-cliffs-vanguard': twentyFirstBattleScenario,
'twenty-second-battle-red-cliffs-fire': twentySecondBattleScenario,
'twenty-third-battle-jingzhou-south-entry': twentyThirdBattleScenario
'twenty-third-battle-jingzhou-south-entry': twentyThirdBattleScenario,
'twenty-fourth-battle-guiyang-persuasion': twentyFourthBattleScenario
};
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];