From b658ba582ed9a2d8ca9e1224b2bb768242bb179e Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Wed, 11 May 2022 13:06:56 -0300 Subject: [PATCH] feat(Core/Map): Allow disabling the blizzlike PvP line of sight checks (#11692) --- src/server/game/Maps/Map.cpp | 8 ++++++++ src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 1 + src/server/worldserver/worldserver.conf.dist | 7 +++++++ 4 files changed, 17 insertions(+) diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index bf8b8ea09..cecd1ad03 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2440,6 +2440,14 @@ float Map::GetWaterLevel(float x, float y) const bool Map::isInLineOfSight(float x1, float y1, float z1, float x2, float y2, float z2, uint32 phasemask, LineOfSightChecks checks, VMAP::ModelIgnoreFlags ignoreFlags) const { + if (!sWorld->getBoolConfig(CONFIG_VMAP_BLIZZLIKE_PVP_LOS)) + { + if (IsBattlegroundOrArena()) + { + ignoreFlags = VMAP::ModelIgnoreFlags::Nothing; + } + } + if ((checks & LINEOFSIGHT_CHECK_VMAP) && !VMAP::VMapFactory::createOrGetVMapMgr()->isInLineOfSight(GetId(), x1, y1, z1, x2, y2, z2, ignoreFlags)) { return false; diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index cd1dbe220..4a8ae02c3 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -175,6 +175,7 @@ enum WorldBoolConfigs CONFIG_ALLOW_JOIN_BG_AND_LFG, CONFIG_MISS_CHANCE_MULTIPLIER_ONLY_FOR_PLAYERS, CONFIG_LEAVE_GROUP_ON_LOGOUT, + CONFIG_VMAP_BLIZZLIKE_PVP_LOS, BOOL_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 366f4412d..7778ed610 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1297,6 +1297,7 @@ void World::LoadConfigSettings(bool reload) bool enableLOS = sConfigMgr->GetOption("vmap.enableLOS", true); bool enableHeight = sConfigMgr->GetOption("vmap.enableHeight", true); bool enablePetLOS = sConfigMgr->GetOption("vmap.petLOS", true); + m_bool_configs[CONFIG_VMAP_BLIZZLIKE_PVP_LOS] = sConfigMgr->GetOption("vmap.BlizzlikePvPLOS", true); if (!enableHeight) LOG_ERROR("server.loading", "VMap height checking disabled! Creatures movements and other various things WILL be broken! Expect no support."); diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 45ff2bdc3..a8cefe623 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -385,6 +385,13 @@ vmap.enableHeight = 1 vmap.petLOS = 1 +# vmap.BlizzlikePvPLOS +# Description: Check line of sight for battleground and arena gameobjects and other doodads (such as WSG treestumps). +# Default: 1 - (Enabled, players will be able to fire spells through treestumps and other objects). +# 0 - (Disabled, players will NOT be able to fire spells through treestumps and other objects). + +vmap.BlizzlikePvPLOS = 1 + # # vmap.enableIndoorCheck # Description: VMap based indoor check to remove outdoor-only auras (mounts etc.).