using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "judgement")] public class Judgement : Script, IScriptChangeMoveType { private static readonly Dictionary PlateTypes = new() { { ItemNames.DreadPlate, TypeNames.Dark }, { ItemNames.EarthPlate, TypeNames.Ground }, { ItemNames.FistPlate, TypeNames.Fighting }, { ItemNames.FlamePlate, TypeNames.Fire }, { ItemNames.IciclePlate, TypeNames.Ice }, { ItemNames.InsectPlate, TypeNames.Bug }, { ItemNames.IronPlate, TypeNames.Steel }, { ItemNames.MeadowPlate, TypeNames.Grass }, { ItemNames.MindPlate, TypeNames.Psychic }, { ItemNames.PixiePlate, TypeNames.Fairy }, { ItemNames.SkyPlate, TypeNames.Flying }, { ItemNames.SpookyPlate, TypeNames.Ghost }, { ItemNames.StonePlate, TypeNames.Rock }, { ItemNames.ToxicPlate, TypeNames.Poison }, { ItemNames.ZapPlate, TypeNames.Electric }, { ItemNames.DracoPlate, TypeNames.Dragon }, { ItemNames.SplashPlate, TypeNames.Water }, }; /// public void ChangeMoveType(IExecutingMove move, IBattlePokemon target, byte hit, ref TypeIdentifier? moveType) { //If Magic Room is in effect, Judgment's type will always be Normal regardless of the Plate held if (move.Battle.Volatile.Contains()) { return; } var heldItem = move.User.HeldItem; if (heldItem == null) return; var typeLibrary = target.Library.StaticLibrary.Types; if (PlateTypes.TryGetValue(heldItem.Name, out var typeName) && typeLibrary.TryGetTypeIdentifier(typeName, out var type)) { moveType = type; } } }