public override void OnMovement( Mobile m, Point3D oldLocation )
{
base.OnMovement( m, oldLocation );
if ( ReacquireOnMovement || m_Paragon )
ForceReacquire();
InhumanSpeech speechType = this.SpeechType;
if ( speechType != null )
speechType.OnMovement( this, m, oldLocation );
/* Begin notice sound */
if ( (!m.Hidden || m.AccessLevel == AccessLevel.Player) && m.Player && m_FightMode != FightMode.Aggressor && m_FightMode != FightMode.None && Combatant == null && !Controlled && !Summoned )
{
// If this creature defends itself but doesn't actively attack (animal) or
// doesn't fight at all (vendor) then no notice sounds are played..
// So, players are only notified of aggressive monsters
// Monsters that are currently fighting are ignored
// Controlled or summoned creatures are ignored
if ( InRange( m.Location, 18 ) && !InRange( oldLocation, 18 ) )
{
if ( Body.IsMonster )
Animate( 11, 5, 1, true, false, 1 );
PlaySound( GetAngerSound() );
}
}
/* End notice sound */
if ( m_NoDupeGuards == m )
return;
if ( !Body.IsHuman || Kills >= 5 || AlwaysMurderer || AlwaysAttackable || m.Kills < 5 || !m.InRange( Location, 12 ) || !m.Alive )
return;
GuardedRegion guardedRegion = (GuardedRegion) this.Region.GetRegion( typeof( GuardedRegion ) );
if ( guardedRegion != null )
{
if ( !guardedRegion.IsDisabled() && guardedRegion.IsGuardCandidate( m ) && BeginAction( typeof( GuardedRegion ) ) )
{
Say( 1013037 + Utility.Random( 16 ) );
guardedRegion.CallGuards( this.Location );
Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), new TimerCallback( ReleaseGuardLock ) );
m_NoDupeGuards = m;
Timer.DelayCall( TimeSpan.Zero, new TimerCallback( ReleaseGuardDupeLock ) );
}
}
}