From a4e04fc2fe445bcc7edceb95641fada0d4a3f1fd Mon Sep 17 00:00:00 2001 From: Kurt Date: Sun, 5 Mar 2017 22:08:00 -0800 Subject: [PATCH] Add WC6/WC7 ability checks Ability type not possible to generate ability -> flag it. Thanks Sonic Blader! --- PKHeX/Legality/Checks.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index 7add02497aa..494d9b09e25 100644 --- a/PKHeX/Legality/Checks.cs +++ b/PKHeX/Legality/Checks.cs @@ -916,6 +916,15 @@ private void verifyAbility() } if (pkm.GenNumber == 6) { + if (EncounterIsMysteryGift) + { + var wc = EncounterMatch as WC6; + var type = wc?.AbilityType; + if (type < 3 && pkm.AbilityNumber != 1 << type) // set number + AddLine(Severity.Invalid, "Ability does not match Mystery Gift.", CheckIdentifier.Ability); + else if (type == 3 && pkm.AbilityNumber == 4) // 1/2 only + AddLine(Severity.Invalid, "Ability does not match Mystery Gift.", CheckIdentifier.Ability); + } if (EncounterType == typeof(EncounterSlot[]) && pkm.AbilityNumber == 4) { var slots = (EncounterSlot[])EncounterMatch; @@ -932,6 +941,15 @@ private void verifyAbility() } if (pkm.GenNumber == 7) { + if (EncounterIsMysteryGift) + { + var wc = EncounterMatch as WC7; + var type = wc?.AbilityType; + if (type < 3 && pkm.AbilityNumber != 1 << type) // set number + AddLine(Severity.Invalid, "Ability does not match Mystery Gift.", CheckIdentifier.Ability); + else if (type == 3 && pkm.AbilityNumber == 4) // 1/2 only + AddLine(Severity.Invalid, "Ability does not match Mystery Gift.", CheckIdentifier.Ability); + } if (EncounterType == typeof(EncounterSlot[]) && pkm.AbilityNumber == 4) { var slots = (EncounterSlot[])EncounterMatch;