public void CheckGuardCandidate( Mobile m )
{
if ( IsDisabled() )
return;
if ( IsGuardCandidate( m ) )
{
GuardTimer timer = null;
m_GuardCandidates.TryGetValue( m, out timer );
if ( timer == null )
{
timer = new GuardTimer( m, m_GuardCandidates );
timer.Start();
m_GuardCandidates[m] = timer;
m.SendLocalizedMessage( 502275 ); // Guards can now be called on you!
Map map = m.Map;
if ( map != null )
{
Mobile fakeCall = null;
double prio = 0.0;
foreach ( Mobile v in m.GetMobilesInRange( 8 ) )
{
if( !v.Player && v != m && !IsGuardCandidate( v ) && ((v is BaseCreature)? ((BaseCreature)v).IsHumanInTown() : (v.Body.IsHuman && v.Region.IsPartOf( this ))) )
{
double dist = m.GetDistanceToSqrt( v );
if ( fakeCall == null || dist < prio )
{
fakeCall = v;
prio = dist;
}
}
}
if ( fakeCall != null )
{
fakeCall.Say( Utility.RandomList( 1007037, 501603, 1013037, 1013038, 1013039, 1013041, 1013042, 1013043, 1013052 ) );
MakeGuard( m );
timer.Stop();
m_GuardCandidates.Remove( m );
m.SendLocalizedMessage( 502276 ); // Guards can no longer be called on you.
}
}
}
else
{
timer.Stop();
timer.Start();
}
}
}