Decompiled source of TooManyExplosions v1.1.0

plugins/TooManyExplosions/TooManyExplosions.dll

Decompiled 6 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using LethalLib.Modules;
using Microsoft.CodeAnalysis;
using TMPro;
using TooManyExplosions.Helpers;
using TooManyExplosions.Managers;
using TooManyExplosions.MonoBehaviours;
using TooManyExplosions.MonoBehaviours.Extensions;
using TooManyExplosions.NetcodePatcher;
using TooManyExplosions.Patchers;
using TooManyExplosions.Patchers.Enemies;
using TooManyExplosions.Patchers.Objects;
using Unity.Netcode;
using UnityEngine;
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: AssemblyCompany("TooManyExplosions")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("TooManyExplosions")]
[assembly: AssemblyTitle("TooManyExplosions")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: NetcodePatchedAssembly]
internal class <Module>
{
	static <Module>()
	{
		NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpy<bool>();
		NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<bool>();
		NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpy<Vector3>();
		NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<Vector3>();
		NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpy<float>();
		NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<float>();
	}
}
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 TooManyExplosions
{
	[BepInPlugin("lc.zapajax.TooManyExplosions", "Too Many Explosions", "1.0.3")]
	public class Plugin : BaseUnityPlugin
	{
		private const string GUID = "lc.zapajax.TooManyExplosions";

		private const string NAME = "Too Many Explosions";

		private const string VERSION = "1.0.3";

		private readonly Harmony harmony = new Harmony("lc.zapajax.TooManyExplosions");

		public static Plugin Instance;

		private void Awake()
		{
			Instance = this;
			LogHandler.Init("lc.zapajax.TooManyExplosions");
			Content.AssemblySetup();
			ConfigSettings.BindConfigSettings();
			Content.InitializeObjects();
			LogHandler.Log("Explosives are primed.");
			_Patcher.ApplyPatches(harmony);
			LogHandler.Log("Fire in the hole!");
		}
	}
}
namespace TooManyExplosions.Patchers
{
	[HarmonyPatch(typeof(GameNetworkManager))]
	internal class GameNetworkManagerPatcher
	{
		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void AddToPrefabs(GameNetworkManager __instance)
		{
			((Component)__instance).GetComponent<NetworkManager>().AddNetworkPrefab(Content.tmeNetcodeObject);
		}
	}
	[HarmonyPatch(typeof(NetworkObject))]
	internal class NetworkObjectPatcher
	{
		[HarmonyPatch("Awake")]
		[HarmonyPrefix]
		public static void appendScriptToNetworkObject(NetworkObject __instance)
		{
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Expected O, but got Unknown
			//IL_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Expected O, but got Unknown
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Expected O, but got Unknown
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Expected O, but got Unknown
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01de: Expected O, but got Unknown
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("NetworkObject.Awake: " + ((Object)((Component)__instance).gameObject).name);
			}
			if (!(((Object)((Component)__instance).gameObject).name == "Landmine(Clone)"))
			{
				return;
			}
			LandmineExtension le = ((Component)((Component)__instance).transform.GetChild(0)).gameObject.AddComponent<LandmineExtension>();
			if (NetConfigVariables.canDisarmLandmineNet.Value)
			{
				InteractTrigger val = ((Component)__instance).gameObject.AddComponent<InteractTrigger>();
				val.hoverTip = "Deactivate Landmine : [E]";
				val.interactable = true;
				val.holdInteraction = true;
				val.oneHandedItemAllowed = true;
				val.timeToHold = NetConfigVariables.disarmTimerLengthNet.Value;
				val.timeToHoldSpeedMultiplier = 1f;
				val.animationWaitTime = NetConfigVariables.disarmTimerLengthNet.Value;
				val.triggerOnce = true;
				val.onInteractEarly = new InteractEvent();
				UnityAction<PlayerControllerB> val2 = delegate
				{
				};
				((UnityEvent<PlayerControllerB>)(object)val.onInteractEarly).AddListener(val2);
				val.onStopInteract = new InteractEvent();
				UnityAction<PlayerControllerB> val3 = delegate
				{
				};
				((UnityEvent<PlayerControllerB>)(object)val.onStopInteract).AddListener(val3);
				val.holdingInteractEvent = new InteractEventFloat();
				UnityAction<float> val4 = delegate
				{
				};
				((UnityEvent<float>)(object)val.holdingInteractEvent).AddListener(val4);
				val.onCancelAnimation = new InteractEvent();
				UnityAction<PlayerControllerB> val5 = delegate
				{
				};
				((UnityEvent<PlayerControllerB>)(object)val.onStopInteract).AddListener(val5);
				val.onInteract = new InteractEvent();
				UnityAction<PlayerControllerB> val6 = delegate
				{
					le.destroyLandmineServerRpc();
				};
				((UnityEvent<PlayerControllerB>)(object)val.onInteract).AddListener(val6);
			}
		}
	}
	[HarmonyPatch(typeof(PlayerControllerB))]
	internal class PlayerControllerBPatcher
	{
		[HarmonyPatch("Start")]
		[HarmonyPrefix]
		public static void preStart(PlayerControllerB __instance)
		{
			PlayerControllerBExtension playerControllerBExtension = ((Component)__instance).gameObject.AddComponent<PlayerControllerBExtension>();
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("ADDING PlayerExtension");
			}
		}

		[HarmonyPatch("SetHoverTipAndCurrentInteractTrigger")]
		[HarmonyPostfix]
		public static void includeLandmine(PlayerControllerB __instance)
		{
			//IL_001f: 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)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			if (__instance.isGrabbingObjectAnimation)
			{
				return;
			}
			Ray val = default(Ray);
			((Ray)(ref val))..ctor(((Component)__instance.gameplayCamera).transform.position, ((Component)__instance.gameplayCamera).transform.forward);
			RaycastHit[] array = Physics.RaycastAll(val, __instance.grabDistance, 2097152);
			RaycastHit val2 = default(RaycastHit);
			bool flag = false;
			if (array.Length != 0)
			{
				RaycastHit[] array2 = array;
				for (int i = 0; i < array2.Length; i++)
				{
					RaycastHit val3 = array2[i];
					GameObject gameObject = ((Component)((RaycastHit)(ref val3)).collider).gameObject;
					if ((Object)(object)gameObject == (Object)null)
					{
						continue;
					}
					GameObject gameObject2 = ((Component)gameObject.transform.parent).gameObject;
					if (!((Object)(object)gameObject2 == (Object)null) && !(((Object)gameObject2).name != "Landmine(Clone)"))
					{
						Landmine componentInChildren = gameObject2.GetComponentInChildren<Landmine>();
						if (!componentInChildren.hasExploded && NetConfigVariables.canDisarmLandmineNet.Value)
						{
							flag = true;
							val2 = val3;
							break;
						}
					}
				}
			}
			if (!flag)
			{
				return;
			}
			InteractTrigger component = ((Component)((RaycastHit)(ref val2)).transform.parent).gameObject.GetComponent<InteractTrigger>();
			if ((Object)(object)component != (Object)(object)__instance.previousHoveringOverTrigger && (Object)(object)__instance.previousHoveringOverTrigger != (Object)null)
			{
				__instance.previousHoveringOverTrigger.isBeingHeldByPlayer = false;
			}
			if ((Object)(object)component == (Object)null)
			{
				return;
			}
			__instance.hoveringOverTrigger = component;
			if (__instance.isHoldingInteract)
			{
				if (__instance.twoHanded)
				{
					((TMP_Text)__instance.cursorTip).text = "[Hands Full]";
				}
				else if (!string.IsNullOrEmpty(component.holdTip))
				{
					((TMP_Text)__instance.cursorTip).text = component.holdTip;
				}
			}
			else
			{
				((Behaviour)__instance.cursorIcon).enabled = true;
				__instance.cursorIcon.sprite = __instance.grabItemIcon;
				if (!((Object)(object)__instance.cursorTip == (Object)null) && ((TMP_Text)__instance.cursorTip).text != null && !((Object)(object)component == (Object)null) && component.hoverTip != null)
				{
					((TMP_Text)__instance.cursorTip).text = component.hoverTip;
				}
			}
		}

		[HarmonyPatch("KillPlayer")]
		[HarmonyPostfix]
		public static void onPlayerDeathExplosiveEvent(PlayerControllerB __instance)
		{
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			if (!((NetworkBehaviour)__instance).IsOwner || !__instance.isPlayerDead || !__instance.AllowPlayerDeath() || !NetConfigVariables.playerExplodesOnDeathNet.Value)
			{
				return;
			}
			PlayerControllerBExtension component = ((Component)((Component)__instance).transform).gameObject.GetComponent<PlayerControllerBExtension>();
			if (!((Object)(object)component == (Object)null) && !component.triggeredAfterDeathExplosiveEvent)
			{
				component.triggeredAfterDeathExplosiveEvent = true;
				if (TMEUtils.doesEventTrigger(NetConfigVariables.chanceForPlayerToExplodeOnDeathNet.Value))
				{
					NetcodeManager.Instance.spawnExplosionServerRpc(((Component)__instance).transform.position, spawnExplosionEffect: true, 1f, 5f);
				}
			}
		}

		[HarmonyPatch("BeginGrabObject")]
		[HarmonyPostfix]
		public static void handleDestroyedLM(PlayerControllerB __instance, GrabbableObject ___currentlyGrabbingObject)
		{
			if ((Object)(object)___currentlyGrabbingObject == (Object)null)
			{
				__instance.isGrabbingObjectAnimation = false;
			}
		}

		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		public static void updatePatcher(PlayerControllerB __instance)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: 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)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			PlayerControllerBExtension component = ((Component)__instance).gameObject.GetComponent<PlayerControllerBExtension>();
			if ((Object)(object)component == (Object)null)
			{
				return;
			}
			component.worldVelocity = (((Component)__instance).transform.position - component.prevPos) / Time.deltaTime;
			component.prevPos = ((Component)__instance).transform.position;
			if (!NetConfigVariables.playerExplodesOnLandNet.Value || __instance.thisController.isGrounded == component.prevGroundedState)
			{
				return;
			}
			component.prevGroundedState = __instance.thisController.isGrounded;
			if (TMEUtils.shipState != "LANDED")
			{
				return;
			}
			if (__instance.thisController.isGrounded)
			{
				if (!(component.startedFallingHeight - ((Component)__instance).transform.position.y < NetConfigVariables.distanceToCauseExplosionNet.Value) && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForPlayerToExplodeOnLandNet.Value))
				{
					if (ConfigSettings.enableDebugging.Value)
					{
						LogHandler.Log("Player landed causing explosive event.");
					}
					TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 2.5f, 25);
				}
			}
			else
			{
				component.startedFallingHeight = ((Component)__instance).transform.position.y;
			}
		}
	}
	[HarmonyPatch(typeof(StartOfRound))]
	internal class StartOfRoundPatcher
	{
		[HarmonyPatch("Start")]
		[HarmonyPrefix]
		private static void spawnNetManagers(StartOfRound __instance)
		{
			if (((NetworkBehaviour)__instance).IsHost)
			{
				GameObject val = Object.Instantiate<GameObject>(Content.tmeNetcodeObject);
				val.GetComponent<NetworkObject>().Spawn(false);
			}
		}

		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void getMonsters(StartOfRound __instance)
		{
			TMEUtils.landmineRef = TMEUtils.findMapItem("Landmine");
		}

		[HarmonyPatch("Update")]
		[HarmonyPrefix]
		public static void updateShipState(StartOfRound __instance)
		{
			TMEUtils.shipState = TMEUtils.determineShipState(__instance);
		}

		[HarmonyPatch("ShipLeave")]
		[HarmonyPostfix]
		public static void replaceLandminesOnShipLeave()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: 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)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Expected O, but got Unknown
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Expected O, but got Unknown
			Scene sceneByName = SceneManager.GetSceneByName("SampleSceneRelay");
			Scene val = sceneByName;
			GameObject[] rootGameObjects = ((Scene)(ref val)).GetRootGameObjects();
			for (int i = 0; i < rootGameObjects.Length; i++)
			{
				if (!(((Object)rootGameObjects[i]).name == "Landmine(Clone)"))
				{
					continue;
				}
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Found a Landmine");
				}
				Landmine componentInChildren = rootGameObjects[i].GetComponentInChildren<Landmine>();
				if (!((Object)componentInChildren != (Object)null) || componentInChildren.hasExploded)
				{
					continue;
				}
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Found a Landmine 2");
				}
				LandmineExtension componentInChildren2 = rootGameObjects[i].GetComponentInChildren<LandmineExtension>();
				if ((Object)componentInChildren2 != (Object)null)
				{
					if (ConfigSettings.enableDebugging.Value)
					{
						LogHandler.Log("Found a Landmine 3");
					}
					componentInChildren2.destroyLandmineServerRpc();
					if (ConfigSettings.enableDebugging.Value)
					{
						LogHandler.Log("Switching A Landmine");
					}
				}
			}
		}
	}
	internal class _Patcher
	{
		public static void ApplyPatches(Harmony harmony)
		{
			harmony.PatchAll(typeof(Plugin));
			harmony.PatchAll(typeof(GameNetworkManagerPatcher));
			harmony.PatchAll(typeof(NetworkObjectPatcher));
			harmony.PatchAll(typeof(PlayerControllerBPatcher));
			harmony.PatchAll(typeof(StartOfRoundPatcher));
			_EnemyAIPatcher.ApplyObjectPatches(harmony);
			_ObjectPatcher.ApplyObjectPatches(harmony);
		}
	}
}
namespace TooManyExplosions.Patchers.Objects
{
	[HarmonyPatch(typeof(GiftBoxItem))]
	internal class GiftBoxItemPatcher
	{
		[HarmonyPatch("ItemActivate")]
		[HarmonyPrefix]
		public static bool explodeOnUse(GiftBoxItem __instance, ref bool ___hasUsedGift)
		{
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)((GrabbableObject)__instance).playerHeldBy == (Object)null) && !___hasUsedGift)
			{
				if (!((NetworkBehaviour)__instance).IsOwner)
				{
					return true;
				}
				if (!NetConfigVariables.explosionOnItemUseNet.Value)
				{
					return true;
				}
				if (TMEUtils.doesEventTrigger(NetConfigVariables.chanceForExplosionOnItemUseNet.Value))
				{
					if (ConfigSettings.enableDebugging.Value)
					{
						LogHandler.Log("Item use caused explosive event.");
					}
					TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 2.5f, 25);
				}
			}
			return true;
		}
	}
	[HarmonyPatch(typeof(Landmine))]
	internal class LandminePatcher : NetworkBehaviour
	{
		[HarmonyPatch("SetOffMineAnimation")]
		[HarmonyPostfix]
		public static void disableCollider(Landmine __instance)
		{
			GameObject gameObject = ((Component)((Component)__instance).transform.parent).gameObject;
			SphereCollider componentInChildren = gameObject.GetComponentInChildren<SphereCollider>();
			((Collider)componentInChildren).enabled = false;
		}

		protected override void __initializeVariables()
		{
			((NetworkBehaviour)this).__initializeVariables();
		}

		protected internal override string __getTypeName()
		{
			return "LandminePatcher";
		}
	}
	[HarmonyPatch(typeof(NoisemakerProp))]
	internal class NoisemakerPropPatcher
	{
		[HarmonyPatch("ItemActivate")]
		[HarmonyPrefix]
		public static bool explodeOnUse(NoisemakerProp __instance, object[] __args)
		{
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			if (!((NetworkBehaviour)__instance).IsOwner)
			{
				return true;
			}
			if (!((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null))
			{
				if (!NetConfigVariables.explosionOnItemUseNet.Value)
				{
					return true;
				}
				if (TMEUtils.doesEventTrigger(NetConfigVariables.chanceForExplosionOnItemUseNet.Value))
				{
					if (ConfigSettings.enableDebugging.Value)
					{
						LogHandler.Log("Item use caused explosive event.");
					}
					TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 2.5f, 25);
				}
			}
			return true;
		}
	}
	internal class _ObjectPatcher
	{
		public static void ApplyObjectPatches(Harmony harmony)
		{
			harmony.PatchAll(typeof(LandminePatcher));
			harmony.PatchAll(typeof(GiftBoxItemPatcher));
			harmony.PatchAll(typeof(NoisemakerPropPatcher));
		}
	}
}
namespace TooManyExplosions.Patchers.Enemies
{
	[HarmonyPatch(typeof(BaboonBirdAI))]
	internal class BaboonBirdAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(BaboonBirdAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 2.5f);
			}
		}
	}
	[HarmonyPatch(typeof(ButlerEnemyAI))]
	internal class ButlerEnemyAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(ButlerEnemyAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 3f);
			}
		}
	}
	[HarmonyPatch(typeof(CentipedeAI))]
	internal class CentipedeAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(CentipedeAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 2.5f, 25);
			}
		}
	}
	[HarmonyPatch(typeof(CrawlerAI))]
	internal class CrawlerAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(CrawlerAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 3f);
			}
		}
	}
	[HarmonyPatch(typeof(DoublewingAI))]
	internal class DoublewingAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(DoublewingAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 2.5f, 25);
			}
		}
	}
	[HarmonyPatch(typeof(FlowermanAI))]
	internal class FlowermanAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(FlowermanAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 2.5f);
			}
		}
	}
	[HarmonyPatch(typeof(FlowerSnakeEnemy))]
	internal class FlowerSnakeEnemyPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(FlowerSnakeEnemy __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 1f, 25);
			}
		}
	}
	[HarmonyPatch(typeof(ForestGiantAI))]
	internal class ForestGiantAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(ForestGiantAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 1f, 5f);
			}
		}
	}
	[HarmonyPatch(typeof(HoarderBugAI))]
	internal class HoarderBugAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(HoarderBugAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 1f, 25);
			}
		}
	}
	[HarmonyPatch(typeof(MaskedPlayerEnemy))]
	internal class MaskedPlayerEnemyPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(MaskedPlayerEnemy __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 2.5f, 25);
			}
		}
	}
	[HarmonyPatch(typeof(MouthDogAI))]
	internal class MouthDogAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(MouthDogAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 3f);
			}
		}
	}
	[HarmonyPatch(typeof(NutcrackerEnemyAI))]
	internal class NutcrackerEnemyAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(NutcrackerEnemyAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 2.5f);
			}
		}
	}
	[HarmonyPatch(typeof(PufferAI))]
	internal class PufferAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(PufferAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 3f);
			}
		}
	}
	[HarmonyPatch(typeof(SandSpiderAI))]
	internal class SandSpiderAIPatcher
	{
		[HarmonyPatch("KillEnemy")]
		[HarmonyPostfix]
		public static void explosiveEventOnKillEnemy(SandSpiderAI __instance)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (GameNetworkManager.Instance.isHostingGame && NetConfigVariables.enemyExplodesOnDeathNet.Value && TMEUtils.doesEventTrigger(NetConfigVariables.chanceForEnemyToExplodeOnDeathNet.Value))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Enemy Death caused explosive event");
				}
				TMEUtils.spawnExplosion(((Component)__instance).transform.position, spawnExplosionEffect: true, 0f, 3f);
			}
		}
	}
	internal class _EnemyAIPatcher
	{
		public static void ApplyObjectPatches(Harmony harmony)
		{
			harmony.PatchAll(typeof(BaboonBirdAIPatcher));
			harmony.PatchAll(typeof(ButlerEnemyAIPatcher));
			harmony.PatchAll(typeof(CentipedeAIPatcher));
			harmony.PatchAll(typeof(CrawlerAIPatcher));
			harmony.PatchAll(typeof(DoublewingAIPatcher));
			harmony.PatchAll(typeof(FlowermanAIPatcher));
			harmony.PatchAll(typeof(FlowerSnakeEnemyPatcher));
			harmony.PatchAll(typeof(ForestGiantAIPatcher));
			harmony.PatchAll(typeof(HoarderBugAIPatcher));
			harmony.PatchAll(typeof(MaskedPlayerEnemyPatcher));
			harmony.PatchAll(typeof(MouthDogAIPatcher));
			harmony.PatchAll(typeof(NutcrackerEnemyAIPatcher));
			harmony.PatchAll(typeof(PufferAIPatcher));
			harmony.PatchAll(typeof(SandSpiderAIPatcher));
		}
	}
}
namespace TooManyExplosions.MonoBehaviours
{
	[RequireComponent(typeof(Rigidbody))]
	public class GrabbableRigidbody : PhysicsProp
	{
		internal Rigidbody rb;

