## Counter: When the target takes HP damage, deals the same amount back to the source. ## Uses event interception to detect HP reductions. extends EffectBase func on_stat_base(ctx: EffectCtx, evt: StatBaseEvent) -> void: var stat_def: StatDef = ctx.target.get_context().get_stat_def_by_id(evt.stat_def_id) if not stat_def or stat_def.get_name() != "hp": return if evt.combatant_id != ctx.target.get_id(): return if ctx.source == null: return var current_hp: int = ctx.target.get_stat("hp").get_value() var diff: int = current_hp - evt.value if diff > 0: var source_hp: Stat = ctx.source.get_stat("hp") source_hp.sub_base(diff)