Add sv_respawnbarrels to allow respawning le barrels

This commit is contained in:
endless-r0ad 2026-06-19 13:24:52 -04:00
parent 6fd0e0b569
commit 3440c76f3a
32 changed files with 42 additions and 3 deletions

View file

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

View file

@ -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 " \

View file

@ -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();

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"