From f4e23bc4e2a13dd0df5ab5b4bda20d22b19f16ac Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sun, 7 Feb 2021 15:25:09 -0500 Subject: [PATCH] Allow spindash while flashing, but you lose rings while doing so. I really hated that one of your controls would just... turn off while you were flashing. Even if there was a very good reason to not allow it (Funky Kong's Ring Racers:tm:). So instead, you CAN spindash in flashing ticks... but you're punished so harshly for it that it's not worth it. Which will actually teach people to not do it more than just the input arbitrarily not working :p --- src/k_kart.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 2f01f2dc0..fced743ff 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -7526,11 +7526,14 @@ static void K_KartSpindash(player_t *player) return; } - if (player->speed < 6*mapobjectscale && player->powers[pw_flashing] == 0) + if (player->speed == 0 && cmd->turning != 0 && leveltime % 8 == 0) { - if (cmd->turning != 0 && leveltime % 8 == 0) - S_StartSound(player->mo, sfx_ruburn); + // Rubber burn turn sfx + S_StartSound(player->mo, sfx_ruburn); + } + if (player->speed < 6*player->mo->scale) + { if ((cmd->buttons & (BT_DRIFT|BT_BRAKE)) == (BT_DRIFT|BT_BRAKE)) { INT16 chargetime = MAXCHARGETIME - ++player->kartstuff[k_spindash]; @@ -7547,6 +7550,15 @@ static void K_KartSpindash(player_t *player) K_KartSpindashWind(player->mo); } + if (player->powers[pw_flashing] > 0 && (leveltime & 1)) + { + // Every frame that you're invisible from flashing, spill a ring. + // Intentionally a lop-sided trade-off, so the game doesn't become + // Funky Kong's Ring Racers. + + P_PlayerRingBurst(player, 1); + } + if (chargetime > 0) { UINT16 soundcharge = 0;