diff options
| -rwxr-xr-x | src/server/game/Entities/Object/Object.cpp | 2 | ||||
| -rwxr-xr-x | src/server/game/Grids/Notifiers/GridNotifiers.h | 25 |
2 files changed, 16 insertions, 11 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 36961f99ef2..66be8e2843d 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<Player*> targets; - Trinity::AnyPlayerInObjectRangeCheck check(this, GetVisibilityRange()); + Trinity::AnyPlayerInObjectRangeCheck check(this, GetVisibilityRange(), false); Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(this, targets, check); VisitNearbyWorldObject(GetVisibilityRange(), searcher); for (std::list<Player*>::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 e64db7cb065..f24fa018925 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)) + 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; + + if (!_obj->IsWithinDistInMap(u, _range)) + return false; + return true; + } - return false; - } - private: - WorldObject const* i_obj; - float i_range; + private: + WorldObject const* _obj; + float _range; + bool _reqAlive; }; class NearestPlayerInObjectRangeCheck |
