From a1b66ab11dca6e2ad8a509f72cced2844050b09a Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 21 Jun 2017 20:47:07 -0700 Subject: [PATCH] Tighten met level check with hasoriginal #1261 --- PKHeX.Core/Legality/Checks.cs | 4 ++-- PKHeX.Core/Legality/Structures/IEncounterable.cs | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/PKHeX.Core/Legality/Checks.cs b/PKHeX.Core/Legality/Checks.cs index 08dc84767..dcdd84506 100644 --- a/PKHeX.Core/Legality/Checks.cs +++ b/PKHeX.Core/Legality/Checks.cs @@ -354,7 +354,7 @@ private void VerifyEVs() } // Only one of the following can be true: 0, 508, and x%6!=0 - if (sum == 0 && !EncounterMatch.IsWithinRange(pkm.CurrentLevel)) + if (sum == 0 && !EncounterMatch.IsWithinRange(pkm)) AddLine(Severity.Fishy, V23, CheckIdentifier.EVs); else if (sum == 508) AddLine(Severity.Fishy, V24, CheckIdentifier.EVs); @@ -635,7 +635,7 @@ private void VerifyLevel() int lvl = pkm.CurrentLevel; if (lvl < pkm.Met_Level) AddLine(Severity.Invalid, V85, CheckIdentifier.Level); - else if (!EncounterMatch.IsWithinRange(lvl) && lvl != 100 && pkm.EXP == PKX.GetEXP(lvl, pkm.Species)) + else if (!EncounterMatch.IsWithinRange(pkm) && lvl != 100 && pkm.EXP == PKX.GetEXP(lvl, pkm.Species)) AddLine(Severity.Fishy, V87, CheckIdentifier.Level); else AddLine(Severity.Valid, V88, CheckIdentifier.Level); diff --git a/PKHeX.Core/Legality/Structures/IEncounterable.cs b/PKHeX.Core/Legality/Structures/IEncounterable.cs index 304ebc93f..e4eeca08d 100644 --- a/PKHeX.Core/Legality/Structures/IEncounterable.cs +++ b/PKHeX.Core/Legality/Structures/IEncounterable.cs @@ -11,9 +11,15 @@ public interface IEncounterable public static partial class Extensions { - public static bool IsWithinRange(this IEncounterable encounter, int lvl) + private static bool IsWithinRange(this IEncounterable encounter, int lvl) { return encounter.LevelMin <= lvl && lvl <= encounter.LevelMax; } + public static bool IsWithinRange(this IEncounterable encounter, PKM pkm) + { + if (pkm.HasOriginalMetLocation) + return pkm.CurrentLevel == pkm.Met_Level; + return encounter.IsWithinRange(pkm.CurrentLevel); + } } }