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

@ -142,7 +142,7 @@ namespace Server.Items
return;
}
if ( DateTime.Now < (m_LastUse + UseDelay) )
if ( DateTime.UtcNow < (m_LastUse + UseDelay) )
return;
Point3D worldLoc = GetWorldLocation();
@ -189,7 +189,7 @@ namespace Server.Items
return;
}
m_LastUse = DateTime.Now;
m_LastUse = DateTime.UtcNow;
from.Direction = from.GetDirectionTo( GetWorldLocation() );
bow.PlaySwingAnimation( from );

View file

@ -93,12 +93,12 @@ namespace Server.Items
if ( m.Player && Utility.InRange( Location, m.Location, 3 ) && !Utility.InRange( Location, oldLocation, 3 ) )
{
if ( DateTime.Now >= m_NextMessage )
if ( DateTime.UtcNow >= m_NextMessage )
{
if ( Components.Count > 0 )
((AddonComponent)Components[0]).SendLocalizedMessageTo( m, 1010061 ); // An overwhelming sense of peace fills you.
m_NextMessage = DateTime.Now + TimeSpan.FromSeconds( 25.0 );
m_NextMessage = DateTime.UtcNow + TimeSpan.FromSeconds( 25.0 );
}
}
}

View file

@ -143,11 +143,11 @@ namespace Server.Items
{
World.Broadcast( 0x35, true, "Solen hives teleporters are being generated, please wait." );
DateTime startTime = DateTime.Now;
DateTime startTime = DateTime.UtcNow;
int count = new SHTeleporterCreator().CreateSHTeleporters();
DateTime endTime = DateTime.Now;
DateTime endTime = DateTime.UtcNow;
World.Broadcast( 0x35, true, "{0} solen hives teleporters have been created. The entire process took {1:F1} seconds.", count, (endTime - startTime).TotalSeconds );
}

View file

@ -396,7 +396,7 @@ namespace Server.Items
if ( m_Timer != null )
writer.Write( m_Timer.Next );
else
writer.Write( DateTime.Now + EvaluationInterval );
writer.Write( DateTime.UtcNow + EvaluationInterval );
// version 0
writer.Write( (int) m_LiveCreatures );
@ -427,10 +427,10 @@ namespace Server.Items
{
DateTime next = reader.ReadDateTime();
if ( next < DateTime.Now )
next = DateTime.Now;
if ( next < DateTime.UtcNow )
next = DateTime.UtcNow;
m_Timer = Timer.DelayCall( next - DateTime.Now, EvaluationInterval, new TimerCallback( Evaluate ) );
m_Timer = Timer.DelayCall( next - DateTime.UtcNow, EvaluationInterval, new TimerCallback( Evaluate ) );
goto case 0;
}

View file

@ -134,7 +134,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();
@ -214,7 +214,7 @@ namespace Server.Items
if( reader.ReadBool() )
{
m_DecayTime = reader.ReadDeltaTime();
BeginDecay( m_DecayTime - DateTime.Now );
BeginDecay( m_DecayTime - DateTime.UtcNow );
}
break;
}

View file

@ -118,7 +118,7 @@ namespace Server.Items
int mins = Utility.RandomMinMax( this.MinRespawnMinutes, this.MaxRespawnMinutes );
TimeSpan delay = TimeSpan.FromMinutes( mins );
m_NextRespawnTime = DateTime.Now + delay;
m_NextRespawnTime = DateTime.UtcNow + delay;
m_RespawnTimer = Timer.DelayCall( delay, new TimerCallback( Respawn ) );
}
}
@ -257,7 +257,7 @@ namespace Server.Items
{
m_NextRespawnTime = reader.ReadDeltaTime();
TimeSpan delay = m_NextRespawnTime - DateTime.Now;
TimeSpan delay = m_NextRespawnTime - DateTime.UtcNow;
m_RespawnTimer = Timer.DelayCall( delay > TimeSpan.Zero ? delay : TimeSpan.Zero, new TimerCallback( Respawn ) );
}
else

