mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 20:41:46 +00:00
Add banana death particles
This commit is contained in:
parent
d0cd25328e
commit
d0b86ee7ed
5 changed files with 115 additions and 2 deletions
|
|
@ -3488,6 +3488,11 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
||||||
"S_BANANA",
|
"S_BANANA",
|
||||||
"S_BANANA_DEAD",
|
"S_BANANA_DEAD",
|
||||||
|
|
||||||
|
"S_BANANA_SPARK",
|
||||||
|
"S_BANANA_SPARK2",
|
||||||
|
"S_BANANA_SPARK3",
|
||||||
|
"S_BANANA_SPARK4",
|
||||||
|
|
||||||
//{ Orbinaut
|
//{ Orbinaut
|
||||||
"S_ORBINAUT1",
|
"S_ORBINAUT1",
|
||||||
"S_ORBINAUT2",
|
"S_ORBINAUT2",
|
||||||
|
|
@ -5311,6 +5316,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
||||||
|
|
||||||
"MT_BANANA", // Banana Stuff
|
"MT_BANANA", // Banana Stuff
|
||||||
"MT_BANANA_SHIELD",
|
"MT_BANANA_SHIELD",
|
||||||
|
"MT_BANANA_SPARK",
|
||||||
|
|
||||||
"MT_ORBINAUT", // Orbinaut stuff
|
"MT_ORBINAUT", // Orbinaut stuff
|
||||||
"MT_ORBINAUT_SHIELD",
|
"MT_ORBINAUT_SHIELD",
|
||||||
|
|
|
||||||
33
src/info.c
33
src/info.c
|
|
@ -557,6 +557,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"RSHE", // Rocket sneaker
|
"RSHE", // Rocket sneaker
|
||||||
"FITM", // Eggman Monitor
|
"FITM", // Eggman Monitor
|
||||||
"BANA", // Banana Peel
|
"BANA", // Banana Peel
|
||||||
|
"BAND", // Banana Peel death particles
|
||||||
"ORBN", // Orbinaut
|
"ORBN", // Orbinaut
|
||||||
"JAWZ", // Jawz
|
"JAWZ", // Jawz
|
||||||
"SSMN", // SS Mine
|
"SSMN", // SS Mine
|
||||||
|
|
@ -4079,6 +4080,11 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_BANA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BANANA
|
{SPR_BANA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BANANA
|
||||||
{SPR_BANA, 1, 175, {NULL}, 0, 0, S_NULL}, // S_BANANA_DEAD
|
{SPR_BANA, 1, 175, {NULL}, 0, 0, S_NULL}, // S_BANANA_DEAD
|
||||||
|
|
||||||
|
{SPR_BAND, 0, -1, {NULL}, 0, 0, S_BANANA_SPARK2}, // S_BANANA_SPARK
|
||||||
|
{SPR_BAND, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BANANA_SPARK3}, // S_BANANA_SPARK2
|
||||||
|
{SPR_BAND, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BANANA_SPARK4}, // S_BANANA_SPARK3
|
||||||
|
{SPR_BAND, 3|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_BANANA_SPARK4
|
||||||
|
|
||||||
{SPR_ORBN, 0, 1, {NULL}, 0, 0, S_ORBINAUT2}, // S_ORBINAUT1
|
{SPR_ORBN, 0, 1, {NULL}, 0, 0, S_ORBINAUT2}, // S_ORBINAUT1
|
||||||
{SPR_ORBN, 1, 1, {NULL}, 0, 0, S_ORBINAUT3}, // S_ORBINAUT2
|
{SPR_ORBN, 1, 1, {NULL}, 0, 0, S_ORBINAUT3}, // S_ORBINAUT2
|
||||||
{SPR_ORBN, 2, 1, {NULL}, 0, 0, S_ORBINAUT4}, // S_ORBINAUT3
|
{SPR_ORBN, 2, 1, {NULL}, 0, 0, S_ORBINAUT4}, // S_ORBINAUT3
|
||||||
|
|
@ -23121,6 +23127,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_BANANA_SPARK
|
||||||
|
-1, // doomednum
|
||||||
|
S_BANANA_SPARK, // 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_BANANA_SPARK2,// deathstate
|
||||||
|
S_NULL, // xdeathstate
|
||||||
|
sfx_None, // deathsound
|
||||||
|
0, // speed
|
||||||
|
4*FRACUNIT, // radius
|
||||||
|
8*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
1, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_DONTENCOREMAP|MF_NOCLIPTHING|MF_NOSQUISH, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_ORBINAUT
|
{ // MT_ORBINAUT
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_ORBINAUT1, // spawnstate
|
S_ORBINAUT1, // spawnstate
|
||||||
|
|
|
||||||
|
|
@ -1103,6 +1103,7 @@ typedef enum sprite
|
||||||
SPR_RSHE, // Rocket sneaker
|
SPR_RSHE, // Rocket sneaker
|
||||||
SPR_FITM, // Eggman Monitor
|
SPR_FITM, // Eggman Monitor
|
||||||
SPR_BANA, // Banana Peel
|
SPR_BANA, // Banana Peel
|
||||||
|
SPR_BAND, // Banana Peel death particles
|
||||||
SPR_ORBN, // Orbinaut
|
SPR_ORBN, // Orbinaut
|
||||||
SPR_JAWZ, // Jawz
|
SPR_JAWZ, // Jawz
|
||||||
SPR_SSMN, // SS Mine
|
SPR_SSMN, // SS Mine
|
||||||
|
|
@ -4500,6 +4501,11 @@ typedef enum state
|
||||||
S_BANANA,
|
S_BANANA,
|
||||||
S_BANANA_DEAD,
|
S_BANANA_DEAD,
|
||||||
|
|
||||||
|
S_BANANA_SPARK,
|
||||||
|
S_BANANA_SPARK2,
|
||||||
|
S_BANANA_SPARK3,
|
||||||
|
S_BANANA_SPARK4,
|
||||||
|
|
||||||
//{ Orbinaut
|
//{ Orbinaut
|
||||||
S_ORBINAUT1,
|
S_ORBINAUT1,
|
||||||
S_ORBINAUT2,
|
S_ORBINAUT2,
|
||||||
|
|
@ -6359,6 +6365,7 @@ typedef enum mobj_type
|
||||||
|
|
||||||
MT_BANANA, // Banana Stuff
|
MT_BANANA, // Banana Stuff
|
||||||
MT_BANANA_SHIELD,
|
MT_BANANA_SHIELD,
|
||||||
|
MT_BANANA_SPARK,
|
||||||
|
|
||||||
MT_ORBINAUT, // Orbinaut stuff
|
MT_ORBINAUT, // Orbinaut stuff
|
||||||
MT_ORBINAUT_SHIELD,
|
MT_ORBINAUT_SHIELD,
|
||||||
|
|
|
||||||
|
|
@ -1585,6 +1585,32 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
||||||
target->fuse = 1;
|
target->fuse = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MT_BANANA:
|
||||||
|
case MT_BANANA_SHIELD:
|
||||||
|
{
|
||||||
|
const UINT8 numParticles = 8;
|
||||||
|
const angle_t diff = ANGLE_MAX / numParticles;
|
||||||
|
UINT8 i;
|
||||||
|
|
||||||
|
for (i = 0; i < numParticles; i++)
|
||||||
|
{
|
||||||
|
mobj_t *spark = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_BANANA_SPARK);
|
||||||
|
spark->angle = (diff * i) - (diff / 2);
|
||||||
|
|
||||||
|
if (inflictor != NULL && P_MobjWasRemoved(inflictor) == false)
|
||||||
|
{
|
||||||
|
spark->angle += K_MomentumAngle(inflictor);
|
||||||
|
spark->momx += inflictor->momx / 2;
|
||||||
|
spark->momy += inflictor->momy / 2;
|
||||||
|
spark->momz += inflictor->momz / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
P_SetObjectMomZ(spark, (12 + P_RandomRange(PR_DECORATION, -4, 4)) * FRACUNIT, true);
|
||||||
|
P_Thrust(spark, spark->angle, (12 + P_RandomRange(PR_DECORATION, -4, 4)) * spark->scale);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
45
src/p_mobj.c
45
src/p_mobj.c
|
|
@ -6495,7 +6495,7 @@ static boolean P_MobjDeadThink(mobj_t *mobj)
|
||||||
break;
|
break;
|
||||||
case MT_BANANA:
|
case MT_BANANA:
|
||||||
{
|
{
|
||||||
angle_t spin = FixedMul(FixedDiv(mobj->momz, 8 * mobj->scale), ANGLE_67h);
|
angle_t spin = FixedMul(FixedDiv(abs(mobj->momz), 8 * mobj->scale), ANGLE_67h);
|
||||||
mobj->angle -= spin;
|
mobj->angle -= spin;
|
||||||
mobj->rollangle += spin;
|
mobj->rollangle += spin;
|
||||||
|
|
||||||
|
|
@ -6506,6 +6506,12 @@ static boolean P_MobjDeadThink(mobj_t *mobj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MT_BANANA_SPARK:
|
||||||
|
{
|
||||||
|
angle_t spin = FixedMul(FixedDiv(abs(mobj->momz), 8 * mobj->scale), ANGLE_22h);
|
||||||
|
mobj->rollangle += spin;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MT_ORBINAUT:
|
case MT_ORBINAUT:
|
||||||
case MT_EGGMANITEM:
|
case MT_EGGMANITEM:
|
||||||
case MT_LANDMINE:
|
case MT_LANDMINE:
|
||||||
|
|
@ -6960,7 +6966,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// tilt n tumble
|
// tilt n tumble
|
||||||
angle_t spin = FixedMul(FixedDiv(mobj->momz, 8 * mobj->scale), ANGLE_67h);
|
angle_t spin = FixedMul(FixedDiv(abs(mobj->momz), 8 * mobj->scale), ANGLE_67h);
|
||||||
mobj->angle += spin;
|
mobj->angle += spin;
|
||||||
mobj->rollangle -= spin;
|
mobj->rollangle -= spin;
|
||||||
}
|
}
|
||||||
|
|
@ -6968,6 +6974,39 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
||||||
if (mobj->threshold > 0)
|
if (mobj->threshold > 0)
|
||||||
mobj->threshold--;
|
mobj->threshold--;
|
||||||
break;
|
break;
|
||||||
|
case MT_BANANA_SPARK:
|
||||||
|
{
|
||||||
|
if (leveltime & 1)
|
||||||
|
{
|
||||||
|
mobj->spritexscale = mobj->spriteyscale = FRACUNIT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((leveltime / 2) & 1)
|
||||||
|
{
|
||||||
|
mobj->spriteyscale = 3*FRACUNIT/2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mobj->spritexscale = 3*FRACUNIT/2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (P_IsObjectOnGround(mobj) == true && mobj->momz * P_MobjFlip(mobj) <= 0)
|
||||||
|
{
|
||||||
|
P_SetObjectMomZ(mobj, 8*FRACUNIT, false);
|
||||||
|
|
||||||
|
if (mobj->health > 0)
|
||||||
|
{
|
||||||
|
mobj->tics = 1;
|
||||||
|
mobj->destscale = 0;
|
||||||
|
mobj->spritexscale = mobj->spriteyscale = FRACUNIT;
|
||||||
|
mobj->health = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
case MT_SPB:
|
case MT_SPB:
|
||||||
{
|
{
|
||||||
Obj_SPBThink(mobj);
|
Obj_SPBThink(mobj);
|
||||||
|
|
@ -13694,6 +13733,8 @@ mobj_t *P_SpawnMobjFromMobj(mobj_t *mobj, fixed_t xofs, fixed_t yofs, fixed_t zo
|
||||||
if (!newmobj)
|
if (!newmobj)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
newmobj->hitlag = mobj->hitlag;
|
||||||
|
|
||||||
newmobj->destscale = P_ScaleFromMap(mobj->destscale, newmobj->destscale);
|
newmobj->destscale = P_ScaleFromMap(mobj->destscale, newmobj->destscale);
|
||||||
P_SetScale(newmobj, P_ScaleFromMap(mobj->scale, newmobj->scale));
|
P_SetScale(newmobj, P_ScaleFromMap(mobj->scale, newmobj->scale));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue