]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cl_weapons.qc
no weapon drops in CTS!
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cl_weapons.qc
index 4ab7abde4b200cf0bf122f2ef955408018ddc4d4..cfe01269e01c719d818b38e9be706ed67b377788 100644 (file)
@@ -123,7 +123,7 @@ void W_NextWeapon(float list)
        if(list == 0)
                W_CycleWeapon(weaponorder_byid, -1);
        else if(list == 1)
-               W_CycleWeapon(weaponorder_byimpulse, -1);
+               W_CycleWeapon(self.weaponorder_byimpulse, -1);
        else if(list == 2)
                W_CycleWeapon(self.cvar_cl_weaponpriority, -1);
 }
@@ -134,23 +134,11 @@ void W_PreviousWeapon(float list)
        if(list == 0)
                W_CycleWeapon(weaponorder_byid, +1);
        else if(list == 1)
-               W_CycleWeapon(weaponorder_byimpulse, +1);
+               W_CycleWeapon(self.weaponorder_byimpulse, +1);
        else if(list == 2)
                W_CycleWeapon(self.cvar_cl_weaponpriority, +1);
 }
 
-string W_FixWeaponOrder_AllowIncomplete(string order)
-{
-       return W_FixWeaponOrder(order, 0);
-}
-
-string W_FixWeaponOrder_ForceComplete(string order)
-{
-       if(order == "")
-               order = W_NumberWeaponOrder(cvar_string("cl_weaponpriority"));
-       return W_FixWeaponOrder(order, 1);
-}
-
 float w_getbestweapon(entity e)
 {
        return W_GetCycleWeapon(e, e.cvar_cl_weaponpriority, 0, -1, FALSE, TRUE);
@@ -283,17 +271,19 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce)
                return;
        if (g_nexball && w == WEP_GRENADE_LAUNCHER)
                return;
-       if (!cvar("g_pickup_items"))
+       if (!autocvar_g_pickup_items)
                return;
        if (g_ca)
                return;
-       if(!cvar("g_weapon_throwable"))
+    if (g_cts)
+        return;
+       if(!autocvar_g_weapon_throwable)
                return;
-       if(cvar("g_weapon_stay") == 1)
+       if(autocvar_g_weapon_stay == 1)
                return;
        if(!W_IsWeaponThrowable(w))
                return;
-       if(self.weaponentity.state != WS_READY)
+       if(self.deadflag == DEAD_NO && self.weaponentity.state != WS_READY)
                return;
 
        wb = W_WeaponBit(w);
@@ -322,7 +312,10 @@ void W_WeaponFrame()
        if (frametime)
                self.weapon_frametime = frametime;
 
-       if(((arena_roundbased || g_ca) && time < warmup) || ((time < game_starttime) && !cvar("sv_ready_restart_after_countdown")))
+       if(((arena_roundbased || g_ca || g_freezetag) && time < warmup) || ((time < game_starttime) && !autocvar_sv_ready_restart_after_countdown))
+               return;
+
+       if(g_freezetag && self.freezetag_frozen == 1)
                return;
 
        if (!self.weaponentity || self.health < 1)
@@ -352,7 +345,7 @@ void W_WeaponFrame()
                        weapon_action(self.switchweapon, WR_SETUP);
                        // VorteX: add player model weapon select frame here
                        // setcustomframe(PlayerWeaponRaise);
-                       weapon_thinkf(WFRAME_IDLE, cvar("g_balance_weaponswitchdelay"), w_ready);
+                       weapon_thinkf(WFRAME_IDLE, autocvar_g_balance_weaponswitchdelay, w_ready);
                        weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, '0 0 0');
                }
                else if (self.weaponentity.state == WS_READY)
@@ -365,7 +358,7 @@ void W_WeaponFrame()
                        sound (self, CHAN_WEAPON2, "weapons/weapon_switch.wav", VOL_BASE, ATTN_NORM);
                        self.weaponentity.state = WS_DROP;
                        // set up weapon switch think in the future, and start drop anim
-                       weapon_thinkf(WFRAME_DONTCHANGE, cvar("g_balance_weaponswitchdelay"), w_clear);
+                       weapon_thinkf(WFRAME_DONTCHANGE, autocvar_g_balance_weaponswitchdelay, w_clear);
                        weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, PLAYER_WEAPONSELECTION_RANGE);
 #ifndef INDEPENDENT_ATTACK_FINISHED
                        }
@@ -385,7 +378,7 @@ void W_WeaponFrame()
        // server framerate is very low and the weapon fire rate very high
        local float c;
        c = 0;
-       while (c < 5)
+       while (c < W_TICSPERFRAME)
        {
                c = c + 1;
                if(wb && ((self.weapons & wb) == 0))
@@ -398,7 +391,9 @@ void W_WeaponFrame()
                        v_forward = fo;
                        v_right = ri;
                        v_up = up;
+            self.weaponentity.weaponentity.glowmod = '0 0 0'; // reset glowmod, weapon think function only *might* set it
                        weapon_action(self.weapon, WR_THINK);
+            self.exteriorweaponentity.glowmod = self.weaponentity.weaponentity.glowmod; // exterior weaponmodel has the same glowmod
                }
                if (time + self.weapon_frametime * 0.5 >= self.weapon_nextthink)
                {