using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using HarmonyLib; using LevelGeneration; using Microsoft.CodeAnalysis; using SNetwork; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("DoorSyncFix")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+ac125d677444bad658ca4ed490925edc2c995e01")] [assembly: AssemblyProduct("DoorSyncFix")] [assembly: AssemblyTitle("DoorSyncFix")] [assembly: AssemblyVersion("1.0.0.0")] 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; } } } namespace DoorSyncFix { internal static class DinoLogger { private static ManualLogSource logger = Logger.CreateLogSource("DoorSyncFix"); public static void Log(string format, params object[] args) { Log(string.Format(format, args)); } public static void Log(string str) { if (logger != null) { logger.Log((LogLevel)8, (object)str); } } public static void Warning(string format, params object[] args) { Warning(string.Format(format, args)); } public static void Warning(string str) { if (logger != null) { logger.Log((LogLevel)4, (object)str); } } public static void Error(string format, params object[] args) { Error(string.Format(format, args)); } public static void Error(string str) { if (logger != null) { logger.Log((LogLevel)2, (object)str); } } public static void Debug(string format, params object[] args) { Debug(string.Format(format, args)); } public static void Debug(string str) { if (logger != null) { logger.Log((LogLevel)32, (object)str); } } } [HarmonyPatch] internal static class DoorPatches { private static bool _inHostInteract; [HarmonyPatch(typeof(LG_Door_Sync), "AttemptDoorInteraction")] [HarmonyPrefix] private static void Pre_DoorInteraction() { _inHostInteract = true; } [HarmonyPatch(typeof(LG_Door_Sync), "AttemptDoorInteraction")] [HarmonyPostfix] private static void Post_DoorInteraction() { _inHostInteract = false; } [HarmonyPatch(typeof(LG_Door_Sync), "AttemptInteract")] [HarmonyPrefix] [HarmonyWrapSafe] private static bool VerifyDoorInteract(LG_Door_Sync __instance, pDoorInteraction interaction) { //IL_0007: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //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) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected I4, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Invalid comparison between Unknown and I4 //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Invalid comparison between Unknown and I4 //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Invalid comparison between Unknown and I4 if (_inHostInteract || interaction.isPlayerIntertaction || !SNet.IsMaster) { return true; } if ((Object)(object)((Component)__instance).GetComponent() == (Object)null) { return true; } eDoorStatus status = __instance.GetCurrentSyncState().status; eDoorInteractionType type = interaction.type; switch ((int)type) { default: if ((int)type != 11) { break; } goto case 0; case 5: return IsLocked(status); case 4: return (int)status == 5 || (int)status == 4; case 0: case 6: return true; case 1: case 2: case 3: break; } return false; } private static bool IsLocked(eDoorStatus status) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Invalid comparison between Unknown and I4 //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Invalid comparison between Unknown and I4 if ((int)status == 3 || status - 6 <= 1 || (int)status == 15) { return true; } return false; } } [BepInPlugin("Dinorush.DoorSyncFix", "DoorSyncFix", "1.0.0")] internal sealed class EntryPoint : BasePlugin { public const string MODNAME = "DoorSyncFix"; public override void Load() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) new Harmony("DoorSyncFix").PatchAll(); ((BasePlugin)this).Log.LogMessage((object)"Loaded DoorSyncFix"); } } }