/** * DamageSystem.ts * * Damage calculation: damage types, resistances, critical hits, * damage-over-time, armor penetration, and damage events. * * @module combat */ export type DamageType = 'physical' | 'fire' | 'ice' | 'lightning' | 'poison' | 'holy' | 'dark' | 'true'; export interface DamageInstance { id: string; sourceId: string; targetId: string; baseDamage: number; type: DamageType; isCritical: boolean; finalDamage: number; timestamp: number; } export interface Resistances { physical: number; fire: number; ice: number; lightning: number; poison: number; holy: number; dark: number; } export interface DotEffect { id: string; sourceId: string; targetId: string; type: DamageType; damagePerTick: number; tickInterval: number; duration: number; elapsed: number; lastTick: number; stacks: number; } export interface DamageConfig { critChance: number; critMultiplier: number; armorPenetration: number; globalMultiplier: number; } export declare class DamageSystem { private config; private damageLog; private dots; private resistances; private callbacks; setConfig(config: Partial): void; getConfig(): DamageConfig; setResistances(entityId: string, res: Partial): void; getResistances(entityId: string): Resistances; calculateDamage(sourceId: string, targetId: string, baseDamage: number, type: DamageType, forceCrit?: boolean): DamageInstance; applyDoT(sourceId: string, targetId: string, type: DamageType, damagePerTick: number, tickInterval: number, duration: number, stacks?: number): DotEffect; updateDoTs(dt: number): DamageInstance[]; getActiveDoTs(targetId?: string): DotEffect[]; onDamage(callback: (dmg: DamageInstance) => void): void; getDamageLog(limit?: number): DamageInstance[]; getTotalDamageDealt(sourceId: string): number; clearLog(): void; } //# sourceMappingURL=DamageSystem.d.ts.map