diff --git a/src/namedef_custom.h b/src/namedef_custom.h index 2ed9c0ede01..d0964ce7ff2 100644 --- a/src/namedef_custom.h +++ b/src/namedef_custom.h @@ -284,6 +284,7 @@ xx(SideMove2) xx(Face) xx(Slot) xx(SoundClass) +xx(FlyBob) xx(ViewBob) xx(WaterClimbSpeed) xx(DamageFade) diff --git a/src/playsim/p_mobj.cpp b/src/playsim/p_mobj.cpp index c3ebd72b877..1c0052abecc 100644 --- a/src/playsim/p_mobj.cpp +++ b/src/playsim/p_mobj.cpp @@ -2418,7 +2418,7 @@ static void P_ZMovement (AActor *mo, double oldfloorz) if (!mo->IsNoClip2() && fViewBob) { - mo->AddZ(DAngle::fromDeg(360 / 80.f * mo->Level->maptime).Sin() / 8); + mo->AddZ(DAngle::fromDeg(360 / 80.f * mo->Level->maptime).Sin() / 8 * mo->FloatVar(NAME_FlyBob)); } if (!(mo->flags8 & MF8_NOFRICTION)) diff --git a/wadsrc/static/zscript/actors/player/player.zs b/wadsrc/static/zscript/actors/player/player.zs index 38da0f0f632..7039f943638 100644 --- a/wadsrc/static/zscript/actors/player/player.zs +++ b/wadsrc/static/zscript/actors/player/player.zs @@ -46,6 +46,7 @@ class PlayerPawn : Actor double AirCapacity; // Multiplier for air supply underwater. Class FlechetteType; color DamageFade; // [CW] Fades for when you are being damaged. + double FlyBob; // [B] Fly bobbing mulitplier double ViewBob; // [SP] ViewBob Multiplier double WaterClimbSpeed; // [B] Speed when climbing up walls in water double FullHeight; @@ -76,6 +77,7 @@ class PlayerPawn : Actor property FlechetteType: FlechetteType; property Portrait: Portrait; property TeleportFreezeTime: TeleportFreezeTime; + property FlyBob: FlyBob; property ViewBob: ViewBob; property WaterClimbSpeed : WaterClimbSpeed; @@ -119,6 +121,7 @@ class PlayerPawn : Actor Player.MugShotMaxHealth 0; Player.FlechetteType "ArtiPoisonBag3"; Player.AirCapacity 1; + Player.FlyBob 1; Player.ViewBob 1; Player.WaterClimbSpeed 3.5; Player.TeleportFreezeTime 18; @@ -563,7 +566,7 @@ class PlayerPawn : Actor } else if (bNoGravity && !player.onground) { - player.bob = 0.5; + player.bob = min(abs(0.5 * FlyBob), MAXBOB); } else {