diff --git a/PKHeX.Core/Saves/Util/BoxUtil.cs b/PKHeX.Core/Saves/Util/BoxUtil.cs index dac9ef685..15e15573e 100644 --- a/PKHeX.Core/Saves/Util/BoxUtil.cs +++ b/PKHeX.Core/Saves/Util/BoxUtil.cs @@ -111,8 +111,7 @@ public static bool LoadBoxes(this SaveFile SAV, string path, out string result, /// True if any files are imported. public static bool LoadBoxes(this SaveFile SAV, IEnumerable filepaths, out string result, int boxStart = 0, bool boxClear = false, bool? noSetb = null) { - int generation = SAV.Generation; - var pks = GetPKMsFromPaths(filepaths, generation); + var pks = GetPossiblePKMsFromPaths(SAV, filepaths); return SAV.LoadBoxes(pks, out result, boxStart, boxClear, noSetb); } @@ -162,7 +161,7 @@ public static bool LoadBoxes(this SaveFile SAV, IEnumerable pks, out string return true; } - private static IEnumerable GetPKMsFromPaths(IEnumerable filepaths, int generation) + public static IEnumerable GetPKMsFromPaths(IEnumerable filepaths, int generation) { return filepaths .Where(file => PKX.IsPKM(new FileInfo(file).Length)) @@ -170,5 +169,25 @@ private static IEnumerable GetPKMsFromPaths(IEnumerable filepaths, .Select(data => PKMConverter.GetPKMfromBytes(data, prefer: generation)) .Where(temp => temp != null); } + + private static IEnumerable GetPossiblePKMsFromPaths(SaveFile sav, IEnumerable filepaths) + { + foreach (var f in filepaths) + { + var obj = FileUtil.GetSupportedFile(f, sav); + switch (obj) + { + case PKM pk: + yield return pk; + break; + case MysteryGift g when g.IsPokémon: + yield return g.ConvertToPKM(sav); + break; + case GP1 g when g.Species != 0: + yield return g.ConvertToPB7(sav); + break; + } + } + } } }