From 0dac4ed492fd78d801f939a8fef27fcf7a7c3655 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gustaf=20Alh=C3=A4ll?= <gustaf@hanicef.me>
Date: Sun, 13 Oct 2024 17:47:56 +0200
Subject: [PATCH] Fix (hopufully) all remaining edge cases

---
 src/deh_soc.c  | 1 +
 src/dehacked.c | 6 +++---
 src/dehacked.h | 1 +
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/deh_soc.c b/src/deh_soc.c
index c0e646f608..80a5358c0a 100644
--- a/src/deh_soc.c
+++ b/src/deh_soc.c
@@ -3925,6 +3925,7 @@ void readmaincfg(MYFILE *f)
 					value = get_number(word2);
 
 				bootmap = (INT16)value;
+				bootmapchanged = true;
 				//titlechanged = true;
 			}
 			else if (fastcmp(word, "STARTCHAR"))
diff --git a/src/dehacked.c b/src/dehacked.c
index 505c7ed1f1..473e77e55b 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -20,6 +20,7 @@ boolean deh_loaded = false;
 boolean gamedataadded = false;
 boolean titlechanged = false;
 boolean introchanged = false;
+boolean bootmapchanged = false;
 
 static int dbg_line;
 static INT32 deh_num_warning = 0;
@@ -196,8 +197,7 @@ static void DEH_LoadDehackedFile(MYFILE *f, boolean mainfile)
 
 	deh_num_warning = 0;
 
-	bootmap = 0;
-	gamedataadded = titlechanged = introchanged = false;
+	gamedataadded = titlechanged = introchanged = bootmapchanged = false;
 
 	// it doesn't test the version of SRB2 and version of dehacked file
 	dbg_line = -1; // start at -1 so the first line is 0.
@@ -588,7 +588,7 @@ static void DEH_LoadDehackedFile(MYFILE *f, boolean mainfile)
 
 	if (gamestate == GS_TITLESCREEN)
 	{
-		if (bootmap)
+		if (bootmapchanged && bootmap)
 		{
 			menuactive = false;
 			D_MapChange(bootmap, gametype, ultimatemode, true, 0, false, false);
diff --git a/src/dehacked.h b/src/dehacked.h
index d985b14b03..e7b9b46566 100644
--- a/src/dehacked.h
+++ b/src/dehacked.h
@@ -39,6 +39,7 @@ extern boolean deh_loaded;
 extern boolean gamedataadded;
 extern boolean titlechanged;
 extern boolean introchanged;
+extern boolean bootmapchanged;
 
 #define MAX_ACTION_RECURSION 30
 extern const char *luaactions[MAX_ACTION_RECURSION];
-- 
GitLab