Better way for allow GMs(in gm mode on) to see invisible or stealthed players by Machiavelli. Thank you.
--HG-- branch : trunk
This commit is contained in:
+15
-3
@@ -17637,7 +17637,7 @@ bool Player::canSeeOrDetect(Unit const* u, bool detect, bool inVisibleList, bool
|
||||
return false;
|
||||
}
|
||||
|
||||
if(u->GetVisibility() == VISIBILITY_OFF || u->m_invisibilityMask )
|
||||
if(u->GetVisibility() == VISIBILITY_OFF)
|
||||
{
|
||||
// GMs see any players, not higher GMs and all units
|
||||
if(isGameMaster())
|
||||
@@ -17650,13 +17650,25 @@ bool Player::canSeeOrDetect(Unit const* u, bool detect, bool inVisibleList, bool
|
||||
return false;
|
||||
}
|
||||
|
||||
// GM's can see everyone with invisibilitymask with less or equal security level
|
||||
if(m_invisibilityMask || u->m_invisibilityMask)
|
||||
{
|
||||
if(isGameMaster())
|
||||
{
|
||||
if(u->GetTypeId() == TYPEID_PLAYER)
|
||||
return ((Player*)u)->GetSession()->GetSecurity() <= GetSession()->GetSecurity();
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
// player see other player with stealth/invisibility only if he in same group or raid or same team (raid/team case dependent from conf setting)
|
||||
if((m_invisibilityMask || u->m_invisibilityMask) && !canDetectInvisibilityOf(u))
|
||||
if(!canDetectInvisibilityOf(u))
|
||||
if(!(u->GetTypeId()==TYPEID_PLAYER && !IsHostileTo(u) && IsGroupVisibleFor(((Player*)u))))
|
||||
return false;
|
||||
}
|
||||
|
||||
// GM invisibility checks early, invisibility if any detectable, so if not stealth then visible
|
||||
if(u->GetVisibility() == VISIBILITY_GROUP_STEALTH)
|
||||
if(u->GetVisibility() == VISIBILITY_GROUP_STEALTH && !isGameMaster())
|
||||
{
|
||||
// if player is dead then he can't detect anyone in any cases
|
||||
//do not know what is the use of this detect
|
||||
|
||||
Reference in New Issue
Block a user