diff --git a/src/k_kart.c b/src/k_kart.c index 9ae53d06a..b9bc1c821 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3485,9 +3485,14 @@ fixed_t K_3dKartMovement(player_t *player) return finalspeed; } +fixed_t K_MomentumThreshold(const mobj_t *mo) +{ + return 6 * mo->scale; +} + angle_t K_MomentumAngle(mobj_t *mo) { - if (FixedHypot(mo->momx, mo->momy) >= mo->scale) + if (FixedHypot(mo->momx, mo->momy) > K_MomentumThreshold(mo)) { return R_PointToAngle2(0, 0, mo->momx, mo->momy); } @@ -4086,7 +4091,7 @@ void K_UpdateSliptideZipIndicator(player_t *player) } mobj = player->sliptideZipIndicator; - angle_t momentumAngle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy); + angle_t momentumAngle = K_MomentumAngle(player->mo); P_MoveOrigin(mobj, player->mo->x - FixedMul(40*mapobjectscale, FINECOSINE(momentumAngle >> ANGLETOFINESHIFT)), player->mo->y - FixedMul(40*mapobjectscale, FINESINE(momentumAngle >> ANGLETOFINESHIFT)), @@ -10091,7 +10096,7 @@ boolean K_FastFallBounce(player_t *player) static void K_AirFailsafe(player_t *player) { - const fixed_t maxSpeed = 6*player->mo->scale; + const fixed_t maxSpeed = K_MomentumThreshold(player->mo); const fixed_t thrustSpeed = 6*player->mo->scale; // 10*player->mo->scale if (player->speed > maxSpeed // Above the max speed that you're allowed to use this technique. diff --git a/src/k_kart.h b/src/k_kart.h index 98108f59e..782740ce8 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -83,6 +83,7 @@ void K_KartPlayerHUDUpdate(player_t *player); void K_KartResetPlayerColor(player_t *player); void K_KartPlayerThink(player_t *player, ticcmd_t *cmd); void K_KartPlayerAfterThink(player_t *player); +fixed_t K_MomentumThreshold(const mobj_t *mo); angle_t K_MomentumAngle(mobj_t *mo); void K_AddHitLag(mobj_t *mo, INT32 tics, boolean fromDamage); void K_SetHitLagForObjects(mobj_t *mo1, mobj_t *mo2, INT32 tics, boolean fromDamage);