View file

@ -176,7 +176,7 @@ namespace Server.Items
public InternalTimer( MarkContainer container, TimeSpan delay ) : base( delay )
{
m_Container = container;
m_RelockTime = DateTime.Now + delay;
m_RelockTime = DateTime.UtcNow + delay;
Start();
}
@ -257,7 +257,7 @@ namespace Server.Items
m_AutoLock = reader.ReadBool();
if ( !Locked && m_AutoLock )
m_RelockTimer = new InternalTimer( this, reader.ReadDeltaTime() - DateTime.Now );
m_RelockTimer = new InternalTimer( this, reader.ReadDeltaTime() - DateTime.UtcNow );
m_TargetMap = reader.ReadMap();
m_Target = reader.ReadPoint3D();

View file

@ -57,7 +57,7 @@ namespace Server.Items
{
m_Owner = owner;
m_Level = level;
m_DeleteTime = DateTime.Now + TimeSpan.FromHours( 3.0 );
m_DeleteTime = DateTime.UtcNow + TimeSpan.FromHours( 3.0 );
m_Temporary = temporary;
m_Guardians = new List<Mobile>();
@ -560,7 +560,7 @@ namespace Server.Items
{
private Item m_Item;
public DeleteTimer( Item item, DateTime time ) : base( time - DateTime.Now )
public DeleteTimer( Item item, DateTime time ) : base( time - DateTime.UtcNow )
{
m_Item = item;
Priority = TimerPriority.OneMinute;

View file

@ -265,7 +265,7 @@ namespace Server.Items
if ( m_Item != null && value == null )
{
int delay = Utility.RandomMinMax( this.Entry.MinDelay, this.Entry.MaxDelay );
this.NextRespawn = DateTime.Now + TimeSpan.FromMinutes( delay );
this.NextRespawn = DateTime.UtcNow + TimeSpan.FromMinutes( delay );
}
if ( Instance != null )
@ -287,7 +287,7 @@ namespace Server.Items
set{ m_NextRespawn = value; }
}
public StealableInstance( StealableEntry entry ) : this( entry, null, DateTime.Now )
public StealableInstance( StealableEntry entry ) : this( entry, null, DateTime.UtcNow )
{
}
@ -303,7 +303,7 @@ namespace Server.Items
if ( this.Item != null && ( this.Item.Deleted || this.Item.Movable || this.Item.Parent != null ) )
this.Item = null;
if ( this.Item == null && DateTime.Now >= this.NextRespawn )
if ( this.Item == null && DateTime.UtcNow >= this.NextRespawn )
{
this.Item = this.Entry.CreateInstance();
}

View file

@ -51,7 +51,7 @@ namespace Server.Items
return false;
}
if ( DateTime.Now.Month != 12 )
if ( DateTime.UtcNow.Month != 12 )
{
from.SendLocalizedMessage( 1005700 ); // You will have to wait till next December to put your tree back up for display.
return false;

View file

@ -89,7 +89,7 @@ namespace Server.Engines.Mahjong
m_WallBreakIndicator = new MahjongWallBreakIndicator( this, new Point2D( 335, 335 ) );
m_Dices = new MahjongDices( this );
m_Players = new MahjongPlayers( this, MaxPlayers, BaseScore );
m_LastReset = DateTime.Now;
m_LastReset = DateTime.UtcNow;
m_Level = SecureLevel.CoOwners;
}
@ -189,10 +189,10 @@ namespace Server.Engines.Mahjong
public void ResetGame( Mobile from )
{
if ( DateTime.Now - m_LastReset < TimeSpan.FromSeconds( 5.0 ) )
if ( DateTime.UtcNow - m_LastReset < TimeSpan.FromSeconds( 5.0 ) )
return;
m_LastReset = DateTime.Now;
m_LastReset = DateTime.UtcNow;
if ( from != null )
m_Players.SendLocalizedMessage( 1062771, from.Name ); // ~1_name~ has reset the game.
@ -207,10 +207,10 @@ namespace Server.Engines.Mahjong
public void ResetWalls( Mobile from )
{
if ( DateTime.Now - m_LastReset < TimeSpan.FromSeconds( 5.0 ) )
if ( DateTime.UtcNow - m_LastReset < TimeSpan.FromSeconds( 5.0 ) )
return;
m_LastReset = DateTime.Now;
m_LastReset = DateTime.UtcNow;
BuildWalls();
@ -292,7 +292,7 @@ namespace Server.Engines.Mahjong
m_ShowScores = reader.ReadBool();
m_SpectatorVision = reader.ReadBool();
m_LastReset = DateTime.Now;
m_LastReset = DateTime.UtcNow;
break;
}

View file

@ -58,7 +58,7 @@ namespace Server.Items
{
if ( m_Duration != TimeSpan.Zero && m_Burning )
{
return m_End - DateTime.Now;
return m_End - DateTime.UtcNow;
}
else
return m_Duration;
@ -124,7 +124,7 @@ namespace Server.Items
if ( m_BurntOut )
m_Duration = TimeSpan.Zero;
else if ( m_Duration != TimeSpan.Zero )
m_Duration = m_End - DateTime.Now;
m_Duration = m_End - DateTime.UtcNow;
if ( m_Timer != null )
m_Timer.Stop();
@ -148,7 +148,7 @@ namespace Server.Items
if ( delay == TimeSpan.Zero )
return;
m_End = DateTime.Now + delay;
m_End = DateTime.UtcNow + delay;
m_Timer = new InternalTimer( this, delay );
m_Timer.Start();
@ -206,7 +206,7 @@ namespace Server.Items
m_Protected = reader.ReadBool();
if ( m_Burning && m_Duration != TimeSpan.Zero )
DoTimer( reader.ReadDeltaTime() - DateTime.Now );
DoTimer( reader.ReadDeltaTime() - DateTime.UtcNow );
break;
}

View file

@ -444,10 +444,10 @@ namespace Server.Items
private int m_Count;
private DateTime m_NextSkillTime;
private DateTime m_NextSpellTime;
private DateTime m_NextActionTime;
private DateTime m_LastMoveTime;
private int m_NextSkillTime;
private int m_NextSpellTime;
private int m_NextActionTime;
private int m_LastMoveTime;
public DigTimer( Mobile from, TreasureMap treasureMap, Point3D location, Map map ) : base( TimeSpan.Zero, TimeSpan.FromSeconds( 1.0 ) )
{

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;

View file

@ -43,7 +43,7 @@ namespace Server.Items
m_Entries = new ArrayList();
m_Created = DateTime.Now;
m_Created = DateTime.UtcNow;
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), TimeSpan.FromSeconds( 1.0 ), new TimerCallback( OnTick ) );
}
@ -102,7 +102,7 @@ namespace Server.Items
private void OnTick()
{
DateTime now = DateTime.Now;
DateTime now = DateTime.UtcNow;
TimeSpan age = now - this.Created;
if ( age >= TimeSpan.FromSeconds( 100.0 ) )
@ -210,7 +210,7 @@ namespace Server.Items
{
m_Player = player;
m_Fire = fire;
m_Start = DateTime.Now;
m_Start = DateTime.UtcNow;
m_Safe = false;
}
}

