diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index 7add02497..494d9b09e 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;