diff --git a/PKHeX.Core/PKM/PK1.cs b/PKHeX.Core/PKM/PK1.cs index a91181c32..c0d79c62c 100644 --- a/PKHeX.Core/PKM/PK1.cs +++ b/PKHeX.Core/PKM/PK1.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; namespace PKHeX.Core { @@ -98,7 +99,7 @@ private void SetSpeciesValues(int value) public override int Version { get => (int)GameVersion.RBY; set { } } public override int PKRS_Strain { get => 0; set { } } public override int PKRS_Days { get => 0; set { } } - public override bool CanHoldItem(ushort[] ValidArray) => false; + public override bool CanHoldItem(IList ValidArray) => false; // Maximums public override int MaxMoveID => Legal.MaxMoveID_1; diff --git a/PKHeX.Core/PKM/PK3.cs b/PKHeX.Core/PKM/PK3.cs index bc69bc770..dc9428f13 100644 --- a/PKHeX.Core/PKM/PK3.cs +++ b/PKHeX.Core/PKM/PK3.cs @@ -296,7 +296,7 @@ public PK4 ConvertToPK4() pk4.OT_Name = OT_Name; // Set Final Data - pk4.Met_Level = Experience.GetLevel(pk4.EXP, pk4.Species, 0); + pk4.Met_Level = pk4.CurrentLevel; pk4.Gender = PKX.GetGenderFromPID(pk4.Species, pk4.PID); pk4.IsNicknamed = IsNicknamed; diff --git a/PKHeX.Core/PKM/PK6.cs b/PKHeX.Core/PKM/PK6.cs index 78b9020a5..f6539e36f 100644 --- a/PKHeX.Core/PKM/PK6.cs +++ b/PKHeX.Core/PKM/PK6.cs @@ -395,8 +395,7 @@ public void FixMemories() if (IsUntraded) HT_Friendship = HT_Affection = HT_TextVar = HT_Memory = HT_Intensity = HT_Feeling = 0; if (!Gen6) - /* OT_Affection = */ - OT_TextVar = OT_Memory = OT_Intensity = OT_Feeling = 0; + OT_TextVar = OT_Memory = OT_Intensity = OT_Feeling = 0; // Don't clear OT affection; OR/AS Contest Glitch this.SanitizeGeoLocationData(); } diff --git a/PKHeX.Core/PKM/PKM.cs b/PKHeX.Core/PKM/PKM.cs index 01ddbd2a5..61943bc1f 100644 --- a/PKHeX.Core/PKM/PKM.cs +++ b/PKHeX.Core/PKM/PKM.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; namespace PKHeX.Core @@ -21,10 +22,18 @@ public abstract class PKM : ITrainerID, ILangNick, IGameValueLimit public int Box { get; set; } = -1; // Batch Editor public int Slot { get; set; } = -1; // Batch Editor - public virtual byte[] EncryptedPartyData => Encrypt().Take(SIZE_PARTY).ToArray(); - public virtual byte[] EncryptedBoxData => Encrypt().Take(SIZE_STORED).ToArray(); - public virtual byte[] DecryptedPartyData => Write().Take(SIZE_PARTY).ToArray(); - public virtual byte[] DecryptedBoxData => Write().Take(SIZE_STORED).ToArray(); + public virtual byte[] EncryptedPartyData => Truncate(Encrypt(), SIZE_PARTY); + public virtual byte[] EncryptedBoxData => Truncate(Encrypt(), SIZE_STORED); + public virtual byte[] DecryptedPartyData => Truncate(Write(), SIZE_PARTY); + public virtual byte[] DecryptedBoxData => Truncate(Write(), SIZE_STORED); + + private static byte[] Truncate(byte[] data, int newSize) + { + if (data.Length != newSize) + Array.Resize(ref data, newSize); + return data; + } + public virtual bool Valid { get => ChecksumValid && Sanity == 0; set { if (!value) return; Sanity = 0; RefreshChecksum(); } } // Trash Bytes @@ -834,7 +843,7 @@ public bool ForcePartyData() /// /// Items that the can hold. /// True/False if the can hold its . - public virtual bool CanHoldItem(ushort[] ValidArray) => ValidArray.Contains((ushort)HeldItem); + public virtual bool CanHoldItem(IList ValidArray) => ValidArray.Contains((ushort)HeldItem); /// /// Deep clones the object. The clone will not have any shared resources with the source.