From c6a68f69ce7e4f894866035a3ff7ada544b179d6 Mon Sep 17 00:00:00 2001
From: Sally Coolatta <tehrealsalt@gmail.com>
Date: Sun, 4 Feb 2024 01:22:11 -0500
Subject: [PATCH] Update unlockables before level load executors

Another issue that seems related to #1122
---
 src/p_setup.c | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/p_setup.c b/src/p_setup.c
index 851231c42..0eafda9da 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -7913,6 +7913,24 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate)
 	if (!P_LoadMapFromFile())
 		return false;
 
+	if (!demoplayback)
+	{
+		clientGamedata->mapvisited[gamemap-1] |= MV_VISITED;
+		serverGamedata->mapvisited[gamemap-1] |= MV_VISITED;
+
+		M_SilentUpdateUnlockablesAndEmblems(serverGamedata);
+
+		if (M_UpdateUnlockablesAndExtraEmblems(clientGamedata))
+		{
+			S_StartSound(NULL, sfx_s3k68);
+			G_SaveGameData(clientGamedata);
+		}
+		else if (!reloadinggamestate)
+		{
+			G_SaveGameData(clientGamedata);
+		}
+	}
+
 	// init anything that P_SpawnSlopes/P_LoadThings needs to know
 	P_InitSpecials();
 
@@ -7971,24 +7989,6 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate)
 	nextmapoverride = 0;
 	skipstats = 0;
 
-	if (!demoplayback)
-	{
-		clientGamedata->mapvisited[gamemap-1] |= MV_VISITED;
-		serverGamedata->mapvisited[gamemap-1] |= MV_VISITED;
-
-		M_SilentUpdateUnlockablesAndEmblems(serverGamedata);
-
-		if (M_UpdateUnlockablesAndExtraEmblems(clientGamedata))
-		{
-			S_StartSound(NULL, sfx_s3k68);
-			G_SaveGameData(clientGamedata);
-		}
-		else if (!reloadinggamestate)
-		{
-			G_SaveGameData(clientGamedata);
-		}
-	}
-
 	levelloading = false;
 
 	P_RunCachedActions();
-- 
GitLab