diff --git a/src/k_kart.c b/src/k_kart.c index 081ccbcc1..e5b9daec2 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8171,7 +8171,19 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->justbumped--; if (player->tiregrease) - player->tiregrease--; + { + // Remove grease faster if players are moving slower; players that are recovering + // from mistakes (or who got sprung purely for track traversal) need steering! + // Up to 4x degrease speed below 10FU/t (speed at which you lose drift sparks). + INT16 toDegrease = 1; + INT16 driftSpeedIncrements = player->speed / (10 * player->mo->scale); // Same breakpoints used for driftcharge stages. + toDegrease += max(3 - driftSpeedIncrements, 0); + + if (player->tiregrease <= toDegrease) + player->tiregrease = 0; + else + player->tiregrease -= toDegrease; + } if (player->spinouttimer || player->tumbleBounces) {