Even less slippery player movement.

This commit is contained in:
Mari the Deer 2023-03-09 23:55:21 +01:00
commit 7e6a74523b
3 changed files with 35 additions and 12 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r763 \cu(Thu 9 Mar 20:43:10 CET 2023)\c-";
SWWM_SHORTVER="\cw1.3pre r763 \cu(2023-03-09 20:43:10)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r764 \cu(Fri 10 Mar 19:40:43 CET 2023)\c-";
SWWM_SHORTVER="\cw1.3pre r764 \cu(2023-03-10 19:40:43)\c-";

View file

@ -273,17 +273,39 @@ extend Class Demolitionist
nmove *= movefactor;
if ( bNOGRAVITY && !player.GetClassicFlight() )
{
double zpush = nmove.x*sin(pitch);
vel.z -= zpush;
vel.xy += RotateVector(nmove,angle)*cos(pitch);
Vector3 accel;
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;
player.vel += RotateVector(nmove,angle)*bobfactor*cos(pitch)*16.;
}
else
else if ( player.onground )
{
vel.xy += RotateVector(nmove,angle);
if ( player.onground ) player.vel += RotateVector(nmove,angle)*bobfactor*16.;
else player.vel *= .75;
Vector2 accel = RotateVector(nmove,angle);
if ( waterlevel > 1 ) vel.xy += accel; // slippery if waist-high or deeper
else
{
double maxspd = 16.*TweakSpeed();
if ( CanCrouch() && (player.crouchfactor != 1) ) maxspd *= player.crouchfactor;
double spd = vel.xy.length();
// quicker speedup
vel.xy += accel*clamp(maxspd/max(.01,spd),1.,2.);
// additional steering + quicker slow down
spd = vel.xy.length();
if ( spd > maxspd ) spd -= (spd-maxspd)*.1;
vel.xy = (vel.xy+accel).unit()*spd;
player.vel += RotateVector(nmove,angle)*bobfactor*16.;
}
}
else player.vel *= .75;
// override air control because we REALLY need the extra mobility
if ( !player.onground && !bNOGRAVITY )
{

View file

@ -305,9 +305,10 @@ extend Class Demolitionist
CheckUnderwaterAmb();
SenseItems();
CheckItemMagnet();
if ( vel.length() > mystats.topspeed ) mystats.topspeed = vel.length();
if ( vel.length() > ((3600*GameTicRate)/32000.) )
SWWMUtility.AchievementProgress("sanic",int((vel.length()*3600*GameTicRate)/32000.),player);
double spd = vel.length();
if ( spd > mystats.topspeed ) mystats.topspeed = spd;
if ( spd > ((3600*GameTicRate)/32000.) )
SWWMUtility.AchievementProgress("sanic",int((spd*3600*GameTicRate)/32000.),player);
if ( player.onground && !bNoGravity && !lastground )
{
// bump down weapon