From 101db619e64b36f9bb38e620934191de7fb0d25a Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Fri, 3 Feb 2023 02:23:52 -0700 Subject: [PATCH] Add visual flicker in and out when faulting --- src/k_kart.c | 1 + src/p_mobj.c | 11 +++++++++++ src/p_spec.c | 2 ++ src/r_skins.c | 2 +- 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index c6b61f33b..f1b7ab5b5 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -7802,6 +7802,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->tiregrease = 0; player->sneakertimer = 0; player->spindashboost = 0; + player->flashing = TICRATE/2; } if (player->stealingtimer == 0 diff --git a/src/p_mobj.c b/src/p_mobj.c index e83417123..51024300b 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -9805,6 +9805,17 @@ void P_MobjThinker(mobj_t *mobj) mobj->eflags |= MFE_PAUSED; mobj->hitlag--; + if (mobj->type == MT_PLAYER && mobj->player->faulttimer > 0) + { + ClearFakePlayerSkin(mobj->player); + if (mobj->player->faulttimer & 1) + mobj->renderflags |= RF_DONTDRAW; + else + mobj->renderflags &= ~RF_DONTDRAW; + + mobj->player->faulttimer--; + } + if (mobj->type == MT_DROPTARGET && mobj->reactiontime > 0 && mobj->hitlag == 2) { mobj->spritexscale = FRACUNIT; diff --git a/src/p_spec.c b/src/p_spec.c index 80d828421..9e228b10c 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -1917,6 +1917,8 @@ static void K_HandleLapIncrement(player_t *player) player->nocontrol = 69; player->hyudorotimer = 69; K_StripItems(player); + player->faulttimer = TICRATE/3; + ClearFakePlayerSkin(player); } if ((player->starpostnum == numstarposts) || (player->laps == 0)) diff --git a/src/r_skins.c b/src/r_skins.c index 946004e7d..d6294fa0d 100644 --- a/src/r_skins.c +++ b/src/r_skins.c @@ -501,7 +501,7 @@ void ClearFakePlayerSkin(player_t* player) if ((flags & SF_IRONMAN) && !P_MobjWasRemoved(player->mo)) { SetFakePlayerSkin(player, skinid); - if (player->spectator == false) + if (player->spectator == false && player->mo->hitlag == 0) { S_StartSound(player->mo, sfx_s3k9f); K_SpawnMagicianParticles(player->mo, 5);