public int[] getSuggestedMoves(bool tm, bool tutor, bool reminder) { if (pkm == null || pkm.GenNumber < 6 || !isOriginValid(pkm)) { return(null); } return(Legal.getValidMoves(pkm, Tutor: tutor, Machine: tm, MoveReminder: reminder).Skip(1).ToArray()); // skip move 0 }
public int[] getSuggestedMoves(bool tm, bool tutor) { if (pkm == null || pkm.Format < 6) { return(null); } return(Legal.getValidMoves(pkm, Tutor: tutor, Machine: tm).Skip(1).ToArray()); // skip move 0 }
private LegalityCheck[] verifyMoves() { int[] Moves = pk6.Moves; LegalityCheck[] res = new LegalityCheck[4]; for (int i = 0; i < 4; i++) { res[i] = new LegalityCheck(); } if (!pk6.Gen6) { return(res); } var validMoves = Legal.getValidMoves(pk6).ToArray(); if (pk6.Species == 235) { for (int i = 0; i < 4; i++) { res[i] = Legal.InvalidSketch.Contains(Moves[i]) ? new LegalityCheck(Severity.Invalid, "Invalid Sketch move.") : new LegalityCheck(); } } else { int[] RelearnMoves = pk6.RelearnMoves; int[] WC6Moves = MatchedWC6?.Moves ?? new int[0]; for (int i = 0; i < 4; i++) { if (Moves[i] == Legal.Struggle) { res[i] = new LegalityCheck(Severity.Invalid, "Invalid Move: Struggle."); } else if (validMoves.Contains(Moves[i])) { res[i] = new LegalityCheck(Severity.Valid, "Level-up."); } else if (RelearnMoves.Contains(Moves[i])) { res[i] = new LegalityCheck(Severity.Valid, "Relearn Move."); } else if (WC6Moves.Contains(Moves[i])) { res[i] = new LegalityCheck(Severity.Valid, "Wondercard Non-Relearn Move."); } else { res[i] = new LegalityCheck(Severity.Invalid, "Invalid Move."); } } } if (Moves[0] == 0) { res[0] = new LegalityCheck(Severity.Invalid, "Invalid Move."); } if (pk6.Species == 647) // Keldeo { if (pk6.AltForm == 1 ^ pk6.Moves.Contains(548)) { res[0] = new LegalityCheck(Severity.Invalid, "Secret Sword / Resolute Keldeo Mismatch."); } } // Duplicate Moves Check for (int i = 0; i < 4; i++) { if (Moves.Count(m => m != 0 && m == Moves[i]) > 1) { res[i] = new LegalityCheck(Severity.Invalid, "Duplicate Move."); } } return(res); }
private LegalityCheck[] verifyMoves() { int[] Moves = pk6.Moves; LegalityCheck[] res = new LegalityCheck[4]; for (int i = 0; i < 4; i++) { res[i] = new LegalityCheck(); } if (!pk6.Gen6) { return(res); } var validMoves = Legal.getValidMoves(pk6).ToArray(); if (pk6.Species == 235) { for (int i = 0; i < 4; i++) { res[i] = Legal.InvalidSketch.Contains(Moves[i]) ? new LegalityCheck(Severity.Invalid, "Invalid Sketch move.") : new LegalityCheck(); } } else if (CardMatch?.Count > 1) // Multiple possible WC6 matched { int[] RelearnMoves = pk6.RelearnMoves; foreach (var wc in CardMatch) { for (int i = 0; i < 4; i++) { if (Moves[i] == Legal.Struggle) { res[i] = new LegalityCheck(Severity.Invalid, "Invalid Move: Struggle."); } else if (validMoves.Contains(Moves[i])) { res[i] = new LegalityCheck(Severity.Valid, Moves[i] == 0 ? "Empty" : "Level-up."); } else if (RelearnMoves.Contains(Moves[i])) { res[i] = new LegalityCheck(Severity.Valid, Moves[i] == 0 ? "Empty" : "Relearn Move.") { Flag = true } } ; else if (wc.Moves.Contains(Moves[i])) { res[i] = new LegalityCheck(Severity.Valid, "Wonder Card Non-Relearn Move."); } else { res[i] = new LegalityCheck(Severity.Invalid, "Invalid Move."); } } if (res.All(r => r.Valid)) // Card matched { EncounterMatch = wc; RelearnBase = wc.RelearnMoves; } } } else { int[] RelearnMoves = pk6.RelearnMoves; WC6 MatchedWC6 = EncounterMatch as WC6; int[] WC6Moves = MatchedWC6?.Moves ?? new int[0]; for (int i = 0; i < 4; i++) { if (Moves[i] == Legal.Struggle) { res[i] = new LegalityCheck(Severity.Invalid, "Invalid Move: Struggle."); } else if (validMoves.Contains(Moves[i])) { res[i] = new LegalityCheck(Severity.Valid, Moves[i] == 0 ? "Empty" : "Level-up."); } else if (RelearnMoves.Contains(Moves[i])) { res[i] = new LegalityCheck(Severity.Valid, Moves[i] == 0 ? "Empty" : "Relearn Move.") { Flag = true } } ; else if (WC6Moves.Contains(Moves[i])) { res[i] = new LegalityCheck(Severity.Valid, "Wonder Card Non-Relearn Move."); } else { res[i] = new LegalityCheck(Severity.Invalid, "Invalid Move."); } } } if (Moves[0] == 0) { res[0] = new LegalityCheck(Severity.Invalid, "Invalid Move."); } if (pk6.Species == 647) // Keldeo { if (pk6.AltForm == 1 ^ pk6.Moves.Contains(548)) { res[0] = new LegalityCheck(Severity.Invalid, "Secret Sword / Resolute Keldeo Mismatch."); } } // Duplicate Moves Check for (int i = 0; i < 4; i++) { if (Moves.Count(m => m != 0 && m == Moves[i]) > 1) { res[i] = new LegalityCheck(Severity.Invalid, "Duplicate Move."); } } return(res); }