mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-01-01 04:33:02 +00:00
Switch red & blue sparks, add yellow sparks, add big spark sprites
This commit is contained in:
parent
b3a1bb6064
commit
c6f3ac651e
5 changed files with 144 additions and 60 deletions
|
|
@ -6347,6 +6347,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_DRIFTSPARK_B1",
|
||||
"S_DRIFTSPARK_C1",
|
||||
"S_DRIFTSPARK_C2",
|
||||
"S_DRIFTSPARK_D1",
|
||||
"S_DRIFTSPARK_D2",
|
||||
|
||||
// Brake drift sparks
|
||||
"S_BRAKEDRIFT",
|
||||
|
|
|
|||
|
|
@ -2587,6 +2587,9 @@ state_t states[NUMSTATES] =
|
|||
{SPR_DRIF, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK_C2}, // S_DRIFTSPARK_C1
|
||||
{SPR_DRIF, FF_FULLBRIGHT|FF_TRANS20, 1, {NULL}, 0, 0, S_DRIFTSPARK_A3}, // S_DRIFTSPARK_C2 (Loop back to A3)
|
||||
|
||||
{SPR_DRIF, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_DRIFTSPARK_D2}, // S_DRIFTSPARK_D1
|
||||
{SPR_DRIF, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_DRIFTSPARK_A2}, // S_DRIFTSPARK_D2 (Loop back to A2)
|
||||
|
||||
{SPR_BDRF, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 5, 2, S_BRAKEDRIFT}, // S_BRAKEDRIFT
|
||||
|
||||
{SPR_DUST, 0, 3, {NULL}, 0, 0, S_DRIFTDUST2}, // S_DRIFTDUST1
|
||||
|
|
|
|||
|
|
@ -3236,6 +3236,8 @@ typedef enum state
|
|||
S_DRIFTSPARK_B1,
|
||||
S_DRIFTSPARK_C1,
|
||||
S_DRIFTSPARK_C2,
|
||||
S_DRIFTSPARK_D1,
|
||||
S_DRIFTSPARK_D2,
|
||||
|
||||
// Brake drift sparks
|
||||
S_BRAKEDRIFT,
|
||||
|
|
|
|||
191
src/k_kart.c
191
src/k_kart.c
|
|
@ -3151,13 +3151,17 @@ static void K_SpawnDriftSparks(player_t *player)
|
|||
if (!P_IsObjectOnGround(player->mo))
|
||||
return;
|
||||
|
||||
if (!player->kartstuff[k_drift] || player->kartstuff[k_driftcharge] < K_GetKartDriftSparkValue(player))
|
||||
if (!player->kartstuff[k_drift]
|
||||
|| (player->kartstuff[k_driftcharge] < K_GetKartDriftSparkValue(player) && !(player->kartstuff[k_driftcharge] < 0)))
|
||||
return;
|
||||
|
||||
travelangle = player->mo->angle-(ANGLE_45/5)*player->kartstuff[k_drift];
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
SINT8 size = 1;
|
||||
UINT8 trail = 0;
|
||||
|
||||
newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(32*FRACUNIT, player->mo->scale));
|
||||
newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(32*FRACUNIT, player->mo->scale));
|
||||
spark = P_SpawnMobj(newx, newy, player->mo->z, MT_DRIFTSPARK);
|
||||
|
|
@ -3171,20 +3175,62 @@ static void K_SpawnDriftSparks(player_t *player)
|
|||
spark->momy = player->mo->momy/2;
|
||||
//spark->momz = player->mo->momz/2;
|
||||
|
||||
if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*4)
|
||||
if (player->kartstuff[k_driftcharge] < 0)
|
||||
{
|
||||
spark->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
||||
// Stage 0: Yellow
|
||||
spark->color = SKINCOLOR_GOLD;
|
||||
size = 0;
|
||||
}
|
||||
else if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*4)
|
||||
{
|
||||
// Stage 3: Rainbow
|
||||
size = 2;
|
||||
|
||||
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player)*4)+(32*3))
|
||||
{
|
||||
// transition
|
||||
spark->color = SKINCOLOR_SILVER;
|
||||
P_SetScale(spark, (spark->destscale = spark->scale*3/2));
|
||||
trail = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
spark->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
||||
spark->colorized = true;
|
||||
trail = 2;
|
||||
}
|
||||
}
|
||||
else if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*2)
|
||||
{
|
||||
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player)*2)+(24*3))
|
||||
spark->color = SKINCOLOR_RASPBERRY; // transition
|
||||
// Stage 2: Blue
|
||||
size = 2;
|
||||
|
||||
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player)*2)+(32*3))
|
||||
{
|
||||
// transition
|
||||
spark->color = SKINCOLOR_PURPLE;
|
||||
P_SetScale(spark, (spark->destscale = spark->scale*3/2));
|
||||
}
|
||||
else
|
||||
spark->color = SKINCOLOR_KETCHUP;
|
||||
{
|
||||
spark->color = SKINCOLOR_SAPPHIRE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
spark->color = SKINCOLOR_SAPPHIRE;
|
||||
// Stage 1: Red
|
||||
size = 1;
|
||||
|
||||
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player))+(32*3))
|
||||
{
|
||||
// transition
|
||||
spark->color = SKINCOLOR_RASPBERRY;
|
||||
P_SetScale(spark, (spark->destscale = spark->scale*2));
|
||||
}
|
||||
else
|
||||
{
|
||||
spark->color = SKINCOLOR_KETCHUP;
|
||||
}
|
||||
}
|
||||
|
||||
if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn > 0) // Inward drifts
|
||||
|
|
@ -3192,22 +3238,40 @@ static void K_SpawnDriftSparks(player_t *player)
|
|||
{
|
||||
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|
||||
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
|
||||
P_SetMobjState(spark, S_DRIFTSPARK_A1);
|
||||
{
|
||||
size++;
|
||||
}
|
||||
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|
||||
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
|
||||
P_SetMobjState(spark, S_DRIFTSPARK_C1);
|
||||
{
|
||||
size--;
|
||||
}
|
||||
}
|
||||
else if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn < 0) // Outward drifts
|
||||
|| (player->kartstuff[k_drift] < 0 && player->cmd.driftturn > 0))
|
||||
{
|
||||
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|
||||
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
|
||||
P_SetMobjState(spark, S_DRIFTSPARK_C1);
|
||||
{
|
||||
size--;
|
||||
}
|
||||
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|
||||
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
|
||||
P_SetMobjState(spark, S_DRIFTSPARK_A1);
|
||||
{
|
||||
size++;
|
||||
}
|
||||
}
|
||||
|
||||
if (size == 2)
|
||||
P_SetMobjState(spark, S_DRIFTSPARK_A1);
|
||||
else if (size < 1)
|
||||
P_SetMobjState(spark, S_DRIFTSPARK_C1);
|
||||
else if (size > 2)
|
||||
P_SetMobjState(spark, S_DRIFTSPARK_D1);
|
||||
|
||||
if (trail > 0)
|
||||
spark->tics += trail;
|
||||
|
||||
K_MatchGenericExtraFlags(spark, player->mo);
|
||||
}
|
||||
}
|
||||
|
|
@ -5721,42 +5785,40 @@ static void K_KartDrift(player_t *player, boolean onground)
|
|||
// Drift Release (Moved here so you can't "chain" drifts)
|
||||
if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
|
||||
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
|
||||
&& player->kartstuff[k_driftcharge] < dsone
|
||||
&& onground)
|
||||
{
|
||||
player->kartstuff[k_driftcharge] = 0;
|
||||
}
|
||||
else if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
|
||||
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
|
||||
&& (player->kartstuff[k_driftcharge] >= dsone && player->kartstuff[k_driftcharge] < dstwo)
|
||||
&& onground)
|
||||
{
|
||||
if (player->kartstuff[k_driftboost] < 20)
|
||||
player->kartstuff[k_driftboost] = 20;
|
||||
S_StartSound(player->mo, sfx_s23c);
|
||||
//K_SpawnDashDustRelease(player);
|
||||
player->kartstuff[k_driftcharge] = 0;
|
||||
}
|
||||
else if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
|
||||
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
|
||||
&& player->kartstuff[k_driftcharge] < dsthree
|
||||
&& onground)
|
||||
{
|
||||
if (player->kartstuff[k_driftboost] < 50)
|
||||
player->kartstuff[k_driftboost] = 50;
|
||||
S_StartSound(player->mo, sfx_s23c);
|
||||
//K_SpawnDashDustRelease(player);
|
||||
player->kartstuff[k_driftcharge] = 0;
|
||||
}
|
||||
else if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
|
||||
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
|
||||
&& player->kartstuff[k_driftcharge] >= dsthree
|
||||
&& onground)
|
||||
{
|
||||
if (player->kartstuff[k_driftboost] < 125)
|
||||
player->kartstuff[k_driftboost] = 125;
|
||||
S_StartSound(player->mo, sfx_s23c);
|
||||
//K_SpawnDashDustRelease(player);
|
||||
if (player->kartstuff[k_driftcharge] < 0 || player->kartstuff[k_driftcharge] >= dsone)
|
||||
{
|
||||
S_StartSound(player->mo, sfx_s23c);
|
||||
//K_SpawnDashDustRelease(player);
|
||||
|
||||
if (player->kartstuff[k_driftcharge] < 0)
|
||||
{
|
||||
// Stage 0: Yellow sparks
|
||||
if (player->kartstuff[k_driftboost] < 15)
|
||||
player->kartstuff[k_driftboost] = 15;
|
||||
}
|
||||
else if (player->kartstuff[k_driftcharge] >= dsone && player->kartstuff[k_driftcharge] < dstwo)
|
||||
{
|
||||
// Stage 1: Red sparks
|
||||
if (player->kartstuff[k_driftboost] < 20)
|
||||
player->kartstuff[k_driftboost] = 20;
|
||||
}
|
||||
else if (player->kartstuff[k_driftcharge] < dsthree)
|
||||
{
|
||||
// Stage 2: Blue sparks
|
||||
if (player->kartstuff[k_driftboost] < 50)
|
||||
player->kartstuff[k_driftboost] = 50;
|
||||
}
|
||||
else if (player->kartstuff[k_driftcharge] >= dsthree)
|
||||
{
|
||||
// Stage 3: Rainbow sparks
|
||||
if (player->kartstuff[k_driftboost] < 125)
|
||||
player->kartstuff[k_driftboost] = 125;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove charge
|
||||
player->kartstuff[k_driftcharge] = 0;
|
||||
}
|
||||
|
||||
|
|
@ -5792,10 +5854,16 @@ static void K_KartDrift(player_t *player, boolean onground)
|
|||
player->kartstuff[k_driftend] = 0;
|
||||
}
|
||||
|
||||
|
||||
// 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)
|
||||
{
|
||||
// Stop drifting
|
||||
player->kartstuff[k_drift] = player->kartstuff[k_driftcharge] = 0;
|
||||
player->kartstuff[k_aizdriftstrat] = player->kartstuff[k_brakedrift] = 0;
|
||||
player->kartstuff[k_getsparks] = 0;
|
||||
}
|
||||
else if (player->kartstuff[k_jmp] == 1 && onground && player->kartstuff[k_drift] != 0)
|
||||
{
|
||||
// Incease/decrease the drift value to continue drifting in that direction
|
||||
fixed_t driftadditive = 24;
|
||||
|
||||
if (player->kartstuff[k_drift] >= 1) // Drifting to the left
|
||||
|
|
@ -5828,11 +5896,26 @@ static void K_KartDrift(player_t *player, boolean onground)
|
|||
&& !player->kartstuff[k_hyudorotimer]
|
||||
&& !EITHERSNEAKER(player)))
|
||||
driftadditive = 0;
|
||||
if (player->speed > minspeed*2)
|
||||
|
||||
if (player->speed >= minspeed*2)
|
||||
{
|
||||
player->kartstuff[k_getsparks] = 1;
|
||||
|
||||
if (player->kartstuff[k_driftcharge] <= -1)
|
||||
player->kartstuff[k_driftcharge] = dsone;
|
||||
}
|
||||
else
|
||||
{
|
||||
player->kartstuff[k_getsparks] = 0;
|
||||
driftadditive = 0;
|
||||
|
||||
if (player->kartstuff[k_driftcharge] >= dsone)
|
||||
player->kartstuff[k_driftcharge] = -1;
|
||||
}
|
||||
|
||||
// This spawns the drift sparks
|
||||
if (player->kartstuff[k_driftcharge] + driftadditive >= dsone)
|
||||
if ((player->kartstuff[k_driftcharge] + driftadditive >= dsone)
|
||||
|| (player->kartstuff[k_driftcharge] < 0))
|
||||
K_SpawnDriftSparks(player);
|
||||
|
||||
// Sound whenever you get a different tier of sparks
|
||||
|
|
@ -5849,14 +5932,6 @@ static void K_KartDrift(player_t *player, boolean onground)
|
|||
player->kartstuff[k_driftend] = 0;
|
||||
}
|
||||
|
||||
// Stop drifting
|
||||
if (player->kartstuff[k_spinouttimer] > 0 || player->speed < minspeed)
|
||||
{
|
||||
player->kartstuff[k_drift] = player->kartstuff[k_driftcharge] = 0;
|
||||
player->kartstuff[k_aizdriftstrat] = player->kartstuff[k_brakedrift] = 0;
|
||||
player->kartstuff[k_getsparks] = 0;
|
||||
}
|
||||
|
||||
if ((!EITHERSNEAKER(player))
|
||||
|| (!player->cmd.driftturn)
|
||||
|| (!player->kartstuff[k_aizdriftstrat])
|
||||
|
|
|
|||
|
|
@ -8378,9 +8378,11 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
if (mobj->target->player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(mobj->target->player)*4)
|
||||
mobj->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
||||
else if (mobj->target->player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(mobj->target->player)*2)
|
||||
mobj->color = SKINCOLOR_KETCHUP;
|
||||
else if (mobj->target->player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(mobj->target->player))
|
||||
mobj->color = SKINCOLOR_SAPPHIRE;
|
||||
else if (mobj->target->player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(mobj->target->player))
|
||||
mobj->color = SKINCOLOR_KETCHUP;
|
||||
else if (mobj->target->player->kartstuff[k_driftcharge] < 0)
|
||||
mobj->color = SKINCOLOR_GOLD;
|
||||
else
|
||||
mobj->color = SKINCOLOR_SILVER;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue