Look in Mobile.cs under bool CanSee.
Change this:
public virtual bool CanSee(Mobile m)
{
if (m_Deleted || m.m_Deleted || m_Map == Map.Internal || m.m_Map == Map.Internal)
{
return false;
}
return this == m ||
(m.m_Map == m_Map && (!m.Hidden || (IsStaff() && m_AccessLevel >= m.AccessLevel)) &&
((m.Alive || (Core.SE && Skills.SpiritSpeak.Value >= 100.0)) || !Alive || IsStaff() || m.Warmode));
}
To this:
public virtual bool CanSee(Mobile m)
{
if (m_Deleted || m.m_Deleted || m_Map == Map.Internal || m.m_Map == Map.Internal)
{
return false;
}
return this == m ||
(m.m_Map == m_Map && (!m.Hidden /*|| (IsStaff() && m_AccessLevel >= m.AccessLevel)*/) &&
((m.Alive || (Core.SE && Skills.SpiritSpeak.Value >= 100.0)) || !Alive || IsStaff() || m.Warmode));
}
The part with /* */ you can completely remove it if you prefer. I just placed it behind /* */ so that it won't be read and you can change it back later easily if you choose to.
**Edit**
I haven't tested it, but I'm pretty sure that is all you need to do anyway. If not, let me know and I will look into it more when I get off work late this evening.
**2nd Edit**
Honestly, I would change it so that it only works for staff under a specific AccessLevel so that your higher rank staff can still monitor and keep an eye on lower rank staff without being noticed. Typically people don't expect a staff member they hire to become corrupt or do things they shouldn't, but you never know when it comes down to it and it might be necessary to watch staff at times through something other than the server logs.
public virtual bool CanSee(Mobile m)
{
if (m_Deleted || m.m_Deleted || m_Map == Map.Internal || m.m_Map == Map.Internal)
{
return false;
}
return this == m ||
(m.m_Map == m_Map && (!m.Hidden || (IsStaff() && (m_AccessLevel <= AccessLevel.GameMaster ||
(m_AccessLevel >= AccessLevel.Seer && m_AccessLevel >= m.AccessLevel))) &&
((m.Alive || (Core.SE && Skills.SpiritSpeak.Value >= 100.0)) || !Alive || IsStaff() || m.Warmode));
}
As long as I didn't mess that up, it should make anyone with AccessLevel of GM or lower to still be seen, while Seer or greater will use the default visibility rule.