From cc9cee5d1a87356b20f2210fefea493ad1d95f0d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 12 Mar 2016 10:35:17 -0800 Subject: [PATCH] Tweak egg move check Renamed some variables, fixed an internal error --- Legality/Checks.cs | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/Legality/Checks.cs b/Legality/Checks.cs index 0cdb0fb65..646111ba5 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -238,21 +238,25 @@ public static LegalityCheck[] verifyRelearn(PK6 pk6) int skipOption = splitBreed && iterate / 2 <= i ? 1 : 0; // Fetch moves - Sliding Window - List eggMoves = new List(Legal.getBaseEggMoves(pk6, skipOption, gameSource)); - int eggCt = eggMoves.Count; + List baseMoves = new List(Legal.getBaseEggMoves(pk6, skipOption, gameSource)); + int baseCt = baseMoves.Count; + if (baseCt > 4) baseCt = 4; // Obtain Nonstandard moves - var relearn = pk6.RelearnMoves.Where(move => move != 0 && !eggMoves.Contains(move)).ToArray(); + var relearn = pk6.RelearnMoves.Where(move => move != 0 && !baseMoves.Contains(move)).ToArray(); int relearnCt = relearn.Length; - - eggMoves.AddRange(relearn); - int[] moves = eggMoves.Skip(eggCt + relearnCt - 4).Take(4).ToArray(); + // Get Move Window + List window = new List(baseMoves); + window.AddRange(relearn); + int[] moves = window.Skip(baseCt + relearnCt - 4).Take(4).ToArray(); Array.Resize(ref moves, 4); - int req = relearnCt == 4 - ? 4 - : (eggCt + relearnCt > 4 - ? 4 - eggCt - : eggCt); + int req; + if (relearnCt == 4) + req = 0; + else if (baseCt + relearnCt > 4) + req = 4 - relearnCt; + else + req = baseCt; // Movepool finalized! Check validity. var relearnMoves = Legal.getValidRelearn(pk6, skipOption).ToArray(); @@ -260,10 +264,11 @@ public static LegalityCheck[] verifyRelearn(PK6 pk6) relearnMoves = relearnMoves.Concat(new[] { 344 }).ToArray(); int[] rl = pk6.RelearnMoves; + string em = string.Join(", ", baseMoves); // Base Egg Move for (int j = 0; j < req; j++) - res[j] = rl[j] != moves[j] - ? new LegalityCheck(Severity.Invalid, $"Expected ID:{moves[j]}.") + res[j] = !baseMoves.Contains(rl[j]) + ? new LegalityCheck(Severity.Invalid, $"Base egg move missing; expected one of: {em}.") : new LegalityCheck(Severity.Valid, "Base egg move."); // Non-Base