mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-10 10:02:41 +00:00
Try out boost stacking
This commit is contained in:
parent
5507a41d64
commit
0f4fd73533
6 changed files with 94 additions and 79 deletions
|
|
@ -333,6 +333,7 @@ typedef enum
|
||||||
k_stolentimer, // You are being stolen from, this is your timer
|
k_stolentimer, // You are being stolen from, this is your timer
|
||||||
k_superring, // Spawn rings on top of you every tic!
|
k_superring, // Spawn rings on top of you every tic!
|
||||||
k_sneakertimer, // Duration of the Sneaker Boost itself
|
k_sneakertimer, // Duration of the Sneaker Boost itself
|
||||||
|
k_levelbooster, // Duration of a level booster's boost (same as sneaker, but separated for )
|
||||||
k_growshrinktimer, // > 0 = Big, < 0 = small
|
k_growshrinktimer, // > 0 = Big, < 0 = small
|
||||||
k_squishedtimer, // Squished frame timer
|
k_squishedtimer, // Squished frame timer
|
||||||
k_rocketsneakertimer, // Rocket Sneaker duration timer
|
k_rocketsneakertimer, // Rocket Sneaker duration timer
|
||||||
|
|
@ -365,6 +366,10 @@ typedef enum
|
||||||
|
|
||||||
NUMKARTSTUFF
|
NUMKARTSTUFF
|
||||||
} kartstufftype_t;
|
} kartstufftype_t;
|
||||||
|
|
||||||
|
// QUICKLY GET EITHER SNEAKER OR LEVEL BOOSTER SINCE THEY ARE FUNCTIONALLY IDENTICAL
|
||||||
|
#define EITHERSNEAKER(p) (p->kartstuff[k_sneakertimer] || p->kartstuff[k_levelbooster])
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
#define WEP_AUTO 1
|
#define WEP_AUTO 1
|
||||||
|
|
|
||||||
|
|
@ -1404,7 +1404,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
||||||
{
|
{
|
||||||
// forward with key or button // SRB2kart - we use an accel/brake instead of forward/backward.
|
// forward with key or button // SRB2kart - we use an accel/brake instead of forward/backward.
|
||||||
axis = JoyAxis(AXISMOVE, ssplayer);
|
axis = JoyAxis(AXISMOVE, ssplayer);
|
||||||
if (InputDown(gc_accelerate, ssplayer) || (gamepadjoystickmove && axis > 0) || player->kartstuff[k_sneakertimer])
|
if (InputDown(gc_accelerate, ssplayer) || (gamepadjoystickmove && axis > 0) || EITHERSNEAKER(player))
|
||||||
{
|
{
|
||||||
cmd->buttons |= BT_ACCELERATE;
|
cmd->buttons |= BT_ACCELERATE;
|
||||||
forward = forwardmove[1]; // 50
|
forward = forwardmove[1]; // 50
|
||||||
|
|
@ -1557,7 +1557,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
||||||
|| (leveltime > starttime && (cmd->buttons & BT_ACCELERATE && cmd->buttons & BT_BRAKE)) // Rubber-burn turn
|
|| (leveltime > starttime && (cmd->buttons & BT_ACCELERATE && cmd->buttons & BT_BRAKE)) // Rubber-burn turn
|
||||||
|| (player->kartstuff[k_respawn]) // Respawning
|
|| (player->kartstuff[k_respawn]) // Respawning
|
||||||
|| (player->spectator || objectplacing)) // Not a physical player
|
|| (player->spectator || objectplacing)) // Not a physical player
|
||||||
&& !(player->kartstuff[k_spinouttimer] && player->kartstuff[k_sneakertimer])) // Spinning and boosting cancels out turning
|
&& !(player->kartstuff[k_spinouttimer] && EITHERSNEAKER(player))) // Spinning and boosting cancels out turning
|
||||||
lang += (cmd->angleturn<<16);
|
lang += (cmd->angleturn<<16);
|
||||||
|
|
||||||
cmd->angleturn = (INT16)(lang >> 16);
|
cmd->angleturn = (INT16)(lang >> 16);
|
||||||
|
|
@ -4606,7 +4606,7 @@ void G_ReadDemoTiccmd(ticcmd_t *cmd, INT32 playernum)
|
||||||
|| (leveltime > starttime && (cmd->buttons & BT_ACCELERATE && cmd->buttons & BT_BRAKE)) // Rubber-burn turn
|
|| (leveltime > starttime && (cmd->buttons & BT_ACCELERATE && cmd->buttons & BT_BRAKE)) // Rubber-burn turn
|
||||||
|| (players[displayplayer].kartstuff[k_respawn]) // Respawning
|
|| (players[displayplayer].kartstuff[k_respawn]) // Respawning
|
||||||
|| (players[displayplayer].spectator || objectplacing)) // Not a physical player
|
|| (players[displayplayer].spectator || objectplacing)) // Not a physical player
|
||||||
&& !(players[displayplayer].kartstuff[k_spinouttimer] && players[displayplayer].kartstuff[k_sneakertimer])) // Spinning and boosting cancels out spinout
|
&& !(players[displayplayer].kartstuff[k_spinouttimer] && (players[displayplayer].kartstuff[k_sneakertimer] || players[displayplayer].kartstuff[k_levelbooster]))) // Spinning and boosting cancels out spinout
|
||||||
localangle += (cmd->angleturn<<16);
|
localangle += (cmd->angleturn<<16);
|
||||||
|
|
||||||
if (!(demoflags & DF_GHOST) && *demo_p == DEMOMARKER)
|
if (!(demoflags & DF_GHOST) && *demo_p == DEMOMARKER)
|
||||||
|
|
|
||||||
147
src/k_kart.c
147
src/k_kart.c
|
|
@ -1943,8 +1943,10 @@ void K_MomentumToFacing(player_t *player)
|
||||||
// sets k_boostpower, k_speedboost, and k_accelboost to whatever we need it to be
|
// sets k_boostpower, k_speedboost, and k_accelboost to whatever we need it to be
|
||||||
static void K_GetKartBoostPower(player_t *player)
|
static void K_GetKartBoostPower(player_t *player)
|
||||||
{
|
{
|
||||||
|
fixed_t sneaker = 0;
|
||||||
fixed_t boostpower = FRACUNIT;
|
fixed_t boostpower = FRACUNIT;
|
||||||
fixed_t speedboost = 0, accelboost = 0;
|
fixed_t speedboost = 0, accelboost = 0;
|
||||||
|
UINT8 boostfactor = 1;
|
||||||
|
|
||||||
if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow] == 1) // Slow down after you've been bumped
|
if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow] == 1) // Slow down after you've been bumped
|
||||||
{
|
{
|
||||||
|
|
@ -1952,81 +1954,66 @@ static void K_GetKartBoostPower(player_t *player)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LOVELY magic numbers...
|
||||||
|
switch (gamespeed)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
sneaker = 53740+768;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sneaker = 17294+768;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sneaker = 32768;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Offroad is separate, it's difficult to factor it in with a variable value anyway.
|
// Offroad is separate, it's difficult to factor it in with a variable value anyway.
|
||||||
if (!(player->kartstuff[k_invincibilitytimer] || player->kartstuff[k_hyudorotimer] || player->kartstuff[k_sneakertimer])
|
if (!(player->kartstuff[k_invincibilitytimer] || player->kartstuff[k_hyudorotimer] || EITHERSNEAKER(player))
|
||||||
&& player->kartstuff[k_offroad] >= 0)
|
&& player->kartstuff[k_offroad] >= 0)
|
||||||
boostpower = FixedDiv(boostpower, player->kartstuff[k_offroad] + FRACUNIT);
|
boostpower = FixedDiv(boostpower, player->kartstuff[k_offroad] + FRACUNIT);
|
||||||
|
|
||||||
if (player->kartstuff[k_bananadrag] > TICRATE)
|
if (player->kartstuff[k_bananadrag] > TICRATE)
|
||||||
boostpower = (4*boostpower)/5;
|
boostpower = (4*boostpower)/5;
|
||||||
|
|
||||||
// Banana drag/offroad dust
|
#define ADDBOOST(s,a) { \
|
||||||
if (boostpower < FRACUNIT
|
speedboost += (s) / boostfactor; \
|
||||||
&& player->mo && P_IsObjectOnGround(player->mo)
|
accelboost += (a) / boostfactor; \
|
||||||
&& player->speed > 0
|
boostfactor++; \
|
||||||
&& !player->spectator)
|
}
|
||||||
{
|
|
||||||
K_SpawnWipeoutTrail(player->mo, true);
|
if (player->kartstuff[k_levelbooster]) // Level boosters
|
||||||
if (leveltime % 6 == 0)
|
ADDBOOST(sneaker, 8*FRACUNIT); // + 800% acceleration, varying top speed
|
||||||
S_StartSound(player->mo, sfx_cdfm70);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player->kartstuff[k_sneakertimer]) // Sneaker
|
if (player->kartstuff[k_sneakertimer]) // Sneaker
|
||||||
{
|
ADDBOOST(sneaker, 8*FRACUNIT); // + 800% acceleration, varying top speed
|
||||||
switch (gamespeed)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
speedboost = max(speedboost, 53740+768);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
speedboost = max(speedboost, 17294+768);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
speedboost = max(speedboost, 32768);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
accelboost = max(accelboost, 8*FRACUNIT); // + 800%
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player->kartstuff[k_invincibilitytimer]) // Invincibility
|
if (player->kartstuff[k_invincibilitytimer]) // Invincibility
|
||||||
{
|
ADDBOOST((3*FRACUNIT)/8, 3*FRACUNIT); // + 37.5% top speed, + 300% acceleration
|
||||||
speedboost = max(speedboost, (3*FRACUNIT)/8); // + 37.5%
|
|
||||||
accelboost = max(accelboost, 3*FRACUNIT); // + 300%
|
if (player->kartstuff[k_startboost]) // Startup Boost
|
||||||
}
|
ADDBOOST(FRACUNIT/4, 6*FRACUNIT); // + 25% top speed, + 600% acceleration
|
||||||
|
|
||||||
|
if (player->kartstuff[k_driftboost]) // Drift Boost
|
||||||
|
ADDBOOST(FRACUNIT/4, 4*FRACUNIT); // + 25% top speed, + 400% acceleration
|
||||||
|
|
||||||
|
if (player->kartstuff[k_ringboost]) // Ring Boost
|
||||||
|
ADDBOOST(FRACUNIT/4, 4*FRACUNIT); // + 20% top speed, + 200% acceleration
|
||||||
|
|
||||||
if (player->kartstuff[k_growshrinktimer] > 0) // Grow
|
if (player->kartstuff[k_growshrinktimer] > 0) // Grow
|
||||||
{
|
{
|
||||||
speedboost = max(speedboost, FRACUNIT/5); // + 20%
|
// Grow's design is weird with booster stacking.
|
||||||
|
// We'll see how to replace its design BEFORE v2 gets released.
|
||||||
|
speedboost += (FRACUNIT/5); // + 20%
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->kartstuff[k_ringboost]) // Ring Boost
|
|
||||||
{
|
|
||||||
speedboost = max(speedboost, FRACUNIT/5); // + 20%
|
|
||||||
accelboost = max(accelboost, 2*FRACUNIT); // + 200%
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player->kartstuff[k_driftboost]) // Drift Boost
|
|
||||||
{
|
|
||||||
speedboost = max(speedboost, FRACUNIT/4); // + 25%
|
|
||||||
accelboost = max(accelboost, 4*FRACUNIT); // + 400%
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player->kartstuff[k_startboost]) // Startup Boost
|
|
||||||
{
|
|
||||||
speedboost = max(speedboost, FRACUNIT/4); // + 25%
|
|
||||||
accelboost = max(accelboost, 6*FRACUNIT); // + 300%
|
|
||||||
}
|
|
||||||
|
|
||||||
// don't average them anymore, this would make a small boost and a high boost less useful
|
|
||||||
// just take the highest we want instead
|
|
||||||
|
|
||||||
player->kartstuff[k_boostpower] = boostpower;
|
player->kartstuff[k_boostpower] = boostpower;
|
||||||
|
|
||||||
// value smoothing
|
// value smoothing
|
||||||
if (speedboost > player->kartstuff[k_speedboost])
|
if (speedboost > player->kartstuff[k_speedboost])
|
||||||
player->kartstuff[k_speedboost] = speedboost;
|
player->kartstuff[k_speedboost] = speedboost;
|
||||||
else
|
else
|
||||||
player->kartstuff[k_speedboost] += (speedboost - player->kartstuff[k_speedboost])/(TICRATE/2);
|
player->kartstuff[k_speedboost] += (speedboost - player->kartstuff[k_speedboost]) / (TICRATE/2);
|
||||||
|
|
||||||
player->kartstuff[k_accelboost] = accelboost;
|
player->kartstuff[k_accelboost] = accelboost;
|
||||||
}
|
}
|
||||||
|
|
@ -2235,7 +2222,8 @@ void K_SpinPlayer(player_t *player, mobj_t *source, INT32 type, mobj_t *inflicto
|
||||||
if (source && source != player->mo && source->player)
|
if (source && source != player->mo && source->player)
|
||||||
K_PlayHitEmSound(source);
|
K_PlayHitEmSound(source);
|
||||||
|
|
||||||
//player->kartstuff[k_sneakertimer] = 0;
|
player->kartstuff[k_sneakertimer] = 0;
|
||||||
|
//player->kartstuff[k_levelbooster] = 0;
|
||||||
player->kartstuff[k_driftboost] = 0;
|
player->kartstuff[k_driftboost] = 0;
|
||||||
player->kartstuff[k_ringboost] = 0;
|
player->kartstuff[k_ringboost] = 0;
|
||||||
|
|
||||||
|
|
@ -2378,6 +2366,7 @@ void K_SquishPlayer(player_t *player, mobj_t *source, mobj_t *inflictor)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
player->kartstuff[k_sneakertimer] = 0;
|
player->kartstuff[k_sneakertimer] = 0;
|
||||||
|
player->kartstuff[k_levelbooster] = 0;
|
||||||
player->kartstuff[k_driftboost] = 0;
|
player->kartstuff[k_driftboost] = 0;
|
||||||
player->kartstuff[k_ringboost] = 0;
|
player->kartstuff[k_ringboost] = 0;
|
||||||
|
|
||||||
|
|
@ -2504,6 +2493,7 @@ void K_ExplodePlayer(player_t *player, mobj_t *source, mobj_t *inflictor) // A b
|
||||||
player->mo->momx = player->mo->momy = 0;
|
player->mo->momx = player->mo->momy = 0;
|
||||||
|
|
||||||
player->kartstuff[k_sneakertimer] = 0;
|
player->kartstuff[k_sneakertimer] = 0;
|
||||||
|
player->kartstuff[k_levelbooster] = 0;
|
||||||
player->kartstuff[k_driftboost] = 0;
|
player->kartstuff[k_driftboost] = 0;
|
||||||
player->kartstuff[k_ringboost] = 0;
|
player->kartstuff[k_ringboost] = 0;
|
||||||
|
|
||||||
|
|
@ -3673,7 +3663,7 @@ void K_DoSneaker(player_t *player, INT32 type)
|
||||||
player->kartstuff[k_destboostcam] = FixedMul(FRACUNIT, FixedDiv((intendedboost - player->kartstuff[k_speedboost]), intendedboost));
|
player->kartstuff[k_destboostcam] = FixedMul(FRACUNIT, FixedDiv((intendedboost - player->kartstuff[k_speedboost]), intendedboost));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!player->kartstuff[k_sneakertimer])
|
if (!EITHERSNEAKER(player))
|
||||||
{
|
{
|
||||||
if (type == 2)
|
if (type == 2)
|
||||||
{
|
{
|
||||||
|
|
@ -3701,14 +3691,15 @@ void K_DoSneaker(player_t *player, INT32 type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player->kartstuff[k_sneakertimer] = sneakertime;
|
|
||||||
|
|
||||||
if (type != 0)
|
if (type != 0)
|
||||||
{
|
{
|
||||||
player->pflags |= PF_ATTACKDOWN;
|
player->pflags |= PF_ATTACKDOWN;
|
||||||
K_PlayBoostTaunt(player->mo);
|
K_PlayBoostTaunt(player->mo);
|
||||||
player->powers[pw_flashing] = 0; // Stop flashing after boosting
|
player->powers[pw_flashing] = 0; // Stop flashing after boosting
|
||||||
|
player->kartstuff[k_sneakertimer] = sneakertime;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
player->kartstuff[k_levelbooster] = sneakertime;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void K_DoShrink(player_t *user)
|
static void K_DoShrink(player_t *user)
|
||||||
|
|
@ -3787,10 +3778,10 @@ void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound)
|
||||||
thrust = 72<<FRACBITS;
|
thrust = 72<<FRACBITS;
|
||||||
if (mo->player->kartstuff[k_pogospring] != 2)
|
if (mo->player->kartstuff[k_pogospring] != 2)
|
||||||
{
|
{
|
||||||
if (mo->player->kartstuff[k_sneakertimer])
|
if (EITHERSNEAKER(mo->player))
|
||||||
thrust = FixedMul(thrust, 5*FRACUNIT/4);
|
thrust = FixedMul(thrust, (5*FRACUNIT)/4);
|
||||||
else if (mo->player->kartstuff[k_invincibilitytimer])
|
else if (mo->player->kartstuff[k_invincibilitytimer])
|
||||||
thrust = FixedMul(thrust, 9*FRACUNIT/8);
|
thrust = FixedMul(thrust, (9*FRACUNIT)/8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -4634,8 +4625,20 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
K_UpdateEngineSounds(player, cmd); // Thanks, VAda!
|
K_UpdateEngineSounds(player, cmd); // Thanks, VAda!
|
||||||
K_GetKartBoostPower(player);
|
K_GetKartBoostPower(player);
|
||||||
|
|
||||||
|
// Banana drag/offroad dust
|
||||||
|
if (player->mo && !player->spectator
|
||||||
|
&& P_IsObjectOnGround(player->mo) && player->speed > 0
|
||||||
|
&& player->kartstuff[k_boostpower] < FRACUNIT)
|
||||||
|
{
|
||||||
|
K_SpawnWipeoutTrail(player->mo, true);
|
||||||
|
if (leveltime % 6 == 0)
|
||||||
|
S_StartSound(player->mo, sfx_cdfm70);
|
||||||
|
}
|
||||||
|
|
||||||
// Speed lines
|
// Speed lines
|
||||||
if ((player->kartstuff[k_sneakertimer] || player->kartstuff[k_ringboost] || player->kartstuff[k_driftboost] || player->kartstuff[k_startboost]) && player->speed > 0)
|
if ((EITHERSNEAKER(player) || player->kartstuff[k_ringboost]
|
||||||
|
|| player->kartstuff[k_driftboost] || player->kartstuff[k_startboost])
|
||||||
|
&& player->speed > 0)
|
||||||
{
|
{
|
||||||
mobj_t *fast = P_SpawnMobj(player->mo->x + (P_RandomRange(-36,36) * player->mo->scale),
|
mobj_t *fast = P_SpawnMobj(player->mo->x + (P_RandomRange(-36,36) * player->mo->scale),
|
||||||
player->mo->y + (P_RandomRange(-36,36) * player->mo->scale),
|
player->mo->y + (P_RandomRange(-36,36) * player->mo->scale),
|
||||||
|
|
@ -4755,7 +4758,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
{
|
{
|
||||||
if ((P_IsObjectOnGround(player->mo)
|
if ((P_IsObjectOnGround(player->mo)
|
||||||
|| (player->kartstuff[k_spinouttype] != 0))
|
|| (player->kartstuff[k_spinouttype] != 0))
|
||||||
&& (player->kartstuff[k_sneakertimer] == 0))
|
&& (!EITHERSNEAKER(player)))
|
||||||
{
|
{
|
||||||
player->kartstuff[k_spinouttimer]--;
|
player->kartstuff[k_spinouttimer]--;
|
||||||
if (player->kartstuff[k_wipeoutslow] > 1)
|
if (player->kartstuff[k_wipeoutslow] > 1)
|
||||||
|
|
@ -4797,11 +4800,13 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
player->kartstuff[k_ringboost]--;
|
player->kartstuff[k_ringboost]--;
|
||||||
|
|
||||||
if (player->kartstuff[k_sneakertimer])
|
if (player->kartstuff[k_sneakertimer])
|
||||||
{
|
|
||||||
player->kartstuff[k_sneakertimer]--;
|
player->kartstuff[k_sneakertimer]--;
|
||||||
if (player->kartstuff[k_wipeoutslow] > 0 && player->kartstuff[k_wipeoutslow] < wipeoutslowtime+1)
|
|
||||||
player->kartstuff[k_wipeoutslow] = wipeoutslowtime+1;
|
if (player->kartstuff[k_levelbooster])
|
||||||
}
|
player->kartstuff[k_levelbooster]--;
|
||||||
|
|
||||||
|
if (EITHERSNEAKER(player) && player->kartstuff[k_wipeoutslow] > 0 && player->kartstuff[k_wipeoutslow] < wipeoutslowtime+1)
|
||||||
|
player->kartstuff[k_wipeoutslow] = wipeoutslowtime+1;
|
||||||
|
|
||||||
if (player->kartstuff[k_floorboost])
|
if (player->kartstuff[k_floorboost])
|
||||||
player->kartstuff[k_floorboost]--;
|
player->kartstuff[k_floorboost]--;
|
||||||
|
|
@ -5084,7 +5089,7 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
|
||||||
|
|
||||||
turnvalue = FixedMul(turnvalue, adjustangle); // Weight has a small effect on turning
|
turnvalue = FixedMul(turnvalue, adjustangle); // Weight has a small effect on turning
|
||||||
|
|
||||||
if (player->kartstuff[k_invincibilitytimer] || player->kartstuff[k_sneakertimer] || player->kartstuff[k_growshrinktimer] > 0)
|
if (EITHERSNEAKER(player) || player->kartstuff[k_invincibilitytimer] || player->kartstuff[k_growshrinktimer] > 0)
|
||||||
turnvalue = FixedMul(turnvalue, FixedDiv(5*FRACUNIT, 4*FRACUNIT));
|
turnvalue = FixedMul(turnvalue, FixedDiv(5*FRACUNIT, 4*FRACUNIT));
|
||||||
|
|
||||||
return turnvalue;
|
return turnvalue;
|
||||||
|
|
@ -5212,7 +5217,11 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable drift-sparks until you're going fast enough
|
// Disable drift-sparks until you're going fast enough
|
||||||
if (player->kartstuff[k_getsparks] == 0 || (player->kartstuff[k_offroad] && !player->kartstuff[k_invincibilitytimer] && !player->kartstuff[k_hyudorotimer] && !player->kartstuff[k_sneakertimer]))
|
if (player->kartstuff[k_getsparks] == 0
|
||||||
|
|| (player->kartstuff[k_offroad]
|
||||||
|
&& !player->kartstuff[k_invincibilitytimer]
|
||||||
|
&& !player->kartstuff[k_hyudorotimer]
|
||||||
|
&& !EITHERSNEAKER(player)))
|
||||||
driftadditive = 0;
|
driftadditive = 0;
|
||||||
if (player->speed > minspeed*2)
|
if (player->speed > minspeed*2)
|
||||||
player->kartstuff[k_getsparks] = 1;
|
player->kartstuff[k_getsparks] = 1;
|
||||||
|
|
@ -5243,7 +5252,7 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
player->kartstuff[k_getsparks] = 0;
|
player->kartstuff[k_getsparks] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((!player->kartstuff[k_sneakertimer])
|
if ((!EITHERSNEAKER(player))
|
||||||
|| (!player->cmd.driftturn)
|
|| (!player->cmd.driftturn)
|
||||||
|| (player->cmd.driftturn > 0) != (player->kartstuff[k_aizdriftstrat] > 0))
|
|| (player->cmd.driftturn > 0) != (player->kartstuff[k_aizdriftstrat] > 0))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -8270,9 +8270,10 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
|
|
||||||
if (p)
|
if (p)
|
||||||
{
|
{
|
||||||
if (p->kartstuff[k_sneakertimer] > mobj->movecount)
|
if (p->kartstuff[k_sneakertimer] > mobj->movecount
|
||||||
|
|| p->kartstuff[k_levelbooster] > mobj->movecount)
|
||||||
P_SetMobjState(mobj, S_BOOSTFLAME);
|
P_SetMobjState(mobj, S_BOOSTFLAME);
|
||||||
mobj->movecount = p->kartstuff[k_sneakertimer];
|
mobj->movecount = max(p->kartstuff[k_sneakertimer], p->kartstuff[k_levelbooster]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7303,7 +7303,7 @@ void T_Friction(friction_t *f)
|
||||||
// (or at least MF_PUSHABLEs, which is all I care about anyway)
|
// (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
|
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
|
&& (thing->player->kartstuff[k_invincibilitytimer] == 0 && thing->player->kartstuff[k_hyudorotimer] == 0
|
||||||
&& thing->player->kartstuff[k_sneakertimer] == 0 && thing->player->kartstuff[k_growshrinktimer] <= 0)))
|
&& !EITHERSNEAKER(thing->player) && thing->player->kartstuff[k_growshrinktimer] <= 0)))
|
||||||
{
|
{
|
||||||
if (f->roverfriction)
|
if (f->roverfriction)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4762,7 +4762,7 @@ static void P_3dMovement(player_t *player)
|
||||||
if ((player->exiting || mapreset) || player->pflags & PF_STASIS || player->kartstuff[k_spinouttimer]) // pw_introcam?
|
if ((player->exiting || mapreset) || player->pflags & PF_STASIS || player->kartstuff[k_spinouttimer]) // pw_introcam?
|
||||||
{
|
{
|
||||||
cmd->forwardmove = cmd->sidemove = 0;
|
cmd->forwardmove = cmd->sidemove = 0;
|
||||||
if (player->kartstuff[k_sneakertimer])
|
if (EITHERSNEAKER(player))
|
||||||
cmd->forwardmove = 50;
|
cmd->forwardmove = 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6596,7 +6596,7 @@ static void P_MovePlayer(player_t *player)
|
||||||
|| (leveltime > starttime && (cmd->buttons & BT_ACCELERATE && cmd->buttons & BT_BRAKE)) // Rubber-burn turn
|
|| (leveltime > starttime && (cmd->buttons & BT_ACCELERATE && cmd->buttons & BT_BRAKE)) // Rubber-burn turn
|
||||||
|| (player->kartstuff[k_respawn]) // Respawning
|
|| (player->kartstuff[k_respawn]) // Respawning
|
||||||
|| (player->spectator || objectplacing)) // Not a physical player
|
|| (player->spectator || objectplacing)) // Not a physical player
|
||||||
&& !(player->kartstuff[k_spinouttimer] && player->kartstuff[k_sneakertimer])) // Spinning and boosting cancels out turning
|
&& !(player->kartstuff[k_spinouttimer] && EITHERSNEAKER(player))) // Spinning and boosting cancels out turning
|
||||||
{
|
{
|
||||||
player->lturn_max[leveltime%MAXPREDICTTICS] = K_GetKartTurnValue(player, KART_FULLTURN)+1;
|
player->lturn_max[leveltime%MAXPREDICTTICS] = K_GetKartTurnValue(player, KART_FULLTURN)+1;
|
||||||
player->rturn_max[leveltime%MAXPREDICTTICS] = K_GetKartTurnValue(player, -KART_FULLTURN)-1;
|
player->rturn_max[leveltime%MAXPREDICTTICS] = K_GetKartTurnValue(player, -KART_FULLTURN)-1;
|
||||||
|
|
@ -6993,7 +6993,7 @@ static void P_MovePlayer(player_t *player)
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
|
||||||
// SRB2kart - Drifting smoke and fire
|
// SRB2kart - Drifting smoke and fire
|
||||||
if (player->kartstuff[k_sneakertimer] > 0 && onground && (leveltime & 1))
|
if (EITHERSNEAKER(player) && onground && (leveltime & 1))
|
||||||
K_SpawnBoostTrail(player);
|
K_SpawnBoostTrail(player);
|
||||||
|
|
||||||
if (player->kartstuff[k_invincibilitytimer] > 0)
|
if (player->kartstuff[k_invincibilitytimer] > 0)
|
||||||
|
|
@ -9251,7 +9251,7 @@ void P_PlayerThink(player_t *player)
|
||||||
#if 1
|
#if 1
|
||||||
// "Blur" a bit when you have speed shoes and are going fast enough
|
// "Blur" a bit when you have speed shoes and are going fast enough
|
||||||
if ((player->powers[pw_super] || player->powers[pw_sneakers]
|
if ((player->powers[pw_super] || player->powers[pw_sneakers]
|
||||||
|| player->kartstuff[k_driftboost] || player->kartstuff[k_ringboost] || player->kartstuff[k_sneakertimer] || player->kartstuff[k_startboost])
|
|| EITHERSNEAKER(player) || player->kartstuff[k_driftboost] || player->kartstuff[k_ringboost] || player->kartstuff[k_startboost])
|
||||||
&& !player->kartstuff[k_invincibilitytimer] // SRB2kart
|
&& !player->kartstuff[k_invincibilitytimer] // SRB2kart
|
||||||
&& (player->speed + abs(player->mo->momz)) > FixedMul(20*FRACUNIT,player->mo->scale))
|
&& (player->speed + abs(player->mo->momz)) > FixedMul(20*FRACUNIT,player->mo->scale))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue