shithub: choc

Download patch

ref: 3e21ed71a3ae99bc542d9eadca76c283366985cf
parent: 560cdc3e4572cc84d493c5450092b6ce1694bd89
author: mfrancis95 <mikefrancis95@gmail.com>
date: Mon Oct 1 14:27:50 EDT 2018

Gracefully error out when player starts are missing

--- a/src/doom/doomstat.h
+++ b/src/doom/doomstat.h
@@ -228,7 +228,7 @@
 
 // Player spawn spots.
 extern  mapthing_t      playerstarts[MAXPLAYERS];
-
+extern  boolean         playerstartsingame[MAXPLAYERS];
 // Intermission stats.
 // Parameters for world map / intermission.
 extern  wbstartstruct_t		wminfo;	
--- a/src/doom/p_mobj.c
+++ b/src/doom/p_mobj.c
@@ -788,6 +788,7 @@
     {
 	// save spots for respawning in network games
 	playerstarts[mthing->type-1] = *mthing;
+	playerstartsingame[mthing->type-1] = true;
 	if (!deathmatch)
 	    P_SpawnPlayer (mthing);
 
--- a/src/doom/p_setup.c
+++ b/src/doom/p_setup.c
@@ -107,6 +107,7 @@
 mapthing_t	deathmatchstarts[MAX_DEATHMATCH_STARTS];
 mapthing_t*	deathmatch_p;
 mapthing_t	playerstarts[MAXPLAYERS];
+boolean     playerstartsingame[MAXPLAYERS];
 
 
 
@@ -388,6 +389,11 @@
 	
 	P_SpawnMapThing(&spawnthing);
     }
+
+    if (!deathmatch)
+        for (i = 0; i < MAXPLAYERS; i++)
+            if (playeringame[i] && !playerstartsingame[i])
+                I_Error("P_LoadThings: Player %d start missing (vanilla crashes here)", i + 1);
 
     W_ReleaseLumpNum(lump);
 }