From 125550e4c31118eef45548a6c05008dac6400c2e Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Wed, 1 Mar 2023 21:48:18 -0800 Subject: [PATCH] CSMultiplayerRules: When players die, they'll always drop their primary weapon if they have one. Thanks /alpha/ --- src/server/gamerules_multiplayer.qc | 3 +++ src/shared/weapons.qc | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/server/gamerules_multiplayer.qc b/src/server/gamerules_multiplayer.qc index 11c7eab..c821a7b 100644 --- a/src/server/gamerules_multiplayer.qc +++ b/src/server/gamerules_multiplayer.qc @@ -84,6 +84,9 @@ CSMultiplayerRules::PlayerDeath(NSClientPlayer pl) if (targ.g_items & ITEM_C4BOMB) { targ.activeweapon = WEAPON_C4BOMB; Weapon_DropCurrentWeapon(targ); + } else { + targ.activeweapon = Cstrike_WeaponToDropUponDeath(targ); + Weapon_DropCurrentWeapon(targ); } /* clear all ammo and inventory... */ diff --git a/src/shared/weapons.qc b/src/shared/weapons.qc index ad39234..09e9e08 100644 --- a/src/shared/weapons.qc +++ b/src/shared/weapons.qc @@ -45,3 +45,20 @@ weapon_t g_weapons[] = { w_smokegrenade, w_c4bomb }; + +int +Cstrike_WeaponToDropUponDeath(player pl) +{ + int best_weapon = WEAPON_KNIFE; /* this will never drop, so an okay default */ + + for (int i = 0; i < g_weapons.length; i++) { + if (pl.g_items & g_weapons[i].id) { + if (g_weapons[i].slot == 0) + return i; /* immediately choose this primary weapon */ + + best_weapon = i; + } + } + + return best_weapon; +} \ No newline at end of file