public static EncounterStatic GetSuggestedMetInfo(PKM pkm) { if (pkm == null) { return(null); } int loc = GetSuggestedTransferLocation(pkm); if (pkm.WasEgg) { return(GetSuggestedEncounterEgg(pkm, loc)); } var w = EncounterSlotGenerator.GetCaptureLocation(pkm); if (w != null) { return(GetSuggestedEncounterWild(w, loc)); } var s = EncounterStaticGenerator.GetStaticLocation(pkm); if (s != null) { return(GetSuggestedEncounterStatic(s, loc)); } return(null); }
/// <summary> /// Gets an object containing met data properties that might be legal. /// </summary> public static EncounterSuggestionData?GetSuggestedMetInfo(PKM pkm) { int loc = GetSuggestedTransferLocation(pkm); if (pkm.WasEgg) { return(GetSuggestedEncounterEgg(pkm, loc)); } var chain = EvolutionChain.GetValidPreEvolutions(pkm, maxLevel: 100, skipChecks: true); var w = EncounterSlotGenerator.GetCaptureLocation(pkm, chain); var s = EncounterStaticGenerator.GetStaticLocation(pkm, chain); if (w is null) { return(s is null ? null : GetSuggestedEncounter(pkm, s, loc)); } if (s is null) { return(GetSuggestedEncounter(pkm, w, loc)); } bool isDefinitelySlot = chain.Any(z => z.Species == w.Species && z.Form == w.Form); bool isDefinitelyStatic = chain.Any(z => z.Species == s.Species && z.Form == s.Form); IEncounterable obj = (isDefinitelySlot || !isDefinitelyStatic) ? w : s; return(GetSuggestedEncounter(pkm, obj, loc)); }