Remove MF_MONITOR

This commit is contained in:
James R 2023-11-13 18:57:58 -08:00
parent 3033c6928b
commit 39a7c3b3ad
11 changed files with 43 additions and 115 deletions

View file

@ -5618,7 +5618,7 @@ static INT16 Consistancy(void)
if (TypeIsNetSynced(mo->type) == false)
continue;
if (mo->flags & (MF_SPECIAL | MF_SOLID | MF_PUSHABLE | MF_BOSS | MF_MISSILE | MF_SPRING | MF_MONITOR | MF_FIRE | MF_ENEMY | MF_PAIN))
if (mo->flags & (MF_SPECIAL | MF_SOLID | MF_PUSHABLE | MF_BOSS | MF_MISSILE | MF_SPRING | MF_FIRE | MF_ENEMY | MF_PAIN))
{
ret -= mo->type;
ret += mo->x;

View file

@ -5987,7 +5987,7 @@ const char *const MOBJFLAG_LIST[] = {
"SLOPE",
"MISSILE",
"SPRING",
"MONITOR",
"\x01", // free: 1<<17 (name un-matchable)
"NOTHINK",
"NOCLIPHEIGHT",
"ENEMY",

View file

@ -1330,7 +1330,7 @@ readghosttic:
z = READFIXED(g->p);
angle = READANGLE(g->p);
if (!(mobjinfo[type].flags & MF_SHOOTABLE)
|| !(mobjinfo[type].flags & (MF_ENEMY|MF_MONITOR))
|| !(mobjinfo[type].flags & MF_ENEMY)
|| health != 0 || i >= 4) // only spawn for the first 4 hits per frame, to prevent ghosts from splode-spamming too bad.
continue;
poof = P_SpawnMobj(x, y, z, MT_GHOST);

View file

@ -9548,7 +9548,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_RING_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9575,7 +9575,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_PITY_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9602,7 +9602,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_ATTRACT_ICON,// damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9629,7 +9629,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_FORCE_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9656,7 +9656,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_ARMAGEDDON_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9683,7 +9683,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_WHIRLWIND_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9710,7 +9710,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_ELEMENTAL_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9737,7 +9737,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_SNEAKERS_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9764,7 +9764,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_INVULN_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9791,7 +9791,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_1UP_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9818,7 +9818,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_EGGMAN_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9845,7 +9845,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_MIXUP_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9872,7 +9872,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_UNKNOWN, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9899,7 +9899,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_GRAVITY_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9926,7 +9926,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_RECYCLER_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9953,7 +9953,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_SCORE1K_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -9980,7 +9980,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_SCORE10K_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -10007,7 +10007,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_FLAMEAURA_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -10034,7 +10034,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_BUBBLEWRAP_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -10061,7 +10061,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_THUNDERCOIN_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -10088,7 +10088,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_PITY_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10115,7 +10115,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_ATTRACT_ICON,// damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10142,7 +10142,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_FORCE_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10169,7 +10169,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_ARMAGEDDON_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10196,7 +10196,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_WHIRLWIND_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10223,7 +10223,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_ELEMENTAL_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10250,7 +10250,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_SNEAKERS_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10277,7 +10277,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_INVULN_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10304,7 +10304,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_EGGMAN_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10331,7 +10331,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_GRAVITY_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10358,7 +10358,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_FLAMEAURA_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10385,7 +10385,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_BUBBLEWRAP_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10412,7 +10412,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_THUNDERCOIN_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
MF_SOLID|MF_SHOOTABLE|MF_GRENADEBOUNCE, // flags
S_NULL // raisestate
},
@ -10439,7 +10439,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_RING_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},
@ -10466,7 +10466,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
MT_RING_ICON, // damage
sfx_None, // activesound
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
MF_SOLID|MF_SHOOTABLE, // flags
S_NULL // raisestate
},

View file

