diff --git a/src/d_clisrv.c b/src/d_clisrv.c
index 765a1a05d6d40b3b799861ca7d314eb5668659c3..0104368367b0ade0bc5719f05d4d56a42c67c315 100644
--- a/src/d_clisrv.c
+++ b/src/d_clisrv.c
@@ -69,6 +69,7 @@ char motd[254], server_context[8]; // Message of the Day, Unique Context (even w
 
 // server specific vars
 UINT8 playernode[MAXPLAYERS];
+UINT8 net_nodecount, net_playercount;
 
 SINT8 nodetoplayer[MAXNETNODES];
 SINT8 nodetoplayer2[MAXNETNODES]; // say the numplayer for this node if any (splitscreen)
@@ -892,8 +893,7 @@ static void CL_RemovePlayer(INT32 playernum)
 	// remove avatar of player
 	playeringame[playernum] = false;
 	playernode[playernum] = UINT8_MAX;
-	while (!playeringame[doomcom->numslots-1] && doomcom->numslots > 1)
-		doomcom->numslots--;
+	net_playercount--;
 
 	if (playernum == adminplayer)
 		adminplayer = -1; // don't stay admin after you're gone
@@ -932,8 +932,8 @@ void CL_Reset(void)
 	multiplayer = false;
 	servernode = 0;
 	server = true;
-	doomcom->numnodes = 1;
-	doomcom->numslots = 1;
+	net_nodecount = 1;
+	net_playercount = 1;
 	SV_StopServer();
 	SV_ResetServer();
 
@@ -1348,7 +1348,8 @@ void SV_ResetServer(void)
 	if (server)
 		servernode = 0;
 
-	doomcom->numslots = 0;
+	net_nodecount = 0;
+	net_playercount = 0;
 
 	// clear server_context
 	memset(server_context, '-', 8);
@@ -1455,8 +1456,7 @@ static void Got_AddPlayer(UINT8 **p, INT32 playernum)
 		CL_ClearPlayer(newplayernum);
 	playeringame[newplayernum] = true;
 	G_AddPlayer(newplayernum);
-	if (newplayernum+1 > doomcom->numslots)
-		doomcom->numslots = (INT16)(newplayernum+1);
+	net_playercount++;
 
 	if (netgame)
 		CONS_Printf(M_GetText("Player %d has joined the game (node %d)\n"), newplayernum+1, node);