Remove emeralds from battle
This commit is contained in:
parent
e1720e7b3a
commit
7bdf9633bc
14 changed files with 254 additions and 433 deletions
|
|
@ -1457,17 +1457,13 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_EMBLEM26",
|
||||
|
||||
// Chaos Emeralds
|
||||
"S_CHAOSEMERALD1",
|
||||
"S_CHAOSEMERALD2",
|
||||
"S_CHAOSEMERALD_UNDER",
|
||||
|
||||
"S_EMERALDSPARK1",
|
||||
"S_EMERALDSPARK2",
|
||||
"S_EMERALDSPARK3",
|
||||
"S_EMERALDSPARK4",
|
||||
"S_EMERALDSPARK5",
|
||||
"S_EMERALDSPARK6",
|
||||
"S_EMERALDSPARK7",
|
||||
"S_CEMG1",
|
||||
"S_CEMG2",
|
||||
"S_CEMG3",
|
||||
"S_CEMG4",
|
||||
"S_CEMG5",
|
||||
"S_CEMG6",
|
||||
"S_CEMG7",
|
||||
|
||||
// Emerald hunt shards
|
||||
"S_SHRD1",
|
||||
|
|
@ -4745,10 +4741,16 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
"MT_REDFLAG", // Red CTF Flag
|
||||
"MT_BLUEFLAG", // Blue CTF Flag
|
||||
"MT_EMBLEM",
|
||||
"MT_EMERALD",
|
||||
"MT_EMERALDSPARK",
|
||||
"MT_EMERALD1",
|
||||
"MT_EMERALD2",
|
||||
"MT_EMERALD3",
|
||||
"MT_EMERALD4",
|
||||
"MT_EMERALD5",
|
||||
"MT_EMERALD6",
|
||||
"MT_EMERALD7",
|
||||
"MT_EMERHUNT", // Emerald Hunt
|
||||
"MT_EMERALDSPAWN", // Emerald spawner w/ delay
|
||||
"MT_FLINGEMERALD", // Lost emerald
|
||||
|
||||
// Springs and others
|
||||
"MT_FAN",
|
||||
|
|
@ -6540,23 +6542,13 @@ struct int_const_s const INT_CONST[] = {
|
|||
{"LF2_VISITNEEDED",LF2_VISITNEEDED},
|
||||
|
||||
// Emeralds
|
||||
{"EMERALD_CHAOS1",EMERALD_CHAOS1},
|
||||
{"EMERALD_CHAOS2",EMERALD_CHAOS2},
|
||||
{"EMERALD_CHAOS3",EMERALD_CHAOS3},
|
||||
{"EMERALD_CHAOS4",EMERALD_CHAOS4},
|
||||
{"EMERALD_CHAOS5",EMERALD_CHAOS5},
|
||||
{"EMERALD_CHAOS6",EMERALD_CHAOS6},
|
||||
{"EMERALD_CHAOS7",EMERALD_CHAOS7},
|
||||
{"EMERALD_ALLCHAOS",EMERALD_ALLCHAOS},
|
||||
{"EMERALD_SUPER1",EMERALD_SUPER1},
|
||||
{"EMERALD_SUPER2",EMERALD_SUPER2},
|
||||
{"EMERALD_SUPER3",EMERALD_SUPER3},
|
||||
{"EMERALD_SUPER4",EMERALD_SUPER4},
|
||||
{"EMERALD_SUPER5",EMERALD_SUPER5},
|
||||
{"EMERALD_SUPER6",EMERALD_SUPER6},
|
||||
{"EMERALD_SUPER7",EMERALD_SUPER7},
|
||||
{"EMERALD_ALLSUPER",EMERALD_ALLSUPER},
|
||||
{"EMERALD_ALL",EMERALD_ALL},
|
||||
{"EMERALD1",EMERALD1},
|
||||
{"EMERALD2",EMERALD2},
|
||||
{"EMERALD3",EMERALD3},
|
||||
{"EMERALD4",EMERALD4},
|
||||
{"EMERALD5",EMERALD5},
|
||||
{"EMERALD6",EMERALD6},
|
||||
{"EMERALD7",EMERALD7},
|
||||
|
||||
// SKINCOLOR_ doesn't include these..!
|
||||
{"MAXSKINCOLORS",MAXSKINCOLORS},
|
||||
|
|
|
|||
|
|
@ -560,34 +560,17 @@ extern UINT32 matchesplayed;
|
|||
extern UINT8 stagefailed;
|
||||
|
||||
// Emeralds stored as bits to throw savegame hackers off.
|
||||
typedef enum
|
||||
{
|
||||
EMERALD_CHAOS1 = 1,
|
||||
EMERALD_CHAOS2 = 1<<1,
|
||||
EMERALD_CHAOS3 = 1<<2,
|
||||
EMERALD_CHAOS4 = 1<<3,
|
||||
EMERALD_CHAOS5 = 1<<4,
|
||||
EMERALD_CHAOS6 = 1<<5,
|
||||
EMERALD_CHAOS7 = 1<<6,
|
||||
EMERALD_ALLCHAOS = EMERALD_CHAOS1|EMERALD_CHAOS2|EMERALD_CHAOS3|EMERALD_CHAOS4|EMERALD_CHAOS5|EMERALD_CHAOS6|EMERALD_CHAOS7,
|
||||
|
||||
EMERALD_SUPER1 = 1<<7,
|
||||
EMERALD_SUPER2 = 1<<8,
|
||||
EMERALD_SUPER3 = 1<<9,
|
||||
EMERALD_SUPER4 = 1<<10,
|
||||
EMERALD_SUPER5 = 1<<11,
|
||||
EMERALD_SUPER6 = 1<<12,
|
||||
EMERALD_SUPER7 = 1<<13,
|
||||
EMERALD_ALLSUPER = EMERALD_SUPER1|EMERALD_SUPER2|EMERALD_SUPER3|EMERALD_SUPER4|EMERALD_SUPER5|EMERALD_SUPER6|EMERALD_SUPER7,
|
||||
|
||||
EMERALD_ALL = EMERALD_ALLCHAOS|EMERALD_ALLSUPER
|
||||
} emeraldflags_t;
|
||||
|
||||
extern UINT16 emeralds;
|
||||
|
||||
#define ALLCHAOSEMERALDS(v) ((v & EMERALD_ALLCHAOS) == EMERALD_ALLCHAOS)
|
||||
#define ALLSUPEREMERALDS(v) ((v & EMERALD_ALLSUPER) == EMERALD_ALLSUPER)
|
||||
#define ALLEMERALDS(v) ((v & EMERALD_ALL) == EMERALD_ALL)
|
||||
#define EMERALD1 1
|
||||
#define EMERALD2 2
|
||||
#define EMERALD3 4
|
||||
#define EMERALD4 8
|
||||
#define EMERALD5 16
|
||||
#define EMERALD6 32
|
||||
#define EMERALD7 64
|
||||
#define ALL7EMERALDS(v) ((v & (EMERALD1|EMERALD2|EMERALD3|EMERALD4|EMERALD5|EMERALD6|EMERALD7)) == (EMERALD1|EMERALD2|EMERALD3|EMERALD4|EMERALD5|EMERALD6|EMERALD7))
|
||||
|
||||
#define NUM_LUABANKS 16 // please only make this number go up between versions, never down. you'll break saves otherwise. also, must fit in UINT8
|
||||
extern INT32 luabanks[NUM_LUABANKS];
|
||||
|
|
|
|||
|
|
@ -892,7 +892,7 @@ void F_StartGameEvaluation(void)
|
|||
// Just in case they're open ... somehow
|
||||
M_ClearMenus(true);
|
||||
|
||||
goodending = (ALLCHAOSEMERALDS(emeralds));
|
||||
goodending = (ALL7EMERALDS(emeralds));
|
||||
|
||||
gameaction = ga_nothing;
|
||||
paused = false;
|
||||
|
|
@ -1157,7 +1157,7 @@ static void F_CacheEnding(void)
|
|||
endescp[4] = W_CachePatchName("ENDESCP4", PU_PATCH_LOWPRIORITY);
|
||||
|
||||
// so we only need to check once
|
||||
if ((goodending = ALLCHAOSEMERALDS(emeralds)))
|
||||
if ((goodending = ALL7EMERALDS(emeralds)))
|
||||
{
|
||||
endfwrk[0] = W_CachePatchName("ENDFWRK3", PU_PATCH);
|
||||
endfwrk[1] = W_CachePatchName("ENDFWRK4", PU_PATCH);
|
||||
|
|
|
|||
238
src/info.c
238
src/info.c
|
|
@ -12,6 +12,7 @@
|
|||
/// \brief Thing frame/state LUT
|
||||
|
||||
// Data.
|
||||
#include "info.h"
|
||||
#include "doomdef.h"
|
||||
#include "doomstat.h"
|
||||
#include "sounds.h"
|
||||
|
|
@ -143,8 +144,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"NCHP", // NiGHTS chip
|
||||
"NSTR", // NiGHTS star
|
||||
"EMBM", // Emblem
|
||||
"EMRC", // Chaos Emeralds
|
||||
"ESPK",
|
||||
"CEMG", // Chaos Emeralds
|
||||
"SHRD", // Emerald Hunt
|
||||
|
||||
// Interactive Objects
|
||||
|
|
@ -1946,17 +1946,13 @@ state_t states[NUMSTATES] =
|
|||
{SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM26
|
||||
|
||||
// Chaos Emeralds
|
||||
{SPR_EMRC, FF_SEMIBRIGHT, 1, {NULL}, 0, 0, S_CHAOSEMERALD2}, // S_CHAOSEMERALD1
|
||||
{SPR_EMRC, FF_FULLBRIGHT|FF_ADD, 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
|
||||
{SPR_CEMG, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG1
|
||||
{SPR_CEMG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG2
|
||||
{SPR_CEMG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG3
|
||||
{SPR_CEMG, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG4
|
||||
{SPR_CEMG, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG5
|
||||
{SPR_CEMG, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG6
|
||||
{SPR_CEMG, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG7
|
||||
|
||||
// Emerald hunt shards
|
||||
{SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRD1
|
||||
|
|
@ -3827,14 +3823,14 @@ state_t states[NUMSTATES] =
|
|||
{SPR_CAPS, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGCAPSULE
|
||||
|
||||
// Orbiting Chaos Emeralds/Ideya for NiGHTS
|
||||
{SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1}, // S_ORBITEM1
|
||||
{SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2}, // S_ORBITEM2
|
||||
{SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3}, // S_ORBITEM3
|
||||
{SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4}, // S_ORBITEM4
|
||||
{SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5}, // S_ORBITEM5
|
||||
{SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6}, // S_ORBITEM6
|
||||
{SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7}, // S_ORBITEM7
|
||||
{SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8}, // S_ORBITEM8
|
||||
{SPR_CEMG, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1}, // S_ORBITEM1
|
||||
{SPR_CEMG, FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2}, // S_ORBITEM2
|
||||
{SPR_CEMG, FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3}, // S_ORBITEM3
|
||||
{SPR_CEMG, FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4}, // S_ORBITEM4
|
||||
{SPR_CEMG, FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5}, // S_ORBITEM5
|
||||
{SPR_CEMG, FF_FULLBRIGHT|5, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6}, // S_ORBITEM6
|
||||
{SPR_CEMG, FF_FULLBRIGHT|6, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7}, // S_ORBITEM7
|
||||
{SPR_CEMG, FF_FULLBRIGHT|7, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8}, // S_ORBITEM8
|
||||
{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA1}, // S_ORBIDYA1
|
||||
{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA2}, // S_ORBIDYA2
|
||||
{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA3}, // S_ORBIDYA3
|
||||
|
|
@ -8404,9 +8400,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_EMERALD
|
||||
-1, // doomednum
|
||||
S_CHAOSEMERALD1, // spawnstate
|
||||
{ // MT_EMERALD1
|
||||
313, // doomednum
|
||||
S_CEMG1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
|
|
@ -8417,23 +8413,23 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_SPRK1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_s3k9c, // deathsound
|
||||
0, // speed
|
||||
72*FRACUNIT, // radius
|
||||
72*FRACUNIT, // height
|
||||
sfx_cgot, // deathsound
|
||||
EMERALD1, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SPECIAL|MF_PICKUPFROMBELOW|MF_DONTENCOREMAP, // flags
|
||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_EMERALDSPARK
|
||||
-1, // doomednum
|
||||
S_EMERALDSPARK1,// spawnstate
|
||||
{ // MT_EMERALD2
|
||||
314, // doomednum
|
||||
S_CEMG2, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
|
|
@ -8444,17 +8440,152 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_SPRK1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
8*FRACUNIT, // radius
|
||||
8*FRACUNIT, // height
|
||||
sfx_cgot, // deathsound
|
||||
EMERALD2, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_EMERALD3
|
||||
315, // doomednum
|
||||
S_CEMG3, // 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_SPRK1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_cgot, // deathsound
|
||||
EMERALD3, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_EMERALD4
|
||||
316, // doomednum
|
||||
S_CEMG4, // 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_SPRK1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_cgot, // deathsound
|
||||
EMERALD4, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_EMERALD5
|
||||
317, // doomednum
|
||||
S_CEMG5, // 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_SPRK1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_cgot, // deathsound
|
||||
EMERALD5, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_EMERALD6
|
||||
318, // doomednum
|
||||
S_CEMG6, // 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_SPRK1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_cgot, // deathsound
|
||||
EMERALD6, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_EMERALD7
|
||||
319, // doomednum
|
||||
S_CEMG7, // 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_SPRK1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_cgot, // deathsound
|
||||
EMERALD7, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -8512,6 +8643,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FLINGEMERALD
|
||||
-1, // doomednum
|
||||
S_CEMG1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
0, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_SPRK1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_cgot, // deathsound
|
||||
60*FRACUNIT, // speed
|
||||
16*FRACUNIT, // radius
|
||||
48*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SLIDEME|MF_SPECIAL, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FAN
|
||||
540, // doomednum
|
||||
S_FAN, // spawnstate
|
||||
|
|
@ -19101,7 +19259,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
|
||||
{ // MT_GOTEMERALD
|
||||
-1, // doomednum
|
||||
S_CHAOSEMERALD1, // spawnstate
|
||||
S_CEMG1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
|
|
|
|||
31
src/info.h
31
src/info.h
|
|
@ -699,8 +699,7 @@ typedef enum sprite
|
|||
SPR_NCHP, // NiGHTS chip
|
||||
SPR_NSTR, // NiGHTS star
|
||||
SPR_EMBM, // Emblem
|
||||
SPR_EMRC, // Chaos Emeralds
|
||||
SPR_ESPK,
|
||||
SPR_CEMG, // Chaos Emeralds
|
||||
SPR_SHRD, // Emerald Hunt
|
||||
|
||||
// Interactive Objects
|
||||
|
|
@ -2426,17 +2425,13 @@ typedef enum state
|
|||
S_EMBLEM26,
|
||||
|
||||
// Chaos Emeralds
|
||||
S_CHAOSEMERALD1,
|
||||
S_CHAOSEMERALD2,
|
||||
S_CHAOSEMERALD_UNDER,
|
||||
|
||||
S_EMERALDSPARK1,
|
||||
S_EMERALDSPARK2,
|
||||
S_EMERALDSPARK3,
|
||||
S_EMERALDSPARK4,
|
||||
S_EMERALDSPARK5,
|
||||
S_EMERALDSPARK6,
|
||||
S_EMERALDSPARK7,
|
||||
S_CEMG1,
|
||||
S_CEMG2,
|
||||
S_CEMG3,
|
||||
S_CEMG4,
|
||||
S_CEMG5,
|
||||
S_CEMG6,
|
||||
S_CEMG7,
|
||||
|
||||
// Emerald hunt shards
|
||||
S_SHRD1,
|
||||
|
|
@ -5754,10 +5749,16 @@ typedef enum mobj_type
|
|||
MT_REDFLAG, // Red CTF Flag
|
||||
MT_BLUEFLAG, // Blue CTF Flag
|
||||
MT_EMBLEM,
|
||||
MT_EMERALD,
|
||||
MT_EMERALDSPARK,
|
||||
MT_EMERALD1,
|
||||
MT_EMERALD2,
|
||||
MT_EMERALD3,
|
||||
MT_EMERALD4,
|
||||
MT_EMERALD5,
|
||||
MT_EMERALD6,
|
||||
MT_EMERALD7,
|
||||
MT_EMERHUNT, // Emerald Hunt
|
||||
MT_EMERALDSPAWN, // Emerald spawner w/ delay
|
||||
MT_FLINGEMERALD, // Lost emerald
|
||||
|
||||
// Springs and others
|
||||
MT_FAN,
|
||||
|
|
|
|||
141
src/k_battle.c
141
src/k_battle.c
|
|
@ -179,93 +179,6 @@ void K_CheckBumpers(void)
|
|||
}
|
||||
}
|
||||
|
||||
void K_CheckEmeralds(player_t *player)
|
||||
{
|
||||
UINT8 i;
|
||||
|
||||
if (!ALLCHAOSEMERALDS(player->emeralds))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
player->roundscore++; // lol
|
||||
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (!playeringame[i] || players[i].spectator)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (&players[i] == player)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
players[i].bumper = 0;
|
||||
}
|
||||
|
||||
K_CheckBumpers();
|
||||
}
|
||||
|
||||
mobj_t *K_SpawnChaosEmerald(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 flip, UINT32 emeraldType)
|
||||
{
|
||||
boolean validEmerald = true;
|
||||
mobj_t *emerald = P_SpawnMobj(x, y, z, MT_EMERALD);
|
||||
mobj_t *overlay;
|
||||
|
||||
P_Thrust(emerald,
|
||||
FixedAngle(P_RandomFixed() * 180) + angle,
|
||||
24 * mapobjectscale);
|
||||
|
||||
emerald->momz = flip * 24 * mapobjectscale;
|
||||
if (emerald->eflags & MFE_UNDERWATER)
|
||||
emerald->momz = (117 * emerald->momz) / 200;
|
||||
|
||||
emerald->threshold = 10;
|
||||
|
||||
switch (emeraldType)
|
||||
{
|
||||
case EMERALD_CHAOS1:
|
||||
emerald->color = SKINCOLOR_PERIDOT;
|
||||
break;
|
||||
case EMERALD_CHAOS2:
|
||||
emerald->color = SKINCOLOR_RED;
|
||||
break;
|
||||
case EMERALD_CHAOS3:
|
||||
emerald->color = SKINCOLOR_BLUE;
|
||||
break;
|
||||
case EMERALD_CHAOS4:
|
||||
emerald->color = SKINCOLOR_YELLOW;
|
||||
break;
|
||||
case EMERALD_CHAOS5:
|
||||
emerald->color = SKINCOLOR_PURPLE;
|
||||
break;
|
||||
case EMERALD_CHAOS6:
|
||||
emerald->color = SKINCOLOR_CYAN;
|
||||
break;
|
||||
case EMERALD_CHAOS7:
|
||||
emerald->color = SKINCOLOR_WHITE;
|
||||
break;
|
||||
default:
|
||||
CONS_Printf("Invalid emerald type %d\n", emeraldType);
|
||||
validEmerald = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (validEmerald == true)
|
||||
{
|
||||
emerald->extravalue1 = emeraldType;
|
||||
}
|
||||
|
||||
overlay = P_SpawnMobjFromMobj(emerald, 0, 0, 0, MT_OVERLAY);
|
||||
P_SetTarget(&overlay->target, emerald);
|
||||
P_SetMobjState(overlay, S_CHAOSEMERALD_UNDER);
|
||||
overlay->color = emerald->color;
|
||||
|
||||
return emerald;
|
||||
}
|
||||
|
||||
mobj_t *K_SpawnSphereBox(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 flip, UINT8 amount)
|
||||
{
|
||||
mobj_t *drop = P_SpawnMobj(x, y, z, MT_SPHEREBOX);
|
||||
|
|
@ -286,25 +199,6 @@ mobj_t *K_SpawnSphereBox(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 f
|
|||
return drop;
|
||||
}
|
||||
|
||||
void K_DropEmeraldsFromPlayer(player_t *player, UINT32 emeraldType)
|
||||
{
|
||||
UINT8 i;
|
||||
SINT8 flip = P_MobjFlip(player->mo);
|
||||
|
||||
for (i = 0; i < 14; i++)
|
||||
{
|
||||
UINT32 emeraldFlag = (1 << i);
|
||||
|
||||
if ((player->emeralds & emeraldFlag) && (emeraldFlag & emeraldType))
|
||||
{
|
||||
mobj_t *emerald = K_SpawnChaosEmerald(player->mo->x, player->mo->y, player->mo->z, player->mo->angle - ANGLE_90, flip, emeraldFlag);
|
||||
P_SetTarget(&emerald->target, player->mo);
|
||||
|
||||
player->emeralds &= ~emeraldFlag;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UINT8 K_NumEmeralds(player_t *player)
|
||||
{
|
||||
UINT8 i;
|
||||
|
|
@ -329,9 +223,6 @@ void K_RunPaperItemSpawners(void)
|
|||
|
||||
const boolean canmakeemeralds = true; //(!(itembreaker || bossinfo.boss));
|
||||
|
||||
UINT32 emeraldsSpawned = 0;
|
||||
UINT32 firstUnspawnedEmerald = 0;
|
||||
|
||||
thinker_t *th;
|
||||
mobj_t *mo;
|
||||
|
||||
|
|
@ -362,8 +253,6 @@ void K_RunPaperItemSpawners(void)
|
|||
continue;
|
||||
}
|
||||
|
||||
emeraldsSpawned |= players[i].emeralds;
|
||||
|
||||
if ((players[i].exiting > 0 || (players[i].pflags & PF_ELIMINATED))
|
||||
|| ((gametyperules & GTR_BUMPERS) && players[i].bumper <= 0))
|
||||
{
|
||||
|
|
@ -390,11 +279,6 @@ void K_RunPaperItemSpawners(void)
|
|||
|
||||
mo = (mobj_t *)th;
|
||||
|
||||
if (mo->type == MT_EMERALD)
|
||||
{
|
||||
emeraldsSpawned |= mo->extravalue1;
|
||||
}
|
||||
|
||||
if (mo->type != MT_PAPERITEMSPOT)
|
||||
continue;
|
||||
|
||||
|
|
@ -411,21 +295,6 @@ void K_RunPaperItemSpawners(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (canmakeemeralds)
|
||||
{
|
||||
for (i = 0; i < 7; i++)
|
||||
{
|
||||
UINT32 emeraldFlag = (1 << i);
|
||||
|
||||
if (!(emeraldsSpawned & emeraldFlag))
|
||||
{
|
||||
firstUnspawnedEmerald = emeraldFlag;
|
||||
starti = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//CONS_Printf("leveltime = %d ", leveltime);
|
||||
|
||||
spotBackup = spotCount;
|
||||
|
|
@ -456,16 +325,6 @@ void K_RunPaperItemSpawners(void)
|
|||
|
||||
flip = P_MobjFlip(spotList[r]);
|
||||
|
||||
// When -1, we're spawning a Chaos Emerald.
|
||||
if (i == -1)
|
||||
{
|
||||
drop = K_SpawnChaosEmerald(
|
||||
spotList[r]->x, spotList[r]->y, spotList[r]->z + (128 * mapobjectscale * flip),
|
||||
FixedAngle(P_RandomRange(0, 359) * FRACUNIT), flip,
|
||||
firstUnspawnedEmerald
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gametyperules & GTR_SPHERES)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,10 +17,7 @@ boolean K_IsPlayerWanted(player_t *player);
|
|||
#define K_CalculateBattleWanted() (void)0 // not nulled out so we know where we need to recalculate some other form of battle mode importance
|
||||
void K_SpawnBattlePoints(player_t *source, player_t *victim, UINT8 amount);
|
||||
void K_CheckBumpers(void);
|
||||
void K_CheckEmeralds(player_t *player);
|
||||
mobj_t *K_SpawnChaosEmerald(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 flip, UINT32 emeraldType);
|
||||
mobj_t *K_SpawnSphereBox(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 flip, UINT8 amount);
|
||||
void K_DropEmeraldsFromPlayer(player_t *player, UINT32 emeraldType);
|
||||
UINT8 K_NumEmeralds(player_t *player);
|
||||
void K_RunPaperItemSpawners(void);
|
||||
void K_SpawnPlayerBattleBumpers(player_t *p);
|
||||
|
|
|
|||
114
src/k_hud.c
114
src/k_hud.c
|
|
@ -96,9 +96,6 @@ static patch_t *kp_rankbumper;
|
|||
static patch_t *kp_tinybumper[2];
|
||||
static patch_t *kp_ranknobumpers;
|
||||
static patch_t *kp_rankcapsule;
|
||||
static patch_t *kp_rankemerald;
|
||||
static patch_t *kp_rankemeraldflash;
|
||||
static patch_t *kp_rankemeraldback;
|
||||
|
||||
static patch_t *kp_battlewin;
|
||||
static patch_t *kp_battlecool;
|
||||
|
|
@ -325,10 +322,6 @@ void K_LoadKartHUDGraphics(void)
|
|||
HU_UpdatePatch(&kp_tinybumper[0], "K_BLNA");
|
||||
HU_UpdatePatch(&kp_tinybumper[1], "K_BLNB");
|
||||
HU_UpdatePatch(&kp_ranknobumpers, "K_NOBLNS");
|
||||
HU_UpdatePatch(&kp_rankcapsule, "K_CAPICO");
|
||||
HU_UpdatePatch(&kp_rankemerald, "K_EMERC");
|
||||
HU_UpdatePatch(&kp_rankemeraldflash, "K_EMERW");
|
||||
HU_UpdatePatch(&kp_rankemeraldback, "K_EMERBK");
|
||||
|
||||
// Battle graphics
|
||||
HU_UpdatePatch(&kp_battlewin, "K_BWIN");
|
||||
|
|
@ -1725,7 +1718,7 @@ static boolean K_drawKartPositionFaces(void)
|
|||
INT32 i, j, ranklines, strank = -1;
|
||||
boolean completed[MAXPLAYERS];
|
||||
INT32 rankplayer[MAXPLAYERS];
|
||||
INT32 bumperx, /*emeraldx,*/ numplayersingame = 0;
|
||||
INT32 bumperx, numplayersingame = 0;
|
||||
UINT8 *colormap;
|
||||
|
||||
ranklines = 0;
|
||||
|
|
@ -1809,7 +1802,6 @@ static boolean K_drawKartPositionFaces(void)
|
|||
if (!players[rankplayer[i]].mo) continue;
|
||||
|
||||
bumperx = FACE_X+19;
|
||||
//emeraldx = FACE_X+16;
|
||||
|
||||
if (players[rankplayer[i]].mo->color)
|
||||
{
|
||||
|
|
@ -1835,19 +1827,6 @@ static boolean K_drawKartPositionFaces(void)
|
|||
}
|
||||
}
|
||||
|
||||
/*for (j = 0; j < 7; j++)
|
||||
{
|
||||
UINT32 emeraldFlag = (1 << j);
|
||||
UINT16 emeraldColor = SKINCOLOR_CHAOSEMERALD1 + j;
|
||||
|
||||
if (players[rankplayer[i]].emeralds & emeraldFlag)
|
||||
{
|
||||
colormap = R_GetTranslationColormap(TC_DEFAULT, emeraldColor, GTC_CACHE);
|
||||
V_DrawMappedPatch(emeraldx, Y+7, V_HUDTRANS|V_SNAPTOLEFT, kp_rankemerald, colormap);
|
||||
emeraldx += 7;
|
||||
}
|
||||
}*/
|
||||
|
||||
if (i == strank)
|
||||
V_DrawScaledPatch(FACE_X, Y, V_HUDTRANS|V_SNAPTOLEFT, kp_facehighlight[(leveltime / 4) % 8]);
|
||||
|
||||
|
|
@ -1992,90 +1971,6 @@ static void K_drawBossHealthBar(void)
|
|||
V_DrawScaledPatch(startx-i, starty, V_HUDTRANS|V_SNAPTOBOTTOM|V_SNAPTORIGHT, kp_bossbar[0]);
|
||||
}
|
||||
|
||||
static void K_drawKartEmeralds(void)
|
||||
{
|
||||
/*static const INT32 emeraldOffsets[7][3] = {
|
||||
{34, 0, 15},
|
||||
{25, 8, 11},
|
||||
{43, 8, 19},
|
||||
{16, 0, 7},
|
||||
{52, 0, 23},
|
||||
{ 7, 8, 3},
|
||||
{61, 8, 27}
|
||||
};*/
|
||||
|
||||
INT32 splitflags = V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SPLITSCREEN;
|
||||
INT32 startx = BASEVIDWIDTH - 77;
|
||||
INT32 starty = BASEVIDHEIGHT - 29;
|
||||
//INT32 i = 0, xindex = 0;
|
||||
|
||||
{
|
||||
if (r_splitscreen)
|
||||
{
|
||||
starty = (starty/2) - 8;
|
||||
}
|
||||
starty -= 8;
|
||||
|
||||
if (r_splitscreen < 2)
|
||||
{
|
||||
startx -= 8;
|
||||
if (r_splitscreen == 1 && stplyr == &players[displayplayers[0]])
|
||||
{
|
||||
starty = 1;
|
||||
}
|
||||
V_DrawScaledPatch(startx, starty, V_HUDTRANS|splitflags, kp_rankemeraldback);
|
||||
}
|
||||
else
|
||||
{
|
||||
//xindex = 2;
|
||||
starty -= 15;
|
||||
if (stplyr == &players[displayplayers[0]] || stplyr == &players[displayplayers[2]]) // If we are P1 or P3...
|
||||
{
|
||||
startx = LAPS_X;
|
||||
splitflags = V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_SPLITSCREEN;
|
||||
}
|
||||
else // else, that means we're P2 or P4.
|
||||
{
|
||||
startx = LAPS2_X + 1;
|
||||
splitflags = V_SNAPTORIGHT|V_SNAPTOBOTTOM|V_SPLITSCREEN;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*for (i = 0; i < 7; i++)
|
||||
{
|
||||
UINT32 emeraldFlag = (1 << i);
|
||||
UINT16 emeraldColor = SKINCOLOR_CHAOSEMERALD1 + i;
|
||||
|
||||
if (stplyr->emeralds & emeraldFlag)
|
||||
{
|
||||
boolean whiteFlash = (leveltime & 1);
|
||||
UINT8 *colormap;
|
||||
|
||||
if (i & 1)
|
||||
{
|
||||
whiteFlash = !whiteFlash;
|
||||
}
|
||||
|
||||
colormap = R_GetTranslationColormap(TC_DEFAULT, emeraldColor, GTC_CACHE);
|
||||
V_DrawMappedPatch(
|
||||
startx + emeraldOffsets[i][xindex], starty + emeraldOffsets[i][1],
|
||||
V_HUDTRANS|splitflags,
|
||||
kp_rankemerald, colormap
|
||||
);
|
||||
|
||||
if (whiteFlash == true)
|
||||
{
|
||||
V_DrawScaledPatch(
|
||||
startx + emeraldOffsets[i][xindex], starty + emeraldOffsets[i][1],
|
||||
V_HUDTRANSHALF|splitflags,
|
||||
kp_rankemeraldflash
|
||||
);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
//
|
||||
// HU_DrawTabRankings -- moved here to take advantage of kart stuff!
|
||||
//
|
||||
|
|
@ -4583,13 +4478,6 @@ void K_drawKartHUD(void)
|
|||
K_DrawKartPositionNum(stplyr->position);
|
||||
}
|
||||
}
|
||||
else if (gametype == GT_BATTLE) // Battle-only (ditto)
|
||||
{
|
||||
if (!freecam && !itembreaker)
|
||||
{
|
||||
K_drawKartEmeralds();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (LUA_HudEnabled(hud_gametypeinfo))
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ static int lib_getsecspecial(lua_State *L)
|
|||
|
||||
static int lib_all7emeralds(lua_State *L)
|
||||
{
|
||||
lua_pushboolean(L, ALLCHAOSEMERALDS(luaL_checkinteger(L, 1)));
|
||||
lua_pushboolean(L, ALL7EMERALDS(luaL_checkinteger(L, 1)));
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -751,7 +751,7 @@ void Command_Getallemeralds_f(void)
|
|||
REQUIRE_SINGLEPLAYER;
|
||||
REQUIRE_PANDORA;
|
||||
|
||||
emeralds = EMERALD_ALL;
|
||||
emeralds = ((EMERALD7)*2)-1;
|
||||
|
||||
CONS_Printf(M_GetText("You now have all 7 emeralds.\n"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6432,7 +6432,7 @@ static void M_GetAllEmeralds(INT32 choice)
|
|||
{
|
||||
(void)choice;
|
||||
|
||||
emeralds = EMERALD_ALL;
|
||||
emeralds = ((EMERALD7)*2)-1;
|
||||
M_StartMessage(M_GetText("You now have all 7 emeralds.\nUse them wisely.\nWith great power comes great ring drain.\n"),NULL,MM_NOTHING);
|
||||
|
||||
G_SetGameModified(multiplayer, true);
|
||||
|
|
|
|||
|
|
@ -395,16 +395,6 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
P_DamageMobj(player->mo, special, special->target, 1, DMG_NORMAL);
|
||||
}
|
||||
return;
|
||||
case MT_EMERALD:
|
||||
if (!P_CanPickupItem(player, 0))
|
||||
return;
|
||||
|
||||
if (special->threshold > 0)
|
||||
return;
|
||||
|
||||
player->emeralds |= special->extravalue1;
|
||||
K_CheckEmeralds(player);
|
||||
break;
|
||||
/*
|
||||
case MT_EERIEFOG:
|
||||
special->frame &= ~FF_TRANS80;
|
||||
|
|
@ -1758,8 +1748,6 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source,
|
|||
break;
|
||||
}
|
||||
|
||||
K_DropEmeraldsFromPlayer(player, player->emeralds);
|
||||
|
||||
player->carry = CR_NONE;
|
||||
|
||||
K_KartResetPlayerColor(player);
|
||||
|
|
@ -1982,22 +1970,13 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
|
||||
if (damagetype & DMG_STEAL)
|
||||
{
|
||||
// Give them ALL of your emeralds instantly :)
|
||||
source->player->emeralds |= player->emeralds;
|
||||
player->emeralds = 0;
|
||||
K_CheckEmeralds(source->player);
|
||||
K_CheckBumpers();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
K_DestroyBumpers(player, takeBumpers);
|
||||
}
|
||||
|
||||
if (!(damagetype & DMG_STEAL))
|
||||
{
|
||||
// Drop all of your emeralds
|
||||
K_DropEmeraldsFromPlayer(player, player->emeralds);
|
||||
}
|
||||
}
|
||||
|
||||
if (!(type == DMG_NORMAL || type == DMG_WIPEOUT))
|
||||
|
|
|
|||
40
src/p_mobj.c
40
src/p_mobj.c
|
|
@ -1210,6 +1210,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
|||
case MT_FLINGCOIN:
|
||||
case MT_FLINGBLUESPHERE:
|
||||
case MT_FLINGNIGHTSCHIP:
|
||||
case MT_FLINGEMERALD:
|
||||
case MT_BOUNCERING:
|
||||
case MT_RAILRING:
|
||||
case MT_INFINITYRING:
|
||||
|
|
@ -1246,7 +1247,6 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
|||
case MT_LANDMINE:
|
||||
case MT_DROPTARGET:
|
||||
case MT_SINK:
|
||||
case MT_EMERALD:
|
||||
if (mo->extravalue2 > 0)
|
||||
{
|
||||
gravityadd *= mo->extravalue2;
|
||||
|
|
@ -2287,20 +2287,6 @@ boolean P_ZMovement(mobj_t *mo)
|
|||
}
|
||||
break;
|
||||
|
||||
case MT_EMERALD:
|
||||
if (P_CheckDeathPitCollide(mo))
|
||||
{
|
||||
P_RemoveMobj(mo);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mo->z <= mo->floorz || mo->z + mo->height >= mo->ceilingz)
|
||||
{
|
||||
// Stop when hitting the floor
|
||||
mo->momx = mo->momy = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case MT_RING: // Ignore still rings
|
||||
case MT_BLUESPHERE:
|
||||
case MT_FLINGRING:
|
||||
|
|
@ -7145,27 +7131,6 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
case MT_SPBEXPLOSION:
|
||||
mobj->health--;
|
||||
break;
|
||||
case MT_EMERALD:
|
||||
{
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
if (mobj->threshold > 0)
|
||||
mobj->threshold--;
|
||||
}
|
||||
break;
|
||||
case MT_BOOSTFLAME:
|
||||
if (!mobj->target || !mobj->target->health)
|
||||
{
|
||||
|
|
@ -8823,7 +8788,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
|| mobj->type == MT_FLINGCOIN
|
||||
|| mobj->type == MT_FLINGBLUESPHERE
|
||||
|| mobj->type == MT_FLINGNIGHTSCHIP
|
||||
|| mobj->type == MT_EMERALD
|
||||
|| mobj->type == MT_FLINGEMERALD
|
||||
|| mobj->type == MT_BIGTUMBLEWEED
|
||||
|| mobj->type == MT_LITTLETUMBLEWEED
|
||||
|| mobj->type == MT_CANNONBALLDECOR
|
||||
|
|
@ -9142,7 +9107,6 @@ static void P_DefaultMobjShadowScale(mobj_t *thing)
|
|||
case MT_FLINGRING:
|
||||
case MT_FLOATINGITEM:
|
||||
case MT_BLUESPHERE:
|
||||
case MT_EMERALD:
|
||||
case MT_ITEMCAPSULE:
|
||||
default:
|
||||
if (thing->flags & (MF_ENEMY|MF_BOSS))
|
||||
|
|
|
|||
|
|
@ -5688,7 +5688,7 @@ static void P_ConvertBinaryLinedefTypes(void)
|
|||
lines[i].args[0] = (lines[i].flags & ML_NOTBOUNCY) ? TMT_EACHTIMEENTERANDEXIT : TMT_EACHTIMEENTER;
|
||||
else
|
||||
lines[i].args[0] = TMT_CONTINUOUS;
|
||||
lines[i].args[1] = EMERALD_ALLCHAOS;
|
||||
lines[i].args[1] = ((EMERALD7)*2)-1;
|
||||
lines[i].args[2] = TMF_HASALL;
|
||||
lines[i].special = 337;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue