diff --git a/src/k_kart.c b/src/k_kart.c index bd9cf3686..7b434e7b1 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -14075,12 +14075,19 @@ static void K_KartSpindash(player_t *player) } else if (!G_CompatLevel(0x0010)) { - boolean ebrakelasttic = ((player->oldcmd.buttons & BT_EBRAKEMASK) == BT_EBRAKEMASK); - if (player->pflags2 & PF2_STRICTFASTFALL) - ebrakelasttic = (player->oldcmd.buttons & BT_SPINDASH); + UINT16 oldbuttons = player->oldcmd.buttons; + UINT16 nowbuttons = K_GetKartButtons(player); + + if (K_KartKickstart(player)) + oldbuttons |= BT_ACCELERATE; // Not strictly correct, but better than nothing. + // Kickstart needs substantial attention if we want this sort of thing to be clean. + + boolean ebrakelasttic = ((oldbuttons & BT_EBRAKEMASK) == BT_EBRAKEMASK); + if (player->pflags2 & PF2_STRICTFASTFALL && !(oldbuttons & BT_SPINDASH)) + ebrakelasttic = false; boolean ebrakenow = K_PressingEBrake(player); - if (player->pflags2 & PF2_STRICTFASTFALL && !(player->cmd.buttons & BT_SPINDASH)) + if (player->pflags2 & PF2_STRICTFASTFALL && !(nowbuttons & BT_SPINDASH)) ebrakenow = false; if (!ebrakelasttic && ebrakenow && player->fastfall && player->transfer)