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:
Anubisss
2009-04-13 18:07:26 +02:00
parent dd93679f5f
commit e15ae448c3
+15 -3
View File
@@ -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