From c0d025c1c454fa2045cd6f26c2e59b3da00aeee5 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sat, 1 Jul 2023 18:52:57 -0700 Subject: [PATCH] Fix stagger off-by-one in hitstop VFX --- src/k_hitlag.c | 6 +++++- src/p_mobj.c | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/k_hitlag.c b/src/k_hitlag.c index 5a4bcc73f..92b69bf31 100644 --- a/src/k_hitlag.c +++ b/src/k_hitlag.c @@ -113,7 +113,11 @@ static void K_SpawnSingleHitLagSpark( spark->angle += ANGLE_90; } - spark->hitlag = pause; + if (pause > 0) + { + spark->hitlag = pause+1; // A little dumb, but hitlag is decremented on the same tic we spawn, so naively setting is off-by-one. + // spark->renderflags |= RF_DONTDRAW; // "Re-visible" behavior in P_MobjThinker, under a type check. (Currently unused.) + } if (color != SKINCOLOR_NONE) { diff --git a/src/p_mobj.c b/src/p_mobj.c index ec92a5efc..b705772be 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -9895,6 +9895,14 @@ void P_MobjThinker(mobj_t *mobj) K_HandleDirectionalInfluence(mobj->player); } + // Hitlag VFX "stagger" behavior. + // Oni likes the look better if all sparks visibly hold on their 1st frame, + // but if we ever reverse course, this is here. + /* + if (mobj->type == MT_HITLAG && mobj->hitlag == 0) + mobj->renderflags &= ~RF_DONTDRAW; + */ + return; }