Example #1
0
        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);
        }
Example #2
0
        /// <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));
        }