]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cheats.qc
Properly support team field on trigger_multiple
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cheats.qc
index cf8a4569b30549598c800adf29d8a720d2cdb6e0..3233a141dd9e1b14b71437c49e016ed77d6acf2e 100644 (file)
@@ -1,5 +1,9 @@
 #include "cheats.qh"
 
+#include <server/defs.qh>
+#include <server/miscfunctions.qh>
+#include <common/effects/all.qh>
+
 #include "g_damage.qh"
 #include "race.qh"
 #include "../common/triggers/teleporters.qh"
@@ -77,13 +81,13 @@ float CheatsAllowed(entity this, float i, float argc, float fr) // the cheat get
 
        // if we get here, player is not allowed to cheat. Log it.
        if(i)
-               bprintf("Player %s^7 tried to use cheat 'impulse %d'\n", this.netname, i);
+               bprintf("Player %s^7 tried to use cheat 'impulse %d'\n", playername(this, false), i);
        else if(argc)
-               bprintf("Player %s^7 tried to use cheat '%s'\n", this.netname, argv(0));
+               bprintf("Player %s^7 tried to use cheat '%s'\n", playername(this, false), argv(0));
        else if(fr)
-               bprintf("Player %s^7 tried to use cheat frame %d\n", this.netname, fr);
+               bprintf("Player %s^7 tried to use cheat frame %d\n", playername(this, false), fr);
        else
-               bprintf("Player %s^7 tried to use an unknown cheat\n", this.netname);
+               bprintf("Player %s^7 tried to use an unknown cheat\n", playername(this, false));
 
        return 0;
 }
@@ -153,7 +157,7 @@ float CheatImpulse(entity this, int imp)
                        this.personal.ammo_plasma = this.ammo_plasma;
                        this.personal.ammo_shells = this.ammo_shells;
                        this.personal.ammo_fuel = this.ammo_fuel;
-                       this.personal.health = this.health;
+                       this.personal.health = max(1, this.health);
                        this.personal.armorvalue = this.armorvalue;
                        this.personal.weapons = this.weapons;
                        this.personal.items = this.items;
@@ -185,7 +189,8 @@ float CheatImpulse(entity this, int imp)
                        CheatCommand(this, tokenize_console("give all"));
                        break; // already counted as cheat
                case CHIMPULSE_SPEEDRUN.impulse:
-                       IS_CHEAT(this, imp, 0, 0);
+                       if(!autocvar_g_allow_checkpoints)
+                               IS_CHEAT(this, imp, 0, 0);
                        if(this.personal)
                        {
                                this.speedrunning = true;
@@ -222,7 +227,8 @@ float CheatImpulse(entity this, int imp)
                                this.strength_finished = time + this.personal.strength_finished - this.personal.teleport_time;
                                this.invincible_finished = time + this.personal.invincible_finished - this.personal.teleport_time;
 
-                               DID_CHEAT();
+                               if(!autocvar_g_allow_checkpoints)
+                                       DID_CHEAT();
                                break;
                        }
                        if(IS_DEAD(this))
@@ -262,7 +268,7 @@ float CheatImpulse(entity this, int imp)
                case CHIMPULSE_R00T.impulse:
                        IS_CHEAT(this, imp, 0, 0);
                        RandomSelection_Init();
-                       FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it) && DIFF_TEAM(it, this), LAMBDA(RandomSelection_AddEnt(it, 1, 1)));
+                       FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it) && DIFF_TEAM(it, this), { RandomSelection_AddEnt(it, 1, 1); });
                        if(RandomSelection_chosen_ent)
                                e = RandomSelection_chosen_ent;
                        else
@@ -276,7 +282,7 @@ float CheatImpulse(entity this, int imp)
                        RadiusDamage(e2, this, 1000, 0, 128, NULL, NULL, 500, DEATH_CHEAT.m_id, e);
                        delete(e2);
 
-                       LOG_INFO("404 Sportsmanship not found.\n");
+                       LOG_INFO("404 Sportsmanship not found.");
                        DID_CHEAT();
                        break;
        }
@@ -324,7 +330,7 @@ float CheatCommand(entity this, int argc)
                                //   effectname
                                effectnum = _particleeffectnum(argv(1));
                                W_SetupShot(this, weaponentities[0], false, false, SND_Null, CH_WEAPON_A, 0);
-                               traceline(w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, MOVE_NORMAL, this);
+                               traceline(w_shotorg, w_shotorg + w_shotdir * max_shot_distance, MOVE_NORMAL, this);
                                __trailparticles(this, effectnum, w_shotorg, trace_endpos);
                                DID_CHEAT();
                                break;
@@ -444,7 +450,7 @@ float CheatCommand(entity this, int argc)
                        e.nextthink = time;
                        e.solid = 0; // nothing special
                        setmodel(e, MDL_MARKER);
-                       setsize(e, STAT(PL_MIN, NULL), STAT(PL_MAX, NULL));
+                       setsize(e, STAT(PL_MIN, this), STAT(PL_MAX, this));
                        e.skin = 2;
                        if(argc == 3)
                                e.cnt = stof(argv(1));
@@ -778,21 +784,21 @@ float Drag(entity this, float force_allow_pick, float ischeat)
                        {
                                if(PHYS_INPUT_BUTTON_DRAG(this))
                                {
-                                       if(this.impulse == 10 || this.impulse == 15 || this.impulse == 18)
+                                       if(CS(this).impulse == 10 || CS(this).impulse == 15 || CS(this).impulse == 18)
                                        {
                                                Drag_MoveForward(this);
-                                               this.impulse = 0;
+                                               CS(this).impulse = 0;
                                        }
-                                       else if(this.impulse == 12 || this.impulse == 16 || this.impulse == 19)
+                                       else if(CS(this).impulse == 12 || CS(this).impulse == 16 || CS(this).impulse == 19)
                                        {
                                                Drag_MoveBackward(this);
-                                               this.impulse = 0;
+                                               CS(this).impulse = 0;
                                        }
-                                       else if(this.impulse >= 1 && this.impulse <= 9)
+                                       else if(CS(this).impulse >= 1 && CS(this).impulse <= 9)
                                        {
-                                               Drag_SetSpeed(this, this.impulse - 1);
+                                               Drag_SetSpeed(this, CS(this).impulse - 1);
                                        }
-                                       else if(this.impulse == 14)
+                                       else if(CS(this).impulse == 14)
                                        {
                                                Drag_SetSpeed(this, 9);
                                        }
@@ -880,7 +886,7 @@ void Drag_Begin(entity dragger, entity draggee, vector touchpoint)
        dragger.dragdistance = vlen(touchpoint - dragger.origin - dragger.view_ofs);
        dragger.draglocalangle = draggee.angles.y - dragger.v_angle.y;
        touchpoint = touchpoint - gettaginfo(draggee, 0);
-       tagscale = pow(vlen(v_forward), -2);
+       tagscale = (vlen(v_forward) ** -2);
        dragger.draglocalvector_x = touchpoint * v_forward * tagscale;
        dragger.draglocalvector_y = touchpoint * v_right * tagscale;
        dragger.draglocalvector_z = touchpoint * v_up * tagscale;
@@ -962,7 +968,7 @@ void Drag_MoveForward(entity dragger)
 
 void Drag_SetSpeed(entity dragger, float s)
 {
-       dragger.dragspeed = pow(2, s);
+       dragger.dragspeed = (2 ** s);
 }
 
 void Drag_MoveBackward(entity dragger)