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

@ -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 ) );
}
}