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:
Kamron Batman 2021-03-13 01:32:04 -08:00 • committed by GitHub
parent 5de6edbeb8
commit 6c4308bce6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
208 changed files with 660 additions and 793 deletions

View file

@ -483,7 +483,7 @@ namespace Server.Spells
{
Caster.SendLocalizedMessage(502644); // You have not yet recovered from casting a spell.
}
else if (Caster is PlayerMobile mobile && mobile.PeacedUntil > DateTime.UtcNow)
else if (Caster is PlayerMobile mobile && mobile.PeacedUntil > Core.Now)
{
mobile.SendLocalizedMessage(1072060); // You cannot cast a spell while calmed.
}
@ -691,7 +691,7 @@ namespace Server.Spells
var fcDelay = TimeSpan.FromSeconds(-(CastDelayFastScalar * fc * CastDelaySecondsPerTick));
return (CastDelayBase + fcDelay).Max(CastDelayMinimum);
return Utility.Max(CastDelayBase + fcDelay, CastDelayMinimum);
}
public virtual int ComputeKarmaAward() => 0;
@ -723,7 +723,7 @@ namespace Server.Spells
Caster.SendLocalizedMessage(502646); // You cannot cast a spell while frozen.
DoFizzle();
}
else if (Caster is PlayerMobile mobile && mobile.PeacedUntil > DateTime.UtcNow)
else if (Caster is PlayerMobile mobile && mobile.PeacedUntil > Core.Now)
{
mobile.SendLocalizedMessage(1072060); // You cannot cast a spell while calmed.
DoFizzle();
@ -924,7 +924,7 @@ namespace Server.Spells
if (m_Spell.Caster.Player && m_Spell.Caster.Target != originalTarget)
{
m_Spell.Caster.Target?.BeginTimeout(m_Spell.Caster, TimeSpan.FromSeconds(30.0));
m_Spell.Caster.Target?.BeginTimeout(m_Spell.Caster, 30000); // 30 seconds
}
m_Spell.m_CastTimer = null;

View file

@ -216,7 +216,7 @@ namespace Server.Spells
{
var info = m.Aggressed[i];
if (info.Defender.Player && DateTime.UtcNow - info.LastCombatTime < CombatHeatDelay)
if (info.Defender.Player && Core.Now - info.LastCombatTime < CombatHeatDelay)
{
return true;
}
@ -228,7 +228,7 @@ namespace Server.Spells
{
var info = m.Aggressors[i];
if (info.Attacker.Player && DateTime.UtcNow - info.LastCombatTime < CombatHeatDelay)
if (info.Attacker.Player && Core.Now - info.LastCombatTime < CombatHeatDelay)
{
return true;
}