Example #1
0
 protected virtual bool IsMatchForm(PKM pkm, DexLevel evo)
 {
     if (SkipFormCheck)
     {
         return(true);
     }
     return(Form == evo.Form || AltFormInfo.IsFormChangeable(Species, Form, pkm.AltForm, pkm.Format));
 }
Example #2
0
        protected override bool IsMatchForm(PKM pkm, DexLevel evo)
        {
            if (SkipFormCheck)
            {
                return(true);
            }

            if (AltFormInfo.IsTotemForm(Species, Form, Generation))
            {
                var expectForm = pkm.Format == 7 ? Form : AltFormInfo.GetTotemBaseForm(Species, Form);
                return(expectForm == evo.Form);
            }

            return(Form == evo.Form || AltFormInfo.IsFormChangeable(Species, Form, pkm.AltForm, pkm.Format));
        }
Example #3
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);
            }
        }