mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
Fancy invincibility speed lines
This commit is contained in:
parent
3b617337ee
commit
4f7aafe654
6 changed files with 75 additions and 9 deletions
|
|
@ -8464,6 +8464,19 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_INVULNFLASH3",
|
"S_INVULNFLASH3",
|
||||||
"S_INVULNFLASH4",
|
"S_INVULNFLASH4",
|
||||||
|
|
||||||
|
"S_KARTINVLINES1",
|
||||||
|
"S_KARTINVLINES2",
|
||||||
|
"S_KARTINVLINES3",
|
||||||
|
"S_KARTINVLINES4",
|
||||||
|
"S_KARTINVLINES5",
|
||||||
|
"S_KARTINVLINES6",
|
||||||
|
"S_KARTINVLINES7",
|
||||||
|
"S_KARTINVLINES8",
|
||||||
|
"S_KARTINVLINES9",
|
||||||
|
"S_KARTINVLINES10",
|
||||||
|
"S_KARTINVLINES11",
|
||||||
|
"S_KARTINVLINES12",
|
||||||
|
|
||||||
// Wipeout dust trail
|
// Wipeout dust trail
|
||||||
"S_WIPEOUTTRAIL1",
|
"S_WIPEOUTTRAIL1",
|
||||||
"S_WIPEOUTTRAIL2",
|
"S_WIPEOUTTRAIL2",
|
||||||
|
|
|
||||||
14
src/info.c
14
src/info.c
|
|
@ -535,6 +535,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"KINV", // Fullbright invincibility sparkle trail
|
"KINV", // Fullbright invincibility sparkle trail
|
||||||
"KINB", // Invincibility sparkle trail
|
"KINB", // Invincibility sparkle trail
|
||||||
"KINF", // Invincibility flash
|
"KINF", // Invincibility flash
|
||||||
|
"INVI", // Invincibility speedlines
|
||||||
"WIPD", // Wipeout dust trail
|
"WIPD", // Wipeout dust trail
|
||||||
"DRIF", // Drift Sparks
|
"DRIF", // Drift Sparks
|
||||||
"BDRF", // Brake drift sparks
|
"BDRF", // Brake drift sparks
|
||||||
|
|
@ -4190,6 +4191,19 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_KINF, FF_FULLBRIGHT|FF_TRANS90|1, 1, {NULL}, 0, 0, S_INVULNFLASH4}, // S_INVULNFLASH3
|
{SPR_KINF, FF_FULLBRIGHT|FF_TRANS90|1, 1, {NULL}, 0, 0, S_INVULNFLASH4}, // S_INVULNFLASH3
|
||||||
{SPR_NULL, FF_FULLBRIGHT|FF_TRANS90, 1, {NULL}, 0, 0, S_INVULNFLASH1}, // S_INVULNFLASH4
|
{SPR_NULL, FF_FULLBRIGHT|FF_TRANS90, 1, {NULL}, 0, 0, S_INVULNFLASH1}, // S_INVULNFLASH4
|
||||||
|
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE, 1, {NULL}, 0, 0, S_KARTINVLINES2}, // S_KARTINVLINES1
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|1, 1, {NULL}, 0, 0, S_KARTINVLINES3}, // S_KARTINVLINES2
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|2, 1, {NULL}, 0, 0, S_KARTINVLINES4}, // S_KARTINVLINES3
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|3, 1, {NULL}, 0, 0, S_KARTINVLINES5}, // S_KARTINVLINES4
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_ANIMATE|FF_PAPERSPRITE|4, 4, {NULL}, 2, 1, S_KARTINVLINES6}, // S_KARTINVLINES5
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|5, 1, {NULL}, 0, 0, S_KARTINVLINES7}, // S_KARTINVLINES6
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_KARTINVLINES8}, // S_KARTINVLINES7
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|7, 1, {NULL}, 0, 0, S_KARTINVLINES9}, // S_KARTINVLINES8
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|8, 1, {NULL}, 0, 0, S_KARTINVLINES10}, // S_KARTINVLINES9
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|9, 1, {NULL}, 0, 0, S_KARTINVLINES11}, // S_KARTINVLINES10
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|10, 1, {NULL}, 0, 0, S_KARTINVLINES12}, // S_KARTINVLINES11
|
||||||
|
{SPR_INVI, FF_FULLBRIGHT|FF_PAPERSPRITE|11, 1, {NULL}, 0, 0, S_NULL}, // S_KARTINVLINES12
|
||||||
|
|
||||||
{SPR_WIPD, 0, 3, {NULL}, 0, 0, S_WIPEOUTTRAIL2}, // S_WIPEOUTTRAIL1
|
{SPR_WIPD, 0, 3, {NULL}, 0, 0, S_WIPEOUTTRAIL2}, // S_WIPEOUTTRAIL1
|
||||||
{SPR_WIPD, 1, 3, {NULL}, 0, 0, S_WIPEOUTTRAIL3}, // S_WIPEOUTTRAIL2
|
{SPR_WIPD, 1, 3, {NULL}, 0, 0, S_WIPEOUTTRAIL3}, // S_WIPEOUTTRAIL2
|
||||||
{SPR_WIPD, 2, 3, {NULL}, 0, 0, S_WIPEOUTTRAIL4}, // S_WIPEOUTTRAIL3
|
{SPR_WIPD, 2, 3, {NULL}, 0, 0, S_WIPEOUTTRAIL4}, // S_WIPEOUTTRAIL3
|
||||||
|
|
|
||||||
18
src/info.h
18
src/info.h
|
|
@ -804,9 +804,10 @@ typedef enum sprite
|
||||||
SPR_BOST, // Sneaker booster flame
|
SPR_BOST, // Sneaker booster flame
|
||||||
SPR_BOSM, // Sneaker booster smoke
|
SPR_BOSM, // Sneaker booster smoke
|
||||||
SPR_KFRE, // Sneaker fire trail
|
SPR_KFRE, // Sneaker fire trail
|
||||||
SPR_KINV, // Fullbright invincibility sparkle trail
|
SPR_KINV, // Lighter invincibility sparkle trail
|
||||||
SPR_KINB, // Fullbright invincibility sparkle trail
|
SPR_KINB, // Darker invincibility sparkle trail
|
||||||
SPR_KINF, // Invincibility flash
|
SPR_KINF, // Invincibility flash
|
||||||
|
SPR_INVI, // Invincibility speedlines
|
||||||
SPR_WIPD, // Wipeout dust trail
|
SPR_WIPD, // Wipeout dust trail
|
||||||
SPR_DRIF, // Drift Sparks
|
SPR_DRIF, // Drift Sparks
|
||||||
SPR_BDRF, // Brake drift sparks
|
SPR_BDRF, // Brake drift sparks
|
||||||
|
|
@ -4320,6 +4321,19 @@ typedef enum state
|
||||||
S_INVULNFLASH3,
|
S_INVULNFLASH3,
|
||||||
S_INVULNFLASH4,
|
S_INVULNFLASH4,
|
||||||
|
|
||||||
|
S_KARTINVLINES1,
|
||||||
|
S_KARTINVLINES2,
|
||||||
|
S_KARTINVLINES3,
|
||||||
|
S_KARTINVLINES4,
|
||||||
|
S_KARTINVLINES5,
|
||||||
|
S_KARTINVLINES6,
|
||||||
|
S_KARTINVLINES7,
|
||||||
|
S_KARTINVLINES8,
|
||||||
|
S_KARTINVLINES9,
|
||||||
|
S_KARTINVLINES10,
|
||||||
|
S_KARTINVLINES11,
|
||||||
|
S_KARTINVLINES12,
|
||||||
|
|
||||||
// Wipeout dust trail
|
// Wipeout dust trail
|
||||||
S_WIPEOUTTRAIL1,
|
S_WIPEOUTTRAIL1,
|
||||||
S_WIPEOUTTRAIL2,
|
S_WIPEOUTTRAIL2,
|
||||||
|
|
|
||||||
32
src/k_kart.c
32
src/k_kart.c
|
|
@ -3766,24 +3766,23 @@ void K_SpawnSparkleTrail(mobj_t *mo)
|
||||||
{
|
{
|
||||||
const INT32 rad = (mo->radius*3)/FRACUNIT;
|
const INT32 rad = (mo->radius*3)/FRACUNIT;
|
||||||
mobj_t *sparkle;
|
mobj_t *sparkle;
|
||||||
//angle_t newangle;
|
|
||||||
INT32 i;
|
INT32 i;
|
||||||
//UINT8 frame;
|
|
||||||
UINT8 invanimnum;
|
UINT8 invanimnum;
|
||||||
|
INT32 invtime;
|
||||||
UINT8 index = 1;
|
UINT8 index = 1;
|
||||||
fixed_t newx, newy, newz;
|
fixed_t newx, newy, newz;
|
||||||
|
|
||||||
I_Assert(mo != NULL);
|
I_Assert(mo != NULL);
|
||||||
I_Assert(!P_MobjWasRemoved(mo));
|
I_Assert(!P_MobjWasRemoved(mo));
|
||||||
|
|
||||||
invanimnum = mo->player->kartstuff[k_invincibilitytimer]/TICRATE+1;
|
|
||||||
|
|
||||||
if (leveltime & 2)
|
if (leveltime & 2)
|
||||||
index = 2;
|
index = 2;
|
||||||
|
|
||||||
//CONS_Printf("%d\n", index);
|
//CONS_Printf("%d\n", index);
|
||||||
//CONS_Printf("%d\n", invanimnum);
|
//CONS_Printf("%d\n", invanimnum);
|
||||||
|
|
||||||
|
invtime = mo->player->kartstuff[k_invincibilitytimer]/TICRATE+1;
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
//newangle = (mo->angle + ANGLE_157h) + FixedAngle(((360 / 8) * i) << FRACBITS) + ANGLE_90;
|
//newangle = (mo->angle + ANGLE_157h) + FixedAngle(((360 / 8) * i) << FRACBITS) + ANGLE_90;
|
||||||
|
|
@ -3808,13 +3807,34 @@ void K_SpawnSparkleTrail(mobj_t *mo)
|
||||||
P_SetScale(sparkle, mo->scale);
|
P_SetScale(sparkle, mo->scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
invanimnum = (invtime > 11) ? 11 : invtime;
|
||||||
P_SetMobjState(sparkle, K_SparkleTrailStartStates[invanimnum][index]);
|
P_SetMobjState(sparkle, K_SparkleTrailStartStates[invanimnum][index]);
|
||||||
sparkle->colorized = true;
|
sparkle->colorized = true;
|
||||||
sparkle->color = mo->color;
|
sparkle->color = mo->color;
|
||||||
|
}
|
||||||
|
|
||||||
//CONS_Printf("%d\n", (mo->player->kartstuff[k_invincibilitytimer]/TICRATE));
|
void K_SpawnInvincibilitySpeedLines(mobj_t *mo)
|
||||||
|
{
|
||||||
|
INT32 i = 0;
|
||||||
|
INT32 nl = 2;
|
||||||
|
for (i = 0; i < nl ; i++)
|
||||||
|
{
|
||||||
|
mobj_t *fast = P_SpawnMobj(mo->x + (P_RandomRange(-24,64) * mo->scale),
|
||||||
|
mo->y + (P_RandomRange(-16,16) * mo->scale),
|
||||||
|
mo->z + (mo->height/2) + (P_RandomRange(-16,16) * mo->scale),
|
||||||
|
MT_FASTLINE);
|
||||||
|
|
||||||
//invanimnum = (mo->player->kartstuff[k_invincibilitytimer]/TICRATE > 11) ? 11 : mo->player->kartstuff[k_invincibilitytimer]/TICRATE;
|
fast->momx = 3*mo->momx/4;
|
||||||
|
fast->momy = 3*mo->momy/4;
|
||||||
|
fast->momz = 3*mo->momz/4;
|
||||||
|
|
||||||
|
P_SetTarget(&fast->target, mo);
|
||||||
|
fast->angle = K_MomentumAngle(mo);
|
||||||
|
fast->color = mo->color;
|
||||||
|
fast->colorized = true;
|
||||||
|
K_MatchGenericExtraFlags(fast, mo);
|
||||||
|
P_SetMobjState(fast, S_KARTINVLINES1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent)
|
void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent)
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ void K_RunFinishLineBeam(void);
|
||||||
UINT16 K_DriftSparkColor(player_t *player, INT32 charge);
|
UINT16 K_DriftSparkColor(player_t *player, INT32 charge);
|
||||||
void K_SpawnBoostTrail(player_t *player);
|
void K_SpawnBoostTrail(player_t *player);
|
||||||
void K_SpawnSparkleTrail(mobj_t *mo);
|
void K_SpawnSparkleTrail(mobj_t *mo);
|
||||||
|
void K_SpawnInvincibilitySpeedLines(mobj_t *mo);
|
||||||
void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent);
|
void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent);
|
||||||
void K_SpawnDraftDust(mobj_t *mo);
|
void K_SpawnDraftDust(mobj_t *mo);
|
||||||
void K_DriftDustHandling(mobj_t *spawner);
|
void K_DriftDustHandling(mobj_t *spawner);
|
||||||
|
|
|
||||||
|
|
@ -2375,7 +2375,11 @@ void P_MovePlayer(player_t *player)
|
||||||
K_SpawnBoostTrail(player);
|
K_SpawnBoostTrail(player);
|
||||||
|
|
||||||
if (player->kartstuff[k_invincibilitytimer] > 0)
|
if (player->kartstuff[k_invincibilitytimer] > 0)
|
||||||
|
{
|
||||||
K_SpawnSparkleTrail(player->mo);
|
K_SpawnSparkleTrail(player->mo);
|
||||||
|
if (player->kartstuff[k_invincibilitytimer] > 10*TICRATE && player->speed > 10*player->mo->scale && (leveltime & 5))
|
||||||
|
K_SpawnInvincibilitySpeedLines(player->mo);
|
||||||
|
}
|
||||||
|
|
||||||
if (player->kartstuff[k_wipeoutslow] > 1 && (leveltime & 1))
|
if (player->kartstuff[k_wipeoutslow] > 1 && (leveltime & 1))
|
||||||
K_SpawnWipeoutTrail(player->mo, false);
|
K_SpawnWipeoutTrail(player->mo, false);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue