From 5859daf1d8db598a0bce04e9736b0eb6ff547a9e Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 18 Nov 2017 21:50:48 -0800 Subject: [PATCH] Add maxspecies checks for gen7 accesses arrays outside the range for the new USUM species Closes #1631 , add test case also adds lycanroc test cases for #1630 --- PKHeX.Core/Legality/Core.cs | 8 ++++++++ .../Moves/803 - Poipole - C7B3534918F0.pk7 | Bin 0 -> 232 bytes .../WC7/745-01 - Lycanroc - AA223CC9A6E7.pk7 | Bin 0 -> 232 bytes .../WC7/745-02 - Lycanroc - B2A43CC9A6E7.pk7 | Bin 0 -> 232 bytes .../WC7/745-02 - Lycanroc - B3A83CC9A6E7.pk7 | Bin 0 -> 232 bytes 5 files changed, 8 insertions(+) create mode 100644 Tests/PKHeX.Tests/Legality/Illegal/Moves/803 - Poipole - C7B3534918F0.pk7 create mode 100644 Tests/PKHeX.Tests/Legality/Illegal/WC7/745-01 - Lycanroc - AA223CC9A6E7.pk7 create mode 100644 Tests/PKHeX.Tests/Legality/Illegal/WC7/745-02 - Lycanroc - B2A43CC9A6E7.pk7 create mode 100644 Tests/PKHeX.Tests/Legality/Illegal/WC7/745-02 - Lycanroc - B3A83CC9A6E7.pk7 diff --git a/PKHeX.Core/Legality/Core.cs b/PKHeX.Core/Legality/Core.cs index 9b62a64bc..5cab713c2 100644 --- a/PKHeX.Core/Legality/Core.cs +++ b/PKHeX.Core/Legality/Core.cs @@ -372,6 +372,8 @@ private static IEnumerable GetLvlMoves(int species, int form, int Generatio case GameVersion.MN: case GameVersion.SM: { + if (species > MaxSpeciesID_7) + break; int index = PersonalTable.SM.GetFormeIndex(species, form); r.AddRange(LevelUpSM[index].GetMoves(lvl)); if (ver == GameVersion.Any) // Fall Through @@ -550,6 +552,8 @@ internal static int[] GetBaseEggMoves(PKM pkm, int species, GameVersion gameSour case GameVersion.SN: case GameVersion.MN: case GameVersion.SM: + if (species > MaxSpeciesID_7) + break; if (pkm.InhabitedGeneration(7)) { int index = PersonalTable.SM.GetFormeIndex(species, pkm.AltForm); @@ -1603,6 +1607,8 @@ private static IEnumerable GetRelearnLVLMoves(PKM pkm, int species, int lvl return getMoves(LevelUpAO, PersonalTable.AO); case GameVersion.SN: case GameVersion.MN: + if (species > MaxSpeciesID_7) + break; return getMoves(LevelUpSM, PersonalTable.SM); case GameVersion.US: case GameVersion.UM: return getMoves(LevelUpUSUM, PersonalTable.USUM); @@ -1934,6 +1940,8 @@ private static IEnumerable GetMoves(PKM pkm, int species, int minlvlG1, int case GameVersion.Any: case GameVersion.SN: case GameVersion.MN: case GameVersion.SM: { + if (species > MaxSpeciesID_7) + break; int index = PersonalTable.SM.GetFormeIndex(species, form); if (MoveReminder) lvl = 100; // Move reminder can teach any level in movepool now! diff --git a/Tests/PKHeX.Tests/Legality/Illegal/Moves/803 - Poipole - C7B3534918F0.pk7 b/Tests/PKHeX.Tests/Legality/Illegal/Moves/803 - Poipole - C7B3534918F0.pk7 new file mode 100644 index 0000000000000000000000000000000000000000..834f455301fc5c977c405a3f0dbc8998290ac2f9 GIT binary patch literal 232 zcmew$;Tg=pu=%($GXsN^f#t~yLc$CWm>3vNuuQ$r%)&qr1Tf??WHJ;0$sC4Mpz0ik zM5vyHjD3tT4517nB3%5a#{B>P-yT(jcwRX}3eW}+E(Vgwpb^dy;Nb$YFEFrZFen&u KFamwUzyJXDG8T#e literal 0 HcmV?d00001 diff --git a/Tests/PKHeX.Tests/Legality/Illegal/WC7/745-01 - Lycanroc - AA223CC9A6E7.pk7 b/Tests/PKHeX.Tests/Legality/Illegal/WC7/745-01 - Lycanroc - AA223CC9A6E7.pk7 new file mode 100644 index 0000000000000000000000000000000000000000..44f24f43933013c944222130f5448b11cda6cfbf GIT binary patch literal 232 zcmaF9?4%6?gVL&(ObiT{ST3>f+A%N~Gcqu25H6i8&dJEg#Ka8bp#TS{qmjj8y_zVo%c@B~R4BiYL45nHU%@v0P%|wPRq|%E-X5LAZ3XxF91V6B9F#hXPoTc|Hu449N_M z40#Mi4EaD70w^-*FsxvVW>S{qmjj8y_zVo%c@B~R4BiYL45