diff --git a/src/game/Entities/GameObject.cpp b/src/game/Entities/GameObject.cpp index 31602ed2c2e..fb625347f44 100644 --- a/src/game/Entities/GameObject.cpp +++ b/src/game/Entities/GameObject.cpp @@ -303,6 +303,9 @@ bool GameObject::Create(uint32 dbGuid, uint32 guidlow, uint32 name_id, Map* map, if (GetGOInfo()->IsLargeGameObject() && GetVisibilityData().GetVisibilityDistance() < VISIBILITY_DISTANCE_LARGE) GetVisibilityData().SetVisibilityDistanceOverride(VisibilityDistanceType::Large); + if (GetGOInfo()->IsInfiniteGameObject()) + GetVisibilityData().SetVisibilityDistanceOverride(VisibilityDistanceType::Infinite); + return true; } diff --git a/src/game/Entities/GameObject.h b/src/game/Entities/GameObject.h index cb85dfcff2a..c18d7f2f5e6 100644 --- a/src/game/Entities/GameObject.h +++ b/src/game/Entities/GameObject.h @@ -587,6 +587,21 @@ struct GameObjectInfo } } + bool IsInfiniteGameObject() const + { + switch (type) + { + case GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING: return true; + case GAMEOBJECT_TYPE_TRAPDOOR: return true; + default: return false; + } + } + + bool IsLargeOrBiggerGameObject() const + { + return IsLargeGameObject() || IsInfiniteGameObject(); + } + bool IsServerOnly() const { switch (type) diff --git a/src/game/Globals/ObjectMgr.cpp b/src/game/Globals/ObjectMgr.cpp index ae61b0776c8..5ad6b138521 100644 --- a/src/game/Globals/ObjectMgr.cpp +++ b/src/game/Globals/ObjectMgr.cpp @@ -1731,7 +1731,7 @@ void ObjectMgr::LoadSpawnGroups() entry.Active = true; break; } - else if (specials && goInfo->IsLargeGameObject()) + else if (specials && goInfo->IsLargeOrBiggerGameObject()) { entry.Large = true; break; @@ -2674,7 +2674,7 @@ void ObjectMgr::LoadGameObjects() if (sWorld.getConfig(CONFIG_BOOL_AUTOLOAD_ACTIVE) && gInfo && gInfo->ExtraFlags & GAMEOBJECT_EXTRA_FLAG_ACTIVE) m_activeGameObjects.emplace(data.mapid, guid); - else if (sWorld.getConfig(CONFIG_BOOL_SPECIALS_ACTIVE) && gInfo && gInfo->IsLargeGameObject()) + else if (sWorld.getConfig(CONFIG_BOOL_SPECIALS_ACTIVE) && gInfo && gInfo->IsLargeOrBiggerGameObject()) m_largeGameObjects.emplace(data.mapid, guid); }