using PkmnLib.Dynamic.Events; using PkmnLib.Dynamic.Models; using PkmnLib.Static; namespace PkmnLib.Dynamic.ScriptHandling; /// /// Base class for Pokéball scripts. /// public abstract class PokeballScript : ItemScript { /// protected PokeballScript(IItem item) : base(item) { } /// /// Returns the catch rate of the Pokéball against the given target Pokémon. /// public abstract void ChangeCatchRate(IPokemon target, ref byte catchRate); public virtual void OnAfterSuccessfulCapture(IPokemon target) { // Default implementation does nothing. // Override this method in derived classes to add custom behavior after a successful capture. } /// public override bool IsItemUsable => true; /// public override bool RequiresTarget => true; /// public override bool IsTargetValid(IPokemon target) => target.BattleData is not null && target.BattleData.Battle.IsWildBattle; /// public override void OnUseWithTarget(IPokemon target, EventHook eventHook) { var battleData = target.BattleData; var result = battleData?.Battle.AttempCapture(battleData.SideIndex, battleData.Position, Item); if (result is { IsCaught: true }) { OnAfterSuccessfulCapture(target); } } }