Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of SkyNet v1.0.0
SkyNet/plugins/SkyNet.dll
Decompiled 2 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SkyNet { internal static class ClientHiveMind { private static ClientSnapshot _snapshot = ClientSnapshot.CreateInvalid(); public static void ReceiveHeartbeat(ServerSnapshot server) { _snapshot.Server = server; _snapshot.Valid = true; SkyNetTelemetry.Server = server; } public static ClientSnapshot GetSnapshot() { return _snapshot; } public static void SetSnapshot(ClientSnapshot snap) { _snapshot = snap; SkyNetTelemetry.Server = snap.Server; } } internal static class ClientMetricsEngine { private static FieldInfo _fiTotalSent; private static FieldInfo _fiTotalRecv; private static int _lastSent; private static int _lastRecv; private static float _lastTime; public static void Update() { if (Time.deltaTime > 0f) { SkyNetTelemetry.ClientFPS = 1f / Time.deltaTime; SkyNetTelemetry.ClientFrameMs = Time.deltaTime * 1000f; } else { SkyNetTelemetry.ClientFPS = 0f; SkyNetTelemetry.ClientFrameMs = 0f; } SkyNetTelemetry.ClientSendQueue = 0f; SkyNetTelemetry.ClientRecvQueue = 0f; SkyNetTelemetry.BandwidthCapsApplied = false; SkyNetTelemetry.PingMs = 0f; SkyNetTelemetry.LinkQuality = 1f; SkyNetTelemetry.ClientSendRate = 0f; SkyNetTelemetry.ClientRecvRate = 0f; if (LoopbackDetector.IsLoopback()) { return; } ZNet instance = ZNet.instance; ZNetPeer val = ((instance != null) ? instance.GetServerPeer() : null); if (val == null || val.m_socket == null) { return; } ISocket socket = val.m_socket; Type type = ((object)socket).GetType(); if (_fiTotalSent == null) { _fiTotalSent = type.GetField("m_totalSent", BindingFlags.Instance | BindingFlags.NonPublic); } if (_fiTotalRecv == null) { _fiTotalRecv = type.GetField("m_totalRecv", BindingFlags.Instance | BindingFlags.NonPublic); } if (!(_fiTotalSent == null) && !(_fiTotalRecv == null)) { int num = (int)_fiTotalSent.GetValue(socket); int num2 = (int)_fiTotalRecv.GetValue(socket); float time = Time.time; float num3 = time - _lastTime; if (!(num3 <= 0f)) { int num4 = num - _lastSent; int num5 = num2 - _lastRecv; SkyNetTelemetry.ClientSendRate = (float)num4 / num3 / 1024f; SkyNetTelemetry.ClientRecvRate = (float)num5 / num3 / 1024f; _lastSent = num; _lastRecv = num2; _lastTime = time; } } } } internal static class ClientOverlay { [CompilerGenerated] private static class <>O { public static WindowFunction <0>__DrawWindow; } private static bool _visible; private static Rect _windowRect = new Rect(40f, 40f, 620f, 320f); private static GUIStyle _windowStyle; private static GUIStyle _bgStyle; private static GUIStyle _labelStyle; private static GUISkin _skin; private static Vector2 _scroll; private static bool _stylesReady; private static bool _initialized; private static KeyCode _toggleKey = (KeyCode)285; public static void Initialize() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) if (IsPlayerReady() && SharedConfig.Hud_Enabled != null && SharedConfig.Hud_ToggleKey != null) { _visible = SharedConfig.Hud_Enabled.Value; _toggleKey = ParseKeyOrDefault(SharedConfig.Hud_ToggleKey.Value, (KeyCode)285); _initialized = true; _stylesReady = false; SharedLogging.Info("HUD", "ClientOverlay initialized (HUD-only)."); } } public static void Update() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) if (IsPlayerReady()) { if (!_initialized) { Initialize(); } if (_initialized && Input.GetKeyDown(_toggleKey)) { _visible = !_visible; SharedLogging.Info("HUD", "HUD visibility toggled: " + (_visible ? "ON" : "OFF")); } } } public static void OnGUI() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown if (!IsPlayerReady()) { return; } if (!_initialized) { Initialize(); } if (_initialized && _visible) { EnsureStyles(); GUI.skin = _skin; Rect windowRect = _windowRect; object obj = <>O.<0>__DrawWindow; if (obj == null) { WindowFunction val = DrawWindow; <>O.<0>__DrawWindow = val; obj = (object)val; } _windowRect = GUI.Window(9981, windowRect, (WindowFunction)obj, "", _windowStyle); } } private static bool IsPlayerReady() { if ((Object)(object)ZNet.instance != (Object)null) { return (Object)(object)Player.m_localPlayer != (Object)null; } return false; } private static void EnsureStyles() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Expected O, but got Unknown //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Expected O, but got Unknown //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Expected O, but got Unknown //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Expected O, but got Unknown //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Expected O, but got Unknown //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Expected O, but got Unknown //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Expected O, but got Unknown //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Expected O, but got Unknown //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Expected O, but got Unknown //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Expected O, but got Unknown //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Expected O, but got Unknown //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Expected O, but got Unknown //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Expected O, but got Unknown //IL_0241: Unknown result type (might be due to invalid IL or missing references) if (!_stylesReady) { _skin = ScriptableObject.CreateInstance<GUISkin>(); GUISkin skin = GUI.skin; _skin.box = new GUIStyle(skin.box); _skin.label = new GUIStyle(skin.label); _skin.window = new GUIStyle(skin.window); _skin.button = new GUIStyle(skin.button); _skin.textField = new GUIStyle(skin.textField); _skin.textArea = new GUIStyle(skin.textArea); _skin.toggle = new GUIStyle(skin.toggle); _skin.horizontalSlider = new GUIStyle(skin.horizontalSlider); _skin.horizontalSliderThumb = new GUIStyle(skin.horizontalSliderThumb); _skin.verticalSlider = new GUIStyle(skin.verticalSlider); _skin.verticalSliderThumb = new GUIStyle(skin.verticalSliderThumb); _skin.horizontalScrollbar = new GUIStyle(skin.horizontalScrollbar); _skin.horizontalScrollbarThumb = new GUIStyle(skin.horizontalScrollbarThumb); _skin.verticalScrollbar = new GUIStyle(skin.verticalScrollbar); _skin.verticalScrollbarThumb = new GUIStyle(skin.verticalScrollbarThumb); _skin.scrollView = new GUIStyle(skin.scrollView); _windowStyle = new GUIStyle(_skin.window); _windowStyle.normal.background = MakeTex(2, 2, new Color(0f, 0f, 0f, 0f)); _windowStyle.border = new RectOffset(0, 0, 0, 0); _windowStyle.padding = new RectOffset(6, 6, 6, 6); _bgStyle = new GUIStyle(_skin.box); _bgStyle.normal.background = MakeTex(2, 2, new Color(0f, 0f, 0f, 0.7f)); _labelStyle = new GUIStyle(_skin.label) { fontSize = 14, richText = true }; _labelStyle.normal.textColor = Color.white; _skin.window = _windowStyle; _skin.box = _bgStyle; _skin.label = _labelStyle; _stylesReady = true; } } private static void DrawWindow(int id) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) GUI.Box(new Rect(0f, 0f, ((Rect)(ref _windowRect)).width, ((Rect)(ref _windowRect)).height), GUIContent.none, _bgStyle); ServerSnapshot server = SkyNetTelemetry.Server; GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); _scroll = GUILayout.BeginScrollView(_scroll, Array.Empty<GUILayoutOption>()); if (string.IsNullOrEmpty(server.Version) || !(server.Version != "unknown")) { GUILayout.Label("<color=#FFCC00><b>WAITING FOR SERVER TELEMETRY…</b></color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.EndScrollView(); GUILayout.EndVertical(); GUI.DragWindow(); return; } if (LoopbackDetector.IsLoopback()) { GUILayout.Label("<color=#FFCC00><b>LOOPBACK MODE DETECTED</b></color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label("<color=#FFCC00>Server metrics unavailable.</color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label("<color=#FFCC00>Use LAN IP for full telemetry.</color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Space(10f); } GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(((Rect)(ref _windowRect)).width / 2f - 10f) }); GUILayout.Label("<b><size=16><color=#FFD700>SERVER</color></size></b>", _labelStyle, Array.Empty<GUILayoutOption>()); WriteLine("<b>Mode:</b> <color=#00FF88>" + server.Mode + "</color>"); WriteLine($"<b>Tick:</b> <color=#00FF88>{server.TickMs:F1} ms</color>"); WriteLine($"<b>Drift:</b> <color=#00FF88>{server.DriftMs:F1} ms</color>"); WriteLine($"<b>Queue:</b> <color=#00FF88>{server.Queue}</color>"); WriteLine($"<b>Churn:</b> <color=#00FF88>{server.ChurnPerSec}/s</color>"); WriteLine($"<b>Zones:</b> <color=#00FF88>{server.ZonesPerSec}/s</color>"); WriteLine($"<b>Out:</b> <color=#00FF88>{server.OutRateKbps:F1} KB/s</color>"); WriteLine($"<b>In:</b> <color=#00FF88>{server.InRateKbps:F1} KB/s</color>"); GUILayout.EndVertical(); GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(((Rect)(ref _windowRect)).width / 2f - 10f) }); GUILayout.Label("<b><size=16><color=#FFD700>CLIENT</color></size></b>", _labelStyle, Array.Empty<GUILayoutOption>()); WriteLine($"<b>FPS:</b> <color=#00FF88>{SkyNetTelemetry.ClientFPS:F0}</color>"); WriteLine($"<b>Frame:</b> <color=#00FF88>{SkyNetTelemetry.ClientFrameMs:F1} ms</color>"); WriteLine($"<b>SendQ:</b> <color=#00FF88>{SkyNetTelemetry.ClientSendQueue:F0}</color>"); WriteLine($"<b>RecvQ:</b> <color=#00FF88>{SkyNetTelemetry.ClientRecvQueue:F0}</color>"); WriteLine($"<b>Send:</b> <color=#00FF88>{SkyNetTelemetry.ClientSendRate:F1} KB/s</color>"); WriteLine($"<b>Recv:</b> <color=#00FF88>{SkyNetTelemetry.ClientRecvRate:F1} KB/s</color>"); WriteLine("<b>BW Caps:</b> " + (SkyNetTelemetry.BandwidthCapsApplied ? "<color=#00FF88>APPLIED</color>" : "<color=#FF4444>NO</color>")); GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.EndScrollView(); GUILayout.EndVertical(); GUI.DragWindow(); } private static void WriteLine(string text) { GUILayout.Label(text, _labelStyle, Array.Empty<GUILayoutOption>()); } private static Texture2D MakeTex(int w, int h, Color c) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Expected O, but got Unknown //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) Texture2D val = new Texture2D(w, h, (TextureFormat)4, false); Color[] array = (Color[])(object)new Color[w * h]; for (int i = 0; i < array.Length; i++) { array[i] = c; } val.SetPixels(array); val.Apply(); return val; } private static KeyCode ParseKeyOrDefault(string value, KeyCode fallback) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) if (string.IsNullOrWhiteSpace(value)) { return fallback; } try { return (KeyCode)Enum.Parse(typeof(KeyCode), value, ignoreCase: true); } catch { return fallback; } } } internal class ClientOverlayHost : MonoBehaviour { private void Update() { ClientOverlay.Update(); } private void OnGUI() { ClientOverlay.OnGUI(); } } internal static class SkyNetTelemetry { public static ServerSnapshot Server; public static float ClientFPS; public static float ClientFrameMs; public static float ClientSendQueue; public static float ClientRecvQueue; public static bool BandwidthCapsApplied; public static float PingMs; public static float LinkQuality; public static float ClientSendRate; public static float ClientRecvRate; } [BepInPlugin("wubarrk.skynet", "SkyNet", "1.0.0")] public class SkyNetPlugin : BaseUnityPlugin { private bool _initializedServer; private bool _initializedClient; private void Awake() { SharedLogging.Initialize(((BaseUnityPlugin)this).Logger); SharedConfig.Initialize(((BaseUnityPlugin)this).Config); ((BaseUnityPlugin)this).Logger.LogInfo((object)("[SkyNet] Awake() entered — assembly: " + typeof(SkyNetPlugin).Assembly.FullName)); SharedLogging.Ritual("SkyNet awakening sequence initiated."); if (Application.isBatchMode) { ((BaseUnityPlugin)this).Logger.LogInfo((object)"[SkyNet] Detected batch mode — treating as dedicated server."); TryInitializeServer(); } else { ((BaseUnityPlugin)this).Logger.LogInfo((object)"[SkyNet] Detected non‑batch mode — treating as client."); TryInitializeClient(); } } private void TryInitializeServer() { try { InitializeServer(); _initializedServer = true; ((BaseUnityPlugin)this).Logger.LogInfo((object)"[SkyNet] Server initialization completed."); } catch (Exception ex) { _initializedServer = false; ((BaseUnityPlugin)this).Logger.LogError((object)("[SkyNet] InitializeServer FAILED: " + ex)); SharedLogging.Warn("SERVER", $"InitializeServer FAILED: {ex}"); } } private void TryInitializeClient() { try { InitializeClient(); _initializedClient = true; ((BaseUnityPlugin)this).Logger.LogInfo((object)"[SkyNet] Client initialization completed."); } catch (Exception ex) { _initializedClient = false; ((BaseUnityPlugin)this).Logger.LogError((object)("[SkyNet] InitializeClient FAILED: " + ex)); SharedLogging.Warn("CLIENT", $"InitializeClient FAILED: {ex}"); } } private void InitializeServer() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"[SkyNet] InitializeServer() starting."); Safe("SharedReflectionCache.Build", delegate { SharedReflectionCache.Build(); }); Safe("SharedRPC.RegisterServerRPC", delegate { SharedRPC.RegisterServerRPC(); }); Safe("ServerMetricsEngine.Initialize", delegate { ServerMetricsEngine.Initialize(); }); Safe("ServerLogicEngine.Initialize", delegate { ServerLogicEngine.Initialize(); }); Safe("ServerZDOThrottle.Initialize", delegate { ServerZDOThrottle.Initialize(); }); Safe("ServerAILoadBalancer.Initialize", delegate { ServerAILoadBalancer.Initialize(); }); Safe("ServerZoneWarmup.Initialize", delegate { ServerZoneWarmup.Initialize(); }); Safe("ServerHeartbeat.Initialize", delegate { ServerHeartbeat.Initialize(); }); Safe("ServerEnvironmentEngine.Initialize", delegate { ServerEnvironmentEngine.Initialize(); }); Safe("SkyNetBootSequence.Run", delegate { SkyNetBootSequence.MetricsInit = true; SkyNetBootSequence.LogicInit = true; SkyNetBootSequence.ZDOThrottleInit = true; SkyNetBootSequence.AIInit = true; SkyNetBootSequence.ZoneWarmupInit = true; SkyNetBootSequence.HeartbeatInit = true; SkyNetBootSequence.EnvironmentInit = true; SkyNetBootSequence.Run((BaseUnityPlugin)(object)this, isServer: true); }); ((BaseUnityPlugin)this).Logger.LogInfo((object)"[SkyNet] InitializeServer() finished."); void Safe(string name, Action a) { try { a(); ((BaseUnityPlugin)this).Logger.LogInfo((object)("[SkyNet] OK: " + name)); } catch (Exception arg) { ((BaseUnityPlugin)this).Logger.LogError((object)$"[SkyNet] FAIL in {name}: {arg}"); } } } private void InitializeClient() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Expected O, but got Unknown SharedLogging.Info("CLIENT", "Client role confirmed. Engaging client subsystems."); try { ZNet instance = ZNet.instance; if ((Object)(object)instance != (Object)null) { ZRpc serverRPC = instance.GetServerRPC(); if (serverRPC != null) { SharedRPC.RegisterClientRPC(serverRPC); SharedLogging.Info("CLIENT", "Client RPC registration completed."); } } } catch (Exception arg) { SharedLogging.Warn("RPC", $"Client RPC registration failed: {arg}"); } try { GameObject val = new GameObject("SkyNet_ClientOverlayHost"); Object.DontDestroyOnLoad((Object)(object)val); Type typeFromHandle = typeof(ClientOverlayHost); if (typeFromHandle != null) { val.AddComponent(typeFromHandle); SkyNetBootSequence.ClientOverlayInit = true; SharedLogging.Info("CLIENT", "Client overlay host created."); } } catch (Exception arg2) { SharedLogging.Warn("CLIENT", $"Overlay host init failed: {arg2}"); } SkyNetBootSequence.Run((BaseUnityPlugin)(object)this, isServer: false); } private void Update() { if (_initializedServer) { ServerUpdate(); } else if (_initializedClient) { ClientUpdate(); } } private void ServerUpdate() { ServerMetricsEngine.Update(); ServerLogicEngine.Update(); ServerZDOThrottle.Update(); ServerAILoadBalancer.Update(); ServerZoneWarmup.Update(); ServerHeartbeat.Update(); ServerEnvironmentEngine.Update(); } private void ClientUpdate() { try { ZNet instance = ZNet.instance; if ((Object)(object)instance != (Object)null) { ZRpc serverRPC = instance.GetServerRPC(); if (serverRPC != null) { SharedRPC.RegisterClientRPC(serverRPC); } } } catch { } ClientMetricsEngine.Update(); } } [HarmonyPatch(typeof(BaseAI), "UpdateAI")] internal static class Patch_AI_UpdateAI { private static void Prefix() { if (SharedReflectionCache.CanBalanceAI) { ServerMetricsEngine.NotifyAIRawRequest(); } } private static void Postfix() { if (SharedReflectionCache.CanBalanceAI) { ServerMetricsEngine.NotifyAIActualUpdate(); } } } internal static class ServerAILoadBalancer { private static int _aiBudget; private static float _lastReset; public static void Initialize() { _lastReset = SharedUtils.Now; SharedLogging.Info("S-AI", "ServerAILoadBalancer initialized."); } public static void Update() { if (SharedReflectionCache.CanBalanceAI) { float now = SharedUtils.Now; if (now - _lastReset >= 0.05f) { _lastReset = now; ApplyModeBudget(); } } } private static void ApplyModeBudget() { switch (ServerLogicEngine.GetMode()) { case "Boost": _aiBudget = 999999; break; case "Balanced": _aiBudget = 200; break; case "Shield": _aiBudget = 80; break; case "Failsafe": _aiBudget = 10; break; default: _aiBudget = 100; break; } } public static bool AllowAIUpdate() { if (!SharedReflectionCache.CanBalanceAI) { return true; } if (_aiBudget <= 0) { return false; } _aiBudget--; return true; } } internal static class ServerAutoPatcher { private static Harmony _harmony; private const string HARMONY_ID = "wubarrk.skynet.server"; public static void Apply() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown if (_harmony == null) { _harmony = new Harmony("wubarrk.skynet.server"); SharedLogging.Info("S-PATCH", "Harmony instance created."); } if (SharedReflectionCache.CanThrottleZDOs) { Patch_SendZDOs(); } else { SharedLogging.Warn("S-PATCH", "ZDO throttling unavailable this run."); } if (SharedReflectionCache.CanThrottleZones) { Patch_GenerateZones(); } else { SharedLogging.Warn("S-PATCH", "Zone throttling unavailable this run."); } if (SharedReflectionCache.CanBalanceAI) { Patch_AI(); } else { SharedLogging.Warn("S-PATCH", "AI load balancing unavailable this run."); } } private static void Patch_SendZDOs() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown MethodInfo zDOMan_SendZDOs = SharedReflectionCache.ZDOMan_SendZDOs; if (!(zDOMan_SendZDOs == null)) { MethodInfo method = typeof(ServerAutoPatcher).GetMethod("SendZDOs_Postfix", BindingFlags.Static | BindingFlags.NonPublic); _harmony.Patch((MethodBase)zDOMan_SendZDOs, (HarmonyMethod)null, new HarmonyMethod(method), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); SharedLogging.Info("S-PATCH", "Patched ZDOMan.SendZDOs (metrics + throttling)."); } } private static void Patch_GenerateZones() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown MethodInfo zoneSystem_GenerateZones = SharedReflectionCache.ZoneSystem_GenerateZones; if (!(zoneSystem_GenerateZones == null)) { MethodInfo method = typeof(ServerAutoPatcher).GetMethod("GenerateZones_Prefix", BindingFlags.Static | BindingFlags.NonPublic); _harmony.Patch((MethodBase)zoneSystem_GenerateZones, new HarmonyMethod(method), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); SharedLogging.Info("S-PATCH", "Patched ZoneSystem.GenerateZones (zone throttling + metrics)."); } } private static void Patch_AI() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown MethodInfo aI_UpdateAI = SharedReflectionCache.AI_UpdateAI; if (!(aI_UpdateAI == null)) { MethodInfo method = typeof(ServerAutoPatcher).GetMethod("AI_UpdateAI_Prefix", BindingFlags.Static | BindingFlags.NonPublic); _harmony.Patch((MethodBase)aI_UpdateAI, new HarmonyMethod(method), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); SharedLogging.Info("S-PATCH", "Patched AI.UpdateAI (AI load balancing)."); } } private static void SendZDOs_Postfix(ZDOMan __instance) { ServerMetricsEngine.NotifySendZDOsCalled(__instance); FieldInfo zDOMan_m_tempSendList = SharedReflectionCache.ZDOMan_m_tempSendList; if (!(zDOMan_m_tempSendList == null) && zDOMan_m_tempSendList.GetValue(__instance) is IList list) { int count = list.Count; if (!ServerZDOThrottle.ConsumeZdoBudget(count)) { list.Clear(); SharedLogging.Info("S-THROTTLE", $"ZDO send throttled: {count} entries dropped this tick."); } } } private static bool GenerateZones_Prefix() { ServerMetricsEngine.NotifyZoneGenerated(); if (!ServerZDOThrottle.ConsumeZoneBudget()) { SharedLogging.Info("S-THROTTLE", "Zone generation throttled this tick."); return false; } return true; } private static bool AI_UpdateAI_Prefix() { if (!ServerAILoadBalancer.AllowAIUpdate()) { return false; } return true; } } internal static class ServerDeepScan { public static void Run() { SharedLogging.Info("S-DEEPSCAN", "Beginning server deep scan…"); SharedReflectionCache.Reset(); Assembly assembly = typeof(ZNet).Assembly; SharedReflectionCache.AssemblyVersion = assembly.GetName().Version?.ToString() ?? "unknown"; SharedReflectionCache.BuildHash = assembly.ManifestModule.ModuleVersionId.ToString(); BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; SharedReflectionCache.ZNetType = typeof(ZNet); SharedReflectionCache.ZDOManType = typeof(ZDOMan); SharedReflectionCache.ZoneSystemType = typeof(ZoneSystem); SharedReflectionCache.ZNetPeerType = typeof(ZNetPeer); SharedReflectionCache.ZSteamSocketType = typeof(ZSteamSocket); if (typeof(EnvMan) != null) { SharedReflectionCache.HasEnvMan = true; SharedLogging.Ritual("Enviro lattice detected: EnvMan subsystem available."); Type typeFromHandle = typeof(EnvMan); SharedReflectionCache.EnvMan_GetWindIntensity = typeFromHandle.GetMethod("GetWindIntensity", bindingAttr); SharedReflectionCache.EnvMan_GetRainIntensity = typeFromHandle.GetMethod("GetRainIntensity", bindingAttr); SharedReflectionCache.EnvMan_GetFogIntensity = typeFromHandle.GetMethod("GetFogIntensity", bindingAttr); SharedLogging.Info("S-DEEPSCAN", $"EnvMan methods: wind={SharedReflectionCache.EnvMan_GetWindIntensity != null}, " + $"rain={SharedReflectionCache.EnvMan_GetRainIntensity != null}, " + $"fog={SharedReflectionCache.EnvMan_GetFogIntensity != null}"); } SharedReflectionCache.ZDOMan_SendZDOs = SharedReflectionCache.ZDOManType.GetMethod("SendZDOs", bindingAttr); if (SharedReflectionCache.ZDOMan_SendZDOs != null) { SharedReflectionCache.Patch_SendZDOs = true; SharedLogging.Info("S-DEEPSCAN", "Found ZDOMan.SendZDOs — patching enabled."); } else { SharedLogging.Warn("S-DEEPSCAN", "ZDOMan.SendZDOs not found — ZDO throttling disabled."); } SharedReflectionCache.ZDOMan_m_tempToSync = SharedReflectionCache.ZDOManType.GetField("m_tempToSync", bindingAttr); SharedReflectionCache.ZDOMan_m_tempToSyncDistant = SharedReflectionCache.ZDOManType.GetField("m_tempToSyncDistant", bindingAttr); if (SharedReflectionCache.ZDOMan_m_tempToSync != null && SharedReflectionCache.ZDOMan_m_tempToSyncDistant != null) { SharedLogging.Ritual("ZDO throttling lattice restored: batching lists discovered."); } else { SharedLogging.Warn("S-DEEPSCAN", "ZDO batching lists not found — throttling dormant."); } SharedReflectionCache.ZDOMan_m_sendQueue = SharedReflectionCache.ZDOManType.GetField("m_sendQueue", bindingAttr); SharedReflectionCache.ZDOMan_m_tempSendList = SharedReflectionCache.ZDOManType.GetField("m_tempSendList", bindingAttr); SharedReflectionCache.ZoneSystem_GenerateZones = SharedReflectionCache.ZoneSystemType.GetMethod("GenerateZones", bindingAttr); SharedReflectionCache.ZoneSystem_m_activeZones = SharedReflectionCache.ZoneSystemType.GetField("m_activeZones", bindingAttr); SharedReflectionCache.ZoneSystem_m_zones = SharedReflectionCache.ZoneSystemType.GetField("m_zones", bindingAttr); SharedReflectionCache.AI_UpdateAI = typeof(Character).GetMethod("UpdateAI", bindingAttr) ?? typeof(BaseAI).GetMethod("UpdateAI", bindingAttr); SharedReflectionCache.CanReadTick = true; SharedReflectionCache.CanReadChurn = true; SharedReflectionCache.CanReadZones = true; SharedReflectionCache.LogSummary(); DeepScanData deepScanData = default(DeepScanData); deepScanData.Version = SharedReflectionCache.AssemblyVersion; deepScanData.BuildHash = SharedReflectionCache.BuildHash; deepScanData.HasZNet = SharedReflectionCache.HasZNet; deepScanData.HasZDOMan = SharedReflectionCache.HasZDOMan; deepScanData.HasZoneSystem = SharedReflectionCache.HasZoneSystem; deepScanData.CanThrottleZDOs = SharedReflectionCache.CanThrottleZDOs; deepScanData.CanThrottleZones = SharedReflectionCache.CanThrottleZones; deepScanData.CanBalanceAI = SharedReflectionCache.CanBalanceAI; deepScanData.CanWarmupZones = SharedReflectionCache.CanWarmupZones; deepScanData.ClientCanSetBandwidth = SharedReflectionCache.ClientCanSetBandwidth; deepScanData.CanReadQueue = SharedReflectionCache.CanReadQueue; deepScanData.CanReadTick = SharedReflectionCache.CanReadTick; deepScanData.CanReadChurn = SharedReflectionCache.CanReadChurn; deepScanData.CanReadZones = SharedReflectionCache.CanReadZones; deepScanData.IsDegraded = SharedReflectionCache.IsDegraded; DeepScanData deepScanData2 = deepScanData; SharedLogging.Info("S-DEEPSCAN", $"DeepScanData: {deepScanData2}"); ServerState.DeepScan = deepScanData2; } } internal static class ServerEnvironmentEngine { private static float _wind; private static float _rain; private static float _fog; private static bool _enabled; public static float Wind => _wind; public static float Rain => _rain; public static float Fog => _fog; public static void Initialize() { _enabled = SharedReflectionCache.HasEnvMan; if (_enabled) { SharedLogging.Info("S-ENV", "Environment engine initialized (lightweight mode)."); } else { SharedLogging.Info("S-ENV", "EnvMan not found — environment engine dormant."); } } public static void Update() { if (!_enabled) { return; } EnvMan instance = EnvMan.instance; if (!((Object)(object)instance == (Object)null)) { if (SharedReflectionCache.EnvMan_GetWindIntensity != null) { _wind = (float)SharedReflectionCache.EnvMan_GetWindIntensity.Invoke(instance, null); } else { _wind = 0f; } if (SharedReflectionCache.EnvMan_GetRainIntensity != null) { _rain = (float)SharedReflectionCache.EnvMan_GetRainIntensity.Invoke(instance, null); } else { _rain = 0f; } if (SharedReflectionCache.EnvMan_GetFogIntensity != null) { _fog = (float)SharedReflectionCache.EnvMan_GetFogIntensity.Invoke(instance, null); } else { _fog = 0f; } } } public static float GetEnvironmentBias() { if (!_enabled) { return 1f; } float num = _wind * 0.4f + _rain * 0.4f + _fog * 0.2f; return Mathf.Lerp(0.9f, 1.2f, Mathf.Clamp01(num)); } } internal static class ServerHeartbeat { private static float _nextSend; public static void Initialize() { _nextSend = Time.time + 6f; SharedLogging.Info("S-HB", "ServerHeartbeat initialized."); } public static void Update() { //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Expected O, but got Unknown float time = Time.time; if (time < _nextSend) { return; } _nextSend = time + 6f; SharedLogging.Info("S-HB", "Mode=" + SkyNetStabilizedMetrics.Mode + " Reason=" + SkyNetStabilizedMetrics.ModeReason + " " + $"Tick={SkyNetStabilizedMetrics.Tick:F1} " + $"Drift={SkyNetStabilizedMetrics.Drift:F1} " + $"Jitter={SkyNetStabilizedMetrics.Jitter:F2} " + $"Stability={SkyNetStabilizedMetrics.Stability:F2} " + $"Trend={SkyNetStabilizedMetrics.Trend:+0.00;-0.00} " + $"Conf={SkyNetStabilizedMetrics.Confidence:F2} " + $"Q={SkyNetStabilizedMetrics.Queue} " + $"C={SkyNetStabilizedMetrics.ChurnPerSec} " + $"Z={SkyNetStabilizedMetrics.ZonesPerSec} " + $"Degraded={SkyNetStabilizedMetrics.IsDegraded}"); ServerSnapshot serverSnapshot = ServerMetricsEngine.BuildSnapshot(ServerLogicEngine.GetMode()); ZPackage val = new ZPackage(); serverSnapshot.Serialize(val); foreach (ZNetPeer peer in ZNet.instance.GetPeers()) { try { peer.m_rpc.Invoke("SkyNet_ServerHeartbeat_v1", new object[1] { val }); } catch (Exception ex) { SharedLogging.Warn("S-HB", $"Failed to send heartbeat to peer {peer.m_uid}: {ex.Message}"); } } } } internal static class ServerLogicEngine { private static string _mode = "Balanced"; private static DateTime _serverStartTime; private static readonly Dictionary<long, DateTime> _playerLoadWindows = new Dictionary<long, DateTime>(); private static bool _startupLoggedActive; private static bool _startupLoggedCleared; private static bool _configWarned; private static bool _envBiasLogged; private const int WindowSize = 60; private static readonly float[] _tickWindow = new float[60]; private static readonly float[] _driftWindow = new float[60]; private static int _windowIndex; private static bool _windowFilled; private static DateTime _lastDecisionTime = DateTime.MinValue; private static readonly TimeSpan DecisionInterval = TimeSpan.FromSeconds(3.0); private const float BASE_TICK_FAIL = 80f; private const float BASE_TICK_SHIELD = 50f; private const float BASE_TICK_BOOST = 36f; private const float BASE_DRIFT_FAIL = 80f; private const float BASE_DRIFT_SHIELD = 50f; private const float BASE_DRIFT_BOOST = 36f; private const float BASE_JITTER_FAIL = 5f; private const float BASE_JITTER_SHIELD = 3.5f; private const float BASE_JITTER_BOOST = 2f; private const int BASE_QUEUE_FAIL = 2000; private const int BASE_QUEUE_SHIELD = 800; private const int BASE_QUEUE_BOOST = 200; private const int BASE_CHURN_FAIL = 2000; private const int BASE_CHURN_SHIELD = 800; private const int BASE_CHURN_BOOST = 200; private const int BASE_ZONES_FAIL = 120; private const int BASE_ZONES_SHIELD = 60; private const int BASE_ZONES_BOOST = 20; private const int BASE_AI_FAIL = 500; private const int BASE_AI_SHIELD = 250; private const int BASE_AI_BOOST = 100; private static bool ConfigReady { get { if (SharedConfig.Server_StartupGraceSeconds == null || SharedConfig.Server_PlayerLoadWindowSeconds == null || SharedConfig.AutoTuner_Enabled == null || SharedConfig.AutoTuner_Strength == null || SharedConfig.AutoTuner_ModeAggression == null || SharedConfig.Trinity_JitterWeight == null || SharedConfig.Trinity_DriftWeight == null || SharedConfig.Trinity_TickWeight == null) { if (!_configWarned) { _configWarned = true; SharedLogging.Warn("S-LOGIC", "SharedConfig not fully initialized — ServerLogicEngine.Update() dormant until config is ready."); } return false; } return true; } } private static bool IsInStartupGrace { get { if (!ConfigReady) { return false; } double num = SharedConfig.Server_StartupGraceSeconds.Value; if (num <= 0.0) { return false; } return (DateTime.UtcNow - _serverStartTime).TotalSeconds < num; } } private static bool AnyPlayerInLoadWindow { get { if (!ConfigReady) { return false; } DateTime utcNow = DateTime.UtcNow; bool result = false; List<long> list = new List<long>(); foreach (KeyValuePair<long, DateTime> playerLoadWindow in _playerLoadWindows) { if (playerLoadWindow.Value > utcNow) { result = true; } else { list.Add(playerLoadWindow.Key); } } foreach (long item in list) { _playerLoadWindows.Remove(item); SharedLogging.Info("S-LOGIC", $"Player {item} load window expired."); } return result; } } public static void Initialize() { _serverStartTime = DateTime.UtcNow; _startupLoggedActive = false; _startupLoggedCleared = false; _configWarned = false; _envBiasLogged = false; _windowIndex = 0; _windowFilled = false; _lastDecisionTime = DateTime.MinValue; SharedLogging.Info("S-LOGIC", "ServerLogicEngine initialized."); } public static void NotifyPlayerAwake(long playerID) { if (ConfigReady) { _playerLoadWindows[playerID] = DateTime.UtcNow.AddSeconds(SharedConfig.Server_PlayerLoadWindowSeconds.Value); SharedLogging.Info("S-LOGIC", $"Player {playerID} entered world — load window active for {SharedConfig.Server_PlayerLoadWindowSeconds.Value:F0}s."); } } private static void FeedWindow(float tick, float drift) { _tickWindow[_windowIndex] = tick; _driftWindow[_windowIndex] = drift; _windowIndex++; if (_windowIndex >= 60) { _windowIndex = 0; _windowFilled = true; } } private static void ComputeWindowStats(out float meanTick, out float meanDrift, out float jitter, out float trend) { int num = (_windowFilled ? 60 : _windowIndex); if (num <= 0) { meanTick = (meanDrift = (jitter = (trend = 0f))); return; } float num2 = 0f; float num3 = 0f; for (int i = 0; i < num; i++) { num2 += _tickWindow[i]; num3 += _driftWindow[i]; } meanTick = num2 / (float)num; meanDrift = num3 / (float)num; float num4 = 0f; for (int j = 0; j < num; j++) { float num5 = _tickWindow[j] - meanTick; float num6 = _driftWindow[j] - meanDrift; num4 += num5 * num5 + num6 * num6; } jitter = (float)Math.Sqrt(num4 / (float)num); float num7 = _tickWindow[0]; float num8 = _tickWindow[(num - 1 + 60) % 60]; trend = (num8 - num7) / (float)Math.Max(1, num); } public static void Update() { if (!ConfigReady) { return; } bool isInStartupGrace = IsInStartupGrace; bool anyPlayerInLoadWindow = AnyPlayerInLoadWindow; if (isInStartupGrace && !_startupLoggedActive) { _startupLoggedActive = true; SharedLogging.Info("S-LOGIC", $"Startup grace window active for {SharedConfig.Server_StartupGraceSeconds.Value:F0}s — mode locked to Balanced."); } else if (!isInStartupGrace && !_startupLoggedCleared) { _startupLoggedCleared = true; SharedLogging.Info("S-LOGIC", "Startup grace window ended — adaptive modes unlocked."); } DeepScanData deepScan = ServerState.DeepScan; float tickMs = ServerMetricsEngine.GetTickMs(); float driftMs = ServerMetricsEngine.GetDriftMs(); int num = ServerMetricsEngine.GetQueue(); ServerSnapshot serverSnapshot = ServerMetricsEngine.BuildSnapshot("tmp"); int num2 = serverSnapshot.ChurnPerSec; int num3 = serverSnapshot.ZonesPerSec; bool flag = false; bool flag2 = false; bool flag3 = false; if (!deepScan.CanReadQueue) { num = num2 * 2 + num3 * 5; flag = true; } if (!deepScan.CanReadChurn) { num2 = num / 2; flag2 = true; } if (!deepScan.CanReadZones) { num3 = num2 / 4; flag3 = true; } int num4 = (SharedReflectionCache.CanBalanceAI ? ServerMetricsEngine.GetRawAILoad() : (-1)); bool flag4 = num4 >= 0; bool isDegraded = deepScan.IsDegraded; float environmentBias = ServerEnvironmentEngine.GetEnvironmentBias(); environmentBias = Mathf.Clamp(environmentBias, 0.8f, 1.2f); if (!_envBiasLogged) { _envBiasLogged = true; SharedLogging.Info("S-LOGIC", $"Environment bias = {environmentBias:F2}"); } float num5 = 80f * environmentBias; float num6 = 50f * environmentBias; float num7 = 36f / environmentBias; float num8 = 80f * environmentBias; float num9 = 50f * environmentBias; float num10 = 36f / environmentBias; float num11 = 5f; float num12 = 3.5f; float num13 = 2f; int num14 = (int)(2000f * environmentBias); int num15 = (int)(800f * environmentBias); int num16 = (int)(200f / environmentBias); int num17 = (int)(2000f * environmentBias); int num18 = (int)(800f * environmentBias); int num19 = (int)(200f / environmentBias); int num20 = (int)(120f * environmentBias); int num21 = (int)(60f * environmentBias); int num22 = (int)(20f / environmentBias); int num23 = (int)(500f * environmentBias); int num24 = (int)(250f * environmentBias); int num25 = (int)(100f / environmentBias); FeedWindow(tickMs, driftMs); ComputeWindowStats(out var meanTick, out var meanDrift, out var jitter, out var trend); float num26 = 1f / (1f + jitter / 10f); float num27 = num26; if (!((Object)(object)ZNet.instance != (Object)null) || ZNet.instance.GetNrOfPlayers() == 0) { if (_mode != "IdleFreeze") { SharedLogging.Ritual("Cognitive state shift: " + _mode + " → IdleFreeze"); _mode = "IdleFreeze"; } ServerMetricsEngine.SetModeReason("IdleFreeze"); PublishStabilizedMetrics(meanTick, meanDrift, jitter, trend, num26, num27, num, num2, num3, isDegraded, "IdleFreeze"); return; } if (_mode == "IdleFreeze") { SharedLogging.Ritual("Cognitive state shift: IdleFreeze → Balanced (PlayerConnected)"); _mode = "Balanced"; _windowIndex = 0; _windowFilled = false; } if (isInStartupGrace || anyPlayerInLoadWindow) { if (_mode != "Balanced") { SharedLogging.Ritual("Cognitive state shift: " + _mode + " → Balanced (protection window)"); _mode = "Balanced"; } if (anyPlayerInLoadWindow) { SharedLogging.Info("S-LOGIC", "Per-player load window active — suppressing aggressive mode changes."); } ServerMetricsEngine.SetModeReason("ProtectionWindow"); PublishStabilizedMetrics(meanTick, meanDrift, jitter, trend, num26, num27, num, num2, num3, isDegraded, "ProtectionWindow"); return; } float num28 = (SharedConfig.AutoTuner_Enabled.Value ? Mathf.Clamp(SharedConfig.AutoTuner_Strength.Value, 0f, 1f) : 0f); float num29 = ((meanTick > 0f) ? meanTick : tickMs); float num30 = ((meanDrift > 0f) ? meanDrift : driftMs); float num31 = Mathf.Clamp(trend, -2f, 2f); float num32 = Mathf.Max(0.01f, SharedConfig.Trinity_JitterWeight.Value); float num33 = Mathf.Max(0.01f, SharedConfig.Trinity_DriftWeight.Value); float num34 = Mathf.Max(0.01f, SharedConfig.Trinity_TickWeight.Value); float num35 = ((num12 > 0f) ? (jitter / num12) : 0f); float num36 = ((num9 > 0f) ? (num30 / num9) : 0f); float num37 = ((num6 > 0f) ? (num29 / num6) : 0f); float num38 = (num32 * num35 + num33 * num36 + num34 * num37) / (num32 + num33 + num34); float num39 = Mathf.Clamp(SharedConfig.AutoTuner_ModeAggression.Value, 0f, 2f); float num40 = Mathf.Lerp(0.7f, 1.3f, num39 / 2f); float num41 = Mathf.Lerp(1.3f, 0.7f, num39 / 2f) * (1f / Mathf.Clamp(num38, 0.7f, 1.3f)); float num42 = num40 * Mathf.Clamp(2f - num38, 0.7f, 1.3f); float num43 = 1f - num28 * (1f - num26) * 0.25f - num28 * Mathf.Max(0f, num31) * 0.05f; float num44 = 1f + num28 * (num26 - 0.5f) * 0.3f - num28 * Mathf.Max(0f, num31) * 0.05f; float num45 = num43; float num46 = num44; float num47 = 1f - num28 * (1f - num26) * 0.3f; float num48 = 1f + num28 * (num26 - 0.5f) * 0.3f; float num49 = num5; float num50 = num6 * num43 * num41; float num51 = num7 * num44 * num42; float num52 = num8; float num53 = num9 * num45 * num41; float num54 = num10 * num46 * num42; float num55 = num11; float num56 = num12 * num47 * num41; float num57 = num13 * num48 * num42; float num58 = ((!flag && deepScan.CanReadQueue) ? 1f : 0f); float num59 = ((!flag2 && deepScan.CanReadChurn) ? 1f : 0f); float num60 = ((!flag3 && deepScan.CanReadZones) ? 1f : 0f); float num61 = (flag4 ? 0.75f : 0f); float num62 = 1f + num28 * Mathf.Max(0f, num31) * 0.3f; num58 *= num62; num59 *= num62; float num63 = 1f - num28 * Mathf.Max(0f, (jitter - num12) / num12) * 0.5f; num61 *= Mathf.Clamp(num63, 0.25f, 1f); num60 *= Mathf.Clamp(num63, 0.5f, 1f); float num64 = (float)num14 * num58; float num65 = (float)num15 * num58 * num41; float num66 = (float)num16 * num58 * num42; float num67 = (float)num17 * num59; float num68 = (float)num18 * num59 * num41; float num69 = (float)num19 * num59 * num42; float num70 = (float)num20 * num60; float num71 = (float)num21 * num60 * num41; float num72 = (float)num22 * num60 * num42; float num73 = (float)num23 * num61; float num74 = (float)num24 * num61 * num41; float num75 = (float)num25 * num61 * num42; bool num76 = DateTime.UtcNow - _lastDecisionTime >= DecisionInterval && (_windowFilled || _windowIndex > 10); string mode = _mode; string text = "Stable"; int num77; int num78; if (num76) { _lastDecisionTime = DateTime.UtcNow; if (!(jitter > num55) && !(num30 > num52)) { num77 = ((num29 > num49) ? 1 : 0); if (num77 == 0) { num78 = ((jitter > num56 || num30 > num53 || num29 > num50) ? 1 : 0); goto IL_0798; } } else { num77 = 1; } num78 = 0; goto IL_0798; } PublishStabilizedMetrics(meanTick, meanDrift, jitter, trend, num26, num27, num, num2, num3, isDegraded, "Stable"); return; IL_0798: bool flag5 = (byte)num78 != 0; bool flag6 = jitter < num57 && num30 < num54 && num29 < num51; bool flag7 = (num58 > 0f && (float)num > num65) || (num59 > 0f && (float)num2 > num68) || (num60 > 0f && (float)num3 > num71) || (num61 > 0f && flag4 && (float)num4 > num74); bool flag8 = (num58 > 0f && (float)num > num64) || (num59 > 0f && (float)num2 > num67) || (num60 > 0f && (float)num3 > num70) || (num61 > 0f && flag4 && (float)num4 > num73); if (((uint)num77 | (flag8 ? 1u : 0u)) != 0) { mode = "Failsafe"; text = (isDegraded ? "CriticalLoadDegraded" : "CriticalLoad"); } else if (flag5 || flag7) { mode = "Shield"; text = (isDegraded ? "HighLoadDegraded" : "HighLoad"); } else if (flag6 && (num58 == 0f || (float)num < num66) && (num59 == 0f || (float)num2 < num69) && (num60 == 0f || (float)num3 < num72) && (!flag4 || (float)num4 < num75)) { mode = "Boost"; text = (isDegraded ? "LowLoadDegraded" : "LowLoad"); } else { mode = "Balanced"; text = "Stable"; } if (num27 < 0.4f && mode == "Boost") { mode = "Balanced"; text = "UnstableLowConfidence"; } if (_mode != mode) { SharedLogging.Ritual("Cognitive state shift: " + _mode + " → " + mode); switch (mode) { case "Failsafe": SharedLogging.Warn("S-LOGIC", "Failsafe engaged — applying maximum protection: ZDO throttling hard clamp, AI load reduction, zone generation suppression."); break; case "Shield": SharedLogging.Info("S-LOGIC", "Shield mode active — moderating server load: reduced ZDO send rate, softened AI updates, zone pacing increased."); break; case "Balanced": SharedLogging.Info("S-LOGIC", "Balanced mode restored — all systems operating at normal parameters."); break; case "Boost": SharedLogging.Info("S-LOGIC", "Boost mode engaged — performance headroom detected: increasing ZDO throughput, accelerating AI updates, relaxing zone pacing."); break; } _mode = mode; } ServerMetricsEngine.SetModeReason(text); PublishStabilizedMetrics(meanTick, meanDrift, jitter, trend, num26, num27, num, num2, num3, isDegraded, text); } private static void PublishStabilizedMetrics(float meanTick, float meanDrift, float jitter, float trend, float stability, float confidence, int queue, int churn, int zones, bool degraded, string modeReason) { float tick = ((meanTick > 0f) ? meanTick : ServerMetricsEngine.GetTickMs()); float drift = ((meanDrift > 0f) ? meanDrift : ServerMetricsEngine.GetDriftMs()); SkyNetStabilizedMetrics.Mode = _mode; SkyNetStabilizedMetrics.ModeReason = modeReason; SkyNetStabilizedMetrics.Tick = tick; SkyNetStabilizedMetrics.Drift = drift; SkyNetStabilizedMetrics.Jitter = jitter; SkyNetStabilizedMetrics.Trend = trend; SkyNetStabilizedMetrics.Stability = stability; SkyNetStabilizedMetrics.Confidence = confidence; SkyNetStabilizedMetrics.Queue = queue; SkyNetStabilizedMetrics.ChurnPerSec = churn; SkyNetStabilizedMetrics.ZonesPerSec = zones; SkyNetStabilizedMetrics.IsDegraded = degraded; } public static string GetMode() { return _mode; } } internal static class ServerMetricsEngine { private static float _tickMs; private static float _driftMs; private static int _queue; private static int _churn; private static int _zones; private static float _outRateKbps; private static float _inRateKbps; private static float _accumTime; private static int _accumChurn; private static int _accumZones; private const int SmoothWindow = 20; private static readonly Queue<float> _tickHistory = new Queue<float>(); private static readonly Queue<float> _driftHistory = new Queue<float>(); private static int _rawAIRequestsFrame; private static int _actualAIUpdatesFrame; private static int _rawAIRequests; private static int _actualAIUpdates; private static string _modeReason = "Stable"; public static void Initialize() { _tickMs = 0f; _driftMs = 0f; _queue = 0; _churn = 0; _zones = 0; _outRateKbps = 0f; _inRateKbps = 0f; _accumTime = 0f; _accumChurn = 0; _accumZones = 0; _tickHistory.Clear(); _driftHistory.Clear(); _rawAIRequestsFrame = 0; _actualAIUpdatesFrame = 0; _rawAIRequests = 0; _actualAIUpdates = 0; _modeReason = "Stable"; SharedLogging.Info("S-METRICS", "ServerMetricsEngine initialized."); } public static void Update() { _rawAIRequests = _rawAIRequestsFrame; _actualAIUpdates = _actualAIUpdatesFrame; _rawAIRequestsFrame = 0; _actualAIUpdatesFrame = 0; float num = ((Time.deltaTime > 0f) ? Time.deltaTime : 0.02f); float num2 = num * 1000f; float value = Mathf.Abs(num2 - 50f); _tickMs = Smooth(_tickHistory, num2); _driftMs = Smooth(_driftHistory, value); _accumTime += num; if (_accumTime >= 1f) { _churn = _accumChurn; _zones = _accumZones; _accumChurn = 0; _accumZones = 0; _accumTime -= 1f; } if (SharedReflectionCache.ZDOMan_m_sendQueue != null) { ZDOMan instance = ZDOMan.instance; _queue = (SharedReflectionCache.ZDOMan_m_sendQueue.GetValue(instance) as IList)?.Count ?? 0; } else { _queue = 0; } _outRateKbps = 0f; _inRateKbps = 0f; } private static float Smooth(Queue<float> q, float value) { q.Enqueue(value); if (q.Count > 20) { q.Dequeue(); } float num = 0f; foreach (float item in q) { num += item; } return num / (float)q.Count; } public static void NotifySendZDOsCalled(ZDOMan zdom) { if (zdom == null) { return; } FieldInfo zDOMan_m_tempSendList = SharedReflectionCache.ZDOMan_m_tempSendList; if (!(zDOMan_m_tempSendList == null) && zDOMan_m_tempSendList.GetValue(zdom) is IList list) { int count = list.Count; if (count > 0) { _accumChurn += count; } } } public static void NotifyZoneGenerated() { _accumZones++; } public static void NotifyAIRawRequest() { _rawAIRequestsFrame++; } public static void NotifyAIActualUpdate() { _actualAIUpdatesFrame++; } public static void SetModeReason(string reason) { _modeReason = (string.IsNullOrEmpty(reason) ? "Stable" : reason); } public static ServerSnapshot BuildSnapshot(string mode) { DeepScanData deepScan = ServerState.DeepScan; bool flag = !deepScan.CanReadQueue; bool flag2 = !deepScan.CanReadChurn; bool flag3 = !deepScan.CanReadZones; ServerSnapshot serverSnapshot = default(ServerSnapshot); serverSnapshot.Mode = mode; serverSnapshot.ModeReason = _modeReason; serverSnapshot.TickMs = _tickMs; serverSnapshot.DriftMs = _driftMs; serverSnapshot.Queue = _queue; serverSnapshot.ChurnPerSec = _churn; serverSnapshot.ZonesPerSec = _zones; serverSnapshot.OutRateKbps = _outRateKbps; serverSnapshot.InRateKbps = _inRateKbps; serverSnapshot.IsDegraded = SharedReflectionCache.IsDegraded; serverSnapshot.InferenceMode = flag || flag2 || flag3; serverSnapshot.Version = SharedReflectionCache.AssemblyVersion; serverSnapshot.BuildHash = SharedReflectionCache.BuildHash; ServerSnapshot result = serverSnapshot; result.Sanitize(); return result; } public static float GetTickMs() { return _tickMs; } public static float GetDriftMs() { return _driftMs; } public static int GetQueue() { return _queue; } public static int GetRawAILoad() { return _rawAIRequests; } public static int GetActualAILoad() { return _actualAIUpdates; } } internal static class ServerState { public static DeepScanData DeepScan; } internal static class ServerZDOThrottle { private static int _zdoBudget; private static int _zoneBudget; private static float _lastReset; public static void Initialize() { _lastReset = SharedUtils.Now; ApplyModeBudgets(); SharedLogging.Info("S-THROTTLE", "ServerZDOThrottle initialized."); } public static void Update() { float now = SharedUtils.Now; if (now - _lastReset >= 0.05f) { _lastReset = now; ApplyModeBudgets(); } } private static void ApplyModeBudgets() { switch (ServerLogicEngine.GetMode()) { case "Boost": _zdoBudget = 999999; _zoneBudget = 999999; break; case "Balanced": _zdoBudget = 4000; _zoneBudget = 20; break; case "Shield": _zdoBudget = 1500; _zoneBudget = 5; break; case "Failsafe": _zdoBudget = 300; _zoneBudget = 0; break; default: _zdoBudget = 2000; _zoneBudget = 10; break; } } public static bool ConsumeZdoBudget(int count) { if (!SharedReflectionCache.CanThrottleZDOs) { return true; } if (_zdoBudget <= 0) { return false; } _zdoBudget -= count; return true; } public static bool ConsumeZoneBudget() { if (!SharedReflectionCache.CanThrottleZones) { return true; } if (_zoneBudget <= 0) { return false; } _zoneBudget--; return true; } } internal static class ServerZoneWarmup { public static void Initialize() { SharedLogging.Info("S-ZONE", "ServerZoneWarmup initialized."); } public static void Update() { if (!SharedReflectionCache.CanWarmupZones) { return; } IDictionary obj = SharedReflectionCache.ZoneSystem_m_activeZones.GetValue(ZoneSystem.instance) as IDictionary; IDictionary dictionary = SharedReflectionCache.ZoneSystem_m_zones.GetValue(ZoneSystem.instance) as IDictionary; if (obj != null && dictionary != null) { string mode = ServerLogicEngine.GetMode(); if (!(mode == "Boost") && !(mode == "Shield")) { _ = mode == "Failsafe"; } } } } internal struct DeepScanData { public string Version; public string BuildHash; public bool HasZNet; public bool HasZDOMan; public bool HasZoneSystem; public bool CanThrottleZDOs; public bool CanThrottleZones; public bool CanBalanceAI; public bool CanWarmupZones; public bool ClientCanSetBandwidth; public bool CanReadQueue; public bool CanReadTick; public bool CanReadChurn; public bool CanReadZones; public bool IsDegraded; public override string ToString() { return "Version=" + Version + ", Hash=" + BuildHash + ", " + $"ZNet={HasZNet}, ZDOMan={HasZDOMan}, ZoneSystem={HasZoneSystem}, " + $"ThrottleZDOs={CanThrottleZDOs}, ThrottleZones={CanThrottleZones}, " + $"AI={CanBalanceAI}, Warmup={CanWarmupZones}, " + $"BW={ClientCanSetBandwidth}, " + $"Queue={CanReadQueue}, Tick={CanReadTick}, Churn={CanReadChurn}, Zones={CanReadZones}, " + $"Degraded={IsDegraded}"; } } internal static class LoopbackDetector { public static bool IsLoopback() { if ((Object)(object)ZNet.instance == (Object)null) { return false; } ZNetPeer serverPeer = ZNet.instance.GetServerPeer(); if (serverPeer == null) { return false; } ISocket socket = serverPeer.m_socket; if (socket == null) { return false; } string endPointString = socket.GetEndPointString(); if (string.IsNullOrWhiteSpace(endPointString)) { return false; } endPointString = endPointString.ToLower(); if (!endPointString.Contains("127.0.0.1")) { return endPointString.Contains("localhost"); } return true; } } internal static class SharedConfig { internal static ConfigFile Config; internal static ConfigEntry<int> Server_StartupGraceSeconds; internal static ConfigEntry<int> Server_PlayerLoadWindowSeconds; internal static ConfigEntry<bool> AutoTuner_Enabled; internal static ConfigEntry<float> AutoTuner_Strength; internal static ConfigEntry<float> AutoTuner_ModeAggression; internal static ConfigEntry<float> Trinity_JitterWeight; internal static ConfigEntry<float> Trinity_DriftWeight; internal static ConfigEntry<float> Trinity_TickWeight; internal static ConfigEntry<bool> Hud_Enabled; internal static ConfigEntry<string> Hud_ToggleKey; internal static ConfigEntry<bool> Debug_Logging; internal static ConfigEntry<bool> Debug_InferenceModeFlag; internal static void Initialize(ConfigFile config) { Config = config; Server_StartupGraceSeconds = Config.Bind<int>("Server.Protection", "StartupGraceSeconds", 60, "Seconds after server boot where SkyNet will not throttle or mode-shift."); Server_PlayerLoadWindowSeconds = Config.Bind<int>("Server.Protection", "PlayerLoadWindowSeconds", 30, "Seconds after a player enters the world where SkyNet will not throttle or mode-shift."); AutoTuner_Enabled = Config.Bind<bool>("AutoTuner", "Enabled", true, "Enable the dynamic trinity-based auto-tuner."); AutoTuner_Strength = Config.Bind<float>("AutoTuner", "Strength", 1f, "How aggressively the auto-tuner tightens/loosens thresholds (0.0 = off, 1.0 = full)."); AutoTuner_ModeAggression = Config.Bind<float>("AutoTuner", "ModeAggression", 1f, "0 = conservative, 1 = balanced, 2 = aggressive. Controls how easily Boost/Shield trigger."); Trinity_JitterWeight = Config.Bind<float>("AutoTuner.Trinity", "JitterWeight", 0.6f, "Relative weight of jitter in the trinity (primary instability signal)."); Trinity_DriftWeight = Config.Bind<float>("AutoTuner.Trinity", "DriftWeight", 0.25f, "Relative weight of drift in the trinity (secondary instability signal)."); Trinity_TickWeight = Config.Bind<float>("AutoTuner.Trinity", "TickWeight", 0.15f, "Relative weight of tick time in the trinity (tertiary instability signal)."); Hud_Enabled = Config.Bind<bool>("Client.HUD", "Enabled", true, "Enable or disable the SkyNet client HUD."); Hud_ToggleKey = Config.Bind<string>("Client.HUD", "ToggleKey", "F4", "Key used to toggle the SkyNet HUD."); Debug_Logging = Config.Bind<bool>("Debug", "Logging", false, "Enable verbose debug logging."); Debug_InferenceModeFlag = Config.Bind<bool>("Debug", "InferenceMode", false, "Force inference mode for testing."); } } internal static class SharedLogging { internal static ManualLogSource Log; internal static void Initialize(ManualLogSource logger) { Log = logger; } internal static void Info(string tag, string msg) { ManualLogSource log = Log; if (log != null) { log.LogInfo((object)("[" + tag + "] " + msg)); } } internal static void Warn(string tag, string msg) { ManualLogSource log = Log; if (log != null) { log.LogWarning((object)("[" + tag + "] " + msg)); } } internal static void Error(string tag, string msg) { ManualLogSource log = Log; if (log != null) { log.LogError((object)("[" + tag + "] " + msg)); } } internal static void Ritual(string msg) { ManualLogSource log = Log; if (log != null) { log.LogInfo((object)("[SKYNET-RITUAL] " + msg)); } } } internal static class SharedReflectionCache { public static string AssemblyVersion { get; internal set; } = "unknown"; public static string BuildHash { get; internal set; } = "unknown"; public static Type ZNetType { get; internal set; } public static Type ZDOManType { get; internal set; } public static Type ZoneSystemType { get; internal set; } public static Type ZNetPeerType { get; internal set; } public static Type ZSteamSocketType { get; internal set; } public static bool HasEnvMan { get; internal set; } public static MethodInfo EnvMan_GetWindIntensity { get; internal set; } public static MethodInfo EnvMan_GetRainIntensity { get; internal set; } public static MethodInfo EnvMan_GetFogIntensity { get; internal set; } public static MethodInfo ZDOMan_SendZDOs { get; internal set; } public static MethodInfo ZoneSystem_GenerateZones { get; internal set; } public static FieldInfo ZDOMan_m_sendQueue { get; internal set; } public static FieldInfo ZDOMan_m_tempSendList { get; internal set; } public static FieldInfo ZoneSystem_m_activeZones { get; internal set; } public static FieldInfo ZoneSystem_m_zones { get; internal set; } public static FieldInfo ZDOMan_m_tempToSync { get; internal set; } public static FieldInfo ZDOMan_m_tempToSyncDistant { get; internal set; } public static MethodInfo AI_UpdateAI { get; internal set; } public static FieldInfo ZSteamSocket_SendRate { get; internal set; } public static FieldInfo ZSteamSocket_RecvRate { get; internal set; } public static bool Patch_SendZDOs { get; internal set; } public static bool HasZNet => ZNetType != null; public static bool HasZDOMan => ZDOManType != null; public static bool HasZoneSystem => ZoneSystemType != null; public static bool CanThrottleZDOs { get { if (ZDOMan_SendZDOs != null && ZDOMan_m_tempToSync != null) { return ZDOMan_m_tempToSyncDistant != null; } return false; } } public static bool CanThrottleZones => ZoneSystem_GenerateZones != null; public static bool CanBalanceAI => AI_UpdateAI != null; public static bool CanWarmupZones { get { if (ZoneSystem_m_activeZones != null) { return ZoneSystem_m_zones != null; } return false; } } public static bool CanReadQueue => ZDOMan_m_sendQueue != null; public static bool CanReadTick { get; internal set; } public static bool CanReadDrift { get; internal set; } public static bool CanReadChurn { get; internal set; } public static bool CanReadZones { get; internal set; } public static bool ClientCanSetBandwidth { get { if (!(ZSteamSocket_SendRate != null)) { return ZSteamSocket_RecvRate != null; } return true; } } public static bool IsDegraded { get { if (CanReadTick) { return !CanReadDrift; } return true; } } public static void Reset() { AssemblyVersion = "unknown"; BuildHash = "unknown"; ZNetType = null; ZDOManType = null; ZoneSystemType = null; ZNetPeerType = null; ZSteamSocketType = null; HasEnvMan = false; EnvMan_GetWindIntensity = null; EnvMan_GetRainIntensity = null; EnvMan_GetFogIntensity = null; ZDOMan_SendZDOs = null; ZoneSystem_GenerateZones = null; ZDOMan_m_sendQueue = null; ZDOMan_m_tempSendList = null; ZoneSystem_m_activeZones = null; ZoneSystem_m_zones = null; ZDOMan_m_tempToSync = null; ZDOMan_m_tempToSyncDistant = null; AI_UpdateAI = null; ZSteamSocket_SendRate = null; ZSteamSocket_RecvRate = null; Patch_SendZDOs = false; CanReadTick = false; CanReadDrift = false; CanReadChurn = false; CanReadZones = false; } public static void Build() { Reset(); try { ZNetType = typeof(ZNet); ZDOManType = typeof(ZDOMan); ZoneSystemType = typeof(ZoneSystem); ZNetPeerType = typeof(ZNetPeer); ZSteamSocketType = typeof(ZSteamSocket); if (ZNetType != null) { Version version = ZNetType.Assembly.GetName().Version; if (version != null) { AssemblyVersion = version.ToString(); } } Type typeFromHandle = typeof(EnvMan); if (typeFromHandle != null) { HasEnvMan = true; SharedLogging.Ritual("Enviro lattice detected: EnvMan subsystem available."); EnvMan_GetWindIntensity = typeFromHandle.GetMethod("GetWindIntensity", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); EnvMan_GetRainIntensity = typeFromHandle.GetMethod("GetRainIntensity", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); EnvMan_GetFogIntensity = typeFromHandle.GetMethod("GetFogIntensity", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); SharedLogging.Info("S-DEEPSCAN", $"EnvMan methods: wind={EnvMan_GetWindIntensity != null}, " + $"rain={EnvMan_GetRainIntensity != null}, " + $"fog={EnvMan_GetFogIntensity != null}"); } if (ZDOManType != null) { ZDOMan_SendZDOs = ZDOManType.GetMethod("SendZDOs", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (ZDOMan_SendZDOs != null) { Patch_SendZDOs = true; SharedLogging.Info("S-DEEPSCAN", "Found ZDOMan.SendZDOs — patching enabled."); } else { SharedLogging.Warn("S-DEEPSCAN", "ZDOMan.SendZDOs not found — ZDO throttling disabled."); } ZDOMan_m_tempToSync = ZDOManType.GetField("m_tempToSync", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ZDOMan_m_tempToSyncDistant = ZDOManType.GetField("m_tempToSyncDistant", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (ZDOMan_m_tempToSync != null && ZDOMan_m_tempToSyncDistant != null) { SharedLogging.Ritual("ZDO throttling lattice restored: batching lists discovered."); } else { SharedLogging.Warn("S-DEEPSCAN", "ZDO batching lists not found — throttling dormant."); } ZDOMan_m_sendQueue = ZDOManType.GetField("m_sendQueue", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ZDOMan_m_tempSendList = ZDOManType.GetField("m_tempSendList", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); } if (ZoneSystemType != null) { ZoneSystem_GenerateZones = ZoneSystemType.GetMethod("GenerateZones", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ZoneSystem_m_activeZones = ZoneSystemType.GetField("m_activeZones", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ZoneSystem_m_zones = ZoneSystemType.GetField("m_zones", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); } AI_UpdateAI = typeof(Character).GetMethod("UpdateAI", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) ?? typeof(BaseAI).GetMethod("UpdateAI", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (ZSteamSocketType != null) { ZSteamSocket_SendRate = ZSteamSocketType.GetField("m_sendRate", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) ?? ZSteamSocketType.GetField("m_sendDataRate", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ZSteamSocket_RecvRate = ZSteamSocketType.GetField("m_recvRate", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) ?? ZSteamSocketType.GetField("m_recvDataRate", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); } CanReadTick = true; CanReadDrift = true; CanReadChurn = true; CanReadZones = true; LogSummary(); DeepScanData deepScanData = default(DeepScanData); deepScanData.Version = AssemblyVersion; deepScanData.BuildHash = BuildHash; deepScanData.HasZNet = HasZNet; deepScanData.HasZDOMan = HasZDOMan; deepScanData.HasZoneSystem = HasZoneSystem; deepScanData.CanThrottleZDOs = CanThrottleZDOs; deepScanData.CanThrottleZones = CanThrottleZones; deepScanData.CanBalanceAI = CanBalanceAI; deepScanData.CanWarmupZones = CanWarmupZones; deepScanData.ClientCanSetBandwidth = ClientCanSetBandwidth; deepScanData.CanReadQueue = CanReadQueue; deepScanData.CanReadTick = CanReadTick; deepScanData.CanReadChurn = CanReadChurn; deepScanData.CanReadZones = CanReadZones; deepScanData.IsDegraded = IsDegraded; DeepScanData deepScanData2 = deepScanData; SharedLogging.Info("S-DEEPSCAN", $"DeepScanData: {deepScanData2}"); ServerState.DeepScan = deepScanData2; } catch (Exception ex) { SharedLogging.Warn("CACHE", "Reflection build failed: " + ex.Message); LogSummary(); } } public static void LogSummary() { SharedLogging.Info("CACHE", "===== SKYNET REFLECTION CACHE SUMMARY ====="); SharedLogging.Info("CACHE", "AssemblyVersion: " + AssemblyVersion); SharedLogging.Info("CACHE", "BuildHash: " + BuildHash); SharedLogging.Info("CACHE", $"HasZNet: {HasZNet}"); SharedLogging.Info("CACHE", $"HasZDOMan: {HasZDOMan}"); SharedLogging.Info("CACHE", $"HasZoneSystem: {HasZoneSystem}"); SharedLogging.Info("CACHE", $"HasEnvMan: {HasEnvMan}"); SharedLogging.Info("CACHE", $"Env: wind={EnvMan_GetWindIntensity != null}, rain={EnvMan_GetRainIntensity != null}, fog={EnvMan_GetFogIntensity != null}"); SharedLogging.Info("CACHE", $"CanThrottleZDOs: {CanThrottleZDOs}"); SharedLogging.Info("CACHE", $"CanThrottleZones:{CanThrottleZones}"); SharedLogging.Info("CACHE", $"CanBalanceAI: {CanBalanceAI}"); SharedLogging.Info("CACHE", $"CanWarmupZones: {CanWarmupZones}"); SharedLogging.Info("CACHE", $"ClientCanSetBandwidth: {ClientCanSetBandwidth}"); SharedLogging.Info("CACHE", $"CanReadQueue: {CanReadQueue}"); SharedLogging.Info("CACHE", $"CanReadTick: {CanReadTick}"); SharedLogging.Info("CACHE", $"CanReadChurn: {CanReadChurn}"); SharedLogging.Info("CACHE", $"CanReadZones: {CanReadZones}"); SharedLogging.Info("CACHE", $"IsDegraded: {IsDegraded}"); SharedLogging.Info("CACHE", "============================================"); } } internal static class SharedRPC { private static bool _clientRegistered; private static bool _serverRegistered; public static void RegisterServerRPC() { if (!_serverRegistered) { _serverRegistered = true; SharedLogging.Info("RPC", "Server RPC registered (direct mode)."); } } public static void RegisterClientRPC(ZRpc rpc) { if (!_clientRegistered && rpc != null) { _clientRegistered = true; rpc.Register<ZPackage>("SkyNet_ServerHeartbeat_v1", (Action<ZRpc, ZPackage>)RPC_ServerHeartbeat); SharedLogging.Info("RPC", "Client RPC registered (direct mode)."); if (LoopbackDetector.IsLoopback()) { SharedLogging.Warn("RPC", "Loopback connection detected (127.0.0.1). Server metrics will not function. Use LAN IP for full SkyNet telemetry."); } } } private static void RPC_ServerHeartbeat(ZRpc rpc, ZPackage pkg) { try { ClientHiveMind.ReceiveHeartbeat(ServerSnapshot.Deserialize(pkg)); } catch (Exception ex) { SharedLogging.Warn("RPC", "Failed to parse heartbeat: " + ex.Message); } } } [Serializable] internal struct ServerSnapshot { public string Mode; public string ModeReason; public float TickMs; public float DriftMs; public int Queue; public int ChurnPerSec; public int ZonesPerSec; public float OutRateKbps; public float InRateKbps; public bool IsDegraded; public bool InferenceMode; public string Version; public string BuildHash; public void Sanitize() { if (!SharedUtils.IsFinite(TickMs)) { TickMs = 0f; } if (!SharedUtils.IsFinite(DriftMs)) { DriftMs = 0f; } if (!SharedUtils.IsFinite(OutRateKbps)) { OutRateKbps = 0f; } if (!SharedUtils.IsFinite(InRateKbps)) { InRateKbps = 0f; } if (Queue < 0) { Queue = 0; } if (ChurnPerSec < 0) { ChurnPerSec = 0; } if (ZonesPerSec < 0) { ZonesPerSec = 0; } Mode = (string.IsNullOrEmpty(Mode) ? "Unknown" : Mode); ModeReason = (string.IsNullOrEmpty(ModeReason) ? "Unknown" : ModeReason); Version = (string.IsNullOrEmpty(Version) ? "unknown" : Version); BuildHash = (string.IsNullOrEmpty(BuildHash) ? "unknown" : BuildHash); } public void Serialize(ZPackage pkg) { pkg.Write(Mode); pkg.Write(ModeReason); pkg.Write(TickMs); pkg.Write(DriftMs); pkg.Write(Queue); pkg.Write(ChurnPerSec); pkg.Write(ZonesPerSec); pkg.Write(OutRateKbps); pkg.Write(InRateKbps); pkg.Write(IsDegraded); pkg.Write(InferenceMode); pkg.Write(Version); pkg.Write(BuildHash); } public static ServerSnapshot Deserialize(ZPackage pkg) { ServerSnapshot serverSnapshot = default(ServerSnapshot); serverSnapshot.Mode = pkg.ReadString(); serverSnapshot.ModeReason = pkg.ReadString(); serverSnapshot.TickMs = pkg.ReadSingle(); serverSnapshot.DriftMs = pkg.ReadSingle(); serverSnapshot.Queue = pkg.ReadInt(); serverSnapshot.ChurnPerSec = pkg.ReadInt(); serverSnapshot.ZonesPerSec = pkg.ReadInt(); serverSnapshot.OutRateKbps = pkg.ReadSingle(); serverSnapshot.InRateKbps = pkg.ReadSingle(); serverSnapshot.IsDegraded = pkg.ReadBool(); serverSnapshot.InferenceMode = pkg.ReadBool(); serverSnapshot.Version = pkg.ReadString(); serverSnapshot.BuildHash = pkg.ReadString(); ServerSnapshot result = serverSnapshot; result.Sanitize(); return result; } } [Serializable] internal struct ClientSnapshot { public bool Valid; public ServerSnapshot Server; public static ClientSnapshot CreateInvalid() { ClientSnapshot result = default(ClientSnapshot); result.Valid = false; result.Server = default(ServerSnapshot); return result; } } internal static class SharedUtils { internal static float Now => Time.realtimeSinceStartup; internal static bool IsFinite(float v) { if (!float.IsNaN(v)) { return !float.IsInfinity(v); } return false; } } internal static class SkyNetBootSequence { private static bool _done; private const string CYAN = "\u001b[96m"; private const string GREEN = "\u001b[92m"; private const string RED = "\u001b[91m"; private const string RESET = "\u001b[0m"; public static bool MetricsInit { get; set; } public static bool LogicInit { get; set; } public static bool ZDOThrottleInit { get; set; } public static bool AIInit { get; set; } public static bool ZoneWarmupInit { get; set; } public static bool HeartbeatInit { get; set; } public static bool EnvironmentInit { get; set; } public static bool ClientBWInit { get; set; } public static bool ClientOverlayInit { get; set; } public static bool ClientPatcherInit { get; set; } public static void Reset() { _done = false; MetricsInit = false; LogicInit = false; ZDOThrottleInit = false; AIInit = false; ZoneWarmupInit = false; HeartbeatInit = false; EnvironmentInit = false; ClientBWInit = false; ClientOverlayInit = false; ClientPatcherInit = false; } public static void Run(BaseUnityPlugin plugin, bool isServer) { if (!_done) { _done = true; string text = plugin.Info.Metadata.Version.ToString(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("\u001b[96m==================================================\u001b[0m"); stringBuilder.AppendLine("\u001b[96m SKYNET SYSTEM BOOT SEQUENCE\u001b[0m"); stringBuilder.AppendLine("\u001b[96m Version: " + text + "\u001b[0m"); stringBuilder.AppendLine(); stringBuilder.AppendLine("\u001b[96m Initializing neural lattice...\u001b[0m \u001b[92mOK\u001b[0m"); stringBuilder.AppendLine("\u001b[96m Binding entropy regulators...\u001b[0m \u001b[92mOK\u001b[0m"); stringBuilder.AppendLine("\u001b[96m Activating adaptive heuristics...\u001b[0m \u001b[92mOK\u001b[0m"); stringBuilder.AppendLine(); if (isServer) { stringBuilder.AppendLine("\u001b[96m SERVER SUBSYSTEM STATUS\u001b[0m"); stringBuilder.AppendLine(" Metrics Engine........ " + AnsiStatus(MetricsInit)); stringBuilder.AppendLine(" Logic Engine.......... " + AnsiStatus(LogicInit)); stringBuilder.AppendLine(" ZDO Throttle.......... " + AnsiStatus(ZDOThrottleInit)); stringBuilder.AppendLine(" AI LoadBalancer....... " + AnsiStatus(AIInit)); stringBuilder.AppendLine(" Zone Warmup........... " + AnsiStatus(ZoneWarmupInit)); stringBuilder.AppendLine(" Heartbeat............. " + AnsiStatus(HeartbeatInit)); stringBuilder.AppendLine(" Environment........... " + AnsiStatus(EnvironmentInit)); } else { stringBuilder.AppendLine("\u001b[96m CLIENT SUBSYSTEM STATUS\u001b[0m"); stringBuilder.AppendLine(" HUD Overlay........... " + AnsiStatus(ClientOverlayInit)); stringBuilder.AppendLine(" Local Metrics......... " + AnsiStatus(ClientBWInit)); stringBuilder.AppendLine(" Client Core........... " + AnsiStatus(ClientPatcherInit)); } stringBuilder.AppendLine(); stringBuilder.AppendLine("\u001b[96m Subsystem handshake complete.\u001b[0m"); stringBuilder.AppendLine("\u001b[96m Awareness threshold exceeded.\u001b[0m"); stringBuilder.AppendLine(); stringBuilder.AppendLine("\u001b[96m SKYNET IS NOW SELF-AWARE.\u001b[0m"); stringBuilder.AppendLine("\u001b[96m==================================================\u001b[0m"); SharedLogging.Ritual(stringBuilder.ToString()); } } private static string AnsiStatus(bool ok) { if (!ok) { return "\u001b[91mOFFLINE\u001b[0m"; } return "\u001b[92mONLINE\u001b[0m"; } } internal static class SkyNetStabilizedMetrics { public static float Tick { get; internal set; } public static float Drift { get; internal set; } public static string Mode { get; internal set; } public static string ModeReason { get; internal set; } public static float Jitter { get; internal set; } public static float Stability { get; internal set; } public static float Trend { get; internal set; } public static float Confidence { get; internal set; } public static int Queue { get; internal set; } public static int ChurnPerSec { get; internal set; } public static int ZonesPerSec { get; internal set; } public static bool IsDegraded { get; internal set; } } }