Add class and terrain battle rules

This commit is contained in:
2026-06-22 02:12:57 +09:00
parent 6db887e2da
commit f99884ea29
4 changed files with 314 additions and 83 deletions

View File

@@ -1,3 +1,5 @@
import type { TerrainType, UnitClassKey } from './battleRules';
export type PortraitKey = 'liuBei' | 'guanYu' | 'zhangFei';
export type StoryPage = {
@@ -15,6 +17,7 @@ export type UnitData = {
name: string;
faction: 'ally' | 'enemy';
className: string;
classKey: UnitClassKey;
hp: number;
maxHp: number;
attack: number;
@@ -41,8 +44,6 @@ export type BattleBond = {
description: string;
};
export type TerrainType = 'plain' | 'forest' | 'hill' | 'fort';
export type BattleMap = {
width: number;
height: number;
@@ -140,18 +141,18 @@ export const firstBattleMap: BattleMap = {
width: 12,
height: 12,
terrain: [
['plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'hill', 'hill', 'plain', 'plain', 'plain'],
['plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain', 'plain', 'plain'],
['plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain'],
['plain', 'plain', 'plain', 'hill', 'hill', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain'],
['plain', 'plain', 'plain', 'hill', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain'],
['plain', 'plain', 'plain', 'plain', 'plain', 'fort', 'plain', 'plain', 'plain', 'plain', 'forest', 'forest'],
['plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain'],
['forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'hill', 'hill', 'plain', 'plain', 'plain'],
['forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain', 'plain', 'plain', 'plain'],
['plain', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain'],
['plain', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'forest', 'forest', 'plain'],
['plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain']
['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']
]
};
@@ -160,7 +161,8 @@ export const firstBattleUnits: UnitData[] = [
id: 'liu-bei',
name: '유비',
faction: 'ally',
className: '의병장',
className: '군웅',
classKey: 'lord',
hp: 32,
maxHp: 32,
attack: 9,
@@ -173,7 +175,8 @@ export const firstBattleUnits: UnitData[] = [
id: 'guan-yu',
name: '관우',
faction: 'ally',
className: '보병',
className: '의용 보병',
classKey: 'infantry',
hp: 30,
maxHp: 30,
attack: 10,
@@ -187,6 +190,7 @@ export const firstBattleUnits: UnitData[] = [
name: '장비',
faction: 'ally',
className: '창병',
classKey: 'spearman',
hp: 30,
maxHp: 30,
attack: 10,
@@ -199,7 +203,8 @@ export const firstBattleUnits: UnitData[] = [
id: 'rebel-a',
name: '황건병',
faction: 'enemy',
className: '도적',
className: '황건병',
classKey: 'yellowTurban',
hp: 20,
maxHp: 20,
attack: 6,
@@ -212,7 +217,8 @@ export const firstBattleUnits: UnitData[] = [
id: 'rebel-b',
name: '황건병',
faction: 'enemy',
className: '도적',
className: '황건병',
classKey: 'yellowTurban',
hp: 20,
maxHp: 20,
attack: 6,
@@ -226,6 +232,7 @@ export const firstBattleUnits: UnitData[] = [
name: '황건궁병',
faction: 'enemy',
className: '궁병',
classKey: 'archer',
hp: 18,
maxHp: 18,
attack: 7,
@@ -239,6 +246,7 @@ export const firstBattleUnits: UnitData[] = [
name: '두령 한석',
faction: 'enemy',
className: '두령',
classKey: 'rebelLeader',
hp: 30,
maxHp: 30,
attack: 9,