public ExtractedGame(IGameExtractor extractor) { MoveList = extractor.ExtractMoves(); Abilities = extractor.ExtractAbilities(); PokemonList = extractor.ExtractPokemon(); GiftPokemonList = extractor.ExtractGiftPokemon(); ItemList = extractor.ExtractItems(); OverworldItemList = extractor.ExtractOverworldItems(); Pokemarts = extractor.ExtractPokemarts().OrderBy(m => m.FirstItemIndex).ToArray(); TrainerPools = extractor.ExtractPools(PokemonList, MoveList); ValidMoves = MoveList.Where(m => m.MoveIndex != 0 && m.MoveIndex != 355).ToArray(); ValidPokemon = PokemonList.Where(p => !RandomizerConstants.SpecialPokemon.Contains(p.Index)).ToArray(); ValidItems = ItemList.Where(i => !RandomizerConstants.InvalidItemList.Contains(i.Index)).ToArray(); NonKeyItems = ValidItems.Where(i => i.BagSlot != BagSlots.KeyItems && i.BagSlot != BagSlots.None).ToArray(); TMs = ItemList.Where(i => i is TM).Select(i => i as TM).ToArray(); if (extractor is XDExtractor xd) { isXD = true; TutorMoves = xd.ExtractTutorMoves(); } else { isXD = false; TutorMoves = Array.Empty <TutorMove>(); } }