Chaos Emeralds now sparkle

This commit is contained in:
Sally Coolatta 2020-11-16 00:51:00 -05:00
parent 0db31e0fcd
commit ae5d5abe24
4 changed files with 73 additions and 2 deletions

View file

@ -6273,6 +6273,14 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_CHAOSEMERALD2",
"S_CHAOSEMERALD_UNDER",
"S_EMERALDSPARK1",
"S_EMERALDSPARK2",
"S_EMERALDSPARK3",
"S_EMERALDSPARK4",
"S_EMERALDSPARK5",
"S_EMERALDSPARK6",
"S_EMERALDSPARK7",
// Emerald hunt shards
"S_SHRD1",
"S_SHRD2",
@ -9523,6 +9531,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_BLUEFLAG", // Blue CTF Flag
"MT_EMBLEM",
"MT_EMERALD",
"MT_EMERALDSPARK",
"MT_EMERHUNT", // Emerald Hunt
"MT_EMERALDSPAWN", // Emerald spawner w/ delay

View file

@ -140,6 +140,7 @@ char sprnames[NUMSPRITES + 1][5] =
"NSTR", // NiGHTS star
"EMBM", // Emblem
"EMRC", // Chaos Emeralds
"ESPK",
"SHRD", // Emerald Hunt
// Interactive Objects
@ -1901,10 +1902,18 @@ state_t states[NUMSTATES] =
{SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM26
// Chaos Emeralds
{SPR_EMRC, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CHAOSEMERALD2}, // S_CHAOSEMERALD1
{SPR_EMRC, FF_SEMIBRIGHT, 1, {NULL}, 0, 0, S_CHAOSEMERALD2}, // S_CHAOSEMERALD1
{SPR_EMRC, FF_FULLBRIGHT|FF_TRANSADD, 1, {NULL}, 0, 0, S_CHAOSEMERALD1}, // S_CHAOSEMERALD2
{SPR_EMRC, FF_FULLBRIGHT|1, -1, {NULL}, 1, 0, S_NULL}, // S_CHAOSEMERALD_UNDER
{SPR_ESPK, FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_EMERALDSPARK2}, // S_EMERALDSPARK1
{SPR_ESPK, FF_FULLBRIGHT|1, 3, {NULL}, 0, 0, S_EMERALDSPARK3}, // S_EMERALDSPARK2
{SPR_ESPK, FF_FULLBRIGHT|2, 3, {NULL}, 0, 0, S_EMERALDSPARK4}, // S_EMERALDSPARK3
{SPR_ESPK, FF_FULLBRIGHT|3, 3, {NULL}, 0, 0, S_EMERALDSPARK5}, // S_EMERALDSPARK4
{SPR_ESPK, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_EMERALDSPARK6}, // S_EMERALDSPARK5
{SPR_ESPK, FF_FULLBRIGHT|5, 3, {NULL}, 0, 0, S_EMERALDSPARK7}, // S_EMERALDSPARK6
{SPR_ESPK, FF_FULLBRIGHT|6, 3, {NULL}, 0, 0, S_NULL}, // S_EMERALDSPARK7
// Emerald hunt shards
{SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRD1
{SPR_SHRD, 1, -1, {NULL}, 0, 0, S_NULL}, // S_SHRD2
@ -8248,7 +8257,34 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
16, // mass
0, // damage
sfx_None, // activesound
MF_SPECIAL|MF_PICKUPFROMBELOW, // flags
MF_SPECIAL|MF_PICKUPFROMBELOW|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},
{ // MT_EMERALDSPARK
-1, // doomednum
S_EMERALDSPARK1,// 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
8*FRACUNIT, // radius
8*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},

View file

@ -411,6 +411,7 @@ typedef enum sprite
SPR_NSTR, // NiGHTS star
SPR_EMBM, // Emblem
SPR_EMRC, // Chaos Emeralds
SPR_ESPK,
SPR_SHRD, // Emerald Hunt
// Interactive Objects
@ -2120,6 +2121,14 @@ typedef enum state
S_CHAOSEMERALD2,
S_CHAOSEMERALD_UNDER,
S_EMERALDSPARK1,
S_EMERALDSPARK2,
S_EMERALDSPARK3,
S_EMERALDSPARK4,
S_EMERALDSPARK5,
S_EMERALDSPARK6,
S_EMERALDSPARK7,
// Emerald hunt shards
S_SHRD1,
S_SHRD2,
@ -5410,6 +5419,7 @@ typedef enum mobj_type
MT_BLUEFLAG, // Blue CTF Flag
MT_EMBLEM,
MT_EMERALD,
MT_EMERALDSPARK,
MT_EMERHUNT, // Emerald Hunt
MT_EMERALDSPAWN, // Emerald spawner w/ delay

View file

@ -6460,7 +6460,23 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
break;
case MT_EMERALD:
if (mobj->threshold > 0)
{
mobj->threshold--;
}
if (leveltime % 3 == 0)
{
mobj_t *sparkle = P_SpawnMobjFromMobj(
mobj,
P_RandomRange(-48, 48) * FRACUNIT,
P_RandomRange(-48, 48) * FRACUNIT,
P_RandomRange(0, 64) * FRACUNIT,
MT_EMERALDSPARK
);
sparkle->color = mobj->color;
sparkle->momz += 8 * mobj->scale * P_MobjFlip(mobj);
}
break;
case MT_DRIFTEXPLODE:
if (!mobj->target || !mobj->target->health)