| import type { PicletType, AttackType } from '../types/picletTypes'; |
|
|
| |
| export enum EncounterType { |
| WILD_PICLET = 'wildPiclet', |
| TRAINER_BATTLE = 'trainerBattle', |
| SHOP = 'shop', |
| HEALTH_CENTER = 'healthCenter' |
| } |
|
|
| |
| export interface BattleMove { |
| name: string; |
| type: AttackType; |
| power: number; |
| accuracy: number; |
| pp: number; |
| currentPp: number; |
| description: string; |
| } |
|
|
| |
| export interface PicletInstance { |
| id?: number; |
| |
| |
| typeId: string; |
| nickname?: string; |
| primaryType: PicletType; |
| secondaryType?: PicletType; |
| |
| |
| currentHp: number; |
| maxHp: number; |
| level: number; |
| xp: number; |
| attack: number; |
| defense: number; |
| fieldAttack: number; |
| fieldDefense: number; |
| speed: number; |
| |
| |
| baseHp: number; |
| baseAttack: number; |
| baseDefense: number; |
| baseFieldAttack: number; |
| baseFieldDefense: number; |
| baseSpeed: number; |
| |
| |
| moves: BattleMove[]; |
| nature: string; |
| |
| |
| isInRoster: boolean; |
| rosterPosition?: number; |
| |
| |
| caughtAt: Date; |
| bst: number; |
| tier: string; |
| role: string; |
| variance: number; |
| |
| |
| imageUrl: string; |
| imageData?: string; |
| imageCaption: string; |
| concept: string; |
| imagePrompt: string; |
| } |
|
|
| |
| export interface Encounter { |
| id?: number; |
| |
| |
| type: EncounterType; |
| |
| |
| title: string; |
| description: string; |
| picletTypeId?: string; |
| enemyLevel?: number; |
| |
| |
| createdAt: Date; |
| } |
|
|
| |
| export interface GameState { |
| id?: number; |
| |
| |
| lastEncounterRefresh: Date; |
| lastPlayed: Date; |
| |
| |
| progressPoints: number; |
| trainersDefeated: number; |
| picletsCapured: number; |
| battlesLost: number; |
| } |
|
|
| |
| export enum BattlePhase { |
| INTRO = 'intro', |
| MAIN = 'main', |
| MOVE_SELECT = 'moveSelect', |
| PICLET_SELECT = 'picletSelect', |
| FORCED_SWAP = 'forcedSwap', |
| BATTLE_END = 'battleEnd' |
| } |
|
|
| export enum ActionView { |
| MAIN = 'main', |
| MOVES = 'moves', |
| PICLETS = 'piclets', |
| ITEMS = 'items', |
| FORCED_SWAP = 'forcedSwap' |
| } |
|
|
| export interface BattleState { |
| phase: BattlePhase; |
| currentTurn: number; |
| playerPiclet: PicletInstance; |
| enemyPiclet: PicletInstance; |
| isWildBattle: boolean; |
| processingTurn: boolean; |
| battleEnded: boolean; |
| winner?: 'player' | 'enemy'; |
| capturedPiclet?: PicletInstance; |
| } |
|
|
| |
| export interface Monster { |
| id?: number; |
| name: string; |
| imageUrl: string; |
| imageData?: string; |
| imageCaption: string; |
| concept: string; |
| imagePrompt: string; |
| stats?: { |
| name: string; |
| description: string; |
| tier?: 'low' | 'medium' | 'high' | 'legendary'; |
| HP: number; |
| defence: number; |
| attack: number; |
| speed: number; |
| specialPassiveTrait: string; |
| attackActionName: string; |
| attackActionDescription: string; |
| buffActionName: string; |
| buffActionDescription: string; |
| debuffActionName: string; |
| debuffActionDescription: string; |
| specialActionName: string; |
| specialActionDescription: string; |
| }; |
| createdAt: Date; |
| } |