mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Give bots friction rubberband again
This commit is contained in:
parent
63d156b942
commit
9561ec69bf
2 changed files with 18 additions and 4 deletions
20
src/k_kart.c
20
src/k_kart.c
|
|
@ -3453,7 +3453,7 @@ fixed_t K_GetNewSpeed(player_t *player)
|
||||||
// Don't calculate the acceleration as ever being above top speed
|
// Don't calculate the acceleration as ever being above top speed
|
||||||
if (oldspeed > p_speed)
|
if (oldspeed > p_speed)
|
||||||
oldspeed = p_speed;
|
oldspeed = p_speed;
|
||||||
newspeed = FixedDiv(FixedDiv(FixedMul(oldspeed, accelmax - p_accel) + FixedMul(p_speed, p_accel), accelmax), K_PlayerBaseFriction(ORIG_FRICTION));
|
newspeed = FixedDiv(FixedDiv(FixedMul(oldspeed, accelmax - p_accel) + FixedMul(p_speed, p_accel), accelmax), K_PlayerBaseFriction(player, ORIG_FRICTION));
|
||||||
|
|
||||||
finalspeed = newspeed - oldspeed;
|
finalspeed = newspeed - oldspeed;
|
||||||
|
|
||||||
|
|
@ -10014,7 +10014,7 @@ static void K_AirFailsafe(player_t *player)
|
||||||
//
|
//
|
||||||
// K_PlayerBaseFriction
|
// K_PlayerBaseFriction
|
||||||
//
|
//
|
||||||
fixed_t K_PlayerBaseFriction(fixed_t original)
|
fixed_t K_PlayerBaseFriction(player_t *player, fixed_t original)
|
||||||
{
|
{
|
||||||
fixed_t frict = original;
|
fixed_t frict = original;
|
||||||
|
|
||||||
|
|
@ -10022,6 +10022,20 @@ fixed_t K_PlayerBaseFriction(fixed_t original)
|
||||||
{
|
{
|
||||||
frict -= FRACUNIT >> 4;
|
frict -= FRACUNIT >> 4;
|
||||||
}
|
}
|
||||||
|
else if (K_PlayerUsesBotMovement(player) == true)
|
||||||
|
{
|
||||||
|
// A bit extra friction to help them without drifting.
|
||||||
|
// Remove this line once they can drift.
|
||||||
|
frict -= FRACUNIT >> 5;
|
||||||
|
|
||||||
|
// Bots gain more traction as they rubberband.
|
||||||
|
if (player->botvars.rubberband > FRACUNIT)
|
||||||
|
{
|
||||||
|
static const fixed_t extraFriction = FRACUNIT >> 5;
|
||||||
|
const fixed_t mul = player->botvars.rubberband - FRACUNIT;
|
||||||
|
frict -= FixedMul(extraFriction, mul);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (frict > FRACUNIT) { frict = FRACUNIT; }
|
if (frict > FRACUNIT) { frict = FRACUNIT; }
|
||||||
if (frict < 0) { frict = 0; }
|
if (frict < 0) { frict = 0; }
|
||||||
|
|
@ -10034,7 +10048,7 @@ fixed_t K_PlayerBaseFriction(fixed_t original)
|
||||||
//
|
//
|
||||||
void K_AdjustPlayerFriction(player_t *player)
|
void K_AdjustPlayerFriction(player_t *player)
|
||||||
{
|
{
|
||||||
const fixed_t prevfriction = K_PlayerBaseFriction(player->mo->friction);
|
const fixed_t prevfriction = K_PlayerBaseFriction(player, player->mo->friction);
|
||||||
|
|
||||||
if (P_IsObjectOnGround(player->mo) == false)
|
if (P_IsObjectOnGround(player->mo) == false)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ fixed_t K_3dKartMovement(player_t *player);
|
||||||
boolean K_PlayerEBrake(player_t *player);
|
boolean K_PlayerEBrake(player_t *player);
|
||||||
SINT8 K_Sliptiding(player_t *player);
|
SINT8 K_Sliptiding(player_t *player);
|
||||||
boolean K_FastFallBounce(player_t *player);
|
boolean K_FastFallBounce(player_t *player);
|
||||||
fixed_t K_PlayerBaseFriction(fixed_t original);
|
fixed_t K_PlayerBaseFriction(player_t *player, fixed_t original);
|
||||||
void K_AdjustPlayerFriction(player_t *player);
|
void K_AdjustPlayerFriction(player_t *player);
|
||||||
void K_MoveKartPlayer(player_t *player, boolean onground);
|
void K_MoveKartPlayer(player_t *player, boolean onground);
|
||||||
void K_CheckSpectateStatus(void);
|
void K_CheckSpectateStatus(void);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue