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

@ -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))
{

View file

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

View file

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

View file

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

View file

@ -93,14 +93,14 @@ namespace Server.Mobiles
from.SendLocalizedMessage( 1080400 ); // You can not milk the cow from this location.
if ( Controlled && ControlMaster != from )
from.SendLocalizedMessage( 1071182 ); // The cow nimbly escapes your attempts to milk it.
if ( m_Milk == 0 && m_MilkedOn + TimeSpan.FromDays( 1 ) > DateTime.Now )
if ( m_Milk == 0 && m_MilkedOn + TimeSpan.FromDays( 1 ) > DateTime.UtcNow )
from.SendLocalizedMessage( 1080198 ); // This cow can not be milked now. Please wait for some time.
else
{
if ( m_Milk == 0 )
m_Milk = 4;
m_MilkedOn = DateTime.Now;
m_MilkedOn = DateTime.UtcNow;
m_Milk--;
return true;

View file

@ -15,12 +15,12 @@ namespace Server.Mobiles
public DateTime NextWoolTime
{
get{ return m_NextWoolTime; }
set{ m_NextWoolTime = value; Body = ( DateTime.Now >= m_NextWoolTime ) ? 0xCF : 0xDF; }
set{ m_NextWoolTime = value; Body = ( DateTime.UtcNow >= m_NextWoolTime ) ? 0xCF : 0xDF; }
}
public void Carve( Mobile from, Item item )
{
if ( DateTime.Now < m_NextWoolTime )
if ( DateTime.UtcNow < m_NextWoolTime )
{
// This sheep is not yet ready to be shorn.
PrivateOverheadMessage( MessageType.Regular, 0x3B2, 500449, from.NetState );
@ -30,13 +30,13 @@ namespace Server.Mobiles
from.SendLocalizedMessage( 500452 ); // You place the gathered wool into your backpack.
from.AddToBackpack( new Wool( Map == Map.Felucca ? 2 : 1 ) );
NextWoolTime = DateTime.Now + TimeSpan.FromHours( 3.0 ); // TODO: Proper time delay
NextWoolTime = DateTime.UtcNow + TimeSpan.FromHours( 3.0 ); // TODO: Proper time delay
}
public override void OnThink()
{
base.OnThink();
Body = ( DateTime.Now >= m_NextWoolTime ) ? 0xCF : 0xDF;
Body = ( DateTime.UtcNow >= m_NextWoolTime ) ? 0xCF : 0xDF;
}
[Constructable]

View file

@ -299,10 +299,10 @@ namespace Server.Mobiles
if( attacker == null )
attacker = m_Rider.FindMostRecentDamager( true );
if( !(attacker == this || attacker == m_Rider || willKill || DateTime.Now < m_NextMountAbility) )
if( !(attacker == this || attacker == m_Rider || willKill || DateTime.UtcNow < m_NextMountAbility) )
{
if( DoMountAbility( amount, from ) )
m_NextMountAbility = DateTime.Now + MountAbilityDelay;
m_NextMountAbility = DateTime.UtcNow + MountAbilityDelay;
}
}

View file

@ -353,7 +353,7 @@ namespace Server.Mobiles
private void CheckShout( PlayerMobile pm, Point3D oldLocation )
{
if ( m_MLNextShout > DateTime.Now || pm.Hidden || !pm.Alive )
if ( m_MLNextShout > DateTime.UtcNow || pm.Hidden || !pm.Alive )
return;
int shoutRange = ShoutRange;
@ -372,7 +372,7 @@ namespace Server.Mobiles
return;
Shout( pm );
m_MLNextShout = DateTime.Now + ShoutDelay;
m_MLNextShout = DateTime.UtcNow + ShoutDelay;
}
public virtual void Shout( PlayerMobile pm )
@ -465,7 +465,7 @@ namespace Server.Mobiles
get
{
if ( m_DeleteTimer != null && m_DeleteTimer.Running )
return m_DeleteTimer.Next - DateTime.Now;
return m_DeleteTimer.Next - DateTime.UtcNow;
return TimeSpan.Zero;
}
@ -679,7 +679,7 @@ namespace Server.Mobiles
public virtual void BreathStallMovement()
{
if ( m_AI != null )
m_AI.NextMove = DateTime.Now + TimeSpan.FromSeconds( BreathStallTime );
m_AI.NextMove = DateTime.UtcNow + TimeSpan.FromSeconds( BreathStallTime );
}
public virtual void BreathPlayAngerSound()
@ -854,7 +854,7 @@ namespace Server.Mobiles
if ( m_EndFlee == DateTime.MinValue )
return false;
if ( DateTime.Now >= m_EndFlee )
if ( DateTime.UtcNow >= m_EndFlee )
{
StopFlee();
return false;
@ -865,7 +865,7 @@ namespace Server.Mobiles
public virtual void BeginFlee( TimeSpan maxDuration )
{
m_EndFlee = DateTime.Now + maxDuration;
m_EndFlee = DateTime.UtcNow + maxDuration;
}
#endregion
@ -1404,7 +1404,7 @@ namespace Server.Mobiles
public void Unpacify()
{
BardEndTime = DateTime.Now;
BardEndTime = DateTime.UtcNow;
BardPacified = false;
}
@ -1712,7 +1712,7 @@ namespace Server.Mobiles
m_Owners = new List<Mobile>();
m_NextReacquireTime = DateTime.Now + ReacquireDelay;
m_NextReacquireTime = DateTime.UtcNow + ReacquireDelay;
ChangeAIType(AI);
@ -1951,7 +1951,7 @@ namespace Server.Mobiles
if ( m_bSummoned )
{
m_SummonEnd = reader.ReadDeltaTime();
new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start();
new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.UtcNow ).Start();
}
m_iControlSlots = reader.ReadInt();
@ -2294,9 +2294,9 @@ namespace Server.Mobiles
{
if ( BondingBegin == DateTime.MinValue )
{
BondingBegin = DateTime.Now;
BondingBegin = DateTime.UtcNow;
}
else if ( (BondingBegin + BondingDelay) <= DateTime.Now )
else if ( (BondingBegin + BondingDelay) <= DateTime.UtcNow )
{
IsBonded = true;
BondingBegin = DateTime.MinValue;
@ -2871,7 +2871,7 @@ namespace Server.Mobiles
if ( m_bSummoned == value )
return;
m_NextReacquireTime = DateTime.Now;
m_NextReacquireTime = DateTime.UtcNow;
m_bSummoned = value;
Delta( MobileDelta.Noto );
@ -3508,7 +3508,7 @@ namespace Server.Mobiles
{
// idling...
if ( DateTime.Now >= m_IdleReleaseTime )
if ( DateTime.UtcNow >= m_IdleReleaseTime )
{
m_IdleReleaseTime = DateTime.MinValue;
return false; // idle is over
@ -3520,7 +3520,7 @@ namespace Server.Mobiles
if ( 95 > Utility.Random( 100 ) )
return false; // not idling, but don't want to enter idle state
m_IdleReleaseTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 15, 25 ) );
m_IdleReleaseTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 15, 25 ) );
if ( Body.IsHuman )
{
@ -4823,7 +4823,7 @@ namespace Server.Mobiles
if ( owner == null || owner.Deleted || owner.Map != this.Map || !owner.InRange( this, 12 ) || !this.CanSee( owner ) || !this.InLOS( owner ) )
{
if ( this.OwnerAbandonTime == DateTime.MinValue )
this.OwnerAbandonTime = DateTime.Now;
this.OwnerAbandonTime = DateTime.UtcNow;
}
else
{
@ -5131,7 +5131,7 @@ namespace Server.Mobiles
}
new UnsummonTimer( caster, creature, duration ).Start();
creature.m_SummonEnd = DateTime.Now + duration;
creature.m_SummonEnd = DateTime.UtcNow + duration;
creature.MoveToWorld( p, caster.Map );
@ -5174,8 +5174,8 @@ namespace Server.Mobiles
public virtual double HealOwnerInterval { get { return 30.0; } }
public virtual bool HealOwnerFully { get { return false; } }
private DateTime m_NextHealTime = DateTime.Now;
private DateTime m_NextHealOwnerTime = DateTime.Now;
private DateTime m_NextHealTime = DateTime.UtcNow;
private DateTime m_NextHealOwnerTime = DateTime.UtcNow;
private Timer m_HealTimer = null;
public bool IsHealing { get { return ( m_HealTimer != null ); } }
@ -5345,7 +5345,7 @@ namespace Server.Mobiles
public virtual void OnThink()
{
if ( EnableRummaging && CanRummageCorpses && !Summoned && !Controlled && DateTime.Now >= m_NextRummageTime )
if ( EnableRummaging && CanRummageCorpses && !Summoned && !Controlled && DateTime.UtcNow >= m_NextRummageTime )
{
double min, max;
@ -5361,21 +5361,21 @@ namespace Server.Mobiles
}
double delay = min + (Utility.RandomDouble() * (max - min));
m_NextRummageTime = DateTime.Now + TimeSpan.FromMinutes( delay );
m_NextRummageTime = DateTime.UtcNow + TimeSpan.FromMinutes( delay );
}
if ( CanBreath && DateTime.Now >= m_NextBreathTime ) // tested: controlled dragons do breath fire, what about summoned skeletal dragons?
if ( CanBreath && DateTime.UtcNow >= m_NextBreathTime ) // tested: controlled dragons do breath fire, what about summoned skeletal dragons?
{
Mobile target = this.Combatant;
if( target != null && target.Alive && !target.IsDeadBondedPet && CanBeHarmful( target ) && target.Map == this.Map && !IsDeadBondedPet && target.InRange( this, BreathRange ) && InLOS( target ) && !BardPacified )
{
if( ( DateTime.Now - m_NextBreathTime ) < TimeSpan.FromSeconds( 30 ) && Utility.RandomBool() )
if( ( DateTime.UtcNow - m_NextBreathTime ) < TimeSpan.FromSeconds( 30 ) && Utility.RandomBool() )
{
BreathStart( target );
}
m_NextBreathTime = DateTime.Now + TimeSpan.FromSeconds( BreathMinDelay + ( ( Utility.RandomDouble( ) * ( BreathMaxDelay - BreathMinDelay ) ) ) );
m_NextBreathTime = DateTime.UtcNow + TimeSpan.FromSeconds( BreathMinDelay + ( ( Utility.RandomDouble( ) * ( BreathMaxDelay - BreathMinDelay ) ) ) );
}
}
@ -5383,17 +5383,17 @@ namespace Server.Mobiles
{
Mobile owner = this.ControlMaster;
if ( owner != null && CanHealOwner && DateTime.Now >= m_NextHealOwnerTime && CanBeBeneficial( owner, true, true ) && owner.Map == this.Map && InRange( owner, HealStartRange ) && InLOS( owner ) && owner.Hits < HealOwnerTrigger * owner.HitsMax )
if ( owner != null && CanHealOwner && DateTime.UtcNow >= m_NextHealOwnerTime && CanBeBeneficial( owner, true, true ) && owner.Map == this.Map && InRange( owner, HealStartRange ) && InLOS( owner ) && owner.Hits < HealOwnerTrigger * owner.HitsMax )
{
HealStart( owner );
m_NextHealOwnerTime = DateTime.Now + TimeSpan.FromSeconds( HealOwnerInterval );
m_NextHealOwnerTime = DateTime.UtcNow + TimeSpan.FromSeconds( HealOwnerInterval );
}
else if ( CanHeal && DateTime.Now >= m_NextHealTime && CanBeBeneficial( this ) && ( Hits < HealTrigger * HitsMax || Poisoned ) )
else if ( CanHeal && DateTime.UtcNow >= m_NextHealTime && CanBeBeneficial( this ) && ( Hits < HealTrigger * HitsMax || Poisoned ) )
{
HealStart( this );
m_NextHealTime = DateTime.Now + TimeSpan.FromSeconds( HealInterval );
m_NextHealTime = DateTime.UtcNow + TimeSpan.FromSeconds( HealInterval );
}
}
@ -5416,10 +5416,10 @@ namespace Server.Mobiles
m_FailedReturnHome = 0;
}
if ( HasAura && DateTime.Now >= m_NextAura )
if ( HasAura && DateTime.UtcNow >= m_NextAura )
{
AuraDamage();
m_NextAura = DateTime.Now + AuraInterval;
m_NextAura = DateTime.UtcNow + AuraInterval;
}
}
@ -5501,7 +5501,7 @@ namespace Server.Mobiles
BardMaster = master;
BardTarget = target;
Combatant = target;
BardEndTime = DateTime.Now + TimeSpan.FromSeconds( 30.0 );
BardEndTime = DateTime.UtcNow + TimeSpan.FromSeconds( 30.0 );
if ( target is BaseCreature )
{
@ -5515,7 +5515,7 @@ namespace Server.Mobiles
t.BardMaster = master;
t.BardTarget = this;
t.Combatant = this;
t.BardEndTime = DateTime.Now + TimeSpan.FromSeconds( 30.0 );
t.BardEndTime = DateTime.UtcNow + TimeSpan.FromSeconds( 30.0 );
}
}
else
@ -5623,7 +5623,7 @@ namespace Server.Mobiles
if ( owner == null || owner.Deleted || owner.Map != this.Map || !owner.InRange( this, 12 ) || !this.CanSee( owner ) || !this.InLOS( owner ) )
{
if ( this.OwnerAbandonTime == DateTime.MinValue )
this.OwnerAbandonTime = DateTime.Now;
this.OwnerAbandonTime = DateTime.UtcNow;
}
else
{
@ -5742,7 +5742,7 @@ namespace Server.Mobiles
public LoyaltyTimer() : base( InternalDelay, InternalDelay )
{
m_NextHourlyCheck = DateTime.Now + TimeSpan.FromHours( 1.0 );
m_NextHourlyCheck = DateTime.UtcNow + TimeSpan.FromHours( 1.0 );
Priority = TimerPriority.FiveSeconds;
}
@ -5750,8 +5750,8 @@ namespace Server.Mobiles
protected override void OnTick()
{
if ( DateTime.Now >= m_NextHourlyCheck )
m_NextHourlyCheck = DateTime.Now + TimeSpan.FromHours( 1.0 );
if ( DateTime.UtcNow >= m_NextHourlyCheck )
m_NextHourlyCheck = DateTime.UtcNow + TimeSpan.FromHours( 1.0 );
else
return;
@ -5779,8 +5779,8 @@ namespace Server.Mobiles
if ( !c.IsStabled && ( owner == null || owner.Deleted || owner.Map != c.Map || !owner.InRange( c, 12 ) || !c.CanSee( owner ) || !c.InLOS( owner ) ) )
{
if ( c.OwnerAbandonTime == DateTime.MinValue )
c.OwnerAbandonTime = DateTime.Now;
else if ( (c.OwnerAbandonTime + c.BondingAbandonDelay) <= DateTime.Now )
c.OwnerAbandonTime = DateTime.UtcNow;
else if ( (c.OwnerAbandonTime + c.BondingAbandonDelay) <= DateTime.UtcNow )
toRemove.Add( c );
}
else

View file

@ -47,10 +47,10 @@ namespace Server.Mobiles
{
base.OnThink();
if ( DateTime.Now < m_NextRestore )
if ( DateTime.UtcNow < m_NextRestore )
return;
m_NextRestore = DateTime.Now + TimeSpan.FromSeconds( 2.0 );
m_NextRestore = DateTime.UtcNow + TimeSpan.FromSeconds( 2.0 );
Mobile caster = ControlMaster;

View file

@ -60,10 +60,10 @@ namespace Server.Mobiles
{
base.OnThink();
if ( DateTime.Now < m_NextPickup )
if ( DateTime.UtcNow < m_NextPickup )
return;
m_NextPickup = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 5, 10 ) );
m_NextPickup = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 5, 10 ) );
Container pack = this.Backpack;
@ -90,7 +90,7 @@ namespace Server.Mobiles
bool rejected;
LRReason reject;
NextActionTime = DateTime.Now;
NextActionTime = Core.TickCount;
Lift( item, item.Amount, out rejected, out reject );

