diff --git a/src/deh_tables.c b/src/deh_tables.c index 76febc4a6..5d32595f4 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -3329,6 +3329,53 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi "S_WHITEDANDELION", "S_MAR64TREE", + // Power up mushrooms + "S_LIFESHROOM", + "S_LIFESHROOM2", + "S_LIFESHROOMD", + "S_LIFESHROOM_INVISIBLE", + "S_LIFESHROOM_INVISIBLE_TOUCH", + + "S_POISONSHROOM", + "S_POISONSHROOM2", + "S_POISONSHROOMD", + + "S_NUKESHROOM", + "S_NUKESHROOM2", + "S_NUKESHROOMD", + + "S_FORCESHROOM", + "S_FORCESHROOM2", + "S_FORCESHROOMD", + + "S_ATTRACTSHROOM", + "S_ATTRACTSHROOM2", + "S_ATTRACTSHROOMD", + + "S_ELEMENTALSHROOM", + "S_ELEMENTALSHROOM2", + "S_ELEMENTALSHROOMD", + + "S_CLOUDSHROOM", + "S_CLOUDSHROOM2", + "S_CLOUDSHROOMD", + + "S_STARMAN", + "S_STARMAN1", + "S_STARMAN2", + "S_STARMAN3", + "S_STARMAND", + + "S_SPEEDWINGS", + "S_SPEEDWINGSD", + + "S_PARTICLEPICKUP1", + "S_PARTICLEPICKUP2", + "S_1000SCOREAWARD", + "S_POWERUPAWARD", + "S_POWERUPAWARD1", + "S_POWERUPAWARD2", + // Nights-specific stuff "S_NIGHTSDRONE_MAN1", "S_NIGHTSDRONE_MAN2", @@ -4341,6 +4388,19 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t "MT_WHITEDANDELION", "MT_MAR64TREE", + // Power up mushrooms + "MT_LIFESHROOM", + "MT_LIFESHROOM_INVISIBLE", + "MT_POISONSHROOM", + "MT_NUKESHROOM", + "MT_FORCESHROOM", + "MT_ATTRACTSHROOM", + "MT_ELEMENTALSHROOM", + "MT_CLOUDSHROOM", + "MT_STARMAN", + "MT_SPEEDWINGS", + "MT_POWERUPAWARD", + // NiGHTS Stuff "MT_AXIS", "MT_AXISTRANSFER", diff --git a/src/info.c b/src/info.c index 33b4064af..d891ab270 100644 --- a/src/info.c +++ b/src/info.c @@ -483,6 +483,18 @@ char sprnames[NUMSPRITES + 1][MAXSPRITENAME + 1] = "MFWD", "MUS3", + // Mario powerups + "MSIV", // invincibility + "MS1P", // 1-up + "MSAT", // attract + "MSFO", // force + "MSAR", // nuke + "MSWW", // whirlwind + "MSEL", // elemental + "MSSP", // speed shoes + "MEGH", // poison + "UPPB", // particle pickup + // NiGHTS Stuff "NDRN", // NiGHTS drone "NSPK", // NiGHTS sparkle @@ -3796,6 +3808,54 @@ state_t states[NUMSTATES] = {SPR_MFWD, FF_ANIMATE, -1, {NULL}, 3, 6, S_NULL, 0}, // S_WHITEDANDELION {SPR_MUS3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MAR64TREE + // Mario powerups + {SPR_MS1P, 0, 1, {A_FlickyHop}, FRACUNIT/6, 5*FRACUNIT, S_LIFESHROOM2, 0}, // S_LIFESHROOM + {SPR_MS1P, 0, 1, {A_FlickyAim}, ANGLE_90, 64*FRACUNIT, S_LIFESHROOM, 0}, // S_LIFESHROOM2 + {SPR_MS1P, 0, 1, {A_ExtraLife}, 0, 0, S_PARTICLEPICKUP1, 0}, // S_LIFESHROOMD + + {SPR_NULL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LIFESHROOM_INVISIBLE + {SPR_NULL, 0, 1, {A_ExtraLife}, 0, 0, S_NULL, 0}, // S_LIFESHROOM_INVISIBLE_TOUCH + + {SPR_MEGH, 0, 1, {A_FlickyHop}, FRACUNIT/6, 5*FRACUNIT, S_POISONSHROOM2, 0}, // S_POISONSHROOM + {SPR_MEGH, 0, 1, {A_FlickyAim}, ANGLE_90, 64*FRACUNIT, S_POISONSHROOM, 0}, // S_POISONSHROOM2 + {SPR_MEGH, 0, 1, {A_EggmanBox}, 0, 0, S_PARTICLEPICKUP1, 0}, // S_POISONSHROOMD + + {SPR_MSAR, 0, 1, {A_FlickyHop}, FRACUNIT/6, 5*FRACUNIT, S_NUKESHROOM2, 0}, // S_NUKESHROOM + {SPR_MSAR, 0, 1, {A_FlickyAim}, ANGLE_90, 64*FRACUNIT, S_NUKESHROOM, 0}, // S_NUKESHROOM2 + {SPR_MSAR, 0, 1, {A_GiveShield}, SH_ARMAGEDDON, 0, S_1000SCOREAWARD, 0}, // S_NUKESHROOMD + + {SPR_MSFO, 0, 1, {A_FlickyHop}, FRACUNIT/6, 5*FRACUNIT, S_FORCESHROOM2, 0}, // S_FORCESHROOM + {SPR_MSFO, 0, 1, {A_FlickyAim}, ANGLE_90, 64*FRACUNIT, S_FORCESHROOM, 0}, // S_FORCESHROOM2 + {SPR_MSFO, 0, 1, {A_GiveShield}, SH_FORCE|1, 0, S_1000SCOREAWARD, 0}, // S_FORCESHROOMD + + {SPR_MSAT, 0, 1, {A_FlickyHop}, FRACUNIT/6, 5*FRACUNIT, S_ATTRACTSHROOM2, 0}, // S_ATTRACTSHROOM + {SPR_MSAT, 0, 1, {A_FlickyAim}, ANGLE_90, 64*FRACUNIT, S_ATTRACTSHROOM, 0}, // S_ATTRACTSHROOM2 + {SPR_MSAT, 0, 1, {A_GiveShield}, SH_ATTRACT, 0, S_1000SCOREAWARD, 0}, // S_ATTRACTSHROOMD + + {SPR_MSEL, 0, 1, {A_FlickyHop}, FRACUNIT/6, 5*FRACUNIT, S_ELEMENTALSHROOM2, 0}, // S_ELEMENTALSHROOM + {SPR_MSEL, 0, 1, {A_FlickyAim}, ANGLE_90, 64*FRACUNIT, S_ELEMENTALSHROOM, 0}, // S_ELEMENTALSHROOM2 + {SPR_MSEL, 0, 1, {A_GiveShield}, SH_ELEMENTAL, 0, S_1000SCOREAWARD, 0}, // S_ELEMENTALSHROOMD + + {SPR_MSWW, 0, 1, {A_FlickyHop}, FRACUNIT/6, 5*FRACUNIT, S_CLOUDSHROOM2, 0}, // S_CLOUDSHROOM + {SPR_MSWW, 0, 1, {A_FlickyAim}, ANGLE_90, 64*FRACUNIT, S_CLOUDSHROOM, 0}, // S_CLOUDSHROOM2 + {SPR_MSWW, 0, 1, {A_GiveShield}, SH_WHIRLWIND, 0, S_1000SCOREAWARD, 0}, // S_CLOUDSHROOMD + + {SPR_MSIV, 0, 1, {A_Look}, 3, 1, S_STARMAN, 0}, // S_STARMAN + {SPR_MSIV, 0, 2, {A_BunnyHop}, 7, 6, S_STARMAN2, 0}, // S_STARMAN1 + {SPR_MSIV, 0, 1, {A_SmokeTrailer}, MT_BOXSPARKLE, 0, S_STARMAN3, 0}, // S_STARMAN2 + {SPR_MSIV, 0, 1, {A_GhostMe}, 0, 0, S_STARMAN1, 0}, // S_STARMAN3 + {SPR_MSIV, 0, 1, {A_Invincibility}, 0, 0, S_PARTICLEPICKUP1, 0}, // S_STARMAND + + {SPR_MSSP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SPEEDWINGS + {SPR_MSSP, 0, 1, {A_SuperSneakers}, 0, 0, S_NULL, 0}, // S_SPEEDWINGSD + + {SPR_UPPB, FF_ADD, 1, {A_ForceStop}, 0, 0, S_PARTICLEPICKUP2, 0}, // S_PARTICLEPICKUP1 + {SPR_UPPB, 1|FF_ANIMATE|FF_ADD, 19, {NULL}, 18, 1, S_NULL, 0}, // S_PARTICLEPICKUP2 + {SPR_NULL, 0, 1, {A_SpawnObjectRelative}, 0, MT_POWERUPAWARD, S_PARTICLEPICKUP1, 0}, // S_1000SCOREAWARD + {SPR_NULL, 0, 1, {NULL}, 0, 0, S_POWERUPAWARD1, 0}, // S_POWERUPAWARD + {SPR_NULL, 0, 1, {A_FindTarget}, MT_PLAYER, 0, S_POWERUPAWARD2, 0}, // S_POWERUPAWARD1 + {SPR_NULL, 0, 1, {A_AwardScore}, 0, 0, S_NULL, 0}, // S_POWERUPAWARD2 + // Nights Drone {SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN2, 0}, // S_NIGHTSDRONE_MAN1 {SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN1, 0}, // S_NIGHTSDRONE_MAN2 @@ -19565,7 +19625,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 100, // mass 1, // damage sfx_mario1, // activesound - MF_SPECIAL|MF_SHOOTABLE|MF_BOUNCE, // flags + MF_SPECIAL|MF_SHOOTABLE|MF_ENEMY, // flags S_NULL // raisestate }, @@ -20135,6 +20195,303 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, + { // MT_LIFESHROOM + 1826, // doomednum + S_LIFESHROOM, // 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_LIFESHROOMD, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_LIFESHROOM_INVISIBLE + 1841, // doomednum + S_LIFESHROOM_INVISIBLE, // 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_LIFESHROOM_INVISIBLE_TOUCH, // deathstate + S_NULL, // xdeathstate + sfx_mario3, // deathsound + -3072, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_POISONSHROOM + 2303, // doomednum + S_POISONSHROOM, // 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_POISONSHROOMD,// deathstate + S_NULL, // xdeathstate + sfx_mario3, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_NUKESHROOM + 1829, // doomednum + S_NUKESHROOM, // 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_NUKESHROOMD, // deathstate + S_NULL, // xdeathstate + sfx_mario3, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_FORCESHROOM + 1828, // doomednum + S_FORCESHROOM, // 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_FORCESHROOMD, // deathstate + S_NULL, // xdeathstate + sfx_mario3, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_ATTRACTSHROOM + 1827, // doomednum + S_ATTRACTSHROOM,// 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_ATTRACTSHROOMD, // deathstate + S_NULL, // xdeathstate + sfx_mario3, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_ELEMENTALSHROOM + 1831, // doomednum + S_ELEMENTALSHROOM, // 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_ELEMENTALSHROOMD, // deathstate + S_NULL, // xdeathstate + sfx_mario3, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_CLOUDSHROOM + 1830, // doomednum + S_CLOUDSHROOM, // 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_CLOUDSHROOMD, // deathstate + S_NULL, // xdeathstate + sfx_mario3, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_STARMAN + 1825, // doomednum + S_STARMAN, // spawnstate + 1000, // spawnhealth + S_STARMAN1, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_STARMAND, // deathstate + S_NULL, // xdeathstate + sfx_mario3, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_SPEEDWINGS + 2304, // doomednum + S_SPEEDWINGS, // 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_SPEEDWINGSD, // deathstate + S_NULL, // xdeathstate + sfx_mario3, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_POWERUPAWARD + -1, // doomednum + S_POWERUPAWARD, // 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_mario4, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 24*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SLIDEME|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + { // MT_AXIS 1700, // doomednum S_INVISIBLE, // spawnstate diff --git a/src/info.h b/src/info.h index 57edf289d..9404b9401 100644 --- a/src/info.h +++ b/src/info.h @@ -1034,6 +1034,18 @@ typedef enum sprite SPR_MFWD, SPR_MUS3, + // Mario powerups + SPR_MSIV, // invincibility + SPR_MS1P, // 1-up + SPR_MSAT, // attract + SPR_MSFO, // force + SPR_MSAR, // nuke + SPR_MSWW, // whirlwind + SPR_MSEL, // elemental + SPR_MSSP, // speed shoes + SPR_MEGH, // poison + SPR_UPPB, // particle pickup + // NiGHTS Stuff SPR_NDRN, // NiGHTS drone SPR_NSPK, // NiGHTS sparkle @@ -4175,6 +4187,53 @@ typedef enum state S_WHITEDANDELION, S_MAR64TREE, + // Power up mushrooms + S_LIFESHROOM, + S_LIFESHROOM2, + S_LIFESHROOMD, + S_LIFESHROOM_INVISIBLE, + S_LIFESHROOM_INVISIBLE_TOUCH, + + S_POISONSHROOM, + S_POISONSHROOM2, + S_POISONSHROOMD, + + S_NUKESHROOM, + S_NUKESHROOM2, + S_NUKESHROOMD, + + S_FORCESHROOM, + S_FORCESHROOM2, + S_FORCESHROOMD, + + S_ATTRACTSHROOM, + S_ATTRACTSHROOM2, + S_ATTRACTSHROOMD, + + S_ELEMENTALSHROOM, + S_ELEMENTALSHROOM2, + S_ELEMENTALSHROOMD, + + S_CLOUDSHROOM, + S_CLOUDSHROOM2, + S_CLOUDSHROOMD, + + S_STARMAN, + S_STARMAN1, + S_STARMAN2, + S_STARMAN3, + S_STARMAND, + + S_SPEEDWINGS, + S_SPEEDWINGSD, + + S_PARTICLEPICKUP1, + S_PARTICLEPICKUP2, + S_1000SCOREAWARD, + S_POWERUPAWARD, + S_POWERUPAWARD1, + S_POWERUPAWARD2, + // Nights-specific stuff S_NIGHTSDRONE_MAN1, S_NIGHTSDRONE_MAN2, @@ -5214,6 +5273,19 @@ typedef enum mobj_type MT_WHITEDANDELION, MT_MAR64TREE, + // Power up mushrooms + MT_LIFESHROOM, + MT_LIFESHROOM_INVISIBLE, + MT_POISONSHROOM, + MT_NUKESHROOM, + MT_FORCESHROOM, + MT_ATTRACTSHROOM, + MT_ELEMENTALSHROOM, + MT_CLOUDSHROOM, + MT_STARMAN, + MT_SPEEDWINGS, + MT_POWERUPAWARD, + // NiGHTS Stuff MT_AXIS, MT_AXISTRANSFER,