View file

@ -124,8 +124,8 @@ namespace Server.Items
{
Timer timer = m_Delay[ m ] as Timer;
if ( timer != null && timer.Next > DateTime.Now )
return (int) (timer.Next - DateTime.Now).TotalSeconds;
if ( timer != null && timer.Next > DateTime.UtcNow )
return (int) (timer.Next - DateTime.UtcNow).TotalSeconds;
return 0;
}
@ -211,7 +211,7 @@ namespace Server.Items
MoveToWorld( loc, map );
m_From = from;
m_End = DateTime.Now + TimeSpan.FromSeconds( 10 );
m_End = DateTime.UtcNow + TimeSpan.FromSeconds( 10 );
SetDamage( min, max );
@ -310,7 +310,7 @@ namespace Server.Items
if ( m_Item.Deleted )
return;
if ( DateTime.Now > m_End )
if ( DateTime.UtcNow > m_End )
{
m_Item.Delete();
Stop();

View file

@ -109,7 +109,7 @@ namespace Server.Items
if ( mon.Controlled || mon.Summoned )
continue;
mon.Pacify( from, DateTime.Now + TimeSpan.FromSeconds( 5.0 ) ); // TODO check
mon.Pacify( from, DateTime.UtcNow + TimeSpan.FromSeconds( 5.0 ) ); // TODO check
}
}
}
@ -146,8 +146,8 @@ namespace Server.Items
{
Timer timer = m_Delay[ m ] as Timer;
if ( timer != null && timer.Next > DateTime.Now )
return (int) (timer.Next - DateTime.Now).TotalSeconds;
if ( timer != null && timer.Next > DateTime.UtcNow )
return (int) (timer.Next - DateTime.UtcNow).TotalSeconds;
return 0;
}