View file

@ -47,10 +47,10 @@ namespace Server.Mobiles
{
base.OnThink();
if ( DateTime.Now < m_NextFlare )
if ( DateTime.UtcNow < m_NextFlare )
return;
m_NextFlare = DateTime.Now + TimeSpan.FromSeconds( 5.0 + (25.0 * Utility.RandomDouble()) );
m_NextFlare = DateTime.UtcNow + TimeSpan.FromSeconds( 5.0 + (25.0 * Utility.RandomDouble()) );
this.FixedEffect( 0x37C4, 1, 12, 1109, 6 );
this.PlaySound( 0x1D3 );

View file

@ -74,7 +74,7 @@ namespace Server.Mobiles
Skills[SkillName.MagicResist].Base = 120.0;
Skills[SkillName.DetectHidden].Base = 100.0;
this.NextCombatTime = DateTime.Now + TimeSpan.FromSeconds( 0.5 );
this.NextCombatTime = Core.TickCount + 500;
this.Focus = target;
}
@ -336,7 +336,7 @@ namespace Server.Mobiles
private bool TimeToSpare()
{
return (m_Owner.NextCombatTime - DateTime.Now) > TimeSpan.FromSeconds( 1.0 );
return (m_Owner.NextCombatTime - Core.TickCount) > 1000;
}
private bool OutOfMaxDistance( Mobile target )

