diff --git a/PKHeX.Core/Legality/Encounters/Generator/EncounterCriteria.cs b/PKHeX.Core/Legality/Encounters/Generator/EncounterCriteria.cs index 2190c59b6..62626aa8d 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/EncounterCriteria.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/EncounterCriteria.cs @@ -217,6 +217,20 @@ public bool IsSatisfiedNature(Nature nature) return nature == Nature || Mutations.HasFlag(CanMintNature); } + /// + /// Determines whether the Generation 3/4 PID satisfies the Nature criteria. + /// + /// The original PID to check. + /// if the Nature satisfies the criteria; otherwise, . + public bool IsSatisfiedNature(uint pid) + { + if (Mutations.HasFlag(AllowOnlyNeutralNature)) + return ((Nature)(pid % 25)).IsNeutral; + if (Nature == Nature.Random) + return true; + return Mutations.HasFlag(CanMintNature) || ((Nature)(pid % 25)) == Nature; + } + /// /// Determines whether the specified level satisfies the level range criteria. /// diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen3/EncounterEgg3.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen3/EncounterEgg3.cs index 8ec1e5170..4edc396e5 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen3/EncounterEgg3.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen3/EncounterEgg3.cs @@ -97,7 +97,7 @@ private uint GetRandomPID(in EncounterCriteria criteria, byte gr, uint id32) var gender = EntityGender.GetFromPIDAndRatio(pid, gr); if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(gender)) continue; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (criteria.IsSpecifiedAbility() && !criteria.IsSatisfiedAbility((byte)(pid % 2))) continue; diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen3/EncounterStatic3.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen3/EncounterStatic3.cs index 9dbe7e428..60f32f176 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen3/EncounterStatic3.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen3/EncounterStatic3.cs @@ -137,7 +137,7 @@ private static bool SetRoamerPINGA(PK3 pk, in EncounterCriteria criteria) var rand2 = LCRNG.Prev16(ref state); var rand1 = LCRNG.Prev16(ref state); var pid = (rand2 << 16) | rand1; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; bool shiny = ShinyUtil.GetIsShiny3(id32, pid); if (criteria.Shiny.IsShiny() != shiny) @@ -166,11 +166,10 @@ private static bool TrySetMethod1(PK3 pk, in EncounterCriteria criteria, byte gr { var seed = LCRNG.Prev2(s); // Unwind the RNG to get the real origin seed for the PID/IV var pid = ClassicEraRNG.GetSequentialPID(seed); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; - var gender = EntityGender.GetFromPIDAndRatio(pid, gr); - if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(gender)) + if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPIDAndRatio(pid, gr))) continue; var abit = (int)(pid & 1); @@ -179,7 +178,6 @@ private static bool TrySetMethod1(PK3 pk, in EncounterCriteria criteria, byte gr pk.PID = pid; pk.IV32 |= iv2 << 15 | iv1; - pk.Gender = gender; pk.RefreshAbility(abit); return true; } @@ -198,7 +196,7 @@ private static void SetMethod1(PK3 pk, in EncounterCriteria criteria, byte gr, u if (criteria.Shiny.IsShiny() != shiny) continue; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var gender = EntityGender.GetFromPIDAndRatio(pid, gr); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3.cs index 616add704..781b79564 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3.cs @@ -202,7 +202,7 @@ private uint SetPINGA(PK3 pk, in EncounterCriteria criteria, PersonalInfo3 pi) _ when Method is Method_2 => GetMethod2(ref seed), _ => GetRegular(ref seed), }; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; // try again if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPIDAndRatio(pid, gr))) continue; @@ -255,7 +255,7 @@ private static bool TrySetWishmkrShiny(PK3 pk, in EncounterCriteria criteria) { uint seed = s; var pid = GetRegular(ref seed); - if (filterNature && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (filterNature && !criteria.IsSatisfiedNature(pid)) continue; // try again var iv32 = ClassicEraRNG.GetSequentialIVs(ref seed); @@ -301,7 +301,7 @@ private static uint SetPINGAChannel(PK3 pk, in EncounterCriteria criteria) continue; SetValuesFromSeedChannel(pk, seed); var pid = pk.EncryptionConstant; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; // try again if (criteria.Shiny.IsShiny() != ShinyUtil.GetIsShiny3(pk.ID32, pid)) continue; // try again @@ -317,7 +317,7 @@ private static uint SetPINGAChannel(PK3 pk, in EncounterCriteria criteria) SetValuesFromSeedChannel(pk, seed); var pid = pk.EncryptionConstant; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; // try again if (criteria.Shiny.IsShiny() != ShinyUtil.GetIsShiny3(pk.ID32, pid)) continue; // try again diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3JPN.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3JPN.cs index 975be5752..de2794af2 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3JPN.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3JPN.cs @@ -79,7 +79,7 @@ private static void SetPINGA(PK3 pk, in EncounterCriteria criteria, PersonalInfo while (true) { var pid = CommonEvent3.GetRegularAntishiny(ref seed, idXor); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; // try again if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPIDAndRatio(pid, gr))) continue; diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3NY.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3NY.cs index 30dc0a3d5..07b1be33c 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3NY.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen3/Gifts/EncounterGift3NY.cs @@ -80,10 +80,9 @@ private static void SetPINGA(PK3 pk, in EncounterCriteria criteria, PersonalInfo while (true) { var pid = CommonEvent3.GetAntishiny(ref seed, idXor); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; // try again - var gender = EntityGender.GetFromPIDAndRatio(pid, gr); - if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(gender)) + if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPIDAndRatio(pid, gr))) continue; var iv32 = ClassicEraRNG.GetSequentialIVs(ref seed); if (criteria.IsSpecifiedHiddenPower() && !criteria.IsSatisfiedHiddenPower(iv32)) diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen4/EncounterEgg4.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen4/EncounterEgg4.cs index 064dae4f5..a13d3ed48 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen4/EncounterEgg4.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen4/EncounterEgg4.cs @@ -102,7 +102,7 @@ private uint GetRandomPID(in EncounterCriteria criteria, byte gr, uint id32, out gender = EntityGender.GetFromPIDAndRatio(pid, gr); if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(gender)) continue; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (criteria.IsSpecifiedAbility() && !criteria.IsSatisfiedAbility((byte)(pid % 2))) continue; diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen4/EncounterStatic4.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen4/EncounterStatic4.cs index 8d7aa53d4..2b88fc94c 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen4/EncounterStatic4.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen4/EncounterStatic4.cs @@ -135,7 +135,7 @@ private static bool TrySetMethod1(PK4 pk, in EncounterCriteria criteria, byte gr { var seed = LCRNG.Prev2(s); // Unwind the RNG to get the real origin seed for the PID/IV var pid = ClassicEraRNG.GetSequentialPID(seed); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var gender = EntityGender.GetFromPIDAndRatio(pid, gr); @@ -167,7 +167,7 @@ private static void SetMethod1(PK4 pk, in EncounterCriteria criteria, byte gr, u if (criteria.Shiny.IsShiny() != shiny) continue; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var gender = EntityGender.GetFromPIDAndRatio(pid, gr); @@ -206,7 +206,7 @@ private static bool TrySetChainShiny(PK4 pk, in EncounterCriteria criteria, byte var shiny = ShinyUtil.GetIsShiny3(id32, pid); if (criteria.Shiny.IsShiny() != shiny) continue; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var gender = EntityGender.GetFromPIDAndRatio(pid, gr); @@ -234,7 +234,7 @@ private static void SetChainShiny(PK4 pk, in EncounterCriteria criteria, byte gr while (true) { var pid = ClassicEraRNG.GetChainShinyPID(ref seed, id32); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var gender = EntityGender.GetFromPIDAndRatio(pid, gr); diff --git a/PKHeX.Core/Legality/RNG/CXD/MethodCXD.cs b/PKHeX.Core/Legality/RNG/CXD/MethodCXD.cs index 4609e8a77..c01165128 100644 --- a/PKHeX.Core/Legality/RNG/CXD/MethodCXD.cs +++ b/PKHeX.Core/Legality/RNG/CXD/MethodCXD.cs @@ -27,7 +27,7 @@ public static class MethodCXD // * => IV, IV, ability, PID, PID var s = XDRNG.Next3(seed); uint pid = GetPID(s, id32, noShiny); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPIDAndRatio(pid, gr))) continue; @@ -65,7 +65,7 @@ public static bool SetFromIVs(TEntity pk, in EncounterCriteria criteria // * => IV, IV, ability, PID, PID var s = XDRNG.Next3(seed); uint pid = GetPID(s, id32, noShiny); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPIDAndRatio(pid, gr))) continue; @@ -122,7 +122,7 @@ public static bool SetStarterFromTrainerID(CK3 pk, in EncounterCriteria criteria pid = GetColoStarterPID(ref s, id32); } - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; // fixed gender & never shiny, ignore @@ -166,7 +166,7 @@ public static bool SetStarterFirstFromIVs(CK3 pk, in EncounterCriteria criteria) var id32 = sid << 16 | tid; uint pid = GetColoStarterPID(ref s, id32); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; // fixed gender & never shiny, ignore @@ -280,7 +280,7 @@ public static bool SetStarterFromTrainerID(XK3 pk, in EncounterCriteria criteria var s = XDRNG.Next7(seed); // tid/sid (2), fake pid (2), ivs (2), ability (1) uint pid = GetPID(s); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPID(pid, EntityGender.VM))) continue; @@ -319,7 +319,7 @@ public static bool SetStarterFromIVs(XK3 pk, in EncounterCriteria criteria) var s = XDRNG.Next3(seed); uint pid = GetPID(s); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var tid = XDRNG.Prev3(seed) >> 16; @@ -359,7 +359,7 @@ public static void SetStarterRandom(XK3 pk, in EncounterCriteria criteria, uint // Get PID seed = XDRNG.Next7(seed); // tid, sid, fakePID x2, IVs x2, ability* => pid1, pid2 var pid = GetPIDRegular(ref seed); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPID(pid, EntityGender.VM))) continue; @@ -407,7 +407,7 @@ public static void SetStarterRandom(XK3 pk, in EncounterCriteria criteria, uint { // fakePID x2, IVs x2, ability, pid1*, pid2 var pid = GetPIDReuse(ref seed, id32, noShiny); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPIDAndRatio(pid, gender))) continue; @@ -451,7 +451,7 @@ public static void SetRandom(T pk, in EncounterCriteria criteria, PersonalInf { // fakePID x2, IVs x2, ability, pid1*, pid2 var pid = GetPIDReuse(ref seed, id32, noShiny); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPIDAndRatio(pid, gender))) continue; diff --git a/PKHeX.Core/Legality/RNG/CXD/MethodPokeSpot.cs b/PKHeX.Core/Legality/RNG/CXD/MethodPokeSpot.cs index 6d572a4db..d9b7e8f95 100644 --- a/PKHeX.Core/Legality/RNG/CXD/MethodPokeSpot.cs +++ b/PKHeX.Core/Legality/RNG/CXD/MethodPokeSpot.cs @@ -258,7 +258,7 @@ public static uint GetRandomPID(uint id32, in EncounterCriteria criteria, byte g continue; } var pid = GetPIDRegular(ref seed); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (criteria.IsSpecifiedGender() && !criteria.IsSatisfiedGender(EntityGender.GetFromPIDAndRatio(pid, gender))) continue; diff --git a/PKHeX.Core/Legality/RNG/ClassicEra/Gen3/GenerateMethodH.cs b/PKHeX.Core/Legality/RNG/ClassicEra/Gen3/GenerateMethodH.cs index c9c7e85ee..13c4cf0cc 100644 --- a/PKHeX.Core/Legality/RNG/ClassicEra/Gen3/GenerateMethodH.cs +++ b/PKHeX.Core/Legality/RNG/ClassicEra/Gen3/GenerateMethodH.cs @@ -98,7 +98,7 @@ public static void SetRandomUnown(this T enc, PK3 pk, in EncounterCriteria cr continue; // Check the nature is what the user requested. - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) break; var iv32 = ClassicEraRNG.GetSequentialIVs(ref seed); @@ -132,12 +132,12 @@ public bool SetFromIVs(PK3 pk, PersonalInfo3 pi, in EncounterCriteria criteria, var a = LCRNG.Next16(ref s); var b = LCRNG.Next16(ref s); var pid = GetPIDRegular(a, b); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) { // Try again as Method 2 (AB-DE) var o = seed >> 16; pid = GetPIDRegular(o, a); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; seed = LCRNG.Prev(seed); } @@ -176,7 +176,7 @@ public bool SetFromIVs(PK3 pk, PersonalInfo3 pi, in EncounterCriteria criteria, var a = LCRNG.Next16(ref s); var b = LCRNG.Next16(ref s); var pid = GetPIDRegular(a, b); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var gender = EntityGender.GetFromPIDAndRatio(pid, gr); @@ -219,12 +219,12 @@ public bool SetFromIVsUnown(PK3 pk, in EncounterCriteria criteria) var a = LCRNG.Next16(ref s); var b = LCRNG.Next16(ref s); var pid = GetPIDUnown(a, b); - if ((criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) || EntityPID.GetUnownForm3(pid) != enc.Form) + if ((criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) || EntityPID.GetUnownForm3(pid) != enc.Form) { // Try again as Method 2 (BA-DE) var o = seed >> 16; pid = GetPIDUnown(o, a); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var form = EntityPID.GetUnownForm3(pid); if (form != enc.Form) @@ -252,7 +252,7 @@ public bool SetFromIVsUnown(PK3 pk, in EncounterCriteria criteria) var a = LCRNG.Next16(ref s); var b = LCRNG.Next16(ref s); var pid = GetPIDUnown(a, b); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var form = EntityPID.GetUnownForm3(pid); if (form != enc.Form) diff --git a/PKHeX.Core/Legality/RNG/ClassicEra/Gen4/GenerateMethodJ.cs b/PKHeX.Core/Legality/RNG/ClassicEra/Gen4/GenerateMethodJ.cs index 4c51b327b..e5598f64c 100644 --- a/PKHeX.Core/Legality/RNG/ClassicEra/Gen4/GenerateMethodJ.cs +++ b/PKHeX.Core/Legality/RNG/ClassicEra/Gen4/GenerateMethodJ.cs @@ -125,7 +125,7 @@ public bool SetFromIVsJ(PK4 pk, PersonalInfo4 pi, in EncounterCriteria criteria, var pid = GetPIDRegular(a, b); if (criteria.Shiny.IsShiny() != ShinyUtil.GetIsShiny3(id32, pid)) continue; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var gender = EntityGender.GetFromPIDAndRatio(pid, gr); diff --git a/PKHeX.Core/Legality/RNG/ClassicEra/Gen4/GenerateMethodK.cs b/PKHeX.Core/Legality/RNG/ClassicEra/Gen4/GenerateMethodK.cs index 9bff9423a..dd5b777bd 100644 --- a/PKHeX.Core/Legality/RNG/ClassicEra/Gen4/GenerateMethodK.cs +++ b/PKHeX.Core/Legality/RNG/ClassicEra/Gen4/GenerateMethodK.cs @@ -126,7 +126,7 @@ public bool SetFromIVsK(PK4 pk, PersonalInfo4 pi, in EncounterCriteria criteria, var a = LCRNG.Next16(ref s); var b = LCRNG.Next16(ref s); var pid = GetPIDRegular(a, b); - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var gender = EntityGender.GetFromPIDAndRatio(pid, gr); diff --git a/PKHeX.Core/MysteryGifts/PGT.cs b/PKHeX.Core/MysteryGifts/PGT.cs index 85ad4053a..8c08d6702 100644 --- a/PKHeX.Core/MysteryGifts/PGT.cs +++ b/PKHeX.Core/MysteryGifts/PGT.cs @@ -171,7 +171,7 @@ private static void SetPINGAManaphy(PK4 pk4, in EncounterCriteria criteria, ITra var a = LCRNG.Next16(ref seed); var b = LCRNG.Next16(ref seed); var pid = (b << 16) | a; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; var c = LCRNG.Next15(ref seed); var d = LCRNG.Next15(ref seed); @@ -209,7 +209,7 @@ private static bool TrySetManaphyFromIVs(PK4 pk4, in EncounterCriteria criteria, // Check for anti-shiny. var xor = (a ^ b) >> 3; bool arng = false; - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) { while (true) { @@ -221,7 +221,7 @@ private static bool TrySetManaphyFromIVs(PK4 pk4, in EncounterCriteria criteria, arng = true; break; } - if (!criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (!criteria.IsSatisfiedNature(pid)) continue; } @@ -371,7 +371,7 @@ private static uint GetPID(PK4 pk4, PersonalInfo4 pi, in EncounterCriteria crite break; pid = ARNG.Next(pid); } - if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature((Nature)(pid % 25))) + if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(pid)) continue; if (EntityGender.GetFromPIDAndRatio(pid, gr) != gender) continue;