using System.Collections.Generic; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "gravity")] public class Gravity : Script { private int _turns = 5; /// public override void ChangeTypesForIncomingMove(IExecutingMove executingMove, IPokemon target, byte hitIndex, IList types) { var typeLibrary = target.Library.StaticLibrary.Types; if (executingMove.UseMove.MoveType.Name != "ground") return; // Remove all types that are immune to ground moves types.RemoveAll(x => typeLibrary.GetSingleEffectiveness(executingMove.UseMove.MoveType, x) == 0); } /// public override void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) { if (move.UseMove.HasFlag("gravity")) fail = true; } /// public override void IsFloating(IPokemon pokemon, ref bool isFloating) { // Gravity makes all Pokémon susceptible to Ground-type moves isFloating = false; } /// public override void OnEndTurn(IBattle battle) { _turns--; if (_turns > 0) return; RemoveSelf(); } }