diff --git a/src/k_kart.c b/src/k_kart.c index ab93d5cf0..d2d953b3f 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -9946,6 +9946,13 @@ static void K_KartSpindash(player_t *player) // Update fastfall. player->fastfall = player->mo->momz; player->spindash = 0; + + if (player->fastfallBase == 0) + { + // Factors 3D momentum. + player->fastfallBase = FixedHypot(player->speed, player->mo->momz); + } + return; } else if (player->fastfall != 0) diff --git a/src/p_mobj.c b/src/p_mobj.c index 4e466e937..e122f4a5d 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1148,7 +1148,11 @@ fixed_t P_GetMobjGravity(mobj_t *mo) else if (mo->player->fastfall != 0) { // Fast falling - gravityadd *= 4; + + const fixed_t unit = 64 * mapobjectscale; + const fixed_t mult = 3*FRACUNIT + (3 * FixedDiv(mo->player->fastfallBase, unit)); + + gravityadd = FixedMul(gravityadd, mult); } } else