/// <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 & 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); }