View file

@ -337,7 +337,7 @@ namespace Server.Items
return;
}
if ( DateTime.Now < m_NextUse )
if ( DateTime.UtcNow < m_NextUse )
{
from.SendLocalizedMessage( 502406 ); // This book needs time to recharge.
return;
@ -353,7 +353,7 @@ namespace Server.Items
public virtual void OnTravel()
{
if ( !Core.SA )
m_NextUse = DateTime.Now + UseDelay;
m_NextUse = DateTime.UtcNow + UseDelay;
}
public override void OnAfterDuped( Item newItem )

View file

@ -96,7 +96,7 @@ namespace Server.Items
set
{
if( value != m_ReplenishesCharges && value )
m_LastReplenished = DateTime.Now;
m_LastReplenished = DateTime.UtcNow;
m_ReplenishesCharges = value;
}
@ -112,12 +112,12 @@ namespace Server.Items
if( !m_ReplenishesCharges || m_UsesRemaining >= InitMaxUses )
return;
if( m_LastReplenished + ChargeReplenishRate < DateTime.Now )
if( m_LastReplenished + ChargeReplenishRate < DateTime.UtcNow )
{
TimeSpan timeDifference = DateTime.Now - m_LastReplenished;
TimeSpan timeDifference = DateTime.UtcNow - m_LastReplenished;
m_UsesRemaining = Math.Min( m_UsesRemaining + (int)( timeDifference.Ticks / ChargeReplenishRate.Ticks), InitMaxUses ); //How rude of TimeSpan to not allow timespan division.
m_LastReplenished = DateTime.Now;
m_LastReplenished = DateTime.UtcNow;
if( invalidate )
InvalidateProperties();

View file

@ -34,7 +34,7 @@ namespace Server.Items
// You need at least ~1_SKILL_REQUIREMENT~ ~2_SKILL_NAME~ skill to use that ability.
from.SendLocalizedMessage( 1063013, "50\tNinjitsu" );
}
else if ( from.NextSkillTime > DateTime.Now )
else if (Core.TickCount - from.NextSkillTime < 0)
{
// You must wait a few seconds before you can use that item.
from.SendLocalizedMessage( 1070772 );

View file

@ -28,7 +28,7 @@ namespace Server.Items
// You need at least ~1_SKILL_REQUIREMENT~ ~2_SKILL_NAME~ skill to use that ability.
from.SendLocalizedMessage( 1063013, "50\tNinjitsu" );
}
else if ( from.NextSkillTime > DateTime.Now )
else if (Core.TickCount - from.NextSkillTime < 0)
{
// You must wait a few seconds before you can use that item.
from.SendLocalizedMessage( 1070772 );

View file

@ -67,7 +67,7 @@ namespace Server.Items
{
from.SendLocalizedMessage( 1062845 + Utility.Random( 3 ) ); //"That doesn't seem like the smartest thing to do." / "That was an encounter you don't wish to repeat." / "Ha! You missed!"
}
else if( Core.SE && Utility.RandomDouble() > .20 && (from.Direction & Direction.Running) != 0 && ( DateTime.Now - from.LastMoveTime ) < from.ComputeMovementSpeed( from.Direction ) )
else if (Core.SE && Utility.RandomDouble() > .20 && (from.Direction & Direction.Running) != 0 && (Core.TickCount - from.LastMoveTime) < from.ComputeMovementSpeed(from.Direction))
{
from.SendLocalizedMessage( 1063305 ); // Didn't your parents ever tell you not to run with scissors in your hand?!
}

View file

@ -330,7 +330,7 @@ namespace Server.Items
if ( t != null )
{
t.Delay = t.Next - DateTime.Now;
t.Delay = t.Next - DateTime.UtcNow;
t.Stop();
}
@ -356,7 +356,7 @@ namespace Server.Items
if ( t != null )
{
return t.Next - DateTime.Now;
return t.Next - DateTime.UtcNow;
}
return TimeSpan.Zero;

View file

@ -47,7 +47,7 @@ namespace Server.Items
Mobile m = (Mobile)entry.Key;
writer.Write( m );
writer.Write( ((Timer)entry.Value).Next - DateTime.Now );
writer.Write( ((Timer)entry.Value).Next - DateTime.UtcNow );
writer.Write( m.NameMod );
}
}

