From 2cbcc8f91433df874c58028ee7e42a522b62101d Mon Sep 17 00:00:00 2001
From: Sally Coolatta <tehrealsalt@gmail.com>
Date: Thu, 26 May 2022 00:25:54 -0400
Subject: [PATCH] Adjust acceleration for rubberbanding

Since your acceleration is tied to your top speed, we need to do this to ensure we're ONLY increasing the top speed, and not how fast they make it to that top speed.
---
 src/k_kart.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/k_kart.c b/src/k_kart.c
index a39543711e..0d7ec9cd0b 100644
--- a/src/k_kart.c
+++ b/src/k_kart.c
@@ -3298,11 +3298,18 @@ fixed_t K_GetNewSpeed(player_t *player)
 {
 	const fixed_t accelmax = 4000;
 	const fixed_t p_speed = K_GetKartSpeed(player, true, true);
-	const fixed_t p_accel = K_GetKartAccel(player);
+	fixed_t p_accel = K_GetKartAccel(player);
 
 	fixed_t newspeed, oldspeed, finalspeed;
 
-	oldspeed = R_PointToDist2(0, 0, player->rmomx, player->rmomy); // FixedMul(P_AproxDistance(player->rmomx, player->rmomy), player->mo->scale);
+	if (K_PlayerUsesBotMovement(player) == true && player->botvars.rubberband > 0)
+	{
+		// Acceleration is tied to top speed...
+		// so if we want JUST a top speed boost, we have to do this...
+		p_accel = FixedDiv(p_accel, player->botvars.rubberband);
+	}
+
+	oldspeed = R_PointToDist2(0, 0, player->rmomx, player->rmomy);
 	// Don't calculate the acceleration as ever being above top speed
 	if (oldspeed > p_speed)
 		oldspeed = p_speed;
-- 
GitLab