Only buff bots' ring duration, NOT their boost

T'was an unintentional side effect of other rebalances, bots don't really need the extra speed. It is barely noticeable to me, but figure we might as well cut off a possible source of uncapped speed.
This commit is contained in:
Sally Coolatta 2024-05-02 19:03:00 -04:00
parent 9605abf66c
commit 9600c1945e

View file

@ -3376,6 +3376,28 @@ fixed_t K_GetSpindashChargeSpeed(const player_t *player)
return val; return val;
} }
static fixed_t K_RingDurationBoost(const player_t *player)
{
fixed_t ret = FRACUNIT;
if (K_PlayerUsesBotMovement(player))
{
// x2.0 for Lv. 9
const fixed_t modifier = K_BotMapModifier();
fixed_t add = ((player->botvars.difficulty-1) * modifier) / (DIFFICULTBOT-1);
ret += add;
if (player->botvars.rival == true)
{
// x2.0 for Rival
ret *= 2;
}
}
return ret;
}
// v2 almost broke sliptiding when it fixed turning bugs! // v2 almost broke sliptiding when it fixed turning bugs!
// This value is fine-tuned to feel like v1 again without reverting any of those changes. // This value is fine-tuned to feel like v1 again without reverting any of those changes.
#define SLIPTIDEHANDLING 7*FRACUNIT/8 #define SLIPTIDEHANDLING 7*FRACUNIT/8
@ -3530,7 +3552,12 @@ static void K_GetKartBoostPower(player_t *player)
{ {
// This one's a little special: we add extra top speed per tic of ringboost stored up, to allow for Ring Box to really rocket away. // This one's a little special: we add extra top speed per tic of ringboost stored up, to allow for Ring Box to really rocket away.
// (We compensate when decrementing ringboost to avoid runaway exponential scaling hell.) // (We compensate when decrementing ringboost to avoid runaway exponential scaling hell.)
ADDBOOST(FRACUNIT/4 + (FRACUNIT / 1750 * (player->ringboost)), 4*FRACUNIT, Easing_InCubic(min(FRACUNIT, player->ringboost * FRACUNIT / (TICRATE*12)), 0, 2*SLIPTIDEHANDLING/5)); // + 20% + ???% top speed, + 400% acceleration, +???% handling fixed_t rb = FixedDiv(player->ringboost * FRACUNIT, max(FRACUNIT, K_RingDurationBoost(player)));
ADDBOOST(
FRACUNIT/4 + FixedMul(FRACUNIT / 1750, rb),
4*FRACUNIT,
Easing_InCubic(min(FRACUNIT, rb / (TICRATE*12)), 0, 2*SLIPTIDEHANDLING/5)
); // + 20% + ???% top speed, + 400% acceleration, +???% handling
} }
if (player->eggmanexplode) // Ready-to-explode if (player->eggmanexplode) // Ready-to-explode
@ -10283,18 +10310,9 @@ INT32 K_GetKartRingPower(const player_t *player, boolean boosted)
{ {
fixed_t ringPower = ((9 - player->kartspeed) + (9 - player->kartweight)) * (FRACUNIT/2); fixed_t ringPower = ((9 - player->kartspeed) + (9 - player->kartweight)) * (FRACUNIT/2);
if (boosted == true && K_PlayerUsesBotMovement(player)) if (boosted == true)
{ {
// x2.0 for Lv. 9 ringPower = FixedMul(ringPower, K_RingDurationBoost(player));
const fixed_t modifier = K_BotMapModifier();
fixed_t add = ((player->botvars.difficulty-1) * modifier) / (DIFFICULTBOT-1);
ringPower = FixedMul(ringPower, FRACUNIT + add);
if (player->botvars.rival == true)
{
// x2.0 for Rival
ringPower = FixedMul(ringPower, 2*FRACUNIT);
}
} }
return max(ringPower / FRACUNIT, 1); return max(ringPower / FRACUNIT, 1);