Scaffold tactical RPG web prototype
This commit is contained in:
78
src/game/data/scenario.ts
Normal file
78
src/game/data/scenario.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
export type StoryLine = {
|
||||
speaker: string;
|
||||
portrait: 'lord' | 'strategist' | 'captain';
|
||||
text: string;
|
||||
};
|
||||
|
||||
export type UnitData = {
|
||||
id: string;
|
||||
name: string;
|
||||
faction: 'ally' | 'enemy';
|
||||
className: string;
|
||||
hp: number;
|
||||
maxHp: number;
|
||||
attack: number;
|
||||
move: number;
|
||||
x: number;
|
||||
y: number;
|
||||
};
|
||||
|
||||
export type TerrainType = 'plain' | 'forest' | 'hill' | 'fort';
|
||||
|
||||
export type BattleMap = {
|
||||
width: number;
|
||||
height: number;
|
||||
terrain: TerrainType[][];
|
||||
};
|
||||
|
||||
export const prologueLines: StoryLine[] = [
|
||||
{
|
||||
speaker: '유현',
|
||||
portrait: 'lord',
|
||||
text: '황건의 깃발이 마을 어귀까지 내려왔다. 오늘 물러서면 내일은 지킬 집도 없다.'
|
||||
},
|
||||
{
|
||||
speaker: '서윤',
|
||||
portrait: 'strategist',
|
||||
text: '적은 많지만 대열은 흐트러져 있습니다. 숲길을 잡으면 첫 싸움은 해볼 만합니다.'
|
||||
},
|
||||
{
|
||||
speaker: '장무',
|
||||
portrait: 'captain',
|
||||
text: '명만 내려주십시오. 창병 둘과 기병 하나라면 길목은 막아낼 수 있습니다.'
|
||||
},
|
||||
{
|
||||
speaker: '유현',
|
||||
portrait: 'lord',
|
||||
text: '좋다. 백성을 뒤로 물리고, 우리는 앞에서 시간을 벌겠다.'
|
||||
}
|
||||
];
|
||||
|
||||
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']
|
||||
]
|
||||
};
|
||||
|
||||
export const firstBattleUnits: UnitData[] = [
|
||||
{ id: 'you-hyun', name: '유현', faction: 'ally', className: '의병장', hp: 32, maxHp: 32, attack: 9, move: 4, x: 1, y: 9 },
|
||||
{ id: 'jang-mu', name: '장무', faction: 'ally', className: '창병', hp: 28, maxHp: 28, attack: 8, move: 3, x: 2, y: 10 },
|
||||
{ id: 'seo-yun', name: '서윤', faction: 'ally', className: '책사', hp: 24, maxHp: 24, attack: 6, move: 3, x: 1, y: 10 },
|
||||
{ id: 'rebel-a', name: '황건병', faction: 'enemy', className: '도적', hp: 20, maxHp: 20, attack: 6, move: 3, x: 8, y: 2 },
|
||||
{ id: 'rebel-b', name: '황건병', faction: 'enemy', className: '도적', hp: 20, maxHp: 20, attack: 6, move: 3, x: 9, y: 3 },
|
||||
{ id: 'rebel-c', name: '황건궁병', faction: 'enemy', className: '궁병', hp: 18, maxHp: 18, attack: 7, move: 3, x: 10, y: 2 },
|
||||
{ id: 'rebel-leader', name: '두령 한석', faction: 'enemy', className: '두령', hp: 30, maxHp: 30, attack: 9, move: 3, x: 10, y: 4 }
|
||||
];
|
||||
Reference in New Issue
Block a user