]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cl_impulse.qc
Remove some reloading system stupidity
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cl_impulse.qc
index c78012bb8703710cdd3c42bf6e0da059c98f855f..c047d20b7385d36e09a2d9826974b922ed43aa2b 100644 (file)
@@ -35,7 +35,7 @@
 
 void ImpulseCommands (void)
 {
-       local float imp;
+       float imp;
        vector org;
        float i;
        float m;
@@ -46,9 +46,19 @@ void ImpulseCommands (void)
                return;
        self.impulse = 0;
 
-       if (timeoutStatus == 2) //don't allow any impulses while the game is paused
+       // forbid impulses when not in round time
+       if(round_handler_IsActive() && !round_handler_IsRoundStarted())
                return;
 
+       if (timeout_status == TIMEOUT_ACTIVE) //don't allow any impulses while the game is paused
+               return;
+    
+    if(self.vehicle)
+        if(self.vehicle.deadflag == DEAD_NO)
+            if(self.vehicle.vehicles_impusle)
+                if(self.vehicle.vehicles_impusle(imp))
+                    return;
+    
        if(CheatImpulse(imp))
        {
        }
@@ -67,38 +77,37 @@ void ImpulseCommands (void)
                        switch(imp)
                        {
                                case 10:
-                                       W_NextWeapon (0);
+                                       W_NextWeapon(0);
                                        break;
                                case 11:
-                                       W_SwitchWeapon (self.cnt); // previously used
+                                       W_LastWeapon();
                                        break;
                                case 12:
-                                       W_PreviousWeapon (0);
+                                       W_PreviousWeapon(0);
                                        break;
                                case 13:
-                                       W_SwitchWeapon (w_getbestweapon(self));
+                                       W_SwitchWeapon(w_getbestweapon(self));
                                        break;
                                case 14:
                                        W_NextWeaponOnImpulse(0);
                                        break;
                                case 15:
-                                       W_NextWeapon (2);
+                                       W_NextWeapon(2);
                                        break;
                                case 16:
-                                       W_PreviousWeapon (2);
+                                       W_PreviousWeapon(2);
                                        break;
                                case 17:
-                                       if (!g_minstagib)
-                                               W_ThrowWeapon(W_CalculateProjectileVelocity(self.velocity, v_forward * 750, FALSE), '0 0 0', TRUE);
+                                       W_ThrowWeapon(W_CalculateProjectileVelocity(self.velocity, v_forward * 750, FALSE), '0 0 0', TRUE);
                                        break;
                                case 18:
-                                       W_NextWeapon (1);
+                                       W_NextWeapon(1);
                                        break;
                                case 19:
-                                       W_PreviousWeapon (1);
+                                       W_PreviousWeapon(1);
                                        break;
                                case 20:
-                                       W_TriggerReload ();
+                                       WEP_ACTION(self.weapon, WR_RELOAD);
                                        break;
                        }
                }
@@ -159,13 +168,14 @@ void ImpulseCommands (void)
                        case 33:
                                if(self.deadflag == DEAD_NO && teamplay)
                                {
-                                       wp = WaypointSprite_Attach("helpme", TRUE);
-                                       if(wp)
-                                               WaypointSprite_UpdateTeamRadar(wp, RADARICON_HELPME, '1 0.5 0'); // TODO choose better color
-                                       if(!wp)
-                                               wp = self.waypointsprite_attachedforcarrier; // flag sprite?
-                                       if(wp)
-                                               WaypointSprite_Ping(wp);
+                                       if not(MUTATOR_CALLHOOK(HelpMePing))
+                                       {
+                                               wp = WaypointSprite_Attach("helpme", TRUE, RADARICON_HELPME, '1 0.5 0');
+                                               if(!wp)
+                                                       WaypointSprite_HelpMePing(self.waypointsprite_attachedforcarrier);
+                                               else
+                                                       WaypointSprite_Ping(wp);
+                                       }
                                        sprint(self, "HELP ME attached\n");
                                }
                                break;
@@ -261,7 +271,7 @@ void ImpulseCommands (void)
                                case 107:
                                        for(e = findchain(classname, "waypoint"); e; e = e.chain)
                                        {
-                                               e.colormod_x = 1;
+                                               e.colormod = '0.5 0.5 0.5';
                                                e.effects &~= EF_NODEPTHTEST | EF_RED | EF_BLUE;
                                        }
                                        e2 = navigation_findnearestwaypoint(self, FALSE);
@@ -273,7 +283,7 @@ void ImpulseCommands (void)
                                                if(e.wpcost >= 10000000)
                                                {
                                                        print("unreachable: ", etos(e), " ", vtos(e.origin), "\n");
-                                                       e.colormod_x = 0.1;
+                                                       e.colormod_z = 8;
                                                        e.effects |= EF_NODEPTHTEST | EF_BLUE;
                                                        ++i;
                                                        ++m;
@@ -288,7 +298,7 @@ void ImpulseCommands (void)
                                                if(e.wpcost >= 10000000)
                                                {
                                                        print("cannot reach me: ", etos(e), " ", vtos(e.origin), "\n");
-                                                       e.colormod_x = 0.1;
+                                                       e.colormod_x = 8;
                                                        if not(e.effects & EF_NODEPTHTEST) // not already reported before
                                                                ++m;
                                                        e.effects |= EF_NODEPTHTEST | EF_RED;
@@ -319,12 +329,53 @@ void ImpulseCommands (void)
                                                        setmodel(e, self.model);
                                                        e.frame = self.frame;
                                                        e.skin = self.skin;
+                                                       e.colormod = '8 0.5 8';
                                                        setsize(e, '0 0 0', '0 0 0');
                                                        ++i;
                                                }
                                        }
                                        if(i)
                                                print(ftos(i), " spawnpoints have no nearest waypoint (marked by player model)\n");
+                                       i = 0;
+                                       entity start;
+                                       start = findchainflags(flags, FL_ITEM);
+                                       for(e = start; e; e = e.chain)
+                                       {
+                                               e.effects &~= EF_NODEPTHTEST | EF_RED | EF_BLUE;
+                                               e.colormod = '0.5 0.5 0.5';
+                                       }
+                                       for(e = start; e; e = e.chain)
+                                       {
+                                               if(navigation_findnearestwaypoint(e, FALSE))
+                                               {
+                                               }
+                                               else
+                                               {
+                                                       print("item without waypoint: ", etos(e), " ", vtos(e.origin), "\n");
+                                                       e.effects |= EF_NODEPTHTEST | EF_RED;
+                                                       e.colormod_x = 8;
+                                                       ++i;
+                                               }
+                                       }
+                                       if(i)
+                                               print(ftos(i), " items have no nearest waypoint and cannot be walked away from (marked with red light)\n");
+                                       i = 0;
+                                       for(e = start; e; e = e.chain)
+                                       {
+                                               org = e.origin;
+                                               if(navigation_findnearestwaypoint(e, TRUE))
+                                               {
+                                               }
+                                               else
+                                               {
+                                                       print("item without waypoint: ", etos(e), " ", vtos(e.origin), "\n");
+                                                       e.effects |= EF_NODEPTHTEST | EF_BLUE;
+                                                       e.colormod_z = 8;
+                                                       ++i;
+                                               }
+                                       }
+                                       if(i)
+                                               print(ftos(i), " items have no nearest waypoint and cannot be walked to (marked with blue light)\n");
                                        break;
                        }
                }