diff --git a/src/k_kart.c b/src/k_kart.c index 3457ebac2..a11599dd6 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -7941,7 +7941,7 @@ void K_KartPlayerHUDUpdate(player_t *player) if (player->positiondelay) player->positiondelay--; - if (!(player->pflags & PF_FAULT)) + if (!(player->pflags & PF_FAULT || player->pflags & PF_VOID)) player->karthud[khud_fault] = 0; else if (player->karthud[khud_fault] > 0 && player->karthud[khud_fault] <= 2*TICRATE) player->karthud[khud_fault]++; @@ -8726,7 +8726,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->nextringaward = 99; // Next time we need to award superring, spawn the first one instantly. } - if (player->pflags & PF_VOID) // Returning from FAULT VOID + if (player->pflags & PF_VOID && player->mo->hitlag == 0) // Returning from FAULT VOID { player->pflags &= ~PF_VOID; player->mo->renderflags &= ~RF_DONTDRAW; diff --git a/src/p_spec.c b/src/p_spec.c index c2e9d691e..e42c6f89c 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -1920,10 +1920,12 @@ static void K_HandleLapIncrement(player_t *player) player->mo->renderflags |= RF_DONTDRAW; player->mo->flags |= MF_NOCLIPTHING; player->nocontrol = UINT16_MAX; - player->hyudorotimer = UINT16_MAX; - player->speed = 0; + player->mo->momx = 0; + player->mo->momy = 0; + player->mo->momz = 0; K_StripItems(player); player->faultflash = TICRATE/3; + player->karthud[khud_fault] = 1; ClearFakePlayerSkin(player); S_StartSound(player->mo, sfx_s3k8a); P_MoveOrigin(player->mo, player->mo->old_x, player->mo->old_y, player->mo->z);