XK3: Load Purified state from savefile

Closes #3872
This commit is contained in:
Kurt 2023-05-01 17:09:45 -07:00
parent 3285ecada9
commit 3219e03dc6
2 changed files with 15 additions and 6 deletions

View File

@ -198,7 +198,7 @@ public override int EV_SPE
// stored in the data, offset undocumented
public override int Status_Condition { get; set; }
public bool IsShadow => Purification != 0;
public bool IsShadow { get; internal set; } // determined by savedata, not written back to sav
protected override byte[] Encrypt()
{

View File

@ -356,8 +356,15 @@ public override XK3 GetStoredSlot(ReadOnlySpan<byte> data)
{
// Get Shadow Data
var pk = (XK3)base.GetStoredSlot(data);
if (pk.ShadowID > 0 && pk.ShadowID < ShadowInfo.Count)
pk.Purification = ShadowInfo[pk.ShadowID].Purification;
// Get Shadow Data from save
var id = pk.ShadowID;
if (id == 0 || id >= ShadowInfo.Count)
return pk;
var entry = ShadowInfo[pk.ShadowID];
pk.Purification = entry.Purification;
pk.IsShadow = !entry.IsPurified;
return pk;
}
@ -370,12 +377,14 @@ protected override void SetPKM(PKM pk, bool isParty = false)
xk3.OriginalRegion = (byte)OriginalRegion;
// Set Shadow Data back to save
if (xk3.ShadowID <= 0 || xk3.ShadowID >= ShadowInfo.Count)
var id = xk3.ShadowID;
if (id == 0 || id >= ShadowInfo.Count)
return;
var entry = ShadowInfo[xk3.ShadowID];
var entry = ShadowInfo[id];
entry.Purification = xk3.Purification;
entry.Species = xk3.Species;
//entry.IsPurified = !xk3.IsShadow;
//entry.Species = xk3.Species;
entry.PID = xk3.PID;
entry.IV_HP = xk3.IV_HP ;
entry.IV_ATK = xk3.IV_ATK;