using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "gravity")] public class Gravity : Script { /// public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) return; battleData.Battle.Volatile.StackOrAdd("gravity", () => { battleData.Battle.Library.ScriptResolver.TryResolve(ScriptCategory.Battle, "gravity", new Dictionary(), out var script); return script; }); var chargeBounceEffect = ScriptUtils.ResolveName(); var flyEffect = ScriptUtils.ResolveName(); var skyDropEffect = ScriptUtils.ResolveName(); var telekinesisEffect = ScriptUtils.ResolveName(); foreach (var pokemon in battleData.Battle.Sides.SelectMany(x => x.Pokemon).WhereNotNull()) { if (pokemon.Volatile.Contains(chargeBounceEffect)) pokemon.Volatile.Remove(chargeBounceEffect); if (pokemon.Volatile.Contains(flyEffect)) pokemon.Volatile.Remove(flyEffect); if (pokemon.Volatile.Contains(skyDropEffect)) pokemon.Volatile.Remove(skyDropEffect); if (pokemon.Volatile.Contains(telekinesisEffect)) pokemon.Volatile.Remove(telekinesisEffect); } } }