Decompiled source of SkelaahsWildMoons v2.4.10
TheWildSkelaah.ChronosAnomaly.dll
Decompiled 12 hours agousing System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using TheWildSkelaah.ChronosAnomaly.NetcodePatcher; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: AssemblyCompany("TheWildSkelaah.ChronosAnomaly")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.2.0")] [assembly: AssemblyInformationalVersion("1.0.2")] [assembly: AssemblyProduct("Chronos_Anomaly")] [assembly: AssemblyTitle("TheWildSkelaah.ChronosAnomaly")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] internal class <Module> { static <Module>() { } } namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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; } } } [HarmonyPatch(typeof(PlayerControllerB), "Awake")] public static class PlayerControllerBPatch { [HarmonyPostfix] public static void Postfix() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown if ((Object)(object)GameObject.Find("TimeAnomaly") == (Object)null) { GameObject val = new GameObject("TimeAnomaly"); Object.DontDestroyOnLoad((Object)(object)val); TimeAnomaly timeAnomaly = val.AddComponent<TimeAnomaly>(); timeAnomaly.Initialize(); } } } public class TimeAnomaly : MonoBehaviour { private bool isActive = false; private Coroutine? anomalycheck; public void Initialize() { ((MonoBehaviour)this).StartCoroutine(ChronosCheck()); } private float GetMeaningfulTimeChange(bool isStrong, bool reverse) { return (!isStrong) ? (reverse ? Random.Range(-60f, -15f) : Random.Range(30f, 45f)) : (reverse ? Random.Range(-145f, -75f) : Random.Range(65f, 145f)); } private IEnumerator ChronosCheck() { while (true) { if ((Object)(object)StartOfRound.Instance != (Object)null && (Object)(object)StartOfRound.Instance.currentLevel != (Object)null) { string planetName = StartOfRound.Instance.currentLevel.PlanetName; bool isOnChronos = planetName == "47 Chronos" && StartOfRound.Instance.shipHasLanded; if (isOnChronos && !isActive) { Debug.Log((object)"Moon detected as 47 Chronos. Starting anomaly countdown."); isActive = true; if (anomalycheck != null) { ((MonoBehaviour)this).StopCoroutine(anomalycheck); anomalycheck = null; } anomalycheck = ((MonoBehaviour)this).StartCoroutine(CountdownToAnomaly()); } else if (!isOnChronos && isActive) { Debug.Log((object)"Left Chronos or ship departed. Disabling anomalies."); isActive = false; if (anomalycheck != null) { ((MonoBehaviour)this).StopCoroutine(anomalycheck); anomalycheck = null; } } } yield return (object)new WaitForSeconds(5f); } } private IEnumerator CountdownToAnomaly() { while (isActive) { float currentTime = TimeOfDay.Instance.currentDayTime; if (currentTime >= 900f) { Debug.Log((object)"Reached 9PM. Disabling anomalies."); isActive = false; anomalycheck = null; break; } if (!StartOfRound.Instance.shipHasLanded) { Debug.Log((object)"Ship leaving. Disabling anomalies."); isActive = false; anomalycheck = null; break; } bool isStrong = currentTime < 480f; for (float cooldown = (isStrong ? Random.Range(120f, 185f) : Random.Range(85f, 145f)); cooldown > 0f; cooldown -= 1f) { if (!isActive || TimeOfDay.Instance.currentDayTime >= 900f) { Debug.Log((object)"Anomaly aborted due to time cutoff."); anomalycheck = null; yield break; } if (cooldown <= 10f) { Debug.Log((object)"10 seconds until next time anomaly!"); } yield return (object)new WaitForSeconds(1f); } TriggerAnomaly(isStrong); } } private void TriggerAnomaly(bool isStrong) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown bool reverse = Random.value < 0.3f; float meaningfulTimeChange = GetMeaningfulTimeChange(isStrong, reverse); TimeOfDay instance = TimeOfDay.Instance; instance.globalTime += meaningfulTimeChange; TimeOfDay instance2 = TimeOfDay.Instance; instance2.currentDayTime += meaningfulTimeChange; TimeOfDay instance3 = TimeOfDay.Instance; instance3.timeUntilDeadline -= meaningfulTimeChange; HUDManager.Instance.ReadDialogue((DialogueSegment[])(object)new DialogueSegment[1] { new DialogueSegment { speakerText = "PILOT COMPUTER - CHRONOS", bodyText = "WARNING! A Time Anomaly has been detected by the Autopilot Clock. Please head outside to synchronize the clock.", waitTime = 9f } }); } } namespace Chronos_Anomaly { [BepInPlugin("TheWildSkelaah.ChronosAnomaly", "Chronos_Anomaly", "1.0.2")] public class Chronos_Anomaly : BaseUnityPlugin { public static Chronos_Anomaly Instance { get; private set; } public static ManualLogSource Logger { get; private set; } internal static Harmony? Harmony { get; set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; NetcodePatcher(); Patch(); Logger.LogInfo((object)"TheWildSkelaah.ChronosAnomaly v1.0.2 has loaded! Better hop on Chronos, or else..."); } internal static void Patch() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown if (Harmony == null) { Harmony = new Harmony("TheWildSkelaah.ChronosAnomaly"); } Logger.LogDebug((object)"Patching..."); Harmony.PatchAll(); Logger.LogDebug((object)"Finished patching!"); } internal static void Unpatch() { Logger.LogDebug((object)"Unpatching..."); Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } Logger.LogDebug((object)"Finished unpatching!"); } private void NetcodePatcher() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); Type[] array = types; foreach (Type type in array) { MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); MethodInfo[] array2 = methods; foreach (MethodInfo methodInfo in array2) { object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length != 0) { methodInfo.Invoke(null, null); } } } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "TheWildSkelaah.ChronosAnomaly"; public const string PLUGIN_NAME = "Chronos_Anomaly"; public const string PLUGIN_VERSION = "1.0.2"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace TheWildSkelaah.ChronosAnomaly.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }
TheWildSkelaah.BilgeTideSystem.dll
Decompiled 12 hours agousing System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using TheWildSkelaah.BilgeTideSystem.NetcodePatcher; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: AssemblyCompany("TheWildSkelaah.BilgeTideSystem")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("0.0.0.0")] [assembly: AssemblyInformationalVersion("0.0.0-dev")] [assembly: AssemblyProduct("BilgeTideSystem")] [assembly: AssemblyTitle("TheWildSkelaah.BilgeTideSystem")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] internal class <Module> { static <Module>() { } } namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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; } } } [HarmonyPatch(typeof(PlayerControllerB), "Awake")] public static class BilgeTideHook { [HarmonyPostfix] public static void Postfix() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown if ((Object)(object)GameObject.Find("BilgeTideWarningSystem") == (Object)null) { GameObject val = new GameObject("BilgeTideWarningSystem"); Object.DontDestroyOnLoad((Object)(object)val); val.AddComponent<BilgeTideHUDWarning>(); Debug.Log((object)"[BilgeTide] System instantiated from PlayerControllerB.Awake"); } } } public class BilgeTideHUDWarning : MonoBehaviour { private bool hasWarned390 = false; private bool hasWarned585 = false; private bool hasWarned810 = false; private bool isBilgeActive = false; private Coroutine monitorCoroutine; private void Start() { ((MonoBehaviour)this).StartCoroutine(BilgeCheck()); } private IEnumerator BilgeCheck() { while (true) { if ((Object)(object)StartOfRound.Instance != (Object)null && (Object)(object)StartOfRound.Instance.currentLevel != (Object)null) { bool isOnBilge = StartOfRound.Instance.shipHasLanded && StartOfRound.Instance.currentLevel.PlanetName == "3 Bilge"; if (isOnBilge && !isBilgeActive) { Debug.Log((object)"[BilgeTide] Entered Bilge. Starting warning system."); isBilgeActive = true; BilgeTideHUDWarning bilgeTideHUDWarning = this; BilgeTideHUDWarning bilgeTideHUDWarning2 = this; BilgeTideHUDWarning bilgeTideHUDWarning3 = this; bool flag = false; bilgeTideHUDWarning3.hasWarned810 = false; bilgeTideHUDWarning.hasWarned390 = (bilgeTideHUDWarning2.hasWarned585 = flag); monitorCoroutine = ((MonoBehaviour)this).StartCoroutine(WarningLoop()); } else if (!isOnBilge && isBilgeActive) { Debug.Log((object)"[BilgeTide] Left Bilge. Resetting."); isBilgeActive = false; ((MonoBehaviour)this).StopCoroutine(monitorCoroutine); monitorCoroutine = null; BilgeTideHUDWarning bilgeTideHUDWarning4 = this; BilgeTideHUDWarning bilgeTideHUDWarning5 = this; BilgeTideHUDWarning bilgeTideHUDWarning6 = this; bool flag = false; bilgeTideHUDWarning6.hasWarned810 = false; bilgeTideHUDWarning4.hasWarned390 = (bilgeTideHUDWarning5.hasWarned585 = flag); } } yield return (object)new WaitForSeconds(3f); } } private IEnumerator WarningLoop() { while (isBilgeActive) { if ((Object)(object)TimeOfDay.Instance != (Object)null) { float time = TimeOfDay.Instance.currentDayTime; if (!hasWarned390 && time >= 390f && time < 400f) { ShowWarning("HIGH"); hasWarned390 = true; } if (!hasWarned585 && time >= 585f && time < 595f) { ShowWarning("LOW"); hasWarned585 = true; } if (!hasWarned810 && time >= 810f && time < 820f) { ShowWarning("HIGH"); hasWarned810 = true; } if (time >= 1260f) { BilgeTideHUDWarning bilgeTideHUDWarning = this; BilgeTideHUDWarning bilgeTideHUDWarning2 = this; BilgeTideHUDWarning bilgeTideHUDWarning3 = this; bool flag = false; bilgeTideHUDWarning3.hasWarned810 = false; bilgeTideHUDWarning.hasWarned390 = (bilgeTideHUDWarning2.hasWarned585 = flag); Debug.Log((object)"[BilgeTide] Reset daily warnings."); } } yield return (object)new WaitForSeconds(1f); } } private void ShowWarning(string tideType) { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown if (!((Object)(object)HUDManager.Instance == (Object)null)) { string bodyText = ((tideType == "HIGH") ? "WARNING! A massive environmental shift has been detected. All personel is instructed to seek highly elevated ground immediately. A HIGH TIDE is coming." : "WARNING! A LOW TIDE has been detected to occur momentarily. Low elevation areas will be accessible to navigate in the following minutes."); HUDManager.Instance.ReadDialogue((DialogueSegment[])(object)new DialogueSegment[1] { new DialogueSegment { speakerText = "PILOT COMPUTER - BILGE", bodyText = bodyText, waitTime = 12f } }); Debug.Log((object)("[BilgeTide] " + tideType + " tide warning shown.")); } } private void OnDisable() { if (monitorCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(monitorCoroutine); } Debug.Log((object)"[BilgeTide] OnDisable called. Cleaned up."); } } namespace BilgeTideSystem { [BepInPlugin("TheWildSkelaah.BilgeTideSystem", "BilgeTideSystem", "1.0.0")] public class BilgeTideSystem : BaseUnityPlugin { public static BilgeTideSystem Instance { get; private set; } internal static ManualLogSource Logger { get; private set; } internal static Harmony? Harmony { get; set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; NetcodePatcher(); Patch(); Logger.LogInfo((object)"TheWildSkelaah.BilgeTideSystem v1.0.0 has loaded!"); } internal static void Patch() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown if (Harmony == null) { Harmony = new Harmony("TheWildSkelaah.BilgeTideSystem"); } Logger.LogDebug((object)"Patching..."); Harmony.PatchAll(); Logger.LogDebug((object)"Finished patching!"); } internal static void Unpatch() { Logger.LogDebug((object)"Unpatching..."); Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } Logger.LogDebug((object)"Finished unpatching!"); } private void NetcodePatcher() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); Type[] array = types; foreach (Type type in array) { MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); MethodInfo[] array2 = methods; foreach (MethodInfo methodInfo in array2) { object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length != 0) { methodInfo.Invoke(null, null); } } } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "TheWildSkelaah.BilgeTideSystem"; public const string PLUGIN_NAME = "BilgeTideSystem"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace TheWildSkelaah.BilgeTideSystem.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }