diff --git a/Source/Core/General/MapManager.cs b/Source/Core/General/MapManager.cs index 777b744b9a2f70678f0c8ae6c01cb91f6767317b..56695206137be3244c29173c188e20aa064cde23 100644 --- a/Source/Core/General/MapManager.cs +++ b/Source/Core/General/MapManager.cs @@ -1444,15 +1444,11 @@ namespace CodeImp.DoomBuilder // while (true) { - int nextindex = target.FindLumpIndex(targetmapname, tgtheaderindex + 1); + int nextindex = target.FindLumpIndex(targetmapname, tgtheaderindex); // note that this (and the original algorithm too) would break if you have a patch or a texture named MAP01 for example... // this is the case for multiple megawads that have level selection screen (Duel40-style), but luckily most of them are using the PK3 format. if (nextindex < 0) break; // next lump not found - // remove the header lump - target.RemoveAt(nextindex, false); - writeheaders = true; - // - tgtheaderindex = nextindex; + // try to detect the format used for this map. // if more than one format matches, do... idk what actually. // todo: move this code out and call it something like DetectMapConfiguration @@ -1492,7 +1488,7 @@ namespace CodeImp.DoomBuilder { int matches = 0; int maxcnt = lst.Count; - int checkindex = nextindex; + int checkindex = nextindex+1; foreach (string lmp in lst) { if (checkindex >= target.Lumps.Count) @@ -1513,7 +1509,7 @@ namespace CodeImp.DoomBuilder // if we didn't find anything it's weird... if (trylist != null) { - int checkindex = nextindex; + int checkindex = nextindex+1; foreach (string lmp in trylist) { if (checkindex >= target.Lumps.Count) @@ -1523,6 +1519,11 @@ namespace CodeImp.DoomBuilder else break; // stop deleting on first non-matching lump } } + + // how if trylist was not null, we need to remove the header as well. + target.RemoveAt(nextindex, false); + writeheaders = true; + tgtheaderindex = nextindex; } if (writeheaders) target.WriteHeaders();