STAT(MOVEVARS_HIGHSPEED, this) = autocvar_g_movement_highspeed;
MUTATOR_CALLHOOK(PlayerPhysics_UpdateStats, this);
- float maxspd_mod = PHYS_HIGHSPEED(this);
+ float maxspd_mod = PHYS_HIGHSPEED(this) * ((this.swampslug.active) ? this.swampslug.swamp_slowdown : 1);
STAT(MOVEVARS_MAXSPEED, this) = Physics_ClientOption(this, "maxspeed", autocvar_sv_maxspeed) * maxspd_mod; // also slow walking
if (autocvar_g_movement_highspeed_q3_compat) {
STAT(MOVEVARS_AIRACCEL_QW, this) = Physics_ClientOption(this, "airaccel_qw", autocvar_sv_airaccel_qw);
#endif
)
{
- PHYS_CS(this).movement_x = bound(-5, PHYS_CS(this).movement.x, 5);
- PHYS_CS(this).movement_y = bound(-5, PHYS_CS(this).movement.y, 5);
- PHYS_CS(this).movement_z = bound(-5, PHYS_CS(this).movement.z, 5);
+ // bind movement to a very slow speed so dodging can use .movement for directional calculations
+ PHYS_CS(this).movement_x = bound(-2, PHYS_CS(this).movement.x, 2);
+ PHYS_CS(this).movement_y = bound(-2, PHYS_CS(this).movement.y, 2);
+ PHYS_CS(this).movement_z = bound(-2, PHYS_CS(this).movement.z, 2);
}
else
PHYS_CS(this).movement = '0 0 0';