diff --git a/src/gamedata/g_mapinfo.cpp b/src/gamedata/g_mapinfo.cpp index 30b4c09ce7f..cbfdcb1f983 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 8e732291076..560085c7322 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 4c45eb3898a..528e2b37d66 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);