namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Side, "follow_me")] public class FollowMeEffect : Script, IScriptChangeIncomingTargets, IScriptOnEndTurn, IScriptOnFaint, IScriptOnSwitchOut { private readonly IBattlePokemon _user; public FollowMeEffect(IBattlePokemon user) { _user = user; } /// public void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { if (targets.Count != 1) return; if (moveChoice.ChosenMove.MoveData.HasFlag(MoveFlags.NoRedirection)) return; if (moveChoice.User.SideIndex == _user.SideIndex) return; targets = [_user]; } public void OnEndTurn(IScriptSource owner, IBattle battle) { RemoveSelf(); } public void OnFaint(IBattlePokemon pokemon, DamageSource source) { if (pokemon == _user) RemoveSelf(); } public void OnSwitchOut(IBattlePokemon oldPokemon, byte position) { if (oldPokemon == _user) RemoveSelf(); } }