View file

@ -27,7 +27,7 @@ namespace Server.Items
public static void Initialize()
{
m_ServerStart = DateTime.Now;
m_ServerStart = DateTime.UtcNow;
}
[Constructable]
@ -71,7 +71,7 @@ namespace Server.Items
public static void GetTime( Map map, int x, int y, out int hours, out int minutes, out int totalMinutes )
{
TimeSpan timeSpan = DateTime.Now - WorldStart;
TimeSpan timeSpan = DateTime.UtcNow - WorldStart;
totalMinutes = (int)(timeSpan.TotalSeconds / SecondsPerUOMinute);

View file

@ -178,10 +178,10 @@ namespace Server.Items
DateTime next = reader.ReadDateTime();
if( next < DateTime.Now )
if( next < DateTime.UtcNow )
m_Timer = Timer.DelayCall( TimeSpan.Zero, RechargeTime, new TimerCallback( Recharge ) );
else
m_Timer = Timer.DelayCall( next - DateTime.Now, RechargeTime, new TimerCallback( Recharge ) );
m_Timer = Timer.DelayCall( next - DateTime.UtcNow, RechargeTime, new TimerCallback( Recharge ) );
}
public void Recharge()

View file

@ -86,7 +86,7 @@ namespace Server.Items
m_SpawnTimer = new SpawnTimer( this, delay );
m_SpawnTimer.Start();
m_NextSpawnTime = DateTime.Now + delay;
m_NextSpawnTime = DateTime.UtcNow + delay;
}
private void StopSpawnTimer()
@ -158,7 +158,7 @@ namespace Server.Items
m_Level = (SecureLevel) reader.ReadEncodedInt();
if ( m_Petals < 10 )
StartSpawnTimer( m_NextSpawnTime - DateTime.Now );
StartSpawnTimer( m_NextSpawnTime - DateTime.UtcNow );
}
}

View file

