if (g_dodging == 0)
return 0;
- // ramp up dodging speed by adding some velocity each frame..
+ // ramp up dodging speed by adding some velocity each frame.. TODO: do it! :D
if (self.dodging_action == 1) {
- self.velocity = self.velocity + self.dodging_direction_y * (cvar("sv_dodging_horiz_speed") * v_right) + self.dodging_direction_x * (cvar("sv_dodging_horiz_speed") * v_forward) + (cvar("sv_dodging_up_speed") * v_up);
+ //print(vtos(self.v_up), "\n");
+ //self.velocity_z = self.velocity_z + cvar("sv_dodging_up_speed") * v_up;
+ //self.velocity_x = self.velocity_x + self.dodging_direction_x * cvar("sv_dodging_horiz_speed") * v_forward;
+ //self.velocity_y = self.velocity_y + self.dodging_direction_y * cvar("sv_dodging_horiz_speed") * v_right;
+ self.velocity = self.velocity + ((self.dodging_direction_y * cvar("sv_dodging_horiz_speed")) * v_right) + ((self.dodging_direction_x * cvar("sv_dodging_horiz_speed")) * v_forward) + (cvar("sv_dodging_up_speed") * v_up);
+
+ // reset state so next dodge can be done correctly
self.dodging_action = 0;
+ self.dodging_direction_x = 0;
+ self.dodging_direction_y = 0;
}
// are we done with the dodging ramp yet?
MUTATOR_HOOKFUNCTION(dodging_GetPressedKeys) {
float length;
+ float dodge_detected;
//print("dodging_hook\n");
if (g_dodging == 0)
return 0;
- self.dodging_direction_x = 0;
- self.dodging_direction_y = 0;
+ dodge_detected = 0;
if (self.movement_x > 0) // get if movement keys are pressed
{ // forward key pressed
if (!(self.pressedkeys & KEY_FORWARD)) { // is this a state change?
- if (
+ if ( // are we allowed to dodge?
((time - self.last_FORWARD_KEY_time) < self.cvar_cl_dodging_timeout) &&
(self.lastflags & FL_ONGROUND) &&
((time - self.last_dodging_time) > cvar("sv_dodging_delay"))
- ) { // are we allowed to dodge?
+ ) {
+ dodge_detected = 1;
self.dodging_action = 1;
- self.dodging_direction_x = 1;
+ self.dodging_direction_x = 1.0;
self.last_dodging_time = time;
}
self.last_FORWARD_KEY_time = time;
}
}
- if (self.movement_x < 0) // get if movement keys are pressed
- { // forward key pressed
- if (!(self.pressedkeys & KEY_BACKWARD)) { // is this a state change?
- if (
+ if (self.movement_x < 0)
+ {
+ if (!(self.pressedkeys & KEY_BACKWARD)) { // is this a state change?
+ if ( // are we allowed to dodge?
((time - self.last_BACKWARD_KEY_time) < self.cvar_cl_dodging_timeout) &&
(self.lastflags & FL_ONGROUND) &&
((time - self.last_dodging_time) > cvar("sv_dodging_delay"))
- ) { // are we allowed to dodge?
+ ) {
+ dodge_detected = 1;
self.dodging_action = 1;
- self.dodging_direction_x = -1;
+ self.dodging_direction_x = -1.0;
self.last_dodging_time = time;
}
self.last_BACKWARD_KEY_time = time;
}
}
- // normalize the dodging_direction vector..
- length += self.dodging_direction_x * self.dodging_direction_x;
- length += self.dodging_direction_y * self.dodging_direction_y;
- length = sqrt(length);
-
- self.dodging_direction_x *= 1/length;
- self.dodging_direction_y *= 1/length;
+// if (dodge_detected == 1) {
+// // normalize the dodging_direction vector..
+// length = length + self.dodging_direction_x * self.dodging_direction_x;
+// length = length + self.dodging_direction_y * self.dodging_direction_y;
+// length = sqrt(length);
+//
+// self.dodging_direction_x = self.dodging_direction_x * 1.0/length;
+// self.dodging_direction_y = self.dodging_direction_y * 1.0/length;
+// }
+//
return 0;
}
// in the physics hook we actually implement the dodge..
MUTATOR_HOOK(PlayerPhysics, dodging_PlayerPhysics, CBC_ORDER_ANY);
- // this just turns on the cvar. TODO: implement :D
+ // this just turns on the cvar.
MUTATOR_ONADD
{
g_dodging = 1;
dodging_Initialize();
}
- // this just turns off the cvar. TODO: implement :D
+ // this just turns off the cvar.
MUTATOR_ONREMOVE
{
g_dodging = 0;