X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fmutator_dodging.qc;h=b5dc32fdfe0d924a233b099ab47f802eaceba6e3;hb=b67505ebdf6ddb105e3ec745a71dae5490ad2508;hp=39ecc2fdeef4fce5238335a2b80da13d5c9d9da2;hpb=244e5081c5c503c307e557c98ac864f6c9731475;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/mutator_dodging.qc b/qcsrc/server/mutators/mutator_dodging.qc index 39ecc2fde..b5dc32fdf 100644 --- a/qcsrc/server/mutators/mutator_dodging.qc +++ b/qcsrc/server/mutators/mutator_dodging.qc @@ -29,6 +29,12 @@ #endif #ifdef SVQC +#include "mutator_dodging.qh" +#include "../_all.qh" + +#include "mutator.qh" + +#include "../../common/animdecide.qh" .float cvar_cl_dodging_timeout; @@ -72,12 +78,12 @@ .float dodging_velocity_gain; #ifdef CSQC -.float pressedkeys; +.int pressedkeys; #elif defined(SVQC) void dodging_UpdateStats() -{ +{SELFPARAM(); self.stat_dodging = PHYS_DODGING; self.stat_dodging_delay = PHYS_DODGING_DELAY; self.stat_dodging_horiz_speed_frozen = PHYS_DODGING_HORIZ_SPEED_FROZEN; @@ -109,8 +115,8 @@ 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) +{SELFPARAM(); if (PHYS_DODGING_WALL == 0) { return false; } #define X(OFFSET) \ @@ -126,13 +132,13 @@ float check_close_to_wall(float threshold) return false; } -float check_close_to_ground(float threshold) -{ +bool check_close_to_ground(float threshold) +{SELFPARAM(); return IS_ONGROUND(self) ? true : false; } float PM_dodging_checkpressedkeys() -{ +{SELFPARAM(); if(!PHYS_DODGING) return false; @@ -143,7 +149,7 @@ float PM_dodging_checkpressedkeys() 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) @@ -154,7 +160,7 @@ float PM_dodging_checkpressedkeys() 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; \ @@ -193,7 +199,7 @@ float PM_dodging_checkpressedkeys() } void PM_dodging() -{ +{SELFPARAM(); if (!PHYS_DODGING) return; @@ -214,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 @@ -234,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); @@ -250,7 +256,7 @@ 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);