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);
}