X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fphysics.qc;h=6c0bd616bcfee30c402a41cc118f921946dfe62a;hb=4c7352309564fc88b28216e0aa9ac509ce4d3dc6;hp=60ca3b101a7c7c7c09b6f303786875d8137f340f;hpb=1e85850478a0174700ab365d6a642a2a420d78f8;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/physics.qc b/qcsrc/common/physics.qc index 60ca3b101..6c0bd616b 100644 --- a/qcsrc/common/physics.qc +++ b/qcsrc/common/physics.qc @@ -1,10 +1,12 @@ #include "physics.qh" #include "triggers/trigger/swamp.qh" #include "triggers/trigger/jumppads.qh" +#include "viewloc.qh" #ifdef SVQC #include "../server/miscfunctions.qh" +#include "triggers/trigger/viewloc.qh" // client side physics bool Physics_Valid(string thecvar) @@ -82,8 +84,6 @@ void Physics_AddStats() addstat(STAT_DOUBLEJUMP, AS_INT, stat_doublejump); // jump speed caps - addstat(STAT_MOVEVARS_JUMPSPEEDCAP_MIN, AS_FLOAT, stat_jumpspeedcap_min); - addstat(STAT_MOVEVARS_JUMPSPEEDCAP_MIN, AS_FLOAT, stat_jumpspeedcap_min); addstat(STAT_MOVEVARS_JUMPSPEEDCAP_DISABLE_ONRAMPS, AS_INT, stat_jumpspeedcap_disable_onramps); // hacks @@ -145,8 +145,6 @@ void Physics_UpdateStats(float maxspd_mod) self.stat_jetpack_maxspeed_up = PHYS_JETPACK_MAXSPEED_UP; self.stat_jetpack_fuel = PHYS_JETPACK_FUEL; - self.stat_jumpspeedcap_min = PHYS_JUMPSPEEDCAP_MIN; - self.stat_jumpspeedcap_max = PHYS_JUMPSPEEDCAP_MAX; self.stat_jumpspeedcap_disable_onramps = PHYS_JUMPSPEEDCAP_DISABLE_ONRAMPS; self.stat_sv_friction_on_land = PHYS_FRICTION_ONLAND; @@ -555,12 +553,12 @@ bool PlayerJump (void) bool doublejump = false; float mjumpheight = PHYS_JUMPVELOCITY; - player_multijump = doublejump; - player_jumpheight = mjumpheight; #ifdef SVQC - if (MUTATOR_CALLHOOK(PlayerJump)) + if (MUTATOR_CALLHOOK(PlayerJump, doublejump, mjumpheight)) #elif defined(CSQC) - if(PM_multijump_checkjump()) + player_multijump = doublejump; + player_jumpheight = mjumpheight; + if (PM_multijump_checkjump()) #endif return true; @@ -600,22 +598,22 @@ bool PlayerJump (void) // velocity bounds. Final velocity is bound between (jumpheight * // min + jumpheight) and (jumpheight * max + jumpheight); - if(PHYS_JUMPSPEEDCAP_MIN) + if(PHYS_JUMPSPEEDCAP_MIN != "") { - float minjumpspeed = mjumpheight * PHYS_JUMPSPEEDCAP_MIN; + float minjumpspeed = mjumpheight * stof(PHYS_JUMPSPEEDCAP_MIN); if (self.velocity_z < minjumpspeed) mjumpheight += minjumpspeed - self.velocity_z; } - if(PHYS_JUMPSPEEDCAP_MAX) + if(PHYS_JUMPSPEEDCAP_MAX != "") { // don't do jump speedcaps on ramps to preserve old xonotic ramjump style tracebox(self.origin + '0 0 0.01', self.mins, self.maxs, self.origin - '0 0 0.01', MOVE_NORMAL, self); if (!(trace_fraction < 1 && trace_plane_normal_z < 0.98 && PHYS_JUMPSPEEDCAP_DISABLE_ONRAMPS)) { - float maxjumpspeed = mjumpheight * PHYS_JUMPSPEEDCAP_MAX; + float maxjumpspeed = mjumpheight * stof(PHYS_JUMPSPEEDCAP_MAX); if (self.velocity_z > maxjumpspeed) mjumpheight -= self.velocity_z - maxjumpspeed; @@ -711,7 +709,7 @@ void CheckPlayerJump() float activate = JETPACK_JUMP(self) && air_jump && PHYS_INPUT_BUTTON_JUMP(self) || PHYS_INPUT_BUTTON_JETPACK(self); float has_fuel = !PHYS_JETPACK_FUEL || PHYS_AMMO_FUEL(self) || ITEMS_STAT(self) & IT_UNLIMITED_WEAPON_AMMO; - if (!(ITEMS_STAT(self) & IT_JETPACK)) { } + if (!(ITEMS_STAT(self) & ITEM_Jetpack.m_itemid)) { } else if (self.jetpack_stopped) { } else if (!has_fuel) { @@ -1195,7 +1193,7 @@ void PM_check_vortex(void) #ifdef SVQC // WEAPONTODO float xyspeed = vlen(vec2(self.velocity)); - if (self.weapon == WEP_VORTEX && WEP_CVAR(vortex, charge) && WEP_CVAR(vortex, charge_velocity_rate) && xyspeed > WEP_CVAR(vortex, charge_minspeed)) + if (self.weapon == WEP_VORTEX.m_id && 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, WEP_CVAR(vortex, charge_maxspeed)); @@ -1762,6 +1760,8 @@ void PM_Main() self.disableclientprediction = 0; #endif + viewloc_PlayerPhysics(); + PM_check_spider(); PM_check_frozen(); @@ -1828,6 +1828,17 @@ void PM_Main() stuffcmd(self, strcat("cl_sidespeed ", temps, "\n")); stuffcmd(self, strcat("cl_upspeed ", temps, "\n")); } + + if(self.stat_jumpspeedcap_min != PHYS_JUMPSPEEDCAP_MIN) + { + self.stat_jumpspeedcap_min = PHYS_JUMPSPEEDCAP_MIN; + stuffcmd(self, strcat("cl_jumpspeedcap_min ", PHYS_JUMPSPEEDCAP_MIN, "\n")); + } + if(self.stat_jumpspeedcap_max != PHYS_JUMPSPEEDCAP_MAX) + { + self.stat_jumpspeedcap_min = PHYS_JUMPSPEEDCAP_MAX; + stuffcmd(self, strcat("cl_jumpspeedcap_max ", PHYS_JUMPSPEEDCAP_MAX, "\n")); + } #endif if(PHYS_DEAD(self)) @@ -1874,7 +1885,7 @@ void PM_Main() RaceCarPhysics(); #endif - else if (self.movetype == MOVETYPE_NOCLIP || self.movetype == MOVETYPE_FLY || self.movetype == MOVETYPE_FLY_WORLDONLY || (BUFFS(self) & BUFF_FLIGHT)) + else if (self.movetype == MOVETYPE_NOCLIP || self.movetype == MOVETYPE_FLY || self.movetype == MOVETYPE_FLY_WORLDONLY || (BUFFS_STAT(self) & BUFF_FLIGHT.m_itemid)) PM_fly(maxspeed_mod); else if (self.waterlevel >= WATERLEVEL_SWIMMING)