Add electricity sparks & change purple spark colors

This commit is contained in:
lachablock 2021-04-17 17:21:18 +10:00
parent 0e2b36e484
commit ed91279391
4 changed files with 75 additions and 3 deletions

View file

@ -3527,6 +3527,9 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
"S_DRIFTWARNSPARK3", "S_DRIFTWARNSPARK3",
"S_DRIFTWARNSPARK4", "S_DRIFTWARNSPARK4",
// Drift electricity
"S_DRIFTELECTRICITY",
// Fast lines // Fast lines
"S_FASTLINE1", "S_FASTLINE1",
"S_FASTLINE2", "S_FASTLINE2",
@ -5451,6 +5454,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
"MT_DRIFTSPARK", "MT_DRIFTSPARK",
"MT_BRAKEDRIFT", "MT_BRAKEDRIFT",
"MT_DRIFTDUST", "MT_DRIFTDUST",
"MT_DRIFTELECTRICITY",
"MT_ROCKETSNEAKER", // Rocket sneakers "MT_ROCKETSNEAKER", // Rocket sneakers

View file

@ -541,6 +541,7 @@ char sprnames[NUMSPRITES + 1][5] =
"DRIF", // Drift Sparks "DRIF", // Drift Sparks
"BDRF", // Brake drift sparks "BDRF", // Brake drift sparks
"DRWS", // Drift dust sparks "DRWS", // Drift dust sparks
"DREL", // Drift electricity
// Kart Items // Kart Items
"RSHE", // Rocket sneaker "RSHE", // Rocket sneaker
@ -4096,6 +4097,8 @@ state_t states[NUMSTATES] =
{SPR_DRWS, FF_FULLBRIGHT|FF_TRANS20|2, 3, {NULL}, 0, 0, S_DRIFTWARNSPARK4}, // S_DRIFTWARNSPARK3 {SPR_DRWS, FF_FULLBRIGHT|FF_TRANS20|2, 3, {NULL}, 0, 0, S_DRIFTWARNSPARK4}, // S_DRIFTWARNSPARK3
{SPR_DRWS, FF_FULLBRIGHT|FF_TRANS20|3, 3, {NULL}, 0, 0, S_NULL}, // S_DRIFTWARNSPARK4 {SPR_DRWS, FF_FULLBRIGHT|FF_TRANS20|3, 3, {NULL}, 0, 0, S_NULL}, // S_DRIFTWARNSPARK4
{SPR_DREL, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE|FF_GLOBALANIM, 2, {NULL}, 5, 2, S_NULL}, // S_DRIFTELECTRICITY
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FASTLINE2}, // S_FASTLINE1 {SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FASTLINE2}, // S_FASTLINE1
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_FASTLINE3}, // S_FASTLINE2 {SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_FASTLINE3}, // S_FASTLINE2
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_FASTLINE4}, // S_FASTLINE3 {SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_FASTLINE4}, // S_FASTLINE3
@ -23473,6 +23476,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate S_NULL // raisestate
}, },
{ // MT_DRIFTELECTRICITY
-1, // doomednum
S_DRIFTELECTRICITY, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
0, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
0, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
0, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_NOCLIPTHING|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},
{ // MT_ROCKETSNEAKER { // MT_ROCKETSNEAKER
-1, // doomednum -1, // doomednum
S_ROCKETSNEAKER_L, // spawnstate S_ROCKETSNEAKER_L, // spawnstate

View file

@ -1093,6 +1093,7 @@ typedef enum sprite
SPR_DRIF, // Drift Sparks SPR_DRIF, // Drift Sparks
SPR_BDRF, // Brake drift sparks SPR_BDRF, // Brake drift sparks
SPR_DRWS, // Drift dust sparks SPR_DRWS, // Drift dust sparks
SPR_DREL, // Drift electricity
// Kart Items // Kart Items
SPR_RSHE, // Rocket sneaker SPR_RSHE, // Rocket sneaker
@ -4500,6 +4501,9 @@ typedef enum state
S_DRIFTWARNSPARK3, S_DRIFTWARNSPARK3,
S_DRIFTWARNSPARK4, S_DRIFTWARNSPARK4,
// Drift electricity
S_DRIFTELECTRICITY,
// Fast lines // Fast lines
S_FASTLINE1, S_FASTLINE1,
S_FASTLINE2, S_FASTLINE2,
@ -6462,6 +6466,7 @@ typedef enum mobj_type
MT_DRIFTSPARK, MT_DRIFTSPARK,
MT_BRAKEDRIFT, MT_BRAKEDRIFT,
MT_DRIFTDUST, MT_DRIFTDUST,
MT_DRIFTELECTRICITY,
MT_ROCKETSNEAKER, MT_ROCKETSNEAKER,

View file

@ -3573,14 +3573,18 @@ UINT16 K_DriftSparkColor(player_t *player, INT32 charge)
else if (charge >= dsthree) else if (charge >= dsthree)
{ {
// Stage 3: Purple // Stage 3: Purple
if (charge <= dsthree+(32*3)) if (charge <= dsthree+(16*3))
{
color = SKINCOLOR_TAFFY;
}
else if (charge <= dsthree+(32*3))
{ {
// transition // transition
color = SKINCOLOR_ULTRAMARINE; color = SKINCOLOR_MOONSET;
} }
else else
{ {
color = SKINCOLOR_THISTLE; color = SKINCOLOR_PURPLE;
} }
} }
else if (charge >= dstwo) else if (charge >= dstwo)
@ -3613,6 +3617,30 @@ UINT16 K_DriftSparkColor(player_t *player, INT32 charge)
return color; return color;
} }
static void K_SpawnDriftElectricity(player_t *player)
{
UINT8 i;
mobj_t *mo = player->mo;
fixed_t verticalradius = FixedDiv(mo->radius/3, mo->scale); // P_SpawnMobjFromMobj will rescale
fixed_t horizontalradius = FixedDiv(5*mo->radius/3, mo->scale);
angle_t verticalangle = K_MomentumAngle(mo) + ANGLE_180;
for (i = 0; i < 2; i++)
{
mobj_t *spark;
angle_t horizonatalangle = verticalangle + (2*i - 1) * ANGLE_90;
fixed_t x = P_ReturnThrustX(mo, verticalangle, verticalradius)
+ P_ReturnThrustX(mo, horizonatalangle, horizontalradius);
fixed_t y = P_ReturnThrustY(mo, verticalangle, verticalradius)
+ P_ReturnThrustY(mo, horizonatalangle, horizontalradius);
spark = P_SpawnMobjFromMobj(mo, x, y, 0, MT_DRIFTELECTRICITY);
spark->angle = verticalangle + ANGLE_180;// + (2*i - 1) * ANGLE_22h;
spark->color = K_DriftSparkColor(player, player->kartstuff[k_driftcharge]);
K_GenericExtraFlagsNoZAdjust(spark, mo);
}
}
static void K_SpawnDriftSparks(player_t *player) static void K_SpawnDriftSparks(player_t *player)
{ {
const INT32 dsone = K_GetKartDriftSparkValueForStage(player, 1); const INT32 dsone = K_GetKartDriftSparkValueForStage(player, 1);
@ -3758,6 +3786,11 @@ static void K_SpawnDriftSparks(player_t *player)
K_MatchGenericExtraFlags(spark, player->mo); K_MatchGenericExtraFlags(spark, player->mo);
} }
if (player->kartstuff[k_driftcharge] >= dsthree)
{
K_SpawnDriftElectricity(player);
}
} }
static void K_SpawnAIZDust(player_t *player) static void K_SpawnAIZDust(player_t *player)