		public PlayerControllerB playerLastHeldBy;

		public bool overrideLCPhysics = false;

		protected NetworkVariable<bool> overrideLCPhysicsNet = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);

		protected NetworkVariable<bool> isKinematicNet = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);

		public float gravity = NetConfigVariables.gravityNet.Value;

		public int velocityIsZeroCounter = 0;

		public int velocityCounterBuffer = 10;

		public Vector3 prevPos = Vector3.zero;

		public float velocityCounterTolerance = 1000f;

		public override void Start()
		{
			rb = ((Component)this).GetComponent<Rigidbody>();
			rb.useGravity = false;
			((GrabbableObject)this).itemProperties.itemSpawnsOnGround = false;
			((GrabbableObject)this).Start();
			EnablePhysics(enable: true);
			if (overrideLCPhysics)
			{
				rb.isKinematic = true;
			}
			rb.collisionDetectionMode = (CollisionDetectionMode)2;
		}

		public void EnablePhysics(bool enable)
		{
			for (int i = 0; i < ((GrabbableObject)this).propColliders.Length; i++)
			{
				if (!((Object)(object)((GrabbableObject)this).propColliders[i] == (Object)null) && !((Component)((GrabbableObject)this).propColliders[i]).gameObject.CompareTag("InteractTrigger") && !((Component)((GrabbableObject)this).propColliders[i]).gameObject.CompareTag("DoNotSet"))
				{
					((GrabbableObject)this).propColliders[i].enabled = enable;
				}
			}
			rb.isKinematic = !enable;
		}

		public bool isMoving()
		{
			if (velocityIsZeroCounter > velocityCounterBuffer)
			{
				return false;
			}
			return true;
		}

		public void determineRelativeVelocity()
		{
			//IL_0007: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			bool flag = Mathf.Round(((Component)this).transform.position.x * velocityCounterTolerance) / velocityCounterTolerance == Mathf.Round(prevPos.x * velocityCounterTolerance) / velocityCounterTolerance;
			bool flag2 = Mathf.Round(((Component)this).transform.position.y * velocityCounterTolerance) / velocityCounterTolerance == Mathf.Round(prevPos.y * velocityCounterTolerance) / velocityCounterTolerance;
			bool flag3 = Mathf.Round(((Component)this).transform.position.z * velocityCounterTolerance) / velocityCounterTolerance == Mathf.Round(prevPos.z * velocityCounterTolerance) / velocityCounterTolerance;
			if (flag && flag2 && flag3 && velocityIsZeroCounter <= velocityCounterBuffer)
			{
				velocityIsZeroCounter++;
			}
			else
			{
				velocityIsZeroCounter = 0;
			}
		}

		public override void Update()
		{
			determineRelativeVelocity();
			if (!((NetworkBehaviour)this).IsHost && overrideLCPhysics != overrideLCPhysicsNet.Value)
			{
				overrideLCPhysics = overrideLCPhysicsNet.Value;
			}
			else if (((NetworkBehaviour)this).IsHost && overrideLCPhysics != overrideLCPhysicsNet.Value)
			{
				overrideLCPhysicsNet.Value = overrideLCPhysics;
			}
			if (!((NetworkBehaviour)this).IsHost && rb.isKinematic != isKinematicNet.Value)
			{
				rb.isKinematic = isKinematicNet.Value;
			}
			else if (((NetworkBehaviour)this).IsHost && rb.isKinematic != isKinematicNet.Value)
			{
				isKinematicNet.Value = rb.isKinematic;
			}
			bool isHeld = ((GrabbableObject)this).isHeld;
			((GrabbableObject)this).fallTime = 1f;
			((GrabbableObject)this).reachedFloorTarget = true;
			((GrabbableObject)this).isHeld = true;
			((GrabbableObject)this).Update();
			((GrabbableObject)this).isHeld = isHeld;
		}

		public void FixedUpdate()
		{
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			if (overrideLCPhysics)
			{
				if (!rb.isKinematic && !((GrabbableObject)this).isHeld)
				{
					rb.useGravity = false;
					rb.AddForce(Vector3.down * gravity, (ForceMode)5);
				}
				else
				{
					rb.AddForce(Vector3.zero, (ForceMode)2);
				}
			}
			if (overrideLCPhysics && rb.isKinematic)
			{
				rb.isKinematic = false;
			}
			if (!overrideLCPhysics && !rb.isKinematic)
			{
				rb.isKinematic = true;
			}
		}

		public override void LateUpdate()
		{
			//IL_0029: 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_0057: 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_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: 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_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: 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_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)((GrabbableObject)this).parentObject != (Object)null && ((GrabbableObject)this).isHeld)
			{
				((Component)this).transform.rotation = ((GrabbableObject)this).parentObject.rotation;
				((Component)this).transform.Rotate(((GrabbableObject)this).itemProperties.rotationOffset);
				((Component)this).transform.position = ((GrabbableObject)this).parentObject.position;
				Vector3 positionOffset = ((GrabbableObject)this).itemProperties.positionOffset;
				positionOffset = ((GrabbableObject)this).parentObject.rotation * positionOffset;
				Transform transform = ((Component)this).transform;
				transform.position += positionOffset;
			}
			if ((Object)(object)((GrabbableObject)this).radarIcon != (Object)null)
			{
				((GrabbableObject)this).radarIcon.position = ((Component)this).transform.position;
			}
			prevPos = ((Component)this).transform.position;
		}

		public override void FallWithCurve()
		{
		}

		public void FallToGround(bool randomizePosition = false)
		{
		}

		public override void EquipItem()
		{
			((PhysicsProp)this).EquipItem();
			playerLastHeldBy = ((GrabbableObject)this).playerHeldBy;
			((Component)this).transform.SetParent((Transform)null, true);
		}

		protected override void __initializeVariables()
		{
			if (overrideLCPhysicsNet == null)
			{
				throw new Exception("GrabbableRigidbody.overrideLCPhysicsNet cannot be null. All NetworkVariableBase instances must be initialized.");
			}
			((NetworkVariableBase)overrideLCPhysicsNet).Initialize((NetworkBehaviour)(object)this);
			((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)overrideLCPhysicsNet, "overrideLCPhysicsNet");
			((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)overrideLCPhysicsNet);
			if (isKinematicNet == null)
			{
				throw new Exception("GrabbableRigidbody.isKinematicNet cannot be null. All NetworkVariableBase instances must be initialized.");
			}
			((NetworkVariableBase)isKinematicNet).Initialize((NetworkBehaviour)(object)this);
			((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)isKinematicNet, "isKinematicNet");
			((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)isKinematicNet);
			((PhysicsProp)this).__initializeVariables();
		}

		protected internal override string __getTypeName()
		{
			return "GrabbableRigidbody";
		}
	}
	[ExecuteAlways]
	internal class ThrowableLandmine : GrabbableRigidbody
	{
		private new PlayerControllerB playerLastHeldBy;

		public bool isThrown = false;

		public float throwForce = NetConfigVariables.throwForceNet.Value;

		public Vector3 raisedAngle = new Vector3(0f, 0.15f, 0f);

		public bool isHoldingButton;

		public bool readyingItem = false;

		private Coroutine readyItemCoroutine;

		public bool allowConversion = false;

		private NetworkVariable<bool> allowConversionNet = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);

		public bool hasSpawnedMine = false;

		private float t = 0f;

		public bool updatedPos = false;

		private NetworkVariable<Vector3> throwDirNet = new NetworkVariable<Vector3>(Vector3.zero, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)1);

		public BoxCollider collider;

		public override void Start()
		{
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			base.Start();
			if (((NetworkBehaviour)this).IsHost)
			{
				rb.isKinematic = isKinematicNet.Value;
				rb.velocity = Vector3.zero;
				t = 0f;
				if (!overrideLCPhysics)
				{
					overrideLCPhysics = true;
				}
				if (TMEUtils.shipState == "LEAVING" || StartOfRound.Instance.shipIsLeaving)
				{
					overrideLCPhysics = false;
				}
			}
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("ThrowableLandmine.ItemActivate");
			}
			playerLastHeldBy = ((GrabbableObject)this).playerHeldBy;
			isThrown = true;
			allowConversion = true;
			isHoldingButton = buttonDown;
			if (!readyingItem && buttonDown && ((NetworkBehaviour)this).IsOwner)
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Activating Item");
				}
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Kinematic: " + isKinematicNet.Value);
				}
				readyingItem = true;
				if (readyItemCoroutine != null)
				{
					((MonoBehaviour)this).StopCoroutine(readyItemCoroutine);
				}
				readyItemCoroutine = ((MonoBehaviour)this).StartCoroutine(readyActivatedItem());
			}
		}

		private IEnumerator readyActivatedItem()
		{
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("ThrowableLandmine.readyAimArm");
			}
			((GrabbableObject)this).playerHeldBy.activatingItem = true;
			yield return (object)new WaitForSeconds(0.35f);
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("ThrowableLandmine.readyAimArm.t1");
			}
			yield return (object)new WaitUntil((Func<bool>)(() => !isHoldingButton || !((GrabbableObject)this).isHeld));
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("ThrowableLandmine.readyAimArm.t2");
			}
			ThrowObject(!((GrabbableObject)this).isHeld);
			readyingItem = false;
			readyItemCoroutine = null;
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("ThrowableLandmine.readyAimArm.End");
			}
		}

		public void ThrowObject(bool cancel = false)
		{
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("ThrowableLandmine.ThrowObject");
			}
			if ((Object)(object)playerLastHeldBy == (Object)null)
			{
				return;
			}
			playerLastHeldBy.activatingItem = false;
			if (!cancel)
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("ThrowableLandmine.ThrowObject.t1");
				}
				((Component)this).transform.localScale = new Vector3(1f, 1f, 1f);
				((GrabbableObject)this).grabbable = false;
				((GrabbableObject)this).playerHeldBy.DiscardHeldObject(false, (NetworkObject)null, default(Vector3), true);
				Vector3 forward = ((Component)playerLastHeldBy.gameplayCamera).transform.forward;
				forward += raisedAngle;
				PlayerControllerBExtension component = ((Component)playerLastHeldBy).gameObject.GetComponent<PlayerControllerBExtension>();
				if (!((Object)(object)component == (Object)null))
				{
					Vector3 throwVel = forward * throwForce + component.worldVelocity;
					ThrowObjectServerRpc(throwVel, ((Component)this).transform.position, Quaternion.identity);
				}
			}
		}

		public override void EquipItem()
		{
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			isThrown = false;
			updatedPos = false;
			base.EquipItem();
			if (!overrideLCPhysics)
			{
				overrideLCPhysics = true;
			}
			((Component)this).transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
			playerLastHeldBy = ((GrabbableObject)this).playerHeldBy;
			hasSpawnedMine = false;
			allowConversion = false;
			if ((Object)(object)rb != (Object)null && overrideLCPhysics)
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Found Rigidbody");
				}
				rb.isKinematic = false;
				rb.velocity = Vector3.zero;
			}
			t = 0f;
		}

		[ServerRpc(RequireOwnership = false)]
		public void ThrowObjectServerRpc(Vector3 throwVel, Vector3 pos, Quaternion rot)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: 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_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: 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)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				ServerRpcParams val = default(ServerRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2942029642u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref throwVel);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref pos);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref rot);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2942029642u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("Throwing on server");
				}
				ThrowObjectClientRpc(throwVel, pos, rot);
			}
		}

		[ClientRpc]
		public void ThrowObjectClientRpc(Vector3 throwVel, Vector3 pos, Quaternion rot)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: 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_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_0174: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: 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)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1032247209u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref throwVel);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref pos);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref rot);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1032247209u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("ThrowDir: " + ((object)(Vector3)(ref throwVel)).ToString());
				}
				((Component)this).transform.position = pos;
				((Component)this).transform.rotation = rot;
				((Component)this).transform.localScale = new Vector3(1f, 1f, 1f);
				((GrabbableObject)this).grabbable = false;
				t = 0f;
				allowConversion = true;
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log($"Throwing dart with velocity: {throwVel} - Pos: {pos}");
				}
				rb.AddForce(throwVel, (ForceMode)1);
			}
		}

		public override void DiscardItem()
		{
			//IL_001d: 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)
			//IL_0031: 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_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: 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_0079: Unknown result type (might be due to invalid IL or missing references)
			((GrabbableObject)this).playerHeldBy.activatingItem = false;
			Vector3 val = ((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.forward;
			val.y = 0f;
			val = ((Vector3)(ref val)).normalized;
			Vector3 position = ((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.position;
			((GrabbableObject)this).DiscardItem();
			allowConversion = false;
			Transform transform = ((Component)this).transform;
			transform.position += val;
			((Component)this).transform.rotation = Quaternion.identity;
			t = 0f;
		}

		[ServerRpc(RequireOwnership = false)]
		public void activateServerRpc(bool enabled)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: 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_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2666571464u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref enabled, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2666571464u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					activateClientRpc(enabled);
				}
			}
		}

		[ClientRpc]
		public void activateClientRpc(bool enabled)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: 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_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1573592809u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref enabled, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1573592809u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					allowConversion = enabled;
				}
			}
		}

		[ServerRpc]
		public void repositionServerRpc(Vector3 pos, Quaternion rot)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Invalid comparison between Unknown and I4
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//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_00dc: 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)((NetworkBehaviour)this).__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(542901878u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref pos);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref rot);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 542901878u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				((Component)this).transform.position = pos;
				((Component)this).transform.rotation = rot;
			}
		}

		[ServerRpc]
		public void updateGrabbableServerRpc(bool grabbableFlag)
		{
			//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)((NetworkBehaviour)this).__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(2497715406u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref grabbableFlag, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2497715406u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				updateGrabbableClientRpc(grabbableFlag);
			}
		}

		[ClientRpc]
		public void updateGrabbableClientRpc(bool grabbableFlag)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: 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_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1886816061u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref grabbableFlag, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1886816061u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					((GrabbableObject)this).grabbable = grabbableFlag;
				}
			}
		}

		[ServerRpc]
		public void forciblyUpdateTransformServerRpc(Vector3 pos, Quaternion rot)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Invalid comparison between Unknown and I4
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//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_00dc: 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)((NetworkBehaviour)this).__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(2271369316u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref pos);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref rot);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2271369316u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				forciblyUpdateTransformClientRpc(pos, rot);
			}
		}

		[ClientRpc]
		public void forciblyUpdateTransformClientRpc(Vector3 pos, Quaternion rot)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: 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_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(279720723u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe(ref pos);
					((FastBufferWriter)(ref val2)).WriteValueSafe(ref rot);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 279720723u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					((Component)this).transform.position = pos;
					((Component)this).transform.rotation = rot;
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void replaceThrowableLandmineToLandmineServerRpc(Vector3 pos, Quaternion rot)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: 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_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: 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)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				ServerRpcParams val = default(ServerRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2012805193u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref pos);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref rot);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2012805193u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("TL => L Server");
				}
				replaceThrowableLandmineToLandmineClientRpc(pos, rot);
			}
		}

		[ClientRpc]
		public void replaceThrowableLandmineToLandmineClientRpc(Vector3 pos, Quaternion rot)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: 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_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Expected O, but got Unknown
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: 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)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(384742661u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref pos);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref rot);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 384742661u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("TL => L Client");
			}
			PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
			FieldInfo fieldInfo = AccessTools.Field(typeof(PlayerControllerB), "currentlyGrabbingObject");
			GrabbableObject val3 = (GrabbableObject)fieldInfo.GetValue(localPlayerController);
			if ((Object)(object)val3 != (Object)null && ((Object)val3).name == "ThrowableLandmine(Clone)" && ((Object)val3).GetInstanceID() == ((Object)this).GetInstanceID())
			{
				localPlayerController.isGrabbingObjectAnimation = false;
			}
			if (GameNetworkManager.Instance.isHostingGame)
			{
				GameObject landmineRef = TMEUtils.landmineRef;
				if (!((Object)(object)landmineRef == (Object)null))
				{
					GameObject val4 = Object.Instantiate<GameObject>(landmineRef, pos, rot);
					val4.GetComponent<NetworkObject>().Spawn(true);
					LandmineExtension componentInChildren = val4.GetComponentInChildren<LandmineExtension>();
					componentInChildren.AssignCodeServerRpc();
					hasSpawnedMine = true;
					Object.Destroy((Object)(object)((Component)((Component)this).transform).gameObject);
				}
			}
		}

		public override void Update()
		{
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			((GrabbableObject)this).grabbable = true;
			if (t < 1f)
			{
				t += Time.deltaTime;
			}
			if (((GrabbableObject)this).isHeld)
			{
				if (!overrideLCPhysics)
				{
					overrideLCPhysics = true;
				}
			}
			else if (t > 0.1f && !isMoving())
			{
				if (((NetworkBehaviour)this).IsOwner && !((GrabbableObject)this).isHeld && !updatedPos)
				{
					if (ConfigSettings.enableDebugging.Value)
					{
						LogHandler.Log("IsOwner: " + ((NetworkBehaviour)this).IsOwner);
					}
					updatedPos = true;
					forciblyUpdateTransformServerRpc(((Component)this).transform.position, ((Component)this).transform.rotation);
				}
				if (((NetworkBehaviour)this).IsOwner && isThrown && (Object)(object)playerLastHeldBy != (Object)null && playerLastHeldBy.actualClientId == GameNetworkManager.Instance.localPlayerController.actualClientId && allowConversion)
				{
					if (TMEUtils.shipState == "LANDED")
					{
						if (!hasSpawnedMine)
						{
							if (ConfigSettings.enableDebugging.Value)
							{
								LogHandler.Log("create thing");
							}
							if (ConfigSettings.enableDebugging.Value)
							{
								Vector3 position = ((Component)this).transform.position;
								string? text = ((object)(Vector3)(ref position)).ToString();
								Quaternion rotation = ((Component)this).transform.rotation;
								LogHandler.Log(text + " - " + ((object)(Quaternion)(ref rotation)).ToString());
							}
							replaceThrowableLandmineToLandmineServerRpc(((Component)this).transform.position, ((Component)this).transform.rotation);
						}
					}
					else
					{
						allowConversion = false;
						isThrown = false;
					}
				}
				if (((NetworkBehaviour)this).IsHost && overrideLCPhysics)
				{
					overrideLCPhysics = false;
				}
			}
			base.Update();
		}

		protected override void __initializeVariables()
		{
			if (allowConversionNet == null)
			{
				throw new Exception("ThrowableLandmine.allowConversionNet cannot be null. All NetworkVariableBase instances must be initialized.");
			}
			((NetworkVariableBase)allowConversionNet).Initialize((NetworkBehaviour)(object)this);
			((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)allowConversionNet, "allowConversionNet");
			((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)allowConversionNet);
			if (throwDirNet == null)
			{
				throw new Exception("ThrowableLandmine.throwDirNet cannot be null. All NetworkVariableBase instances must be initialized.");
			}
			((NetworkVariableBase)throwDirNet).Initialize((NetworkBehaviour)(object)this);
			((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)throwDirNet, "throwDirNet");
			((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)throwDirNet);
			base.__initializeVariables();
		}

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_ThrowableLandmine()
		{
			//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
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Expected O, but got Unknown
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Expected O, but got Unknown
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Expected O, but got Unknown
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Expected O, but got Unknown
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Expected O, but got Unknown
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Expected O, but got Unknown
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(2942029642u, new RpcReceiveHandler(__rpc_handler_2942029642));
			NetworkManager.__rpc_func_table.Add(1032247209u, new RpcReceiveHandler(__rpc_handler_1032247209));
			NetworkManager.__rpc_func_table.Add(2666571464u, new RpcReceiveHandler(__rpc_handler_2666571464));
			NetworkManager.__rpc_func_table.Add(1573592809u, new RpcReceiveHandler(__rpc_handler_1573592809));
			NetworkManager.__rpc_func_table.Add(542901878u, new RpcReceiveHandler(__rpc_handler_542901878));
			NetworkManager.__rpc_func_table.Add(2497715406u, new RpcReceiveHandler(__rpc_handler_2497715406));
			NetworkManager.__rpc_func_table.Add(1886816061u, new RpcReceiveHandler(__rpc_handler_1886816061));
			NetworkManager.__rpc_func_table.Add(2271369316u, new RpcReceiveHandler(__rpc_handler_2271369316));
			NetworkManager.__rpc_func_table.Add(279720723u, new RpcReceiveHandler(__rpc_handler_279720723));
			NetworkManager.__rpc_func_table.Add(2012805193u, new RpcReceiveHandler(__rpc_handler_2012805193));
			NetworkManager.__rpc_func_table.Add(384742661u, new RpcReceiveHandler(__rpc_handler_384742661));
		}

		private static void __rpc_handler_2942029642(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				Vector3 throwVel = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref throwVel);
				Vector3 pos = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref pos);
				Quaternion rot = default(Quaternion);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref rot);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ThrowableLandmine)(object)target).ThrowObjectServerRpc(throwVel, pos, rot);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1032247209(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				Vector3 throwVel = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref throwVel);
				Vector3 pos = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref pos);
				Quaternion rot = default(Quaternion);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref rot);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((ThrowableLandmine)(object)target).ThrowObjectClientRpc(throwVel, pos, rot);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2666571464(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_002f: 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_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				bool enabled = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref enabled, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ThrowableLandmine)(object)target).activateServerRpc(enabled);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1573592809(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_002f: 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_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				bool enabled = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref enabled, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((ThrowableLandmine)(object)target).activateClientRpc(enabled);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_542901878(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_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: 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_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
			{
				Vector3 pos = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref pos);
				Quaternion rot = default(Quaternion);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref rot);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ThrowableLandmine)(object)target).repositionServerRpc(pos, rot);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2497715406(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 grabbableFlag = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref grabbableFlag, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ThrowableLandmine)(object)target).updateGrabbableServerRpc(grabbableFlag);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1886816061(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_002f: 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_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				bool grabbableFlag = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref grabbableFlag, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((ThrowableLandmine)(object)target).updateGrabbableClientRpc(grabbableFlag);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2271369316(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_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: 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_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
			{
				Vector3 pos = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref pos);
				Quaternion rot = default(Quaternion);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref rot);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ThrowableLandmine)(object)target).forciblyUpdateTransformServerRpc(pos, rot);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_279720723(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				Vector3 pos = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref pos);
				Quaternion rot = default(Quaternion);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref rot);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((ThrowableLandmine)(object)target).forciblyUpdateTransformClientRpc(pos, rot);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2012805193(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				Vector3 pos = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref pos);
				Quaternion rot = default(Quaternion);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref rot);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ThrowableLandmine)(object)target).replaceThrowableLandmineToLandmineServerRpc(pos, rot);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_384742661(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				Vector3 pos = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref pos);
				Quaternion rot = default(Quaternion);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref rot);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((ThrowableLandmine)(object)target).replaceThrowableLandmineToLandmineClientRpc(pos, rot);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "ThrowableLandmine";
		}
	}
}
namespace TooManyExplosions.MonoBehaviours.Extensions
{
	internal class LandmineExtension : NetworkBehaviour
	{
		[ServerRpc(RequireOwnership = false)]
		public void destroyLandmineServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: 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_007c: 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 != 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				ServerRpcParams val = default(ServerRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2954119581u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2954119581u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost))
			{
				return;
			}
			Landmine component = ((Component)this).gameObject.GetComponent<Landmine>();
			if ((Object)(object)component == (Object)null)
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("LANDMINE DOES NOT EXIST");
				}
				return;
			}
			if ((Object)(object)((NetworkBehaviour)this).NetworkObject == (Object)null)
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("NetworkObject DOES NOT EXIST");
				}
				return;
			}
			if (ConfigSettings.enableDebugging.Value)
			{
				LogHandler.Log("LE: Destroying Landmine : SERVER");
			}
			destroyLandmineClientRpc();
		}

		[ClientRpc]
		public void destroyLandmineClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: 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(2688244454u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2688244454u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("LE: Destroying Landmine : CLIENT");
				}
				Landmine component = ((Component)this).gameObject.GetComponent<Landmine>();
				FieldInfo fieldInfo = AccessTools.Field(typeof(Landmine), "mineActivated");
				fieldInfo.SetValue(component, false);
				if (GameNetworkManager.Instance.isHostingGame)
				{
					Vector3 position = ((Component)this).transform.parent.position;
					Quaternion rotation = ((Component)this).transform.parent.rotation;
					((NetworkBehaviour)this).NetworkObject.Despawn(true);
					position.y += 0.25f;
					NetcodeManager.Instance.spawnLandminePropServerRpc(position, rotation);
				}
			}
		}

		[ServerRpc]
		public void AssignCodeServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: 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_00c2: 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(2096302549u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2096302549u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				int idx = TMEUtils.rand.Next(RoundManager.Instance.possibleCodesForBigDoors.Length);
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("TAO: " + idx + " - " + RoundManager.Instance.possibleCodesForBigDoors.Length);
				}
				AssignCodeClientRpc(idx);
			}
		}

		[ClientRpc]
		public void AssignCodeClientRpc(int idx)
		{
			//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(1445944106u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, idx);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1445944106u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				TerminalAccessibleObject componentInParent = ((Component)this).gameObject.GetComponentInParent<TerminalAccessibleObject>();
				if (ConfigSettings.enableDebugging.Value)
				{
					LogHandler.Log("SETTING TAO");
				}
				componentInParent.SetCodeTo(idx);
			}
		}

		protected override void __initializeVariables()
		{
			((NetworkBehaviour)this).__initializeVariables();
		}

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_LandmineExtension()
		{
			//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
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(2954119581u, new RpcReceiveHandler(__rpc_handler_2954119581));
			NetworkManager.__rpc_func_table.Add(2688244454u, new RpcReceiveHandler(__rpc_handler_2688244454));
			NetworkManager.__rpc_func_table.Add(2096302549u, new RpcReceiveHandler(__rpc_handler_2096302549));
			NetworkManager.__rpc_func_table.Add(1445944106u, new RpcReceiveHandler(__rpc_handler_1445944106));
		}

		private static void __rpc_handler_2954119581(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: 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)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((LandmineExtension)(object)target).destroyLandmineServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2688244454(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: 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)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((LandmineExtension)(object)target).destroyLandmineClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2096302549(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_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: 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
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((LandmineExtension)(object)target).AssignCodeServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1445944106(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)
			{
				int idx = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref idx);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((LandmineExtension)(object)target).AssignCodeClientRpc(idx);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "LandmineExtension";
		}
	}
	internal class PlayerControllerBExtension : NetworkBehaviour
	{
		public bool triggeredAfterDeathExplosiveEvent = false;

		public bool prevGroundedState = true;

		public float startedFallingHeight = 0f;

		public Vector3 prevPos = default(Vector3);

		public Vector3 worldVelocity = default(Vector3);

		protected override void __initializeVariables()
		{
			((NetworkBehaviour)this).__initializeVaria