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); }
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); }