Offroad adjustments

- Restored old offroad leniency timer
- Allow minor boosts in offroad again (drift sparks, rings, drop dash)
- Scale offroad strength with game speed (Hard gets harsher offroad, Easy gets more lenient offroad)
This commit is contained in:
TehRealSalt 2019-05-02 14:57:36 -04:00
parent ff66bd2afb
commit 929d26806c
2 changed files with 7 additions and 13 deletions

View file

@ -1554,15 +1554,11 @@ static void K_UpdateOffroad(player_t *player)
if (offroadstrength)
{
if (K_CheckOffroadCollide(player->mo, player->mo->subsector->sector) && player->kartstuff[k_offroad] == 0)
player->kartstuff[k_offroad] = (TICRATE/2);
player->kartstuff[k_offroad] = TICRATE;
if (player->kartstuff[k_offroad] > 0)
{
offroad = (offroadstrength << FRACBITS) / (TICRATE/2);
//if (player->kartstuff[k_growshrinktimer] > 1) // grow slows down half as fast
// offroad /= 2;
offroad = (offroadstrength << FRACBITS) / TICRATE;
player->kartstuff[k_offroad] += offroad;
}
@ -2169,7 +2165,7 @@ static void K_GetKartBoostPower(player_t *player)
// Offroad is separate, it's difficult to factor it in with a variable value anyway.
if (!(player->kartstuff[k_invincibilitytimer] || player->kartstuff[k_hyudorotimer] || EITHERSNEAKER(player))
&& player->kartstuff[k_offroad] >= 0)
boostpower = FixedDiv(boostpower, player->kartstuff[k_offroad] + FRACUNIT);
boostpower = FixedDiv(boostpower, FixedMul(player->kartstuff[k_offroad] + FRACUNIT, K_GetKartGameSpeedScalar(gamespeed)));
if (player->kartstuff[k_bananadrag] > TICRATE)
boostpower = (4*boostpower)/5;
@ -2189,13 +2185,13 @@ static void K_GetKartBoostPower(player_t *player)
if (player->kartstuff[k_invincibilitytimer]) // Invincibility
ADDBOOST((3*FRACUNIT)/8, 3*FRACUNIT); // + 37.5% top speed, + 300% acceleration
if (player->kartstuff[k_startboost] && !player->kartstuff[k_offroad]) // Startup Boost
if (player->kartstuff[k_startboost]) // Startup Boost
ADDBOOST(FRACUNIT/4, 6*FRACUNIT); // + 25% top speed, + 600% acceleration
if (player->kartstuff[k_driftboost] && !player->kartstuff[k_offroad]) // Drift Boost
if (player->kartstuff[k_driftboost]) // Drift Boost
ADDBOOST(FRACUNIT/4, 4*FRACUNIT); // + 25% top speed, + 400% acceleration
if (player->kartstuff[k_ringboost] && !player->kartstuff[k_offroad]) // Ring Boost
if (player->kartstuff[k_ringboost]) // Ring Boost
ADDBOOST(FRACUNIT/5, 4*FRACUNIT); // + 20% top speed, + 200% acceleration
if (player->kartstuff[k_growshrinktimer] > 0) // Grow

View file

@ -7302,9 +7302,7 @@ void T_Friction(friction_t *f)
// apparently, all I had to do was comment out part of the next line and
// friction works for all mobj's
// (or at least MF_PUSHABLEs, which is all I care about anyway)
if ((!(thing->flags & (MF_NOGRAVITY | MF_NOCLIP)) && thing->z == thing->floorz) && (thing->player
&& (thing->player->kartstuff[k_invincibilitytimer] == 0 && thing->player->kartstuff[k_hyudorotimer] == 0
&& !EITHERSNEAKER(thing->player) && thing->player->kartstuff[k_growshrinktimer] <= 0)))
if (!(thing->flags & (MF_NOGRAVITY | MF_NOCLIP)) && thing->z == thing->floorz)
{
if (f->roverfriction)
{