namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// /// Aftermath is an ability that causes the attacker to lose 1/4 of its maximum HP if it knocks out the user with a contact move. /// This effect only triggers if the move that caused the faint was a contact move. /// /// Bulbapedia - Aftermath /// [Script(ScriptCategory.Ability, "aftermath")] public class Aftermath : Script, IScriptOnIncomingHit { private IExecutingMove? _lastAttack; /// public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { _lastAttack = !move.GetHitData(target, hit).IsContact ? move : null; } /// public override void OnFaint(IPokemon pokemon, DamageSource source) { if (source != DamageSource.MoveDamage) return; if (_lastAttack is null) return; var user = _lastAttack.User; if (!user.IsUsable) return; if (user.BattleData is null) return; EventBatchId eventBatchId = new(); user.BattleData.Battle.EventHook.Invoke(new AbilityTriggerEvent(pokemon) { BatchId = eventBatchId, }); user.Damage(user.MaxHealth / 4, DamageSource.Misc, eventBatchId); } }