public virtual bool CheckIdle()
{
if ( Combatant != null )
return false; // in combat.. not idling
if ( m_IdleReleaseTime > DateTime.MinValue )
{
// idling...
if ( DateTime.Now >= m_IdleReleaseTime )
{
m_IdleReleaseTime = DateTime.MinValue;
return false; // idle is over
}
return true; // still idling
}
if ( 95 > Utility.Random( 100 ) )
return false; // not idling, but don't want to enter idle state
m_IdleReleaseTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 15, 25 ) );
if ( Body.IsHuman )
{
switch ( Utility.Random( 2 ) )
{
case 0: Animate( 5, 5, 1, true, true, 1 ); break;
case 1: Animate( 6, 5, 1, true, false, 1 ); break;
}
}
else if ( Body.IsAnimal )
{
switch ( Utility.Random( 3 ) )
{
case 0: Animate( 3, 3, 1, true, false, 1 ); break;
case 1: Animate( 9, 5, 1, true, false, 1 ); break;
case 2: Animate( 10, 5, 1, true, false, 1 ); break;
}
}
else if ( Body.IsMonster )
{
switch ( Utility.Random( 2 ) )
{
case 0: Animate( 17, 5, 1, true, false, 1 ); break;
case 1: Animate( 18, 5, 1, true, false, 1 ); break;
}
}
PlaySound( GetIdleSound() );
return true; // entered idle state
}