diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 10 |
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; |