Add second battle pursuit chapter
This commit is contained in:
@@ -3,13 +3,17 @@ import {
|
||||
firstBattleMap,
|
||||
firstBattleUnits,
|
||||
firstBattleVictoryPages,
|
||||
secondBattleBonds,
|
||||
secondBattleMap,
|
||||
secondBattleUnits,
|
||||
secondBattleVictoryPages,
|
||||
type BattleBond,
|
||||
type BattleMap,
|
||||
type StoryPage,
|
||||
type UnitData
|
||||
} from './scenario';
|
||||
|
||||
export type BattleScenarioId = 'first-battle-zhuo-commandery';
|
||||
export type BattleScenarioId = 'first-battle-zhuo-commandery' | 'second-battle-yellow-turban-pursuit';
|
||||
|
||||
export type BattleObjectiveKind = 'defeat-leader' | 'keep-unit-alive' | 'secure-terrain' | 'quick-victory';
|
||||
|
||||
@@ -101,10 +105,64 @@ export const firstBattleScenario: BattleScenarioDefinition = {
|
||||
nextCampScene: 'CampScene'
|
||||
};
|
||||
|
||||
export const secondBattleScenario: BattleScenarioDefinition = {
|
||||
id: 'second-battle-yellow-turban-pursuit',
|
||||
title: '황건 잔당 추격',
|
||||
victoryConditionLabel: '두령 한석 격파',
|
||||
defeatConditionLabel: '유비 퇴각',
|
||||
openingObjectiveLines: [
|
||||
'황건 잔당이 북쪽 마을로 달아났습니다. 두령 한석을 격파하면 적의 퇴로가 무너집니다.',
|
||||
'마을 주변에 적 위협이 남아 있으면 보상이 줄어듭니다. 길목의 습격조를 먼저 정리하십시오.',
|
||||
'12턴 이내에 승리하면 의용군의 추격전 명성이 오릅니다.'
|
||||
],
|
||||
map: secondBattleMap,
|
||||
units: secondBattleUnits,
|
||||
bonds: secondBattleBonds,
|
||||
mapTextureKey: 'battle-map-second',
|
||||
leaderUnitId: 'pursuit-leader-han-seok',
|
||||
quickVictoryTurnLimit: 12,
|
||||
baseVictoryGold: 420,
|
||||
objectives: [
|
||||
{
|
||||
id: 'leader',
|
||||
kind: 'defeat-leader',
|
||||
label: '두령 한석 격파',
|
||||
rewardGold: 260,
|
||||
unitId: 'pursuit-leader-han-seok'
|
||||
},
|
||||
{
|
||||
id: 'liu-bei',
|
||||
kind: 'keep-unit-alive',
|
||||
label: '유비 생존',
|
||||
rewardGold: 120,
|
||||
unitId: 'liu-bei'
|
||||
},
|
||||
{
|
||||
id: 'village',
|
||||
kind: 'secure-terrain',
|
||||
label: '북쪽 마을 확보',
|
||||
rewardGold: 180,
|
||||
terrain: 'village'
|
||||
},
|
||||
{
|
||||
id: 'quick',
|
||||
kind: 'quick-victory',
|
||||
label: '12턴 이내 승리',
|
||||
rewardGold: 150,
|
||||
maxTurn: 12
|
||||
}
|
||||
],
|
||||
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
||||
itemRewards: ['콩 2', '탁주 1', '의용군 명성 +2'],
|
||||
victoryPages: secondBattleVictoryPages,
|
||||
nextCampScene: 'CampScene'
|
||||
};
|
||||
|
||||
export const defaultBattleScenarioId: BattleScenarioId = firstBattleScenario.id;
|
||||
|
||||
export const battleScenarios: Record<BattleScenarioId, BattleScenarioDefinition> = {
|
||||
[firstBattleScenario.id]: firstBattleScenario
|
||||
'first-battle-zhuo-commandery': firstBattleScenario,
|
||||
'second-battle-yellow-turban-pursuit': secondBattleScenario
|
||||
};
|
||||
|
||||
export const defaultBattleScenario = battleScenarios[defaultBattleScenarioId];
|
||||
|
||||
@@ -185,6 +185,69 @@ export const firstBattleVictoryPages: StoryPage[] = [
|
||||
}
|
||||
];
|
||||
|
||||
export const secondBattleIntroPages: StoryPage[] = [
|
||||
{
|
||||
id: 'second-pursuit-rumor',
|
||||
bgm: 'militia-theme',
|
||||
chapter: '잔당의 그림자',
|
||||
background: 'story-militia',
|
||||
text: '첫 승리의 기쁨이 채 가시기도 전에, 황건 잔당이 북쪽 길목의 마을을 습격하고 있다는 급보가 도착했다.'
|
||||
},
|
||||
{
|
||||
id: 'second-liu-bei-command',
|
||||
bgm: 'battle-prep',
|
||||
chapter: '추격 명령',
|
||||
background: 'story-liu-bei',
|
||||
speaker: '유비',
|
||||
portrait: 'liuBei',
|
||||
text: '백성이 다시 칼끝에 몰렸다면 우리가 쉬어 갈 곳은 없다. 길을 따라 추격하되, 마을을 먼저 지켜야 한다.'
|
||||
},
|
||||
{
|
||||
id: 'second-guan-yu-vow',
|
||||
bgm: 'battle-prep',
|
||||
chapter: '좁은 길목',
|
||||
background: 'story-three-heroes',
|
||||
speaker: '관우',
|
||||
portrait: 'guanYu',
|
||||
text: '적은 숲과 강을 끼고 물러설 것입니다. 제가 앞길을 열겠습니다. 형님께서는 백성을 살피십시오.'
|
||||
},
|
||||
{
|
||||
id: 'second-zhang-fei-charge',
|
||||
bgm: 'battle-prep',
|
||||
chapter: '의용군 출진',
|
||||
background: 'story-sortie',
|
||||
speaker: '장비',
|
||||
portrait: 'zhangFei',
|
||||
text: '좋다! 숨어 있는 놈들도 모조리 끌어내 주마. 이번에는 도망칠 틈도 주지 않겠다!'
|
||||
}
|
||||
];
|
||||
|
||||
export const secondBattleVictoryPages: StoryPage[] = [
|
||||
{
|
||||
id: 'second-victory-village',
|
||||
bgm: 'militia-theme',
|
||||
chapter: '마을의 안도',
|
||||
background: 'story-militia',
|
||||
text: '잔당의 불길은 꺼지고, 피난하던 백성들이 하나둘 마을로 돌아왔다. 의용군의 이름은 이제 길목의 장터마다 오르내렸다.'
|
||||
},
|
||||
{
|
||||
id: 'second-victory-liu-bei',
|
||||
bgm: 'militia-theme',
|
||||
chapter: '다음 책임',
|
||||
background: 'story-liu-bei',
|
||||
speaker: '유비',
|
||||
portrait: 'liuBei',
|
||||
text: '우리가 이긴 것은 힘만으로 된 일이 아니다. 백성을 지키겠다는 뜻을 잊지 않는다면, 더 큰 전장도 견딜 수 있을 것이다.'
|
||||
},
|
||||
{
|
||||
id: 'second-victory-next',
|
||||
bgm: 'battle-prep',
|
||||
chapter: '넓어지는 전장',
|
||||
background: 'story-sortie',
|
||||
text: '탁현 인근의 소란은 잦아들었지만, 황건의 난은 아직 천하 곳곳에서 타오르고 있었다. 세 형제의 길은 이제 더 멀리 이어진다.'
|
||||
}
|
||||
];
|
||||
|
||||
export const firstBattleMap: BattleMap = {
|
||||
width: 20,
|
||||
height: 18,
|
||||
@@ -210,6 +273,33 @@ export const firstBattleMap: BattleMap = {
|
||||
]
|
||||
};
|
||||
|
||||
export const secondBattleMap: BattleMap = {
|
||||
width: 24,
|
||||
height: 20,
|
||||
terrain: [
|
||||
['forest', 'forest', 'forest', 'hill', 'plain', 'plain', 'road', 'plain', 'forest', 'hill', 'plain', 'river', 'river', 'plain', 'plain', 'forest', 'forest', 'plain', 'hill', 'hill', 'plain', 'plain', 'forest', 'forest'],
|
||||
['forest', 'hill', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'hill', 'river', 'river', 'plain', 'forest', 'forest', 'plain', 'plain', 'hill', 'fort', 'fort', 'plain', 'plain', 'forest'],
|
||||
['plain', 'plain', 'plain', 'forest', 'plain', 'road', 'plain', 'plain', 'forest', 'plain', 'plain', 'river', 'river', 'road', 'road', 'plain', 'plain', 'plain', 'plain', 'fort', 'plain', 'plain', 'plain', 'forest'],
|
||||
['plain', 'plain', 'forest', 'forest', 'plain', 'road', 'plain', 'forest', 'forest', 'plain', 'plain', 'river', 'river', 'road', 'plain', 'plain', 'hill', 'hill', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain'],
|
||||
['plain', 'forest', 'forest', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'hill', 'river', 'river', 'road', 'plain', 'plain', 'hill', 'cliff', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain'],
|
||||
['plain', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'hill', 'plain', 'plain', 'plain', 'river', 'river', 'road', 'plain', 'plain', 'hill', 'plain', 'village', 'plain', 'forest', 'forest', 'plain'],
|
||||
['plain', 'plain', 'forest', 'plain', 'road', 'plain', 'plain', 'hill', 'hill', 'plain', 'plain', 'plain', 'river', 'river', 'road', 'road', 'plain', 'plain', 'plain', 'village', 'plain', 'plain', 'forest', 'plain'],
|
||||
['plain', 'forest', 'forest', 'plain', 'road', 'plain', 'plain', 'plain', 'hill', 'plain', 'road', 'road', 'plain', 'river', 'river', 'road', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain'],
|
||||
['plain', 'forest', 'plain', 'road', 'road', 'plain', 'hill', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'hill', 'hill', 'plain'],
|
||||
['plain', 'plain', 'plain', 'road', 'plain', 'plain', 'hill', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'river', 'river', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain'],
|
||||
['hill', 'plain', 'plain', 'road', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'village', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain'],
|
||||
['hill', 'hill', 'plain', 'road', 'plain', 'forest', 'plain', 'road', 'plain', 'plain', 'village', 'village', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain'],
|
||||
['cliff', 'hill', 'plain', 'road', 'road', 'plain', 'plain', 'road', 'plain', 'plain', 'plain', 'village', 'plain', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain'],
|
||||
['cliff', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'road', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain', 'river', 'river', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain'],
|
||||
['plain', 'plain', 'camp', 'plain', 'plain', 'road', 'road', 'plain', 'road', 'plain', 'forest', 'plain', 'plain', 'forest', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain'],
|
||||
['plain', 'camp', 'camp', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'plain', 'forest', 'plain', 'hill'],
|
||||
['plain', 'camp', 'plain', 'plain', 'forest', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'plain', 'hill', 'hill'],
|
||||
['plain', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'plain', 'hill'],
|
||||
['plain', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'plain'],
|
||||
['plain', 'road', 'road', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'river', 'river', 'plain', 'plain']
|
||||
]
|
||||
};
|
||||
|
||||
export const firstBattleUnits: UnitData[] = [
|
||||
{
|
||||
id: 'liu-bei',
|
||||
@@ -507,6 +597,249 @@ export const firstBattleUnits: UnitData[] = [
|
||||
}
|
||||
];
|
||||
|
||||
const secondBattleAllyPositions: Record<string, { x: number; y: number }> = {
|
||||
'liu-bei': { x: 2, y: 15 },
|
||||
'guan-yu': { x: 3, y: 15 },
|
||||
'zhang-fei': { x: 2, y: 16 }
|
||||
};
|
||||
|
||||
export const secondBattleUnits: UnitData[] = [
|
||||
...firstBattleUnits
|
||||
.filter((unit) => unit.faction === 'ally')
|
||||
.map((unit) => placeScenarioUnit(unit, secondBattleAllyPositions[unit.id] ?? { x: unit.x, y: unit.y })),
|
||||
{
|
||||
id: 'pursuit-raider-a',
|
||||
name: '황건 추격병',
|
||||
faction: 'enemy',
|
||||
className: '황건병',
|
||||
classKey: 'yellowTurban',
|
||||
level: 2,
|
||||
exp: 12,
|
||||
hp: 23,
|
||||
maxHp: 23,
|
||||
attack: 7,
|
||||
move: 3,
|
||||
stats: { might: 55, intelligence: 34, leadership: 43, agility: 48, luck: 42 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 12 },
|
||||
armor: { itemId: 'rebel-vest', level: 1, exp: 6 },
|
||||
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
|
||||
},
|
||||
x: 7,
|
||||
y: 12
|
||||
},
|
||||
{
|
||||
id: 'pursuit-raider-b',
|
||||
name: '황건 습격병',
|
||||
faction: 'enemy',
|
||||
className: '황건병',
|
||||
classKey: 'yellowTurban',
|
||||
level: 2,
|
||||
exp: 12,
|
||||
hp: 23,
|
||||
maxHp: 23,
|
||||
attack: 7,
|
||||
move: 3,
|
||||
stats: { might: 54, intelligence: 35, leadership: 42, agility: 47, luck: 41 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 12 },
|
||||
armor: { itemId: 'rebel-vest', level: 1, exp: 6 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 10,
|
||||
y: 11
|
||||
},
|
||||
{
|
||||
id: 'pursuit-bandit-a',
|
||||
name: '산길 복병',
|
||||
faction: 'enemy',
|
||||
className: '산적',
|
||||
classKey: 'bandit',
|
||||
level: 2,
|
||||
exp: 14,
|
||||
hp: 24,
|
||||
maxHp: 24,
|
||||
attack: 8,
|
||||
move: 3,
|
||||
stats: { might: 58, intelligence: 32, leadership: 40, agility: 53, luck: 44 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 13 },
|
||||
armor: { itemId: 'rebel-vest', level: 1, exp: 7 },
|
||||
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
|
||||
},
|
||||
x: 6,
|
||||
y: 8
|
||||
},
|
||||
{
|
||||
id: 'pursuit-archer-a',
|
||||
name: '황건 궁병',
|
||||
faction: 'enemy',
|
||||
className: '궁병',
|
||||
classKey: 'archer',
|
||||
level: 2,
|
||||
exp: 16,
|
||||
hp: 20,
|
||||
maxHp: 20,
|
||||
attack: 8,
|
||||
move: 3,
|
||||
stats: { might: 54, intelligence: 43, leadership: 45, agility: 58, luck: 45 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'short-bow', level: 1, exp: 16 },
|
||||
armor: { itemId: 'cloth-armor', level: 1, exp: 7 },
|
||||
accessory: { itemId: 'wind-quiver', level: 1, exp: 0 }
|
||||
},
|
||||
x: 12,
|
||||
y: 10
|
||||
},
|
||||
{
|
||||
id: 'pursuit-cavalry-a',
|
||||
name: '황건 기병',
|
||||
faction: 'enemy',
|
||||
className: '경기병',
|
||||
classKey: 'cavalry',
|
||||
level: 3,
|
||||
exp: 18,
|
||||
hp: 26,
|
||||
maxHp: 26,
|
||||
attack: 9,
|
||||
move: 5,
|
||||
stats: { might: 62, intelligence: 35, leadership: 48, agility: 65, luck: 46 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 18 },
|
||||
armor: { itemId: 'rebel-vest', level: 1, exp: 8 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 15,
|
||||
y: 7
|
||||
},
|
||||
{
|
||||
id: 'pursuit-raider-c',
|
||||
name: '마을 습격병',
|
||||
faction: 'enemy',
|
||||
className: '황건병',
|
||||
classKey: 'yellowTurban',
|
||||
level: 2,
|
||||
exp: 13,
|
||||
hp: 24,
|
||||
maxHp: 24,
|
||||
attack: 7,
|
||||
move: 3,
|
||||
stats: { might: 56, intelligence: 34, leadership: 43, agility: 49, luck: 42 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 13 },
|
||||
armor: { itemId: 'rebel-vest', level: 1, exp: 7 },
|
||||
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
|
||||
},
|
||||
x: 17,
|
||||
y: 6
|
||||
},
|
||||
{
|
||||
id: 'pursuit-archer-b',
|
||||
name: '황건 궁병',
|
||||
faction: 'enemy',
|
||||
className: '궁병',
|
||||
classKey: 'archer',
|
||||
level: 3,
|
||||
exp: 18,
|
||||
hp: 21,
|
||||
maxHp: 21,
|
||||
attack: 8,
|
||||
move: 3,
|
||||
stats: { might: 55, intelligence: 45, leadership: 46, agility: 59, luck: 47 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'short-bow', level: 1, exp: 18 },
|
||||
armor: { itemId: 'cloth-armor', level: 1, exp: 8 },
|
||||
accessory: { itemId: 'wind-quiver', level: 1, exp: 0 }
|
||||
},
|
||||
x: 20,
|
||||
y: 5
|
||||
},
|
||||
{
|
||||
id: 'pursuit-cavalry-b',
|
||||
name: '황건 기병',
|
||||
faction: 'enemy',
|
||||
className: '경기병',
|
||||
classKey: 'cavalry',
|
||||
level: 3,
|
||||
exp: 19,
|
||||
hp: 27,
|
||||
maxHp: 27,
|
||||
attack: 9,
|
||||
move: 5,
|
||||
stats: { might: 63, intelligence: 35, leadership: 49, agility: 66, luck: 47 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 19 },
|
||||
armor: { itemId: 'rebel-vest', level: 1, exp: 8 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 18,
|
||||
y: 3
|
||||
},
|
||||
{
|
||||
id: 'pursuit-guard-a',
|
||||
name: '한석 친위병',
|
||||
faction: 'enemy',
|
||||
className: '황건병',
|
||||
classKey: 'yellowTurban',
|
||||
level: 3,
|
||||
exp: 16,
|
||||
hp: 25,
|
||||
maxHp: 25,
|
||||
attack: 8,
|
||||
move: 3,
|
||||
stats: { might: 58, intelligence: 36, leadership: 48, agility: 50, luck: 44 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 16 },
|
||||
armor: { itemId: 'rebel-vest', level: 1, exp: 8 },
|
||||
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
|
||||
},
|
||||
x: 19,
|
||||
y: 2
|
||||
},
|
||||
{
|
||||
id: 'pursuit-guard-b',
|
||||
name: '한석 친위병',
|
||||
faction: 'enemy',
|
||||
className: '황건병',
|
||||
classKey: 'yellowTurban',
|
||||
level: 3,
|
||||
exp: 16,
|
||||
hp: 25,
|
||||
maxHp: 25,
|
||||
attack: 8,
|
||||
move: 3,
|
||||
stats: { might: 58, intelligence: 36, leadership: 48, agility: 50, luck: 44 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 16 },
|
||||
armor: { itemId: 'rebel-vest', level: 1, exp: 8 },
|
||||
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
|
||||
},
|
||||
x: 21,
|
||||
y: 2
|
||||
},
|
||||
{
|
||||
id: 'pursuit-leader-han-seok',
|
||||
name: '두령 한석',
|
||||
faction: 'enemy',
|
||||
className: '두령',
|
||||
classKey: 'rebelLeader',
|
||||
level: 4,
|
||||
exp: 24,
|
||||
hp: 38,
|
||||
maxHp: 38,
|
||||
attack: 11,
|
||||
move: 3,
|
||||
stats: { might: 68, intelligence: 48, leadership: 64, agility: 54, luck: 52 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'leader-axe', level: 1, exp: 24 },
|
||||
armor: { itemId: 'lamellar-armor', level: 1, exp: 14 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 20,
|
||||
y: 1
|
||||
}
|
||||
];
|
||||
|
||||
export const firstBattleBonds: BattleBond[] = [
|
||||
{
|
||||
id: 'liu-bei__guan-yu',
|
||||
@@ -533,3 +866,24 @@ export const firstBattleBonds: BattleBond[] = [
|
||||
description: '둘이 같은 전선을 압박하면 연계 공격의 기초 확률이 오른다.'
|
||||
}
|
||||
];
|
||||
|
||||
export const secondBattleBonds: BattleBond[] = firstBattleBonds.map(cloneBattleBondForScenario);
|
||||
|
||||
function placeScenarioUnit(unit: UnitData, position: { x: number; y: number }): UnitData {
|
||||
return {
|
||||
...cloneUnitForScenario(unit),
|
||||
x: position.x,
|
||||
y: position.y
|
||||
};
|
||||
}
|
||||
|
||||
function cloneUnitForScenario(unit: UnitData): UnitData {
|
||||
return JSON.parse(JSON.stringify(unit)) as UnitData;
|
||||
}
|
||||
|
||||
function cloneBattleBondForScenario(bond: BattleBond): BattleBond {
|
||||
return {
|
||||
...bond,
|
||||
unitIds: [...bond.unitIds] as [string, string]
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user