#endif
#ifdef SVQC
+#include "mutator_dodging.qh"
+#include "../_all.qh"
+
+#include "mutator.qh"
+
+#include "../../common/animdecide.qh"
.float cvar_cl_dodging_timeout;
.float dodging_velocity_gain;
#ifdef CSQC
-.float pressedkeys;
+.int pressedkeys;
#elif defined(SVQC)
#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; }
return false;
}
-float check_close_to_ground(float threshold)
+bool check_close_to_ground(float threshold)
{
return IS_ONGROUND(self) ? true : false;
}
if ((time - self.last_dodging_time) < PHYS_DODGING_DELAY)
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)
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; \
}
// 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
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);
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);