diff --git a/src/p_setup.c b/src/p_setup.c
index 2216334e727b29bb49eac63d38082568a4ff7027..47262ec5a9d5c80b6ec85820d6c0c0143afb9238 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -2862,6 +2862,17 @@ boolean P_SetupLevel(boolean skipprecip)
 		loadprecip = 0;
 		loademblems = 0;
 	}
+	else if (savedata.lives > 0)
+	{
+		numgameovers = savedata.numgameovers;
+		players[consoleplayer].continues = savedata.continues;
+		players[consoleplayer].lives = savedata.lives;
+		players[consoleplayer].score = savedata.score;
+		if ((botingame = ((botskin = savedata.botskin) != 0)))
+			botcolor = skins[botskin-1].prefcolor;
+		emeralds = savedata.emeralds;
+		savedata.lives = 0;
+	}
 
 	// internal game map
 	maplumpname = G_BuildMapName(gamemap);
@@ -3225,18 +3236,6 @@ boolean P_SetupLevel(boolean skipprecip)
 
 	lastmaploaded = gamemap; // HAS to be set after saving!!
 
-	if (savedata.lives > 0)
-	{
-		numgameovers = savedata.numgameovers;
-		players[consoleplayer].continues = savedata.continues;
-		players[consoleplayer].lives = savedata.lives;
-		players[consoleplayer].score = savedata.score;
-		if ((botingame = ((botskin = savedata.botskin) != 0)))
-			botcolor = skins[botskin-1].prefcolor;
-		emeralds = savedata.emeralds;
-		savedata.lives = 0;
-	}
-
 	if (loadprecip) // uglier hack
 	{ // to make a newly loaded level start on the second frame.
 		INT32 buf = gametic % BACKUPTICS;