]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/weapons/throwing.qc
Merge branch 'master' into TimePath/items
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / weapons / throwing.qc
index 1f5dd27fd1de87f93a10471f53cbee56c759b32e..29084dea17fd2303a62b501d3d714768498b200e 100644 (file)
@@ -1,7 +1,7 @@
 #include "throwing.qh"
 
 #include "weaponsystem.qh"
-#include "../mutators/mutators_include.qh"
+#include "../mutators/all.qh"
 #include "../t_items.qh"
 #include "../g_damage.qh"
 #include "../../common/items/item.qh"
@@ -134,29 +134,29 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto
        }
 }
 
-float W_IsWeaponThrowable(float w)
+bool W_IsWeaponThrowable(bool w)
 {
+       if (MUTATOR_CALLHOOK(ForbidDropCurrentWeapon))
+               return false;
        if (!autocvar_g_pickup_items)
-               return 0;
+               return false;
        if (g_weaponarena)
                return 0;
        if (g_cts)
                return 0;
-       if (g_nexball && w == WEP_MORTAR.m_id)
-               return 0;
-    if(w == 0)
-        return 0;
+    if(w == WEP_Null.m_id)
+        return false;
 
        #if 0
        if(start_weapons & WepSet_FromWeapon(w))
        {
                // start weapons that take no ammo can't be dropped (this prevents dropping the laser, as long as it continues to use no ammo)
                if(start_items & IT_UNLIMITED_WEAPON_AMMO)
-                       return 0;
+                       return false;
                if((get_weaponinfo(w)).ammo_field == ammo_none)
-                       return 0;
+                       return false;
        }
-       return 1;
+       return true;
        #else
        return (get_weaponinfo(w)).weaponthrowable;
        #endif
@@ -165,11 +165,8 @@ float W_IsWeaponThrowable(float w)
 // toss current weapon
 void W_ThrowWeapon(vector velo, vector delta, float doreduce)
 {SELFPARAM();
-       float w;
-       string a;
-
-       w = self.weapon;
-       if (w == 0)
+       int w = self.weapon;
+       if (w == WEP_Null.m_id)
                return; // just in case
        if(MUTATOR_CALLHOOK(ForbidThrowCurrentWeapon))
                return;
@@ -185,7 +182,7 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce)
        self.weapons &= ~WepSet_FromWeapon(w);
 
        W_SwitchWeapon_Force(self, w_getbestweapon(self));
-       a = W_ThrowNewWeapon(self, w, doreduce, self.origin + delta, velo);
+       string a = W_ThrowNewWeapon(self, w, doreduce, self.origin + delta, velo);
 
        if(!a) return;
        Send_Notification(NOTIF_ONE, self, MSG_MULTI, ITEM_WEAPON_DROP, a, w);