diff --git a/src/k_hud.cpp b/src/k_hud.cpp index b8b599f03..1bce5976f 100644 --- a/src/k_hud.cpp +++ b/src/k_hud.cpp @@ -6865,7 +6865,13 @@ static void K_drawKartStartCountdown(void) } } - if ((leveltime % (2*5)) / 5) // blink + int flashrate = 5; + if (cv_reducevfx.value) + { + flashrate = 35; + } + + if ((leveltime % (2*flashrate)) / flashrate) // blink pnum += 5; if (r_splitscreen) // splitscreen pnum += 10; diff --git a/src/k_kart.c b/src/k_kart.c index fc5a93eef..cc4c14214 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -11792,15 +11792,21 @@ void K_KartResetPlayerColor(player_t *player) fullbright = true; + int invinc_rotation_delay = 2; + if (cv_reducevfx.value) + { + invinc_rotation_delay = 8; + } + if (player->invincibilitytimer > defaultTime) { - player->mo->color = K_RainbowColor(leveltime / 2); + player->mo->color = K_RainbowColor(leveltime / invinc_rotation_delay); player->mo->colorized = true; skip = true; } else { - flicker += (defaultTime - player->invincibilitytimer) / TICRATE / 2; + flicker += ((defaultTime - player->invincibilitytimer) / TICRATE / 2) * cv_reducevfx.value ? 4 : 1; } if (leveltime % flicker == 0) @@ -11818,7 +11824,8 @@ void K_KartResetPlayerColor(player_t *player) if (player->growshrinktimer) // Ditto, for grow/shrink { - if (player->growshrinktimer % 5 == 0) + + if ((!cv_reducevfx.value && player->growshrinktimer % 5 == 0) || (cv_reducevfx.value && player->growshrinktimer % 35 < 12)) { player->mo->colorized = true; player->mo->color = (player->growshrinktimer < 0 ? SKINCOLOR_CREAMSICLE : SKINCOLOR_PERIWINKLE); @@ -11849,13 +11856,18 @@ void K_KartResetPlayerColor(player_t *player) } boolean allowflashing = true; + int flashingrate = 1; if (demo.playback && cv_reducevfx.value && !R_CanShowSkinInDemo(player->skin)) { // messy condition stack for, specifically, disabling flashing effects when viewing a staff ghost replay of a currently hidden character allowflashing = false; } + if (cv_reducevfx.value) + { + flashingrate = 4; + } - if (player->overdrive && (leveltime & 1) && allowflashing) + if (player->overdrive && ((leveltime / flashingrate) & 1) && allowflashing) { player->mo->colorized = true; fullbright = true; @@ -11870,7 +11882,7 @@ void K_KartResetPlayerColor(player_t *player) goto finalise; } - if (player->ringboost && (leveltime & 1) && allowflashing) // ring boosting + if (player->ringboost && ((leveltime / flashingrate) & 1) && allowflashing) // ring boosting { player->mo->colorized = true; fullbright = true; diff --git a/src/p_mobj.c b/src/p_mobj.c index 26f0935ba..5197bcc5e 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8202,6 +8202,12 @@ static boolean P_MobjRegularThink(mobj_t *mobj) trans = NUMTRANSMAPS - trans; + int invinc_rotation_delay = 2; + if (cv_reducevfx.value) + { + invinc_rotation_delay = 8; + } + if ((trans >= NUMTRANSMAPS) // not a valid visibility || (myspeed < (tripspeed - basespeed/2) && (leveltime & 1)) // < 150% flickering || (mobj->target->player->tripwirePass < TRIPWIRE_BOOST) // Not strong enough to make an aura @@ -8224,7 +8230,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) { if (mobj->target->player->invincibilitytimer > itemtime+(2*TICRATE)) { - mobj->color = K_RainbowColor(leveltime / 2); + mobj->color = K_RainbowColor(leveltime / invinc_rotation_delay); } else {