## Defend: Reduces incoming HP damage by 50%. ## Uses event interception to halve the damage before it's applied. 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 var current_hp: int = ctx.target.get_stat("hp").get_value() var diff: int = current_hp - evt.value if diff > 0: evt.set_value(current_hp - (diff / 2))