tiered ringdelay for autoring

This commit is contained in:
Ashnal 2024-04-30 19:54:38 -04:00 committed by James R
parent 633ffb6195
commit 500cfa74de

View file

@ -12607,25 +12607,36 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
if (player->itemflags & IF_USERINGS) if (player->itemflags & IF_USERINGS)
{ {
// Auto-Ring // Auto-Ring
boolean autoring; UINT8 tiereddelay = 5;
player->autoring = false;
if ( if (
player->pflags & PF_AUTORING player->pflags & PF_AUTORING
&& leveltime > starttime && leveltime > starttime
&& !(cmd->buttons & BT_BRAKE) && !(cmd->buttons & BT_BRAKE)
&& K_GetKartButtons(player) && K_GetKartButtons(player)
&& P_IsObjectOnGround(player->mo) && P_IsObjectOnGround(player->mo)
&& (
player->rings > 18
&& FixedDiv(player->speed * 100, K_GetKartSpeed(player, false, true)) < 100*FRACUNIT
|| player->rings > 9
&& FixedDiv(player->speed * 100, K_GetKartSpeed(player, false, true)) < 85*FRACUNIT
||player->rings > 3
&& FixedDiv(player->speed * 100, K_GetKartSpeed(player, false, true)) < 35*FRACUNIT
)
) )
player->autoring = true; {
else fixed_t pspeed = FixedDiv(player->speed * 100, K_GetKartSpeed(player, false, true));
player->autoring = false;
if (player->rings >= 18 && pspeed < 100*FRACUNIT)
{
player->autoring = true;
tiereddelay = 3;
}
else if (player->rings >= 10 && pspeed < 85*FRACUNIT)
{
player->autoring = true;
tiereddelay = 4;
}
else if (player->rings >= 4 && pspeed < 35*FRACUNIT)
{
player->autoring = true;
tiereddelay = 5;
}
else
player->autoring = false;
}
if (((cmd->buttons & BT_ATTACK) || player->autoring) && !player->ringdelay && player->rings > 0) if (((cmd->buttons & BT_ATTACK) || player->autoring) && !player->ringdelay && player->rings > 0)
{ {
@ -12678,7 +12689,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
player->rings--; player->rings--;
if (player->autoring && !(cmd->buttons & BT_ATTACK)) if (player->autoring && !(cmd->buttons & BT_ATTACK))
player->ringdelay = 6; player->ringdelay = tiereddelay;
else else
player->ringdelay = 3; player->ringdelay = 3;
} }