Minimum speed to get drift sparks

This commit is contained in:
SeventhSentinel 2019-01-06 17:17:52 -05:00
parent 50a6df7563
commit eebdda0833
3 changed files with 16 additions and 5 deletions

View file

@ -351,6 +351,7 @@ typedef enum
// v1.0.2 vars // v1.0.2 vars
k_itemblink, // Item flashing after roulette, prevents Hyudoro stealing AND serves as a mashing indicator k_itemblink, // Item flashing after roulette, prevents Hyudoro stealing AND serves as a mashing indicator
k_itemblinkmode, // Type of flashing: 0 = white (normal), 1 = red (mashing), 2 = rainbow (enhanced items) k_itemblinkmode, // Type of flashing: 0 = white (normal), 1 = red (mashing), 2 = rainbow (enhanced items)
k_getsparks, // Disable drift sparks at low speed, JUST enough to give acceleration the actual headstart above speed
NUMKARTSTUFF NUMKARTSTUFF
} kartstufftype_t; } kartstufftype_t;

View file

@ -8281,7 +8281,8 @@ static const char *const KARTSTUFF_LIST[] = {
"YOUGOTEM", "YOUGOTEM",
"ITEMBLINK", "ITEMBLINK",
"ITEMBLINKMODE" "ITEMBLINKMODE",
"GETSPARKS"
}; };
static const char *const HUDITEMS_LIST[] = { static const char *const HUDITEMS_LIST[] = {

View file

@ -4585,6 +4585,7 @@ INT32 K_GetKartDriftSparkValue(player_t *player)
static void K_KartDrift(player_t *player, boolean onground) static void K_KartDrift(player_t *player, boolean onground)
{ {
fixed_t minspeed = (10 * player->mo->scale);
INT32 dsone = K_GetKartDriftSparkValue(player); INT32 dsone = K_GetKartDriftSparkValue(player);
INT32 dstwo = dsone*2; INT32 dstwo = dsone*2;
INT32 dsthree = dstwo*2; INT32 dsthree = dstwo*2;
@ -4635,14 +4636,14 @@ static void K_KartDrift(player_t *player, boolean onground)
} }
// Drifting: left or right? // Drifting: left or right?
if ((player->cmd.driftturn > 0) && player->speed > FixedMul(10<<16, player->mo->scale) && player->kartstuff[k_jmp] == 1 if ((player->cmd.driftturn > 0) && player->speed > minspeed && player->kartstuff[k_jmp] == 1
&& (player->kartstuff[k_drift] == 0 || player->kartstuff[k_driftend] == 1)) // && player->kartstuff[k_drift] != 1) && (player->kartstuff[k_drift] == 0 || player->kartstuff[k_driftend] == 1)) // && player->kartstuff[k_drift] != 1)
{ {
// Starting left drift // Starting left drift
player->kartstuff[k_drift] = 1; player->kartstuff[k_drift] = 1;
player->kartstuff[k_driftend] = player->kartstuff[k_driftcharge] = 0; player->kartstuff[k_driftend] = player->kartstuff[k_driftcharge] = 0;
} }
else if ((player->cmd.driftturn < 0) && player->speed > FixedMul(10<<16, player->mo->scale) && player->kartstuff[k_jmp] == 1 else if ((player->cmd.driftturn < 0) && player->speed > minspeed && player->kartstuff[k_jmp] == 1
&& (player->kartstuff[k_drift] == 0 || player->kartstuff[k_driftend] == 1)) // && player->kartstuff[k_drift] != -1) && (player->kartstuff[k_drift] == 0 || player->kartstuff[k_driftend] == 1)) // && player->kartstuff[k_drift] != -1)
{ {
// Starting right drift // Starting right drift
@ -4666,6 +4667,8 @@ static void K_KartDrift(player_t *player, boolean onground)
player->kartstuff[k_driftend] = 0; player->kartstuff[k_driftend] = 0;
} }
// Incease/decrease the drift value to continue drifting in that direction // Incease/decrease the drift value to continue drifting in that direction
if (player->kartstuff[k_spinouttimer] == 0 && player->kartstuff[k_jmp] == 1 && onground && player->kartstuff[k_drift] != 0) if (player->kartstuff[k_spinouttimer] == 0 && player->kartstuff[k_jmp] == 1 && onground && player->kartstuff[k_drift] != 0)
{ {
@ -4694,6 +4697,12 @@ static void K_KartDrift(player_t *player, boolean onground)
driftadditive -= abs(player->cmd.driftturn)/75; driftadditive -= abs(player->cmd.driftturn)/75;
} }
// Disable drift-sparks until you're going fast enough
if (player->kartstuff[k_getsparks] == 0)
driftadditive = 0;
if (player->speed > minspeed*2)
player->kartstuff[k_getsparks] = 1;
// This spawns the drift sparks // This spawns the drift sparks
if (player->kartstuff[k_driftcharge] + driftadditive >= dsone) if (player->kartstuff[k_driftcharge] + driftadditive >= dsone)
K_SpawnDriftSparks(player); K_SpawnDriftSparks(player);
@ -4713,11 +4722,11 @@ static void K_KartDrift(player_t *player, boolean onground)
} }
// Stop drifting // Stop drifting
if (player->kartstuff[k_spinouttimer] > 0 // banana peel if (player->kartstuff[k_spinouttimer] > 0 || player->speed < minspeed)
|| player->speed < FixedMul(10<<16, player->mo->scale)) // you're too slow!
{ {
player->kartstuff[k_drift] = player->kartstuff[k_driftcharge] = 0; player->kartstuff[k_drift] = player->kartstuff[k_driftcharge] = 0;
player->kartstuff[k_aizdriftstrat] = player->kartstuff[k_brakedrift] = 0; player->kartstuff[k_aizdriftstrat] = player->kartstuff[k_brakedrift] = 0;
player->kartstuff[k_getsparks] = 0;
} }
if ((!player->kartstuff[k_sneakertimer]) if ((!player->kartstuff[k_sneakertimer])