From 8250bc58cd7adbb233f7b97ea76b66f6a0d3bdd9 Mon Sep 17 00:00:00 2001 From: Kurt Date: Tue, 17 Apr 2018 19:49:33 -0700 Subject: [PATCH] Fix levelup->evo fetching of next levelup move Correctly fixes #1163 (test cases added), eg wooper->quagsire would learn yawn at 31 before evolving; the getmoves wouldn't provide yawn (stopped at 30) with the old code; the lvl decrement was removed in the incorrect commit, providing a legal verdict which was obtained incorrectly (dexlevels were inaccurate) --- PKHeX.Core/Legality/Core.cs | 9 +++++++-- .../195 - QUAGSIRE - E2AD60FEC722.pk3 | Bin 0 -> 80 bytes .../229 - HOUNDOOM - 4311EC0CD621.pk3 | Bin 0 -> 80 bytes .../284 - MASQUERAIN - 8C49324DA947.pk3 | Bin 0 -> 80 bytes 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 Tests/PKHeX.Tests/Legality/Legal/Generation 3/LevelUp learn move then Evolve/195 - QUAGSIRE - E2AD60FEC722.pk3 create mode 100644 Tests/PKHeX.Tests/Legality/Legal/Generation 3/LevelUp learn move then Evolve/229 - HOUNDOOM - 4311EC0CD621.pk3 create mode 100644 Tests/PKHeX.Tests/Legality/Legal/Generation 3/LevelUp learn move then Evolve/284 - MASQUERAIN - 8C49324DA947.pk3 diff --git a/PKHeX.Core/Legality/Core.cs b/PKHeX.Core/Legality/Core.cs index 3d204ef07..36e1451e1 100644 --- a/PKHeX.Core/Legality/Core.cs +++ b/PKHeX.Core/Legality/Core.cs @@ -1590,8 +1590,9 @@ private static IEnumerable GetValidMoves(PKM pkm, GameVersion Version, DexL return r.Distinct(); } - foreach (DexLevel evo in vs) + for (var i = 0; i < vs.Length; i++) { + DexLevel evo = vs[i]; var minlvlevo1 = 1; var minlvlevo2 = 1; if (Generation == 1) @@ -1608,7 +1609,11 @@ private static IEnumerable GetValidMoves(PKM pkm, GameVersion Version, DexL if (evo.MinLevel > 1) minlvlevo2 = Math.Min(pkm.CurrentLevel, evo.MinLevel); } - r.AddRange(GetMoves(pkm, evo.Species, minlvlevo1, minlvlevo2, evo.Level, pkm.AltForm, moveTutor, Version, LVL, Tutor, Machine, MoveReminder, RemoveTransferHM, Generation)); + var maxLevel = evo.Level; + if (i != 0 && vs[i - 1].RequiresLvlUp) // evolution + ++maxLevel; // allow lvlmoves from the level it evolved to the next species + r.AddRange(GetMoves(pkm, evo.Species, minlvlevo1, minlvlevo2, maxLevel, pkm.AltForm, moveTutor, Version, + LVL, Tutor, Machine, MoveReminder, RemoveTransferHM, Generation)); } if (pkm.Format <= 3) diff --git a/Tests/PKHeX.Tests/Legality/Legal/Generation 3/LevelUp learn move then Evolve/195 - QUAGSIRE - E2AD60FEC722.pk3 b/Tests/PKHeX.Tests/Legality/Legal/Generation 3/LevelUp learn move then Evolve/195 - QUAGSIRE - E2AD60FEC722.pk3 new file mode 100644 index 0000000000000000000000000000000000000000..133dd9d6e6b4e7e921e21eeb51ca94ad350926dc GIT binary patch literal 80 zcmY#7{x2a#d!py*^Sck8J$z>We+DL|gZodOIS6E}eZ;_Un1O*Iz63~kGcZUpiZX;U XwlZ*u@QVON5WsSt=Dpf?VjuwkC-@kX literal 0 HcmV?d00001 diff --git a/Tests/PKHeX.Tests/Legality/Legal/Generation 3/LevelUp learn move then Evolve/229 - HOUNDOOM - 4311EC0CD621.pk3 b/Tests/PKHeX.Tests/Legality/Legal/Generation 3/LevelUp learn move then Evolve/229 - HOUNDOOM - 4311EC0CD621.pk3 new file mode 100644 index 0000000000000000000000000000000000000000..1c0b7c8f2ea26505eec0b13ba9c344b92394660f GIT binary patch literal 80 zcmY$q#`7jcd!px|ljl$DJ9+Z>e+DL|gZodOIk^8ngP=15!&3$ZhLG<-LX&}^nn90Y bCxZ>6h=_;=69WSfL4oBG&4Ootrh|9@|KJ$R literal 0 HcmV?d00001 diff --git a/Tests/PKHeX.Tests/Legality/Legal/Generation 3/LevelUp learn move then Evolve/284 - MASQUERAIN - 8C49324DA947.pk3 b/Tests/PKHeX.Tests/Legality/Legal/Generation 3/LevelUp learn move then Evolve/284 - MASQUERAIN - 8C49324DA947.pk3 new file mode 100644 index 0000000000000000000000000000000000000000..2ad3f6b6245fa921a4604aea66df4052959d72ee GIT binary patch literal 80 zcmZ=?>1*`4Jf!aU?z5-Q??1Eq@ChcSv%Ami{(tTcgJ%x|g9Rf4!#f8C28I9z23v+C ehA9kDj3RO({7g&?Oh8cxke#uh;cbXChywsK*%-(G literal 0 HcmV?d00001