From 7bdf9633bcf73b04c062c3c865c59d0a8d99c179 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Tue, 17 Dec 2024 10:13:09 -0500 Subject: [PATCH] Remove emeralds from battle --- src/deh_tables.c | 52 +++++----- src/doomstat.h | 33 ++----- src/f_finale.c | 4 +- src/info.c | 238 ++++++++++++++++++++++++++++++++++++++-------- src/info.h | 31 +++--- src/k_battle.c | 141 --------------------------- src/k_battle.h | 3 - src/k_hud.c | 114 +--------------------- src/lua_mathlib.c | 2 +- src/m_cheat.c | 2 +- src/m_menu.c | 2 +- src/p_inter.c | 23 +---- src/p_mobj.c | 40 +------- src/p_setup.c | 2 +- 14 files changed, 254 insertions(+), 433 deletions(-) diff --git a/src/deh_tables.c b/src/deh_tables.c index 82b0a729f..1ce1e7457 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -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}, diff --git a/src/doomstat.h b/src/doomstat.h index 808a724f4..ecb1a42b0 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -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]; diff --git a/src/f_finale.c b/src/f_finale.c index 50e1192c0..9bde2b3cd 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -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); diff --git a/src/info.c b/src/info.c index 8c335b61c..04a3b2909 100644 --- a/src/info.c +++ b/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 diff --git a/src/info.h b/src/info.h index 47e6db352..7cad130ba 100644 --- a/src/info.h +++ b/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, diff --git a/src/k_battle.c b/src/k_battle.c index de4f789ae..1098bc88b 100644 --- a/src/k_battle.c +++ b/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) { diff --git a/src/k_battle.h b/src/k_battle.h index 2ba87cadc..55dd5940a 100644 --- a/src/k_battle.h +++ b/src/k_battle.h @@ -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); diff --git a/src/k_hud.c b/src/k_hud.c index 539000069..c818abd8c 100644 --- a/src/k_hud.c +++ b/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)) diff --git a/src/lua_mathlib.c b/src/lua_mathlib.c index 8d89abeeb..eccf2ac2e 100644 --- a/src/lua_mathlib.c +++ b/src/lua_mathlib.c @@ -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; } diff --git a/src/m_cheat.c b/src/m_cheat.c index 3425e361f..c6fb807fa 100644 --- a/src/m_cheat.c +++ b/src/m_cheat.c @@ -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")); } diff --git a/src/m_menu.c b/src/m_menu.c index ace135d2f..de9bb177e 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -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); diff --git a/src/p_inter.c b/src/p_inter.c index 79b13bb00..93065afdf 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -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)) diff --git a/src/p_mobj.c b/src/p_mobj.c index 85610c6fd..bf9615d6a 100644 --- a/src/p_mobj.c +++ b/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)) diff --git a/src/p_setup.c b/src/p_setup.c index 8e86424f9..9cb1329bf 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -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;