implement Deathmatch 3.0 (from Crispy Doom) (#595)

This commit is contained in:
Roman Fomin 2022-06-10 23:15:27 +07:00 committed by GitHub
parent 3d1f4c2e35
commit 5f5e0e2c19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 3 deletions

View File

@ -1773,6 +1773,11 @@ void D_DoomMain(void)
if (M_CheckParm ("-deathmatch"))
deathmatch = 1;
// Start a deathmatch 3.0 game. Weapons stay in place and all items respawn
// after 30 seconds.
if (M_CheckParm ("-dm3"))
deathmatch = 3;
switch ( gamemode )
{
case retail:

View File

@ -1005,7 +1005,8 @@ void P_RespawnSpecials (void)
mapthing_t* mthing;
int i;
if (deathmatch != 2 || // only respawn items in deathmatch
// AX: deathmatch 3 is a Crispy-specific change
if ((deathmatch != 2 && deathmatch != 3) || // only respawn items in deathmatch
iquehead == iquetail || // nothing left to respawn?
leveltime - itemrespawntime[iquetail] < 30*35) // wait 30 seconds
return;

View File

@ -91,7 +91,7 @@ static const char *rekkr_skills[] =
};
static const char *gamemodes[] = { "Co-operative", "Deathmatch",
"Deathmatch 2.0" };
"Deathmatch 2.0", "Deathmatch 3.0" };
static char *wads[NUM_WADS];
static char *extra_params[NUM_EXTRA_PARAMS];
@ -223,6 +223,10 @@ static void StartGame(int multiplayer)
{
AddCmdLineParameter(exec, "-altdeath");
}
else if (deathmatch == 3) // AX: this is a Crispy-specific change
{
AddCmdLineParameter(exec, "-dm3");
}
if (timer > 0)
{
@ -618,7 +622,7 @@ static txt_window_action_t *WadWindowAction(void)
static txt_dropdown_list_t *GameTypeDropdown(void)
{
return TXT_NewDropdownList(&deathmatch, gamemodes, 3);
return TXT_NewDropdownList(&deathmatch, gamemodes, 4);
}
// "Start game" menu. This is used for the start server window