@ -20,7 +20,7 @@ namespace Server.Items
public override void OnComponentUsed( AddonComponent c, Mobile from )
{
if ( from.InRange( Location, 2 ) )
if ( from.InRange( this.GetWorldLocation(), 2 ) && from.InLOS( this.GetWorldLocation() ) )
{
if ( Utility.RandomBool() )
{

View file

@ -207,7 +207,7 @@ namespace Server.Items
}
else
{
int daysLeft = (int)Math.Ceiling( ( deed.Stone.Started + deed.Stone.Duration + HouseRaffleStone.ExpirationTime - DateTime.Now ).TotalDays );
int daysLeft = (int)Math.Ceiling( ( deed.Stone.Started + deed.Stone.Duration + HouseRaffleStone.ExpirationTime - DateTime.UtcNow ).TotalDays );
return String.Format(
"<bodytextblack>" +

View file

@ -42,7 +42,7 @@ namespace Server.Items
else
m_Address = IPAddress.None;
m_Date = DateTime.Now;
m_Date = DateTime.UtcNow;
}
public void Serialize( GenericWriter writer )
@ -123,7 +123,7 @@ namespace Server.Items
m_Entries.Clear();
m_Winner = null;
m_Deed = null;
m_Started = DateTime.Now;
m_Started = DateTime.UtcNow;
}
m_State = value;
@ -194,7 +194,7 @@ namespace Server.Items
if ( m_State != HouseRaffleState.Completed )
return false;
return ( m_Started + m_Duration + ExpirationTime <= DateTime.Now );
return ( m_Started + m_Duration + ExpirationTime <= DateTime.UtcNow );
}
}
@ -520,7 +520,7 @@ namespace Server.Items
public void CheckEnd()
{
if ( m_State != HouseRaffleState.Active || m_Started + m_Duration > DateTime.Now )
if ( m_State != HouseRaffleState.Active || m_Started + m_Duration > DateTime.UtcNow )
return;
m_State = HouseRaffleState.Completed;

View file

@ -260,7 +260,7 @@ namespace Server.Items
{
from.Send( new AsciiMessage( this.Serial, this.ItemID, MessageType.Regular, 0x22, 3, "", "You cannot summon your pet to this location." ) );
}
else if ( Core.ML && from is PlayerMobile && DateTime.Now < ((PlayerMobile)from).LastPetBallTime.AddSeconds( 15.0 ) )
else if ( Core.ML && from is PlayerMobile && DateTime.UtcNow < ((PlayerMobile)from).LastPetBallTime.AddSeconds( 15.0 ) )
{
MessageHelper.SendLocalizedMessageTo( this, from, 1080072, 0x22 ); // You must wait a few seconds before you can summon your pet.
}
@ -308,7 +308,7 @@ namespace Server.Items
if ( from is PlayerMobile )
{
((PlayerMobile)from).LastPetBallTime = DateTime.Now;
((PlayerMobile)from).LastPetBallTime = DateTime.UtcNow;
}
}

View file

