diff --git a/src/deh_tables.c b/src/deh_tables.c index 78d6a6422..4e3e668ed 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -4860,6 +4860,10 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi // MT_BSZSLAMP "S_BSWL", "S_BSWC", + + "S_BETA_PARTICLE_WHEEL", + "S_BETA_PARTICLE_ICON", + "S_BETA_PARTICLE_EXPLOSION", }; // RegEx to generate this from info.h: ^\tMT_([^,]+), --> \t"MT_\1", @@ -6099,6 +6103,11 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t "MT_BSZLAMP_L", "MT_BSZSLAMP", "MT_BSZSLCHA", + + "MT_BETA_EMITTER", + "MT_BETA_PARTICLE_PHYSICAL", + "MT_BETA_PARTICLE_VISUAL", + "MT_BETA_PARTICLE_EXPLOSION", }; const char *const MOBJFLAG_LIST[] = { diff --git a/src/info.c b/src/info.c index b86c14411..58b6e1ad0 100644 --- a/src/info.c +++ b/src/info.c @@ -999,6 +999,8 @@ char sprnames[NUMSPRITES + 1][5] = "BSWL", "BSWC", + "LCLA", + // First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later "VIEW", }; @@ -5719,6 +5721,10 @@ state_t states[NUMSTATES] = // MT_BSZSLAMP {SPR_BSWL, 0|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_BSWL {SPR_BSWC, 0|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_BSWC + + {SPR_LCLA, 0|FF_FULLBRIGHT|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BETA_PARTICLE_WHEEL + {SPR_LCLA, 1|FF_FULLBRIGHT|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BETA_PARTICLE_ICON + {SPR_LCLA, 2|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_BETA_PARTICLE_EXPLOSION }; mobjinfo_t mobjinfo[NUMMOBJTYPES] = @@ -32529,6 +32535,110 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 0, // flags S_NULL // raisestate }, + { // MT_BETA_EMITTER + 2699, // doomednum + S_INVISIBLE, // spawnstate + 1, // 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_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 0, // radius + 0, // height + 0, // dispoffset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOSECTOR|MF_SCENERY, // flags + S_NULL // raisestate + }, + { // MT_BETA_PARTICLE_PHYSICAL + -1, // doomednum + S_INVISIBLE, // spawnstate + 1, // 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_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 24*FRACUNIT, // radius + 128*FRACUNIT, // height + 0, // dispoffset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + { // MT_BETA_PARTICLE_VISUAL + -1, // doomednum + S_NULL, // spawnstate + 1, // 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_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 0, // radius + 0, // height + 0, // dispoffset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + { // MT_BETA_PARTICLE_EXPLOSION + -1, // doomednum + S_BETA_PARTICLE_EXPLOSION, // 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 + 40*FRACUNIT, // radius + 80*FRACUNIT, // height + 0, // display offset + 100, // mass + 1, // damage + sfx_None, // activesound + MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_NOHITLAGFORME|MF_SPECIAL|MF_DONTPUNT, // flags + S_NULL // raisestate + }, }; diff --git a/src/info.h b/src/info.h index 52c1b5942..339b261e0 100644 --- a/src/info.h +++ b/src/info.h @@ -1553,6 +1553,8 @@ typedef enum sprite SPR_BSWL, SPR_BSWC, + SPR_LCLA, + // First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later SPR_VIEW, @@ -6144,6 +6146,10 @@ typedef enum state S_BSWL, S_BSWC, + S_BETA_PARTICLE_WHEEL, + S_BETA_PARTICLE_ICON, + S_BETA_PARTICLE_EXPLOSION, + S_FIRSTFREESLOT, S_LASTFREESLOT = S_FIRSTFREESLOT + NUMSTATEFREESLOTS - 1, NUMSTATES @@ -7403,6 +7409,11 @@ typedef enum mobj_type MT_BSZSLAMP, MT_BSZSLCHA, + MT_BETA_EMITTER, + MT_BETA_PARTICLE_PHYSICAL, + MT_BETA_PARTICLE_VISUAL, + MT_BETA_PARTICLE_EXPLOSION, + MT_FIRSTFREESLOT, MT_LASTFREESLOT = MT_FIRSTFREESLOT + NUMMOBJFREESLOTS - 1, NUMMOBJTYPES diff --git a/src/p_mobj.c b/src/p_mobj.c index a21d676cb..555b2da35 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -11031,6 +11031,8 @@ fixed_t P_GetMobjDefaultScale(mobj_t *mobj) return 2*FRACUNIT; case MT_SPEAR: return 2*FRACUNIT; + case MT_BETA_EMITTER: + return 4*FRACUNIT; default: break; } diff --git a/src/sounds.c b/src/sounds.c index 1c9a5b841..9d0722e2a 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1251,6 +1251,8 @@ sfxinfo_t S_sfx[NUMSFX] = {"ivobal", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Ivo Ball + {"lcfuel", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Fuel Capsule explodes"}, + // Damage sounds {"dmga1", false, 255, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, {"dmga2", false, 255, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, diff --git a/src/sounds.h b/src/sounds.h index 88ba458e4..9b31bb293 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -1323,6 +1323,9 @@ typedef enum // Ivo Ball sfx_ivobal, + // Fuel Capsule + sfx_lcfuel, + // Damage sounds sfx_dmga1, sfx_dmga2,