Fix warp to NaN when crouching with Silver Bullet.

This commit is contained in:
Mari the Deer 2023-03-10 00:20:09 +01:00
commit 8d1886ad15
2 changed files with 19 additions and 12 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r779 \cu(Fri 10 Mar 00:00:24 CET 2023)\c-";
SWWM_SHORTVER="\cw1.3pre r779 \cu(2023-03-10 00:00:24)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r780 \cu(Fri 10 Mar 00:20:09 CET 2023)\c-";
SWWM_SHORTVER="\cw1.3pre r780 \cu(2023-03-10 00:20:09)\c-";

View file

@ -274,23 +274,30 @@ extend Class Demolitionist
accel.xy = RotateVector(nmove,angle)*cos(pitch);
accel.z += nmove.x*sin(-pitch);
double maxspd = 16.*TweakSpeed();
if ( CanCrouch() && (player.crouchfactor != 1) ) maxspd *= player.crouchfactor;
double spd = vel.length();
// quicker speedup
vel += accel*clamp(maxspd/max(.01,spd),1.,2.);
// additional steering + quicker slow down
spd = vel.length();
if ( spd > maxspd ) spd -= (spd-maxspd)*.1;
vel = (vel+accel).unit()*spd;
// account for special cases where max speed is zero
if ( maxspd <= 0. ) vel += accel;
else
{
if ( CanCrouch() && (player.crouchfactor != 1) ) maxspd *= player.crouchfactor;
double spd = vel.length();
// quicker speedup
vel += accel*clamp(maxspd/max(.01,spd),1.,2.);
// additional steering + quicker slow down
spd = vel.length();
if ( spd > maxspd ) spd -= (spd-maxspd)*.1;
vel = (vel+accel).unit()*spd;
}
player.vel += RotateVector(nmove,angle)*bobfactor*cos(pitch)*16.;
}
else if ( player.onground )
{
Vector2 accel = RotateVector(nmove,angle);
if ( waterlevel > 1 ) vel.xy += accel; // slippery if waist-high or deeper
double maxspd = 16.*TweakSpeed();
// account for special cases where max speed is zero
// also, slippery if waist-high or deeper
if ( (waterlevel > 1) || (maxspd <= 0.) ) vel.xy += accel;
else
{
double maxspd = 16.*TweakSpeed();
if ( CanCrouch() && (player.crouchfactor != 1) ) maxspd *= player.crouchfactor;
double spd = vel.xy.length();
// quicker speedup