]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cl_weapons.qc
Fix kill/teamchange/spectate not working in vehicles
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cl_weapons.qc
index 60ad8eee1b997103bae2b0f44663a8c618205936..236c0923fdc330834469234bc9eb2285a1f6bb26 100644 (file)
@@ -258,7 +258,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)
@@ -266,6 +265,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;
                                }
                        }
                }
@@ -276,10 +277,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)
@@ -287,6 +284,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);
@@ -316,7 +318,9 @@ float W_IsWeaponThrowable(float w)
                return 0;
        if (g_nexball && w == WEP_GRENADE_LAUNCHER)
                return 0;
-
+    if(w == 0)
+        return 0;
+       
        wa = W_AmmoItemCode(w);
        if(WEPSET_CONTAINS_AW(start_weapons, w))
        {
@@ -513,3 +517,20 @@ void W_WeaponFrame()
                self.currentammo = 1;
 #endif
 }
+
+string W_Apply_Weaponreplace(string in)
+{
+       float n = tokenize_console(in);
+       string out = "";
+       float i;
+       for(i = 0; i < n; ++i)
+       {
+               string s = argv(i);
+               string r = cvar_string(strcat("g_weaponreplace_", s));
+               if(r == "")
+                       out = strcat(out, " ", s);
+               else if(r != "0")
+                       out = strcat(out, " ", r);
+       }
+       return substring(out, 1, -1);
+}