View file

@ -90,7 +90,7 @@ namespace Server.Mobiles
Skills[SkillName.MagicResist].Base = 120.0;
Skills[SkillName.DetectHidden].Base = 100.0;
this.NextCombatTime = DateTime.Now + TimeSpan.FromSeconds( 0.5 );
this.NextCombatTime = Core.TickCount + 500;
this.Focus = target;
}

View file

@ -117,11 +117,11 @@ namespace Server.Mobiles
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if ( !m.Frozen && DateTime.Now >= m_NextResurrect && InRange( m, 4 ) && !InRange( oldLocation, 4 ) && InLOS( m ) )
if ( !m.Frozen && DateTime.UtcNow >= m_NextResurrect && InRange( m, 4 ) && !InRange( oldLocation, 4 ) && InLOS( m ) )
{
if ( !m.Alive )
{
m_NextResurrect = DateTime.Now + ResurrectDelay;
m_NextResurrect = DateTime.UtcNow + ResurrectDelay;
if ( m.Map == null || !m.Map.CanFit( m.Location, 16, false, false ) )
{

View file

@ -31,7 +31,7 @@ namespace Server.Mobiles
double scalar = caster.Skills[SkillName.SpiritSpeak].Value * 0.01;
m_Target = target;
m_ExpireTime = DateTime.Now + duration;
m_ExpireTime = DateTime.UtcNow + duration;
SetStr( 200 );
SetDex( 150 );
@ -86,7 +86,7 @@ namespace Server.Mobiles
public override void OnThink()
{
if ( !m_Target.Alive || DateTime.Now > m_ExpireTime )
if ( !m_Target.Alive || DateTime.UtcNow > m_ExpireTime )
{
Kill();
return;
@ -134,7 +134,7 @@ namespace Server.Mobiles
PlaySound( 0x37D );
}
if ( m_Target.Hidden && InRange( m_Target, 3 ) && DateTime.Now >= this.NextSkillTime && UseSkill( SkillName.DetectHidden ) )
if (m_Target.Hidden && InRange(m_Target, 3) && Core.TickCount - this.NextSkillTime >= 0 && UseSkill(SkillName.DetectHidden))
{
Target targ = this.Target;

View file

@ -53,7 +53,7 @@ namespace Server.Mobiles
if ( 0.02 > Utility.RandomDouble() )
PackItem( new BlackthornWelcomeBook() );
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 5, 30 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 5, 30 ) );
}
public override void OnDeath( Container c )
@ -146,10 +146,10 @@ namespace Server.Mobiles
{
Mobile combatant = Combatant;
if ( DateTime.Now < m_NextAbilityTime || combatant == null || combatant.Deleted || combatant.Map != Map || !InRange( combatant, 3 ) || !CanBeHarmful( combatant ) || !InLOS( combatant ) )
if ( DateTime.UtcNow < m_NextAbilityTime || combatant == null || combatant.Deleted || combatant.Map != Map || !InRange( combatant, 3 ) || !CanBeHarmful( combatant ) || !InLOS( combatant ) )
return;
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 5, 30 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 5, 30 ) );
if ( Utility.RandomBool() )
{

View file

@ -129,7 +129,7 @@ namespace Server.Mobiles
Animate( 111, 5, 1, true, false, 0 ); // Do a little dance...
if ( AIObject != null )
AIObject.NextMove = DateTime.Now + TimeSpan.FromSeconds( 1.0 );
AIObject.NextMove = DateTime.UtcNow + TimeSpan.FromSeconds( 1.0 );
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.Now + TimeSpan.FromSeconds( 1.0 );
dancer.AIObject.NextMove = DateTime.UtcNow + TimeSpan.FromSeconds( 1.0 );
}
Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), new TimerCallback( EndSavageDance ) );

View file

@ -72,7 +72,7 @@ namespace Server.Mobiles
Hue = 0x41CE;
m_Target = target;
m_ExpireTime = DateTime.Now + TimeSpan.FromMinutes( 10.0 );
m_ExpireTime = DateTime.UtcNow + TimeSpan.FromMinutes( 10.0 );
SetStr( 401, 500 );
SetDex( 296, 315 );
@ -129,7 +129,7 @@ namespace Server.Mobiles
public override void OnThink()
{
if ( !m_Target.Alive || DateTime.Now > m_ExpireTime )
if ( !m_Target.Alive || DateTime.UtcNow > m_ExpireTime )
{
Delete();
return;

View file

@ -102,16 +102,16 @@ namespace Server.Mobiles
if ( combatant == null || combatant.Deleted || combatant.Map != Map || !InRange( combatant, 12 ) || !CanBeHarmful( combatant ) || !InLOS( combatant ) )
return;
if ( DateTime.Now >= m_NextBomb )
if ( DateTime.UtcNow >= m_NextBomb )
{
ThrowBomb( combatant );
m_Thrown++;
if ( 0.75 >= Utility.RandomDouble() && (m_Thrown % 2) == 1 ) // 75% chance to quickly throw another bomb
m_NextBomb = DateTime.Now + TimeSpan.FromSeconds( 3.0 );
m_NextBomb = DateTime.UtcNow + TimeSpan.FromSeconds( 3.0 );
else
m_NextBomb = DateTime.Now + TimeSpan.FromSeconds( 5.0 + (10.0 * Utility.RandomDouble()) ); // 5-15 seconds
m_NextBomb = DateTime.UtcNow + TimeSpan.FromSeconds( 5.0 + (10.0 * Utility.RandomDouble()) ); // 5-15 seconds
}
}

View file

@ -67,7 +67,7 @@ namespace Server.Mobiles
if ( Core.ML && Utility.RandomDouble() < .33 )
PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
}
public override void GenerateLoot()
@ -104,7 +104,7 @@ namespace Server.Mobiles
public override void OnThink()
{
if ( DateTime.Now >= m_NextAbilityTime )
if ( DateTime.UtcNow >= m_NextAbilityTime )
{
JukaLord toBuff = null;
@ -121,7 +121,7 @@ namespace Server.Mobiles
{
if ( CanBeBeneficial( toBuff ) && toBuff.BeginAction( typeof( JukaMage ) ) )
{
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 30, 60 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 30, 60 ) );
toBuff.Say( true, "Give me the power to destroy my enemies!" );
this.Say( true, "Fight well my lord!" );
@ -164,7 +164,7 @@ namespace Server.Mobiles
}
else
{
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
}
}

