From 9a634d125f9dc90d1245df1a5047628be8bdf4fd Mon Sep 17 00:00:00 2001 From: div0 Date: Mon, 12 Jan 2009 09:17:42 +0000 Subject: [PATCH] improved weapon stay mode so it no longer affects the porto git-svn-id: svn://svn.icculus.org/nexuiz/trunk@5495 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/constants.qh | 1 + data/qcsrc/server/t_items.qc | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/data/qcsrc/server/constants.qh b/data/qcsrc/server/constants.qh index 7e6e8d78d..4c7b68769 100644 --- a/data/qcsrc/server/constants.qh +++ b/data/qcsrc/server/constants.qh @@ -19,6 +19,7 @@ float FL_WEAPON = 8192; float FL_POWERUP = 16384; float FL_PROJECTILE = 32768; float FL_TOSSED = 65536; +float FL_NO_WEAPON_STAY = 131072; float MOVETYPE_NONE = 0; float MOVETYPE_ANGLENOCLIP = 1; diff --git a/data/qcsrc/server/t_items.qc b/data/qcsrc/server/t_items.qc index c26b115ca..a62fbea59 100644 --- a/data/qcsrc/server/t_items.qc +++ b/data/qcsrc/server/t_items.qc @@ -109,11 +109,19 @@ float Item_GiveTo(entity item, entity player) else { if (g_weapon_stay == 1) + if not(item.flags & FL_NO_WEAPON_STAY) + if (item.flags & FL_WEAPON) { - if (item.flags & FL_WEAPON && player.weapons & item.weapons && item.classname != "droppedweapon") - goto skip; - if (player.weapons & item.weapons && item.flags & FL_TOSSED) // don't let players stack ammo by tossing weapons - goto skip; + if(item.classname == "droppedweapon") + { + if (player.weapons & item.weapons) // don't let players stack ammo by tossing weapons + goto skip; + } + else + { + if (player.weapons & item.weapons) + goto skip; + } } // in case the player has autoswitch enabled do the following: @@ -239,7 +247,7 @@ void Item_Touch (void) if (self.classname == "droppedweapon") remove (self); - else if((self.flags & FL_WEAPON) && !self.team && g_weapon_stay) + else if((self.flags & FL_WEAPON) && !(self.flags & FL_NO_WEAPON_STAY) && g_weapon_stay) return; else { @@ -687,6 +695,14 @@ void weapon_defaultspawnfunc(float wpn) if(!self.ammofield) self.ammofield = cvar(strcat("g_pickup_", Item_CounterFieldName(e.items))); } + else + { + self.flags |= FL_NO_WEAPON_STAY; + } + + // weapon stay isn't supported for teamed weapons + if(self.team) + self.flags |= FL_NO_WEAPON_STAY; if(g_weapon_stay == 2) { -- 2.39.2