Implement Core.TickCount
Convert movement, actions (lift/use), combat, and spells to use Core.TickCount and avoid DateTime caveats (performance, system time dependency, etc) Refactor DateTime.Now to DateTime.UtcNow Add LOS check for Iron Maiden addon
This commit is contained in:
parent
f99eefb288
commit
d2c670f5c3
241 changed files with 842 additions and 831 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue