From f661f57f67ca753228b49c2e6c0d8a6617c4d67c Mon Sep 17 00:00:00 2001 From: Takenbacon Date: Wed, 22 Oct 2025 07:56:54 -0700 Subject: [PATCH] fix(Core/Visibility): Fix sentry totem visibility not toggling (#23228) --- src/server/game/Entities/Object/Object.cpp | 7 ++----- src/server/game/Entities/Player/Player.h | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index d39645bb4..173030d49 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 ef7ca602d..7154eaa33 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);