From 784a541c095da99f12be6622ae5a923a3d083382 Mon Sep 17 00:00:00 2001 From: SinnamonLat Date: Tue, 3 May 2022 01:53:20 +0200 Subject: [PATCH] Spindash charge time rebalance + release thrust --- 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 412f3bdc3..2b153be26 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -2773,8 +2773,8 @@ static fixed_t K_FlameShieldDashVar(INT32 val) INT16 K_GetSpindashChargeTime(player_t *player) { // more charge time for higher speed - // Tails = 2s, Mighty = 3s, Fang = 4s, Metal = 4s - return (player->kartspeed + 4) * (TICRATE/3); + // Tails = 2s, Knuckles = 2.6s, Metal = 3.2s + return (player->kartspeed + 8) * (TICRATE/5); } fixed_t K_GetSpindashChargeSpeed(player_t *player) @@ -8641,6 +8641,9 @@ static void K_KartSpindashWind(mobj_t *parent) K_MatchGenericExtraFlags(wind, parent); } +// Time after which you get a thrust for releasing spindash +#define SPINDASHTHRUSTTIME 20 + static void K_KartSpindash(player_t *player) { const INT16 MAXCHARGETIME = K_GetSpindashChargeTime(player); @@ -8657,6 +8660,13 @@ static void K_KartSpindash(player_t *player) player->spindashspeed = (player->spindash * FRACUNIT) / MAXCHARGETIME; player->spindashboost = TICRATE; + // if spindash was charged enough, give a small thrust. + if (player->spindash >= SPINDASHTHRUSTTIME) + { + // Give a bit of a boost depending on charge. + P_InstaThrust(player->mo, player->mo->angle, FixedMul(player->mo->scale, player->spindash*FRACUNIT/5)); + } + if (!player->tiregrease) { UINT8 i; @@ -8706,7 +8716,7 @@ static void K_KartSpindash(player_t *player) INT16 chargetime = MAXCHARGETIME - ++player->spindash; boolean spawnOldEffect = true; - if (chargetime <= (MAXCHARGETIME / 2)) + if (player->spindash >= SPINDASHTHRUSTTIME) { K_KartSpindashDust(player->mo); spawnOldEffect = false; @@ -8753,6 +8763,8 @@ static void K_KartSpindash(player_t *player) } } +#undef SPINDASHTHRUSTTIME + static void K_AirFailsafe(player_t *player) { const fixed_t maxSpeed = 6*player->mo->scale;