Additional tweakery. Update readme and other stuff.
This commit is contained in:
parent
f6a3a2f008
commit
7d112ab05c
9 changed files with 109 additions and 23 deletions
|
|
@ -86,6 +86,8 @@ Class Demolitionist : PlayerPawn
|
|||
Player.ViewHeight 52;
|
||||
Player.AirCapacity 0;
|
||||
Player.GruntSpeed 20;
|
||||
Player.ForwardMove 1., 1.5;
|
||||
Player.SideMove 1., 1.5;
|
||||
Player.SoundClass "demolitionist";
|
||||
DamageFactor "Drowning", 0.;
|
||||
DamageFactor "Poison", 0.;
|
||||
|
|
@ -99,6 +101,16 @@ Class Demolitionist : PlayerPawn
|
|||
+DONTDRAIN;
|
||||
+DONTCORPSE;
|
||||
}
|
||||
// oof
|
||||
clearscope Vector2 NormalizedMove()
|
||||
{
|
||||
if ( !(player.cmd.forwardmove|player.cmd.sidemove) )
|
||||
return (0,0);
|
||||
Vector2 mvec = (player.cmd.forwardmove,-player.cmd.sidemove);
|
||||
double maxmag = max(abs(mvec.x),abs(mvec.y));
|
||||
mvec /= mvec.length();
|
||||
return mvec*maxmag;
|
||||
}
|
||||
// oh yay, more cheat modification
|
||||
override void CheatGive( String name, int amount )
|
||||
{
|
||||
|
|
@ -861,7 +873,12 @@ Class Demolitionist : PlayerPawn
|
|||
A_AlertMonsters(swwm_uncapalert?0:2500);
|
||||
bpitch = min(bpitch+30,60);
|
||||
lastbump *= 1.3;
|
||||
if ( FindInventory("RagekitPower") ) ReactionTime = 4;
|
||||
if ( FindInventory("RagekitPower") )
|
||||
{
|
||||
// stop for just a split second UNLESS bunnyhopping
|
||||
if ( !(player.cmd.buttons&BT_RUN) || (level.maptime >= (lastairtic+10)) )
|
||||
ReactionTime = 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
A_Stop();
|
||||
|
|
@ -1429,7 +1446,8 @@ Class Demolitionist : PlayerPawn
|
|||
if ( CanCrouch() && (player.crouchfactor != -1) ) fs *= player.crouchfactor;
|
||||
Vector3 x, y, z;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
Vector3 accel = x*player.cmd.forwardmove+y*player.cmd.sidemove+z*jcmove;
|
||||
Vector2 nmove = NormalizedMove();
|
||||
Vector3 accel = x*nmove.x-y*nmove.y+z*jcmove;
|
||||
accel *= fs/320.;
|
||||
double spd = vel.length();
|
||||
if ( spd > 40. ) vel = (vel+accel/GameTicRate).unit()*spd;
|
||||
|
|
@ -1447,23 +1465,75 @@ Class Demolitionist : PlayerPawn
|
|||
}
|
||||
else
|
||||
{
|
||||
Super.MovePlayer();
|
||||
if ( player.turnticks )
|
||||
{
|
||||
player.turnticks--;
|
||||
angle = (180./TURN180_TICKS);
|
||||
}
|
||||
else angle += player.cmd.yaw*(360./65536.);
|
||||
player.onground = (pos.z<=floorz)||bOnMobj||bMBFBouncer||(player.cheats&CF_NOCLIP2);
|
||||
if ( player.cmd.forwardmove|player.cmd.sidemove )
|
||||
{
|
||||
double forwardmove, sidemove;
|
||||
double bobfactor;
|
||||
double friction, movefactor;
|
||||
double fm, sm;
|
||||
[friction, movefactor] = GetFriction();
|
||||
bobfactor = (friction<ORIG_FRICTION)?movefactor:ORIG_FRICTION_FACTOR;
|
||||
if ( !player.onground && !bNoGravity && !waterlevel )
|
||||
{
|
||||
// [RH] allow very limited movement if not on ground.
|
||||
movefactor *= level.aircontrol;
|
||||
bobfactor*= level.aircontrol;
|
||||
}
|
||||
// use normalized movement vector, no SR40 (not that we need it with how fast we can run)
|
||||
Vector2 nmove = NormalizedMove();
|
||||
fm = nmove.x;
|
||||
sm = -nmove.y;
|
||||
[fm, sm] = TweakSpeeds(fm,sm);
|
||||
fm *= Speed/256.;
|
||||
sm *= Speed/256.;
|
||||
if ( !(player.cmd.buttons&BT_RUN) ) bobfactor *= .5;
|
||||
// When crouching, speed and bobbing have to be reduced
|
||||
if ( CanCrouch() && (player.crouchfactor != 1) )
|
||||
{
|
||||
fm *= player.crouchfactor;
|
||||
sm *= player.crouchfactor;
|
||||
bobfactor *= player.crouchfactor;
|
||||
}
|
||||
forwardmove = fm*movefactor;
|
||||
sidemove = sm*movefactor;
|
||||
if ( forwardmove )
|
||||
{
|
||||
Bob(Angle,player.cmd.forwardmove*bobfactor/256.,true);
|
||||
ForwardThrust(forwardmove,Angle);
|
||||
}
|
||||
if ( sidemove )
|
||||
{
|
||||
let a = Angle-90;
|
||||
Bob(a,player.cmd.sidemove*bobfactor/256.,false);
|
||||
Thrust(sidemove,a);
|
||||
}
|
||||
if ( !(player.cheats&CF_PREDICTING) && (forwardmove || sidemove) )
|
||||
PlayRunning();
|
||||
if ( player.cheats&CF_REVERTPLEASE )
|
||||
{
|
||||
player.cheats &= ~CF_REVERTPLEASE;
|
||||
player.camera = player.mo;
|
||||
}
|
||||
}
|
||||
// override air control because we REALLY need the extra mobility
|
||||
if ( !player.onground && !bNOGRAVITY && (waterlevel < 2) )
|
||||
{
|
||||
double fs = TweakSpeeds(1.,0.);
|
||||
if ( CanCrouch() && (player.crouchfactor != -1) ) fs *= player.crouchfactor;
|
||||
Vector3 accel = (RotateVector((player.cmd.forwardmove,-player.cmd.sidemove),angle),0);
|
||||
Vector3 accel = (RotateVector(NormalizedMove(),angle),0);
|
||||
accel *= fs/512.;
|
||||
double spd = vel.length();
|
||||
if ( spd > 10. ) vel = (vel+accel/GameTicRate).unit()*spd;
|
||||
else vel = vel+accel/GameTicRate;
|
||||
}
|
||||
else if ( player.onground && !bNOGRAVITY && (waterlevel < 2) )
|
||||
{
|
||||
// quickly decelerate if we're not holding movement keys
|
||||
if ( !(player.cmd.forwardmove|player.cmd.sidemove) ) vel *= .95;
|
||||
}
|
||||
else vel *= .95; // quickly decelerate if we're not holding movement keys
|
||||
if ( abs(roll) > 0. ) A_SetRoll(roll+clamp(deltaangle(roll,0),-3.,3.),SPF_INTERPOLATE);
|
||||
}
|
||||
guideangle *= .9;
|
||||
|
|
@ -1611,7 +1681,8 @@ Class Demolitionist : PlayerPawn
|
|||
}
|
||||
}
|
||||
if ( jumpfac > 0 ) jumpvelz *= jumpfac;
|
||||
if ( FindInventory("RagekitPower") ) jumpvelz *= 2.;
|
||||
bool raging = FindInventory("RagekitPower");
|
||||
if ( raging ) jumpvelz *= 2.;
|
||||
double pvelz = vel.z;
|
||||
if ( !player.onground && !(player.cheats&CF_PREDICTING) )
|
||||
{
|
||||
|
|
@ -1634,7 +1705,7 @@ Class Demolitionist : PlayerPawn
|
|||
{
|
||||
SWWMUtility.DoKnockback(jumpactor,(-walldir,0),12000);
|
||||
int dmg = jumpactor.DamageMobj(self,self,10,'Jump');
|
||||
if ( FindInventory("RagekitPower") )
|
||||
if ( raging )
|
||||
{
|
||||
let ps = Spawn("BigPunchSplash",pos);
|
||||
ps.damagetype = 'Jump';
|
||||
|
|
@ -1680,16 +1751,22 @@ Class Demolitionist : PlayerPawn
|
|||
if ( vel.z < 25. ) // don't ramp up too hard
|
||||
vel.z += jumpvelz*(1.2+vel.length()*.01);
|
||||
// accelerate
|
||||
vel.xy += RotateVector((player.cmd.forwardmove,-player.cmd.sidemove),angle)/2400.;
|
||||
vel.xy += (RotateVector(NormalizedMove(),angle)/2400.)*(1.+vel.length()*.025)*TweakSpeeds(1.,0.);
|
||||
}
|
||||
else
|
||||
{
|
||||
// first jump
|
||||
if ( vel.z < 10. ) // don't ramp up too hard
|
||||
vel.z += (walljump||wallclimb||(player.cmd.buttons&BT_RUN))?(jumpvelz*1.25):jumpvelz; // higher jump if running or wall jumping
|
||||
{
|
||||
// multiplier factors
|
||||
double mult = (player.cmd.buttons&BT_RUN)?1.25:1.;
|
||||
if ( walljump ) mult *= 1.25;
|
||||
if ( wallclimb ) mult *= 1.35;
|
||||
vel.z += jumpvelz*mult;
|
||||
}
|
||||
// long jump if running
|
||||
if ( !walljump && !wallclimb && (player.cmd.buttons&BT_RUN) )
|
||||
vel.xy += RotateVector((player.cmd.forwardmove,-player.cmd.sidemove),angle)/1200.;
|
||||
(vel.xy += RotateVector(NormalizedMove(),angle)/1500.)*(raging?2.:1.)*TweakSpeeds(1.,0.);
|
||||
}
|
||||
}
|
||||
SetStateLabel("Jump");
|
||||
|
|
@ -2242,7 +2319,7 @@ Class Demolitionist : PlayerPawn
|
|||
A_StartSound("demolitionist/run",CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
|
||||
let b = Spawn("InvisibleSplasher",level.Vec3Offset(pos,(RotateVector((0,yofs*.25*radius),angle),0)));
|
||||
b.A_CheckTerrain();
|
||||
vel.xy += RotateVector((player.cmd.forwardmove,-player.cmd.sidemove),angle)/2000.;
|
||||
vel.xy += (RotateVector(NormalizedMove(),angle)/2000.)*TweakSpeeds(1.,0.);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue