Implement Core.TickCount
Convert movement, actions (lift/use), combat, and spells to use Core.TickCount and avoid DateTime caveats (performance, system time dependency, etc) Refactor DateTime.Now to DateTime.UtcNow Add LOS check for Iron Maiden addon
This commit is contained in:
parent
f99eefb288
commit
d2c670f5c3
241 changed files with 842 additions and 831 deletions
|
|
@ -42,7 +42,7 @@ namespace Server.Mobiles
|
|||
return true;
|
||||
}
|
||||
|
||||
if ( (m_Mobile.LastMoveTime + TimeSpan.FromSeconds( 1.0 )) < DateTime.Now )
|
||||
if (Core.TickCount - m_Mobile.LastMoveTime > 1000)
|
||||
{
|
||||
if (WalkMobileRange(m_Mobile.Combatant, 1, true, m_Mobile.RangeFight, m_Mobile.Weapon.MaxRange))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -830,7 +830,7 @@ namespace Server.Mobiles
|
|||
m_Mobile.FocusMob = null;
|
||||
m_Mobile.Combatant = null;
|
||||
m_Mobile.CurrentSpeed = m_Mobile.ActiveSpeed;
|
||||
m_NextStopGuard = DateTime.Now + TimeSpan.FromSeconds(10);
|
||||
m_NextStopGuard = DateTime.UtcNow + TimeSpan.FromSeconds(10);
|
||||
m_Mobile.CurrentSpeed = m_Mobile.ActiveSpeed;
|
||||
break;
|
||||
|
||||
|
|
@ -928,7 +928,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
m_Mobile.DebugSay("Praise the shepherd!");
|
||||
}
|
||||
else if (DateTime.Now < m_NextStopGuard)
|
||||
else if (DateTime.UtcNow < m_NextStopGuard)
|
||||
{
|
||||
m_Mobile.DebugSay("I am on guard");
|
||||
//m_Mobile.Turn( Utility.Random(0, 2) - 1 );
|
||||
|
|
@ -1836,7 +1836,7 @@ namespace Server.Mobiles
|
|||
|
||||
public virtual bool DoBardPacified()
|
||||
{
|
||||
if (DateTime.Now < m_Mobile.BardEndTime)
|
||||
if (DateTime.UtcNow < m_Mobile.BardEndTime)
|
||||
{
|
||||
m_Mobile.DebugSay("I am pacified, I wait");
|
||||
m_Mobile.Combatant = null;
|
||||
|
|
@ -1854,7 +1854,7 @@ namespace Server.Mobiles
|
|||
|
||||
public virtual bool DoBardProvoked()
|
||||
{
|
||||
if (DateTime.Now >= m_Mobile.BardEndTime && (m_Mobile.BardMaster == null || m_Mobile.BardMaster.Deleted || m_Mobile.BardMaster.Map != m_Mobile.Map || m_Mobile.GetDistanceToSqrt(m_Mobile.BardMaster) > m_Mobile.RangePerception))
|
||||
if (DateTime.UtcNow >= m_Mobile.BardEndTime && (m_Mobile.BardMaster == null || m_Mobile.BardMaster.Deleted || m_Mobile.BardMaster.Map != m_Mobile.Map || m_Mobile.GetDistanceToSqrt(m_Mobile.BardMaster) > m_Mobile.RangePerception))
|
||||
{
|
||||
m_Mobile.DebugSay("I have lost my provoker");
|
||||
m_Mobile.BardProvoked = false;
|
||||
|
|
@ -1990,7 +1990,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
using (StreamWriter op = new StreamWriter("nan_transform.txt", true))
|
||||
{
|
||||
op.WriteLine(String.Format("NaN in TransformMoveDelay: {0}, {1}, {2}, {3}", DateTime.Now, this.GetType().ToString(), m_Mobile == null ? "null" : m_Mobile.GetType().ToString(), m_Mobile.HitsMax));
|
||||
op.WriteLine(String.Format("NaN in TransformMoveDelay: {0}, {1}, {2}, {3}", DateTime.UtcNow, this.GetType().ToString(), m_Mobile == null ? "null" : m_Mobile.GetType().ToString(), m_Mobile.HitsMax));
|
||||
}
|
||||
|
||||
return 1.0;
|
||||
|
|
@ -2009,7 +2009,7 @@ namespace Server.Mobiles
|
|||
|
||||
public virtual bool CheckMove()
|
||||
{
|
||||
return (DateTime.Now >= m_NextMove);
|
||||
return (DateTime.UtcNow >= m_NextMove);
|
||||
}
|
||||
|
||||
public virtual bool DoMove(Direction d)
|
||||
|
|
@ -2040,8 +2040,8 @@ namespace Server.Mobiles
|
|||
|
||||
m_NextMove += delay;
|
||||
|
||||
if (m_NextMove < DateTime.Now)
|
||||
m_NextMove = DateTime.Now;
|
||||
if (m_NextMove < DateTime.UtcNow)
|
||||
m_NextMove = DateTime.UtcNow;
|
||||
|
||||
m_Mobile.Pushing = false;
|
||||
|
||||
|
|
@ -2470,13 +2470,13 @@ namespace Server.Mobiles
|
|||
return false;
|
||||
}
|
||||
|
||||
if (m_Mobile.NextReacquireTime > DateTime.Now)
|
||||
if (m_Mobile.NextReacquireTime > DateTime.UtcNow)
|
||||
{
|
||||
m_Mobile.FocusMob = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
m_Mobile.NextReacquireTime = DateTime.Now + m_Mobile.ReacquireDelay;
|
||||
m_Mobile.NextReacquireTime = DateTime.UtcNow + m_Mobile.ReacquireDelay;
|
||||
|
||||
m_Mobile.DebugSay("Acquiring...");
|
||||
|
||||
|
|
@ -2734,7 +2734,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
m_Owner = owner;
|
||||
|
||||
m_Owner.m_NextDetectHidden = DateTime.Now;
|
||||
m_Owner.m_NextDetectHidden = DateTime.UtcNow;
|
||||
|
||||
Priority = TimerPriority.FiftyMS;
|
||||
}
|
||||
|
|
@ -2802,7 +2802,7 @@ namespace Server.Mobiles
|
|||
}
|
||||
}
|
||||
|
||||
if (m_Owner.CanDetectHidden && DateTime.Now > m_Owner.m_NextDetectHidden)
|
||||
if (m_Owner.CanDetectHidden && DateTime.UtcNow > m_Owner.m_NextDetectHidden)
|
||||
{
|
||||
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.Now + TimeSpan.FromSeconds(Utility.RandomMinMax(min, max));
|
||||
m_Owner.m_NextDetectHidden = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(min, max));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ namespace Server.Mobiles
|
|||
|
||||
m_Mobile.Combatant = m_Mobile.FocusMob;
|
||||
Action = ActionType.Combat;
|
||||
m_NextCastTime = DateTime.Now;
|
||||
m_NextCastTime = DateTime.UtcNow;
|
||||
}
|
||||
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.Now < m_NextHealTime )
|
||||
if( DateTime.UtcNow < m_NextHealTime )
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -144,7 +144,7 @@ namespace Server.Mobiles
|
|||
else
|
||||
delay = Math.Sqrt( 600 - m_Mobile.Int );
|
||||
|
||||
m_NextHealTime = DateTime.Now + TimeSpan.FromSeconds( delay );
|
||||
m_NextHealTime = DateTime.UtcNow + TimeSpan.FromSeconds( delay );
|
||||
|
||||
return spell;
|
||||
}
|
||||
|
|
@ -664,7 +664,7 @@ namespace Server.Mobiles
|
|||
}
|
||||
}
|
||||
|
||||
if( m_Mobile.Spell == null && DateTime.Now > m_NextCastTime && m_Mobile.InRange( c, Core.ML ? 10 : 12 ) )
|
||||
if( m_Mobile.Spell == null && DateTime.UtcNow > m_NextCastTime && 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.Now + GetDelay( spell );
|
||||
m_NextCastTime = DateTime.UtcNow + GetDelay( spell );
|
||||
}
|
||||
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.Now > m_NextCastTime )
|
||||
else if( m_Mobile.Spell == null && DateTime.UtcNow > m_NextCastTime )
|
||||
{
|
||||
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.Now + GetDelay( spell );
|
||||
m_NextCastTime = DateTime.UtcNow + GetDelay( spell );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,14 +68,14 @@ namespace Server.Mobiles
|
|||
if ( !Core.AOS && !m_Mobile.DisarmReady && m_Mobile.Skills[SkillName.Wrestling].Value >= 80.0 && m_Mobile.Skills[SkillName.ArmsLore].Value >= 80.0 && m_toDisarm != null )
|
||||
EventSink.InvokeDisarmRequest( new DisarmRequestEventArgs( m_Mobile ) );
|
||||
|
||||
if ( m_toDisarm != null && m_toDisarm.IsChildOf( combatant.Backpack ) && m_Mobile.NextSkillTime <= DateTime.Now && (m_toDisarm.LootType != LootType.Blessed && m_toDisarm.LootType != LootType.Newbied) )
|
||||
if (m_toDisarm != null && m_toDisarm.IsChildOf(combatant.Backpack) && Core.TickCount - m_Mobile.NextSkillTime >= 0 && (m_toDisarm.LootType != LootType.Blessed && m_toDisarm.LootType != LootType.Newbied))
|
||||
{
|
||||
m_Mobile.DebugSay( "Trying to steal from combatant." );
|
||||
m_Mobile.UseSkill( SkillName.Stealing );
|
||||
if ( m_Mobile.Target != null )
|
||||
m_Mobile.Target.Invoke( m_Mobile, m_toDisarm );
|
||||
}
|
||||
else if ( m_toDisarm == null && m_Mobile.NextSkillTime <= DateTime.Now )
|
||||
else if (m_toDisarm == null && Core.TickCount - m_Mobile.NextSkillTime >= 0)
|
||||
{
|
||||
Container cpack = combatant.Backpack;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue