Пример #1
0
 private static bool GetIsDeferredWC7(PKM pkm, WC7 wc)
 {
     if (wc.RestrictLanguage != 0 && wc.RestrictLanguage != pkm.Language)
     {
         return(true);
     }
     if (!wc.CanBeReceivedByVersion(pkm.Version))
     {
         return(true);
     }
     return(wc.Species != pkm.Species);
 }
Пример #2
0
        private static bool GetIsMatchWC7(PKM pkm, WC7 wc, IEnumerable <DexLevel> vs)
        {
            if (pkm.Egg_Location == 0) // Not Egg
            {
                if (wc.OTGender != 3)
                {
                    if (wc.SID != pkm.SID)
                    {
                        return(false);
                    }
                    if (wc.TID != pkm.TID)
                    {
                        return(false);
                    }
                    if (wc.OTGender != pkm.OT_Gender)
                    {
                        return(false);
                    }
                }
                if (!string.IsNullOrEmpty(wc.OT_Name) && wc.OT_Name != pkm.OT_Name)
                {
                    return(false);
                }
                if (wc.OriginGame != 0 && wc.OriginGame != pkm.Version)
                {
                    return(false);
                }
                if (wc.EncryptionConstant != 0 && wc.EncryptionConstant != pkm.EncryptionConstant)
                {
                    return(false);
                }
                if (wc.Language != 0 && wc.Language != pkm.Language)
                {
                    return(false);
                }
            }
            if (wc.Form != pkm.AltForm && vs.All(dl => !IsFormChangeable(pkm, dl.Species)))
            {
                if (wc.Species == 744 && wc.Form == 1 && pkm.Species == 745 && pkm.AltForm == 2)
                {
                    // Rockruff gift edge case; has altform 1 then evolves to altform 2
                }
                else
                {
                    return(false);
                }
            }

            if (wc.IsEgg)
            {
                if (wc.EggLocation != pkm.Egg_Location) // traded
                {
                    if (pkm.Egg_Location != 30002)
                    {
                        return(false);
                    }
                }
                else if (wc.PIDType == 0 && pkm.IsShiny)
                {
                    return(false); // can't be traded away for unshiny
                }
                if (pkm.IsEgg && !pkm.IsNative)
                {
                    return(false);
                }
            }
            else
            {
                if (!wc.PIDType.IsValid(pkm))
                {
                    return(false);
                }
                if (wc.EggLocation != pkm.Egg_Location)
                {
                    return(false);
                }
                if (wc.MetLocation != pkm.Met_Location)
                {
                    return(false);
                }
            }

            if (wc.MetLevel != pkm.Met_Level)
            {
                return(false);
            }
            if (wc.Ball != pkm.Ball)
            {
                return(false);
            }
            if (wc.OTGender < 3 && wc.OTGender != pkm.OT_Gender)
            {
                return(false);
            }
            if (wc.Nature != 0xFF && wc.Nature != pkm.Nature)
            {
                return(false);
            }
            if (wc.Gender != 3 && wc.Gender != pkm.Gender)
            {
                return(false);
            }

            if (pkm.IsContestBelow(wc))
            {
                return(false);
            }

            switch (wc.CardID)
            {
            case 1624:     // Rockruff
                if (pkm.Species == 745 && pkm.AltForm != 2)
                {
                    return(false);
                }
                if (pkm.Version == (int)GameVersion.US)
                {
                    return(wc.Move3 == 424);    // Fire Fang
                }
                if (pkm.Version == (int)GameVersion.UM)
                {
                    return(wc.Move3 == 422);    // Thunder Fang
                }
                return(false);

            case 2046:          // Ash Greninja
                return(pkm.SM); // not USUM
            }
            return(true);
        }