public EggInfoSource(PKM pkm, IEnumerable <int> specialMoves, EncounterEgg e) { // Eggs with special moves cannot inherit levelup moves as the current moves are predefined. Special = specialMoves.Where(m => m != 0).ToList(); bool notSpecial = Special.Count == 0; AllowInherited = notSpecial && !pkm.WasGiftEgg && pkm.Species != 489 && pkm.Species != 490; // Level up moves can only be inherited if ditto is not the mother. var ratio = pkm.PersonalInfo.Gender; // Genderless/Male Only (except a few) cannot inherit. bool AllowLevelUp = ratio > 0 && ratio < 255 || Legal.MixedGenderBreeding.Contains(e.Species); Base = Legal.GetBaseEggMoves(pkm, e.Species, e.Game, e.LevelMin).ToList(); Egg = Legal.GetEggMoves(pkm, e.Species, pkm.AltForm).ToList(); LevelUp = AllowLevelUp ? Legal.GetBaseEggMoves(pkm, e.Species, e.Game, 100).Where(x => !Base.Contains(x)).ToList() : new List <int>(); Tutor = e.Game == GameVersion.C ? Legal.GetTutorMoves(pkm, pkm.Species, pkm.AltForm, false, 2).ToList() : new List <int>(); // Only TM/HM moves from the source game of the egg, not any other games from the same generation TMHM = Legal.GetTMHM(pkm, pkm.Species, pkm.AltForm, pkm.GenNumber, e.Game, false).ToList(); // Non-Base moves that can magically appear in the regular movepool bool volt = notSpecial && (pkm.GenNumber > 3 || e.Game == GameVersion.E) && Legal.LightBall.Contains(pkm.Species); if (volt) { Egg.Add(344); // Volt Tackle } }
private static CheckMoveResult[] ParseMovesIsEggPreRelearn(PKM pkm, int[] Moves, int[] SpecialMoves, bool allowinherited, EncounterEgg e) { CheckMoveResult[] res = new CheckMoveResult[4]; var baseEggMoves = Legal.GetBaseEggMoves(pkm, e.Species, e.Game, pkm.GenNumber < 4 ? 5 : 1)?.ToList() ?? new List <int>(); // Level up moves cannot be inherited if Ditto is parent, thus genderless/single gender species cannot have level up moves as an egg bool AllowLvlMoves = pkm.PersonalInfo.Gender > 0 && pkm.PersonalInfo.Gender < 255 || Legal.MixedGenderBreeding.Contains(e.Species); var InheritedLvlMoves = !AllowLvlMoves? new List <int>() : Legal.GetBaseEggMoves(pkm, e.Species, e.Game, 100)?.ToList() ?? new List <int>(); InheritedLvlMoves.RemoveAll(x => baseEggMoves.Contains(x)); var infoset = new MoveInfoSet { EggMoves = Legal.GetEggMoves(pkm, e.Species, pkm.AltForm)?.ToList() ?? new List <int>(), TutorMoves = e.Game == GameVersion.C ? Legal.GetTutorMoves(pkm, pkm.Species, pkm.AltForm, false, 2)?.ToList() : new List <int>(), TMHMMoves = Legal.GetTMHM(pkm, pkm.Species, pkm.AltForm, pkm.GenNumber, e.Game, false)?.ToList(), LvlMoves = InheritedLvlMoves, BaseMoves = baseEggMoves, SpecialMoves = SpecialMoves.Where(m => m != 0).ToList(), AllowInherited = allowinherited }; // Only TM Hm moves from the source game of the egg, not any other games from the same generation if (pkm.Format > 2 || SpecialMoves.Any()) { // For gen 2 is not possible to difference normal eggs from event eggs // If there is no special moves assume normal egg res = VerifyPreRelearnEggBase(pkm, Moves, infoset, e.Game); } else if (pkm.Format == 2) { infoset.SpecialMoves.Clear(); infoset.AllowInherited = true; res = VerifyPreRelearnEggBase(pkm, Moves, infoset, e.Game); } return(res); }