]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Items: remove flags parameter from `_StartItem`
authorTimePath <andrew.hardaker1995@gmail.com>
Mon, 12 Oct 2015 23:10:25 +0000 (10:10 +1100)
committerTimePath <andrew.hardaker1995@gmail.com>
Mon, 12 Oct 2015 23:10:25 +0000 (10:10 +1100)
qcsrc/common/weapons/weapon.qh
qcsrc/server/t_items.qc
qcsrc/server/t_items.qh
qcsrc/server/weapons/spawning.qc

index 262a91916109c5357184d6262b434650ffb5667f..39702051b7aeda158ddce290daddc2a6456d0b27 100644 (file)
@@ -97,6 +97,7 @@ CLASS(WeaponPickup, Pickup)
     ATTRIB(WeaponPickup, m_sound, Sound, SND_WEAPONPICKUP)
 #endif
 #ifdef SVQC
+    ATTRIB(WeaponPickup, m_itemflags, int, FL_WEAPON)
     float weapon_pickupevalfunc(entity player, entity item);
     ATTRIB(WeaponPickup, m_pickupevalfunc, float(entity player, entity item), weapon_pickupevalfunc)
 #endif
index 9b8cde9b99d4d46e256bf63df5dc323629b55b63..15a8ec9b6000a283aa8044708358a073f36882a1 100644 (file)
@@ -378,7 +378,12 @@ void Item_Show (entity e, float mode)
                e.spawnshieldtime = 1;
                e.ItemStatus &= ~ITS_AVAILABLE;
        }
-       else if(e.itemdef.instanceOfWeaponPickup && !(e.flags & FL_NO_WEAPON_STAY) && g_weapon_stay)
+       else {
+       entity def = e.itemdef;
+       bool nostay = def.instanceOfWeaponPickup ? !!(def.m_weapon.weapons & WEPSET_SUPERWEAPONS) : false // no weapon-stay on superweapons
+               || e.team // weapon stay isn't supported for teamed weapons
+               ;
+       if(def.instanceOfWeaponPickup && !nostay && g_weapon_stay)
        {
                // make the item translucent and not touchable
                e.model = e.mdl;
@@ -395,7 +400,7 @@ void Item_Show (entity e, float mode)
                e.glowmod = e.colormod;
                e.spawnshieldtime = 1;
                e.ItemStatus &= ~ITS_AVAILABLE;
-       }
+       }}
 
        if (e.items & ITEM_Strength.m_itemid || e.items & ITEM_Shield.m_itemid)
                e.ItemStatus |= ITS_POWERUP;
@@ -975,13 +980,14 @@ void Item_Damage(entity inflictor, entity attacker, float damage, int deathtype,
                RemoveItem();
 }
 
-void _StartItem(entity this, entity def, float defaultrespawntime, float defaultrespawntimejitter, float itemflags)
+void _StartItem(entity this, entity def, float defaultrespawntime, float defaultrespawntimejitter)
 {
        string itemname = def.m_name;
        Model itemmodel = def.m_model;
     Sound pickupsound = def.m_sound;
        float(entity player, entity item) pickupevalfunc = def.m_pickupevalfunc;
        float pickupbasevalue = def.m_botvalue;
+       int itemflags = def.m_itemflags;
 
        startitem_failed = false;
 
@@ -1193,8 +1199,7 @@ void StartItem(entity this, GameItem def)
        this,
        this.itemdef = def,
        def.m_respawntime(), // defaultrespawntime
-       def.m_respawntimejitter(), // defaultrespawntimejitter
-       def.m_itemflags // itemflags
+       def.m_respawntimejitter() // defaultrespawntimejitter
        );
 }
 
index 230f54634f1273e5a46c4e549305e0cd361210eb..0e4da21ed3cfea86a4d4b6c9b8668c7110ad123b 100644 (file)
@@ -112,7 +112,7 @@ float commodity_pickupevalfunc(entity player, entity item);
 
 .float is_item;
 .entity itemdef;
-void _StartItem(entity this, entity def, float defaultrespawntime, float defaultrespawntimejitter, float itemflags);
+void _StartItem(entity this, entity def, float defaultrespawntime, float defaultrespawntimejitter);
 
 
 void target_items_use (void);
index 420133d377719504f84d4d1fefb91b5fc3e6d513..5e1912ef8de8bea8310f8b6fdb18df1301cf5cef 100644 (file)
@@ -160,23 +160,12 @@ void weapon_defaultspawnfunc(entity this, Weapon e)
        if (g_pickup_weapons_anyway)
                this.pickup_anyway = true;
 
-       int f = FL_WEAPON;
-
-       // no weapon-stay on superweapons
-       if (e.weapons & WEPSET_SUPERWEAPONS)
-               f |= FL_NO_WEAPON_STAY;
-
-       // weapon stay isn't supported for teamed weapons
-       if (this.team)
-               f |= FL_NO_WEAPON_STAY;
-
        GameItem def = e.m_pickup;
        _StartItem(
                this,
                this.itemdef = def,
                this.respawntime, // defaultrespawntime
-               this.respawntimejitter, // defaultrespawntimejitter
-               f // itemflags
+               this.respawntimejitter // defaultrespawntimejitter
        );
        #if 0 // WEAPONTODO
        if (this.modelindex) { // don't precache if this was removed