namespace PkmnLib.Plugin.Gen7.Scripts.Weather; /// /// StrongWinds is a weather condition that represents strong winds in battle. /// /// Bulbapedia - Strong Winds /// [Script(ScriptCategory.Weather, "strong_winds")] public class StrongWinds : Script { private HashSet _placers = new(); public void MarkAsPlaced(IPokemon pokemon) { _placers.Add(pokemon); } /// public override void OnSwitchOut(IPokemon oldPokemon, byte position) { _placers.Remove(oldPokemon); if (_placers.Count == 0) oldPokemon.BattleData?.Battle.SetWeather(null, 0); } /// public override void PreventWeatherChange(StringKey? weatherName, ref bool preventWeatherChange) { if (weatherName == ScriptUtils.ResolveName() || weatherName == ScriptUtils.ResolveName()) return; preventWeatherChange = true; } /// public override void ChangeTypesForMove(IExecutingMove executingMove, IPokemon target, byte hitIndex, IList types) { var flyingType = types.FirstOrDefault(x => x.Name == "flying"); if (flyingType != null) { var typeLibrary = executingMove.Battle.Library.StaticLibrary.Types; var hitData = executingMove.GetHitData(target, hitIndex); if (hitData.Type != null && typeLibrary.GetSingleEffectiveness(hitData.Type.Value, flyingType) > 1) { types.Remove(flyingType); } } } }