using 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
{
}
}