diff --git a/Projects/Server/Main.cs b/Projects/Server/Main.cs index 7e21454e8..93ff24d0c 100644 --- a/Projects/Server/Main.cs +++ b/Projects/Server/Main.cs @@ -120,6 +120,8 @@ public static class Core public static Thread Thread { get; private set; } + private static long _firstTick; + [ThreadStatic] private static long _tickCount; @@ -164,6 +166,8 @@ public static class Core } } + public static long Uptime => Thread.CurrentThread != Thread ? 0 : TickCount - _firstTick; + private static long _cycleIndex = 1; private static float[] _cyclesPerSecond = new float[128]; @@ -515,6 +519,7 @@ public static class Core TcpServer.Start(); EventSink.InvokeServerStarted(); + _firstTick = TickCount; RunEventLoop(); } diff --git a/Projects/Server/Network/NetState/NetState.Fastwalk.cs b/Projects/Server/Network/NetState/NetState.Fastwalk.cs index 38591ae83..a886985f2 100644 --- a/Projects/Server/Network/NetState/NetState.Fastwalk.cs +++ b/Projects/Server/Network/NetState/NetState.Fastwalk.cs @@ -39,21 +39,17 @@ public partial class NetState var now = Core.TickCount; - var lastIndex = -1; - // Expire old steps while (_expiredIndex != _stepIndex) { var step = _steps[_expiredIndex]; // Is the step ahead of us, or the next step rolled over and we didn't yet - if (step > now || lastIndex > -1 && _steps[lastIndex] > step) + if (step - now > 0) { break; } - lastIndex = _expiredIndex++; - if (_expiredIndex == stepsLength) { _expiredIndex -= stepsLength; diff --git a/Projects/Server/Network/TcpServer.cs b/Projects/Server/Network/TcpServer.cs index 4615b3648..b8e514f79 100644 --- a/Projects/Server/Network/TcpServer.cs +++ b/Projects/Server/Network/TcpServer.cs @@ -164,7 +164,7 @@ public static class TcpServer var ticks = Core.TickCount; - if (_nextMaximumSocketsReachedMessage <= ticks) + if (ticks - _nextMaximumSocketsReachedMessage > 0) { if (socket.RemoteEndPoint is IPEndPoint ipep) { diff --git a/Projects/UOContent/Engines/Help/PageQueue.cs b/Projects/UOContent/Engines/Help/PageQueue.cs index 07c4b9509..c64290961 100644 --- a/Projects/UOContent/Engines/Help/PageQueue.cs +++ b/Projects/UOContent/Engines/Help/PageQueue.cs @@ -240,8 +240,7 @@ namespace Server.Engines.Help m.SendMessage("A new page has been placed in the queue."); } - if (m?.AccessLevel >= AccessLevel.Counselor && m.AutoPageNotify && - Core.TickCount - m.LastMoveTime < 600000) + if (m?.AccessLevel >= AccessLevel.Counselor && m.AutoPageNotify && Core.TickCount - m.LastMoveTime < 600000) { isStaffOnline = true; } diff --git a/Projects/UOContent/Gumps/AdminGump.cs b/Projects/UOContent/Gumps/AdminGump.cs index 1cbddf207..400fc9a89 100644 --- a/Projects/UOContent/Gumps/AdminGump.cs +++ b/Projects/UOContent/Gumps/AdminGump.cs @@ -184,7 +184,7 @@ namespace Server.Gumps AddLabel(150, 270, LabelHue, Core.ScriptItems.ToString()); AddLabel(20, 290, LabelHue, "Uptime:"); - AddLabel(150, 290, LabelHue, FormatTimeSpan(TimeSpan.FromMilliseconds(Core.TickCount))); + AddLabel(150, 290, LabelHue, FormatTimeSpan(TimeSpan.FromMilliseconds(Core.Uptime))); AddLabel(20, 310, LabelHue, "Memory:"); AddLabel(150, 310, LabelHue, FormatByteAmount(GC.GetTotalMemory(false))); diff --git a/Projects/UOContent/Misc/PacketThrottles.cs b/Projects/UOContent/Misc/PacketThrottles.cs index 9a661b3fe..4a73def0c 100644 --- a/Projects/UOContent/Misc/PacketThrottles.cs +++ b/Projects/UOContent/Misc/PacketThrottles.cs @@ -141,7 +141,7 @@ namespace Server.Network return true; } - if (Core.TickCount < ns.GetPacketTime(packetID) + Delays[packetID]) + if (Core.TickCount - ns.GetPacketTime(packetID) + Delays[packetID] > 0) { drop = true; return false; diff --git a/Projects/UOContent/Mobiles/Abilities/MonsterAbility.cs b/Projects/UOContent/Mobiles/Abilities/MonsterAbility.cs index c9ba47865..396f9de26 100644 --- a/Projects/UOContent/Mobiles/Abilities/MonsterAbility.cs +++ b/Projects/UOContent/Mobiles/Abilities/MonsterAbility.cs @@ -26,7 +26,7 @@ public abstract partial class MonsterAbility /// Boolean indicating the ability can trigger. public virtual bool CanTrigger(BaseCreature source, MonsterAbilityTrigger trigger) { - if (_nextTriggerTicks?.TryGetValue(source, out var nextTrigger) == true && Core.TickCount < nextTrigger) + if (_nextTriggerTicks?.TryGetValue(source, out var nextTrigger) == true && nextTrigger - Core.TickCount > 0) { return false; } diff --git a/Projects/UOContent/Network/UOGateway.cs b/Projects/UOContent/Network/UOGateway.cs index 7af49d228..6a968c749 100644 --- a/Projects/UOContent/Network/UOGateway.cs +++ b/Projects/UOContent/Network/UOGateway.cs @@ -36,7 +36,7 @@ namespace Server.Network public static void QueryCompactShardStats(NetState state, CircularBufferReader reader, int packetLength) { state.SendCompactShardStats( - (uint)(Core.TickCount / 1000), + (uint)(Core.Uptime / 1000), TcpServer.Instances.Count - 1, // Shame if you modify this! World.Items.Count, World.Mobiles.Count, @@ -49,7 +49,7 @@ namespace Server.Network const long ticksInHour = 1000 * 60 * 60; state.SendExtendedShardStats( ServerList.ServerName, - (int)(Core.TickCount / ticksInHour), + (int)(Core.Uptime / ticksInHour), TcpServer.Instances.Count - 1, // Shame if you modify this! World.Items.Count, World.Mobiles.Count, diff --git a/Projects/UOContent/Skills/Begging.cs b/Projects/UOContent/Skills/Begging.cs index e67d20404..0267aa682 100644 --- a/Projects/UOContent/Skills/Begging.cs +++ b/Projects/UOContent/Skills/Begging.cs @@ -67,8 +67,8 @@ namespace Server.SkillHandlers number = 500402; // You are too far away to beg from her. } } - else if (!Core.ML && from.Mounted - ) // If we're on a mount, who would give us money? TODO: guessed it's removed since ML + // If we're on a mount, who would give us money? TODO: guessed it's removed since ML + else if (!Core.ML && from.Mounted) { number = 500404; // They seem unwilling to give you any money. } @@ -119,11 +119,8 @@ namespace Server.SkillHandlers } else if (m_From.Karma < 0 && badKarmaChance > Utility.RandomDouble()) { - m_Target.PublicOverheadMessage( - MessageType.Regular, - m_Target.SpeechHue, - 500406 - ); // Thou dost not look trustworthy... no gold for thee today! + // Thou dost not look trustworthy... no gold for thee today! + m_Target.PublicOverheadMessage(MessageType.Regular, m_Target.SpeechHue, 500406); } else if (m_From.CheckTargetSkill(SkillName.Begging, m_Target, 0.0, 100.0)) { @@ -150,11 +147,8 @@ namespace Server.SkillHandlers if (consumed > 0) { - m_Target.PublicOverheadMessage( - MessageType.Regular, - m_Target.SpeechHue, - 500405 - ); // I feel sorry for thee... + // I feel sorry for thee... + m_Target.PublicOverheadMessage(MessageType.Regular, m_Target.SpeechHue, 500405); var gold = new Gold(consumed); @@ -175,20 +169,14 @@ namespace Server.SkillHandlers } else { - m_Target.PublicOverheadMessage( - MessageType.Regular, - m_Target.SpeechHue, - 500407 - ); // I have not enough money to give thee any! + // I have not enough money to give thee any! + m_Target.PublicOverheadMessage(MessageType.Regular, m_Target.SpeechHue, 500407); } } else { - m_Target.PublicOverheadMessage( - MessageType.Regular, - m_Target.SpeechHue, - 500407 - ); // I have not enough money to give thee any! + // I have not enough money to give thee any! + m_Target.PublicOverheadMessage(MessageType.Regular, m_Target.SpeechHue, 500407); } } else