BaseCreature/AI Core.TickCount
This commit is contained in:
parent
be920e0c31
commit
b3535985d7
3 changed files with 34 additions and 32 deletions
|
|
@ -45,7 +45,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
public Timer m_Timer;
|
||||
protected ActionType m_Action;
|
||||
private DateTime m_NextStopGuard;
|
||||
private int m_NextStopGuard;
|
||||
|
||||
public BaseCreature m_Mobile;
|
||||
|
||||
|
|
@ -830,7 +830,7 @@ namespace Server.Mobiles
|
|||
m_Mobile.FocusMob = null;
|
||||
m_Mobile.Combatant = null;
|
||||
m_Mobile.CurrentSpeed = m_Mobile.ActiveSpeed;
|
||||
m_NextStopGuard = DateTime.UtcNow + TimeSpan.FromSeconds(10);
|
||||
m_NextStopGuard = Core.TickCount + (int)TimeSpan.FromSeconds(10).TotalMilliseconds;
|
||||
m_Mobile.CurrentSpeed = m_Mobile.ActiveSpeed;
|
||||
break;
|
||||
|
||||
|
|
@ -928,7 +928,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
m_Mobile.DebugSay("Praise the shepherd!");
|
||||
}
|
||||
else if (DateTime.UtcNow < m_NextStopGuard)
|
||||
else if (Core.TickCount - m_NextStopGuard < 0)
|
||||
{
|
||||
m_Mobile.DebugSay("I am on guard");
|
||||
//m_Mobile.Turn( Utility.Random(0, 2) - 1 );
|
||||
|
|
@ -2718,7 +2718,7 @@ namespace Server.Mobiles
|
|||
m_Timer.Start();
|
||||
}
|
||||
|
||||
private DateTime m_NextDetectHidden;
|
||||
private int m_NextDetectHidden;
|
||||
|
||||
public virtual bool CanDetectHidden { get { return m_Mobile.Skills[SkillName.DetectHidden].Value > 0; } }
|
||||
|
||||
|
|
@ -2734,7 +2734,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
m_Owner = owner;
|
||||
|
||||
m_Owner.m_NextDetectHidden = DateTime.UtcNow;
|
||||
m_Owner.m_NextDetectHidden = Core.TickCount;
|
||||
|
||||
Priority = TimerPriority.FiftyMS;
|
||||
}
|
||||
|
|
@ -2802,7 +2802,7 @@ namespace Server.Mobiles
|
|||
}
|
||||
}
|
||||
|
||||
if (m_Owner.CanDetectHidden && DateTime.UtcNow > m_Owner.m_NextDetectHidden)
|
||||
if (m_Owner.CanDetectHidden && Core.TickCount - m_Owner.m_NextDetectHidden >= 0)
|
||||
{
|
||||
m_Owner.DetectHidden();
|
||||
|
||||
|
|
@ -2815,7 +2815,7 @@ namespace Server.Mobiles
|
|||
int min = delay * (9 / 10); // 13s at 1000 int, 33s at 400 int, 54s at <250 int
|
||||
int max = delay * (10 / 9); // 16s at 1000 int, 41s at 400 int, 66s at <250 int
|
||||
|
||||
m_Owner.m_NextDetectHidden = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(min, max));
|
||||
m_Owner.m_NextDetectHidden = Core.TickCount + (int)TimeSpan.FromSeconds(Utility.RandomMinMax(min, max)).TotalMilliseconds;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ namespace Server.Mobiles
|
|||
{
|
||||
public class MageAI : BaseAI
|
||||
{
|
||||
private DateTime m_NextCastTime;
|
||||
private DateTime m_NextHealTime;
|
||||
private int m_NextCastTime;
|
||||
private int m_NextHealTime;
|
||||
|
||||
public MageAI( BaseCreature m )
|
||||
: base( m )
|
||||
|
|
@ -61,7 +61,7 @@ namespace Server.Mobiles
|
|||
|
||||
m_Mobile.Combatant = m_Mobile.FocusMob;
|
||||
Action = ActionType.Combat;
|
||||
m_NextCastTime = DateTime.UtcNow;
|
||||
m_NextCastTime = Core.TickCount;
|
||||
}
|
||||
else if( SmartAI && m_Mobile.Mana < m_Mobile.ManaMax && !m_Mobile.Meditating )
|
||||
{
|
||||
|
|
@ -101,7 +101,7 @@ namespace Server.Mobiles
|
|||
|
||||
if( m_Mobile.Controlled )
|
||||
{
|
||||
if( DateTime.UtcNow < m_NextHealTime )
|
||||
if (Core.TickCount - m_NextHealTime < 0)
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -144,7 +144,7 @@ namespace Server.Mobiles
|
|||
else
|
||||
delay = Math.Sqrt( 600 - m_Mobile.Int );
|
||||
|
||||
m_NextHealTime = DateTime.UtcNow + TimeSpan.FromSeconds( delay );
|
||||
m_NextHealTime = Core.TickCount + (int)TimeSpan.FromSeconds(delay).TotalMilliseconds;
|
||||
|
||||
return spell;
|
||||
}
|
||||
|
|
@ -664,7 +664,7 @@ namespace Server.Mobiles
|
|||
}
|
||||
}
|
||||
|
||||
if( m_Mobile.Spell == null && DateTime.UtcNow > m_NextCastTime && m_Mobile.InRange( c, Core.ML ? 10 : 12 ) )
|
||||
if (m_Mobile.Spell == null && Core.TickCount - m_NextCastTime >= 0 && m_Mobile.InRange(c, Core.ML ? 10 : 12))
|
||||
{
|
||||
// We are ready to cast a spell
|
||||
|
||||
|
|
@ -714,7 +714,7 @@ namespace Server.Mobiles
|
|||
if( spell != null )
|
||||
spell.Cast();
|
||||
|
||||
m_NextCastTime = DateTime.UtcNow + GetDelay( spell );
|
||||
m_NextCastTime = Core.TickCount + (int)GetDelay(spell).TotalMilliseconds;
|
||||
}
|
||||
else if( m_Mobile.Spell == null || !m_Mobile.Spell.IsCasting )
|
||||
{
|
||||
|
|
@ -739,7 +739,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
m_LastTarget = null;
|
||||
}
|
||||
else if( m_Mobile.Spell == null && DateTime.UtcNow > m_NextCastTime )
|
||||
else if( m_Mobile.Spell == null && Core.TickCount - m_NextCastTime >= 0 )
|
||||
{
|
||||
m_Mobile.DebugSay( "I am going to reveal my last target" );
|
||||
|
||||
|
|
@ -749,7 +749,7 @@ namespace Server.Mobiles
|
|||
if( spell.Cast() )
|
||||
m_LastTarget = null; // only do it once
|
||||
|
||||
m_NextCastTime = DateTime.UtcNow + GetDelay( spell );
|
||||
m_NextCastTime = Core.TickCount + (int)GetDelay(spell).TotalMilliseconds;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -616,7 +616,7 @@ namespace Server.Mobiles
|
|||
public virtual bool DisplayWeight{ get{ return Backpack is StrongBackpack; } }
|
||||
|
||||
#region Breath ability, like dragon fire breath
|
||||
private DateTime m_NextBreathTime;
|
||||
private int m_NextBreathTime;
|
||||
|
||||
// Must be overriden in subclass to enable
|
||||
public virtual bool HasBreath{ get{ return false; } }
|
||||
|
|
@ -5152,7 +5152,7 @@ namespace Server.Mobiles
|
|||
private const double MinutesToNextChanceMin = 0.25;
|
||||
private const double MinutesToNextChanceMax = 0.75;
|
||||
|
||||
private DateTime m_NextRummageTime;
|
||||
private int m_NextRummageTime;
|
||||
|
||||
public virtual bool CanBreath { get { return HasBreath && !Summoned; } }
|
||||
public virtual bool IsDispellable { get { return Summoned && !IsAnimatedDead; } }
|
||||
|
|
@ -5174,8 +5174,8 @@ namespace Server.Mobiles
|
|||
public virtual double HealOwnerInterval { get { return 30.0; } }
|
||||
public virtual bool HealOwnerFully { get { return false; } }
|
||||
|
||||
private DateTime m_NextHealTime = DateTime.UtcNow;
|
||||
private DateTime m_NextHealOwnerTime = DateTime.UtcNow;
|
||||
private int m_NextHealTime = Core.TickCount;
|
||||
private int m_NextHealOwnerTime = Core.TickCount;
|
||||
private Timer m_HealTimer = null;
|
||||
|
||||
public bool IsHealing { get { return ( m_HealTimer != null ); } }
|
||||
|
|
@ -5292,7 +5292,7 @@ namespace Server.Mobiles
|
|||
#endregion
|
||||
|
||||
#region Damaging Aura
|
||||
private DateTime m_NextAura;
|
||||
private int m_NextAura;
|
||||
|
||||
public virtual bool HasAura { get { return false; } }
|
||||
public virtual TimeSpan AuraInterval { get { return TimeSpan.FromSeconds( 5 ); } }
|
||||
|
|
@ -5345,7 +5345,9 @@ namespace Server.Mobiles
|
|||
|
||||
public virtual void OnThink()
|
||||
{
|
||||
if ( EnableRummaging && CanRummageCorpses && !Summoned && !Controlled && DateTime.UtcNow >= m_NextRummageTime )
|
||||
int tc = Core.TickCount;
|
||||
|
||||
if ( EnableRummaging && CanRummageCorpses && !Summoned && !Controlled && tc - m_NextRummageTime >= 0 )
|
||||
{
|
||||
double min, max;
|
||||
|
||||
|
|
@ -5361,21 +5363,21 @@ namespace Server.Mobiles
|
|||
}
|
||||
|
||||
double delay = min + (Utility.RandomDouble() * (max - min));
|
||||
m_NextRummageTime = DateTime.UtcNow + TimeSpan.FromMinutes( delay );
|
||||
m_NextRummageTime = tc + (int)TimeSpan.FromMinutes(delay).TotalMilliseconds;
|
||||
}
|
||||
|
||||
if ( CanBreath && DateTime.UtcNow >= m_NextBreathTime ) // tested: controlled dragons do breath fire, what about summoned skeletal dragons?
|
||||
if ( CanBreath && tc - m_NextBreathTime >= 0 ) // tested: controlled dragons do breath fire, what about summoned skeletal dragons?
|
||||
{
|
||||
Mobile target = this.Combatant;
|
||||
|
||||
if( target != null && target.Alive && !target.IsDeadBondedPet && CanBeHarmful( target ) && target.Map == this.Map && !IsDeadBondedPet && target.InRange( this, BreathRange ) && InLOS( target ) && !BardPacified )
|
||||
{
|
||||
if( ( DateTime.UtcNow - m_NextBreathTime ) < TimeSpan.FromSeconds( 30 ) && Utility.RandomBool() )
|
||||
if( ( Core.TickCount - m_NextBreathTime ) < 30000 && Utility.RandomBool() )
|
||||
{
|
||||
BreathStart( target );
|
||||
}
|
||||
|
||||
m_NextBreathTime = DateTime.UtcNow + TimeSpan.FromSeconds( BreathMinDelay + ( ( Utility.RandomDouble( ) * ( BreathMaxDelay - BreathMinDelay ) ) ) );
|
||||
m_NextBreathTime = tc + (int)TimeSpan.FromSeconds( BreathMinDelay + ( ( Utility.RandomDouble( ) * ( BreathMaxDelay - BreathMinDelay ) ) ) ).TotalMilliseconds;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -5383,17 +5385,17 @@ namespace Server.Mobiles
|
|||
{
|
||||
Mobile owner = this.ControlMaster;
|
||||
|
||||
if ( owner != null && CanHealOwner && DateTime.UtcNow >= m_NextHealOwnerTime && CanBeBeneficial( owner, true, true ) && owner.Map == this.Map && InRange( owner, HealStartRange ) && InLOS( owner ) && owner.Hits < HealOwnerTrigger * owner.HitsMax )
|
||||
if ( owner != null && CanHealOwner && tc - m_NextHealOwnerTime >= 0 && CanBeBeneficial( owner, true, true ) && owner.Map == this.Map && InRange( owner, HealStartRange ) && InLOS( owner ) && owner.Hits < HealOwnerTrigger * owner.HitsMax )
|
||||
{
|
||||
HealStart( owner );
|
||||
|
||||
m_NextHealOwnerTime = DateTime.UtcNow + TimeSpan.FromSeconds( HealOwnerInterval );
|
||||
m_NextHealOwnerTime = tc + (int)TimeSpan.FromSeconds( HealOwnerInterval ).TotalMilliseconds;
|
||||
}
|
||||
else if ( CanHeal && DateTime.UtcNow >= m_NextHealTime && CanBeBeneficial( this ) && ( Hits < HealTrigger * HitsMax || Poisoned ) )
|
||||
else if ( CanHeal && tc - m_NextHealTime >= 0 && CanBeBeneficial( this ) && ( Hits < HealTrigger * HitsMax || Poisoned ) )
|
||||
{
|
||||
HealStart( this );
|
||||
|
||||
m_NextHealTime = DateTime.UtcNow + TimeSpan.FromSeconds( HealInterval );
|
||||
m_NextHealTime = tc + (int)TimeSpan.FromSeconds( HealInterval ).TotalMilliseconds;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -5416,10 +5418,10 @@ namespace Server.Mobiles
|
|||
m_FailedReturnHome = 0;
|
||||
}
|
||||
|
||||
if ( HasAura && DateTime.UtcNow >= m_NextAura )
|
||||
if ( HasAura && tc - m_NextAura >= 0 )
|
||||
{
|
||||
AuraDamage();
|
||||
m_NextAura = DateTime.UtcNow + AuraInterval;
|
||||
m_NextAura = tc + (int)AuraInterval.TotalMilliseconds;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue