Nerf ring chains by improving ring burnout performance

Finally its halfed then smoothed down rather then just dropping to 2 then 1.

Makes Ring Chains still exist but less broken since you can't chain as large of sections anymore.

I need to add better visuals and sound design for this since its much more noticable now.
This commit is contained in:
NepDisk 2026-04-12 11:57:58 -04:00
parent 00f5eca7ae
commit 284a86c7b9

View file

@ -9087,9 +9087,11 @@ INT32 K_GetKartRingPower(const player_t *player, boolean boosted)
finalPower += 3;
// If you use alot of rings at a time, you start gaining less ring timer...
if (player->ringtime == finalPower*ringcap)
fixed_t burnStart = finalPower*ringcap;
fixed_t burnEnd = finalPower*(ringcap+(ringcap/2));
if (player->ringtime >= burnStart)
{
if (P_IsLocalPlayer(player))
if (P_IsLocalPlayer(player) && player->ringtime == burnStart)
{
efx_t efx;
S_InitEFXArray(&efx);
@ -9098,14 +9100,12 @@ INT32 K_GetKartRingPower(const player_t *player, boolean boosted)
S_StartSoundAtVolumeEx(NULL, sfx_cdfm66, 255, &efx);
}
}
else if (player->ringtime > finalPower*(ringcap+(ringcap/2)))
{
finalPower = 1;
}
else if (player->ringtime > finalPower*ringcap)
{
finalPower = 2;
fixed_t usage = CLAMP(FixedDiv(player->ringtime - burnStart, burnEnd - burnStart), 0, FRACUNIT);
usage = Easing_OutCubic(usage, finalPower * FRACUNIT, FRACUNIT);
finalPower = max(usage / FRACUNIT, 1);
}
return finalPower;