]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into mirceakitsune/sandbox
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Sun, 4 Dec 2011 16:10:34 +0000 (18:10 +0200)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Sun, 4 Dec 2011 16:10:34 +0000 (18:10 +0200)
qcsrc/server/cheats.qc
qcsrc/server/cheats.qh
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/base.qh
qcsrc/server/mutators/mutators.qh

index d2a21edc1002e0f27202b788ff2eea689e373bd5..c03ea7ae0915e07b5b3a1d8c6c0d68554a9b46f1 100644 (file)
@@ -664,7 +664,7 @@ float CheatCommand(float argc)
        END_CHEAT_FUNCTION();
 }
 
-float Drag(entity e, float grab);
+float Drag(entity e, float grab, float ischeat);
 void Drag_Begin(entity dragger, entity draggee, vector touchpoint);
 void Drag_Finish(entity dragger);
 float Drag_IsDraggable(entity draggee);
@@ -690,13 +690,11 @@ float CheatFrame()
        switch(0)
        {
                default:
-                       if(autocvar_sv_cheats)
+                       if(self.maycheat || (gamestart_sv_cheats && autocvar_sv_cheats))
                        {
                                // use cheat dragging if cheats are enabled
-                               IS_CHEAT(0, 0, CHRAME_DRAG);
                                crosshair_trace_plusvisibletriggers(self);
-                               if(Drag(trace_ent, TRUE))
-                                       DID_CHEAT();
+                               Drag(trace_ent, TRUE, TRUE);
                        }
                        else
                        {
@@ -726,7 +724,7 @@ float CheatFrame()
                                        default:
                                                break;
                                }
-                               Drag(trace_ent, drag); // execute dragging
+                               Drag(trace_ent, drag, FALSE); // execute dragging
                        }
                        break;
        }
@@ -740,59 +738,70 @@ float CheatFrame()
 
 // ENTITY DRAGGING
 
-float Drag(entity e, float pick)
+float Drag(entity e, float pick, float ischeat)
 {
+       BEGIN_CHEAT_FUNCTION();
+
        // returns TRUE when an entity has been picked up
        // If pick is TRUE, the object can also be picked up if it's not being held already
        // If pick is FALSE, only keep dragging the object if it's already being held
 
-       if(Drag_IsDragging(self))
+       switch(0)
        {
-               if(self.BUTTON_DRAG)
-               {
-                       if(self.impulse == 10 || self.impulse == 15 || self.impulse == 18)
-                       {
-                               Drag_MoveForward(self);
-                               self.impulse = 0;
-                       }
-                       else if(self.impulse == 12 || self.impulse == 16 || self.impulse == 19)
-                       {
-                               Drag_MoveBackward(self);
-                               self.impulse = 0;
-                       }
-                       else if(self.impulse >= 1 && self.impulse <= 9)
-                       {
-                               Drag_SetSpeed(self, self.impulse - 1);
-                       }
-                       else if(self.impulse == 14)
+               default:
+                       if(Drag_IsDragging(self))
                        {
-                               Drag_SetSpeed(self, 9);
-                       }
+                               if(self.BUTTON_DRAG)
+                               {
+                                       if(self.impulse == 10 || self.impulse == 15 || self.impulse == 18)
+                                       {
+                                               Drag_MoveForward(self);
+                                               self.impulse = 0;
+                                       }
+                                       else if(self.impulse == 12 || self.impulse == 16 || self.impulse == 19)
+                                       {
+                                               Drag_MoveBackward(self);
+                                               self.impulse = 0;
+                                       }
+                                       else if(self.impulse >= 1 && self.impulse <= 9)
+                                       {
+                                               Drag_SetSpeed(self, self.impulse - 1);
+                                       }
+                                       else if(self.impulse == 14)
+                                       {
+                                               Drag_SetSpeed(self, 9);
+                                       }
 
-                       if(frametime)
-                               Drag_Update(self);
-               }
-               else
-               {
-                       Drag_Finish(self);
-               }
-       }
-       else
-       {
-               if(Drag_CanDrag(self))
-                       if(self.BUTTON_DRAG && pick)
+                                       if(frametime)
+                                               Drag_Update(self);
+                               }
+                               else
+                               {
+                                       Drag_Finish(self);
+                               }
+                       }
+                       else
                        {
-                               if(e)
-                                       if(Drag_IsDraggable(e))
+                               if(Drag_CanDrag(self))
+                                       if(self.BUTTON_DRAG && pick)
                                        {
-                                                       if(e.draggedby)
-                                                               Drag_Finish(e.draggedby);
-                                                       if(e.tag_entity)
-                                                               detach_sameorigin(e);
-                                                       Drag_Begin(self, e, trace_endpos);
-                                                       return TRUE;
+                                               if(e)
+                                                       if(Drag_IsDraggable(e))
+                                                       {
+                                                               if(ischeat)
+                                                                       IS_CHEAT(0, 0, CHRAME_DRAG);
+                                                               if(e.draggedby)
+                                                                       Drag_Finish(e.draggedby);
+                                                               if(e.tag_entity)
+                                                                       detach_sameorigin(e);
+                                                               Drag_Begin(self, e, trace_endpos);
+                                                               if(ischeat)
+                                                                       DID_CHEAT();
+                                                               return TRUE;
+                                                       }
                                        }
                        }
+                       break;
        }
        return FALSE;
 }
index 46152692e969e64dd9dfff6cd85f6e8b781747e1..8c276919c51082206169b6050dd44335d7d1fc84 100644 (file)
@@ -11,5 +11,3 @@ float CheatCommand(float argc);
 float CheatFrame();
 
 void Drag_MoveDrag(entity from, entity to); // call this from CopyBody
-
-float Drag(entity e, float grab); // used by sandbox code
\ No newline at end of file
index 0e98a5671d07d3a8e54168e6a33b94d3b0b2a3ef..60644e6f20a4c1e6fda54f09532602865e1b36e5 100644 (file)
@@ -1103,6 +1103,8 @@ void readlevelcvars(void)
                MUTATOR_ADD(mutator_vampire);
        if(cvar("g_spawn_near_teammate"))
                MUTATOR_ADD(mutator_spawn_near_teammate);
+
+       // is this a mutator? is this a mode?
        if(cvar("g_sandbox"))
                MUTATOR_ADD(sandbox);
 
index 174c10235f51c5a716bec4835a9b851df7dac43c..ecec3c87c57a65c107afb09d2b02cf457526d744 100644 (file)
@@ -190,8 +190,6 @@ MUTATOR_HOOKABLE(SV_ParseClientCommand);
                }
        */
 
-MUTATOR_HOOKABLE(SV_StartFrame);
-       // runs globally each server frame
 MUTATOR_HOOKABLE(Spawn_Score);
        // called when a spawnpoint is being evaluated
        // return 1 to make the spawnpoint unusable
@@ -200,3 +198,6 @@ MUTATOR_HOOKABLE(Spawn_Score);
        entity spawn_spot; // spot to be evaluated
        // IN+OUT
        vector spawn_score; // _x is priority, _y is "distance"
+
+MUTATOR_HOOKABLE(SV_StartFrame);
+       // runs globally each server frame
index 1cd07929ef4db9048ce3471af8d1e4d6bd4a357b..825062e1cdcd50bdd0429502921eec76c4377a59 100644 (file)
@@ -7,6 +7,7 @@ MUTATOR_DECLARATION(mutator_nix);
 MUTATOR_DECLARATION(mutator_dodging);
 MUTATOR_DECLARATION(mutator_rocketflying);
 MUTATOR_DECLARATION(mutator_vampire);
+MUTATOR_DECLARATION(mutator_spawn_near_teammate);
+MUTATOR_DECLARATION(mutator_spawn_near_teammate);
 
 MUTATOR_DECLARATION(sandbox);
-MUTATOR_DECLARATION(mutator_spawn_near_teammate);