diff options
| -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;  | 
