From ff497996a36c0856d19600b3dfb9e0b22333a7eb Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 21 Aug 2021 10:54:59 +0200 Subject: [PATCH] - added a per-level AVOIDMELEE flag. This already existed as a per-actor flag, but for proper MBF support it needs to be settable on a per-map basis as well. --- src/gamedata/g_mapinfo.cpp | 1 + src/gamedata/g_mapinfo.h | 1 + src/playsim/p_enemy.cpp | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gamedata/g_mapinfo.cpp b/src/gamedata/g_mapinfo.cpp index 30b4c09ce..cbfdcb1f9 100644 --- a/src/gamedata/g_mapinfo.cpp +++ b/src/gamedata/g_mapinfo.cpp @@ -1662,6 +1662,7 @@ MapFlagHandlers[] = { "enableshadowmap", MITYPE_CLRFLAG3, LEVEL3_NOSHADOWMAP, 0 }, { "enableskyboxao", MITYPE_SETFLAG3, LEVEL3_SKYBOXAO, 0 }, { "disableskyboxao", MITYPE_CLRFLAG3, LEVEL3_SKYBOXAO, 0 }, + { "avoidmelee", MITYPE_SETFLAG3, LEVEL3_AVOIDMELEE, 0 }, { "nobotnodes", MITYPE_IGNORE, 0, 0 }, // Skulltag option: nobotnodes { "compat_shorttex", MITYPE_COMPATFLAG, COMPATF_SHORTTEX, 0 }, { "compat_stairs", MITYPE_COMPATFLAG, COMPATF_STAIRINDEX, 0 }, diff --git a/src/gamedata/g_mapinfo.h b/src/gamedata/g_mapinfo.h index 8e7322910..560085c73 100644 --- a/src/gamedata/g_mapinfo.h +++ b/src/gamedata/g_mapinfo.h @@ -258,6 +258,7 @@ enum ELevelFlags : unsigned int LEVEL3_E4M8SPECIAL = 0x00004000, LEVEL3_E4M6SPECIAL = 0x00008000, LEVEL3_NOSHADOWMAP = 0x00010000, // disables shadowmaps for a given level. + LEVEL3_AVOIDMELEE = 0x00020000, // global flag needed for proper MBF support. }; diff --git a/src/playsim/p_enemy.cpp b/src/playsim/p_enemy.cpp index 4c45eb389..528e2b37d 100644 --- a/src/playsim/p_enemy.cpp +++ b/src/playsim/p_enemy.cpp @@ -943,7 +943,7 @@ void P_NewChaseDir(AActor * actor) if (target->health > 0 && !actor->IsFriend(target) && target != actor->goal) { // Live enemy target - if (actor->flags3 & MF3_AVOIDMELEE) + if ((actor->flags3 & MF3_AVOIDMELEE) || (actor->Level->flags3 & LEVEL3_AVOIDMELEE)) { bool ismeleeattacker = false; double dist = actor->Distance2D(target);