aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Object.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 191b88464d8..d9993e84a94 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1548,10 +1548,18 @@ bool WorldObject::CanDetect(WorldObject const* obj, bool ignoreStealth, bool che
{
WorldObject const* seer = this;
+ // If a unit is possessing another one, it uses the detection of the latter
// Pets don't have detection, they use the detection of their masters
if (Unit const* thisUnit = ToUnit())
- if (Unit* controller = thisUnit->GetCharmerOrOwner())
+ {
+ if (thisUnit->isPossessing())
+ {
+ if (Unit* charmed = thisUnit->GetCharmed())
+ seer = charmed;
+ }
+ else if (Unit* controller = thisUnit->GetCharmerOrOwner())
seer = controller;
+ }
if (obj->IsAlwaysDetectableFor(seer))
return true;