import { Entity } from '../entities/entity.js'; import { DamageFlags, DamageMod } from '../combat/index.js'; /** * Script hooks interface for game events. */ export interface ScriptHooks { /** * Called when a map is loaded. */ onMapLoad?: (mapName: string) => void; /** * Called when a map is unloaded. */ onMapUnload?: () => void; /** * Called when a player spawns (initial or respawn). */ onPlayerSpawn?: (player: Entity) => void; /** * Called when a player dies. */ onPlayerDeath?: (player: Entity, inflictor: Entity | null, attacker: Entity | null, damage: number) => void; /** * Called when any entity spawns. */ onEntitySpawn?: (entity: Entity) => void; /** * Called when an entity is removed (freed). */ onEntityRemove?: (entity: Entity) => void; /** * Called when an entity takes damage. * Return false to prevent damage (optional, depending on implementation complexity). */ onDamage?: (target: Entity, inflictor: Entity | null, attacker: Entity | null, damage: number, flags: DamageFlags, mod: DamageMod) => void; /** * Called when an item is picked up. */ onPickup?: (entity: Entity, item: Entity) => void; } /** * Registry for managing script hooks. */ export declare class ScriptHookRegistry { private hooks; /** * Register a new set of hooks. * @param hooks The hooks to register. * @returns A cleanup function to unregister these hooks. */ register(hooks: ScriptHooks): () => void; onMapLoad(mapName: string): void; onMapUnload(): void; onPlayerSpawn(player: Entity): void; onPlayerDeath(player: Entity, inflictor: Entity | null, attacker: Entity | null, damage: number): void; onEntitySpawn(entity: Entity): void; onEntityRemove(entity: Entity): void; onDamage(target: Entity, inflictor: Entity | null, attacker: Entity | null, damage: number, flags: DamageFlags, mod: DamageMod): void; onPickup(entity: Entity, item: Entity): void; } //# sourceMappingURL=hooks.d.ts.map