diff --git a/src/k_kart.c b/src/k_kart.c index cc5504bb..381b84da 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -5812,14 +5812,19 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->mo->movefactor = 32; } - // Wipeout slowdown - if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow]) + // Wipeout slowdown and banana slowdown in offroad (make sure this doesn't apply if we're boosting, however.) + if ((player->kartstuff[k_spinouttimer] || player->kartstuff[k_wipeoutslow]) && !player->kartstuff[k_sneakertimer]) { if (player->kartstuff[k_offroad]) player->mo->friction -= 4912; if (player->kartstuff[k_wipeoutslow] == 1) player->mo->friction -= 9824; } + + // Band-aid to make sure we never get any weird shit (tm) happening on us. + if (player->mo->friction < 0) + player->mo->friction = 0; + } K_KartDrift(player, onground); diff --git a/src/p_mobj.c b/src/p_mobj.c index f7f2afe3..2c5edacc 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1907,8 +1907,9 @@ void P_XYMovement(mobj_t *mo) //{ SRB2kart stuff if (mo->type == MT_ORBINAUT || mo->type == MT_JAWZ_DUD || mo->type == MT_JAWZ || mo->type == MT_BALLHOG) //(mo->type == MT_JAWZ && !mo->tracer)) return; - - if (mo->player && (mo->player->kartstuff[k_spinouttimer] && !mo->player->kartstuff[k_wipeoutslow]) && mo->player->speed <= K_GetKartSpeed(mo->player, false)/2) + + // hey maybe we should check for offroad as well before ignoring literally all friction ever + if (mo->player && (mo->player->kartstuff[k_spinouttimer] && !mo->player->kartstuff[k_offroad] && !mo->player->kartstuff[k_wipeoutslow]) && mo->player->speed <= K_GetKartSpeed(mo->player, false)/4) return; //}