Expand first battle map and camera controls

This commit is contained in:
2026-06-22 14:56:22 +09:00
parent 6509d2a682
commit 3538a3aaaa
4 changed files with 717 additions and 92 deletions

View File

@@ -142,21 +142,27 @@ export const prologuePages: StoryPage[] = [
];
export const firstBattleMap: BattleMap = {
width: 12,
height: 12,
width: 20,
height: 18,
terrain: [
['plain', 'plain', 'forest', 'forest', 'plain', 'road', 'road', 'hill', 'hill', 'plain', 'plain', 'plain'],
['plain', 'forest', 'forest', 'plain', 'plain', 'road', 'road', 'plain', 'hill', 'plain', 'plain', 'plain'],
['plain', 'forest', 'plain', 'plain', 'plain', 'road', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain'],
['plain', 'plain', 'plain', 'hill', 'hill', 'road', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain'],
['plain', 'plain', 'plain', 'hill', 'plain', 'road', 'road', 'forest', 'plain', 'plain', 'fort', 'plain'],
['plain', 'plain', 'plain', 'plain', 'plain', 'village', 'road', 'plain', 'plain', 'plain', 'forest', 'forest'],
['plain', 'plain', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'forest', 'plain'],
['forest', 'forest', 'plain', 'plain', 'plain', 'road', 'plain', 'hill', 'hill', 'plain', 'plain', 'plain'],
['forest', 'plain', 'plain', 'plain', 'plain', 'road', 'plain', 'hill', 'plain', 'plain', 'plain', 'plain'],
['plain', 'camp', 'plain', 'forest', 'forest', 'road', 'road', 'plain', 'plain', 'plain', 'plain', 'plain'],
['plain', 'camp', 'camp', 'plain', 'forest', 'plain', 'road', 'plain', 'plain', 'forest', 'forest', 'plain'],
['plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'plain']
['forest', 'forest', 'hill', 'hill', 'cliff', 'cliff', 'hill', 'plain', 'road', 'road', 'plain', 'forest', 'hill', 'hill', 'plain', 'plain', 'forest', 'hill', 'hill', 'plain'],
['forest', 'hill', 'hill', 'plain', 'cliff', 'hill', 'plain', 'plain', 'road', 'road', 'plain', 'forest', 'forest', 'hill', 'plain', 'plain', 'plain', 'hill', 'fort', 'plain'],
['plain', 'forest', 'plain', 'plain', 'hill', 'hill', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'fort', 'fort', 'plain', 'plain'],
['plain', 'plain', 'plain', 'forest', 'hill', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'hill', 'plain', 'fort', 'plain', 'plain', 'forest'],
['plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'road', 'plain', 'plain', 'forest', 'forest', 'plain', 'river', 'river', 'plain', 'plain', 'plain', 'plain', 'forest', 'forest'],
['plain', 'plain', 'plain', 'forest', 'plain', 'road', 'road', 'plain', 'forest', 'plain', 'plain', 'plain', 'river', 'river', 'plain', 'village', 'plain', 'plain', 'plain', 'forest'],
['plain', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain', 'river', 'river', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain'],
['hill', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'hill', 'hill', 'plain', 'hill', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain'],
['hill', 'hill', 'plain', 'road', 'forest', 'plain', 'plain', 'hill', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain'],
['plain', 'plain', 'road', 'road', 'forest', 'plain', 'plain', 'plain', 'village', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain', 'plain'],
['plain', 'road', 'road', 'plain', 'plain', 'plain', 'forest', 'plain', 'road', 'road', 'road', 'plain', 'plain', 'forest', 'plain', 'plain', 'hill', 'hill', 'plain', 'plain'],
['road', 'road', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'river', 'river', 'plain', 'plain', 'forest', 'forest', 'plain', 'hill', 'hill', 'plain', 'plain', 'plain'],
['plain', 'road', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'river', 'river', 'plain', 'village', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain'],
['plain', 'road', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain', 'river', 'river', 'plain', 'plain', 'plain', 'camp', 'plain', 'plain', 'forest', 'plain', 'plain', 'hill'],
['camp', 'road', 'plain', 'plain', 'hill', 'plain', 'hill', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'hill', 'hill'],
['camp', 'camp', 'road', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'road', 'road', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'hill'],
['plain', 'camp', 'road', 'plain', 'forest', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain'],
['plain', 'plain', 'road', 'road', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'road', 'road', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain']
]
};
@@ -180,7 +186,7 @@ export const firstBattleUnits: UnitData[] = [
accessory: { itemId: 'peach-charm', level: 1, exp: 0 }
},
x: 1,
y: 9
y: 15
},
{
id: 'guan-yu',
@@ -201,7 +207,7 @@ export const firstBattleUnits: UnitData[] = [
accessory: { itemId: 'war-manual', level: 1, exp: 0 }
},
x: 2,
y: 10
y: 15
},
{
id: 'zhang-fei',
@@ -222,7 +228,7 @@ export const firstBattleUnits: UnitData[] = [
accessory: { itemId: 'bravery-token', level: 1, exp: 0 }
},
x: 1,
y: 10
y: 16
},
{
id: 'rebel-a',
@@ -242,8 +248,8 @@ export const firstBattleUnits: UnitData[] = [
armor: { itemId: 'rebel-vest', level: 1, exp: 4 },
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
},
x: 8,
y: 2
x: 10,
y: 12
},
{
id: 'rebel-b',
@@ -263,8 +269,8 @@ export const firstBattleUnits: UnitData[] = [
armor: { itemId: 'rebel-vest', level: 1, exp: 5 },
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
},
x: 9,
y: 3
x: 12,
y: 12
},
{
id: 'rebel-c',
@@ -284,8 +290,155 @@ export const firstBattleUnits: UnitData[] = [
armor: { itemId: 'cloth-armor', level: 1, exp: 6 },
accessory: { itemId: 'wind-quiver', level: 1, exp: 0 }
},
x: 10,
y: 2
x: 13,
y: 11
},
{
id: 'rebel-d',
name: '황건병',
faction: 'enemy',
className: '황건병',
classKey: 'yellowTurban',
level: 1,
exp: 8,
hp: 21,
maxHp: 21,
attack: 6,
move: 3,
stats: { might: 51, intelligence: 31, leadership: 39, agility: 44, luck: 39 },
equipment: {
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 8 },
armor: { itemId: 'rebel-vest', level: 1, exp: 5 },
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
},
x: 6,
y: 8
},
{
id: 'rebel-e',
name: '황건병',
faction: 'enemy',
className: '황건병',
classKey: 'yellowTurban',
level: 1,
exp: 8,
hp: 21,
maxHp: 21,
attack: 6,
move: 3,
stats: { might: 50, intelligence: 33, leadership: 37, agility: 46, luck: 41 },
equipment: {
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 8 },
armor: { itemId: 'rebel-vest', level: 1, exp: 5 },
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
},
x: 5,
y: 9
},
{
id: 'rebel-cavalry-a',
name: '황건기병',
faction: 'enemy',
className: '경기병',
classKey: 'cavalry',
level: 2,
exp: 14,
hp: 24,
maxHp: 24,
attack: 8,
move: 5,
stats: { might: 58, intelligence: 34, leadership: 45, agility: 62, luck: 42 },
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: 9,
y: 9
},
{
id: 'rebel-archer-b',
name: '황건궁병',
faction: 'enemy',
className: '궁병',
classKey: 'archer',
level: 2,
exp: 12,
hp: 19,
maxHp: 19,
attack: 7,
move: 3,
stats: { might: 53, intelligence: 42, leadership: 44, agility: 57, luck: 44 },
equipment: {
weapon: { itemId: 'short-bow', level: 1, exp: 12 },
armor: { itemId: 'cloth-armor', level: 1, exp: 6 },
accessory: { itemId: 'wind-quiver', level: 1, exp: 0 }
},
x: 15,
y: 5
},
{
id: 'rebel-cavalry-b',
name: '황건기병',
faction: 'enemy',
className: '경기병',
classKey: 'cavalry',
level: 2,
exp: 16,
hp: 25,
maxHp: 25,
attack: 8,
move: 5,
stats: { might: 60, intelligence: 35, leadership: 48, agility: 63, luck: 45 },
equipment: {
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 14 },
armor: { itemId: 'rebel-vest', level: 1, exp: 7 },
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
},
x: 14,
y: 7
},
{
id: 'rebel-f',
name: '황건병',
faction: 'enemy',
className: '황건병',
classKey: 'yellowTurban',
level: 2,
exp: 10,
hp: 23,
maxHp: 23,
attack: 7,
move: 3,
stats: { might: 54, intelligence: 35, leadership: 43, agility: 47, luck: 42 },
equipment: {
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 10 },
armor: { itemId: 'rebel-vest', level: 1, exp: 6 },
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
},
x: 15,
y: 3
},
{
id: 'rebel-g',
name: '황건병',
faction: 'enemy',
className: '황건병',
classKey: 'yellowTurban',
level: 2,
exp: 11,
hp: 23,
maxHp: 23,
attack: 7,
move: 3,
stats: { might: 55, intelligence: 36, leadership: 44, agility: 48, luck: 43 },
equipment: {
weapon: { itemId: 'yellow-turban-saber', level: 1, exp: 10 },
armor: { itemId: 'rebel-vest', level: 1, exp: 6 },
accessory: { itemId: 'yellow-scarf-charm', level: 1, exp: 0 }
},
x: 17,
y: 3
},
{
id: 'rebel-leader',
@@ -305,8 +458,8 @@ export const firstBattleUnits: UnitData[] = [
armor: { itemId: 'lamellar-armor', level: 1, exp: 12 },
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
},
x: 10,
y: 4
x: 16,
y: 2
}
];