From 023f75097f472d39d6ff5644e4e5148325cdad73 Mon Sep 17 00:00:00 2001 From: Anonimus Date: Thu, 25 Sep 2025 01:45:56 -0400 Subject: [PATCH] Some more AltInvinc loose ends Prevent it from appearing as a "homestretch" item in non-legacy distancing Fix the visual inconsistencies between it and Software --- src/hardware/hw_main.c | 16 ++++++++++++++-- src/k_odds.c | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index b165d3ea6..3e78c3452 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -4717,11 +4717,20 @@ static void HWR_ProjectSprite(mobj_t *thing) // uncapped/interpolation interpmobjstate_t interp = {0}; + mobj_t *interptarg; if (!thing) return; - R_InterpolateMobjState(thing, R_GetTimeFrac(RTF_LEVEL), &interp); + interptarg = thing; + + if (R_IsOverlayingInvinciblePlayer(thing)) + { + // Kill overlay misalignment + interptarg = thing->target; + } + + R_InterpolateMobjState(interptarg, R_GetTimeFrac(RTF_LEVEL), &interp); dispoffset = thing->dispoffset; @@ -5138,7 +5147,10 @@ static void HWR_ProjectSprite(mobj_t *thing) // New colormap stuff for skins Tails 06-07-2002 if (thing->colorized) { - vis->colormap = R_GetTranslationColormap(TC_RAINBOW, thing->color, GTC_CACHE); + vis->colormap = R_GetTranslationColormap( + R_IsOverlayingInvinciblePlayer(thing) ? TC_BLINK : TC_RAINBOW, + thing->color, + GTC_CACHE); } else if (thing->skin && thing->sprite == SPR_PLAY) // This thing is a player! { diff --git a/src/k_odds.c b/src/k_odds.c index faedc7e03..4468696da 100644 --- a/src/k_odds.c +++ b/src/k_odds.c @@ -510,6 +510,9 @@ INT32 K_KartGetItemOdds( // Nonetheless, apply the start cooldown. cooldownOnStart = true; + // Also, PLEASE prevent shitty last lap bagging endings. + notNearEnd = true; + // Unique odds for Invincibility. newodds = K_KartGetInvincibilityOdds(clusterDist);