]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cheats.qc
Replace some of the remaining cvar globals with autocvars, allows changing a few...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cheats.qc
index edec56a809a8dcc63fb822383b8c8a666bc54ba9..eb0b95e078ec6d2a1ca47cc411291fc6615cc3fb 100644 (file)
@@ -1,11 +1,13 @@
 #include "cheats.qh"
 
-#include <server/defs.qh>
+#include <common/weapons/_all.qh>
+#include <common/stats.qh>
 #include <server/miscfunctions.qh>
 #include <common/effects/all.qh>
 #include <server/resources.qh>
+#include <server/main.qh>
 
-#include "g_damage.qh"
+#include "damage.qh"
 #include "clientkill.qh"
 #include "player.qh"
 #include "race.qh"
@@ -23,6 +25,8 @@
 
 #include "../common/monsters/_mod.qh"
 
+#include <common/items/_mod.qh>
+
 #include <common/weapons/_all.qh>
 
 #include "../common/mapobjects/subs.qh"
@@ -62,22 +66,19 @@ void CheatShutdown()
 
 float CheatsAllowed(entity this, float i, int argc, float fr) // the cheat gets passed as argument for possible future ACL checking
 {
-       // dead people cannot cheat
        if(IS_DEAD(this))
                return 0;
        if(gamestart_sv_cheats < 2 && !IS_PLAYER(this))
                return 0;
 
-       // sv_clones
        if(i == CHIMPULSE_CLONE_MOVING.impulse || i == CHIMPULSE_CLONE_STANDING.impulse)
-               if(this.lip < sv_clones)
+               if(this.lip < autocvar_sv_clones)
                        return 1;
 
        // haha
        if(this.maycheat)
                return 1;
 
-       // sv_cheats
        if(gamestart_sv_cheats && autocvar_sv_cheats)
                return 1;
 
@@ -126,6 +127,7 @@ void info_autoscreenshot_findtarget(entity this)
 }
 spawnfunc(info_autoscreenshot)
 {
+       // this one just has to exist
        if(++num_autoscreenshot > autocvar_g_max_info_autoscreenshot)
        {
                objerror(this, "Too many info_autoscreenshot entitites. FAIL!");
@@ -133,7 +135,6 @@ spawnfunc(info_autoscreenshot)
        }
        if(this.target != "")
                InitializeEntity(this, info_autoscreenshot_findtarget, INITPRIO_FINDTARGET);
-       // this one just has to exist
 }
 
 float CheatImpulse(entity this, int imp)
@@ -169,7 +170,7 @@ float CheatImpulse(entity this, int imp)
                        this.personal.pauserotfuel_finished = this.pauserotfuel_finished;
                        this.personal.pauseregen_finished = this.pauseregen_finished;
                        STAT(STRENGTH_FINISHED, this.personal) = STAT(STRENGTH_FINISHED, this);
-                       this.personal.invincible_finished = this.invincible_finished;
+                       STAT(INVINCIBLE_FINISHED, this.personal) = STAT(INVINCIBLE_FINISHED, this);
                        this.personal.teleport_time = time;
                        break; // this part itself doesn't cheat, so let's not count this
                case CHIMPULSE_CLONE_MOVING.impulse:
@@ -230,7 +231,7 @@ float CheatImpulse(entity this, int imp)
                                this.pauserotfuel_finished = time + this.personal.pauserotfuel_finished - this.personal.teleport_time;
                                this.pauseregen_finished = time + this.personal.pauseregen_finished - this.personal.teleport_time;
                                STAT(STRENGTH_FINISHED, this) = time + STAT(STRENGTH_FINISHED, this.personal) - this.personal.teleport_time;
-                               this.invincible_finished = time + this.personal.invincible_finished - this.personal.teleport_time;
+                               STAT(INVINCIBLE_FINISHED, this) = time + STAT(INVINCIBLE_FINISHED, this.personal) - this.personal.teleport_time;
 
                                if(!autocvar_g_allow_checkpoints)
                                        DID_CHEAT();
@@ -563,7 +564,7 @@ float CheatCommand(entity this, int argc)
                                        effectnum = 0;
                                        for(entity ent = NULL; (ent = find(ent, classname, "dragbox_box")); )
                                        {
-                                               if(e.cnt <= 0 && ent.cnt == 0 || e.cnt == ent.cnt)
+                                               if((e.cnt <= 0 && ent.cnt == 0) || e.cnt == ent.cnt)
                                                {
                                                        start = start + ent.origin;
                                                        ++effectnum;
@@ -803,59 +804,51 @@ float Drag(entity this, float force_allow_pick, float ischeat)
                                        Drag_Finish(this);
                                }
                        }