View file

@ -78,7 +78,7 @@ namespace Server.Mobiles
AddItem( new Crossbow() );
PackItem( pack );
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
}
public override void GenerateLoot()
@ -117,9 +117,9 @@ namespace Server.Mobiles
this.PlaySound( 0x1E9 );
}
if ( DateTime.Now >= m_NextAbilityTime )
if ( DateTime.UtcNow >= m_NextAbilityTime )
{
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 10, 15 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 10, 15 ) );
ArrayList list = new ArrayList();

View file

@ -44,7 +44,7 @@ namespace Server.Mobiles
VirtualArmor = 34;
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
}
public override void GenerateLoot()
@ -174,13 +174,13 @@ namespace Server.Mobiles
public override void OnThink()
{
if ( DateTime.Now >= m_NextAbilityTime )
if ( DateTime.UtcNow >= m_NextAbilityTime )
{
Mobile combatant = this.Combatant;
if ( combatant != null && combatant.Map == this.Map && combatant.InRange( this, 12 ) )
{
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 10, 15 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 10, 15 ) );
int ability = Utility.Random( 4 );

View file

@ -44,7 +44,7 @@ namespace Server.Mobiles
VirtualArmor = 16;
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
}
public override void GenerateLoot()
@ -80,13 +80,13 @@ namespace Server.Mobiles
public override void OnThink()
{
if ( DateTime.Now >= m_NextAbilityTime )
if ( DateTime.UtcNow >= m_NextAbilityTime )
{
Mobile combatant = this.Combatant;
if ( combatant != null && combatant.Map == this.Map && combatant.InRange( this, 12 ) && IsEnemy( combatant ) && !UnderEffect( combatant ) )
{
m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 20, 30 ) );
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 20, 30 ) );
if( combatant is BaseCreature )
{

View file

@ -75,7 +75,7 @@ namespace Server.Mobiles
public void AreaPeace()
{
if ( Combatant == null || Deleted || !Alive || m_NextPeace > DateTime.Now || 0.1 < Utility.RandomDouble() )
if ( Combatant == null || Deleted || !Alive || m_NextPeace > DateTime.UtcNow || 0.1 < Utility.RandomDouble() )
return;
TimeSpan duration = TimeSpan.FromSeconds( Utility.RandomMinMax( 20, 80 ) );
@ -86,20 +86,20 @@ namespace Server.Mobiles
if ( IsValidTarget( p ) )
{
p.PeacedUntil = DateTime.Now + duration;
p.PeacedUntil = DateTime.UtcNow + duration;
p.SendLocalizedMessage( 1072065 ); // You gaze upon the dryad's beauty, and forget to continue battling!
p.FixedParticles( 0x376A, 1, 20, 0x7F5, EffectLayer.Waist );
p.Combatant = null;
}
}
m_NextPeace = DateTime.Now + TimeSpan.FromSeconds( 10 );
m_NextPeace = DateTime.UtcNow + TimeSpan.FromSeconds( 10 );
PlaySound( 0x1D3 );
}
public bool IsValidTarget( PlayerMobile m )
{
if ( m != null && m.PeacedUntil < DateTime.Now && !m.Hidden && m.AccessLevel == AccessLevel.Player && CanBeHarmful( m ) )
if ( m != null && m.PeacedUntil < DateTime.UtcNow && !m.Hidden && m.AccessLevel == AccessLevel.Player && CanBeHarmful( m ) )
return true;
return false;
@ -111,7 +111,7 @@ namespace Server.Mobiles
public void AreaUndress()
{
if ( Combatant == null || Deleted || !Alive || m_NextUndress > DateTime.Now || 0.005 < Utility.RandomDouble() )
if ( Combatant == null || Deleted || !Alive || m_NextUndress > DateTime.UtcNow || 0.005 < Utility.RandomDouble() )
return;
foreach ( Mobile m in GetMobilesInRange( RangePerception ) )
@ -128,7 +128,7 @@ namespace Server.Mobiles
}
}
m_NextUndress = DateTime.Now + TimeSpan.FromMinutes( 1 );
m_NextUndress = DateTime.UtcNow + TimeSpan.FromMinutes( 1 );
}
public void UndressItem( Mobile m, Layer layer )

View file

@ -66,14 +66,14 @@ namespace Server.Mobiles
public void Peace( Mobile target )
{
if ( target == null || Deleted || !Alive || m_NextPeace > DateTime.Now || 0.1 < Utility.RandomDouble() )
if ( target == null || Deleted || !Alive || m_NextPeace > DateTime.UtcNow || 0.1 < Utility.RandomDouble() )
return;
PlayerMobile p = target as PlayerMobile;
if ( p != null && p.PeacedUntil < DateTime.Now && !p.Hidden && CanBeHarmful( p ) )
if ( p != null && p.PeacedUntil < DateTime.UtcNow && !p.Hidden && CanBeHarmful( p ) )
{
p.PeacedUntil = DateTime.Now + TimeSpan.FromMinutes( 1 );
p.PeacedUntil = DateTime.UtcNow + TimeSpan.FromMinutes( 1 );
p.SendLocalizedMessage( 500616 ); // You hear lovely music, and forget to continue battling!
p.FixedParticles( 0x376A, 1, 32, 0x15BD, EffectLayer.Waist );
p.Combatant = null;
@ -81,7 +81,7 @@ namespace Server.Mobiles
PlaySound( 0x58D );
}
m_NextPeace = DateTime.Now + TimeSpan.FromSeconds( 10 );
m_NextPeace = DateTime.UtcNow + TimeSpan.FromSeconds( 10 );
}
#endregion
@ -91,7 +91,7 @@ namespace Server.Mobiles
public void Suppress( Mobile target )
{
if ( target == null || m_Suppressed.ContainsKey( target ) || Deleted || !Alive || m_NextSuppress > DateTime.Now || 0.1 < Utility.RandomDouble() )
if ( target == null || m_Suppressed.ContainsKey( target ) || Deleted || !Alive || m_NextSuppress > DateTime.UtcNow || 0.1 < Utility.RandomDouble() )
return;
TimeSpan delay = TimeSpan.FromSeconds( Utility.RandomMinMax( 20, 80 ) );
@ -115,7 +115,7 @@ namespace Server.Mobiles
PlaySound( 0x58C );
}
m_NextSuppress = DateTime.Now + TimeSpan.FromSeconds( 10 );
m_NextSuppress = DateTime.UtcNow + TimeSpan.FromSeconds( 10 );
}
public static void SuppressRemove( Mobile target )
@ -159,7 +159,7 @@ namespace Server.Mobiles
public void Undress( Mobile target )
{
if ( target == null || Deleted || !Alive || m_NextUndress > DateTime.Now || 0.005 < Utility.RandomDouble() )
if ( target == null || Deleted || !Alive || m_NextUndress > DateTime.UtcNow || 0.005 < Utility.RandomDouble() )
return;
if ( target.Player && target.Female && !target.Hidden && CanBeHarmful( target ) )
@ -173,7 +173,7 @@ namespace Server.Mobiles
target.SendLocalizedMessage( 1072196 ); // The satyr's music makes your blood race. Your clothing is too confining.
}
m_NextUndress = DateTime.Now + TimeSpan.FromMinutes( 1 );
m_NextUndress = DateTime.UtcNow + TimeSpan.FromMinutes( 1 );
}
public void UndressItem( Mobile m, Layer layer )
@ -190,7 +190,7 @@ namespace Server.Mobiles
public void Provoke( Mobile target )
{
if ( target == null || Deleted || !Alive || m_NextProvoke > DateTime.Now || 0.05 < Utility.RandomDouble() )
if ( target == null || Deleted || !Alive || m_NextProvoke > DateTime.UtcNow || 0.05 < Utility.RandomDouble() )
return;
foreach ( Mobile m in GetMobilesInRange( RangePerception ) )
@ -212,7 +212,7 @@ namespace Server.Mobiles
}
}
m_NextProvoke = DateTime.Now + TimeSpan.FromSeconds( 10 );
m_NextProvoke = DateTime.UtcNow + TimeSpan.FromSeconds( 10 );
}
#endregion

