diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 36961f99ef..66be8e2843 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2724,7 +2724,7 @@ void WorldObject::DestroyForNearbyPlayers() return; std::list targets; - Trinity::AnyPlayerInObjectRangeCheck check(this, GetVisibilityRange()); + Trinity::AnyPlayerInObjectRangeCheck check(this, GetVisibilityRange(), false); Trinity::PlayerListSearcher searcher(this, targets, check); VisitNearbyWorldObject(GetVisibilityRange(), searcher); for (std::list::const_iterator iter = targets.begin(); iter != targets.end(); ++iter) diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index e64db7cb06..f24fa01892 100755 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -1145,18 +1145,23 @@ namespace Trinity class AnyPlayerInObjectRangeCheck { - public: - AnyPlayerInObjectRangeCheck(WorldObject const* obj, float range) : i_obj(obj), i_range(range) {} - bool operator()(Player* u) - { - if (u->isAlive() && i_obj->IsWithinDistInMap(u, i_range)) - return true; + public: + AnyPlayerInObjectRangeCheck(WorldObject const* obj, float range, bool reqAlive = true) : _obj(obj), _range(range), _reqAlive(reqAlive) {} + bool operator()(Player* u) + { + if (_reqAlive && !u->isAlive()) + return false; - return false; - } - private: - WorldObject const* i_obj; - float i_range; + if (!_obj->IsWithinDistInMap(u, _range)) + return false; + + return true; + } + + private: + WorldObject const* _obj; + float _range; + bool _reqAlive; }; class NearestPlayerInObjectRangeCheck