Fix weird stacking speed dropoff issue
Thanks so much Indev!
This commit is contained in:
parent
e9b79efe2d
commit
1897f9d1e7
3 changed files with 7 additions and 4 deletions
|
|
@ -635,6 +635,7 @@ struct player_t
|
|||
|
||||
fixed_t boostpower; // Base boost value, for offroad
|
||||
fixed_t speedboost; // Boost value smoothing for max speed
|
||||
fixed_t prevspeedboost; // Max speed boost value from the last frame
|
||||
fixed_t accelboost; // Boost value smoothing for acceleration
|
||||
angle_t boostangle; // angle set when not spun out OR boosted to determine what direction you should keep going at if you're spun out and boosted.
|
||||
boostinfo_t boostinfo; // Stores values used for setting speed and accel boosts.
|
||||
|
|
|
|||
|
|
@ -3589,7 +3589,6 @@ static void K_GetKartBoostPower(player_t *player)
|
|||
fixed_t finalspeedboost = 0;
|
||||
fixed_t finalaccelboost = 0;
|
||||
UINT8 finalgrade = 0;
|
||||
fixed_t prevspeedboost = player->speedboost;
|
||||
|
||||
if (player->spinouttimer && player->wipeoutslow == 1) // Slow down after you've been bumped
|
||||
{
|
||||
|
|
@ -3686,19 +3685,19 @@ static void K_GetKartBoostPower(player_t *player)
|
|||
player->speedboost = max(finalspeedboost, player->speedboost)/2;
|
||||
player->accelboost = max(finalaccelboost, player->accelboost)/2;
|
||||
}
|
||||
else if (finalspeedboost >= prevspeedboost)
|
||||
else if (finalspeedboost >= player->prevspeedboost)
|
||||
{
|
||||
player->speedboost = max(player->speedboost, finalspeedboost);
|
||||
player->accelboost = max(player->accelboost, finalaccelboost);
|
||||
}
|
||||
else if ((player->aizdriftstrat && abs((player->drift) < 5)) || (K_GetKartButtons(player) & BT_BRAKE))
|
||||
{
|
||||
player->speedboost = max(prevspeedboost - SPEEDBOOSTDROPOFF_BRAKE, min(player->speedboost, MAXVANILLABOOST));
|
||||
player->speedboost = max(player->prevspeedboost - SPEEDBOOSTDROPOFF_BRAKE, min(player->speedboost, MAXVANILLABOOST));
|
||||
player->accelboost = finalaccelboost;
|
||||
}
|
||||
else
|
||||
{
|
||||
player->speedboost = prevspeedboost - SPEEDBOOSTDROPOFF;
|
||||
player->speedboost = max(player->speedboost + (finalspeedboost - player->speedboost) / (TICRATE/2), player->speedboost - SPEEDBOOSTDROPOFF);
|
||||
player->accelboost = finalaccelboost;
|
||||
}
|
||||
}
|
||||
|
|
@ -3718,6 +3717,7 @@ static void K_GetKartBoostPower(player_t *player)
|
|||
|
||||
player->numboosts = finalgrade;
|
||||
K_ClearBoost(player);
|
||||
player->prevspeedboost = player->speedboost;
|
||||
}
|
||||
|
||||
// Returns value based on being Grown or Shrunk otherwise returns FRACUNIT
|
||||
|
|
|
|||
|
|
@ -277,6 +277,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
|||
|
||||
WRITEFIXED(save->p, players[i].boostpower);
|
||||
WRITEFIXED(save->p, players[i].speedboost);
|
||||
WRITEFIXED(save->p, players[i].prevspeedboost);
|
||||
WRITEFIXED(save->p, players[i].accelboost);
|
||||
WRITEANGLE(save->p, players[i].boostangle);
|
||||
WRITEUINT8(save->p, players[i].numsneakers);
|
||||
|
|
@ -605,6 +606,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
|||
|
||||
players[i].boostpower = READFIXED(save->p);
|
||||
players[i].speedboost = READFIXED(save->p);
|
||||
players[i].prevspeedboost = READFIXED(save->p);
|
||||
players[i].accelboost = READFIXED(save->p);
|
||||
players[i].boostangle = READANGLE(save->p);
|
||||
players[i].numsneakers = READUINT8(save->p);
|
||||
|
|
|
|||
Loading…
Reference in a new issue