@ -1017,7 +1017,6 @@ static mobj_t *SearchMarioNode(msecnode_t *node)
}
// Ignore popped monitors, too.
if (node->m_thing->health == 0 // this only really applies for monitors
|| (!(node->m_thing->flags & MF_MONITOR) && (mobjinfo[node->m_thing->type].flags & MF_MONITOR)) // gold monitor support
|| (node->m_thing->type == MT_RANDOMITEM))
continue;
// Okay, we found something valid.
@ -2344,7 +2343,6 @@ void EV_MarioBlock(ffloor_t *rover, sector_t *sector, mobj_t *puncher)
fixed_t topheight = *rover->topheight;
mariothink_t *block;
mobj_t *thing;
fixed_t oldx = 0, oldy = 0, oldz = 0;
I_Assert(puncher != NULL);
I_Assert(puncher->player != NULL);
@ -2362,7 +2360,6 @@ void EV_MarioBlock(ffloor_t *rover, sector_t *sector, mobj_t *puncher)
S_StartSound(puncher, sfx_mario1); // "Thunk!" sound - puncher is "close enough".
else // Found something!
{
const boolean itsamonitor = (thing->flags & MF_MONITOR) == MF_MONITOR;
// create and initialize new elevator thinker
block = Z_Calloc(sizeof (*block), PU_LEVSPEC, NULL);
@ -2383,13 +2380,6 @@ void EV_MarioBlock(ffloor_t *rover, sector_t *sector, mobj_t *puncher)
R_CreateInterpolator_SectorPlane(&block->thinker, roversec, false);
R_CreateInterpolator_SectorPlane(&block->thinker, roversec, true);
if (itsamonitor)
{
oldx = thing->x;
oldy = thing->y;
oldz = thing->z;
}
P_UnsetThingPosition(thing);
thing->x = thing->old_x = sector->soundorg.x;
thing->y = thing->old_y = sector->soundorg.y;
@ -2410,16 +2400,5 @@ void EV_MarioBlock(ffloor_t *rover, sector_t *sector, mobj_t *puncher)
// "Powerup rise" sound
S_StartSound(puncher, sfx_mario9); // Puncher is "close enough"
}
if (itsamonitor && thing)
{
P_UnsetThingPosition(thing);
thing->x = thing->old_x = oldx;
thing->y = thing->old_y = oldy;
thing->z = thing->old_z = oldz;
thing->momx = 1;
thing->momy = 1;
P_SetThingPosition(thing);
}
}
}

View file

