/// <summary> /// Retrieves a list of all possible moves for each pokemon at the given level (whether by TM, HM, breeding or leveling up). /// Uses this list of moves to give each pokemon four moves. Uses a TMBank of all possible TM's available in the game to make sure that /// no team is unrealistically stacked with many TM's. Once a pokemon uses a TM to learn a move, that TM is consumed and can not be used by any other pokemon /// on the team. /// </summary> /// <param name="poke">Pokemon to choose for.</param> /// <param name="level">The level of each pokemon.</param> public Pokemon AssignMoves(Pokemon poke, int level) { var tmBank = _pokemonRepository.GetTMs().ToList(); var moves = _pokemonRepository.GetMovesForPokemon(poke.SpeciesId, level).ToList(); return(AssignMovestoPokemon(poke, moves, tmBank)); }