using PkmnLib.Dynamic.Models.BattleFlow; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "pursuit")] public class PursuitEffect : Script { private readonly IMoveChoice _choice; public PursuitEffect(IMoveChoice choice) { _choice = choice; } /// public override void OnSwitchOut(IPokemon oldPokemon, byte position) { var battleData = oldPokemon.BattleData; if (battleData == null) return; if (battleData.Battle.HasEnded) return; if (battleData.Position != _choice.TargetPosition || battleData.SideIndex != _choice.TargetSide) return; if (!_choice.User.IsUsable) return; if (_choice.User.BattleData?.IsOnBattlefield != true) return; var choiceQueue = battleData.Battle.ChoiceQueue; var choice = choiceQueue?.FirstOrDefault(x => x == _choice); if (choice == null) return; choiceQueue!.Remove(choice); _choice.Volatile.Add(new PursuitDoublePowerEffect()); RemoveSelf(); TurnRunner.ExecuteChoice(battleData.Battle, _choice); } [Script(ScriptCategory.Pokemon, "pursuit_double_power")] private class PursuitDoublePowerEffect : Script { /// public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = basePower.MultiplyOrMax(2); } } }