X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_physics.qc;h=6f05c456804e73a8ba4371067dd21ff3ad3e3967;hp=77d235701b111c56ab9b2793f4ba86999cab6db9;hb=d6e1aa437e7eb8e182053cf17231597e79df0f81;hpb=dbf4ed6939f70e795228a1dc7eee5c37da3da8ee diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index 77d235701b..6f05c45680 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -19,19 +19,19 @@ When you press the jump key */ void PlayerJump (void) { - if(self.frozen) - return; // no jumping in freezetag when frozen - + if(self.player_blocked) + return; // no jumping while blocked + float doublejump = FALSE; player_multijump = doublejump; if(MUTATOR_CALLHOOK(PlayerJump)) return; - + doublejump = player_multijump; float mjumpheight; - + if (autocvar_sv_doublejump) { tracebox(self.origin + '0 0 0.01', self.mins, self.maxs, self.origin - '0 0 0.01', MOVE_NORMAL, self); @@ -109,11 +109,11 @@ void PlayerJump (void) self.velocity_z = self.velocity_z + mjumpheight; self.oldvelocity_z = self.velocity_z; - self.flags &~= FL_ONGROUND; - self.flags &~= FL_JUMPRELEASED; + self.flags &= ~FL_ONGROUND; + self.flags &= ~FL_JUMPRELEASED; animdecide_setaction(self, ANIMACTION_JUMP, TRUE); - + if(autocvar_g_jump_grunt) PlayerSound(playersound_jump, CH_PLAYER, VOICETYPE_PLAYERSOUND); @@ -142,7 +142,7 @@ void CheckWaterJump() { // open at eye level self.flags |= FL_WATERJUMP; self.velocity_z = 225; - self.flags &~= FL_JUMPRELEASED; + self.flags &= ~FL_JUMPRELEASED; self.teleport_time = time + 2; // safety net return; } @@ -330,7 +330,7 @@ void RaceCarPhysics() else { // now set angles_x so that the car points forward, but is tilted in velocity direction - self.flags &~= FL_ONGROUND; + self.flags &= ~FL_ONGROUND; } self.velocity = (neworigin - self.origin) * (1.0 / frametime); @@ -520,9 +520,9 @@ void PM_Accelerate(vector wishdir, float wishspeed, float wishspeed0, float acce } else vel_perpend = vel_perpend * max(0, 1 - frametime * wishspeed * sidefric); - + vel_xy = vel_straight * wishdir + vel_perpend; - + if(speedclamp >= 0) { float vel_xy_preclamp; @@ -636,12 +636,10 @@ void SV_PlayerPhysics() string c; WarpZone_PlayerPhysics_FixVAngle(); - + maxspd_mod = 1; if(self.ballcarried) - if(g_nexball) - maxspd_mod *= autocvar_g_nexball_basketball_carrier_highspeed; - else if(g_keepaway) + if(g_keepaway) maxspd_mod *= autocvar_g_keepaway_ballcarrier_highspeed; maxspd_mod *= autocvar_g_movement_highspeed; @@ -750,8 +748,8 @@ void SV_PlayerPhysics() return; bot_think(); } - - self.items &~= IT_USING_JETPACK; + + self.items &= ~IT_USING_JETPACK; if(IS_PLAYER(self)) { @@ -787,18 +785,11 @@ void SV_PlayerPhysics() self.disableclientprediction = 0; if(time < self.ladder_time) self.disableclientprediction = 1; - - if(self.frozen) + + if(time < self.spider_slowness) { - if(autocvar_sv_dodging_frozen && IS_REAL_CLIENT(self)) - { - self.movement_x = bound(-5, self.movement_x, 5); - self.movement_y = bound(-5, self.movement_y, 5); - self.movement_z = bound(-5, self.movement_z, 5); - } - else - self.movement = '0 0 0'; - self.disableclientprediction = 1; + self.stat_sv_maxspeed *= 0.5; // half speed while slow from spider + self.stat_sv_airspeedlimit_nonqw *= 0.5; } MUTATOR_CALLHOOK(PlayerPhysics); @@ -820,20 +811,20 @@ void SV_PlayerPhysics() if(self.conveyor.state) self.velocity -= self.conveyor.movedir; - if not(IS_PLAYER(self)) + if (!IS_PLAYER(self)) { maxspd_mod = autocvar_sv_spectator_speed_multiplier; if(!self.spectatorspeed) self.spectatorspeed = maxspd_mod; - if(self.impulse && self.impulse <= 19 || self.impulse >= 200 && self.impulse <= 209 || self.impulse >= 220 && self.impulse <= 229) + if(self.impulse && self.impulse <= 19 || (self.impulse >= 200 && self.impulse <= 209) || (self.impulse >= 220 && self.impulse <= 229)) { if(self.lastclassname != "player") { - if(self.impulse == 10 || self.impulse == 15 || self.impulse == 18 || self.impulse >= 200 && self.impulse <= 209) + if(self.impulse == 10 || self.impulse == 15 || self.impulse == 18 || (self.impulse >= 200 && self.impulse <= 209)) self.spectatorspeed = bound(1, self.spectatorspeed + 0.5, 5); else if(self.impulse == 11) self.spectatorspeed = maxspd_mod; - else if(self.impulse == 12 || self.impulse == 16 || self.impulse == 19 || self.impulse >= 220 && self.impulse <= 229) + else if(self.impulse == 12 || self.impulse == 16 || self.impulse == 19 || (self.impulse >= 220 && self.impulse <= 229)) self.spectatorspeed = bound(1, self.spectatorspeed - 0.5, 5); else if(self.impulse >= 1 && self.impulse <= 9) self.spectatorspeed = 1 + 0.5 * (self.impulse - 1); @@ -876,12 +867,12 @@ void SV_PlayerPhysics() if(self.waterlevel < WATERLEVEL_SWIMMING) if(time >= self.ladder_time) - if not(self.hook) + if (!self.hook) { self.nextstep = time + 0.3 + random() * 0.1; trace_dphitq3surfaceflags = 0; tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self); - if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS) + if (!(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)) { if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS) GlobalSound(globalsound_metalfall, CH_PLAYER, VOICETYPE_PLAYERSOUND); @@ -903,7 +894,7 @@ void SV_PlayerPhysics() self.velocity_y = self.movedir_y; if (time > self.teleport_time || self.waterlevel == WATERLEVEL_NONE) { - self.flags &~= FL_WATERJUMP; + self.flags &= ~FL_WATERJUMP; self.teleport_time = 0; } } @@ -914,7 +905,7 @@ void SV_PlayerPhysics() else if (self.movetype == MOVETYPE_NOCLIP || self.movetype == MOVETYPE_FLY || self.movetype == MOVETYPE_FLY_WORLDONLY) { // noclipping or flying - self.flags &~= FL_ONGROUND; + self.flags &= ~FL_ONGROUND; self.velocity = self.velocity * (1 - frametime * autocvar_sv_friction); makevectors(self.v_angle); @@ -931,7 +922,7 @@ void SV_PlayerPhysics() else if (self.waterlevel >= WATERLEVEL_SWIMMING) { // swimming - self.flags &~= FL_ONGROUND; + self.flags &= ~FL_ONGROUND; makevectors(self.v_angle); //wishvel = v_forward * self.movement_x + v_right * self.movement_y + v_up * self.movement_z; @@ -954,7 +945,7 @@ void SV_PlayerPhysics() else if (time < self.ladder_time) { // on a spawnfunc_func_ladder or swimming in spawnfunc_func_water - self.flags &~= FL_ONGROUND; + self.flags &= ~FL_ONGROUND; float g; g = autocvar_sv_gravity * frametime; @@ -1002,7 +993,7 @@ void SV_PlayerPhysics() PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0); } } - else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!autocvar_g_jetpack_fuel || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO) && !self.frozen) + else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!autocvar_g_jetpack_fuel || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO) && !self.freezetag_frozen) { //makevectors(self.v_angle_y * '0 1 0'); makevectors(self.v_angle); @@ -1092,9 +1083,9 @@ void SV_PlayerPhysics() if (f > 0 && wishvel != '0 0 0') { self.velocity = self.velocity + wishvel * f * frametime; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) + if (!(self.items & IT_UNLIMITED_WEAPON_AMMO)) self.ammo_fuel -= autocvar_g_jetpack_fuel * frametime * fvel * f; - self.flags &~= FL_ONGROUND; + self.flags &= ~FL_ONGROUND; self.items |= IT_USING_JETPACK; // jetpack also inhibits health regeneration, but only for 1 second @@ -1285,15 +1276,16 @@ void SV_PlayerPhysics() } } + // WEAPONTODO float xyspeed; xyspeed = vlen('1 0 0' * self.velocity_x + '0 1 0' * self.velocity_y); - if(self.weapon == WEP_NEX && autocvar_g_balance_nex_charge && autocvar_g_balance_nex_charge_velocity_rate && xyspeed > autocvar_g_balance_nex_charge_minspeed) + if(self.weapon == WEP_VORTEX && WEP_CVAR(vortex, charge) && WEP_CVAR(vortex, charge_velocity_rate) && xyspeed > WEP_CVAR(vortex, charge_minspeed)) { // add a maximum of charge_velocity_rate when going fast (f = 1), gradually increasing from minspeed (f = 0) to maxspeed - xyspeed = min(xyspeed, autocvar_g_balance_nex_charge_maxspeed); - f = (xyspeed - autocvar_g_balance_nex_charge_minspeed) / (autocvar_g_balance_nex_charge_maxspeed - autocvar_g_balance_nex_charge_minspeed); + xyspeed = min(xyspeed, WEP_CVAR(vortex, charge_maxspeed)); + f = (xyspeed - WEP_CVAR(vortex, charge_minspeed)) / (WEP_CVAR(vortex, charge_maxspeed) - WEP_CVAR(vortex, charge_minspeed)); // add the extra charge - self.nex_charge = min(1, self.nex_charge + autocvar_g_balance_nex_charge_velocity_rate * f * frametime); + self.vortex_charge = min(1, self.vortex_charge + WEP_CVAR(vortex, charge_velocity_rate) * f * frametime); } :end if(self.flags & FL_ONGROUND)