aether-shards/src/units/types.d.ts

115 lines
1.7 KiB
TypeScript

/**
* Type definitions for unit-related types
*/
/**
* Unit base stats
*/
export interface UnitStats {
health: number;
attack: number;
defense: number;
magic: number;
speed: number;
willpower: number;
movement: number;
tech: number;
}
/**
* Unit position
*/
export interface Position {
x: number;
y: number;
z: number;
}
/**
* Unit facing direction
*/
export type FacingDirection = "NORTH" | "SOUTH" | "EAST" | "WEST";
/**
* Unit type
*/
export type UnitType = "EXPLORER" | "ENEMY" | "STRUCTURE";
/**
* Unit team
*/
export type UnitTeam = "PLAYER" | "ENEMY" | "NEUTRAL";
/**
* Unit status
*/
export type UnitStatus = "READY" | "INJURED" | "DEPLOYED" | "DEAD";
/**
* Status effect
*/
export interface StatusEffect {
id: string;
type: string;
duration: number;
[key: string]: unknown;
}
/**
* Class mastery data
*/
export interface ClassMastery {
level: number;
xp: number;
skillPoints: number;
unlockedNodes: string[];
}
/**
* Equipment slots
*/
export interface Equipment {
weapon: unknown | null;
armor: unknown | null;
utility: unknown | null;
relic: unknown | null;
}
/**
* Unit definition from registry
*/
export interface UnitDefinition {
type?: UnitType;
name: string;
stats?: Partial<UnitStats>;
model?: string;
ai_archetype?: string;
aggro_range?: number;
xp_value?: number;
loot_table?: string;
[key: string]: unknown;
}
/**
* Explorer unit data (for roster)
*/
export interface ExplorerData {
id: string;
name: string;
classId: string;
status: UnitStatus;
history: {
missions: number;
kills: number;
};
[key: string]: unknown;
}
/**
* Roster save data
*/
export interface RosterSaveData {
roster: ExplorerData[];
graveyard: ExplorerData[];
}