From 0fba5175ee46ddb6b6d82eafcc6bf7cbe6334bf7 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Wed, 14 Mar 2012 10:33:13 +0100 Subject: [PATCH] fix a stupid interaction between weapon throwing and weapon load (loaded ammo was not thrown) --- qcsrc/server/cl_weapons.qc | 12 +++++++----- qcsrc/server/t_items.qc | 7 +++++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/qcsrc/server/cl_weapons.qc b/qcsrc/server/cl_weapons.qc index 4a12ce1850..94eaccd2da 100644 --- a/qcsrc/server/cl_weapons.qc +++ b/qcsrc/server/cl_weapons.qc @@ -262,7 +262,6 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto if(wa & j) { ammofield = Item_CounterField(j); - wep.ammofield = 0; // if our weapon is loaded, give its load back to the player if(self.(weapon_load[self.weapon]) > 0) @@ -270,6 +269,8 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto own.ammofield += self.(weapon_load[self.weapon]); self.(weapon_load[self.weapon]) = -1; // schedule the weapon for reloading } + + wep.ammofield = 0; } } } @@ -280,10 +281,6 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto if(wa & j) { ammofield = Item_CounterField(j); - thisammo = min(own.ammofield, wep.ammofield); - wep.ammofield = thisammo; - own.ammofield -= thisammo; - s = strcat(s, " and ", ftos(thisammo), " ", Item_CounterFieldName(j)); // if our weapon is loaded, give its load back to the player if(self.(weapon_load[self.weapon]) > 0) @@ -291,6 +288,11 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto own.ammofield += self.(weapon_load[self.weapon]); self.(weapon_load[self.weapon]) = -1; // schedule the weapon for reloading } + + thisammo = min(own.ammofield, wep.ammofield); + wep.ammofield = thisammo; + own.ammofield -= thisammo; + s = strcat(s, " and ", ftos(thisammo), " ", Item_CounterFieldName(j)); } } s = substring(s, 5, -1); diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc index b26c840ff0..1e9d6a753c 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -379,8 +379,6 @@ float Item_GiveTo(entity item, entity player) if (item.weapons & WEPBIT_MINSTANEX) W_GiveWeapon (player, WEP_MINSTANEX, item.netname); - if (item.ammo_cells) - player.ammo_cells = bound(player.ammo_cells, 999, player.ammo_cells + autocvar_g_minstagib_ammo_drop); player.health = 100; } @@ -1102,6 +1100,11 @@ void weapon_defaultspawnfunc(float wpn) if(self.team) f |= FL_NO_WEAPON_STAY; + // stupid minstagib hack, don't ask + if(g_minstagib) + if(self.ammo_cells) + self.ammo_cells = autocvar_g_minstagib_ammo_drop; + StartItem(e.model, "weapons/weaponpickup.wav", self.respawntime, self.respawntimejitter, e.message, 0, e.weapons, f, weapon_pickupevalfunc, e.bot_pickupbasevalue); if (self.modelindex) // don't precache if self was removed weapon_action(e.weapon, WR_PRECACHE); -- 2.39.2