public virtual void DetectHidden()
{
if (m_Mobile.Deleted || m_Mobile.Map == null)
return;
m_Mobile.DebugSay("Checking for hidden players");
double srcSkill = m_Mobile.Skills[SkillName.DetectHidden].Value;
if (srcSkill <= 0)
return;
foreach (Mobile trg in m_Mobile.GetMobilesInRange(m_Mobile.RangePerception))
{
if (trg != m_Mobile && trg.Player && trg.Alive && trg.Hidden && trg.AccessLevel == AccessLevel.Player && m_Mobile.InLOS(trg))
{
m_Mobile.DebugSay("Trying to detect {0}", trg.Name);
double trgHiding = trg.Skills[SkillName.Hiding].Value / 2.9;
double trgStealth = trg.Skills[SkillName.Stealth].Value / 1.8;
double chance = srcSkill / 1.2 - Math.Min(trgHiding, trgStealth);
if (chance < srcSkill / 10)
chance = srcSkill / 10;
chance /= 100;
if (chance > Utility.RandomDouble())
{
trg.RevealingAction();
trg.SendLocalizedMessage(500814); // You have been revealed!
}
}
}
}