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")) if (M_CheckParm ("-deathmatch"))
deathmatch = 1; 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 ) switch ( gamemode )
{ {
case retail: case retail:

View File

@ -1005,7 +1005,8 @@ void P_RespawnSpecials (void)
mapthing_t* mthing; mapthing_t* mthing;
int i; 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? iquehead == iquetail || // nothing left to respawn?
leveltime - itemrespawntime[iquetail] < 30*35) // wait 30 seconds leveltime - itemrespawntime[iquetail] < 30*35) // wait 30 seconds
return; return;

View File

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