Skip to content

Commit 5257417

Browse files
committed
完善闪光器
1 parent e46b907 commit 5257417

19 files changed

+913
-114
lines changed

WangPlugin/ConvertToEgg.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ private void InitializeComponent()
5757
private void GEgg_Click(object sender, EventArgs e)
5858
{
5959
if(Egg(Editor.Data, Editor, SAV))
60-
MessageBox.Show($"Success!");
60+
MessageBox.Show($"Success!", "SuperWang");
6161
else
62-
MessageBox.Show($"Can't Convert to Egg!");
62+
MessageBox.Show($"Can't Convert to Egg!", "SuperWang");
6363
}
6464
public ConvertToEgg(ISaveFileProvider sav, IPKMView editor)
6565
{
@@ -70,7 +70,7 @@ public ConvertToEgg(ISaveFileProvider sav, IPKMView editor)
7070
}
7171
public static bool Egg(PKM pk, IPKMView PKMEditor, ISaveFileProvider SaveFileEditor)
7272
{
73-
List<IEncounterInfo> Results = new();
73+
List<IEncounterInfo> Results ;
7474
IEncounterInfo enc;
7575
PKM pkm = PKMEditor.Data;
7676
PKM pko = PKMEditor.Data;

WangPlugin/EncounterUtil.cs

-4
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,13 @@ internal class EncounterUtil
1212
public static IEnumerable<IEncounterInfo> SearchDatabase(SearchSettings settings, SaveFile SAV)
1313
{
1414
var versions = settings.GetVersions(SAV);
15-
1615
var pk = SAV.BlankPKM;
17-
1816
var species = settings.Species;
1917
var results = EncounterUtil.GetAllSpeciesFormEncounters(species, SAV.Personal, versions, pk);
2018
results = results.Where(z => z.EggEncounter == settings.SearchEgg);
21-
2219
// return filtered results
2320
var comparer = new ReferenceComparer<IEncounterInfo>();
2421
results = results.Distinct(comparer); // only distinct objects
25-
2622
return results;
2723
}
2824
private static IEnumerable<IEncounterInfo> GetAllSpeciesFormEncounters(int species, PersonalTable pt, IReadOnlyList<GameVersion> versions, PKM pk)
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
namespace WangPlugin
2+
{
3+
internal class Gen8MaxLairGodPool
4+
{
5+
public static bool MaxLairGodFlag(int Species)
6+
{
7+
if (Species is 144 or 145 or 146 or 150 or 243 or 244 or 245 or
8+
249 or 250 or 380 or 381 or 382 or 383 or 384 or
9+
480 or 481 or 482 or 483 or 484 or 485 or 487 or
10+
488 or 641 or 642 or 643 or 644 or 645 or 646 or
11+
716 or 717 or 718 or 785 or 786 or 787 or 788 or
12+
791 or 792 or 793 or 794 or 795 or 796 or 797 or
13+
798 or 799 or 800 or 805 or 806 )
14+
return true;
15+
else
16+
return false;
17+
}
18+
19+
}
20+
}
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+

2+
3+
namespace WangPlugin
4+
{
5+
internal class GiftAndStarter
6+
{
7+
public static bool XDCGFFlag(int Species)
8+
{
9+
if (Species is 311 or 196 or 197 )
10+
return true;
11+
else
12+
return false;
13+
}
14+
}
15+
}

WangPlugin/GameEnums/MythicalPool.cs

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace WangPlugin
8+
{
9+
internal class MythicalPool
10+
{
11+
public static bool MythicalFlag(int Species)
12+
{
13+
if (Species is 151 or 251 or 385 or 489 or 490 or 492 or 493 or
14+
494 or 648 or 649 or 719 or 720 or 721 or 801 or
15+
802 or 808 or 386 or 491 or 647 or 807 or 809 or
16+
893 )
17+
return true;
18+
else
19+
return false;
20+
}
21+
}
22+
}

WangPlugin/GameEnums/Version.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ internal class Version
44
{
55
public static bool Gen3Flag(int Version)
66
{
7-
if (Version == 1|| Version == 2 || Version == 3 || Version == 4 || Version == 5)
7+
if (Version is 1 or 2 or 3 or 4 or 5)
88
return true;
99
else
1010
return false;

WangPlugin/Properties/Resources.Designer.cs

+30
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

WangPlugin/Properties/Resources.resx

+9
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@
118118
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120120
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
121+
<data name="avatar" type="System.Resources.ResXFileRef, System.Windows.Forms">
122+
<value>..\Resources\img\avatar.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
123+
</data>
121124
<data name="Calc" type="System.Resources.ResXFileRef, System.Windows.Forms">
122125
<value>..\Resources\img\Calc.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
123126
</data>
@@ -142,6 +145,9 @@
142145
<data name="ID" type="System.Resources.ResXFileRef, System.Windows.Forms">
143146
<value>..\Resources\img\ID.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
144147
</data>
148+
<data name="pokeball" type="System.Resources.ResXFileRef, System.Windows.Forms">
149+
<value>..\Resources\img\pokeball.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
150+
</data>
145151
<data name="RNG" type="System.Resources.ResXFileRef, System.Windows.Forms">
146152
<value>..\Resources\img\RNG.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
147153
</data>
@@ -160,6 +166,9 @@
160166
<data name="SW" type="System.Resources.ResXFileRef, System.Windows.Forms">
161167
<value>..\Resources\img\SW.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
162168
</data>
169+
<data name="TEST" type="System.Resources.ResXFileRef, System.Windows.Forms">
170+
<value>..\Resources\img\TEST.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
171+
</data>
163172
<data name="wang" type="System.Resources.ResXFileRef, System.Windows.Forms">
164173
<value>..\Resources\img\wang.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
165174
</data>

WangPlugin/RNG/XDColoRNG.cs

+7-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ internal static class XDColoRNG
99
private const int shift8 = 8;
1010

1111
public static uint Next(uint seed) => PKHeX.Core.RNG.XDRNG.Next(seed);
12-
public static bool GenPkm(ref PKM pk, uint seed,bool[] shiny, bool[] IV)
12+
public static bool GenPkm(ref PKM pk, uint seed,bool[] shiny, bool[] IV, uint Xor = 0)
1313
{
1414
int FlawlessIVs = 0;
1515
uint MAX = 31;
@@ -34,7 +34,7 @@ public static bool GenPkm(ref PKM pk, uint seed,bool[] shiny, bool[] IV)
3434
var D = rng.Next(C); // PID
3535
var E = rng.Next(D); // PID
3636
pk.PID = (D & 0xFFFF0000) | E >> 16;
37-
if(!CheckShiny(pk.PID,pk.TID,pk.SID,shiny))
37+
if(!CheckShiny(pk.PID,pk.TID,pk.SID,shiny, Xor))
3838
{
3939
return false;
4040
}
@@ -89,19 +89,21 @@ private static void GetIVsInt32(Span<int> result, uint r1, uint r2)
8989
result[1] = (((int)r1 >> 5) & 0x1F);
9090
result[0] = (int)(r1 & 0x1F);
9191
}
92-
private static bool CheckShiny(uint pid, int TID, int SID, bool[] shiny)
92+
private static bool CheckShiny(uint pid, int TID, int SID, bool[] shiny, uint Xor = 0)
9393
{
9494
var s = (uint)(TID ^ SID) ^ ((pid >> 16) ^ (pid & 0xFFFF));
9595
if (shiny[0])
9696
return true;
97-
else if (shiny[1] && s < 8)
97+
else if (shiny[1] && s < 16)
9898
return true;
99-
else if (shiny[2] && s < 8 && s != 0)
99+
else if (shiny[2] && s < 16 && s != 0)
100100
return true;
101101
else if (shiny[3] && s == 0)
102102
return true;
103103
else if (shiny[4] && s == 1)
104104
return true;
105+
else if (shiny[5] && s == Xor)
106+
return true;
105107
else
106108
return false;
107109
}

WangPlugin/Resources/img/TEST.jpg

22.9 KB
Loading

WangPlugin/Resources/img/avatar.jpg

17 KB
Loading

WangPlugin/Resources/img/pokeball.jpg

17.7 KB
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using PKHeX.Core;
5+
using System.Windows.Forms;
6+
namespace WangPlugin
7+
{
8+
internal class RecoverLower16BitsEuclid16
9+
{
10+
public static uint Mult = 0x000343FD;
11+
public static uint Add = 0x00269EC3;
12+
public static uint rMult = 0xB9B33155;
13+
public static uint rAdd = 0xA170F641;
14+
public static long t0 = Add - 0xFFFF;
15+
public static long t1 = 0xFFFF * ((long)Mult + 1);
16+
public static uint seed = Util.Rand32();
17+
18+
internal static IEnumerable<uint> GetSeed(uint pid)
19+
{
20+
List<uint> list = new List<uint>();
21+
const int bitshift = 32;
22+
const long inc = 1L << bitshift;
23+
uint num = (pid >> 16) << 16;
24+
uint num2 = (pid & 0xFFFF) << 16;
25+
long num3 = num2 - (Mult * num) - t0;
26+
long num4 = 0u;
27+
long kmax = (((t1 - num3) >> bitshift) << bitshift) + num3;
28+
for ( num4 = num3; num4 <= kmax; num4 += inc)
29+
{
30+
// compute modulo in steps for reuse in yielded value (x % Mult)
31+
long fix = num4 / Mult;
32+
long remainder = num4 - (Mult * fix);
33+
if (remainder >> 16 == 0)
34+
{
35+
uint num5 = num | (uint)fix;
36+
// if ((RNG.LCRNG.Advance(num5, 4) << 16) == num)
37+
{
38+
num5=(num5 * rMult) + rAdd;
39+
// MessageBox.Show("ok");
40+
list.Add(num5);
41+
}
42+
}
43+
//yield return Prev(first | (uint)fix);
44+
}
45+
46+
return list;
47+
}
48+
public static List<uint[]> CalcPIDIVsByXDRNG(uint pid)
49+
{
50+
51+
IEnumerable<uint> enumerable = GetSeed(pid);
52+
53+
if (enumerable.Count() == 0)
54+
{
55+
56+
return null;
57+
}
58+
List<uint[]> list = new List<uint[]>();
59+
using (IEnumerator<uint> enumerator = enumerable.GetEnumerator())
60+
{
61+
while (enumerator.MoveNext())
62+
{
63+
64+
uint num = (seed = enumerator.Current);
65+
var B = RNG.XDRNG.Prev(seed);
66+
var A = RNG.XDRNG.Prev(B);
67+
68+
var hi = A >> 16;
69+
var lo = B >> 16; ;
70+
list.Add(GetIVs(hi, lo));
71+
// MessageBox.Show($"{seed}");
72+
}
73+
}
74+
75+
return list;
76+
}
77+
public static uint[] GetIVs(uint v1, uint v2)
78+
{
79+
return new uint[6]
80+
{
81+
(v1 & 0x1Fu),
82+
(v1 >> 5) & 0x1Fu,
83+
(v1 >> 10) & 0x1Fu,
84+
(v2 & 0x1Fu),
85+
(v2 >> 5) & 0x1Fu,
86+
(v2 >> 10) & 0x1Fu,
87+
};
88+
}
89+
public static uint[] GetIVs(PKM pkm, List<uint[]> ivsList)
90+
{
91+
uint[] result = new uint[6];
92+
if (ivsList.Count != 0)
93+
{
94+
result = ivsList.ElementAt(0);
95+
}
96+
return result;
97+
}
98+
99+
public static void SetIVsFromList(PKM pkm, uint[] ivs)
100+
{
101+
int[] iVs = pkm.IVs;
102+
for (int i = 0; i < ivs.Length; i++)
103+
{
104+
iVs[i] = (int)ivs[i];
105+
}
106+
pkm.IVs = iVs;
107+
}
108+
public static void advance(uint advances)
109+
{
110+
for (uint num = 0u; num < advances; num++)
111+
{
112+
next();
113+
}
114+
}
115+
public static uint next()
116+
{
117+
return seed = seed * Mult + Add;
118+
}
119+
public static uint prev()
120+
{
121+
return seed = (seed * rMult) + rAdd;
122+
}
123+
public static ushort nextUShort()
124+
{
125+
return (ushort)(next() >> 16);
126+
}
127+
public static ushort prevUShort()
128+
{
129+
return (ushort)(prev() >> 16);
130+
}
131+
//太他妈的复杂我放弃!!!!!!!1
132+
133+
}
134+
}

WangPlugin/ReverseRNG/RecoverLower16BitsPID.cs

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
using System;
2-
using System.Collections.Generic;
1+
using System.Collections.Generic;
32
using System.Linq;
43
using PKHeX.Core;
5-
using PKHeX.Core.AutoMod;
6-
using System.Windows.Forms;
74
namespace WangPlugin
85
{
96
internal class RecoverLower16BitsPID

0 commit comments

Comments
 (0)