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