From 60d72b5c202d37fd3e925a9ff380b765cd0042eb Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Mon, 28 Mar 2022 22:14:45 -0400 Subject: [PATCH] Make it flatten out faster & while rising, add a cap to the flattening, flatten out completely while respawning. --- src/k_kart.c | 2 +- src/p_mobj.c | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 082f4bf90..49f199932 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3415,7 +3415,7 @@ static angle_t K_TumbleSlope(mobj_t *mobj, angle_t pitch, angle_t roll) return FixedMul(pitch, pitchMul) + FixedMul(roll, rollMul); } -#define STEEP_VAL (ANGLE_45 - ANGLE_11hh) // (ANG60) +#define STEEP_VAL (ANGLE_45) void K_CheckSlopeTumble(player_t *player, angle_t oldPitch, angle_t oldRoll) { diff --git a/src/p_mobj.c b/src/p_mobj.c index d8f8f025b..ad79f6353 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -2811,41 +2811,46 @@ void P_PlayerZMovement(mobj_t *mo) // Even out pitch & roll slowly over time when falling. // Helps give OpenGL models a bit of the tumble tell. - if (P_MobjFlip(mo) * mo->momz <= 0) { - const angle_t evenSpeed = (ANG1 << 1) / 3; // 0.66 degrees + const angle_t speed = ANG1; + angle_t dest = ANGLE_45 + (ANG10 >> 1); INT32 pitchDelta = AngleDeltaSigned(mo->pitch, 0); INT32 rollDelta = AngleDeltaSigned(mo->roll, 0); - if (abs(pitchDelta) <= evenSpeed) + if (mo->player->respawn.state != RESPAWNST_NONE) + { + dest = 0; + } + + if (abs(pitchDelta) <= speed && dest == 0) { mo->pitch = 0; } - else + else if (abs(pitchDelta) > dest) { if (pitchDelta > 0) { - mo->pitch -= evenSpeed; + mo->pitch -= speed; } else { - mo->pitch += evenSpeed; + mo->pitch += speed; } } - if (abs(rollDelta) <= evenSpeed) + if (abs(rollDelta) <= speed && dest == 0) { mo->roll = 0; } - else + else if (abs(rollDelta) > dest) { if (rollDelta > 0) { - mo->roll -= evenSpeed; + mo->roll -= speed; } else { - mo->roll += evenSpeed; + mo->roll += speed; } } }