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

@ -237,7 +237,7 @@ namespace Server.Engines.MLQuests
return false;
}
else if ( nextAvailable > DateTime.Now )
else if ( nextAvailable > DateTime.UtcNow )
{
if ( message )
MLQuestSystem.Tell( quester, pm, 1075575 ); // I'm sorry, but I don't have anything else for you right now. Could you check back with me in a few minutes?

View file

@ -41,7 +41,7 @@ namespace Server.Engines.MLQuests
m_QuesterType = ( quester == null ) ? null : quester.GetType();
m_Player = player;
m_Accepted = DateTime.Now;
m_Accepted = DateTime.UtcNow;
m_Flags = MLQuestInstanceFlags.None;
m_ObjectiveInstances = new BaseObjectiveInstance[quest.Objectives.Count];
@ -217,7 +217,7 @@ namespace Server.Engines.MLQuests
{
if ( !obj.Expired )
{
if ( obj.IsTimed && obj.EndTime <= DateTime.Now )
if ( obj.IsTimed && obj.EndTime <= DateTime.UtcNow )
{
m_Player.SendLocalizedMessage( 1072258 ); // You failed to complete an objective in time!
@ -337,7 +337,7 @@ namespace Server.Engines.MLQuests
ClaimReward = true;
if ( m_Quest.HasRestartDelay )
PlayerContext.SetDoneQuest( m_Quest, DateTime.Now + m_Quest.GetRestartDelay() );
PlayerContext.SetDoneQuest( m_Quest, DateTime.UtcNow + m_Quest.GetRestartDelay() );
// This is correct for ObjectiveType.Any as well
foreach ( BaseObjectiveInstance objective in m_ObjectiveInstances )

View file

@ -89,7 +89,7 @@ namespace Server.Engines.MLQuests.Mobiles
{
base.OnThink();
if ( m_NextShout <= DateTime.Now )
if ( m_NextShout <= DateTime.UtcNow )
{
Packet shoutPacket = null;
@ -108,7 +108,7 @@ namespace Server.Engines.MLQuests.Mobiles
Packet.Release( shoutPacket );
m_NextShout = DateTime.Now + m_ShoutDelay;
m_NextShout = DateTime.UtcNow + m_ShoutDelay;
}
}

View file

@ -62,13 +62,13 @@ namespace Server.Engines.MLQuests.Objectives
m_Instance = instance;
if ( obj.IsTimed )
m_EndTime = DateTime.Now + obj.Duration;
m_EndTime = DateTime.UtcNow + obj.Duration;
}
public virtual void WriteToGump( Gump g, ref int y )
{
if ( IsTimed )
WriteTimeRemaining( g, ref y, ( m_EndTime > DateTime.Now ) ? ( m_EndTime - DateTime.Now ) : TimeSpan.Zero );
WriteTimeRemaining( g, ref y, ( m_EndTime > DateTime.UtcNow ) ? ( m_EndTime - DateTime.UtcNow ) : TimeSpan.Zero );
}
public static void WriteTimeRemaining( Gump g, ref int y, TimeSpan timeRemaining )

View file

@ -52,11 +52,11 @@ namespace Server.Engines.MLQuests.Objectives
DateTime nextEscort = pm.LastEscortTime + BaseEscortable.EscortDelay;
if ( nextEscort > DateTime.Now )
if ( nextEscort > DateTime.UtcNow )
{
if ( message )
{
int minutes = (int)Math.Ceiling( ( nextEscort - DateTime.Now ).TotalMinutes );
int minutes = (int)Math.Ceiling( ( nextEscort - DateTime.UtcNow ).TotalMinutes );
if ( minutes == 1 )
MLQuestSystem.Tell( quester, pm, "You must rest 1 minute before we set out on this journey." );
@ -111,7 +111,7 @@ namespace Server.Engines.MLQuests.Objectives
m_Objective = objective;
m_HasCompleted = false;
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 5 ), TimeSpan.FromSeconds( 5 ), new TimerCallback( CheckDestination ) );
m_LastSeenEscorter = DateTime.Now;
m_LastSeenEscorter = DateTime.UtcNow;
m_Escort = instance.Quester as BaseCreature;
if ( MLQuestSystem.Debug && m_Escort == null && instance.Quester != null )
@ -158,12 +158,12 @@ namespace Server.Engines.MLQuests.Objectives
}
else if ( pm.Map != m_Escort.Map || !pm.InRange( m_Escort, 30 ) ) // TODO: verify range
{
if ( m_LastSeenEscorter + BaseEscortable.AbandonDelay <= DateTime.Now )
if ( m_LastSeenEscorter + BaseEscortable.AbandonDelay <= DateTime.UtcNow )
Abandon();
}
else
{
m_LastSeenEscorter = DateTime.Now;
m_LastSeenEscorter = DateTime.UtcNow;
}
}
@ -212,7 +212,7 @@ namespace Server.Engines.MLQuests.Objectives
MLQuestInstance instance = Instance;
PlayerMobile pm = instance.Player;
pm.LastEscortTime = DateTime.Now;
pm.LastEscortTime = DateTime.UtcNow;
if ( m_Escort != null )
BeginFollow( m_Escort, pm );

View file

@ -155,7 +155,7 @@ namespace Server.Engines.MLQuests.Objectives
PlayerMobile pm = Instance.Player;
pm.AcceleratedSkill = m_Objective.Skill;
pm.AcceleratedStart = DateTime.Now + TimeSpan.FromMinutes( 15 ); // TODO: Is there a max duration?
pm.AcceleratedStart = DateTime.UtcNow + TimeSpan.FromMinutes( 15 ); // TODO: Is there a max duration?
}
public override void OnQuestCancelled()
@ -165,7 +165,7 @@ namespace Server.Engines.MLQuests.Objectives
PlayerMobile pm = Instance.Player;
pm.AcceleratedStart = DateTime.Now;
pm.AcceleratedStart = DateTime.UtcNow;
pm.PlaySound( 0x100 );
}