From 59ad4e2194b38ddd8c5f5f49489dde8420c2269a Mon Sep 17 00:00:00 2001 From: Kurt Date: Fri, 16 Dec 2016 08:50:50 -0800 Subject: [PATCH] Fix battle box lock box calculation restructure a little to only do the slot calcs if info is actually present Closes #645 --- PKHeX/Saves/SAV7.cs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/PKHeX/Saves/SAV7.cs b/PKHeX/Saves/SAV7.cs index be650750e..82c346d29 100644 --- a/PKHeX/Saves/SAV7.cs +++ b/PKHeX/Saves/SAV7.cs @@ -26,18 +26,22 @@ public SAV7(byte[] data = null) resetBoxes(); var demo = new byte[0x4C4].SequenceEqual(Data.Skip(PCLayout).Take(0x4C4)); // up to Battle Box values - if (demo) + if (demo || !Exportable) { PokeDex = -1; // Disabled + LockedSlots = new int[0]; } - int lockedCount = 0; - for (int i = 0; i < LockedSlots.Length; i++) + else // Valid slot locking info present { - short val = BitConverter.ToInt16(Data, BattleBoxFlags + i * 2); - if (val >= 0) - LockedSlots[lockedCount++] = (val & 0xFF + BoxSlotCount*(val >> 8)) & 0xFFFF; + int lockedCount = 0; + for (int i = 0; i < LockedSlots.Length; i++) + { + short val = BitConverter.ToInt16(Data, BattleBoxFlags + i*2); + if (val >= 0) + LockedSlots[lockedCount++] = (BoxSlotCount*(val >> 8) + (val & 0xFF)) & 0xFFFF; + } + Array.Resize(ref LockedSlots, lockedCount); } - Array.Resize(ref LockedSlots, lockedCount); } // Configuration