View file

@ -256,7 +256,7 @@ namespace Server.Mobiles
return m_Table[ from ] != null;
}
private DateTime m_NextDrop = DateTime.Now;
private DateTime m_NextDrop = DateTime.UtcNow;
public virtual void DropOoze()
{

View file

@ -95,7 +95,7 @@ namespace Server.Mobiles
if ( value != null )
{
Morph( value );
m_LastMorph = DateTime.Now;
m_LastMorph = DateTime.UtcNow;
}
m_MorphedInto = value;
@ -110,10 +110,10 @@ namespace Server.Mobiles
if ( Combatant != null )
{
if ( m_NextFireRing <= DateTime.Now && Utility.RandomDouble() < 0.02 )
if ( m_NextFireRing <= DateTime.UtcNow && Utility.RandomDouble() < 0.02 )
{
FireRing();
m_NextFireRing = DateTime.Now + TimeSpan.FromMinutes( 2 );
m_NextFireRing = DateTime.UtcNow + TimeSpan.FromMinutes( 2 );
}
if ( Combatant.Player && m_MorphedInto != Combatant && Utility.RandomDouble() < 0.05 )
@ -125,7 +125,7 @@ namespace Server.Mobiles
{
bool idle = base.CheckIdle();
if ( idle && m_MorphedInto != null && DateTime.Now - m_LastMorph > TimeSpan.FromSeconds( 30 ) )
if ( idle && m_MorphedInto != null && DateTime.UtcNow - m_LastMorph > TimeSpan.FromSeconds( 30 ) )
MorphedInto = null;
return idle;

View file

@ -61,9 +61,9 @@ namespace Server.Mobiles
{
if (!from.Alive && (from is PlayerMobile))
{
if (!from.Frozen && (DateTime.Now >= m_NextResurrect) && InRange(from, 4) && !InRange(oldLocation, 4) && InLOS(from))
if (!from.Frozen && (DateTime.UtcNow >= m_NextResurrect) && InRange(from, 4) && !InRange(oldLocation, 4) && InLOS(from))
{
m_NextResurrect = DateTime.Now + ResurrectDelay;
m_NextResurrect = DateTime.UtcNow + ResurrectDelay;
if (!from.Criminal && (from.Kills < 5) && (from.Karma > 0))
{
if (from.Map != null && from.Map.CanFit(from.Location, 16, false, false))

View file

@ -51,7 +51,7 @@ namespace Server.Mobiles
public override void OnThink()
{
if ( m_Owner != null && ( DateTime.Now >= m_ExpireTime || m_Owner.Deleted || Map != m_Owner.Map || !InRange( m_Owner, 16 ) ) )
if ( m_Owner != null && ( DateTime.UtcNow >= m_ExpireTime || m_Owner.Deleted || Map != m_Owner.Map || !InRange( m_Owner, 16 ) ) )
{
PlaySound( GetIdleSound() );
Delete();
@ -65,7 +65,7 @@ namespace Server.Mobiles
public PlagueSpawn( Mobile owner ) : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
m_Owner = owner;
m_ExpireTime = DateTime.Now + TimeSpan.FromMinutes( 1.0 );
m_ExpireTime = DateTime.UtcNow + TimeSpan.FromMinutes( 1.0 );
Name = "a plague spawn";
Hue = Utility.Random( 0x11, 15 );

View file

@ -56,10 +56,10 @@ namespace Server.Mobiles
if ( combatant == null || combatant.Deleted || combatant.Map != Map || !InRange( combatant, 12 ) || !CanBeHarmful( combatant ) || !InLOS( combatant ) )
return;
if ( DateTime.Now >= m_NextAttack )
if ( DateTime.UtcNow >= m_NextAttack )
{
SandAttack( combatant );
m_NextAttack = DateTime.Now + TimeSpan.FromSeconds( 10.0 + (10.0 * Utility.RandomDouble()) );
m_NextAttack = DateTime.UtcNow + TimeSpan.FromSeconds( 10.0 + (10.0 * Utility.RandomDouble()) );
}
}

View file

@ -99,7 +99,7 @@ namespace Server.Mobiles
public int Count
{
get { return m_Count; }
set { m_Count = value; m_Stamp = DateTime.Now; }
set { m_Count = value; m_Stamp = DateTime.UtcNow; }
}
}
@ -261,7 +261,7 @@ namespace Server.Mobiles
}
[CommandProperty( AccessLevel.GameMaster )]
public DateTime LastMoved
public int LastMoved
{
get{ return LastMoveTime; }
}
@ -1132,13 +1132,13 @@ namespace Server.Mobiles
if ( pm != null )
{
pm.m_SessionStart = DateTime.Now;
pm.m_SessionStart = DateTime.UtcNow;
if ( pm.m_Quest != null )
pm.m_Quest.StartTimer();
pm.BedrollLogout = false;
pm.LastOnline = DateTime.Now;
pm.LastOnline = DateTime.UtcNow;
}
DisguiseTimers.StartTimer( e.Mobile );
@ -1186,13 +1186,13 @@ namespace Server.Mobiles
if ( pm != null )
{
pm.m_GameTime += (DateTime.Now - pm.m_SessionStart);
pm.m_GameTime += (DateTime.UtcNow - pm.m_SessionStart);
if ( pm.m_Quest != null )
pm.m_Quest.StopTimer();
pm.m_SpeechLog = null;
pm.LastOnline = DateTime.Now;
pm.LastOnline = DateTime.UtcNow;
}
DisguiseTimers.StopTimer( from );
@ -1447,7 +1447,7 @@ namespace Server.Mobiles
}
}
TimeSpan speed = ComputeMovementSpeed( d );
int speed = ComputeMovementSpeed( d );
bool res;
@ -2778,7 +2778,7 @@ namespace Server.Mobiles
Criminal = true;
}
if ( this.Kills >= 5 && DateTime.Now >= m_NextJustAward )
if ( this.Kills >= 5 && DateTime.UtcNow >= m_NextJustAward )
{
Mobile m = FindMostRecentDamager( false );
@ -2805,7 +2805,7 @@ namespace Server.Mobiles
m.FixedParticles( 0x375A, 9, 20, 5027, EffectLayer.Waist );
m.PlaySound( 0x1F7 );
m_NextJustAward = DateTime.Now + TimeSpan.FromMinutes( pointsToGain / 3 );
m_NextJustAward = DateTime.UtcNow + TimeSpan.FromMinutes( pointsToGain / 3 );
}
}
}
@ -2891,7 +2891,7 @@ namespace Server.Mobiles
{
get
{
TimeSpan ts = m_SavagePaintExpiration - DateTime.Now;
TimeSpan ts = m_SavagePaintExpiration - DateTime.UtcNow;
if ( ts < TimeSpan.Zero )
ts = TimeSpan.Zero;
@ -2900,7 +2900,7 @@ namespace Server.Mobiles
}
set
{
m_SavagePaintExpiration = DateTime.Now + value;
m_SavagePaintExpiration = DateTime.UtcNow + value;
}
}
@ -2909,7 +2909,7 @@ namespace Server.Mobiles
{
get
{
TimeSpan ts = m_NextSmithBulkOrder - DateTime.Now;
TimeSpan ts = m_NextSmithBulkOrder - DateTime.UtcNow;
if ( ts < TimeSpan.Zero )
ts = TimeSpan.Zero;
@ -2918,7 +2918,7 @@ namespace Server.Mobiles
}
set
{
try{ m_NextSmithBulkOrder = DateTime.Now + value; }
try{ m_NextSmithBulkOrder = DateTime.UtcNow + value; }
catch{}
}
}
@ -2928,7 +2928,7 @@ namespace Server.Mobiles
{
get
{
TimeSpan ts = m_NextTailorBulkOrder - DateTime.Now;
TimeSpan ts = m_NextTailorBulkOrder - DateTime.UtcNow;
if ( ts < TimeSpan.Zero )
ts = TimeSpan.Zero;
@ -2937,7 +2937,7 @@ namespace Server.Mobiles
}
set
{
try{ m_NextTailorBulkOrder = DateTime.Now + value; }
try{ m_NextTailorBulkOrder = DateTime.UtcNow + value; }
catch{}
}
}
@ -3198,7 +3198,7 @@ namespace Server.Mobiles
CountAndTimeStamp count = (CountAndTimeStamp)tbl[obj];
if ( count != null )
{
if ( count.TimeStamp + SkillCheck.AntiMacroExpire <= DateTime.Now )
if ( count.TimeStamp + SkillCheck.AntiMacroExpire <= DateTime.UtcNow )
{
count.Count = 1;
return true;
@ -3517,7 +3517,7 @@ namespace Server.Mobiles
ArrayList remove = new ArrayList();
foreach ( CountAndTimeStamp time in t.Values )
{
if ( time.TimeStamp + SkillCheck.AntiMacroExpire <= DateTime.Now )
if ( time.TimeStamp + SkillCheck.AntiMacroExpire <= DateTime.UtcNow )
remove.Add( time );
}
@ -3682,7 +3682,7 @@ namespace Server.Mobiles
get
{
if ( NetState != null )
return m_GameTime + (DateTime.Now - m_SessionStart);
return m_GameTime + (DateTime.UtcNow - m_SessionStart);
else
return m_GameTime;
}
@ -4071,13 +4071,14 @@ namespace Server.Mobiles
#region Fastwalk Prevention
private static bool FastwalkPrevention = true; // Is fastwalk prevention enabled?
private static TimeSpan FastwalkThreshold = TimeSpan.FromSeconds( 0.4 ); // Fastwalk prevention will become active after 0.4 seconds
private static int FastwalkThreshold = 400; // Fastwalk prevention will become active after 0.4 seconds
private DateTime m_NextMovementTime;
private int m_NextMovementTime;
private bool m_HasMoved;
public virtual bool UsesFastwalkPrevention{ get{ return ( AccessLevel < AccessLevel.Counselor ); } }
public override TimeSpan ComputeMovementSpeed( Direction dir, bool checkTurning )
public override int ComputeMovementSpeed( Direction dir, bool checkTurning )
{
if ( checkTurning && (dir & Direction.Mask) != (this.Direction & Direction.Mask) )
return Mobile.RunMount; // We are NOT actually moving (just a direction change)
@ -4106,19 +4107,20 @@ namespace Server.Mobiles
if ( pm == null || !pm.UsesFastwalkPrevention )
return true;
if ( pm.m_NextMovementTime == DateTime.MinValue )
if ( !pm.m_HasMoved )
{
// has not yet moved
pm.m_NextMovementTime = DateTime.Now;
pm.m_NextMovementTime = Core.TickCount;
pm.m_HasMoved = true;
return true;
}
TimeSpan ts = pm.m_NextMovementTime - DateTime.Now;
int ts = pm.m_NextMovementTime - Core.TickCount;
if ( ts < TimeSpan.Zero )
if ( ts < 0 )
{
// been a while since we've last moved
pm.m_NextMovementTime = DateTime.Now;
pm.m_NextMovementTime = Core.TickCount;
return true;
}
@ -4352,9 +4354,9 @@ namespace Server.Mobiles
if ( this.Quest != null && this.Quest.IgnoreYoungProtection( from ) )
return false;
if ( DateTime.Now - m_LastYoungMessage > TimeSpan.FromMinutes( 1.0 ) )
if ( DateTime.UtcNow - m_LastYoungMessage > TimeSpan.FromMinutes( 1.0 ) )
{
m_LastYoungMessage = DateTime.Now;
m_LastYoungMessage = DateTime.UtcNow;
SendLocalizedMessage( 1019067 ); // A monster looks at you menacingly but does not attack. You would be under attack now if not for your status as a new citizen of Britannia.
}
@ -4365,9 +4367,9 @@ namespace Server.Mobiles
public bool CheckYoungHealTime()
{
if ( DateTime.Now - m_LastYoungHeal > TimeSpan.FromMinutes( 5.0 ) )
if ( DateTime.UtcNow - m_LastYoungHeal > TimeSpan.FromMinutes( 5.0 ) )
{
m_LastYoungHeal = DateTime.Now;
m_LastYoungHeal = DateTime.UtcNow;
return true;
}
@ -4661,7 +4663,7 @@ namespace Server.Mobiles
m_Values[index].Value -= value;
if( before != m_Values[index].Value )
m_Values[index].LastDecay = DateTime.Now;
m_Values[index].LastDecay = DateTime.UtcNow;
}
public override string ToString()
@ -4762,7 +4764,7 @@ namespace Server.Mobiles
for( int i = 0; i < t.m_Values.Length; i++ )
{
if( (t.GetLastDecay( i ) + LossDelay) < DateTime.Now )
if( (t.GetLastDecay( i ) + LossDelay) < DateTime.UtcNow )
{
t.Atrophy( i, LossAmount );
}

View file

@ -262,19 +262,19 @@ namespace Server.Mobiles
Say("I see you already have an escort.");
return false;
}
else if (m is PlayerMobile && (((PlayerMobile)m).LastEscortTime + EscortDelay) >= DateTime.Now)
else if (m is PlayerMobile && (((PlayerMobile)m).LastEscortTime + EscortDelay) >= DateTime.UtcNow)
{
int minutes = (int)Math.Ceiling(((((PlayerMobile)m).LastEscortTime + EscortDelay) - DateTime.Now).TotalMinutes);
int minutes = (int)Math.Ceiling(((((PlayerMobile)m).LastEscortTime + EscortDelay) - DateTime.UtcNow).TotalMinutes);
Say("You must rest {0} minute{1} before we set out on this journey.", minutes, minutes == 1 ? "" : "s");
return false;
}
else if (SetControlMaster(m))
{
m_LastSeenEscorter = DateTime.Now;
m_LastSeenEscorter = DateTime.UtcNow;
if (m is PlayerMobile)
((PlayerMobile)m).LastEscortTime = DateTime.Now;
((PlayerMobile)m).LastEscortTime = DateTime.UtcNow;
Say("Lead on! Payment will be made when we arrive in {0}.", (dest.Name == "Ocllo" && m.Map == Map.Trammel) ? "Haven" : dest.Name);
m_EscortTable[m] = this;
@ -389,7 +389,7 @@ namespace Server.Mobiles
{
StopFollow();
TimeSpan lastSeenDelay = DateTime.Now - m_LastSeenEscorter;
TimeSpan lastSeenDelay = DateTime.UtcNow - m_LastSeenEscorter;
if (lastSeenDelay >= AbandonDelay)
{
@ -412,7 +412,7 @@ namespace Server.Mobiles
if (ControlOrder != OrderType.Follow)
StartFollow(master);
m_LastSeenEscorter = DateTime.Now;
m_LastSeenEscorter = DateTime.UtcNow;
return master;
}
@ -421,9 +421,9 @@ namespace Server.Mobiles
if (m_DeleteTimer != null)
m_DeleteTimer.Stop();
m_DeleteTime = DateTime.Now + DeleteTime;
m_DeleteTime = DateTime.UtcNow + DeleteTime;
m_DeleteTimer = new DeleteTimer(this, m_DeleteTime - DateTime.Now);
m_DeleteTimer = new DeleteTimer(this, m_DeleteTime - DateTime.UtcNow);
m_DeleteTimer.Start();
}
@ -473,7 +473,7 @@ namespace Server.Mobiles
if (pm != null)
{
if (pm.CompassionGains > 0 && DateTime.Now > pm.NextCompassionDay)
if (pm.CompassionGains > 0 && DateTime.UtcNow > pm.NextCompassionDay)
{
pm.NextCompassionDay = DateTime.MinValue;
pm.CompassionGains = 0;
@ -490,7 +490,7 @@ namespace Server.Mobiles
else
pm.SendLocalizedMessage(1053002); // You have gained in compassion.
pm.NextCompassionDay = DateTime.Now + TimeSpan.FromDays(1.0); // in one day CompassionGains gets reset to 0
pm.NextCompassionDay = DateTime.UtcNow + TimeSpan.FromDays(1.0); // in one day CompassionGains gets reset to 0
++pm.CompassionGains;
if (pm.CompassionGains >= 5)
@ -553,7 +553,7 @@ namespace Server.Mobiles
if (reader.ReadBool())
{
m_DeleteTime = reader.ReadDeltaTime();
m_DeleteTimer = new DeleteTimer(this, m_DeleteTime - DateTime.Now);
m_DeleteTimer = new DeleteTimer(this, m_DeleteTime - DateTime.UtcNow);
m_DeleteTimer.Start();
}

View file

@ -117,7 +117,7 @@ namespace Server.Mobiles
public string[] Lines{ get{ return m_Lines; } }
public DateTime ExpireTime{ get{ return m_ExpireTime; } }
public bool Expired{ get{ return ( DateTime.Now >= m_ExpireTime ); } }
public bool Expired{ get{ return ( DateTime.UtcNow >= m_ExpireTime ); } }
public TownCrierEntry( string[] lines, TimeSpan duration )
{
@ -128,7 +128,7 @@ namespace Server.Mobiles
else if ( duration > TimeSpan.FromDays( 365.0 ) )
duration = TimeSpan.FromDays( 365.0 );
m_ExpireTime = DateTime.Now + duration;
m_ExpireTime = DateTime.UtcNow + duration;
}
}
@ -233,7 +233,7 @@ namespace Server.Mobiles
if ( entries != null && index < entries.Count )
{
TownCrierEntry tce = entries[index];
TimeSpan ts = tce.ExpireTime - DateTime.Now;
TimeSpan ts = tce.ExpireTime - DateTime.UtcNow;
if ( ts < TimeSpan.Zero )
ts = TimeSpan.Zero;
@ -280,7 +280,7 @@ namespace Server.Mobiles
{
TownCrierEntry tce = (TownCrierEntry)entries[i];
TimeSpan toExpire = tce.ExpireTime - DateTime.Now;
TimeSpan toExpire = tce.ExpireTime - DateTime.UtcNow;
if ( toExpire < TimeSpan.Zero )
toExpire = TimeSpan.Zero;

View file

@ -176,7 +176,7 @@ namespace Server.Mobiles
pack.Visible = false;
AddItem( pack );
m_LastRestock = DateTime.Now;
m_LastRestock = DateTime.UtcNow;
}
public BaseVendor( Serial serial )
@ -228,7 +228,7 @@ namespace Server.Mobiles
protected void LoadSBInfo()
{
m_LastRestock = DateTime.Now;
m_LastRestock = DateTime.UtcNow;
for ( int i = 0; i < m_ArmorBuyInfo.Count; ++i )
{
@ -510,7 +510,7 @@ namespace Server.Mobiles
public virtual void Restock()
{
m_LastRestock = DateTime.Now;
m_LastRestock = DateTime.UtcNow;
IBuyItemInfo[] buyInfo = this.GetBuyInfo();
@ -534,7 +534,7 @@ namespace Server.Mobiles
return;
}
if ( DateTime.Now - m_LastRestock > RestockDelay )
if ( DateTime.UtcNow - m_LastRestock > RestockDelay )
Restock();
UpdateBuyInfo();
@ -583,7 +583,7 @@ namespace Server.Mobiles
Item item = playerItems[i];
if ( ( item.LastMoved + InventoryDecayTime ) <= DateTime.Now )
if ( ( item.LastMoved + InventoryDecayTime ) <= DateTime.UtcNow )
item.Delete();
}
@ -747,7 +747,7 @@ namespace Server.Mobiles
{
PlayerMobile pm = from as PlayerMobile;
if ( Core.ML && pm != null && pm.NextBODTurnInTime > DateTime.Now )
if ( Core.ML && pm != null && pm.NextBODTurnInTime > DateTime.UtcNow )
{
SayTo( from, 1079976 ); // You'll have to wait a few seconds while I inspect the last order.
return false;
@ -788,7 +788,7 @@ namespace Server.Mobiles
OnSuccessfulBulkOrderReceive( from );
if ( Core.ML && pm != null )
pm.NextBODTurnInTime = DateTime.Now + TimeSpan.FromSeconds( 10.0 );
pm.NextBODTurnInTime = DateTime.UtcNow + TimeSpan.FromSeconds( 10.0 );
dropped.Delete();
return true;

View file

@ -75,7 +75,7 @@ namespace Server.Mobiles
SayTo( from, 501047 ); // Thou art already a member of our guild.
else if ( pm.NpcGuild != NpcGuild.None )
SayTo( from, 501046 ); // Thou must resign from thy other guild first.
else if ( pm.GameTime < JoinGameAge || (pm.CreationTime + JoinAge) > DateTime.Now )
else if ( pm.GameTime < JoinGameAge || (pm.CreationTime + JoinAge) > DateTime.UtcNow )
SayTo( from, 501048 ); // You are too young to join my guild...
else if ( CheckCustomReqs( pm ) )
SayPriceTo( from );
@ -88,7 +88,7 @@ namespace Server.Mobiles
{
SayTo( from, 501052 ); // Thou dost not belong to my guild!
}
else if ( (pm.NpcGuildJoinTime + QuitAge) > DateTime.Now || (pm.NpcGuildGameTime + QuitGameAge) > pm.GameTime )
else if ( (pm.NpcGuildJoinTime + QuitAge) > DateTime.UtcNow || (pm.NpcGuildGameTime + QuitGameAge) > pm.GameTime )
{
SayTo( from, 501053 ); // You just joined my guild! You must wait a week to resign.
}
@ -119,7 +119,7 @@ namespace Server.Mobiles
{
SayTo( from, 501046 ); // Thou must resign from thy other guild first.
}
else if ( pm.GameTime < JoinGameAge || (pm.CreationTime + JoinAge) > DateTime.Now )
else if ( pm.GameTime < JoinGameAge || (pm.CreationTime + JoinAge) > DateTime.UtcNow )
{
SayTo( from, 501048 ); // You are too young to join my guild...
}
@ -128,7 +128,7 @@ namespace Server.Mobiles
SayWelcomeTo( from );
pm.NpcGuild = this.NpcGuild;
pm.NpcGuildJoinTime = DateTime.Now;
pm.NpcGuildJoinTime = DateTime.UtcNow;
pm.NpcGuildGameTime = pm.GameTime;
dropped.Delete();

View file

@ -31,13 +31,13 @@ namespace Server.Mobiles
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if ( DateTime.Now > m_NextCheckPack && InRange( m, 4 ) && !InRange( oldLocation, 4 ) && m.Player )
if ( DateTime.UtcNow > m_NextCheckPack && InRange( m, 4 ) && !InRange( oldLocation, 4 ) && m.Player )
{
Container pack = m.Backpack;
if ( pack != null )
{
m_NextCheckPack = DateTime.Now + TimeSpan.FromSeconds( 2.0 );
m_NextCheckPack = DateTime.UtcNow + TimeSpan.FromSeconds( 2.0 );
Item deed = pack.FindItemByType( typeof( HouseDeed ), false );

View file

@ -47,14 +47,14 @@ namespace Server.Mobiles
{
base.OnSpeech( e );
if ( !e.Handled && m_NextShush <= DateTime.Now && InLOS( e.Mobile ) )
if ( !e.Handled && m_NextShush <= DateTime.UtcNow && InLOS( e.Mobile ) )
{
Direction = GetDirectionTo( e.Mobile );
PlaySound( Female ? 0x32F : 0x441 );
PublicOverheadMessage( Network.MessageType.Regular, 0x3B2, 1073990 ); // Shhhh!
m_NextShush = DateTime.Now + ShushDelay;
m_NextShush = DateTime.UtcNow + ShushDelay;
e.Handled = true;
}
}

View file

@ -325,7 +325,7 @@ namespace Server.Mobiles
m_PayTimer = new PayTimer( this, delay );
m_PayTimer.Start();
m_NextPayTime = DateTime.Now + delay;
m_NextPayTime = DateTime.UtcNow + delay;
}
public PlayerVendor( Serial serial ) : base( serial )
@ -397,7 +397,7 @@ namespace Server.Mobiles
string description = reader.ReadString();
DateTime created = version < 1 ? DateTime.Now : reader.ReadDateTime();
DateTime created = version < 1 ? DateTime.UtcNow : reader.ReadDateTime();
if ( item != null )
{
@ -423,7 +423,7 @@ namespace Server.Mobiles
Timer.DelayCall( TimeSpan.Zero, new TimerCallback( FixDresswear ) );
}
m_NextPayTime = DateTime.Now + PayTimer.GetInterval();
m_NextPayTime = DateTime.UtcNow + PayTimer.GetInterval();
if ( newVendorSystemActivated )
{
@ -435,7 +435,7 @@ namespace Server.Mobiles
if ( version < 2 && RawStr == 75 && RawDex == 75 && RawInt == 75 )
InitStats( 100, 100, 25 );
TimeSpan delay = m_NextPayTime - DateTime.Now;
TimeSpan delay = m_NextPayTime - DateTime.UtcNow;
m_PayTimer = new PayTimer( this, delay > TimeSpan.Zero ? delay : TimeSpan.Zero );
m_PayTimer.Start();
@ -784,7 +784,7 @@ namespace Server.Mobiles
private VendorItem SetVendorItem( Item item, int price, string description )
{
return SetVendorItem( item, price, description, DateTime.Now );
return SetVendorItem( item, price, description, DateTime.UtcNow );
}
private VendorItem SetVendorItem( Item item, int price, string description, DateTime created )
@ -1109,7 +1109,7 @@ namespace Server.Mobiles
{
vendor.SayTo( from, 503202 ); // This item is not for sale.
}
else if ( vi.Created + TimeSpan.FromMinutes( 1.0 ) > DateTime.Now )
else if ( vi.Created + TimeSpan.FromMinutes( 1.0 ) > DateTime.UtcNow )
{
from.SendMessage( "You cannot buy this item right now. Please wait one minute and try again." );
}
@ -1388,7 +1388,7 @@ namespace Server.Mobiles
protected override void OnTick()
{
m_Vendor.m_NextPayTime = DateTime.Now + this.Interval;
m_Vendor.m_NextPayTime = DateTime.UtcNow + this.Interval;
int pay;
int totalGold;

View file

@ -69,7 +69,7 @@ namespace Server.Mobiles
m_RentalGold = rentalGold;
m_RentalExpireTime = DateTime.Now + duration.Duration;
m_RentalExpireTime = DateTime.UtcNow + duration.Duration;
m_RentalExpireTimer = new RentalExpireTimer( this, duration.Duration );
m_RentalExpireTimer.Start();
}
@ -154,7 +154,7 @@ namespace Server.Mobiles
public void ComputeRentalExpireDelay( out int days, out int hours )
{
TimeSpan delay = RentalExpireTime - DateTime.Now;
TimeSpan delay = RentalExpireTime - DateTime.UtcNow;
if ( delay <= TimeSpan.Zero )
{
@ -388,7 +388,7 @@ namespace Server.Mobiles
m_RentalExpireTime = reader.ReadDeltaTime();
TimeSpan delay = m_RentalExpireTime - DateTime.Now;
TimeSpan delay = m_RentalExpireTime - DateTime.UtcNow;
m_RentalExpireTimer = new RentalExpireTimer( this, delay > TimeSpan.Zero ? delay : TimeSpan.Zero );
m_RentalExpireTimer.Start();
}
@ -415,7 +415,7 @@ namespace Server.Mobiles
m_Vendor.RentalPrice = renewalPrice;
m_Vendor.m_RentalExpireTime = DateTime.Now + m_Vendor.RentalDuration.Duration;
m_Vendor.m_RentalExpireTime = DateTime.UtcNow + m_Vendor.RentalDuration.Duration;
}
else
{

View file

@ -29,7 +29,7 @@ namespace Server.Mobiles
m_Items = new List<Item>();
m_ExpireTime = DateTime.Now + GracePeriod;
m_ExpireTime = DateTime.UtcNow + GracePeriod;
m_ExpireTimer = new ExpireTimer( this, GracePeriod );
m_ExpireTimer.Start();
}
@ -131,7 +131,7 @@ namespace Server.Mobiles
}
else
{
TimeSpan delay = m_ExpireTime - DateTime.Now;
TimeSpan delay = m_ExpireTime - DateTime.UtcNow;
m_ExpireTimer = new ExpireTimer( this, delay > TimeSpan.Zero ? delay : TimeSpan.Zero );
m_ExpireTimer.Start();
}