From 500cfa74de299684b7723c9e465399e60d2b6e5a Mon Sep 17 00:00:00 2001 From: Ashnal <ashnal52@gmail.com> Date: Tue, 30 Apr 2024 19:54:38 -0400 Subject: [PATCH] tiered ringdelay for autoring --- src/k_kart.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 151a3f16d6..b701aec2e8 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -12607,25 +12607,36 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (player->itemflags & IF_USERINGS) { // Auto-Ring - boolean autoring; + UINT8 tiereddelay = 5; + player->autoring = false; if ( player->pflags & PF_AUTORING && leveltime > starttime && !(cmd->buttons & BT_BRAKE) && K_GetKartButtons(player) && 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 - player->autoring = false; + { + fixed_t pspeed = FixedDiv(player->speed * 100, K_GetKartSpeed(player, false, true)); + + 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) { @@ -12678,7 +12689,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->rings--; if (player->autoring && !(cmd->buttons & BT_ATTACK)) - player->ringdelay = 6; + player->ringdelay = tiereddelay; else player->ringdelay = 3; } -- GitLab