diff --git a/PKHeX.Core/Legality/Checks.cs b/PKHeX.Core/Legality/Checks.cs index c95a4cbc5..892d397a8 100644 --- a/PKHeX.Core/Legality/Checks.cs +++ b/PKHeX.Core/Legality/Checks.cs @@ -827,20 +827,20 @@ private void verifyCXD() private void verifyCXDStarterCorrelation(PIDIV pidiv) { var spec = ((EncounterStatic)EncounterMatch).Species; - int rev; // pidiv reversed 5x yields SID, 6x yields TID. shift by 7 if another PKM is generated prior + int rev; // pidiv reversed 2x yields SID, 3x yields TID. shift by 7 if another PKM is generated prior switch (spec) { // XD case 133: // Eevee - rev = 5; + rev = 2; break; // Colosseum case 197: // Umbreon (generated before Espeon) - rev = 5; + rev = 2; break; case 196: // Espeon (generated after Umbreon) - rev = 5+7; + rev = 2+7; break; default: return; diff --git a/PKHeX.Core/Legality/RNG/MethodFinder.cs b/PKHeX.Core/Legality/RNG/MethodFinder.cs index f2b6615f3..b1c3327c6 100644 --- a/PKHeX.Core/Legality/RNG/MethodFinder.cs +++ b/PKHeX.Core/Legality/RNG/MethodFinder.cs @@ -187,15 +187,13 @@ private static bool getXDRNGMatch(uint top, uint bot, uint[] IVs, out PIDIV pidi var xdc = getSeedsFromPID(RNG.XDRNG, bot, top); foreach (var seed in xdc) { - var C = RNG.XDRNG.Reverse(seed, 3); + var B = RNG.XDRNG.Prev(seed); + var A = RNG.XDRNG.Prev(B); - var D = RNG.XDRNG.Next(C); - var E = RNG.XDRNG.Next(D); - - if (!getIVs(D >> 16, E >> 16).SequenceEqual(IVs)) + if (!getIVs(A >> 16, B >> 16).SequenceEqual(IVs)) continue; - pidiv = new PIDIV {OriginSeed = seed, RNG = RNG.XDRNG, Type = PIDType.CXD}; + pidiv = new PIDIV {OriginSeed = RNG.XDRNG.Prev(A), RNG = RNG.XDRNG, Type = PIDType.CXD}; return true; } pidiv = null;