Esempio n. 1
0
 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
 }
Esempio n. 2
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
 }
Esempio n. 3
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);
        }
Esempio n. 4
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 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);
        }