mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-20 04:21:52 +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_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
|
||||
"S_WIPEOUTTRAIL1",
|
||||
"S_WIPEOUTTRAIL2",
|
||||
|
|
|
|||
14
src/info.c
14
src/info.c
|
|
@ -535,6 +535,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"KINV", // Fullbright invincibility sparkle trail
|
||||
"KINB", // Invincibility sparkle trail
|
||||
"KINF", // Invincibility flash
|
||||
"INVI", // Invincibility speedlines
|
||||
"WIPD", // Wipeout dust trail
|
||||
"DRIF", // 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_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, 1, 3, {NULL}, 0, 0, S_WIPEOUTTRAIL3}, // S_WIPEOUTTRAIL2
|
||||
{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_BOSM, // Sneaker booster smoke
|
||||
SPR_KFRE, // Sneaker fire trail
|
||||
SPR_KINV, // Fullbright invincibility sparkle trail
|
||||
SPR_KINB, // Fullbright invincibility sparkle trail
|
||||
SPR_KINV, // Lighter invincibility sparkle trail
|
||||
SPR_KINB, // Darker invincibility sparkle trail
|
||||
SPR_KINF, // Invincibility flash
|
||||
SPR_INVI, // Invincibility speedlines
|
||||
SPR_WIPD, // Wipeout dust trail
|
||||
SPR_DRIF, // Drift Sparks
|
||||
SPR_BDRF, // Brake drift sparks
|
||||
|
|
@ -4320,6 +4321,19 @@ typedef enum state
|
|||
S_INVULNFLASH3,
|
||||
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
|
||||
S_WIPEOUTTRAIL1,
|
||||
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;
|
||||
mobj_t *sparkle;
|
||||
//angle_t newangle;
|
||||
INT32 i;
|
||||
//UINT8 frame;
|
||||
UINT8 invanimnum;
|
||||
INT32 invtime;
|
||||
UINT8 index = 1;
|
||||
fixed_t newx, newy, newz;
|
||||
|
||||
I_Assert(mo != NULL);
|
||||
I_Assert(!P_MobjWasRemoved(mo));
|
||||
|
||||
invanimnum = mo->player->kartstuff[k_invincibilitytimer]/TICRATE+1;
|
||||
|
||||
if (leveltime & 2)
|
||||
index = 2;
|
||||
|
||||
//CONS_Printf("%d\n", index);
|
||||
//CONS_Printf("%d\n", invanimnum);
|
||||
|
||||
invtime = mo->player->kartstuff[k_invincibilitytimer]/TICRATE+1;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
//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);
|
||||
}
|
||||
|
||||
invanimnum = (invtime > 11) ? 11 : invtime;
|
||||
P_SetMobjState(sparkle, K_SparkleTrailStartStates[invanimnum][index]);
|
||||
sparkle->colorized = true;
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ void K_RunFinishLineBeam(void);
|
|||
UINT16 K_DriftSparkColor(player_t *player, INT32 charge);
|
||||
void K_SpawnBoostTrail(player_t *player);
|
||||
void K_SpawnSparkleTrail(mobj_t *mo);
|
||||
void K_SpawnInvincibilitySpeedLines(mobj_t *mo);
|
||||
void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent);
|
||||
void K_SpawnDraftDust(mobj_t *mo);
|
||||
void K_DriftDustHandling(mobj_t *spawner);
|
||||
|
|
|
|||
|
|
@ -2374,8 +2374,12 @@ void P_MovePlayer(player_t *player)
|
|||
&& onground && (leveltime & 1))
|
||||
K_SpawnBoostTrail(player);
|
||||
|
||||
if (player->kartstuff[k_invincibilitytimer] > 0)
|
||||
if (player->kartstuff[k_invincibilitytimer] > 0)
|
||||
{
|
||||
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))
|
||||
K_SpawnWipeoutTrail(player->mo, false);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue