diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Player.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 45bf0867cbb..c25810a95c7 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -20130,17 +20130,20 @@ bool Player::canSeeOrDetect(Unit const* u, bool detect, bool inVisibleList, bool return false; } - if (u->GetVisibility() == VISIBILITY_OFF) + if (Unit* owner = u->GetCharmerOrOwnerOrSelf()) { - // GMs see any players, not higher GMs and all units - if (isGameMaster()) + if (owner->GetVisibility() == VISIBILITY_OFF) { - if (u->GetTypeId() == TYPEID_PLAYER) - return u->ToPlayer()->GetSession()->GetSecurity() <= GetSession()->GetSecurity(); - else - return true; + // GMs see any players, not higher GMs and all units + if (isGameMaster()) + { + if (owner->GetTypeId() == TYPEID_PLAYER) + return owner->ToPlayer()->GetSession()->GetSecurity() <= GetSession()->GetSecurity(); + else + return true; + } + return false; } - return false; } // GM's can see everyone with invisibilitymask with less or equal security level |