Merge branch 'emergency-spindash-visual' into 'master'

VFX for overcharged and emergency spindashes

See merge request KartKrew/Kart!1065
This commit is contained in:
toaster 2023-03-23 22:29:26 +00:00
commit f5cbccf4b3

View file

@ -9736,6 +9736,10 @@ void K_KartEbrakeVisuals(player_t *p)
K_FlipFromObject(p->mo->hprev, p->mo);
K_ReduceVFX(p->mo->hprev, p);
p->mo->hprev->sprzoff = p->mo->sprzoff;
p->mo->hprev->colorized = false;
p->mo->hprev->spritexoffset = 0;
p->mo->hprev->spriteyoffset = 0;
}
if (!p->spindash)
@ -9763,13 +9767,32 @@ void K_KartEbrakeVisuals(player_t *p)
// update HOLD bubble with numbers based on charge.
if (p->mo->hprev && !P_MobjWasRemoved(p->mo->hprev))
{
const INT16 overcharge = (p->spindash - MAXCHARGETIME);
const boolean desperation = (p->rings <= 0); // desperation spindash
UINT8 frame = min(1 + ((p->spindash*3) / MAXCHARGETIME), 4);
// ?! limit.
if (p->spindash >= MAXCHARGETIME +TICRATE)
if (overcharge >= TICRATE)
frame = 5;
p->mo->hprev->frame = frame|FF_FULLBRIGHT;
if (overcharge >= 0)
{
// overcharged spindash flashes red.
p->mo->hprev->color = SKINCOLOR_MAROON;
p->mo->hprev->colorized = (overcharge % 12) >= 6;
p->mo->hprev->spritexoffset = P_AltFlip(2*FRACUNIT, 2);
}
if (desperation)
{
// desperation spindash shakes VIOLENTLY.
p->mo->hprev->spritexoffset = P_AltFlip(4*FRACUNIT, 2);
p->mo->hprev->spriteyoffset = P_AltFlip(2*FRACUNIT, 1);
}
}
// shake the player as they charge their spindash!