From 6c9c6eeaf80dc0f618049e6ce4f8e3ed28bd4a90 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 15 Oct 2022 16:49:51 +0100 Subject: [PATCH] Also tick (almost) all karthud array timers even during hitlag Only exception is timers relating to ring usage, as that's intended to signify ring boost power (which is obviously paused during hitlag) --- src/k_kart.c | 41 +++++++++++++++++++++-------------------- src/p_tick.c | 1 + 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 849108f39..cdc243a6b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -7824,30 +7824,33 @@ void K_KartPlayerHUDUpdate(player_t *player) player->karthud[khud_itemblink] = 0; } - if (gametype == GT_RACE) + if (!(gametyperules & GTR_SPHERES)) { - // 0 is the fast spin animation, set at 30 tics of ring boost or higher! - if (player->ringboost >= 30) - player->karthud[khud_ringdelay] = 0; - else - player->karthud[khud_ringdelay] = ((RINGANIM_DELAYMAX+1) * (30 - player->ringboost)) / 30; + if (player->mo && player->mo->hitlag <= 0) + { + // 0 is the fast spin animation, set at 30 tics of ring boost or higher! + if (player->ringboost >= 30) + player->karthud[khud_ringdelay] = 0; + else + player->karthud[khud_ringdelay] = ((RINGANIM_DELAYMAX+1) * (30 - player->ringboost)) / 30; - if (player->karthud[khud_ringframe] == 0 && player->karthud[khud_ringdelay] > RINGANIM_DELAYMAX) - { - player->karthud[khud_ringframe] = 0; - player->karthud[khud_ringtics] = 0; - } - else if ((player->karthud[khud_ringtics]--) <= 0) - { - if (player->karthud[khud_ringdelay] == 0) // fast spin animation + if (player->karthud[khud_ringframe] == 0 && player->karthud[khud_ringdelay] > RINGANIM_DELAYMAX) { - player->karthud[khud_ringframe] = ((player->karthud[khud_ringframe]+2) % RINGANIM_NUMFRAMES); + player->karthud[khud_ringframe] = 0; player->karthud[khud_ringtics] = 0; } - else + else if ((player->karthud[khud_ringtics]--) <= 0) { - player->karthud[khud_ringframe] = ((player->karthud[khud_ringframe]+1) % RINGANIM_NUMFRAMES); - player->karthud[khud_ringtics] = min(RINGANIM_DELAYMAX, player->karthud[khud_ringdelay])-1; + if (player->karthud[khud_ringdelay] == 0) // fast spin animation + { + player->karthud[khud_ringframe] = ((player->karthud[khud_ringframe]+2) % RINGANIM_NUMFRAMES); + player->karthud[khud_ringtics] = 0; + } + else + { + player->karthud[khud_ringframe] = ((player->karthud[khud_ringframe]+1) % RINGANIM_NUMFRAMES); + player->karthud[khud_ringtics] = min(RINGANIM_DELAYMAX, player->karthud[khud_ringdelay])-1; + } } } @@ -8461,8 +8464,6 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) K_UpdateTripwire(player); - K_KartPlayerHUDUpdate(player); - if (battleovertime.enabled && !(player->pflags & PF_ELIMINATED) && player->bumpers <= 0 && player->karmadelay <= 0) { if (player->overtimekarma) diff --git a/src/p_tick.c b/src/p_tick.c index 5f3edd7c5..366355d79 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -617,6 +617,7 @@ void P_Ticker(boolean run) if (!PLAYERCONDITION(i)) continue; P_PlayerThink(&players[i]); + K_KartPlayerHUDUpdate(&players[i]); } #undef PLAYERCONDITION