Gracefully error out when player starts are missing

This commit is contained in:
mfrancis95 2018-10-01 18:27:50 -04:00
parent 560cdc3e45
commit 3e21ed71a3
3 changed files with 8 additions and 1 deletions

View file

@ -228,7 +228,7 @@ extern mapthing_t* deathmatch_p;
// Player spawn spots.
extern mapthing_t playerstarts[MAXPLAYERS];
extern boolean playerstartsingame[MAXPLAYERS];
// Intermission stats.
// Parameters for world map / intermission.
extern wbstartstruct_t wminfo;

View file

@ -788,6 +788,7 @@ void P_SpawnMapThing (mapthing_t* mthing)
{
// save spots for respawning in network games
playerstarts[mthing->type-1] = *mthing;
playerstartsingame[mthing->type-1] = true;
if (!deathmatch)
P_SpawnPlayer (mthing);

View file

@ -107,6 +107,7 @@ byte* rejectmatrix;
mapthing_t deathmatchstarts[MAX_DEATHMATCH_STARTS];
mapthing_t* deathmatch_p;
mapthing_t playerstarts[MAXPLAYERS];
boolean playerstartsingame[MAXPLAYERS];
@ -389,6 +390,11 @@ void P_LoadThings (int lump)
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);
}