X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fphysics%2Fplayer.qh;h=c351c2466c7c307b8a8c3cc95497cea8b98b522a;hb=aecd4e7b9523204a1dec88eaee0fd618976baf85;hp=39cc573ee99d9bc96cff1177dd1b3c457d26cfa1;hpb=429e52163f53e75b848135f076b77c4eb43935ac;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/physics/player.qh b/qcsrc/common/physics/player.qh index 39cc573ee..7bfdeb94f 100644 --- a/qcsrc/common/physics/player.qh +++ b/qcsrc/common/physics/player.qh @@ -2,7 +2,54 @@ // Client/server mappings -.float pm_frametime; +#ifdef SVQC +// TODO: get rid of this random dumb include! + #include + +float autocvar_sv_airaccel_qw; +float autocvar_sv_airstrafeaccel_qw; +float autocvar_sv_airspeedlimit_nonqw; +float autocvar_sv_airaccel_qw_stretchfactor; +float autocvar_sv_maxairstrafespeed; +float autocvar_sv_airstrafeaccelerate; +float autocvar_sv_warsowbunny_turnaccel; +float autocvar_sv_airaccel_sideways_friction; +float autocvar_sv_aircontrol; +float autocvar_sv_aircontrol_power; +float autocvar_sv_aircontrol_backwards; +float autocvar_sv_aircontrol_sidewards; +float autocvar_sv_aircontrol_penalty; +float autocvar_sv_warsowbunny_airforwardaccel; +float autocvar_sv_warsowbunny_topspeed; +float autocvar_sv_warsowbunny_accel; +float autocvar_sv_warsowbunny_backtosideratio; +float autocvar_sv_friction; +float autocvar_sv_accelerate; +float autocvar_sv_stopspeed; +float autocvar_sv_airaccelerate; +float autocvar_sv_airstopaccelerate; +float autocvar_sv_track_canjump; +string autocvar_g_physics_clientselect_options; +string autocvar_g_physics_clientselect_default; +bool autocvar_g_jump_grunt; +bool autocvar_g_physics_clientselect; +float autocvar_g_maxspeed; +float autocvar_g_movement_highspeed = 1; +bool autocvar_g_movement_highspeed_q3_compat = 0; +//float autocvar_g_nick_flood_penalty; +int autocvar_g_nick_flood_penalty_red; +int autocvar_g_nick_flood_penalty_yellow; +//float autocvar_g_nick_flood_timeout; +bool autocvar_speedmeter; +string autocvar_sv_jumpspeedcap_max; +float autocvar_sv_jumpspeedcap_max_disable_on_ramps; +string autocvar_sv_jumpspeedcap_min; +float autocvar_sv_jumpvelocity; +float autocvar_sv_jumpvelocity_crouch; +float autocvar_sv_maxairspeed; +float autocvar_sv_maxspeed; +bool autocvar_g_footsteps; +#endif .entity conveyor; @@ -12,15 +59,10 @@ .float swamp_slowdown; .float lastflags; .float lastground; -.float wasFlying; -#ifdef SVQC -.float spectatorspeed = _STAT(SPECTATORSPEED); -#elif defined(CSQC) -.float spectatorspeed; -#endif +.bool wasFlying; +.int buttons_old; .vector movement_old; -.float buttons_old; .vector v_angle_old; .string lastclassname; @@ -29,14 +71,16 @@ float AdjustAirAccelQW(float accelqw, float factor); bool IsFlying(entity a); -#define BUFFS_STAT(s) STAT(BUFFS, s) +#define PHYS_PL_MAX(s) STAT(PL_MAX, s) +#define PHYS_PL_MIN(s) STAT(PL_MIN, s) +#define PHYS_PL_CROUCH_MAX(s) STAT(PL_CROUCH_MAX, s) +#define PHYS_PL_CROUCH_MIN(s) STAT(PL_CROUCH_MIN, s) -#define GAMEPLAYFIX_DOWNTRACEONGROUND(s) STAT(GAMEPLAYFIX_DOWNTRACEONGROUND, s) -#define GAMEPLAYFIX_EASIERWATERJUMP(s) STAT(GAMEPLAYFIX_EASIERWATERJUMP, s) -#define GAMEPLAYFIX_STEPDOWN(s) STAT(GAMEPLAYFIX_STEPDOWN, s) -#define GAMEPLAYFIX_STEPMULTIPLETIMES(s) STAT(GAMEPLAYFIX_STEPMULTIPLETIMES, s) -#define GAMEPLAYFIX_UNSTICKPLAYERS(s) STAT(GAMEPLAYFIX_UNSTICKPLAYERS, s) -#define GAMEPLAYFIX_WATERTRANSITION(s) STAT(GAMEPLAYFIX_WATERTRANSITION, s) +#define PHYS_PL_VIEWOFS(s) STAT(PL_VIEW_OFS, s) +#define PHYS_PL_CROUCH_VIEWOFS(s) STAT(PL_CROUCH_VIEW_OFS, s) + +#define PHYS_VIEWHEIGHT(s) STAT(VIEWHEIGHT, s) +#define PHYS_HEALTH(s) STAT(HEALTH, s) #define PHYS_ACCELERATE(s) STAT(MOVEVARS_ACCELERATE, s) #define PHYS_AIRACCELERATE(s) STAT(MOVEVARS_AIRACCELERATE, s) @@ -47,6 +91,7 @@ bool IsFlying(entity a); #define PHYS_AIRCONTROL_PENALTY(s) STAT(MOVEVARS_AIRCONTROL_PENALTY, s) #define PHYS_AIRCONTROL_POWER(s) STAT(MOVEVARS_AIRCONTROL_POWER, s) #define PHYS_AIRCONTROL_BACKWARDS(s) STAT(MOVEVARS_AIRCONTROL_BACKWARDS, s) +#define PHYS_AIRCONTROL_SIDEWARDS(s) STAT(MOVEVARS_AIRCONTROL_SIDEWARDS, s) #define PHYS_AIRSPEEDLIMIT_NONQW(s) STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, s) #define PHYS_AIRSTOPACCELERATE(s) STAT(MOVEVARS_AIRSTOPACCELERATE, s) #define PHYS_AIRSTRAFEACCELERATE(s) STAT(MOVEVARS_AIRSTRAFEACCELERATE, s) @@ -72,32 +117,25 @@ bool IsFlying(entity a); #define PHYS_JETPACK_MAXSPEED_UP(s) STAT(JETPACK_MAXSPEED_UP, s) #define PHYS_JETPACK_REVERSE_THRUST(s) STAT(JETPACK_REVERSE_THRUST, s) -#define PHYS_JUMPSPEEDCAP_DISABLE_ONRAMPS(s) STAT(MOVEVARS_JUMPSPEEDCAP_DISABLE_ONRAMPS, s) -#define PHYS_JUMPSTEP(s) STAT(MOVEVARS_JUMPSTEP, s) +#define PHYS_JUMPSPEEDCAP_DISABLE_ONRAMPS(s) STAT(MOVEVARS_JUMPSPEEDCAP_DISABLE_ONRAMPS) #define PHYS_JUMPVELOCITY(s) STAT(MOVEVARS_JUMPVELOCITY, s) +#define PHYS_JUMPVELOCITY_CROUCH(s) STAT(MOVEVARS_JUMPVELOCITY_CROUCH, s) #define PHYS_MAXAIRSPEED(s) STAT(MOVEVARS_MAXAIRSPEED, s) #define PHYS_MAXAIRSTRAFESPEED(s) STAT(MOVEVARS_MAXAIRSTRAFESPEED, s) #define PHYS_MAXSPEED(s) STAT(MOVEVARS_MAXSPEED, s) -#define PHYS_NOSTEP(s) STAT(NOSTEP, s) -#define PHYS_STEPHEIGHT(s) STAT(MOVEVARS_STEPHEIGHT, s) - #define PHYS_STOPSPEED(s) STAT(MOVEVARS_STOPSPEED, s) #define PHYS_TRACK_CANJUMP(s) STAT(MOVEVARS_TRACK_CANJUMP, s) -#define PHYS_WALLFRICTION(s) STAT(MOVEVARS_WALLFRICTION, s) - #define PHYS_WARSOWBUNNY_ACCEL(s) STAT(MOVEVARS_WARSOWBUNNY_ACCEL, s) #define PHYS_WARSOWBUNNY_AIRFORWARDACCEL(s) STAT(MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL, s) #define PHYS_WARSOWBUNNY_BACKTOSIDERATIO(s) STAT(MOVEVARS_WARSOWBUNNY_BACKTOSIDERATIO, s) #define PHYS_WARSOWBUNNY_TOPSPEED(s) STAT(MOVEVARS_WARSOWBUNNY_TOPSPEED, s) #define PHYS_WARSOWBUNNY_TURNACCEL(s) STAT(MOVEVARS_WARSOWBUNNY_TURNACCEL, s) -#define UPWARD_VELOCITY_CLEARS_ONGROUND(s) STAT(GAMEPLAYFIX_UPVELOCITYCLEARSONGROUND, s) - -#define PHYS_SLICK_APPLYGRAVITY(s) STAT(SLICK_APPLYGRAVITY, s) +#define PHYS_SLICK_APPLYGRAVITY(s) STAT(SLICK_APPLYGRAVITY) #define PHYS_INPUT_BUTTON_ATCK(s) PHYS_INPUT_BUTTON_BUTTON1(s) #define PHYS_INPUT_BUTTON_JUMP(s) PHYS_INPUT_BUTTON_BUTTON2(s) @@ -105,15 +143,6 @@ bool IsFlying(entity a); #define PHYS_INPUT_BUTTON_ZOOM(s) PHYS_INPUT_BUTTON_BUTTON4(s) #define PHYS_INPUT_BUTTON_CROUCH(s) PHYS_INPUT_BUTTON_BUTTON5(s) #define PHYS_INPUT_BUTTON_HOOK(s) PHYS_INPUT_BUTTON_BUTTON6(s) - -#ifdef CSQC -STATIC_INIT(PHYS_INPUT_BUTTON_HOOK) -{ - localcmd("alias +hook +button6\n"); - localcmd("alias -hook -button6\n"); -} -#endif - #define PHYS_INPUT_BUTTON_INFO(s) PHYS_INPUT_BUTTON_BUTTON7(s) #define PHYS_INPUT_BUTTON_DRAG(s) PHYS_INPUT_BUTTON_BUTTON8(s) #define PHYS_INPUT_BUTTON_USE(s) PHYS_INPUT_BUTTON_BUTTON_USE(s) @@ -122,18 +151,19 @@ STATIC_INIT(PHYS_INPUT_BUTTON_HOOK) #define PHYS_INPUT_BUTTON_ZOOMSCRIPT(s) PHYS_INPUT_BUTTON_BUTTON9(s) #define PHYS_INPUT_BUTTON_JETPACK(s) PHYS_INPUT_BUTTON_BUTTON10(s) #define PHYS_INPUT_BUTTON_DODGE(s) PHYS_INPUT_BUTTON_BUTTON11(s) +#define PHYS_INPUT_BUTTON_MINIGAME(s) PHYS_INPUT_BUTTON_BUTTON12(s) #ifdef CSQC -STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) +STATIC_INIT(PHYS_INPUT_BUTTON) { + localcmd("alias +hook +button6\n"); + localcmd("alias -hook -button6\n"); + localcmd("alias +jetpack +button10\n"); - localcmd("alias -jetpack -button10\n"); -} + localcmd("alias -jetpack -button10\n"); -STATIC_INIT(PHYS_INPUT_BUTTON_DODGE) -{ - localcmd("alias +dodge +button11\n"); - localcmd("alias -dodge -button11\n"); + localcmd("alias +dodge +button11\n"); + localcmd("alias -dodge -button11\n"); } #endif @@ -147,17 +177,17 @@ STATIC_INIT(PHYS_INPUT_BUTTON_DODGE) // used for special commands and idle checking, not from the engine // TODO: cache #define PHYS_INPUT_BUTTON_MASK(s) ( \ - (1 << 0) * PHYS_INPUT_BUTTON_ATCK(s) \ - | (1 << 1) * PHYS_INPUT_BUTTON_JUMP(s) \ - | (1 << 2) * PHYS_INPUT_BUTTON_ATCK2(s) \ - | (1 << 3) * PHYS_INPUT_BUTTON_ZOOM(s) \ - | (1 << 4) * PHYS_INPUT_BUTTON_CROUCH(s) \ - | (1 << 5) * PHYS_INPUT_BUTTON_HOOK(s) \ - | (1 << 6) * PHYS_INPUT_BUTTON_USE(s) \ - | (1 << 7) * PHYS_INPUT_BUTTON_BACKWARD(s) \ - | (1 << 8) * PHYS_INPUT_BUTTON_FORWARD(s) \ - | (1 << 9) * PHYS_INPUT_BUTTON_LEFT(s) \ - | (1 << 10) * PHYS_INPUT_BUTTON_RIGHT(s) \ + (BIT(0) * PHYS_INPUT_BUTTON_ATCK(s)) \ + | (BIT(1) * PHYS_INPUT_BUTTON_JUMP(s)) \ + | (BIT(2) * PHYS_INPUT_BUTTON_ATCK2(s)) \ + | (BIT(3) * PHYS_INPUT_BUTTON_ZOOM(s)) \ + | (BIT(4) * PHYS_INPUT_BUTTON_CROUCH(s)) \ + | (BIT(5) * PHYS_INPUT_BUTTON_HOOK(s)) \ + | (BIT(6) * PHYS_INPUT_BUTTON_USE(s)) \ + | (BIT(7) * PHYS_INPUT_BUTTON_BACKWARD(s)) \ + | (BIT(8) * PHYS_INPUT_BUTTON_FORWARD(s)) \ + | (BIT(9) * PHYS_INPUT_BUTTON_LEFT(s)) \ + | (BIT(10) * PHYS_INPUT_BUTTON_RIGHT(s)) \ ) #define IS_JUMP_HELD(s) (!((s).flags & FL_JUMPRELEASED)) @@ -167,13 +197,13 @@ STATIC_INIT(PHYS_INPUT_BUTTON_DODGE) #define WAS_ONGROUND(s) boolean((s).lastflags & FL_ONGROUND) #define WAS_ONSLICK(s) boolean((s).lastflags & FL_ONSLICK) +#define IS_DUCKED(s) (boolean((s).flags & FL_DUCKED)) +#define SET_DUCKED(s) ((s).flags |= FL_DUCKED) +#define UNSET_DUCKED(s) ((s).flags &= ~FL_DUCKED) + #define ITEMS_STAT(s) ((s).items) .float teleport_time; -#define PHYS_TELEPORT_TIME(s) ((s).teleport_time) - -.float waterjump_time; -#define PHYS_WATERJUMP_TIME(s) ((s).waterjump_time) #ifdef CSQC @@ -182,31 +212,31 @@ STATIC_INIT(PHYS_INPUT_BUTTON_DODGE) string autocvar_cl_jumpspeedcap_min; string autocvar_cl_jumpspeedcap_max; - const int FL_WATERJUMP = 2048; // player jumping out of water - const int FL_JUMPRELEASED = 4096; // for jump debouncing - .float watertype; .float waterlevel; .int items; .vector movement; + + // angles of the player's view (as opposed to their model which uses `.vector angles;`) in degrees + // x is pitch: positive means down (unlike .angles) + // y is yaw: between -180 and 180, increases when turning left + // z is roll: positive means tilted clockwise, usually is 0 + // when .fixangle is set, the player's view will change to the direction where the model is facing + // more info: https://gitlab.com/xonotic/xonotic-data.pk3dir/merge_requests/447#note_32816794 .vector v_angle; .entity hook; // TODO - #define IS_CLIENT(s) ((s).isplayermodel || (s) == csqcplayer) - #define IS_PLAYER(s) ((s).isplayermodel) + #define IS_CLIENT(s) (((s).isplayermodel & ISPLAYER_CLIENT) || (s) == csqcplayer) + #define IS_PLAYER(s) ((s).isplayermodel & ISPLAYER_PLAYER) #define IS_NOT_A_CLIENT(s) (!(s).isplayermodel && (s) != csqcplayer) - #define isPushable(s) ((s).isplayermodel || (s).pushable || ((s).flags & FL_PROJECTILE)) + #define IS_DEAD(s) (((s).classname == "ENT_CLIENT_MODEL") ? (s).csqcmodel_isdead : (GetResource((s), RES_HEALTH) <= 0)) //float player_multijump; //float player_jumpheight; - #define PHYS_GRAVITY(s) STAT(MOVEVARS_GRAVITY, s) - - #define TICRATE ticrate - #define PHYS_INPUT_ANGLES(s) input_angles // TODO #define PHYS_WORLD_ANGLES(s) input_angles @@ -215,6 +245,7 @@ STATIC_INIT(PHYS_INPUT_BUTTON_DODGE) #define PHYS_INPUT_FRAMETIME serverdeltatime #define PHYS_INPUT_MOVEVALUES(s) input_movevalues + #define PHYS_CS(s) (s) #define PHYS_INPUT_BUTTON_BUTTON1(s) boolean(input_buttons & BIT(0)) #define PHYS_INPUT_BUTTON_BUTTON2(s) boolean(input_buttons & BIT(1)) @@ -236,20 +267,12 @@ STATIC_INIT(PHYS_INPUT_BUTTON_DODGE) #define PHYS_INPUT_BUTTON_BUTTON15(s) boolean(input_buttons & BIT(17)) #define PHYS_INPUT_BUTTON_BUTTON16(s) boolean(input_buttons & BIT(18)) - #define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE (boolean(moveflags & MOVEFLAG_GRAVITYUNAFFECTEDBYTICRATE)) - #define GAMEPLAYFIX_NOGRAVITYONGROUND (boolean(moveflags & MOVEFLAG_NOGRAVITYONGROUND)) - #define GAMEPLAYFIX_Q2AIRACCELERATE (boolean(moveflags & MOVEFLAG_Q2AIRACCELERATE)) - - #define IS_DUCKED(s) (boolean((s).flags & FL_DUCKED)) - #define SET_DUCKED(s) ((s).flags |= FL_DUCKED) - #define UNSET_DUCKED(s) ((s).flags &= ~FL_DUCKED) + #define PHYS_INVEHICLE(s) (boolean(hud != HUD_NORMAL)) #define PHYS_JUMPSPEEDCAP_MIN autocvar_cl_jumpspeedcap_min #define PHYS_JUMPSPEEDCAP_MAX autocvar_cl_jumpspeedcap_max #define PHYS_CL_TRACK_CANJUMP(s) STAT(MOVEVARS_CL_TRACK_CANJUMP, s) - // FIXME: 0 doesn't mean zero gravity - #define PHYS_ENTGRAVITY(s) STAT(MOVEVARS_ENTGRAVITY, s) #elif defined(SVQC) @@ -257,18 +280,16 @@ STATIC_INIT(PHYS_INPUT_BUTTON_DODGE) bool Physics_Valid(string thecvar); - void Physics_UpdateStats(entity this, float maxspd_mod); + void Physics_UpdateStats(entity this); - .float stat_sv_airspeedlimit_nonqw = _STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW); - .float stat_sv_maxspeed = _STAT(MOVEVARS_MAXSPEED); + void PM_UpdateButtons(entity this, entity store); /** Not real stats */ .string jumpspeedcap_min; .string jumpspeedcap_max; - #define PHYS_GRAVITY(s) autocvar_sv_gravity - - #define TICRATE sys_frametime + // footstep interval + .float nextstep; #define PHYS_INPUT_ANGLES(s) ((s).v_angle) #define PHYS_WORLD_ANGLES(s) ((s).angles) @@ -276,42 +297,47 @@ STATIC_INIT(PHYS_INPUT_BUTTON_DODGE) #define PHYS_INPUT_TIMELENGTH frametime #define PHYS_INPUT_FRAMETIME sys_frametime - #define PHYS_INPUT_MOVEVALUES(s) ((s).movement) - - #define PHYS_INPUT_BUTTON_BUTTON1(s) ((s).button0) - #define PHYS_INPUT_BUTTON_BUTTON2(s) ((s).button2) - #define PHYS_INPUT_BUTTON_BUTTON3(s) ((s).button3) - #define PHYS_INPUT_BUTTON_BUTTON4(s) ((s).button4) - #define PHYS_INPUT_BUTTON_BUTTON5(s) ((s).button5) - #define PHYS_INPUT_BUTTON_BUTTON6(s) ((s).button6) - #define PHYS_INPUT_BUTTON_BUTTON7(s) ((s).button7) - #define PHYS_INPUT_BUTTON_BUTTON8(s) ((s).button8) - #define PHYS_INPUT_BUTTON_BUTTON_USE(s) ((s).buttonuse) - #define PHYS_INPUT_BUTTON_BUTTON_CHAT(s) ((s).buttonchat) - #define PHYS_INPUT_BUTTON_BUTTON_PRYDON(s) ((s).cursor_active) - #define PHYS_INPUT_BUTTON_BUTTON9(s) ((s).button9) - #define PHYS_INPUT_BUTTON_BUTTON10(s) ((s).button10) - #define PHYS_INPUT_BUTTON_BUTTON11(s) ((s).button11) - #define PHYS_INPUT_BUTTON_BUTTON12(s) ((s).button12) - #define PHYS_INPUT_BUTTON_BUTTON13(s) ((s).button13) - #define PHYS_INPUT_BUTTON_BUTTON14(s) ((s).button14) - #define PHYS_INPUT_BUTTON_BUTTON15(s) ((s).button15) - #define PHYS_INPUT_BUTTON_BUTTON16(s) ((s).button16) - - #define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE autocvar_sv_gameplayfix_gravityunaffectedbyticrate - #define GAMEPLAYFIX_NOGRAVITYONGROUND autocvar_sv_gameplayfix_nogravityonground - #define GAMEPLAYFIX_Q2AIRACCELERATE autocvar_sv_gameplayfix_q2airaccelerate - - #define IS_DUCKED(s) ((s).crouch) - #define SET_DUCKED(s) ((s).crouch = true) - #define UNSET_DUCKED(s) ((s).crouch = false) + #define PHYS_INPUT_MOVEVALUES(s) CS(s).movement + #define PHYS_CS(s) CS(s) + + #define PHYS_INPUT_BUTTON_BUTTON1(s) (CS(s).button0) + #define PHYS_INPUT_BUTTON_BUTTON2(s) (CS(s).button2) + #define PHYS_INPUT_BUTTON_BUTTON3(s) (CS(s).button3) + #define PHYS_INPUT_BUTTON_BUTTON4(s) (CS(s).button4) + #define PHYS_INPUT_BUTTON_BUTTON5(s) (CS(s).button5) + #define PHYS_INPUT_BUTTON_BUTTON6(s) (CS(s).button6) + #define PHYS_INPUT_BUTTON_BUTTON7(s) (CS(s).button7) + #define PHYS_INPUT_BUTTON_BUTTON8(s) (CS(s).button8) + #define PHYS_INPUT_BUTTON_BUTTON_USE(s) (CS(s).buttonuse) + #define PHYS_INPUT_BUTTON_BUTTON_CHAT(s) (CS(s).buttonchat) + #define PHYS_INPUT_BUTTON_BUTTON_PRYDON(s) (CS(s).cursor_active) + #define PHYS_INPUT_BUTTON_BUTTON9(s) (CS(s).button9) + #define PHYS_INPUT_BUTTON_BUTTON10(s) (CS(s).button10) + #define PHYS_INPUT_BUTTON_BUTTON11(s) (CS(s).button11) + #define PHYS_INPUT_BUTTON_BUTTON12(s) (CS(s).button12) + #define PHYS_INPUT_BUTTON_BUTTON13(s) (CS(s).button13) + #define PHYS_INPUT_BUTTON_BUTTON14(s) (CS(s).button14) + #define PHYS_INPUT_BUTTON_BUTTON15(s) (CS(s).button15) + #define PHYS_INPUT_BUTTON_BUTTON16(s) (CS(s).button16) + + #define PHYS_INVEHICLE(s) (boolean((s).vehicle != NULL)) #define PHYS_JUMPSPEEDCAP_MIN autocvar_sv_jumpspeedcap_min #define PHYS_JUMPSPEEDCAP_MAX autocvar_sv_jumpspeedcap_max - #define PHYS_CL_TRACK_CANJUMP(s) ((s).cvar_cl_movement_track_canjump) - #define PHYS_ENTGRAVITY(s) ((s).gravity) + #define PHYS_CL_TRACK_CANJUMP(s) (CS_CVAR(s).cvar_cl_movement_track_canjump) + +#endif +#ifdef SVQC +// FIXME/EXPLAINME: why? Mario: because +vector autocvar_sv_player_maxs = '16 16 45'; +vector autocvar_sv_player_mins = '-16 -16 -24'; +vector autocvar_sv_player_viewoffset = '0 0 35'; +vector autocvar_sv_player_crouch_maxs = '16 16 25'; +vector autocvar_sv_player_crouch_mins = '-16 -16 -24'; +vector autocvar_sv_player_crouch_viewoffset = '0 0 20'; +//vector autocvar_sv_player_headsize = '24 24 12'; #endif REGISTER_NET_C2S(setpause)