From 9ace996ada00fff0b98711ee499a323e7672f005 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Sun, 26 Apr 2020 13:40:03 +0200 Subject: [PATCH] Counter-Strike: Make sure we drop our current weapon, as well as the C4 bomb if we do happen to carry it. --- src/server/cstrike/buy.c | 2 +- src/server/cstrike/gamerules_multiplayer.cpp | 8 ++++++++ src/shared/cstrike/w_c4bomb.c | 3 ++- src/shared/valve/weapon_common.c | 9 +++++++-- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/server/cstrike/buy.c b/src/server/cstrike/buy.c index 3b20a5ca..a74169c7 100644 --- a/src/server/cstrike/buy.c +++ b/src/server/cstrike/buy.c @@ -88,7 +88,7 @@ CSEv_BuyWeapon_f(float fWeapon) /* we're over the slot limit. */ if (c >= maxit) { pl.activeweapon = i; - CSEv_DropWeapon(); + Weapon_DropCurrentWeapon(pl); } } } diff --git a/src/server/cstrike/gamerules_multiplayer.cpp b/src/server/cstrike/gamerules_multiplayer.cpp index 708b0ee4..036afe8e 100644 --- a/src/server/cstrike/gamerules_multiplayer.cpp +++ b/src/server/cstrike/gamerules_multiplayer.cpp @@ -53,6 +53,14 @@ CSMultiplayerRules::PlayerDeath(player pl) g_dmg_eAttacker.frags++; } + Weapon_DropCurrentWeapon(pl); + + /* if we're the bomb carrier, make sure we drop the bomb. */ + if (pl.g_items & ITEM_C4BOMB) { + pl.activeweapon = WEAPON_C4BOMB; + Weapon_DropCurrentWeapon(pl); + } + /* clear all ammo and inventory... */ PlayerClearWeaponry(pl); diff --git a/src/shared/cstrike/w_c4bomb.c b/src/shared/cstrike/w_c4bomb.c index 7ae37ddd..8043b202 100644 --- a/src/shared/cstrike/w_c4bomb.c +++ b/src/shared/cstrike/w_c4bomb.c @@ -150,6 +150,7 @@ w_c4bomb_precache(void) precache_sound("weapons/c4_beep5.wav"); precache_sound("weapons/c4_explode1.wav"); precache_model("models/w_c4.mdl"); + precache_model("models/w_backpack.mdl"); precache_model("models/p_c4.mdl"); precache_model("sprites/ledglow.spr"); #else @@ -168,7 +169,7 @@ w_c4bomb_updateammo(player pl) string w_c4bomb_wmodel(void) { - return "models/w_c4.mdl"; + return "models/w_backpack.mdl"; } string diff --git a/src/shared/valve/weapon_common.c b/src/shared/valve/weapon_common.c index 485a8f6a..a67f26d3 100644 --- a/src/shared/valve/weapon_common.c +++ b/src/shared/valve/weapon_common.c @@ -392,9 +392,8 @@ void Weapons_ReloadWeapon(player pl, .int mag, .int ammo, int max) } } -void CSEv_DropWeapon(void) +void Weapon_DropCurrentWeapon(player pl) { - player pl = (player)self; static void DropWeapon_Enable(void) { @@ -421,4 +420,10 @@ void CSEv_DropWeapon(void) drop.avelocity[1] = 500; Weapons_RemoveItem(pl, pl.activeweapon); } + +void CSEv_DropWeapon(void) +{ + player pl = (player)self; + Weapon_DropCurrentWeapon(pl); +} #endif