diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index d39645bb4c..173030d493 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1776,6 +1776,8 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo WorldObject const* viewpoint = this; if (Player const* thisPlayer = ToPlayer()) { + viewpoint = thisPlayer->GetSeer(); + if (Creature const* creature = obj->ToCreature()) { if (TempSummon const* tempSummon = creature->ToTempSummon()) @@ -1815,13 +1817,8 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo return false; } - if (thisPlayer->GetViewpoint()) - viewpoint = thisPlayer->GetViewpoint(); - if (thisPlayer->GetFarSightDistance() && !thisPlayer->isInFront(obj)) - { return false; - } } // Xinef: check reversely obj vs viewpoint, object could be a gameObject which overrides _IsWithinDist function to include gameobject size diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index ef7ca602d9..7154eaa33e 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2351,6 +2351,7 @@ public: void SetMover(Unit* target); void SetSeer(WorldObject* target) { m_seer = target; } + WorldObject* GetSeer() const { return m_seer; } void SetViewpoint(WorldObject* target, bool apply); [[nodiscard]] WorldObject* GetViewpoint() const; void StopCastingCharm(Aura* except = nullptr);