@ -149,7 +149,7 @@ namespace Server.Items
{
AggressorInfo info = m.Aggressed[i];
if ( DateTime.Now - info.LastCombatTime < time )
if ( DateTime.UtcNow - info.LastCombatTime < time )
return true;
}
@ -158,7 +158,7 @@ namespace Server.Items
protected virtual bool CheckUse( Mobile from )
{
DateTime now = DateTime.Now;
DateTime now = DateTime.UtcNow;
PlayerMobile pm = from as PlayerMobile;
@ -218,7 +218,7 @@ namespace Server.Items
}
#region Scroll of Alacrity
if ( pm.AcceleratedStart > DateTime.Now )
if ( pm.AcceleratedStart > DateTime.UtcNow )
{
from.SendLocalizedMessage(1078115); // You may not use a soulstone while your character is under the effects of a Scroll of Alacrity.
return false;
@ -595,7 +595,7 @@ namespace Server.Items
#region Scroll of ALacrity
PlayerMobile pm = from as PlayerMobile;
if (pm.AcceleratedStart > DateTime.Now)
if (pm.AcceleratedStart > DateTime.UtcNow)
{
// <CENTER>Unable to Absorb Selected Skill from Soulstone</CENTER>

View file

@ -94,7 +94,7 @@ namespace Server.Items
#endregion
#region Scroll of Alacrity
if (pm.AcceleratedStart > DateTime.Now)
if (pm.AcceleratedStart > DateTime.UtcNow)
{
from.SendLocalizedMessage(1077951); // You are already under the effect of an accelerated skillgain scroll.
return false;
@ -129,7 +129,7 @@ namespace Server.Items
Effects.PlaySound( from.Location, from.Map, 0x1E9 );
Effects.SendTargetParticles( from, 0x373A, 35, 45, 0x00, 0x00, 9502, (EffectLayer)255, 0x100 );
pm.AcceleratedStart = DateTime.Now + TimeSpan.FromMinutes(15);
pm.AcceleratedStart = DateTime.UtcNow + TimeSpan.FromMinutes(15);
Timer t = (Timer)m_Table[from];

View file

@ -82,7 +82,7 @@ namespace Server.Items
#endregion
#region Scroll of Alacrity
if (pm.AcceleratedStart > DateTime.Now)
if (pm.AcceleratedStart > DateTime.UtcNow)
{
from.SendLocalizedMessage(1077951); // You are already under the effect of an accelerated skillgain scroll.
return false;

View file

@ -59,9 +59,9 @@ namespace Server.Items
{
m.SendLocalizedMessage( 1060197 ); // You are not dead, and thus cannot be resurrected!
}
else if ( m.AnkhNextUse > DateTime.Now )
else if ( m.AnkhNextUse > DateTime.UtcNow )
{
TimeSpan delay = m.AnkhNextUse - DateTime.Now;
TimeSpan delay = m.AnkhNextUse - DateTime.UtcNow;
if ( delay.TotalMinutes > 0 )
m.SendLocalizedMessage( 1079265, Math.Round( delay.TotalMinutes ).ToString() ); // You must wait ~1_minutes~ minutes before you can use this item.
@ -142,7 +142,7 @@ namespace Server.Items
if ( from is PlayerMobile )
{
((PlayerMobile) from).AnkhNextUse = DateTime.Now + TimeSpan.FromHours( 1 );
((PlayerMobile) from).AnkhNextUse = DateTime.UtcNow + TimeSpan.FromHours( 1 );
}
base.OnResponse( state, info );

View file

@ -273,7 +273,7 @@ namespace Server.Items
if ( m_Timer != null )
writer.Write( (DateTime) m_Timer.Next );
else
writer.Write( (DateTime) DateTime.Now + TimeSpan.FromDays( 1 ) );
writer.Write( (DateTime) DateTime.UtcNow + TimeSpan.FromDays( 1 ) );
}
public override void Deserialize( GenericReader reader )
@ -294,10 +294,10 @@ namespace Server.Items
DateTime next = reader.ReadDateTime();
if ( next < DateTime.Now )
next = DateTime.Now;
if ( next < DateTime.UtcNow )
next = DateTime.UtcNow;
m_Timer = Timer.DelayCall( next - DateTime.Now, TimeSpan.FromDays( 1 ), new TimerCallback( GiveResources ) );
m_Timer = Timer.DelayCall( next - DateTime.UtcNow, TimeSpan.FromDays( 1 ), new TimerCallback( GiveResources ) );
break;
}
}

View file

@ -134,7 +134,7 @@ namespace Server.Items
if ( m_Timer != null )
writer.Write( (DateTime) m_Timer.Next );
else
writer.Write( (DateTime) DateTime.Now + TimeSpan.FromDays( 1 ) );
writer.Write( (DateTime) DateTime.UtcNow + TimeSpan.FromDays( 1 ) );
}
public override void Deserialize( GenericReader reader )
@ -148,10 +148,10 @@ namespace Server.Items
DateTime next = reader.ReadDateTime();
if ( next < DateTime.Now )
next = DateTime.Now;
if ( next < DateTime.UtcNow )
next = DateTime.UtcNow;
m_Timer = Timer.DelayCall( next - DateTime.Now, TimeSpan.FromDays( 1 ), new TimerCallback( GiveLogs ) );
m_Timer = Timer.DelayCall( next - DateTime.UtcNow, TimeSpan.FromDays( 1 ), new TimerCallback( GiveLogs ) );
}
}

