diff --git a/client/src/cl_game.cpp b/client/src/cl_game.cpp index 022837831..4c93f7ade 100644 --- a/client/src/cl_game.cpp +++ b/client/src/cl_game.cpp @@ -100,6 +100,7 @@ EXTERN_CVAR (novert) EXTERN_CVAR (sv_monstersrespawn) EXTERN_CVAR (sv_itemsrespawn) EXTERN_CVAR (sv_respawnsuper) +EXTERN_CVAR (sv_respawnbarrels) EXTERN_CVAR (sv_weaponstay) EXTERN_CVAR (sv_keepkeys) EXTERN_CVAR (sv_sharekeys) @@ -2013,6 +2014,7 @@ void G_DoPlayDemo(bool justStreamInput) } sv_respawnsuper.Set(0.0f); + sv_respawnbarrels.Set(0.0f); usergame = false; } diff --git a/common/c_cvarlist.cpp b/common/c_cvarlist.cpp index 535602586..650276b56 100644 --- a/common/c_cvarlist.cpp +++ b/common/c_cvarlist.cpp @@ -107,7 +107,10 @@ CVAR( sv_infiniteammo, "0", "Infinite ammo for all players", CVAR( sv_itemsrespawn, "0", "Items will respawn after a fixed period, see sv_itemrespawntime", CVARTYPE_BOOL, CVAR_SERVERARCHIVE | CVAR_SERVERINFO | CVAR_LATCH) -CVAR( sv_respawnsuper, "0", "Allows Invisibility/Invulnerability spheres from respawning (need sv_itemsrespawn set to 1)", +CVAR( sv_respawnsuper, "0", "Allows Invisibility/Invulnerability spheres to respawn (requires sv_itemsrespawn set to 1)", + CVARTYPE_BOOL, CVAR_SERVERARCHIVE | CVAR_SERVERINFO | CVAR_LATCH) + +CVAR( sv_respawnbarrels, "0", "Allows barrels to respawn. (requires sv_itemsrespawn set to 1)", CVARTYPE_BOOL, CVAR_SERVERARCHIVE | CVAR_SERVERINFO | CVAR_LATCH) CVAR_RANGE( sv_itemrespawntime, "30", "If sv_itemsrespawn is set, items will respawn after this " \ diff --git a/common/p_mobj.cpp b/common/p_mobj.cpp index 22d77394a..099b20bb0 100644 --- a/common/p_mobj.cpp +++ b/common/p_mobj.cpp @@ -77,6 +77,7 @@ void SV_UpdateMonsterRespawnCount(); EXTERN_CVAR(sv_freelook) EXTERN_CVAR(sv_itemsrespawn) EXTERN_CVAR(sv_respawnsuper) +EXTERN_CVAR(sv_respawnbarrels) EXTERN_CVAR(sv_itemrespawntime) EXTERN_CVAR(co_zdoomphys) EXTERN_CVAR(co_mbfphys) @@ -424,7 +425,9 @@ void AActor::Destroy () P_RemoveHealthPool(this); // Add special to item respawn queue if it is destined to be respawned - if ((flags & MF_SPECIAL) && !(flags & MF_DROPPED) && spawnpoint.type > 0) + // also add barrels + if (((flags & MF_SPECIAL) && !(flags & MF_DROPPED) && spawnpoint.type > 0) || + info->type == MT_BARREL) { itemrespawnque.emplace(spawnpoint, level.time); @@ -2645,7 +2648,9 @@ void P_RespawnSpecials (void) auto it = spawn_map.find(mthing.type); if (it == spawn_map.end() || // Allow or not Partial Invisibility & Invulnerability from respawning - (!sv_respawnsuper && (mthing.type == 2022 || mthing.type == 2024))) + (!sv_respawnsuper && (mthing.type == 2022 || mthing.type == 2024)) || + // pop barrels as well if needed + (!sv_respawnbarrels && mthing.type == 2035)) { // pull it from the queue itemrespawnque.pop(); diff --git a/config-samples/coop-all-official-wads.cfg b/config-samples/coop-all-official-wads.cfg index 1d117482d..292885725 100644 --- a/config-samples/coop-all-official-wads.cfg +++ b/config-samples/coop-all-official-wads.cfg @@ -72,6 +72,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "1" diff --git a/config-samples/coop-doom.cfg b/config-samples/coop-doom.cfg index f6222234e..ccd1c4801 100644 --- a/config-samples/coop-doom.cfg +++ b/config-samples/coop-doom.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/coop-masterlevels.cfg b/config-samples/coop-masterlevels.cfg index 3fd1ac5d4..ab4683a6a 100644 --- a/config-samples/coop-masterlevels.cfg +++ b/config-samples/coop-masterlevels.cfg @@ -73,6 +73,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "1" diff --git a/config-samples/coop-modern.cfg b/config-samples/coop-modern.cfg index e8629652b..f67402923 100644 --- a/config-samples/coop-modern.cfg +++ b/config-samples/coop-modern.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "1" diff --git a/config-samples/coop-zdoom.cfg b/config-samples/coop-zdoom.cfg index 4fdc8442c..e5d8c8c15 100644 --- a/config-samples/coop-zdoom.cfg +++ b/config-samples/coop-zdoom.cfg @@ -49,6 +49,7 @@ set sv_freelook "1" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "1" diff --git a/config-samples/ctf-attackdefend.cfg b/config-samples/ctf-attackdefend.cfg index 119b58d5d..c3149d224 100644 --- a/config-samples/ctf-attackdefend.cfg +++ b/config-samples/ctf-attackdefend.cfg @@ -49,6 +49,7 @@ set sv_freelook "1" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/ctf-doom.cfg b/config-samples/ctf-doom.cfg index dfdf25da0..f0a0965ac 100644 --- a/config-samples/ctf-doom.cfg +++ b/config-samples/ctf-doom.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/ctf-pub.cfg b/config-samples/ctf-pub.cfg index 1b59fab79..ee7ec6362 100644 --- a/config-samples/ctf-pub.cfg +++ b/config-samples/ctf-pub.cfg @@ -49,6 +49,7 @@ set sv_freelook "1" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/ctf-wdl.cfg b/config-samples/ctf-wdl.cfg index 90a0b8db5..50c7e4c1a 100644 --- a/config-samples/ctf-wdl.cfg +++ b/config-samples/ctf-wdl.cfg @@ -49,6 +49,7 @@ set sv_freelook "1" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/dm-doom.cfg b/config-samples/dm-doom.cfg index a9944a754..cfb1ad828 100644 --- a/config-samples/dm-doom.cfg +++ b/config-samples/dm-doom.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/dm-iddm1.cfg b/config-samples/dm-iddm1.cfg index 82087aa53..074958d0f 100644 --- a/config-samples/dm-iddm1.cfg +++ b/config-samples/dm-iddm1.cfg @@ -79,6 +79,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/dm-modern.cfg b/config-samples/dm-modern.cfg index d9e72ad5d..8b1efd422 100644 --- a/config-samples/dm-modern.cfg +++ b/config-samples/dm-modern.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/dm-zdoom.cfg b/config-samples/dm-zdoom.cfg index 1d603754f..a821bb20d 100644 --- a/config-samples/dm-zdoom.cfg +++ b/config-samples/dm-zdoom.cfg @@ -49,6 +49,7 @@ set sv_freelook "1" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/duel-altdeath.cfg b/config-samples/duel-altdeath.cfg index 748f307eb..0524fba41 100644 --- a/config-samples/duel-altdeath.cfg +++ b/config-samples/duel-altdeath.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/duel-ddl.cfg b/config-samples/duel-ddl.cfg index ca47dc332..60083e896 100644 --- a/config-samples/duel-ddl.cfg +++ b/config-samples/duel-ddl.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/duel-doom.cfg b/config-samples/duel-doom.cfg index e83f19d3c..1c6091f0d 100644 --- a/config-samples/duel-doom.cfg +++ b/config-samples/duel-doom.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/duel-zddl.cfg b/config-samples/duel-zddl.cfg index 4022b67c1..8a0b78d43 100644 --- a/config-samples/duel-zddl.cfg +++ b/config-samples/duel-zddl.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/duel-zdoom.cfg b/config-samples/duel-zdoom.cfg index 81ee8cb54..70ec044af 100644 --- a/config-samples/duel-zdoom.cfg +++ b/config-samples/duel-zdoom.cfg @@ -49,6 +49,7 @@ set sv_freelook "1" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/horde-doom.cfg b/config-samples/horde-doom.cfg index 38885d0d1..9ad961a7f 100644 --- a/config-samples/horde-doom.cfg +++ b/config-samples/horde-doom.cfg @@ -51,6 +51,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/horde-modern.cfg b/config-samples/horde-modern.cfg index 45dfcd5fb..80c947d6a 100644 --- a/config-samples/horde-modern.cfg +++ b/config-samples/horde-modern.cfg @@ -51,6 +51,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "1" diff --git a/config-samples/horde-zdoom.cfg b/config-samples/horde-zdoom.cfg index cd95e4db7..add44bcc8 100644 --- a/config-samples/horde-zdoom.cfg +++ b/config-samples/horde-zdoom.cfg @@ -51,6 +51,7 @@ set sv_freelook "1" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "1" diff --git a/config-samples/lms-2team.cfg b/config-samples/lms-2team.cfg index b333fcc91..82ee04eef 100644 --- a/config-samples/lms-2team.cfg +++ b/config-samples/lms-2team.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/lms-3team.cfg b/config-samples/lms-3team.cfg index 00c9e8e76..19a4e840f 100644 --- a/config-samples/lms-3team.cfg +++ b/config-samples/lms-3team.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/lms-ffa.cfg b/config-samples/lms-ffa.cfg index 9797a283b..5b001e085 100644 --- a/config-samples/lms-ffa.cfg +++ b/config-samples/lms-ffa.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/survival-modern.cfg b/config-samples/survival-modern.cfg index ba92c1bc6..dc8799922 100644 --- a/config-samples/survival-modern.cfg +++ b/config-samples/survival-modern.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "1" diff --git a/config-samples/tdm-doom.cfg b/config-samples/tdm-doom.cfg index e1c417fb2..c1986eeba 100644 --- a/config-samples/tdm-doom.cfg +++ b/config-samples/tdm-doom.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/tdm-modern.cfg b/config-samples/tdm-modern.cfg index 649e31362..c7e31d780 100644 --- a/config-samples/tdm-modern.cfg +++ b/config-samples/tdm-modern.cfg @@ -49,6 +49,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/config-samples/tdm-zdoom.cfg b/config-samples/tdm-zdoom.cfg index 44cc68f42..122c9efa9 100644 --- a/config-samples/tdm-zdoom.cfg +++ b/config-samples/tdm-zdoom.cfg @@ -49,6 +49,7 @@ set sv_freelook "1" set sv_infiniteammo "0" set sv_itemsrespawn "1" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "0" diff --git a/docker/examples/configs/config.cfg b/docker/examples/configs/config.cfg index fecb462dc..796be306f 100644 --- a/docker/examples/configs/config.cfg +++ b/docker/examples/configs/config.cfg @@ -50,6 +50,7 @@ set sv_freelook "0" set sv_infiniteammo "0" set sv_itemsrespawn "0" set sv_respawnsuper "0" +set sv_respawnbarrels "0" set sv_itemrespawntime "30" set sv_maxcorpses "200" set sv_unblockplayers "1"