diff --git a/src/g_game.c b/src/g_game.c
index 65d1993505dc8da230a7410e0d98895653ace808..632e33009c7b290268ff543a1597ac327e3e7ef0 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -2397,6 +2397,8 @@ void G_SpawnPlayer(INT32 playernum, boolean starpost)
 
 	P_SpawnPlayer(playernum);
 
+	players[playernum].rings = mapheaderinfo[gamemap-1]->startrings;
+
 	if (starpost) //Don't even bother with looking for a place to spawn.
 	{
 		P_MovePlayerToStarpost(playernum);
@@ -2452,8 +2454,6 @@ void G_SpawnPlayer(INT32 playernum, boolean starpost)
 	}
 	P_MovePlayerToSpawn(playernum, spawnpoint);
 
-	players[playernum].rings = mapheaderinfo[gamemap-1]->startrings;
-
 #ifdef HAVE_BLUA
 	LUAh_PlayerSpawn(&players[playernum]); // Lua hook for player spawning :)
 #endif
diff --git a/src/p_setup.c b/src/p_setup.c
index 259cbfea33a6e1920716a70bd4b95bcca9239798..585da2149b1c3c4277ceb06968b47afeea41d788 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -2176,7 +2176,7 @@ static void P_LevelInitStuff(void)
 	tokenbits = 0;
 	runemeraldmanager = false;
 	emeraldspawndelay = 60*TICRATE;
-	nummaprings = 0;
+	nummaprings = mapheaderinfo[gamemap-1]->startrings;
 
 	// emerald hunt
 	hunt1 = hunt2 = hunt3 = NULL;