Example #1
0
        public override IEnumerable <EncounterSlot> GetMatchingSlots(PKM pkm, IReadOnlyList <EvoCriteria> chain)
        {
            var sf = chain.FirstOrDefault(z => z.Species == Species && z.Form == Form);

            if (sf == null)
            {
                yield break;
            }

            var stamp = EncounterSlotGO.GetTimeStamp(pkm.Met_Year + 2000, pkm.Met_Month, pkm.Met_Day);
            var met   = Math.Max(sf.MinLevel, pkm.Met_Level);

            foreach (var s in Slots)
            {
                var slot = (EncounterSlot7GO)s;
                if (!slot.IsLevelWithinRange(met))
                {
                    continue;
                }
                //if (!slot.IsBallValid(ball)) -- can have any of the in-game balls due to re-capture
                //    continue;
                if (!slot.Shiny.IsValid(pkm))
                {
                    continue;
                }
                if (!slot.IsWithinStartEnd(stamp))
                {
                    continue;
                }

                yield return(slot);
            }
        }
Example #2
0
        public override IEnumerable <EncounterSlot> GetMatchingSlots(PKM pkm, IReadOnlyList <EvoCriteria> chain)
        {
            if (pkm.TSV == 0) // HOME doesn't assign TSV=0 to accounts.
            {
                yield break;
            }

            var sf = chain.FirstOrDefault(z => z.Species == Species && (z.Form == Form || AltFormInfo.IsFormChangeable(Species, Form, z.Form, pkm.Format)));

            if (sf == null)
            {
                yield break;
            }

            var ball  = (Ball)pkm.Ball;
            var stamp = EncounterSlotGO.GetTimeStamp(pkm.Met_Year + 2000, pkm.Met_Month, pkm.Met_Day);
            var met   = Math.Max(sf.MinLevel, pkm.Met_Level);

            foreach (var s in Slots)
            {
                var slot = (EncounterSlot8GO)s;
                if (!slot.IsLevelWithinRange(met))
                {
                    continue;
                }
                if (!slot.IsBallValid(ball))
                {
                    continue;
                }
                if (!slot.Shiny.IsValid(pkm))
                {
                    continue;
                }
                if (!slot.IsWithinStartEnd(stamp))
                {
                    continue;
                }

                if (IsDeferredSlot(slot, pkm))
                {
                    continue;
                }

                yield return(slot);
            }
        }