View file

@ -370,7 +370,7 @@ namespace Server.Mobiles
public override void OnThink()
{
/*
if ( m_NextWave < DateTime.Now )
if ( m_NextWave < DateTime.UtcNow )
AreaHeatDamage();
*/
}
@ -421,7 +421,7 @@ namespace Server.Mobiles
}
}
m_NextWave = DateTime.Now + TimeSpan.FromSeconds( 3 );
m_NextWave = DateTime.UtcNow + TimeSpan.FromSeconds( 3 );
}
*/
}

View file

@ -45,15 +45,15 @@ namespace Server.Items
if ( m.Location == oldLocation )
return;
if ( CheckRange( m.Location, oldLocation, 0 ) && DateTime.Now >= m_NextActiveTrigger )
if ( CheckRange( m.Location, oldLocation, 0 ) && DateTime.UtcNow >= m_NextActiveTrigger )
{
m_NextActiveTrigger = m_NextPassiveTrigger = DateTime.Now + ResetDelay;
m_NextActiveTrigger = m_NextPassiveTrigger = DateTime.UtcNow + ResetDelay;
OnTrigger( m );
}
else if ( PassivelyTriggered && CheckRange( m.Location, oldLocation, PassiveTriggerRange ) && DateTime.Now >= m_NextPassiveTrigger )
else if ( PassivelyTriggered && CheckRange( m.Location, oldLocation, PassiveTriggerRange ) && DateTime.UtcNow >= m_NextPassiveTrigger )
{
m_NextPassiveTrigger = DateTime.Now + PassiveTriggerDelay;
m_NextPassiveTrigger = DateTime.UtcNow + PassiveTriggerDelay;
OnTrigger( m );
}

View file

@ -49,7 +49,7 @@ namespace Server.Items
{
BaseWeapon.InDoubleStrike = true;
attacker.RevealingAction();
attacker.NextCombatTime = DateTime.Now + weapon.OnSwing( attacker, defender );
attacker.NextCombatTime = Core.TickCount + weapon.OnSwing(attacker, defender).TotalMilliseconds;
BaseWeapon.InDoubleStrike = false;
}
}

View file

@ -636,7 +636,7 @@ namespace Server.Items
m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) );
}
from.NextCombatTime = DateTime.Now + GetDelay( from );
from.NextCombatTime = Core.TickCount + (int)GetDelay( from ).TotalMilliseconds;
if ( UseSkillMod && m_AccuracyLevel != WeaponAccuracyLevel.Regular )
{
@ -689,7 +689,7 @@ namespace Server.Items
m.RemoveStatMod( modName + "Int" );
if ( weapon != null )
m.NextCombatTime = DateTime.Now + weapon.GetDelay( m );
m.NextCombatTime = Core.TickCount + (int)weapon.GetDelay(m).TotalMilliseconds;
if ( UseSkillMod && m_SkillMod != null )
{
@ -1018,7 +1018,7 @@ namespace Server.Items
{
PlayerMobile p = attacker as PlayerMobile;
canSwing = ( p == null || p.PeacedUntil <= DateTime.Now );
canSwing = ( p == null || p.PeacedUntil <= DateTime.UtcNow );
}
}

View file

@ -52,7 +52,7 @@ namespace Server.Items
WeaponAbility a = WeaponAbility.GetCurrentAbility( attacker );
// Make sure we've been standing still for .25/.5/1 second depending on Era
if ( DateTime.Now > (attacker.LastMoveTime + TimeSpan.FromSeconds( Core.SE ? 0.25 : (Core.AOS ? 0.5 : 1.0) )) || (Core.AOS && WeaponAbility.GetCurrentAbility( attacker ) is MovingShot) )
if (Core.TickCount - attacker.LastMoveTime >= (Core.SE ? 250 : Core.AOS ? 500 : 1000) || (Core.AOS && WeaponAbility.GetCurrentAbility(attacker) is MovingShot))
{
bool canSwing = true;