class_name EffectBase extends RefCounted ## Base class for all NBattle effects. ## Extend this class and override the callback methods to define effect behavior. ## ## OnAdd is called when the effect is first applied to a combatant. ## OnRemove is called when the effect is removed from a combatant. ## OnEvent is called for every event emitted by the battle context. ## ## Specific event handler methods (on_tick, on_stat_base, etc.) are optional ## and only called if they exist on your effect class. ## Called when this effect is added to a combatant. func on_add(ctx: EffectCtx) -> void: pass ## Called when this effect is removed from a combatant. func on_remove(ctx: EffectCtx) -> void: pass ## Called for every event emitted by the battle context. ## Override this for custom event handling, or use the specific on_* methods below. func on_event(ctx: EffectCtx, evt: NBattleEvent) -> void: match evt.get_type(): NBattleEvent.Type.TICK: if has_method("on_tick"): call("on_tick", ctx, evt) NBattleEvent.Type.COMBATANT_UPDATE: if has_method("on_combatant_update"): call("on_combatant_update", ctx, evt) NBattleEvent.Type.STAT_BASE: if has_method("on_stat_base"): call("on_stat_base", ctx, evt) NBattleEvent.Type.STAT_MOD: if has_method("on_stat_mod"): call("on_stat_mod", ctx, evt) NBattleEvent.Type.COMBATANT_EFFECT: if has_method("on_combatant_effect"): call("on_combatant_effect", ctx, evt) NBattleEvent.Type.TRIGGER: if has_method("on_trigger"): call("on_trigger", ctx, evt) ## Convenience method called during tick events. Override instead of on_event for tick-only effects. func on_tick(ctx: EffectCtx, evt: TickEvent) -> void: pass func on_combatant_update(ctx: EffectCtx, evt: CombatantUpdateEvent) -> void: pass func on_stat_base(ctx: EffectCtx, evt: StatBaseEvent) -> void: pass func on_stat_mod(ctx: EffectCtx, evt: StatModEvent) -> void: pass func on_combatant_effect(ctx: EffectCtx, evt: CombatantEffectEvent) -> void: pass func on_trigger(ctx: EffectCtx, evt: TriggerEvent) -> void: pass