diff options
author | Shauren <shauren.trinity@gmail.com> | 2017-02-08 20:23:37 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2017-02-08 20:23:37 +0100 |
commit | 74bb92a5822d5a52aecc9cf117309ec1e21abd92 (patch) | |
tree | 4adf8e63901efef437c0d0c1b5352b3cc09f6d01 /src | |
parent | 3a65c706572ea0d0b66b9b79a275f8d230f7991d (diff) |
Core/Maps: Adjusted WorldObject::GetGridActivationRange() to never be less than map visibility distance for active objects to ensure equal ranges for activation/deactivation of grids
Updates #19072
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 23 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 9 |
2 files changed, 11 insertions, 21 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 7610c9981c5..3f58b6cc092 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1496,23 +1496,18 @@ void WorldObject::UpdateAllowedPositionZ(float x, float y, float &z) const float WorldObject::GetGridActivationRange() const { - if (ToPlayer()) + if (isActiveObject()) { - if (ToPlayer()->GetCinematicMgr()->IsOnCinematic()) - return DEFAULT_VISIBILITY_INSTANCE; + if (GetTypeId() == TYPEID_PLAYER && ToPlayer()->GetCinematicMgr->IsOnCinematic()) + return std::max(DEFAULT_VISIBILITY_INSTANCE, GetMap()->GetVisibilityRange()); + return GetMap()->GetVisibilityRange(); } - else if (ToCreature()) - return ToCreature()->m_SightDistance; - else if (ToDynObject()) - { - if (isActiveObject()) - return GetMap()->GetVisibilityRange(); - else - return 0.0f; - } - else - return 0.0f; + + if (Creature const* thisCreature = ToCreature()) + return thisCreature->m_SightDistance; + + return 0.0f; } float WorldObject::GetVisibilityRange() const diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index d2bc9cdfb51..943f4bd759b 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -721,14 +721,9 @@ void Map::Update(const uint32 t_diff) VisitNearbyCellsOf(player, grid_object_update, world_object_update); - // If player is using far sight, visit that object too + // If player is using far sight or mind vision, visit that object too if (WorldObject* viewPoint = player->GetViewpoint()) - { - if (Creature* viewCreature = viewPoint->ToCreature()) - VisitNearbyCellsOf(viewCreature, grid_object_update, world_object_update); - else if (DynamicObject* viewObject = viewPoint->ToDynObject()) - VisitNearbyCellsOf(viewObject, grid_object_update, world_object_update); - } + VisitNearbyCellsOf(viewPoint, grid_object_update, world_object_update); // Handle updates for creatures in combat with player and are more than 60 yards away if (player->IsInCombat()) |