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(IBattlePokemon target, ref byte catchRate); public virtual void OnAfterSuccessfulCapture(IBattlePokemon 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 ItemTargetType TargetType => ItemTargetType.FoePokemon; /// public override bool IsTargetValid(IPokemon target) => target is IBattlePokemon { Battle: { IsWildBattle: true } }; /// public override void OnUseWithTarget(IPokemon target, EventHook eventHook) { if (target is not IBattlePokemon battlePokemon) return; var result = battlePokemon.Battle.AttempCapture(battlePokemon.SideIndex, battlePokemon.Position, Item); if (result.IsCaught) { OnAfterSuccessfulCapture(battlePokemon); } } }