diff --git a/PKHeX.Core/Legality/Verifiers/Ability/AbilityBreedLegality.cs b/PKHeX.Core/Legality/Verifiers/Ability/AbilityBreedLegality.cs index f7ea8f6e5..aaf09259e 100644 --- a/PKHeX.Core/Legality/Verifiers/Ability/AbilityBreedLegality.cs +++ b/PKHeX.Core/Legality/Verifiers/Ability/AbilityBreedLegality.cs @@ -148,5 +148,25 @@ namespace PKHeX.Core // Species that cannot be bred with a Hidden Ability originating in // // internal static readonly HashSet BanHidden8 = new(); // none as of DLC 1! + + /// + /// Species that cannot be bred with a Hidden Ability originating in + /// + internal static readonly HashSet BanHidden8b = new() + { + (int)Rotom, + (int)Rotom + (1 << 11), + (int)Rotom + (2 << 11), + (int)Rotom + (3 << 11), + (int)Rotom + (4 << 11), + (int)Rotom + (5 << 11), + + (int)Baltoy, + (int)Claydol, + (int)Solrock, + (int)Lunatone, + + (int)Phione, + }; } } diff --git a/PKHeX.Core/Legality/Verifiers/Ability/AbilityVerifier.cs b/PKHeX.Core/Legality/Verifiers/Ability/AbilityVerifier.cs index 385db4bfc..3f91a65d2 100644 --- a/PKHeX.Core/Legality/Verifiers/Ability/AbilityVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/Ability/AbilityVerifier.cs @@ -127,6 +127,7 @@ namespace PKHeX.Core 5 => VerifyAbility5(data, enc, abilities), 6 => VerifyAbility6(data, enc), 7 => VerifyAbility7(data, enc), + 8 when data.pkm.BDSP => VerifyAbility8BDSP(data, enc), >=8 => VALID, _ => CheckMatch(data.pkm, abilities, gen, AbilityState.CanMismatch, enc), }; @@ -340,7 +341,6 @@ namespace PKHeX.Core // Eggs and Encounter Slots are not yet checked for Hidden Ability potential. return enc switch { - EncounterSlot5 w when pkm.AbilityNumber == 4 != w.IsHiddenGrotto => GetInvalid(w.IsHiddenGrotto ? LAbilityMismatchGrotto : LAbilityHiddenFail), EncounterEgg e when pkm.AbilityNumber == 4 && AbilityBreedLegality.BanHidden5.Contains(e.Species) => GetInvalid(LAbilityHiddenUnavailable), _ => CheckMatch(data.pkm, abilities, 5, pkm.Format == 5 ? AbilityState.MustMatch : AbilityState.CanMismatch, enc), }; @@ -355,12 +355,6 @@ namespace PKHeX.Core // Eggs and Encounter Slots are not yet checked for Hidden Ability potential. return enc switch { - EncounterSlot6XY {IsFriendSafari: true} => VALID, - EncounterSlot6XY {IsHorde: true} => VALID, - EncounterSlot6AO {IsHorde: true} => VALID, - EncounterSlot6AO {CanDexNav: true} => VALID, - EncounterSlot => GetInvalid(LAbilityMismatchHordeSafari), - EncounterEgg egg when AbilityBreedLegality.BanHidden6.Contains(egg.Species | (egg.Form << 11)) => GetInvalid(LAbilityHiddenUnavailable), _ => VALID, }; @@ -374,12 +368,24 @@ namespace PKHeX.Core return enc switch { - EncounterSlot7 {IsSOS: false} => GetInvalid(LAbilityMismatchSOS), EncounterEgg egg when AbilityBreedLegality.BanHidden7.Contains(egg.Species | (egg.Form << 11)) => GetInvalid(LAbilityHiddenUnavailable), _ => VALID, }; } + private CheckResult VerifyAbility8BDSP(LegalityAnalysis data, IEncounterable enc) + { + var pkm = data.pkm; + if (pkm.AbilityNumber != 4) + return VALID; + + return enc switch + { + EncounterEgg egg when AbilityBreedLegality.BanHidden8b.Contains(egg.Species | (egg.Form << 11)) => GetInvalid(LAbilityHiddenUnavailable), + _ => VALID, + }; + } + /// /// Final checks assuming nothing else has flagged the ability. ///