namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "freeze_dry")] public class FreezeDry : Script, IScriptChangeEffectiveness, IScriptOnSecondaryEffect { /// public void ChangeEffectiveness(IExecutingMove move, IBattlePokemon target, byte hit, ref float effectiveness) { var battleData = target; if (battleData == null) return; var typeLibrary = battleData.Battle.Library.StaticLibrary.Types; if (!typeLibrary.TryGetTypeIdentifier(TypeNames.Water, out var waterType)) return; var hitDataType = move.GetHitData(target, hit).Type; if (target.Types.Contains(waterType) && hitDataType.HasValue) { var effectivenessWithoutWater = target.Types.Where(x => x != waterType) .Select(x => typeLibrary.GetSingleEffectiveness(hitDataType.Value, x)).Aggregate(1f, (a, b) => a * b); effectiveness = effectivenessWithoutWater * 2; } } /// public void OnSecondaryEffect(IExecutingMove move, IBattlePokemon target, byte hit) { var battleData = target; if (battleData == null) return; if (battleData.Battle.Random.EffectChance(10, move, target, hit)) { target.SetStatus(ScriptUtils.ResolveName(), move.User); } } }