From 833789b1b99fb9c4ebe92c02da73d46a6fd4b216 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 3 Oct 2020 09:29:26 -0700 Subject: [PATCH] Fix cxd antishiny method detection Closes #3008 ty @Sephirona ! Do the tsv-psv compare as uint to remove the need for later casts to int --- PKHeX.Core/Legality/RNG/MethodFinder.cs | 28 +++++++++++------- .../144 - 3008 - BDFCED1D5D5B.pk3 | Bin 0 -> 100 bytes 2 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 Tests/PKHeX.Core.Tests/Legality/Legal/Generation 3/144 - 3008 - BDFCED1D5D5B.pk3 diff --git a/PKHeX.Core/Legality/RNG/MethodFinder.cs b/PKHeX.Core/Legality/RNG/MethodFinder.cs index 4f6cf5f8b..49e33aef8 100644 --- a/PKHeX.Core/Legality/RNG/MethodFinder.cs +++ b/PKHeX.Core/Legality/RNG/MethodFinder.cs @@ -251,9 +251,15 @@ private static bool GetXDRNGMatch(PKM pk, uint top, uint bot, uint[] IVs, out PI } // check for anti-shiny against player TSV - var tsv = (pk.TID ^ pk.SID) >> 3; - var psv = (int)((hi ^ lo) >> 3); - if (psv != tsv) + var tsv = (uint)(pk.TID ^ pk.SID) >> 3; + var psv = (top ^ bot) >> 3; + if (psv == tsv) // already shiny, wouldn't be anti-shiny + continue; + + var p2 = seed; + var p1 = B; + psv = ((p2 ^ p1) >> 19); + if (psv != tsv) // prior PID must be shiny continue; do @@ -262,15 +268,17 @@ private static bool GetXDRNGMatch(PKM pk, uint top, uint bot, uint[] IVs, out PI A = RNG.XDRNG.Prev(B); hi = A >> 16; lo = B >> 16; - psv = (int)((hi ^ lo) >> 3); + if (IVsMatch(hi, lo, IVs)) + { + pidiv = new PIDIV { OriginSeed = RNG.XDRNG.Prev(A), RNG = RNGType.XDRNG, Type = PIDType.CXDAnti }; + return true; + } + + p2 = RNG.XDRNG.Prev(p1); + p1 = RNG.XDRNG.Prev(p2); + psv = (p2 ^ p1) >> 19; } while (psv == tsv); - - if (IVsMatch(hi, lo, IVs)) - { - pidiv = new PIDIV { OriginSeed = RNG.XDRNG.Prev(A), RNG = RNGType.XDRNG, Type = PIDType.CXDAnti }; - return true; - } } return GetNonMatch(out pidiv); } diff --git a/Tests/PKHeX.Core.Tests/Legality/Legal/Generation 3/144 - 3008 - BDFCED1D5D5B.pk3 b/Tests/PKHeX.Core.Tests/Legality/Legal/Generation 3/144 - 3008 - BDFCED1D5D5B.pk3 new file mode 100644 index 0000000000000000000000000000000000000000..49189c9b848c3029b0851a9fb8192ca8f4345a93 GIT binary patch literal 100 zcma!!m3_<3kTGk?!i6jUzkL3mfq{wX-2SuYfDDE|dl?ueFq~kxASBH2Ka_!C3Bw!) iD~1>b0U-Fp!0?Dc0jLNByf&%J|M_nZWHo~MXaoQfF&e)B literal 0 HcmV?d00001