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 KeysLockDoors v1.1.3
plugins/KeysLockDoors/KeysLockDoors.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using KeysLockDoors.MonoBehaviours; using KeysLockDoors.Patches; using On; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("KeysLockDoors")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("KeysLockDoors")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("7a979f41-95a7-468b-bbda-5f26db59f9f3")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] internal class <Module> { static <Module>() { } } namespace KeysLockDoors { [BepInPlugin("sophisticasean.keyslockdoors", "KeysLockDoors", "0.2.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public const string ModGUID = "sophisticasean.keyslockdoors"; public const string ModName = "KeysLockDoors"; public const string ModVersion = "0.2.0"; public static ManualLogSource logger; private void Awake() { logger = ((BaseUnityPlugin)this).Logger; KeyPatch.Load(); 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); } } } ((BaseUnityPlugin)this).Logger.LogInfo((object)"KeysLockDoors loaded and ready to go."); } } } namespace KeysLockDoors.Patches { public class KeyPatch { public static void Load() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown GameNetworkManager.Start += new hook_Start(GameNetworkManager_Start); KeyItem.ItemActivate += new hook_ItemActivate(KeyItem_ItemActivate); } private static void GameNetworkManager_Start(orig_Start orig, GameNetworkManager self) { orig.Invoke(self); foreach (NetworkPrefab prefab in ((Component)self).GetComponent<NetworkManager>().NetworkConfig.Prefabs.m_Prefabs) { if ((Object)(object)prefab.Prefab.GetComponent<GrabbableObject>() != (Object)null) { Plugin.logger.LogInfo((object)((NetworkBehaviour)prefab.Prefab.GetComponent<GrabbableObject>()).__getTypeName()); if (((NetworkBehaviour)prefab.Prefab.GetComponent<GrabbableObject>()).__getTypeName() == "KeyItem") { KeyItem keyItem = prefab.Prefab.AddComponent<KeyItem>(); } } } } private static void KeyItem_ItemActivate(orig_ItemActivate orig, KeyItem self, bool used, bool buttonDown = true) { //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown bool flag = ((object)GameNetworkManager.Instance.localPlayerController.ItemSlots[GameNetworkManager.Instance.localPlayerController.currentItemSlot]).GetType() == typeof(KeyItem); PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; RaycastHit val = default(RaycastHit); if (!((Object)(object)localPlayerController == (Object)null) && Physics.Raycast(new Ray(((Component)localPlayerController.gameplayCamera).transform.position, ((Component)localPlayerController.gameplayCamera).transform.forward), ref val, 3f, 2816)) { DoorLock component = ((Component)((RaycastHit)(ref val)).transform).GetComponent<DoorLock>(); if ((Object)(object)component != (Object)null && !component.isLocked) { ulong networkObjectId = ((NetworkBehaviour)component).NetworkObjectId; KeyItem val2 = (KeyItem)GameNetworkManager.Instance.localPlayerController.currentlyHeldObjectServer; ((Component)val2).GetComponent<KeyItem>().LockDoor(networkObjectId); component.LockDoor(30f); GameNetworkManager.Instance.localPlayerController.DespawnHeldObject(); } else { orig.Invoke(self, used, buttonDown); } } } } } namespace KeysLockDoors.MonoBehaviours { public class KeyItem : NetworkBehaviour { public void LockDoor(ulong doorID) { LockDoorServerRpc(doorID); } [ServerRpc(RequireOwnership = false)] public void LockDoorServerRpc(ulong doorID) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1185374495u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, doorID); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1185374495u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { LockDoorClientRpc(doorID); } } } [ClientRpc] public void LockDoorClientRpc(ulong doorID) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(267027776u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, doorID); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 267027776u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } DoorLock[] array = Object.FindObjectsOfType<DoorLock>(); foreach (DoorLock val3 in array) { if (((NetworkBehaviour)val3).NetworkObjectId == doorID) { Plugin.logger.LogInfo((object)"found door to lock, locking door"); val3.LockDoor(30f); } } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [RuntimeInitializeOnLoadMethod] internal static void InitializeRPCS_KeyItem() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown NetworkManager.__rpc_func_table.Add(1185374495u, new RpcReceiveHandler(__rpc_handler_1185374495)); NetworkManager.__rpc_func_table.Add(267027776u, new RpcReceiveHandler(__rpc_handler_267027776)); } private static void __rpc_handler_1185374495(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { ulong doorID = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref doorID); target.__rpc_exec_stage = (__RpcExecStage)1; ((KeyItem)(object)target).LockDoorServerRpc(doorID); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_267027776(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { ulong doorID = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref doorID); target.__rpc_exec_stage = (__RpcExecStage)2; ((KeyItem)(object)target).LockDoorClientRpc(doorID); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "KeyItem"; } } }