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.
///