Example #1
0
        /// <summary>
        /// Gets a moveset for the provided <see cref="PKM"/> data.
        /// </summary>
        /// <param name="pk">PKM to generate for</param>
        /// <param name="la">Precomputed optional</param>
        /// <param name="random">Full movepool &amp; shuffling</param>
        /// <returns>4 moves</returns>
        public static int[] GetMoveSet(this PKM pk, LegalityAnalysis la, bool random = false)
        {
            int[] m = la.GetSuggestedMoves(tm: random, tutor: random, reminder: random);
            if (m == null)
            {
                return(pk.Moves);
            }

            if (!m.All(z => la.AllSuggestedMovesAndRelearn().Contains(z)))
            {
                m = m.Intersect(la.AllSuggestedMovesAndRelearn()).ToArray();
            }

            if (random)
            {
                Util.Shuffle(m);
            }

            const int count = 4;

            if (m.Length > count)
            {
                return(m.SliceEnd(m.Length - count));
            }
            Array.Resize(ref m, count);
            return(m);
        }