mirror of
https://github.com/kwsch/PKHeX
synced 2024-09-21 14:51:55 +00:00
Add handling for pgt ranger manaphy
skip out on load if pgt extract pgt pid gen method set gender & PID if rangeregg since PID == 0 not 1. Closes #2075 yay 5k!
This commit is contained in:
parent
63242cc24d
commit
5fbf132615
2 changed files with 22 additions and 11 deletions
|
@ -247,10 +247,13 @@ namespace PKHeX.Core
|
|||
pk4.OT_Gender = SAV.Gender;
|
||||
pk4.Language = SAV.Language;
|
||||
}
|
||||
|
||||
uint seed = Util.Rand32();
|
||||
if (IsManaphyEgg)
|
||||
{
|
||||
// Since none of this data is populated, fill in default info.
|
||||
pk4.Species = 490;
|
||||
pk4.Gender = 2;
|
||||
// Level 1 Moves
|
||||
pk4.Move1 = 294;
|
||||
pk4.Move2 = 145;
|
||||
|
@ -265,22 +268,13 @@ namespace PKHeX.Core
|
|||
pk4.Move1_PP = pk4.GetMovePP(pk4.Move1, 0);
|
||||
pk4.Move2_PP = pk4.GetMovePP(pk4.Move2, 0);
|
||||
pk4.Move3_PP = pk4.GetMovePP(pk4.Move3, 0);
|
||||
seed = GeneratePID(seed, pk4);
|
||||
}
|
||||
|
||||
// Generate IV
|
||||
uint seed = Util.Rand32();
|
||||
if (pk4.PID == 1) // Create Nonshiny
|
||||
{
|
||||
do {
|
||||
uint pid1 = PKX.LCRNG(ref seed) >> 16;
|
||||
uint pid2 = PKX.LCRNG(ref seed) >> 16;
|
||||
pk4.PID = pid1 | (pid2 << 16);
|
||||
// sanity check gender for non-genderless PID cases
|
||||
} while (!pk4.IsGenderValid());
|
||||
seed = GeneratePID(seed, pk4);
|
||||
|
||||
while (pk4.IsShiny) // Call the ARNG to change the PID
|
||||
pk4.PID = RNG.ARNG.Next(pk4.PID);
|
||||
}
|
||||
if (!IsManaphyEgg)
|
||||
seed = Util.Rand32(); // reseed, do not have method 1 correlation
|
||||
|
||||
|
@ -327,5 +321,20 @@ namespace PKHeX.Core
|
|||
pk4.RefreshChecksum();
|
||||
return pk4;
|
||||
}
|
||||
|
||||
private static uint GeneratePID(uint seed, PK4 pk4)
|
||||
{
|
||||
do
|
||||
{
|
||||
uint pid1 = PKX.LCRNG(ref seed) >> 16;
|
||||
uint pid2 = PKX.LCRNG(ref seed) >> 16;
|
||||
pk4.PID = pid1 | (pid2 << 16);
|
||||
// sanity check gender for non-genderless PID cases
|
||||
} while (!pk4.IsGenderValid());
|
||||
|
||||
while (pk4.IsShiny) // Call the ARNG to change the PID
|
||||
pk4.PID = RNG.ARNG.Next(pk4.PID);
|
||||
return seed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -556,6 +556,8 @@ namespace PKHeX.WinForms
|
|||
}
|
||||
private bool TryLoadPKM(byte[] input, string ext)
|
||||
{
|
||||
if (ext == ".pgt") // size collision with pk6
|
||||
return false;
|
||||
var pk = PKMConverter.GetPKMfromBytes(input, prefer: PKX.GetPKMFormatFromExtension(ext, C_SAV.SAV.Generation));
|
||||
if (pk == null)
|
||||
return false;
|
||||
|
|
Loading…
Reference in a new issue