mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Add grow/shrink particles
This commit is contained in:
parent
dd0635fb23
commit
970add8b91
4 changed files with 97 additions and 0 deletions
|
|
@ -3755,6 +3755,9 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
||||||
// Caked-Up Booty-Sheet Ghost
|
// Caked-Up Booty-Sheet Ghost
|
||||||
"S_HYUDORO",
|
"S_HYUDORO",
|
||||||
|
|
||||||
|
// Grow
|
||||||
|
"S_GROW_PARTICLE",
|
||||||
|
|
||||||
// Shrink
|
// Shrink
|
||||||
"S_SHRINK_GUN",
|
"S_SHRINK_GUN",
|
||||||
"S_SHRINK_LASER",
|
"S_SHRINK_LASER",
|
||||||
|
|
@ -5342,6 +5345,8 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
||||||
"MT_HYUDORO",
|
"MT_HYUDORO",
|
||||||
"MT_HYUDORO_CENTER",
|
"MT_HYUDORO_CENTER",
|
||||||
|
|
||||||
|
"MT_GROW_PARTICLE",
|
||||||
|
|
||||||
"MT_SHRINK_POHBEE",
|
"MT_SHRINK_POHBEE",
|
||||||
"MT_SHRINK_GUN",
|
"MT_SHRINK_GUN",
|
||||||
"MT_SHRINK_CHAIN",
|
"MT_SHRINK_CHAIN",
|
||||||
|
|
|
||||||
30
src/info.c
30
src/info.c
|
|
@ -573,6 +573,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"FLML", // Flame Shield speed lines
|
"FLML", // Flame Shield speed lines
|
||||||
"FLMF", // Flame Shield flash
|
"FLMF", // Flame Shield flash
|
||||||
"HYUU", // Hyudoro
|
"HYUU", // Hyudoro
|
||||||
|
"GRWP", // Grow
|
||||||
"SHRG", // Shrink gun / laser
|
"SHRG", // Shrink gun / laser
|
||||||
"SINK", // Kitchen Sink
|
"SINK", // Kitchen Sink
|
||||||
"SITR", // Kitchen Sink Trail
|
"SITR", // Kitchen Sink Trail
|
||||||
|
|
@ -4315,6 +4316,8 @@ state_t states[NUMSTATES] =
|
||||||
|
|
||||||
{SPR_HYUU, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_HYUDORO
|
{SPR_HYUU, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_HYUDORO
|
||||||
|
|
||||||
|
{SPR_GRWP, FF_ADD|FF_FULLBRIGHT|FF_ANIMATE, 13, {NULL}, 7, 1, S_NULL}, // S_GROW_PARTICLE
|
||||||
|
|
||||||
{SPR_SHRG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_GUN
|
{SPR_SHRG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_GUN
|
||||||
{SPR_SHRG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_LASER
|
{SPR_SHRG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_LASER
|
||||||
{SPR_SHRG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_PARTICLE
|
{SPR_SHRG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_PARTICLE
|
||||||
|
|
@ -24041,6 +24044,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_GROW_PARTICLE
|
||||||
|
-1, // doomednum
|
||||||
|
S_GROW_PARTICLE, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
8, // 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
|
||||||
|
4*FRACUNIT, // radius
|
||||||
|
8*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
0, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_SCENERY|MF_NOCLIP|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_SHRINK_POHBEE
|
{ // MT_SHRINK_POHBEE
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_HYUDORO, // spawnstate
|
S_HYUDORO, // spawnstate
|
||||||
|
|
|
||||||
|
|
@ -1119,6 +1119,7 @@ typedef enum sprite
|
||||||
SPR_FLML, // Flame Shield speed lines
|
SPR_FLML, // Flame Shield speed lines
|
||||||
SPR_FLMF, // Flame Shield flash
|
SPR_FLMF, // Flame Shield flash
|
||||||
SPR_HYUU, // Hyudoro
|
SPR_HYUU, // Hyudoro
|
||||||
|
SPR_GRWP, // Grow
|
||||||
SPR_SHRG, // Shrink gun / laser
|
SPR_SHRG, // Shrink gun / laser
|
||||||
SPR_SINK, // Kitchen Sink
|
SPR_SINK, // Kitchen Sink
|
||||||
SPR_SITR, // Kitchen Sink Trail
|
SPR_SITR, // Kitchen Sink Trail
|
||||||
|
|
@ -4746,6 +4747,9 @@ typedef enum state
|
||||||
// Caked-Up Booty-Sheet Ghost
|
// Caked-Up Booty-Sheet Ghost
|
||||||
S_HYUDORO,
|
S_HYUDORO,
|
||||||
|
|
||||||
|
// Grow
|
||||||
|
S_GROW_PARTICLE,
|
||||||
|
|
||||||
// Shrink
|
// Shrink
|
||||||
S_SHRINK_GUN,
|
S_SHRINK_GUN,
|
||||||
S_SHRINK_LASER,
|
S_SHRINK_LASER,
|
||||||
|
|
@ -6369,6 +6373,8 @@ typedef enum mobj_type
|
||||||
MT_HYUDORO,
|
MT_HYUDORO,
|
||||||
MT_HYUDORO_CENTER,
|
MT_HYUDORO_CENTER,
|
||||||
|
|
||||||
|
MT_GROW_PARTICLE,
|
||||||
|
|
||||||
MT_SHRINK_POHBEE,
|
MT_SHRINK_POHBEE,
|
||||||
MT_SHRINK_GUN,
|
MT_SHRINK_GUN,
|
||||||
MT_SHRINK_CHAIN,
|
MT_SHRINK_CHAIN,
|
||||||
|
|
|
||||||
56
src/k_kart.c
56
src/k_kart.c
|
|
@ -2284,6 +2284,57 @@ void K_SpawnInvincibilitySpeedLines(mobj_t *mo)
|
||||||
fast->destscale = 6*((mo->player->invincibilitytimer/TICRATE)*FRACUNIT)/8;
|
fast->destscale = 6*((mo->player->invincibilitytimer/TICRATE)*FRACUNIT)/8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void K_SpawnGrowShrinkParticles(mobj_t *mo, INT32 timer)
|
||||||
|
{
|
||||||
|
const boolean shrink = (timer < 0);
|
||||||
|
const INT32 maxTime = (10*TICRATE);
|
||||||
|
INT32 spawnFreq = 1;
|
||||||
|
|
||||||
|
mobj_t *particle = NULL;
|
||||||
|
fixed_t particleSpeed = 0;
|
||||||
|
|
||||||
|
spawnFreq = (maxTime - min(maxTime, abs(timer))) / TICRATE / 2;
|
||||||
|
if (spawnFreq == 0)
|
||||||
|
{
|
||||||
|
spawnFreq++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (leveltime % spawnFreq != 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
particle = P_SpawnMobjFromMobj(
|
||||||
|
mo,
|
||||||
|
P_RandomRange(-32, 32) * FRACUNIT,
|
||||||
|
P_RandomRange(-32, 32) * FRACUNIT,
|
||||||
|
(shrink ? P_RandomRange(24, 48) : P_RandomRange(0, 24)) * FRACUNIT,
|
||||||
|
MT_GROW_PARTICLE
|
||||||
|
);
|
||||||
|
|
||||||
|
P_SetTarget(&particle->target, mo);
|
||||||
|
|
||||||
|
particle->momx = mo->momx;
|
||||||
|
particle->momy = mo->momy;
|
||||||
|
particle->momz = P_GetMobjZMovement(mo);
|
||||||
|
|
||||||
|
K_MatchGenericExtraFlags(particle, mo);
|
||||||
|
|
||||||
|
particleSpeed = particle->scale * 4 * P_MobjFlip(mo);
|
||||||
|
|
||||||
|
if (shrink == true)
|
||||||
|
{
|
||||||
|
particle->color = SKINCOLOR_KETCHUP;
|
||||||
|
particle->momz -= particleSpeed;
|
||||||
|
particle->renderflags |= RF_VERTICALFLIP;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
particle->color = SKINCOLOR_SAPPHIRE;
|
||||||
|
particle->momz += particleSpeed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void K_SpawnBumpEffect(mobj_t *mo)
|
void K_SpawnBumpEffect(mobj_t *mo)
|
||||||
{
|
{
|
||||||
mobj_t *fx = P_SpawnMobj(mo->x, mo->y, mo->z, MT_BUMP);
|
mobj_t *fx = P_SpawnMobj(mo->x, mo->y, mo->z, MT_BUMP);
|
||||||
|
|
@ -7325,6 +7376,11 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player->growshrinktimer != 0)
|
||||||
|
{
|
||||||
|
K_SpawnGrowShrinkParticles(player->mo, player->growshrinktimer);
|
||||||
|
}
|
||||||
|
|
||||||
if (gametype == GT_RACE && player->rings <= 0) // spawn ring debt indicator
|
if (gametype == GT_RACE && player->rings <= 0) // spawn ring debt indicator
|
||||||
{
|
{
|
||||||
mobj_t *debtflag = P_SpawnMobj(player->mo->x + player->mo->momx, player->mo->y + player->mo->momy,
|
mobj_t *debtflag = P_SpawnMobj(player->mo->x + player->mo->momx, player->mo->y + player->mo->momy,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue