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:
Mark Sturgill 2013-10-06 03:21:18 -07:00
parent f99eefb288
commit d2c670f5c3
241 changed files with 842 additions and 831 deletions

View file

@ -31,7 +31,7 @@ namespace Server.Items
Movable = false;
m_MinDamage = minDamage;
m_MaxDamage = maxDamage;
m_Created = DateTime.Now;
m_Created = DateTime.UtcNow;
m_Duration = duration;
m_Timer = Timer.DelayCall( TimeSpan.Zero, TimeSpan.FromSeconds( 1 ), new TimerCallback( OnTick ) );
}
@ -44,7 +44,7 @@ namespace Server.Items
private void OnTick()
{
DateTime now = DateTime.Now;
DateTime now = DateTime.UtcNow;
TimeSpan age = now - m_Created;
if( age > m_Duration ) {

View file

@ -62,7 +62,7 @@ namespace Server.Items
public static bool CheckTime( DateTime time, TimeSpan range )
{
return (time + range) < DateTime.Now;
return (time + range) < DateTime.UtcNow;
}
public static string FormatTS( TimeSpan ts )
@ -183,7 +183,7 @@ namespace Server.Items
public void PostMessage( Mobile from, BulletinMessage thread, string subject, string[] lines )
{
if ( thread != null )
thread.LastPostTime = DateTime.Now;
thread.LastPostTime = DateTime.UtcNow;
AddItem( new BulletinMessage( from, thread, subject, lines ) );
}
@ -363,7 +363,7 @@ namespace Server.Items
m_Poster = poster;
m_Subject = subject;
m_Time = DateTime.Now;
m_Time = DateTime.UtcNow;
m_LastPostTime = m_Time;
m_Thread = thread;
m_PostedName = m_Poster.Name;

View file

@ -104,7 +104,7 @@ namespace Server.Items
if ( !Core.SE )
return false;
return ( DateTime.Now < (m_TimeOfDeath + InstancedCorpseTime) );
return ( DateTime.UtcNow < (m_TimeOfDeath + InstancedCorpseTime) );
}
}
@ -403,7 +403,7 @@ namespace Server.Items
if ( m_DecayTimer != null )
m_DecayTimer.Stop();
m_DecayTime = DateTime.Now + delay;
m_DecayTime = DateTime.UtcNow + delay;
m_DecayTimer = new InternalTimer( this, delay );
m_DecayTimer.Start();
@ -551,7 +551,7 @@ namespace Server.Items
m_CorpseName = GetCorpseName( owner );
m_TimeOfDeath = DateTime.Now;
m_TimeOfDeath = DateTime.UtcNow;
m_AccessLevel = owner.AccessLevel;
m_Guild = owner.Guild as Guild;
@ -578,10 +578,10 @@ namespace Server.Items
{
AggressorInfo info = owner.Aggressors[i];
if ( (DateTime.Now - info.LastCombatTime) < lastTime )
if ( (DateTime.UtcNow - info.LastCombatTime) < lastTime )
{
m_Killer = info.Attacker;
lastTime = (DateTime.Now - info.LastCombatTime);
lastTime = (DateTime.UtcNow - info.LastCombatTime);
}
if ( !isBaseCreature && !info.CriminalAggression )
@ -592,10 +592,10 @@ namespace Server.Items
{
AggressorInfo info = owner.Aggressed[i];
if ( (DateTime.Now - info.LastCombatTime) < lastTime )
if ( (DateTime.UtcNow - info.LastCombatTime) < lastTime )
{
m_Killer = info.Defender;
lastTime = (DateTime.Now - info.LastCombatTime);
lastTime = (DateTime.UtcNow - info.LastCombatTime);
}
if ( !isBaseCreature )
@ -739,7 +739,7 @@ namespace Server.Items
}
if( reader.ReadBool() )
BeginDecay( reader.ReadDeltaTime() - DateTime.Now );
BeginDecay( reader.ReadDeltaTime() - DateTime.UtcNow );
m_Looters = reader.ReadStrongMobileList();
m_Killer = reader.ReadMobile();
@ -787,7 +787,7 @@ namespace Server.Items
case 7:
{
if ( reader.ReadBool() )
BeginDecay( reader.ReadDeltaTime() - DateTime.Now );
BeginDecay( reader.ReadDeltaTime() - DateTime.UtcNow );
goto case 6;
}
@ -831,7 +831,7 @@ namespace Server.Items
case 0:
{
if ( version < 10 )
m_TimeOfDeath = DateTime.Now;
m_TimeOfDeath = DateTime.UtcNow;
if ( version < 7 )
BeginDecay( m_DefaultDecayTime );

View file

@ -23,7 +23,7 @@ namespace Server.Items
if ( m_DecayTimer != null )
m_DecayTimer.Stop();
m_DecayTime = DateTime.Now + delay;
m_DecayTime = DateTime.UtcNow + delay;
m_DecayTimer = new InternalTimer( this, delay );
m_DecayTimer.Start();
@ -105,7 +105,7 @@ namespace Server.Items
case 1:
{
if ( reader.ReadBool() )
BeginDecay( reader.ReadDeltaTime() - DateTime.Now );
BeginDecay( reader.ReadDeltaTime() - DateTime.UtcNow );
break;
}

View file

@ -91,7 +91,7 @@ namespace Server.Items
{
Movable = false;
Light = LightType.Circle225;
m_NextSpawn = DateTime.Now;
m_NextSpawn = DateTime.UtcNow;
m_NextSpawnDelay = TimeSpan.FromMinutes( 15.0 );
m_SpawnRange = 5;
}
@ -122,7 +122,7 @@ namespace Server.Items
m_NextSpawnDelay = reader.ReadTimeSpan();
}
m_NextSpawn = DateTime.Now;
m_NextSpawn = DateTime.UtcNow;
}
public virtual void HeedWarning()
@ -134,7 +134,7 @@ namespace Server.Items
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if( m_NextSpawn < DateTime.Now ) // means we haven't spawned anything if the next spawn is below
if( m_NextSpawn < DateTime.UtcNow ) // means we haven't spawned anything if the next spawn is below
{
if( Utility.InRange( m.Location, Location, 1 ) && !Utility.InRange( oldLocation, Location, 1 ) && m.Player && !(m.AccessLevel > AccessLevel.Player || m.Hidden) )
{
@ -181,7 +181,7 @@ namespace Server.Items
{
try
{
if( m_NextSpawn < DateTime.Now )
if( m_NextSpawn < DateTime.UtcNow )
{
Map map = this.Map;
BaseCreature bc = (BaseCreature)Activator.CreateInstance( m_Creatures[Utility.Random( m_Creatures.Length )] );
@ -205,7 +205,7 @@ namespace Server.Items
bc.ForceReacquire();
} );
m_NextSpawn = DateTime.Now + m_NextSpawnDelay;
m_NextSpawn = DateTime.UtcNow + m_NextSpawnDelay;
}
}
else

View file

@ -236,7 +236,7 @@ namespace Server.Items
{
Movable = false;
m_LitBy = litBy;
m_Expire = DateTime.Now + TimeSpan.FromSeconds( 10 );
m_Expire = DateTime.UtcNow + TimeSpan.FromSeconds( 10 );
m_Burning = toDamage;
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), TimeSpan.FromSeconds( 1.0 ), new TimerCallback( OnFirebombFieldTimerTick ) );
}
@ -302,7 +302,7 @@ namespace Server.Items
m_Burning.RemoveAt( i );
}
if ( DateTime.Now >= m_Expire )
if ( DateTime.UtcNow >= m_Expire )
{
m_Timer.Stop();
Delete();

View file

@ -23,7 +23,7 @@ namespace Server.Items
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that
}
else if ( Visible && ( ItemID == 4656 || ItemID == 4702 ) && DateTime.Now >= m_NextUse )
else if ( Visible && ( ItemID == 4656 || ItemID == 4702 ) && DateTime.UtcNow >= m_NextUse )
{
Point3D p = this.GetWorldLocation();
@ -41,7 +41,7 @@ namespace Server.Items
Timer.DelayCall( TimeSpan.FromSeconds( 5.00 ), new TimerCallback( BackUp ) );
m_NextUse = DateTime.Now + TimeSpan.FromSeconds( 10.0 );
m_NextUse = DateTime.UtcNow + TimeSpan.FromSeconds( 10.0 );
}
}

View file

@ -251,7 +251,7 @@ namespace Server.Items
if ( text.Length > 0 )
{
PlayerBBMessage message = new PlayerBBMessage( DateTime.Now, from, text );
PlayerBBMessage message = new PlayerBBMessage( DateTime.UtcNow, from, text );
if ( m_Greeting )
{

View file

@ -32,7 +32,7 @@ namespace Server.Items
m_MinDamage = minDamage;
m_MaxDamage = maxDamage;
m_Created = DateTime.Now;
m_Created = DateTime.UtcNow;
m_Duration = duration;
m_Timer = Timer.DelayCall( TimeSpan.Zero, TimeSpan.FromSeconds( 1 ), new TimerCallback( OnTick ) );
@ -46,7 +46,7 @@ namespace Server.Items
private void OnTick()
{
DateTime now = DateTime.Now;
DateTime now = DateTime.UtcNow;
TimeSpan age = now - m_Created;
if( age > m_Duration ) {

View file

@ -211,7 +211,7 @@ namespace Server.Items
return;
if ( m_User.Deleted || m_User.Map != Map || !m_User.InRange( this, 3 )
|| m_User.NetState == null || DateTime.Now - m_LastUse >= m_UseTimeout )
|| m_User.NetState == null || DateTime.UtcNow - m_LastUse >= m_UseTimeout )
{
m_User.CloseGump( typeof( GameGump ) );
}
@ -223,7 +223,7 @@ namespace Server.Items
}
m_User = from;
m_LastUse = DateTime.Now;
m_LastUse = DateTime.UtcNow;
from.SendGump( new GameGump( this, from, 0, false ) );
}
@ -375,7 +375,7 @@ namespace Server.Items
if ( 40.0 + Utility.RandomDouble() * 80.0 < lockpicking )
{
m_From.SendGump( new GameGump( m_Panel, m_From, m_Step, true ) );
m_Panel.m_LastUse = DateTime.Now;
m_Panel.m_LastUse = DateTime.UtcNow;
}
else
{
@ -422,7 +422,7 @@ namespace Server.Items
{
m_From.PlaySound( 0x1F4 );
m_From.SendGump( new GameGump( m_Panel, m_From, m_Step + 1, false ) );
m_Panel.m_LastUse = DateTime.Now;
m_Panel.m_LastUse = DateTime.UtcNow;
}
}
else

View file

@ -650,7 +650,7 @@ namespace Server.Items
m.SendLocalizedMessage(m_ProgressNumber);
if (m_ShowTimeRemaining)
m.SendMessage("Time remaining: {0}", FormatTime(m_Table[m].Timer.Next - DateTime.Now));
m.SendMessage("Time remaining: {0}", FormatTime(m_Table[m].Timer.Next - DateTime.UtcNow));
Timer.DelayCall<Mobile>(TimeSpan.FromSeconds(5), EndLock, m);
}
@ -842,7 +842,7 @@ namespace Server.Items
Mobile m = reader.ReadMobile();
DateTime end = reader.ReadDateTime();
StartTimer(m, end - DateTime.Now);
StartTimer(m, end - DateTime.UtcNow);
}
}
}

View file

@ -96,10 +96,10 @@ namespace Server.Items
public virtual void Broadcast( Mobile triggerer )
{
if ( m_Broadcasting || (DateTime.Now < (m_LastBroadcast + m_ResetDelay)) )
if ( m_Broadcasting || (DateTime.UtcNow < (m_LastBroadcast + m_ResetDelay)) )
return;
m_LastBroadcast = DateTime.Now;
m_LastBroadcast = DateTime.UtcNow;
m_Broadcasting = true;