Skip to content

Commit b8e2e93

Browse files
committed
Server: Add mp_weapondrop_type cvar
1 parent bbafd6c commit b8e2e93

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

src/game/server/gamerules.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,18 @@ enum
4646
GR_PLR_DROP_AMMO_NO,
4747
};
4848

49+
// additional enum for flag check
50+
enum
51+
{
52+
FLAG_GR_DROP_DEFAULT,
53+
FLAG_GR_DROP_GUN_ALL = 1 << 0,
54+
FLAG_GR_DROP_GUN_ACTIVE = 1 << 1,
55+
FLAG_GR_DROP_GUN_NO = 1 << 2,
56+
FLAG_GR_DROP_AMMO_ALL = 1 << 3,
57+
FLAG_GR_DROP_AMMO_ACTIVE = 1 << 4,
58+
FLAG_GR_DROP_AMMO_NO = 1 << 5
59+
};
60+
4961
// Player relationship return codes
5062
enum
5163
{

src/game/server/multiplay_gamerules.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@
3333

3434
#include <CBugfixedServer.h>
3535

36+
ConVar mp_weapondrop_type("mp_weapondrop_type", "0", 0, "Sets drop behavior for weapons/ammo after death\n"
37+
" 0 - default behavior\n"
38+
" +1 - gun: drop all\n"
39+
" +2 - gun: drop active only\n"
40+
" +4 - gun: drop none\n"
41+
" +8 - ammo: drop all\n"
42+
" +16 - ammo: drop active only\n"
43+
" +32 - ammo: drop none\n"
44+
" Flags can be combined (sum values).");
45+
3646
extern DLL_GLOBAL CGameRules *g_pGameRules;
3747
extern DLL_GLOBAL BOOL g_fGameOver;
3848
extern int gmsgDeathMsg; // client dll messages
@@ -1135,13 +1145,31 @@ float CHalfLifeMultiplay::FlHEVChargerRechargeTime(void)
11351145
//=========================================================
11361146
int CHalfLifeMultiplay::DeadPlayerWeapons(CBasePlayer *pPlayer)
11371147
{
1148+
int flags = mp_weapondrop_type.GetInt();
1149+
1150+
if (flags & FLAG_GR_DROP_GUN_ALL)
1151+
return GR_PLR_DROP_GUN_ALL;
1152+
else if (flags & FLAG_GR_DROP_GUN_ACTIVE)
1153+
return GR_PLR_DROP_GUN_ACTIVE;
1154+
else if (flags & FLAG_GR_DROP_GUN_NO)
1155+
return GR_PLR_DROP_GUN_NO;
1156+
11381157
return GR_PLR_DROP_GUN_ACTIVE;
11391158
}
11401159

11411160
//=========================================================
11421161
//=========================================================
11431162
int CHalfLifeMultiplay::DeadPlayerAmmo(CBasePlayer *pPlayer)
11441163
{
1164+
int flags = mp_weapondrop_type.GetInt();
1165+
1166+
if (flags & FLAG_GR_DROP_AMMO_ALL)
1167+
return GR_PLR_DROP_AMMO_ALL;
1168+
else if (flags & FLAG_GR_DROP_AMMO_ACTIVE)
1169+
return GR_PLR_DROP_AMMO_ACTIVE;
1170+
else if (flags & FLAG_GR_DROP_AMMO_NO)
1171+
return GR_PLR_DROP_AMMO_NO;
1172+
11451173
return GR_PLR_DROP_AMMO_ACTIVE;
11461174
}
11471175

0 commit comments

Comments
 (0)