From be920e0c311b1334343f71faa3da3dfd6d0ed1d5 Mon Sep 17 00:00:00 2001 From: Mark Sturgill Date: Sun, 6 Oct 2013 17:21:40 -0700 Subject: [PATCH] Core.TickCount for some AI actions Correction in NewAsyncSockets --- Scripts/Items/Weapons/Abilities/DoubleStrike.cs | 2 +- Scripts/Mobiles/AI/BaseAI.cs | 16 ++++++++-------- Scripts/Mobiles/BaseCreature.cs | 12 ++++++------ .../Monsters/Humanoid/Magic/SavageShaman.cs | 4 ++-- Server/Network/NetState.cs | 2 ++ 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/Scripts/Items/Weapons/Abilities/DoubleStrike.cs b/Scripts/Items/Weapons/Abilities/DoubleStrike.cs index 04f4de027..8a2abc29a 100644 --- a/Scripts/Items/Weapons/Abilities/DoubleStrike.cs +++ b/Scripts/Items/Weapons/Abilities/DoubleStrike.cs @@ -49,7 +49,7 @@ namespace Server.Items { BaseWeapon.InDoubleStrike = true; attacker.RevealingAction(); - attacker.NextCombatTime = Core.TickCount + weapon.OnSwing(attacker, defender).TotalMilliseconds; + attacker.NextCombatTime = Core.TickCount + (int)weapon.OnSwing(attacker, defender).TotalMilliseconds; BaseWeapon.InDoubleStrike = false; } } diff --git a/Scripts/Mobiles/AI/BaseAI.cs b/Scripts/Mobiles/AI/BaseAI.cs index 31085a84b..889a8372a 100644 --- a/Scripts/Mobiles/AI/BaseAI.cs +++ b/Scripts/Mobiles/AI/BaseAI.cs @@ -1999,9 +1999,9 @@ namespace Server.Mobiles return delay; } - private DateTime m_NextMove; + private int m_NextMove; - public DateTime NextMove + public int NextMove { get { return m_NextMove; } set { m_NextMove = value; } @@ -2009,7 +2009,7 @@ namespace Server.Mobiles public virtual bool CheckMove() { - return (DateTime.UtcNow >= m_NextMove); + return (Core.TickCount - m_NextMove >= 0); } public virtual bool DoMove(Direction d) @@ -2036,12 +2036,12 @@ namespace Server.Mobiles // This makes them always move one step, never any direction changes m_Mobile.Direction = d; - TimeSpan delay = TimeSpan.FromSeconds(TransformMoveDelay(m_Mobile.CurrentSpeed)); + int delay = (int)(TransformMoveDelay(m_Mobile.CurrentSpeed) * 1000); m_NextMove += delay; - if (m_NextMove < DateTime.UtcNow) - m_NextMove = DateTime.UtcNow; + if (Core.TickCount - m_NextMove > 0) + m_NextMove = Core.TickCount; m_Mobile.Pushing = false; @@ -2470,13 +2470,13 @@ namespace Server.Mobiles return false; } - if (m_Mobile.NextReacquireTime > DateTime.UtcNow) + if (Core.TickCount - m_Mobile.NextReacquireTime < 0) { m_Mobile.FocusMob = null; return false; } - m_Mobile.NextReacquireTime = DateTime.UtcNow + m_Mobile.ReacquireDelay; + m_Mobile.NextReacquireTime = Core.TickCount + (int)m_Mobile.ReacquireDelay.TotalMilliseconds; m_Mobile.DebugSay("Acquiring..."); diff --git a/Scripts/Mobiles/BaseCreature.cs b/Scripts/Mobiles/BaseCreature.cs index c4c334345..f6660c43f 100644 --- a/Scripts/Mobiles/BaseCreature.cs +++ b/Scripts/Mobiles/BaseCreature.cs @@ -679,7 +679,7 @@ namespace Server.Mobiles public virtual void BreathStallMovement() { if ( m_AI != null ) - m_AI.NextMove = DateTime.UtcNow + TimeSpan.FromSeconds( BreathStallTime ); + m_AI.NextMove = Core.TickCount + (int)(BreathStallTime * 1000); } public virtual void BreathPlayAngerSound() @@ -1712,7 +1712,7 @@ namespace Server.Mobiles m_Owners = new List(); - m_NextReacquireTime = DateTime.UtcNow + ReacquireDelay; + m_NextReacquireTime = Core.TickCount + (int)ReacquireDelay.TotalMilliseconds; ChangeAIType(AI); @@ -2871,7 +2871,7 @@ namespace Server.Mobiles if ( m_bSummoned == value ) return; - m_NextReacquireTime = DateTime.UtcNow; + m_NextReacquireTime = Core.TickCount; m_bSummoned = value; Delta( MobileDelta.Noto ); @@ -3607,7 +3607,7 @@ namespace Server.Mobiles public virtual void ForceReacquire() { - m_NextReacquireTime = DateTime.MinValue; + m_NextReacquireTime = Core.TickCount; } public override void OnMovement( Mobile m, Point3D oldLocation ) @@ -4962,9 +4962,9 @@ namespace Server.Mobiles * This functionality appears to be implemented on OSI as well */ - private DateTime m_NextReacquireTime; + private int m_NextReacquireTime; - public DateTime NextReacquireTime{ get{ return m_NextReacquireTime; } set{ m_NextReacquireTime = value; } } + public int NextReacquireTime{ get{ return m_NextReacquireTime; } set{ m_NextReacquireTime = value; } } public virtual TimeSpan ReacquireDelay{ get{ return TimeSpan.FromSeconds( 10.0 ); } } public virtual bool ReacquireOnMovement{ get{ return false; } } diff --git a/Scripts/Mobiles/Monsters/Humanoid/Magic/SavageShaman.cs b/Scripts/Mobiles/Monsters/Humanoid/Magic/SavageShaman.cs index 47c0394d7..d5d9ed8ae 100644 --- a/Scripts/Mobiles/Monsters/Humanoid/Magic/SavageShaman.cs +++ b/Scripts/Mobiles/Monsters/Humanoid/Magic/SavageShaman.cs @@ -129,7 +129,7 @@ namespace Server.Mobiles Animate( 111, 5, 1, true, false, 0 ); // Do a little dance... if ( AIObject != null ) - AIObject.NextMove = DateTime.UtcNow + TimeSpan.FromSeconds( 1.0 ); + AIObject.NextMove = Core.TickCount + 1000; if ( list.Count >= 3 ) { @@ -140,7 +140,7 @@ namespace Server.Mobiles dancer.Animate( 111, 5, 1, true, false, 0 ); // Get down tonight... if ( dancer.AIObject != null ) - dancer.AIObject.NextMove = DateTime.UtcNow + TimeSpan.FromSeconds( 1.0 ); + dancer.AIObject.NextMove = Core.TickCount + 1000; } Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), new TimerCallback( EndSavageDance ) ); diff --git a/Server/Network/NetState.cs b/Server/Network/NetState.cs index 9badaef57..ad4c20b94 100644 --- a/Server/Network/NetState.cs +++ b/Server/Network/NetState.cs @@ -709,6 +709,8 @@ namespace Server.Network { if ( e.SocketError != SocketError.Success || byteCount <= 0 ) { Dispose( false ); return; + } else if ( m_Disposing ) { + return; } m_NextCheckActivity = Core.TickCount + 90000;