]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/mutator_dodging.qc
Merge branch 'master' into Mario/vaporizer_damage
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / mutator_dodging.qc
index 72efaeba447bf35fd9cc0284d8bae8c2cd60df16..ab70fb217da5829ae99d1df98c8dd7c9e5dfb007 100644 (file)
 #endif
 
 #ifdef SVQC
+#include "mutator_dodging.qh"
+#include "../_all.qh"
+
+#include "mutator.qh"
+
+#include "../../common/animdecide.qh"
 
 .float cvar_cl_dodging_timeout;
 
@@ -60,8 +66,7 @@
 .float last_RIGHT_KEY_time;
 
 // these store the movement direction at the time of the dodge action happening.
-.float dodging_direction_x;
-.float dodging_direction_y;
+.vector dodging_direction;
 
 // this indicates the last time a dodge was executed. used to check if another one is allowed
 // and to ramp up the dodge acceleration in the physics hook.
@@ -73,7 +78,7 @@
 .float dodging_velocity_gain;
 
 #ifdef CSQC
-.float pressedkeys;
+.int pressedkeys;
 
 #elif defined(SVQC)
 
@@ -110,52 +115,52 @@ void dodging_Initialize()
 #endif
 
 // returns 1 if the player is close to a wall
-float check_close_to_wall(float threshold)
+bool check_close_to_wall(float threshold)
 {
-       if (PHYS_DODGING_WALL == 0) { return FALSE; }
+       if (PHYS_DODGING_WALL == 0) { return false; }
 
        #define X(OFFSET)                                                                                                                               \
-       tracebox(self.origin, self.mins, self.maxs, self.origin + OFFSET, TRUE, self);  \
+       tracebox(self.origin, self.mins, self.maxs, self.origin + OFFSET, true, self);  \
        if (trace_fraction < 1 && vlen (self.origin - trace_endpos) < threshold)                \
-               return TRUE;
+               return true;
        X(1000*v_right);
        X(-1000*v_right);
        X(1000*v_forward);
        X(-1000*v_forward);
        #undef X
 
-       return FALSE;
+       return false;
 }
 
-float check_close_to_ground(float threshold)
+bool check_close_to_ground(float threshold)
 {
-       return IS_ONGROUND(self) ? TRUE : FALSE;
+       return IS_ONGROUND(self) ? true : false;
 }
 
 float PM_dodging_checkpressedkeys()
 {
        if(!PHYS_DODGING)
-               return FALSE;
+               return false;
 
        float frozen_dodging = (PHYS_FROZEN(self) && PHYS_DODGING_FROZEN);
        float frozen_no_doubletap = (frozen_dodging && !PHYS_DODGING_FROZEN_NODOUBLETAP);
 
        // first check if the last dodge is far enough back in time so we can dodge again
        if ((time - self.last_dodging_time) < PHYS_DODGING_DELAY)
-               return FALSE;
+               return false;
 
-       makevectors(PHYS_WORLD_ANGLES(self));
+       makevectors(self.angles);
 
        if (check_close_to_ground(PHYS_DODGING_HEIGHT_THRESHOLD) != 1
                && check_close_to_wall(PHYS_DODGING_DISTANCE_THRESHOLD) != 1)
-               return TRUE;
+               return true;
 
        float tap_direction_x = 0;
        float tap_direction_y = 0;
        float dodge_detected = 0;
 
        #define X(COND,BTN,RESULT)                                                                                                                      \
-       if (PHYS_INPUT_MOVEVALUES(self)_##COND)                                                                                         \
+       if (self.movement_##COND)                                                                                               \
                /* is this a state change? */                                                                                                   \
                if(!(PHYS_DODGING_PRESSED_KEYS(self) & KEY_##BTN) || frozen_no_doubletap) {             \
                                tap_direction_##RESULT;                                                                                                 \
@@ -188,9 +193,9 @@ float PM_dodging_checkpressedkeys()
 
                self.dodging_direction_x = self.dodging_direction_x * 1.0 / length;
                self.dodging_direction_y = self.dodging_direction_y * 1.0 / length;
-               return TRUE;
+               return true;
        }
-       return FALSE;
+       return false;
 }
 
 void PM_dodging()
@@ -215,7 +220,7 @@ void PM_dodging()
        }
 
        // make sure v_up, v_right and v_forward are sane
-       makevectors(PHYS_WORLD_ANGLES(self));
+       makevectors(self.angles);
 
        // if we have e.g. 0.5 sec ramptime and a frametime of 0.25, then the ramp code
        // will be called ramp_time/frametime times = 2 times. so, we need to
@@ -235,7 +240,7 @@ void PM_dodging()
        if (self.dodging_action == 1)
        {
                //disable jump key during dodge accel phase
-               if(PHYS_INPUT_MOVEVALUES(self)_z > 0) { PHYS_INPUT_MOVEVALUES(self)_z = 0; }
+               if(self.movement_z > 0) { self.movement_z = 0; }
 
                self.velocity += ((self.dodging_direction_y * velocity_difference) * v_right)
                                        + ((self.dodging_direction_x * velocity_difference) * v_forward);
@@ -251,10 +256,10 @@ void PM_dodging()
                self.velocity += PHYS_DODGING_UP_SPEED * v_up;
 
 #ifdef SVQC
-               if (autocvar_sv_dodging_sound == 1)
+               if (autocvar_sv_dodging_sound)
                        PlayerSound(playersound_jump, CH_PLAYER, VOICETYPE_PLAYERSOUND);
 
-               animdecide_setaction(self, ANIMACTION_JUMP, TRUE);
+               animdecide_setaction(self, ANIMACTION_JUMP, true);
 #endif
 
                self.dodging_single_action = 0;
@@ -275,7 +280,7 @@ void PM_dodging()
 MUTATOR_HOOKFUNCTION(dodging_GetCvars)
 {
        GetCvars_handleFloat(get_cvars_s, get_cvars_f, cvar_cl_dodging_timeout, "cl_dodging_timeout");
-       return FALSE;
+       return false;
 }
 
 MUTATOR_HOOKFUNCTION(dodging_PlayerPhysics)
@@ -283,14 +288,14 @@ MUTATOR_HOOKFUNCTION(dodging_PlayerPhysics)
        // print("dodging_PlayerPhysics\n");
        PM_dodging();
 
-       return FALSE;
+       return false;
 }
 
 MUTATOR_HOOKFUNCTION(dodging_GetPressedKeys)
 {
        PM_dodging_checkpressedkeys();
 
-       return FALSE;
+       return false;
 }
 
 MUTATOR_DEFINITION(mutator_dodging)
@@ -318,6 +323,6 @@ MUTATOR_DEFINITION(mutator_dodging)
                g_dodging = 0;
        }
 
-       return FALSE;
+       return false;
 }
 #endif