fix(core): Caches DateTime.NowUtc (#548)
- [X] Caches DateTime.NowUtc on the game loop (not other threads) - [X] Replaces all locations where it makes sense - [X] Adds Min/Max for `IComparable` (TimeSpan, DateTimes, etc) Closes #261
This commit is contained in:
parent
5de6edbeb8
commit
6c4308bce6
208 changed files with 660 additions and 793 deletions
|
|
@ -96,7 +96,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
if (DateTime.UtcNow < LastUse + UseDelay)
|
||||
if (Core.Now < LastUse + UseDelay)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -172,7 +172,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
LastUse = DateTime.UtcNow;
|
||||
LastUse = Core.Now;
|
||||
|
||||
from.Direction = from.GetDirectionTo(GetWorldLocation());
|
||||
bow.PlaySwingAnimation(from);
|
||||
|
|
|
|||
|
|
@ -90,14 +90,14 @@ namespace Server.Items
|
|||
|
||||
if (m.Player && Utility.InRange(Location, m.Location, 3) && !Utility.InRange(Location, oldLocation, 3))
|
||||
{
|
||||
if (DateTime.UtcNow >= m_NextMessage)
|
||||
if (Core.Now >= m_NextMessage)
|
||||
{
|
||||
if (Components.Count > 0)
|
||||
{
|
||||
Components[0].SendLocalizedMessageTo(m, 1010061); // An overwhelming sense of peace fills you.
|
||||
}
|
||||
|
||||
m_NextMessage = DateTime.UtcNow + TimeSpan.FromSeconds(25.0);
|
||||
m_NextMessage = Core.Now + TimeSpan.FromSeconds(25.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -192,11 +192,11 @@ namespace Server.Items
|
|||
{
|
||||
World.Broadcast(0x35, true, "Solen hives teleporters are being generated, please wait.");
|
||||
|
||||
var startTime = DateTime.UtcNow;
|
||||
var startTime = Core.Now;
|
||||
|
||||
var count = new SHTeleporterCreator().CreateSHTeleporters();
|
||||
|
||||
var endTime = DateTime.UtcNow;
|
||||
var endTime = Core.Now;
|
||||
|
||||
World.Broadcast(
|
||||
0x35,
|
||||
|
|
|
|||
|
|
@ -535,7 +535,7 @@ namespace Server.Items
|
|||
}
|
||||
else
|
||||
{
|
||||
writer.Write(DateTime.UtcNow + EvaluationInterval);
|
||||
writer.Write(Core.Now + EvaluationInterval);
|
||||
}
|
||||
|
||||
// version 0
|
||||
|
|
@ -569,12 +569,12 @@ namespace Server.Items
|
|||
{
|
||||
var next = reader.ReadDateTime();
|
||||
|
||||
if (next < DateTime.UtcNow)
|
||||
if (next < Core.Now)
|
||||
{
|
||||
next = DateTime.UtcNow;
|
||||
next = Core.Now;
|
||||
}
|
||||
|
||||
m_Timer = Timer.DelayCall(next - DateTime.UtcNow, EvaluationInterval, Evaluate);
|
||||
m_Timer = Timer.DelayCall(next - Core.Now, EvaluationInterval, Evaluate);
|
||||
|
||||
goto case 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static bool CheckCreateTime(DateTime time) => time + ThreadCreateTime < DateTime.UtcNow;
|
||||
public static bool CheckCreateTime(DateTime time) => time + ThreadCreateTime < Core.Now;
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
|
||||
public static bool CheckDeletionTime(DateTime time) => time + ThreadDeletionTime < DateTime.UtcNow;
|
||||
public static bool CheckDeletionTime(DateTime time) => time + ThreadDeletionTime < Core.Now;
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static bool CheckReplyTime(DateTime time) => time + ThreadReplyTime < DateTime.UtcNow;
|
||||
public static bool CheckReplyTime(DateTime time) => time + ThreadReplyTime < Core.Now;
|
||||
}
|
||||
|
||||
[Flippable(0x1E5E, 0x1E5F)]
|
||||
|
|
@ -180,7 +180,7 @@ namespace Server.Items
|
|||
{
|
||||
if (thread != null)
|
||||
{
|
||||
thread.LastPostTime = DateTime.UtcNow;
|
||||
thread.LastPostTime = Core.Now;
|
||||
}
|
||||
|
||||
AddItem(new BulletinMessage(from, thread, subject, lines));
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ namespace Server.Items
|
|||
|
||||
Poster = poster;
|
||||
Subject = subject;
|
||||
Time = DateTime.UtcNow;
|
||||
Time = Core.Now;
|
||||
LastPostTime = Time;
|
||||
Thread = thread;
|
||||
PostedName = Poster.Name;
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ namespace Server.Items
|
|||
{
|
||||
m_DecayTimer?.Stop();
|
||||
|
||||
m_DecayTime = DateTime.UtcNow + delay;
|
||||
m_DecayTime = Core.Now + delay;
|
||||
|
||||
m_DecayTimer = new InternalTimer(this, delay);
|
||||
m_DecayTimer.Start();
|
||||
|
|
@ -171,7 +171,7 @@ namespace Server.Items
|
|||
if (reader.ReadBool())
|
||||
{
|
||||
m_DecayTime = reader.ReadDeltaTime();
|
||||
BeginDecay(m_DecayTime - DateTime.UtcNow);
|
||||
BeginDecay(m_DecayTime - Core.Now);
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ namespace Server.Items
|
|||
var mins = Utility.RandomMinMax(MinRespawnMinutes, MaxRespawnMinutes);
|
||||
var delay = TimeSpan.FromMinutes(mins);
|
||||
|
||||
m_NextRespawnTime = DateTime.UtcNow + delay;
|
||||
m_NextRespawnTime = Core.Now + delay;
|
||||
m_RespawnTimer = Timer.DelayCall(delay, Respawn);
|
||||
}
|
||||
}
|
||||
|
|
@ -279,7 +279,7 @@ namespace Server.Items
|
|||
{
|
||||
m_NextRespawnTime = reader.ReadDeltaTime();
|
||||
|
||||
var delay = m_NextRespawnTime - DateTime.UtcNow;
|
||||
var delay = m_NextRespawnTime - Core.Now;
|
||||
m_RespawnTimer = Timer.DelayCall(delay > TimeSpan.Zero ? delay : TimeSpan.Zero, Respawn);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ namespace Server.Items
|
|||
|
||||
if (!Locked && m_AutoLock)
|
||||
{
|
||||
m_RelockTimer = new InternalTimer(this, reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
m_RelockTimer = new InternalTimer(this, reader.ReadDeltaTime() - Core.Now);
|
||||
}
|
||||
|
||||
TargetMap = reader.ReadMap();
|
||||
|
|
@ -229,7 +229,7 @@ namespace Server.Items
|
|||
public InternalTimer(MarkContainer container, TimeSpan delay) : base(delay)
|
||||
{
|
||||
Container = container;
|
||||
RelockTime = DateTime.UtcNow + delay;
|
||||
RelockTime = Core.Now + delay;
|
||||
|
||||
Start();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace Server.Items
|
|||
{
|
||||
Owner = owner;
|
||||
Level = level;
|
||||
DeleteTime = DateTime.UtcNow + TimeSpan.FromHours(3.0);
|
||||
DeleteTime = Core.Now + TimeSpan.FromHours(3.0);
|
||||
|
||||
Temporary = temporary;
|
||||
Guardians = new List<Mobile>();
|
||||
|
|
@ -585,7 +585,7 @@ namespace Server.Items
|
|||
{
|
||||
private readonly Item m_Item;
|
||||
|
||||
public DeleteTimer(Item item, DateTime time) : base(time - DateTime.UtcNow)
|
||||
public DeleteTimer(Item item, DateTime time) : base(time - Core.Now)
|
||||
{
|
||||
m_Item = item;
|
||||
Priority = TimerPriority.OneMinute;
|
||||
|
|
|
|||
|
|
@ -363,7 +363,7 @@ namespace Server.Items
|
|||
{
|
||||
private Item m_Item;
|
||||
|
||||
public StealableInstance(StealableEntry entry) : this(entry, null, DateTime.UtcNow)
|
||||
public StealableInstance(StealableEntry entry) : this(entry, null, Core.Now)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -384,7 +384,7 @@ namespace Server.Items
|
|||
if (m_Item != null && value == null)
|
||||
{
|
||||
var delay = Utility.RandomMinMax(Entry.MinDelay, Entry.MaxDelay);
|
||||
NextRespawn = DateTime.UtcNow + TimeSpan.FromMinutes(delay);
|
||||
NextRespawn = Core.Now + TimeSpan.FromMinutes(delay);
|
||||
}
|
||||
|
||||
if (Instance != null)
|
||||
|
|
@ -413,7 +413,7 @@ namespace Server.Items
|
|||
Item = null;
|
||||
}
|
||||
|
||||
if (Item == null && DateTime.UtcNow >= NextRespawn)
|
||||
if (Item == null && Core.Now >= NextRespawn)
|
||||
{
|
||||
Item = Entry.CreateInstance();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ namespace Server.Items
|
|||
return false;
|
||||
}
|
||||
|
||||
if (DateTime.UtcNow.Month != 12)
|
||||
if (Core.Now.Month != 12)
|
||||
{
|
||||
from.SendLocalizedMessage(
|
||||
1005700
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace Server.Engines.Mahjong
|
|||
WallBreakIndicator = new MahjongWallBreakIndicator(this, new Point2D(335, 335));
|
||||
Dices = new MahjongDices(this);
|
||||
Players = new MahjongPlayers(this, MaxPlayers, BaseScore);
|
||||
m_LastReset = DateTime.UtcNow;
|
||||
m_LastReset = Core.Now;
|
||||
Level = SecureLevel.CoOwners;
|
||||
}
|
||||
|
||||
|
|
@ -199,12 +199,12 @@ namespace Server.Engines.Mahjong
|
|||
|
||||
public void ResetGame(Mobile from)
|
||||
{
|
||||
if (DateTime.UtcNow - m_LastReset < TimeSpan.FromSeconds(5.0))
|
||||
if (Core.Now - m_LastReset < TimeSpan.FromSeconds(5.0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_LastReset = DateTime.UtcNow;
|
||||
m_LastReset = Core.Now;
|
||||
|
||||
if (from != null)
|
||||
{
|
||||
|
|
@ -222,12 +222,12 @@ namespace Server.Engines.Mahjong
|
|||
|
||||
public void ResetWalls(Mobile from)
|
||||
{
|
||||
if (DateTime.UtcNow - m_LastReset < TimeSpan.FromSeconds(5.0))
|
||||
if (Core.Now - m_LastReset < TimeSpan.FromSeconds(5.0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_LastReset = DateTime.UtcNow;
|
||||
m_LastReset = Core.Now;
|
||||
|
||||
BuildWalls();
|
||||
|
||||
|
|
@ -320,7 +320,7 @@ namespace Server.Engines.Mahjong
|
|||
m_ShowScores = reader.ReadBool();
|
||||
m_SpectatorVision = reader.ReadBool();
|
||||
|
||||
m_LastReset = DateTime.UtcNow;
|
||||
m_LastReset = Core.Now;
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,16 +51,7 @@ namespace Server.Items
|
|||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TimeSpan Duration
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_Duration != TimeSpan.Zero && m_Burning)
|
||||
{
|
||||
return m_End - DateTime.UtcNow;
|
||||
}
|
||||
|
||||
return m_Duration;
|
||||
}
|
||||
|
||||
get => m_Duration != TimeSpan.Zero && m_Burning ? m_End - Core.Now : m_Duration;
|
||||
set => m_Duration = value;
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +111,7 @@ namespace Server.Items
|
|||
}
|
||||
else if (m_Duration != TimeSpan.Zero)
|
||||
{
|
||||
m_Duration = m_End - DateTime.UtcNow;
|
||||
m_Duration = m_End - Core.Now;
|
||||
}
|
||||
|
||||
m_Timer?.Stop();
|
||||
|
|
@ -145,7 +136,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
m_End = DateTime.UtcNow + delay;
|
||||
m_End = Core.Now + delay;
|
||||
|
||||
m_Timer = new InternalTimer(this, delay);
|
||||
m_Timer.Start();
|
||||
|
|
@ -214,7 +205,7 @@ namespace Server.Items
|
|||
|
||||
if (m_Burning && m_Duration != TimeSpan.Zero)
|
||||
{
|
||||
DoTimer(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
DoTimer(reader.ReadDeltaTime() - Core.Now);
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace Server.Items
|
|||
Movable = false;
|
||||
m_MinDamage = minDamage;
|
||||
m_MaxDamage = maxDamage;
|
||||
m_Created = DateTime.UtcNow;
|
||||
m_Created = Core.Now;
|
||||
m_Duration = duration;
|
||||
m_Timer = Timer.DelayCall(TimeSpan.Zero, TimeSpan.FromSeconds(1), OnTick);
|
||||
}
|
||||
|
|
@ -44,7 +44,7 @@ namespace Server.Items
|
|||
|
||||
private void OnTick()
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
var now = Core.Now;
|
||||
var age = now - m_Created;
|
||||
|
||||
if (age > m_Duration)
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ namespace Server.Items
|
|||
|
||||
m_CorpseName = GetCorpseName(owner);
|
||||
|
||||
TimeOfDeath = DateTime.UtcNow;
|
||||
TimeOfDeath = Core.Now;
|
||||
|
||||
AccessLevel = owner.AccessLevel;
|
||||
Guild = owner.Guild as Guild;
|
||||
|
|
@ -140,10 +140,10 @@ namespace Server.Items
|
|||
{
|
||||
var info = owner.Aggressors[i];
|
||||
|
||||
if (DateTime.UtcNow - info.LastCombatTime < lastTime)
|
||||
if (Core.Now - info.LastCombatTime < lastTime)
|
||||
{
|
||||
Killer = info.Attacker;
|
||||
lastTime = DateTime.UtcNow - info.LastCombatTime;
|
||||
lastTime = Core.Now - info.LastCombatTime;
|
||||
}
|
||||
|
||||
if (!isBaseCreature && !info.CriminalAggression)
|
||||
|
|
@ -156,10 +156,10 @@ namespace Server.Items
|
|||
{
|
||||
var info = owner.Aggressed[i];
|
||||
|
||||
if (DateTime.UtcNow - info.LastCombatTime < lastTime)
|
||||
if (Core.Now - info.LastCombatTime < lastTime)
|
||||
{
|
||||
Killer = info.Defender;
|
||||
lastTime = DateTime.UtcNow - info.LastCombatTime;
|
||||
lastTime = Core.Now - info.LastCombatTime;
|
||||
}
|
||||
|
||||
if (!isBaseCreature)
|
||||
|
|
@ -200,7 +200,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public virtual bool InstancedCorpse => Core.SE && DateTime.UtcNow < TimeOfDeath + InstancedCorpseTime;
|
||||
public virtual bool InstancedCorpse => Core.SE && Core.Now < TimeOfDeath + InstancedCorpseTime;
|
||||
|
||||
public override bool IsDecoContainer => false;
|
||||
|
||||
|
|
@ -471,7 +471,7 @@ namespace Server.Items
|
|||
{
|
||||
m_DecayTimer?.Stop();
|
||||
|
||||
m_DecayTime = DateTime.UtcNow + delay;
|
||||
m_DecayTime = Core.Now + delay;
|
||||
|
||||
m_DecayTimer = new InternalTimer(this, delay);
|
||||
m_DecayTimer.Start();
|
||||
|
|
@ -657,7 +657,7 @@ namespace Server.Items
|
|||
|
||||
if (reader.ReadBool())
|
||||
{
|
||||
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
BeginDecay(reader.ReadDeltaTime() - Core.Now);
|
||||
}
|
||||
|
||||
Looters = reader.ReadEntityList<Mobile>();
|
||||
|
|
@ -711,7 +711,7 @@ namespace Server.Items
|
|||
{
|
||||
if (reader.ReadBool())
|
||||
{
|
||||
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
BeginDecay(reader.ReadDeltaTime() - Core.Now);
|
||||
}
|
||||
|
||||
goto case 6;
|
||||
|
|
@ -757,7 +757,7 @@ namespace Server.Items
|
|||
{
|
||||
if (version < 10)
|
||||
{
|
||||
TimeOfDeath = DateTime.UtcNow;
|
||||
TimeOfDeath = Core.Now;
|
||||
}
|
||||
|
||||
if (version < 7)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace Server.Items
|
|||
{
|
||||
m_DecayTimer?.Stop();
|
||||
|
||||
m_DecayTime = DateTime.UtcNow + delay;
|
||||
m_DecayTime = Core.Now + delay;
|
||||
|
||||
m_DecayTimer = new InternalTimer(this, delay);
|
||||
m_DecayTimer.Start();
|
||||
|
|
@ -85,7 +85,7 @@ namespace Server.Items
|
|||
{
|
||||
if (reader.ReadBool())
|
||||
{
|
||||
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
BeginDecay(reader.ReadDeltaTime() - Core.Now);
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace Server.Items
|
|||
{
|
||||
Movable = false;
|
||||
Light = LightType.Circle225;
|
||||
NextSpawn = DateTime.UtcNow;
|
||||
NextSpawn = Core.Now;
|
||||
NextSpawnDelay = TimeSpan.FromMinutes(15.0);
|
||||
SpawnRange = 5;
|
||||
}
|
||||
|
|
@ -87,7 +87,7 @@ namespace Server.Items
|
|||
NextSpawnDelay = reader.ReadTimeSpan();
|
||||
}
|
||||
|
||||
NextSpawn = DateTime.UtcNow;
|
||||
NextSpawn = Core.Now;
|
||||
}
|
||||
|
||||
public virtual void HeedWarning()
|
||||
|
|
@ -101,7 +101,7 @@ namespace Server.Items
|
|||
|
||||
public override void OnMovement(Mobile m, Point3D oldLocation)
|
||||
{
|
||||
if (NextSpawn < DateTime.UtcNow) // means we haven't spawned anything if the next spawn is below
|
||||
if (NextSpawn < Core.Now) // 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))
|
||||
|
|
@ -171,7 +171,7 @@ namespace Server.Items
|
|||
{
|
||||
try
|
||||
{
|
||||
if (NextSpawn < DateTime.UtcNow)
|
||||
if (NextSpawn < Core.Now)
|
||||
{
|
||||
var map = Map;
|
||||
var bc = Creatures.RandomElement().CreateInstance<BaseCreature>();
|
||||
|
|
@ -182,7 +182,7 @@ namespace Server.Items
|
|||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(1), SummonCreatureToWorld, bc, spawnLoc, map);
|
||||
|
||||
NextSpawn = DateTime.UtcNow + NextSpawnDelay;
|
||||
NextSpawn = Core.Now + NextSpawnDelay;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ namespace Server.Items
|
|||
{
|
||||
Movable = false;
|
||||
m_LitBy = litBy;
|
||||
m_Expire = DateTime.UtcNow + TimeSpan.FromSeconds(10);
|
||||
m_Expire = Core.Now + TimeSpan.FromSeconds(10);
|
||||
m_Burning = toDamage;
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(1.0), TimeSpan.FromSeconds(1.0), OnFirebombFieldTimerTick);
|
||||
}
|
||||
|
|
@ -295,7 +295,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
if (DateTime.UtcNow >= m_Expire)
|
||||
if (Core.Now >= m_Expire)
|
||||
{
|
||||
m_Timer.Stop();
|
||||
Delete();
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ namespace Server.Items
|
|||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that
|
||||
}
|
||||
else if (Visible && (ItemID == 4656 || ItemID == 4702) && DateTime.UtcNow >= m_NextUse)
|
||||
else if (Visible && (ItemID == 4656 || ItemID == 4702) && Core.Now >= m_NextUse)
|
||||
{
|
||||
var p = GetWorldLocation();
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ namespace Server.Items
|
|||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(5.00), BackUp);
|
||||
|
||||
m_NextUse = DateTime.UtcNow + TimeSpan.FromSeconds(10.0);
|
||||
m_NextUse = Core.Now + TimeSpan.FromSeconds(10.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ namespace Server.Items
|
|||
|
||||
if (text.Length > 0)
|
||||
{
|
||||
var message = new PlayerBBMessage(DateTime.UtcNow, from, text);
|
||||
var message = new PlayerBBMessage(Core.Now, from, text);
|
||||
|
||||
if (m_Greeting)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace Server.Items
|
|||
|
||||
m_MinDamage = minDamage;
|
||||
m_MaxDamage = maxDamage;
|
||||
m_Created = DateTime.UtcNow;
|
||||
m_Created = Core.Now;
|
||||
m_Duration = duration;
|
||||
|
||||
m_Timer = Timer.DelayCall(TimeSpan.Zero, TimeSpan.FromSeconds(1), OnTick);
|
||||
|
|
@ -46,7 +46,7 @@ namespace Server.Items
|
|||
|
||||
private void OnTick()
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
var now = Core.Now;
|
||||
var age = now - m_Created;
|
||||
|
||||
if (age > m_Duration)
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
if (m_User.Deleted || m_User.Map != Map || !m_User.InRange(this, 3)
|
||||
|| m_User.NetState == null || DateTime.UtcNow - m_LastUse >= m_UseTimeout)
|
||||
|| m_User.NetState == null || Core.Now - m_LastUse >= m_UseTimeout)
|
||||
{
|
||||
m_User.CloseGump<GameGump>();
|
||||
}
|
||||
|
|
@ -209,7 +209,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
m_User = from;
|
||||
m_LastUse = DateTime.UtcNow;
|
||||
m_LastUse = Core.Now;
|
||||
|
||||
from.SendGump(new GameGump(this, from, 0, false));
|
||||
}
|
||||
|
|
@ -473,7 +473,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.UtcNow;
|
||||
m_Panel.m_LastUse = Core.Now;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -520,7 +520,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.UtcNow;
|
||||
m_Panel.m_LastUse = Core.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -755,7 +755,7 @@ namespace Server.Items
|
|||
|
||||
if (ShowTimeRemaining)
|
||||
{
|
||||
m.SendMessage("Time remaining: {0}", FormatTime(info.Timer.Next - DateTime.UtcNow));
|
||||
m.SendMessage("Time remaining: {0}", FormatTime(info.Timer.Next - Core.Now));
|
||||
}
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(5), EndLock, m);
|
||||
|
|
@ -932,7 +932,7 @@ namespace Server.Items
|
|||
var m = reader.ReadEntity<Mobile>();
|
||||
var end = reader.ReadDateTime();
|
||||
|
||||
StartTimer(m, end - DateTime.UtcNow);
|
||||
StartTimer(m, end - Core.Now);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,12 +100,12 @@ namespace Server.Items
|
|||
|
||||
public virtual void Broadcast(Mobile triggerer)
|
||||
{
|
||||
if (m_Broadcasting || DateTime.UtcNow < m_LastBroadcast + ResetDelay)
|
||||
if (m_Broadcasting || Core.Now < m_LastBroadcast + ResetDelay)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_LastBroadcast = DateTime.UtcNow;
|
||||
m_LastBroadcast = Core.Now;
|
||||
|
||||
m_Broadcasting = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ namespace Server.Items
|
|||
|
||||
m_Entries = new List<CampfireEntry>();
|
||||
|
||||
Created = DateTime.UtcNow;
|
||||
Created = Core.Now;
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(1.0), TimeSpan.FromSeconds(1.0), OnTick);
|
||||
}
|
||||
|
||||
|
|
@ -94,7 +94,7 @@ namespace Server.Items
|
|||
|
||||
private void OnTick()
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
var now = Core.Now;
|
||||
var age = now - Created;
|
||||
|
||||
if (age >= TimeSpan.FromSeconds(100.0))
|
||||
|
|
@ -191,7 +191,7 @@ namespace Server.Items
|
|||
{
|
||||
Player = player;
|
||||
Fire = fire;
|
||||
Start = DateTime.UtcNow;
|
||||
Start = Core.Now;
|
||||
m_Safe = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,9 +113,9 @@ namespace Server.Items
|
|||
|
||||
public static int GetDelay(Mobile m)
|
||||
{
|
||||
if (m_Delay.TryGetValue(m, out var timer) && timer.Next > DateTime.UtcNow)
|
||||
if (m_Delay.TryGetValue(m, out var timer) && timer.Next > Core.Now)
|
||||
{
|
||||
return (int)(timer.Next - DateTime.UtcNow).TotalSeconds;
|
||||
return (int)(timer.Next - Core.Now).TotalSeconds;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
@ -185,7 +185,7 @@ namespace Server.Items
|
|||
MoveToWorld(loc, map);
|
||||
|
||||
From = from;
|
||||
m_End = DateTime.UtcNow + TimeSpan.FromSeconds(10);
|
||||
m_End = Core.Now + TimeSpan.FromSeconds(10);
|
||||
|
||||
SetDamage(min, max);
|
||||
|
||||
|
|
@ -292,7 +292,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
if (DateTime.UtcNow > m_End)
|
||||
if (Core.Now > m_End)
|
||||
{
|
||||
m_Item.Delete();
|
||||
Stop();
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ namespace Server.Items
|
|||
continue;
|
||||
}
|
||||
|
||||
mon.Pacify(from, DateTime.UtcNow + TimeSpan.FromSeconds(5.0)); // TODO check
|
||||
mon.Pacify(from, Core.Now + TimeSpan.FromSeconds(5.0)); // TODO check
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -131,9 +131,9 @@ namespace Server.Items
|
|||
|
||||
public static int GetDelay(Mobile m)
|
||||
{
|
||||
if (m_Delay.TryGetValue(m, out var timer) && timer.Next > DateTime.UtcNow)
|
||||
if (m_Delay.TryGetValue(m, out var timer) && timer.Next > Core.Now)
|
||||
{
|
||||
return (int)(timer.Next - DateTime.UtcNow).TotalSeconds;
|
||||
return (int)(timer.Next - Core.Now).TotalSeconds;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -342,7 +342,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
if (DateTime.UtcNow < NextUse)
|
||||
if (Core.Now < NextUse)
|
||||
{
|
||||
from.SendLocalizedMessage(502406); // This book needs time to recharge.
|
||||
return;
|
||||
|
|
@ -359,7 +359,7 @@ namespace Server.Items
|
|||
{
|
||||
if (!Core.SA)
|
||||
{
|
||||
NextUse = DateTime.UtcNow + UseDelay;
|
||||
NextUse = Core.Now + UseDelay;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ namespace Server.Items
|
|||
{
|
||||
if (value != m_ReplenishesCharges && value)
|
||||
{
|
||||
m_LastReplenished = DateTime.UtcNow;
|
||||
m_LastReplenished = Core.Now;
|
||||
}
|
||||
|
||||
m_ReplenishesCharges = value;
|
||||
|
|
@ -159,15 +159,15 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
if (m_LastReplenished + ChargeReplenishRate < DateTime.UtcNow)
|
||||
if (m_LastReplenished + ChargeReplenishRate < Core.Now)
|
||||
{
|
||||
var timeDifference = DateTime.UtcNow - m_LastReplenished;
|
||||
var timeDifference = Core.Now - 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.UtcNow;
|
||||
m_LastReplenished = Core.Now;
|
||||
|
||||
if (invalidate)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -315,13 +315,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
var ts = t.Next - DateTime.UtcNow;
|
||||
if (ts < TimeSpan.Zero)
|
||||
{
|
||||
ts = TimeSpan.Zero;
|
||||
}
|
||||
|
||||
t.Delay = ts;
|
||||
t.Delay = Utility.Max(t.Next - Core.Now, TimeSpan.Zero);
|
||||
t.Stop();
|
||||
}
|
||||
|
||||
|
|
@ -334,7 +328,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
public static TimeSpan TimeRemaining(Mobile m) =>
|
||||
Timers.TryGetValue(m, out var t) ? t.Next - DateTime.UtcNow : TimeSpan.Zero;
|
||||
Timers.TryGetValue(m, out var t) ? t.Next - Core.Now : TimeSpan.Zero;
|
||||
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ namespace Server.Items
|
|||
var m = entry.Key;
|
||||
|
||||
writer.Write(m);
|
||||
writer.Write(entry.Value.Next - DateTime.UtcNow);
|
||||
writer.Write(entry.Value.Next - Core.Now);
|
||||
writer.Write(m.NameMod);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ namespace Server.Items
|
|||
|
||||
public static void Initialize()
|
||||
{
|
||||
ServerStart = DateTime.UtcNow;
|
||||
ServerStart = Core.Now;
|
||||
}
|
||||
|
||||
public static MoonPhase GetMoonPhase(Map map, int x, int y)
|
||||
|
|
@ -55,7 +55,7 @@ namespace Server.Items
|
|||
|
||||
public static void GetTime(Map map, int x, int y, out int hours, out int minutes, out int totalMinutes)
|
||||
{
|
||||
var timeSpan = DateTime.UtcNow - WorldStart;
|
||||
var timeSpan = Core.Now - WorldStart;
|
||||
|
||||
totalMinutes = (int)(timeSpan.TotalSeconds / SecondsPerUOMinute);
|
||||
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ namespace Server.Items
|
|||
|
||||
var next = reader.ReadDateTime();
|
||||
|
||||
var now = DateTime.UtcNow;
|
||||
var now = Core.Now;
|
||||
|
||||
if (next < now)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ namespace Server.Items
|
|||
m_SpawnTimer = new SpawnTimer(this, delay);
|
||||
m_SpawnTimer.Start();
|
||||
|
||||
m_NextSpawnTime = DateTime.UtcNow + delay;
|
||||
m_NextSpawnTime = Core.Now + delay;
|
||||
}
|
||||
|
||||
private void StopSpawnTimer()
|
||||
|
|
@ -134,7 +134,7 @@ namespace Server.Items
|
|||
|
||||
if (m_Petals < 10)
|
||||
{
|
||||
StartSpawnTimer(m_NextSpawnTime - DateTime.UtcNow);
|
||||
StartSpawnTimer(m_NextSpawnTime - Core.Now);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ namespace Server.Items
|
|||
|
||||
var daysLeft = (int)Math.Ceiling(
|
||||
(deed.Stone.Started + deed.Stone.Duration +
|
||||
HouseRaffleStone.ExpirationTime - DateTime.UtcNow).TotalDays
|
||||
HouseRaffleStone.ExpirationTime - Core.Now).TotalDays
|
||||
);
|
||||
|
||||
return
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ namespace Server.Items
|
|||
|
||||
Address = From.NetState?.Address ?? IPAddress.None;
|
||||
|
||||
Date = DateTime.UtcNow;
|
||||
Date = Core.Now;
|
||||
}
|
||||
|
||||
public RaffleEntry(IGenericReader reader, int version)
|
||||
|
|
@ -132,7 +132,7 @@ namespace Server.Items
|
|||
Entries.Clear();
|
||||
m_Winner = null;
|
||||
Deed = null;
|
||||
m_Started = DateTime.UtcNow;
|
||||
m_Started = Core.Now;
|
||||
}
|
||||
|
||||
m_State = value;
|
||||
|
|
@ -213,7 +213,7 @@ namespace Server.Items
|
|||
return false;
|
||||
}
|
||||
|
||||
return m_Started + m_Duration + ExpirationTime <= DateTime.UtcNow;
|
||||
return m_Started + m_Duration + ExpirationTime <= Core.Now;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -537,7 +537,7 @@ namespace Server.Items
|
|||
|
||||
public void CheckEnd()
|
||||
{
|
||||
if (m_State != HouseRaffleState.Active || m_Started + m_Duration > DateTime.UtcNow)
|
||||
if (m_State != HouseRaffleState.Active || m_Started + m_Duration > Core.Now)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ namespace Server.Items
|
|||
"You cannot summon your pet to this location."
|
||||
);
|
||||
}
|
||||
else if (Core.ML && from is PlayerMobile mobile && DateTime.UtcNow < mobile.LastPetBallTime.AddSeconds(15.0))
|
||||
else if (Core.ML && from is PlayerMobile mobile && Core.Now < mobile.LastPetBallTime.AddSeconds(15.0))
|
||||
{
|
||||
MessageHelper.SendLocalizedMessageTo(
|
||||
this,
|
||||
|
|
@ -304,7 +304,7 @@ namespace Server.Items
|
|||
|
||||
if (from is PlayerMobile playerMobile)
|
||||
{
|
||||
playerMobile.LastPetBallTime = DateTime.UtcNow;
|
||||
playerMobile.LastPetBallTime = Core.Now;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ namespace Server.Items
|
|||
{
|
||||
var info = m.Aggressed[i];
|
||||
|
||||
if (DateTime.UtcNow - info.LastCombatTime < time)
|
||||
if (Core.Now - info.LastCombatTime < time)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
@ -231,7 +231,7 @@ namespace Server.Items
|
|||
return false;
|
||||
}
|
||||
|
||||
if ((from as PlayerMobile)?.AcceleratedStart > DateTime.UtcNow)
|
||||
if ((from as PlayerMobile)?.AcceleratedStart > Core.Now)
|
||||
{
|
||||
// You may not use a soulstone while your character is under the effects of a Scroll of Alacrity.
|
||||
from.SendLocalizedMessage(1078115);
|
||||
|
|
@ -743,7 +743,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
if ((from as PlayerMobile)?.AcceleratedStart > DateTime.UtcNow)
|
||||
if ((from as PlayerMobile)?.AcceleratedStart > Core.Now)
|
||||
{
|
||||
// <CENTER>Unable to Absorb Selected Skill from Soulstone</CENTER>
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
if (pm.AcceleratedStart > DateTime.UtcNow)
|
||||
if (pm.AcceleratedStart > Core.Now)
|
||||
{
|
||||
from.SendLocalizedMessage(1077951); // You are already under the effect of an accelerated skillgain scroll.
|
||||
return false;
|
||||
|
|
@ -96,7 +96,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.UtcNow + TimeSpan.FromMinutes(15);
|
||||
pm.AcceleratedStart = Core.Now + TimeSpan.FromMinutes(15);
|
||||
Timer.DelayCall(TimeSpan.FromMinutes(15), Expire_Callback, from);
|
||||
|
||||
pm.AcceleratedSkill = Skill;
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
if (pm.AcceleratedStart > DateTime.UtcNow)
|
||||
if (pm.AcceleratedStart > Core.Now)
|
||||
{
|
||||
from.SendLocalizedMessage(1077951); // You are already under the effect of an accelerated skillgain scroll.
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -60,9 +60,9 @@ namespace Server.Items
|
|||
{
|
||||
m.SendLocalizedMessage(1060197); // You are not dead, and thus cannot be resurrected!
|
||||
}
|
||||
else if (m.AnkhNextUse > DateTime.UtcNow)
|
||||
else if (m.AnkhNextUse > Core.Now)
|
||||
{
|
||||
var delay = m.AnkhNextUse - DateTime.UtcNow;
|
||||
var delay = m.AnkhNextUse - Core.Now;
|
||||
|
||||
if (delay.TotalMinutes > 0)
|
||||
{
|
||||
|
|
@ -167,7 +167,7 @@ namespace Server.Items
|
|||
|
||||
if (from is PlayerMobile mobile)
|
||||
{
|
||||
mobile.AnkhNextUse = DateTime.UtcNow + TimeSpan.FromHours(1);
|
||||
mobile.AnkhNextUse = Core.Now + TimeSpan.FromHours(1);
|
||||
}
|
||||
|
||||
base.OnResponse(state, info);
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ namespace Server.Items
|
|||
}
|
||||
else
|
||||
{
|
||||
writer.Write(DateTime.UtcNow + TimeSpan.FromDays(1));
|
||||
writer.Write(Core.Now + TimeSpan.FromDays(1));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -277,12 +277,12 @@ namespace Server.Items
|
|||
|
||||
var next = reader.ReadDateTime();
|
||||
|
||||
if (next < DateTime.UtcNow)
|
||||
if (next < Core.Now)
|
||||
{
|
||||
next = DateTime.UtcNow;
|
||||
next = Core.Now;
|
||||
}
|
||||
|
||||
m_Timer = Timer.DelayCall(next - DateTime.UtcNow, TimeSpan.FromDays(1), GiveResources);
|
||||
m_Timer = Timer.DelayCall(next - Core.Now, TimeSpan.FromDays(1), GiveResources);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ namespace Server.Items
|
|||
}
|
||||
else
|
||||
{
|
||||
writer.Write(DateTime.UtcNow + TimeSpan.FromDays(1));
|
||||
writer.Write(Core.Now + TimeSpan.FromDays(1));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -164,12 +164,12 @@ namespace Server.Items
|
|||
|
||||
var next = reader.ReadDateTime();
|
||||
|
||||
if (next < DateTime.UtcNow)
|
||||
if (next < Core.Now)
|
||||
{
|
||||
next = DateTime.UtcNow;
|
||||
next = Core.Now;
|
||||
}
|
||||
|
||||
m_Timer = Timer.DelayCall(next - DateTime.UtcNow, TimeSpan.FromDays(1), GiveLogs);
|
||||
m_Timer = Timer.DelayCall(next - Core.Now, TimeSpan.FromDays(1), GiveLogs);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -385,7 +385,7 @@ namespace Server.Mobiles
|
|||
public override void OnThink()
|
||||
{
|
||||
/*
|
||||
if (m_NextWave < DateTime.UtcNow)
|
||||
if (m_NextWave < Core.Now)
|
||||
AreaHeatDamage();
|
||||
*/
|
||||
}
|
||||
|
|
@ -436,7 +436,7 @@ namespace Server.Mobiles
|
|||
}
|
||||
}
|
||||
|
||||
m_NextWave = DateTime.UtcNow + TimeSpan.FromSeconds( 3 );
|
||||
m_NextWave = Core.Now + TimeSpan.FromSeconds( 3 );
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,16 +51,16 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
if (CheckRange(m.Location, oldLocation, 0) && DateTime.UtcNow >= m_NextActiveTrigger)
|
||||
if (CheckRange(m.Location, oldLocation, 0) && Core.Now >= m_NextActiveTrigger)
|
||||
{
|
||||
m_NextActiveTrigger = m_NextPassiveTrigger = DateTime.UtcNow + ResetDelay;
|
||||
m_NextActiveTrigger = m_NextPassiveTrigger = Core.Now + ResetDelay;
|
||||
|
||||
OnTrigger(m);
|
||||
}
|
||||
else if (PassivelyTriggered && CheckRange(m.Location, oldLocation, PassiveTriggerRange) &&
|
||||
DateTime.UtcNow >= m_NextPassiveTrigger)
|
||||
Core.Now >= m_NextPassiveTrigger)
|
||||
{
|
||||
m_NextPassiveTrigger = DateTime.UtcNow + PassiveTriggerDelay;
|
||||
m_NextPassiveTrigger = Core.Now + PassiveTriggerDelay;
|
||||
|
||||
OnTrigger(m);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -730,7 +730,7 @@ namespace Server.Items
|
|||
|
||||
if (canSwing)
|
||||
{
|
||||
canSwing = !(attacker is PlayerMobile p) || p.PeacedUntil <= DateTime.UtcNow;
|
||||
canSwing = !(attacker is PlayerMobile p) || p.PeacedUntil <= Core.Now;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue