From fdc4dd281173a8e78857fae35299bfe2ebbb27f6 Mon Sep 17 00:00:00 2001 From: Kurt Date: Tue, 3 Jul 2018 18:43:11 -0700 Subject: [PATCH] Fix encounter ability comparison -1 is the 'no fixed ability parameters defined' Closes #2041 (optimize abilitynumber check for early return) --- PKHeX.Core/Legality/Verifiers/AbilityVerifier.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/PKHeX.Core/Legality/Verifiers/AbilityVerifier.cs b/PKHeX.Core/Legality/Verifiers/AbilityVerifier.cs index 050ab36af..8e5552cbd 100644 --- a/PKHeX.Core/Legality/Verifiers/AbilityVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/AbilityVerifier.cs @@ -55,7 +55,7 @@ private CheckResult VerifyAbility(LegalityAnalysis data, IReadOnlyList abil { var EncounterMatch = data.EncounterMatch; var eabil = GetEncounterFixedAbilityNumber(EncounterMatch); - if (eabil > 0) + if (eabil >= 0) return VerifyFixedAbility(data, abilities, AbilityState.CanMismatch, eabil, abilnum); var gen = data.Info.Generation; @@ -77,7 +77,7 @@ private CheckResult VerifyAbility345(LegalityAnalysis data, IReadOnlyList a var EncounterMatch = data.EncounterMatch; int eabil = GetEncounterFixedAbilityNumber(EncounterMatch); - if (eabil > 0) + if (eabil >= 0) return VerifyFixedAbility(data, abilities, state, eabil, abilnum); int gen = data.Info.Generation; @@ -236,14 +236,18 @@ private CheckResult VerifyAbility5(LegalityAnalysis data, IReadOnlyList abi private CheckResult VerifyAbility6(LegalityAnalysis data) { var pkm = data.pkm; + if (pkm.AbilityNumber != 4) + return VALID; + + // hidden abilities var EncounterMatch = data.EncounterMatch; - if (EncounterMatch is EncounterSlot slot && pkm.AbilityNumber == 4) + if (EncounterMatch is EncounterSlot slot) { bool valid = slot.Permissions.DexNav || slot.Type == SlotType.FriendSafari || slot.Type == SlotType.Horde; if (!valid) return GetInvalid(V300); } - if (Legal.Ban_NoHidden6.Contains(pkm.SpecForm) && pkm.AbilityNumber == 4) + if (Legal.Ban_NoHidden6.Contains(pkm.SpecForm)) return GetInvalid(V112); return VALID;