From 74d1f1bfb7d5dc3d9fd0bde9d02d23e89f8777ab Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 13 Nov 2023 00:54:35 -0800 Subject: [PATCH] Add MF_DONTPUNT --- src/d_clisrv.c | 2 +- src/deh_tables.c | 2 +- src/p_mobj.h | 3 ++- src/r_bbox.c | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index f030fa7b0..dc6b93bc8 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -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_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 | MF_DONTPUNT)) { ret -= mo->type; ret += mo->x; diff --git a/src/deh_tables.c b/src/deh_tables.c index 6c70886a9..d521a63de 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -5993,7 +5993,7 @@ const char *const MOBJFLAG_LIST[] = { "ENEMY", "SCENERY", "PAIN", - "\x01", // free: 1<<23 (name un-matchable) + "DONTPUNT", "APPLYTERRAIN", "NOCLIPTHING", "GRENADEBOUNCE", diff --git a/src/p_mobj.h b/src/p_mobj.h index 435bc9235..d469552cb 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -148,7 +148,8 @@ typedef enum MF_SCENERY = 1<<21, // Painful (shit hurts). MF_PAIN = 1<<22, - // free: 1<<23 + // Object cannot be punted by invincible players. (Default CAN be punted, if it deals damage or is solid.) + MF_DONTPUNT = 1<<23, // Object uses terrain effects. (Overlays, footsteps, etc) MF_APPLYTERRAIN = 1<<24, // for chase camera, don't be blocked by things (partial clipping) diff --git a/src/r_bbox.c b/src/r_bbox.c index ed6c54988..b828e989d 100644 --- a/src/r_bbox.c +++ b/src/r_bbox.c @@ -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_ENEMY|MF_PAIN + |MF_ENEMY|MF_PAIN|MF_DONTPUNT |MF_PICKUPFROMBELOW)) == 0U) { return false;