@ -1537,7 +1537,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
target->momx = target->momy = target->momz = 0;
// SRB2kart
if (target->type != MT_PLAYER && !(target->flags & MF_MONITOR)
if (target->type != MT_PLAYER
&& !(target->type == MT_ORBINAUT || target->type == MT_ORBINAUT_SHIELD
|| target->type == MT_JAWZ || target->type == MT_JAWZ_SHIELD
|| target->type == MT_BANANA || target->type == MT_BANANA_SHIELD
@ -1630,7 +1630,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
// if killed by a player
if (source && source->player)
{
if (target->flags & MF_MONITOR || target->type == MT_RANDOMITEM)
if (target->type == MT_RANDOMITEM)
{
P_SetTarget(&target->target, source);

View file

@ -4220,7 +4220,7 @@ static BlockItReturn_t PIT_RadiusAttack(mobj_t *thing)
if ((bombdamagetype & DMG_CANTHURTSELF) && bombsource && thing->type == bombsource->type) // ignore the type of guys who dropped the bomb (Jetty-Syn Bomber or Skim can bomb eachother, but not themselves.)
return BMIT_CONTINUE;
if ((thing->flags & (MF_MONITOR|MF_SHOOTABLE)) != MF_SHOOTABLE)
if ((thing->flags & MF_SHOOTABLE) != MF_SHOOTABLE)
return BMIT_CONTINUE;
dx = abs(thing->x - bombspot->x);

View file

@ -10058,48 +10058,6 @@ static void K_MineExplodeThink(mobj_t *mobj)
}
}
static void P_MonitorFuseThink(mobj_t *mobj)
{
mobj_t *newmobj;
// Special case for ALL monitors.
// If a box's speed is nonzero, it's allowed to respawn as a WRM/SRM.
if (mobj->info->speed != 0 && (mobj->flags2 & (MF2_AMBUSH|MF2_STRONGBOX)))
{
mobjtype_t spawnchance[64];
INT32 numchoices = 0, i = 0;
// This define should make it a lot easier to organize and change monitor weights
#define SETMONITORCHANCES(type, strongboxamt, weakboxamt) \
for (i = ((mobj->flags2 & MF2_STRONGBOX) ? strongboxamt : weakboxamt); i; --i) spawnchance[numchoices++] = type
// Type SRM WRM
SETMONITORCHANCES(MT_SNEAKERS_BOX, 0, 10); // Super Sneakers
SETMONITORCHANCES(MT_INVULN_BOX, 2, 0); // Invincibility
SETMONITORCHANCES(MT_WHIRLWIND_BOX, 3, 8); // Whirlwind Shield
SETMONITORCHANCES(MT_ELEMENTAL_BOX, 3, 8); // Elemental Shield
SETMONITORCHANCES(MT_ATTRACT_BOX, 2, 0); // Attraction Shield
SETMONITORCHANCES(MT_FORCE_BOX, 3, 3); // Force Shield
SETMONITORCHANCES(MT_ARMAGEDDON_BOX, 2, 0); // Armageddon Shield
SETMONITORCHANCES(MT_MIXUP_BOX, 0, 1); // Teleporters
SETMONITORCHANCES(MT_RECYCLER_BOX, 0, 1); // Recycler
SETMONITORCHANCES(MT_1UP_BOX, 1, 1); // 1-Up
// =======================================
// Total 16 32
#undef SETMONITORCHANCES
i = P_RandomKey(PR_UNDEFINED, numchoices); // Gotta love those random numbers!
newmobj = P_SpawnMobj(mobj->x, mobj->y, mobj->z, spawnchance[i]);
}
else
newmobj = P_SpawnMobj(mobj->x, mobj->y, mobj->z, mobj->type);
// Transfer flags2 (ambush, strongbox, objectflip)
newmobj->flags2 = mobj->flags2;
P_RemoveMobj(mobj); // make sure they disappear
}
static boolean P_CanFlickerFuse(mobj_t *mobj)
{
switch (mobj->type)
@ -10148,11 +10106,6 @@ static boolean P_FuseThink(mobj_t *mobj)
if (LUA_HookMobj(mobj, MOBJ_HOOK(MobjFuse)) || P_MobjWasRemoved(mobj))
;
else if (mobj->info->flags & MF_MONITOR)
{
P_MonitorFuseThink(mobj);
return false;
}
else switch (mobj->type)
{
// gargoyle and snowman handled in P_PushableThinker, not here

View file

@ -137,8 +137,7 @@ typedef enum
MF_MISSILE = 1<<15,
// Item is a spring.
MF_SPRING = 1<<16,
// Item box
MF_MONITOR = 1<<17,
// free: 1<<17
// Don't run the thinker for this object.
MF_NOTHINK = 1<<18,
// Don't adjust z if below or above floorz/ceilingz

View file

@ -2709,9 +2709,6 @@ void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius)
if (!(mo->flags & MF_SHOOTABLE) && (mo->type != MT_SPB)) // Don't want to give SPB MF_SHOOTABLE, to ensure it's undamagable through other means
continue;
if (mo->flags & MF_MONITOR)
continue; // Monitors cannot be 'nuked'.
if (abs(inflictor->x - mo->x) > radius || abs(inflictor->y - mo->y) > radius || abs(inflictor->z - mo->z) > radius)
continue; // Workaround for possible integer overflow in the below -Red

View file

@ -240,7 +240,7 @@ static boolean is_tangible (mobj_t *thing)
// These objects probably do nothing! :D
if ((thing->flags & (MF_SPECIAL|MF_SOLID|MF_SHOOTABLE
|MF_PUSHABLE|MF_BOSS|MF_MISSILE|MF_SPRING
|MF_MONITOR|MF_ENEMY|MF_PAIN
|MF_ENEMY|MF_PAIN
|MF_PICKUPFROMBELOW)) == 0U)
{
return false;