import { Stance } from '../Combat/types'; export type EffectType = 'buff' | 'debuff'; export type EffectStacking = 'none' | 'intensity' | 'duration'; export type EffectTier = 1 | 2 | 3; export type EffectCategory = 'stat' | 'damage' | 'defense' | 'control' | 'regeneration' | 'advantage'; export type EffectStatTarget = Stance | 'physicalAttack' | 'physicalSkill' | 'physicalDefense' | 'physicalSave' | 'physicalTest' | 'mentalAttack' | 'mentalSkill' | 'mentalDefense' | 'mentalSave' | 'mentalTest' | 'emotionalAttack' | 'emotionalSkill' | 'emotionalDefense' | 'emotionalSave' | 'emotionalTest' | 'luck'; export interface StatModifier { stat: EffectStatTarget; value: number; isMultiplier?: boolean; } export type DotTickPhase = 'start' | 'end'; export interface DamageOverTime { damagePerRound: number; damageType: EffectStatTarget; tickPhase?: DotTickPhase; } export interface RegenerationConfig { healthPerRound?: number; } export interface ActionRestriction { forcedStance?: Stance; blockedStances?: Stance[]; skipTurn?: boolean; } export interface AdvantageModifier { grantAdvantage?: Stance[]; grantDisadvantage?: Stance[]; } export interface EffectPayload { statModifiers?: StatModifier[]; damageOverTime?: DamageOverTime; regeneration?: RegenerationConfig; actionRestriction?: ActionRestriction; advantageModifier?: AdvantageModifier; rollModifier?: number; rollModifierPerIntensity?: number; defenseModifier?: number; reflectDamage?: number; damageTakenMult?: number; } export interface Effect { id: string; name: string; description: string; type: EffectType; category: EffectCategory; duration: number; stacking: EffectStacking; tier: EffectTier; payload: EffectPayload; resistedBy?: Stance; resistDR?: number; sourcedFromCell?: string; addedIn?: string; tags?: string[]; } export interface ActiveEffect { effectId: string; remainingDuration: number; intensity: number; appliedAt: number; tier: EffectTier; resistedBy?: Stance; resistDR?: number; sourceId?: string; } export interface EffectApplicationResult { success: boolean; activeEffect?: ActiveEffect; message: string; stackedWith?: { previousIntensity: number; previousDuration: number; }; roll?: { rolled: number; resistStat: number; total: number; dr: number; wasCrit: boolean; wasFumble: boolean; }; } //# sourceMappingURL=types.d.ts.map