Please disclose if your mod was created primarily 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 LethalToolbox v1.0.4
LethalToolbox.dll
Decompiled 2 years 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 BepInEx; using BepInEx.Logging; using DunGen.Graph; using GameNetcodeStuff; using HarmonyLib; using LethalLevelLoader; using LethalToolbox; using LethalToolbox.NetcodePatcher; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.Animations; using UnityEngine.Events; using UnityEngine.SceneManagement; [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("DissonanceVoip")] [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("LethalToolbox")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("A Custom API to support the manual and dynamic integration of custom levels and dungeons in Lethal Company.")] [assembly: AssemblyFileVersion("1.1.0.0")] [assembly: AssemblyInformationalVersion("1.1.0+649eadb42b73685beebedb0e19cd4fc6850a4a9c")] [assembly: AssemblyProduct("LethalToolbox")] [assembly: AssemblyTitle("LethalToolbox")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace LethalToolkit { [BepInPlugin("imabatby.lethaltoolbox", "LethalToolbox", "1.0.4")] [BepInDependency(/*Could not decode attribute arguments.*/)] internal class Plugin : BaseUnityPlugin { public const string ModGUID = "imabatby.lethaltoolbox"; public const string ModName = "LethalToolbox"; public const string ModVersion = "1.0.4"; public static Plugin Instance; internal static readonly Harmony Harmony = new Harmony("imabatby.lethaltoolbox"); internal static ManualLogSource logger; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } logger = ((BaseUnityPlugin)this).Logger; ((BaseUnityPlugin)this).Logger.LogInfo((object)"LethalToolbox loaded!!"); NetcodePatch(); SceneManager.sceneLoaded += OnSceneLoaded; } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { if (((Scene)(ref scene)).name == "SampleSceneRelay") { Data.GetPlayerObjects(); } } private void NetcodePatch() { try { 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); } } } } catch { Debug.Log((object)"NetcodePatcher did a big fucksie wuckise!"); } } } } namespace LethalToolbox { public class HurtPlayer : NetworkBehaviour { public enum RagdollType { Default, HeadBurst, Spring, Electrocuted, ComedyMask, TragedyMask, Burnt } public int damage; public float cooldown; public Vector3 playerForceVelocity = Vector3.zero; [Space(10f)] public bool spawnBody; public CauseOfDeath causeOfDeath = (CauseOfDeath)0; public RagdollType bodyType = RagdollType.Default; private bool isOnCooldown = false; public void KillPlayer(PlayerControllerB player) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000f: 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_0022: Unknown result type (might be due to invalid IL or missing references) player.KillPlayer(playerForceVelocity, spawnBody, causeOfDeath, (int)bodyType, default(Vector3)); } public void DamagePlayer(PlayerControllerB player) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) if (!isOnCooldown) { ((MonoBehaviour)this).StartCoroutine(StartCooldown(cooldown)); int num = damage; CauseOfDeath val = causeOfDeath; Vector3 val2 = playerForceVelocity; player.DamagePlayer(num, true, true, val, (int)bodyType, false, val2); } } public IEnumerator StartCooldown(float cooldown) { isOnCooldown = true; yield return (object)new WaitForSeconds(cooldown); isOnCooldown = false; } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "HurtPlayer"; } } public class DynamicSpawnSyncedObject : SpawnSyncedObject { private void Awake() { if ((Object)(object)base.spawnPrefab == (Object)null) { ((Component)this).gameObject.SetActive(false); } } public void AwakeWithReference(ExtendedContent extendedContent) { ExtendedItem val = (ExtendedItem)(object)((extendedContent is ExtendedItem) ? extendedContent : null); if (val != null) { base.spawnPrefab = val.Item.spawnPrefab; } else { ExtendedEnemyType val2 = (ExtendedEnemyType)(object)((extendedContent is ExtendedEnemyType) ? extendedContent : null); if (val2 != null) { base.spawnPrefab = val2.EnemyType.enemyPrefab; } } if ((Object)(object)base.spawnPrefab != (Object)null) { ((Component)this).gameObject.SetActive(true); } } } public class MoveObject : NetworkBehaviour { public float moveSpeed; public List<Vector3> targetPositions = new List<Vector3>(); private NetworkVariable<int> networkedTargetPositionsIndex = new NetworkVariable<int>(0, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0); private int targetPositionsIndex { get { return networkedTargetPositionsIndex.Value; } set { networkedTargetPositionsIndex.Value = value; } } public void Update() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) ((Component)this).transform.position = Vector3.Lerp(((Component)this).transform.position, targetPositions[targetPositionsIndex], Time.deltaTime * moveSpeed); } public void TogglePositionForward(GameObject gameObject) { TogglePositionServerRpc(isForward: true); } public void TogglePositionBackward(GameObject gameObject) { TogglePositionServerRpc(isForward: false); } [ServerRpc] public void TogglePositionServerRpc(bool isForward) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(4285485337u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref isForward, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 4285485337u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost)) { return; } if (isForward) { Debug.Log((object)"Moving Forward"); if (targetPositionsIndex != targetPositions.Count - 1) { targetPositionsIndex++; } else { targetPositionsIndex = 0; } } else { Debug.Log((object)"Moving Backward"); if (targetPositionsIndex == 0) { targetPositionsIndex = targetPositions.Count - 1; } else { targetPositionsIndex--; } } } protected override void __initializeVariables() { if (networkedTargetPositionsIndex == null) { throw new Exception("MoveObject.networkedTargetPositionsIndex cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)networkedTargetPositionsIndex).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)networkedTargetPositionsIndex, "networkedTargetPositionsIndex"); base.NetworkVariableFields.Add((NetworkVariableBase)(object)networkedTargetPositionsIndex); ((NetworkBehaviour)this).__initializeVariables(); } [RuntimeInitializeOnLoadMethod] internal static void InitializeRPCS_MoveObject() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown NetworkManager.__rpc_func_table.Add(4285485337u, new RpcReceiveHandler(__rpc_handler_4285485337)); } private static void __rpc_handler_4285485337(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 NetworkManager networkManager = target.NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } } else { bool isForward = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref isForward, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((MoveObject)(object)target).TogglePositionServerRpc(isForward); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "MoveObject"; } } public class ParentObject : NetworkBehaviour { public bool checkForNetworkObjects = true; public List<ParentConstraint> currentConstraints = new List<ParentConstraint>(); public List<GameObject> registeredParents = new List<GameObject>(); public Vector3 lastFramePosition; public void ParentGameObject(GameObject newChild) { PlayerControllerB componentInParent = ((Component)this).GetComponentInParent<PlayerControllerB>(); if ((Object)(object)componentInParent != (Object)null) { newChild = ((Component)componentInParent).gameObject; } if (!registeredParents.Contains(newChild)) { registeredParents.Add(newChild); } } public void UnparentGameObject(GameObject currentChild) { PlayerControllerB componentInParent = ((Component)this).GetComponentInParent<PlayerControllerB>(); if ((Object)(object)componentInParent != (Object)null) { currentChild = ((Component)componentInParent).gameObject; } if (registeredParents.Contains(currentChild)) { registeredParents.Add(currentChild); } } public void FixedUpdate() { //IL_002a: 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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) foreach (GameObject registeredParent in registeredParents) { if ((Object)(object)registeredParent != (Object)null) { Transform transform = registeredParent.transform; transform.position += ((Component)this).transform.position - lastFramePosition; } } } public void LateUpdate() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) lastFramePosition = ((Component)this).transform.position; } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "ParentObject"; } } public class RotateObject : NetworkBehaviour { public float moveSpeed; public List<Vector3> targetRotations = new List<Vector3>(); private NetworkVariable<int> networkedTargetRotationsIndex = new NetworkVariable<int>(0, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0); private Vector3 targetRotation; private int targetRotationsIndex { get { return networkedTargetRotationsIndex.Value; } set { networkedTargetRotationsIndex.Value = value; } } public void Update() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: 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) ((Component)this).transform.rotation = Quaternion.Lerp(((Component)this).transform.rotation, Quaternion.Euler(targetRotations[targetRotationsIndex]), Time.deltaTime * moveSpeed); } public void ToggleRotationForward(GameObject gameObject) { ToggleRotationServerRpc(isForward: true); } public void ToggleRotationBackward(GameObject gameObject) { ToggleRotationServerRpc(isForward: false); } [ServerRpc] public void ToggleRotationServerRpc(bool isForward) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3550389085u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref isForward, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3550389085u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost)) { return; } if (isForward) { Debug.Log((object)"Rotating Forward"); if (targetRotationsIndex != targetRotations.Count - 1) { targetRotationsIndex++; } else { targetRotationsIndex = 0; } } else { Debug.Log((object)"Rotating Backward"); if (targetRotationsIndex == 0) { targetRotationsIndex = targetRotations.Count - 1; } else { targetRotationsIndex--; } } } protected override void __initializeVariables() { if (networkedTargetRotationsIndex == null) { throw new Exception("RotateObject.networkedTargetRotationsIndex cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)networkedTargetRotationsIndex).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)networkedTargetRotationsIndex, "networkedTargetRotationsIndex"); base.NetworkVariableFields.Add((NetworkVariableBase)(object)networkedTargetRotationsIndex); ((NetworkBehaviour)this).__initializeVariables(); } [RuntimeInitializeOnLoadMethod] internal static void InitializeRPCS_RotateObject() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown NetworkManager.__rpc_func_table.Add(3550389085u, new RpcReceiveHandler(__rpc_handler_3550389085)); } private static void __rpc_handler_3550389085(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 NetworkManager networkManager = target.NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } } else { bool isForward = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref isForward, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((RotateObject)(object)target).ToggleRotationServerRpc(isForward); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "RotateObject"; } } public class AwakeEvent : NetworkBehaviour { public UnityEvent onAwakeEvent; public void Awake() { onAwakeEvent.Invoke(); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "AwakeEvent"; } } [Serializable] public class GameObjectEvent : UnityEvent<GameObject> { } public class OnCollisionEnterEvent : MonoBehaviour { public string tagFilter; public bool debugAllContacts; public GameObjectEvent onCollisionEnterEvent; public void OnCollisionEnter(Collision other) { if (debugAllContacts) { Debug.Log((object)(((Object)((Component)this).gameObject).name + " hit " + ((Object)other.gameObject).name)); } if (tagFilter == string.Empty || other.gameObject.CompareTag(tagFilter)) { ((UnityEvent<GameObject>)onCollisionEnterEvent)?.Invoke(other.gameObject); } } public void DebugLog(GameObject other) { Debug.Log((object)((Object)other).name); } } public class OnTriggerEnterEvent : MonoBehaviour { public ComparisonType comparisonType; public string filter; public bool debugAllContacts; public bool checkPreviousRoot; public GameObjectEvent onCollisionEnterEvent; public int frameCooldown = 0; private int frameCooldownCounter; public Transform previousRoot; public bool onCooldown => frameCooldownCounter != frameCooldown; public void OnTriggerEnter(Collider other) { if (!((Object)(object)((Component)other).transform.root == (Object)(object)previousRoot) && !onCooldown) { Comparison comparison = new Comparison(comparisonType, filter); if (debugAllContacts) { Debug.Log((object)("GameObject Name: " + ((Object)((Component)other).gameObject).name + " GameObject Tag: " + ((Component)other).gameObject.tag)); } if (comparison.ValidComparison(((Component)other).gameObject)) { previousRoot = ((Component)other).transform.root; ((UnityEvent<GameObject>)onCollisionEnterEvent)?.Invoke(((Component)other).gameObject); } } } public void OnTriggerExit(Collider other) { if ((Object)(object)((Component)other).transform.root == (Object)(object)previousRoot) { previousRoot = null; } } public void Update() { if (frameCooldownCounter == frameCooldown) { frameCooldownCounter = 0; } else { frameCooldownCounter++; } } public void DebugLog(GameObject other) { Debug.Log((object)("DebugLog - GameObject Name: " + ((Object)other.gameObject).name + " GameObject Tag: " + other.gameObject.tag)); } } public class OnTriggerExitEvent : MonoBehaviour { public ComparisonType comparisonType; public string filter; public bool debugAllContacts; public GameObjectEvent onCollisionExitEvent; public void OnTriggerExit(Collider other) { Comparison comparison = new Comparison(comparisonType, filter); if (debugAllContacts) { Debug.Log((object)("GameObject Name: " + ((Object)((Component)other).gameObject).name + " GameObject Tag: " + ((Component)other).gameObject.tag)); } if (comparison.ValidComparison(((Component)other).gameObject)) { ((UnityEvent<GameObject>)onCollisionExitEvent)?.Invoke(((Component)other).gameObject); } } public void DebugLog(GameObject other) { Debug.Log((object)("DebugLog - GameObject Name: " + ((Object)other.gameObject).name + " GameObject Tag: " + other.gameObject.tag)); } } public class ApparatusTakenEvent : NetworkBehaviour { public UnityEvent onApparatusTakenEvent; public void Awake() { LevelManager.GlobalLevelEvents.onApparatusTaken.AddListener((ParameterEvent<LungProp>)OnApparatusTakenEvent); } public void OnApparatusTakenEvent(LungProp lungProp) { onApparatusTakenEvent.Invoke(); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "ApparatusTakenEvent"; } } public class PlayerEnterDungeonEvent : NetworkBehaviour { public UnityEvent<PlayerControllerB> onPlayerEnterDungeonEvent; private List<EntranceTeleport> whitelistedEntranceTeleports = new List<EntranceTeleport>(); public void Awake() { LevelManager.GlobalLevelEvents.onPlayerEnterDungeon.AddListener((ParameterEvent<(EntranceTeleport, PlayerControllerB)>)OnPlayerEnterDungeon); } public void OnPlayerEnterDungeon((EntranceTeleport, PlayerControllerB) teleporterAndPlayer) { if (whitelistedEntranceTeleports.Contains(teleporterAndPlayer.Item1)) { onPlayerEnterDungeonEvent.Invoke(teleporterAndPlayer.Item2); } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "PlayerEnterDungeonEvent"; } } public class PlayerExitDungeonEvent : NetworkBehaviour { public UnityEvent<PlayerControllerB> onPlayerExitDungeonEvent; private List<EntranceTeleport> whitelistedEntranceTeleports = new List<EntranceTeleport>(); public void Awake() { LevelManager.GlobalLevelEvents.onPlayerExitDungeon.AddListener((ParameterEvent<(EntranceTeleport, PlayerControllerB)>)OnPlayerExitDungeon); } public void OnPlayerExitDungeon((EntranceTeleport, PlayerControllerB) teleporterAndPlayer) { if (whitelistedEntranceTeleports.Contains(teleporterAndPlayer.Item1)) { onPlayerExitDungeonEvent.Invoke(teleporterAndPlayer.Item2); } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "PlayerExitDungeonEvent"; } } public class PowerSwitchToggleEvent : NetworkBehaviour { public UnityEvent onPowerSwitchToggleOn; public UnityEvent onPowerSwitchToggleOff; public void Awake() { LevelManager.GlobalLevelEvents.onPowerSwitchToggle.AddListener((ParameterEvent<bool>)OnPowerSwitchToggle); } public void OnPowerSwitchToggle(bool result) { if (result) { onPowerSwitchToggleOn.Invoke(); } else { onPowerSwitchToggleOff.Invoke(); } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "PowerSwitchToggleEvent"; } } public class ShipLandEvent : NetworkBehaviour { public UnityEvent onShipLandEvent; public void Awake() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown LevelManager.GlobalLevelEvents.onShipLand.AddListener(new Event(OnShipLand)); } public void OnShipLand() { onShipLandEvent.Invoke(); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "ShipLandEvent"; } } public class ShipLeaveEvent : NetworkBehaviour { public UnityEvent onShipLeaveEvent; public void Awake() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown LevelManager.GlobalLevelEvents.onShipLeave.AddListener(new Event(OnShipLeave)); } public void OnShipLeave() { onShipLeaveEvent.Invoke(); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "ShipLeaveEvent"; } } public class TimeOfDayEvent : NetworkBehaviour { public DayMode filteredDayMode = (DayMode)(-1); public LevelWeatherType filteredWeatherType = (LevelWeatherType)(-1); public UnityEvent onTimeOfDayChanged; public void Awake() { LevelManager.GlobalLevelEvents.onDayModeToggle.AddListener((ParameterEvent<DayMode>)OnDayModeToggle); } public void OnDayModeToggle(DayMode dayMode) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0014: 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) if (dayMode == filteredDayMode && LevelManager.CurrentExtendedLevel.SelectableLevel.currentWeather == filteredWeatherType) { onTimeOfDayChanged.Invoke(); } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "TimeOfDayEvent"; } } [Serializable] public class ExtendedLevelReference { public string extendedLevelName; public ExtendedLevel ExtendedLevel { get; private set; } public void GetExtendedLevel() { if (!string.IsNullOrEmpty(extendedLevelName)) { return; } foreach (ExtendedLevel extendedLevel in PatchedContent.ExtendedLevels) { if (extendedLevelName.ToLower() == ((Object)extendedLevel).name.ToLower()) { ExtendedLevel = extendedLevel; } } } } public enum ComparisonType { Tag, Name, IsPlayer } [Serializable] public class Comparison { public ComparisonType comparisonType; public string comparisonFilter = string.Empty; public Comparison(ComparisonType newComparisonType, string newComparisonFilter) { comparisonType = newComparisonType; comparisonFilter = newComparisonFilter; } public bool ValidComparison(GameObject comparableGameObject) { return ValidComparison(comparableGameObject, comparisonType); } public bool ValidComparison(GameObject comparableGameObject, ComparisonType comparisonType) { if (comparisonType == ComparisonType.Tag && comparableGameObject.CompareTag(comparisonFilter)) { return true; } if (comparisonType == ComparisonType.Name && ((Object)comparableGameObject).name == comparisonFilter) { return true; } if (comparisonType == ComparisonType.IsPlayer) { foreach (GameObject playerAllObjects in Data.playerAllObjectsList) { if ((Object)(object)playerAllObjects == (Object)(object)comparableGameObject) { return true; } } } return false; } } internal static class Data { public static List<GameObject> playerRootObjectsList = new List<GameObject>(); public static List<GameObject> playerAllObjectsList = new List<GameObject>(); public static void GetPlayerObjects() { PlayerControllerB[] array = Object.FindObjectsOfType<PlayerControllerB>(); foreach (PlayerControllerB val in array) { playerRootObjectsList.Add(((Component)val).gameObject); playerAllObjectsList.Add(((Component)val).gameObject); Transform[] componentsInChildren = ((Component)val).GetComponentsInChildren<Transform>(); foreach (Transform val2 in componentsInChildren) { if (!playerAllObjectsList.Contains(((Component)val2).gameObject)) { playerAllObjectsList.Add(((Component)val2).gameObject); } } } } public static bool TryFindPlayer(GameObject child, out GameObject playerObject) { Transform parent = child.transform.parent; playerObject = null; while ((Object)(object)parent != (Object)null) { foreach (GameObject playerRootObjects in playerRootObjectsList) { if ((Object)(object)((Component)parent).gameObject == (Object)(object)playerRootObjects) { playerObject = playerRootObjects; return true; } } parent = parent.parent; } return false; } } [Serializable] public class UnityEventExtendedContent : UnityEvent<ExtendedContent> { } public class RuntimeReferenceCollector : MonoBehaviour { public ScriptableObject contentToFind; [HideInInspector] private ExtendedContent foundContent; public UnityEventExtendedContent onContentFound; public void Awake() { if (!((Object)(object)contentToFind == (Object)null)) { foundContent = TryFindContent(contentToFind); if ((Object)(object)foundContent != (Object)null) { ((UnityEvent<ExtendedContent>)onContentFound).Invoke(foundContent); } } } public ExtendedContent TryFindContent(ScriptableObject referenceContent) { ExtendedContent result = null; SelectableLevel val = (SelectableLevel)(object)((referenceContent is SelectableLevel) ? referenceContent : null); if (val != null) { ExtendedLevel val2 = default(ExtendedLevel); if (PatchedContent.TryGetExtendedContent(val, ref val2)) { result = (ExtendedContent)(object)val2; } } else { DungeonFlow val3 = (DungeonFlow)(object)((referenceContent is DungeonFlow) ? referenceContent : null); if (val3 != null) { ExtendedDungeonFlow val4 = default(ExtendedDungeonFlow); if (PatchedContent.TryGetExtendedContent(val3, ref val4)) { result = (ExtendedContent)(object)val4; } } else { Item val5 = (Item)(object)((referenceContent is Item) ? referenceContent : null); if (val5 != null) { ExtendedItem val6 = default(ExtendedItem); if (PatchedContent.TryGetExtendedContent(val5, ref val6)) { result = (ExtendedContent)(object)val6; } } else { EnemyType val7 = (EnemyType)(object)((referenceContent is EnemyType) ? referenceContent : null); ExtendedEnemyType val8 = default(ExtendedEnemyType); if (val7 != null && PatchedContent.TryGetExtendedContent(val7, ref val8)) { result = (ExtendedContent)(object)val8; } } } } return result; } } } namespace LethalToolbox.Filters { public class PlayerInventoryFilter : NetworkBehaviour { public UnityEvent<PlayerControllerB> onFilteredEvent; public List<string> itemNameFilters = new List<string>(); public void FilterEvent(PlayerControllerB player) { if (!((Object)(object)player != (Object)null)) { return; } GrabbableObject[] itemSlots = player.ItemSlots; foreach (GrabbableObject val in itemSlots) { if ((Object)(object)val != (Object)null && itemNameFilters.Contains(((Object)val.itemProperties).name)) { onFilteredEvent.Invoke(player); } } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "PlayerInventoryFilter"; } } } namespace LethalToolbox.Actions.LethalLevelLoader { public class ToggleRouteProperties : MonoBehaviour { public string extendedLevelName; public ExtendedLevelReference extendedLevelReference; public void Awake() { extendedLevelReference.GetExtendedLevel(); if ((Object)(object)extendedLevelReference.ExtendedLevel == (Object)null) { Debug.Log((object)("LethalToolbox: Could Not Find ExtendedLevel: " + extendedLevelReference.extendedLevelName + ", Disabling Component!")); ((Behaviour)this).enabled = false; } } public void ToggleIsRouteHidden(bool value) { if ((Object)(object)extendedLevelReference.ExtendedLevel != (Object)null) { extendedLevelReference.ExtendedLevel.IsRouteHidden = value; } } public void ToggleIsRouteLocked(bool value) { if ((Object)(object)extendedLevelReference.ExtendedLevel != (Object)null) { extendedLevelReference.ExtendedLevel.IsRouteLocked = value; } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace LethalToolbox.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }