From e8cc1a386dc90b4a4e1f27e6eec4076d82b121b7 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 7 Apr 2016 18:19:21 -0700 Subject: [PATCH] Add egg level check Catches level 12 charizards and level 50 tyranitars that were bred --- Legality/Checks.cs | 2 ++ Legality/Core.cs | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Legality/Checks.cs b/Legality/Checks.cs index 93a7abbe3..96ed9317d 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -292,6 +292,8 @@ private LegalityCheck verifyLevel() int lvl = pk6.CurrentLevel; if (lvl < pk6.Met_Level) return new LegalityCheck(Severity.Invalid, "Current level is below met level."); + if (pk6.WasEgg && !Legal.getEvolutionValid(pk6)) + return new LegalityCheck(Severity.Invalid, "Level is below evolution requirements."); if (lvl > pk6.Met_Level && lvl > 1 && lvl != 100 && pk6.EXP == PKX.getEXP(pk6.Stat_Level, pk6.Species)) return new LegalityCheck(Severity.Fishy, "Current experience matches level threshold."); diff --git a/Legality/Core.cs b/Legality/Core.cs index 727196957..4108bd338 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -351,6 +351,15 @@ internal static bool getIsFossil(PK6 pk6) return false; } + internal static bool getEvolutionValid(PK6 pk6) + { + var curr = getValidPreEvolutions(pk6); + var poss = getValidPreEvolutions(pk6, 100); + + if (SplitBreed.Contains(getBaseSpecies(pk6, 1))) + return curr.Count() >= poss.Count() - 1; + return curr.Count() >= poss.Count(); + } internal static IEnumerable getLineage(PK6 pk6) { List res = new List(); @@ -453,9 +462,10 @@ private static IEnumerable getSlots(PK6 pk6, IEnumerable getValidPreEvolutions(PK6 pk6) + private static IEnumerable getValidPreEvolutions(PK6 pk6, int lvl = -1) { - int lvl = pk6.CurrentLevel; + if (lvl < 0) + lvl = pk6.CurrentLevel; if (pk6.Species == 292 && pk6.Met_Level + 1 <= lvl && lvl >= 20) return new List {