-                       else
+                       else if(Drag_CanDrag(this) && PHYS_INPUT_BUTTON_DRAG(this))
                        {
-                               if(Drag_CanDrag(this))
-                                       if(PHYS_INPUT_BUTTON_DRAG(this))
-                                       {
-                                               crosshair_trace_plusvisibletriggers(this);
-                                               entity e = trace_ent;
-                                               float pick = force_allow_pick;
-                                               if (e && !pick)
-                                               {
-                                                       // pick is true if the object can be picked up. While an object is being carried, the Drag() function
-                                                       // must execute for it either way, otherwise it would cause bugs if it went out of the player's trace.
-                                                       // This also makes sure that an object can only pe picked up if in range, but does not get dropped if
-                                                       // it goes out of range while slinging it around.
+                               crosshair_trace_plusvisibletriggers(this);
+                               entity e = trace_ent;
+                               float pick = force_allow_pick;
+                               if (e && !pick && vdist(this.origin - e.origin, <=, autocvar_g_grab_range))
+                               {
+                                       // pick is true if the object can be picked up. While an object is being carried, the Drag() function
+                                       // must execute for it either way, otherwise it would cause bugs if it went out of the player's trace.
+                                       // This also makes sure that an object can only pe picked up if in range, but does not get dropped if
+                                       // it goes out of range while slinging it around.
 
-                                                       if(vdist(this.origin - e.origin, <=, autocvar_g_grab_range))
-                                                       {
-                                                               switch(e.grab)
-                                                               {
-                                                                       case 0: // can't grab
-                                                                               break;
-                                                                       case 1: // owner can grab
-                                                                               if(e.owner == this || e.realowner == this)
-                                                                                       pick = true;
-                                                                               break;
-                                                                       case 2: // owner and team mates can grab
-                                                                               if(SAME_TEAM(e.owner, this) || SAME_TEAM(e.realowner, this) || e.team == this.team)
-                                                                                       pick = true;
-                                                                               break;
-                                                                       case 3: // anyone can grab
-                                                                               pick = true;
-                                                                               break;
-                                                                       default:
-                                                                               break;
-                                                               }
-                                                       }
-                                               }
-                                               // Find e and pick
-                                               if(e && pick)
-                                                       if(Drag_IsDraggable(e, this))
-                                                       {
-                                                               if(ischeat)
-                                                                       IS_CHEAT(this, 0, 0, CHRAME_DRAG);
-                                                               if(e.draggedby)
-                                                                       Drag_Finish(e.draggedby);
-                                                               if(e.tag_entity)
-                                                                       detach_sameorigin(e);
-                                                               Drag_Begin(this, e, trace_endpos);
-                                                               if(ischeat)
-                                                                       DID_CHEAT();
-                                                               return true;
-                                                       }
+                                       switch(e.grab)
+                                       {
+                                               case 0: // can't grab
+                                                       break;
+                                               case 1: // owner can grab
+                                                       if(e.owner == this || e.realowner == this)
+                                                               pick = true;
+                                                       break;
+                                               case 2: // owner and team mates can grab
+                                                       if(SAME_TEAM(e.owner, this) || SAME_TEAM(e.realowner, this) || e.team == this.team)
+                                                               pick = true;
+                                                       break;
+                                               case 3: // anyone can grab
+                                                       pick = true;
+                                                       break;
+                                               default:
+                                                       break;
                                        }
+                               }
+                               // Find e and pick
+                               if(e && pick && Drag_IsDraggable(e, this))
+                               {
+                                       if(ischeat)
+                                               IS_CHEAT(this, 0, 0, CHRAME_DRAG);
+                                       if(e.draggedby)
+                                               Drag_Finish(e.draggedby);
+                                       if(e.tag_entity)
+                                               detach_sameorigin(e);
+                                       Drag_Begin(this, e, trace_endpos);
+                                       if(ischeat)
+                                               DID_CHEAT();
+                                       return true;
+                               }
                        }
                        break;
        }
@@ -932,8 +925,8 @@ float Drag_IsDraggable(entity draggee, entity dragger)
                return false;
        if(draggee.classname == "door") // FIXME find out why these must be excluded, or work around the problem (trying to drag these causes like 4 fps)
                return false; // probably due to BSP collision
-//     if(draggee.model == "")
-//             return false;
+       //if(draggee.model == "")
+       //      return false;
 
        return ((draggee.draggable) ? draggee.draggable(draggee, dragger) : true);
 }