diff --git a/Legality/Core.cs b/Legality/Core.cs index a98fad9bd..59af8d825 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -9,7 +9,7 @@ public static partial class Legal internal static WC6[] WC6DB; // PKHeX master personal.dat internal static readonly PersonalInfo[] PersonalAO = PersonalInfo.getArray(Properties.Resources.personal_ao, PersonalInfo.SizeAO); - private static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, PersonalInfo.SizeXY); + internal static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, PersonalInfo.SizeXY); private static readonly EggMoves[] EggMoveXY = EggMoves.getArray(Data.unpackMini(Properties.Resources.eggmove_xy, "xy")); private static readonly Learnset[] LevelUpXY = Learnset.getArray(Data.unpackMini(Properties.Resources.lvlmove_xy, "xy")); private static readonly EggMoves[] EggMoveAO = EggMoves.getArray(Data.unpackMini(Properties.Resources.eggmove_ao, "ao")); diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index 7fb9e483c..b3bea16c5 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -2747,20 +2747,31 @@ private void clickSet(object sender, EventArgs e) int offset = getPKXOffset(slot); PK6 pk = preparepkx(); - if (!SAV.ORAS) + string err = ""; + if (SAV.XY) { // User Protection - string err = ""; if (pk.Moves.Any(m => m > 617)) err = "Move does not exist in X/Y."; else if (pk.Ability > 188) err = "Ability does not exist in X/Y."; else if (pk.HeldItem > 717) err = "Item does not exist in X/Y."; - - if (err != "" && Util.Prompt(MessageBoxButtons.YesNo, err, "Continue?") != DialogResult.Yes) - return; + else if (pk.Species > 721) + err = "Species does not exist in X/Y."; + else if (pk.AltForm > Legal.PersonalXY[pk.Species].FormeCount - 1) + err = "Form does not exist in X/Y."; } + else if (SAV.ORAS) + { + if (pk.Species > 721) + err = "Species does not exist in OR/AS."; + else if (pk.AltForm > Legal.PersonalAO[pk.Species].FormeCount - 1) + err = "Form does not exist in OR/AS."; + } + if (!string.IsNullOrEmpty(err) && Util.Prompt(MessageBoxButtons.YesNo, err, "Continue?") != DialogResult.Yes) + return; + if (slot >= 30 && slot < 36) // Party SAV.setPK6Party(pk, offset); else if (slot < 30 || (slot >= 36 && slot < 42 && DEV_Ability.Enabled))