Decompiled source of AddonFusion v1.0.9

AddonFusion.dll

Decompiled a month ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AddonFusion.AddonValues;
using AddonFusion.Behaviours;
using AddonFusion.NetcodePatcher;
using AddonFusion.Patches;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using LethalLib.Modules;
using Microsoft.CodeAnalysis;
using Unity.Netcode;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("ClientNetworkTransform")]
[assembly: IgnoresAccessChecksTo("DissonanceVoip")]
[assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")]
[assembly: IgnoresAccessChecksTo("Unity.Jobs")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")]
[assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")]
[assembly: IgnoresAccessChecksTo("Unity.Services.QoS")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Relay")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("AddonFusion")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("AddonFusion")]
[assembly: AssemblyTitle("AddonFusion")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
internal class <Module>
{
	static <Module>()
	{
	}
}
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace AddonFusion
{
	internal class Addon : MonoBehaviour
	{
		public bool hasAddon;

		public string addonName;

		public string toolTip;

		public bool isFlashing;

		public float maxSpotAngle;

		public void SetSpecificFields()
		{
			GrabbableObject component = ((Component)this).GetComponent<GrabbableObject>();
			FlashlightItem val = (FlashlightItem)(object)((component is FlashlightItem) ? component : null);
			if (val != null)
			{
				isFlashing = false;
				maxSpotAngle = val.flashlightBulb.spotAngle;
			}
		}

		public void RemoveAddon()
		{
			GrabbableObject componentInParent = ((Component)this).GetComponentInParent<GrabbableObject>();
			if ((Object)(object)componentInParent != (Object)null)
			{
				ScanNodeProperties componentInChildren = ((Component)componentInParent).gameObject.GetComponentInChildren<ScanNodeProperties>();
				if ((Object)(object)componentInChildren != (Object)null)
				{
					string text = "\nAddon: " + addonName;
					if (componentInChildren.subText.Contains(text))
					{
						componentInChildren.subText = componentInChildren.subText.Remove(componentInChildren.subText.IndexOf(text), text.Length);
					}
					else
					{
						text = "Addon: " + addonName;
						if (componentInChildren.subText.Contains(text))
						{
							componentInChildren.subText = componentInChildren.subText.Remove(componentInChildren.subText.IndexOf(text), text.Length);
						}
					}
				}
			}
			hasAddon = false;
			addonName = null;
			toolTip = null;
		}
	}
	internal class AddonFusionNetworkManager : NetworkBehaviour
	{
		public static AddonFusionNetworkManager Instance;

		public void Awake()
		{
			Instance = this;
		}

		[ServerRpc(RequireOwnership = false)]
		public void DestroyObjectServerRpc(NetworkObjectReference obj)
		{
			//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)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2337963438u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2337963438u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					DestroyObjectClientRpc(obj);
				}
			}
		}

		[ClientRpc]
		private void DestroyObjectClientRpc(NetworkObjectReference obj)
		{
			//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)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2490752138u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2490752138u, val, (RpcDelivery)0);
				}
				NetworkObject val3 = default(NetworkObject);
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && ((NetworkObjectReference)(ref obj)).TryGet(ref val3, (NetworkManager)null))
				{
					DestroyObject(((Component)val3).gameObject.GetComponentInChildren<GrabbableObject>());
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void ItemExplodeServerRpc(NetworkObjectReference obj, Vector3 position)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2685597582u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
					((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2685597582u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					ItemExplodeClientRpc(obj, position);
				}
			}
		}

		[ClientRpc]
		private void ItemExplodeClientRpc(NetworkObjectReference obj, Vector3 position)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3002418346u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
					((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3002418346u, val, (RpcDelivery)0);
				}
				NetworkObject val3 = default(NetworkObject);
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && ((NetworkObjectReference)(ref obj)).TryGet(ref val3, (NetworkManager)null))
				{
					DestroyObject(((Component)val3).gameObject.GetComponentInChildren<GrabbableObject>());
					Landmine.SpawnExplosion(position, true, 5.7f, 6f, 50, 0f, (GameObject)null, false);
				}
			}
		}

		public void DestroyObject(GrabbableObject grabbableObject)
		{
			if ((Object)(object)grabbableObject != (Object)null)
			{
				FlashlightItem val = (FlashlightItem)(object)((grabbableObject is FlashlightItem) ? grabbableObject : null);
				if (val != null && ((GrabbableObject)val).isBeingUsed)
				{
					((GrabbableObject)val).isBeingUsed = false;
					val.usingPlayerHelmetLight = false;
					((Behaviour)val.flashlightBulbGlow).enabled = false;
					val.SwitchFlashlight(false);
				}
				grabbableObject.DestroyObjectInHand(grabbableObject.playerHeldBy);
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void BlindPlayerServerRpc(int playerId, float flashFilter)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_008a: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2906441364u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerId);
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref flashFilter, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2906441364u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					BlindPlayerClientRpc(playerId, flashFilter);
				}
			}
		}

		[ClientRpc]
		public void BlindPlayerClientRpc(int playerId, float flashFilter)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_008a: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3745919737u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerId);
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref flashFilter, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3745919737u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && (Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)(object)StartOfRound.Instance.allPlayerObjects[playerId].GetComponent<PlayerControllerB>() && HUDManager.Instance.flashFilter < flashFilter)
				{
					HUDManager.Instance.flashFilter = flashFilter;
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void SetPlayerParryingServerRpc(int playerId, bool enable)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_008a: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(4220854600u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerId);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref enable, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 4220854600u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					SetPlayerParryingClientRpc(playerId, enable);
				}
			}
		}

		[ClientRpc]
		private void SetPlayerParryingClientRpc(int playerId, bool enable)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_008a: 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_00a4: 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(2902647558u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, playerId);
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref enable, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2902647558u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				PlayerControllerB component = StartOfRound.Instance.allPlayerObjects[playerId].GetComponent<PlayerControllerB>();
				PlayerAFBehaviour component2 = ((Component)component).GetComponent<PlayerAFBehaviour>();
				if ((Object)(object)component != (Object)null && (Object)(object)component2 != (Object)null)
				{
					component2.isParrying = enable;
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void ParryPlayerServerRpc(int playerId, int playerWhoHitId)
		{
			//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_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1232241059u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerId);
					BytePacker.WriteValueBitPacked(val2, playerWhoHitId);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1232241059u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					ParryPlayerClientRpc(playerId, playerWhoHitId);
				}
			}
		}

		[ClientRpc]
		public void ParryPlayerClientRpc(int playerId, int playerWhoHitId)
		{
			//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_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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)
			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(2412820656u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, playerId);
				BytePacker.WriteValueBitPacked(val2, playerWhoHitId);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2412820656u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				PlayerControllerB component = StartOfRound.Instance.allPlayerObjects[playerWhoHitId].GetComponent<PlayerControllerB>();
				if ((Object)(object)component != (Object)(object)GameNetworkManager.Instance.localPlayerController)
				{
					PlayerControllerB player = StartOfRound.Instance.allPlayerObjects[playerId].GetComponent<PlayerControllerB>();
					PlayerControllerBPatch.AddParriedPlayer(player, component);
					PlayerControllerBPatch.ParryEntity(ref player, isEnemy: false);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void StunPlayerServerRpc(int playerId, float stunTime, bool isItemDropped, bool isPlayerImmobilized)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: 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_008a: 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_00a5: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(4057804157u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerId);
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref stunTime, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref isItemDropped, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref isPlayerImmobilized, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 4057804157u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost) && (isItemDropped || isPlayerImmobilized))
				{
					StunPlayerClientRpc(playerId, stunTime, isItemDropped, isPlayerImmobilized);
				}
			}
		}

		[ClientRpc]
		public void StunPlayerClientRpc(int playerId, float stunTime, bool isItemDropped, bool isPlayerImmobilized)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: 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_008a: 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_00a5: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: 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(4460014u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, playerId);
				((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref stunTime, default(ForPrimitives));
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref isItemDropped, default(ForPrimitives));
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref isPlayerImmobilized, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4460014u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			PlayerControllerB component = StartOfRound.Instance.allPlayerObjects[playerId].GetComponent<PlayerControllerB>();
			if (isItemDropped && (Object)(object)component.currentlyHeldObjectServer != (Object)null)
			{
				GrabbableObject currentlyHeldObjectServer = component.currentlyHeldObjectServer;
				Shovel val3 = (Shovel)(object)((currentlyHeldObjectServer is Shovel) ? currentlyHeldObjectServer : null);
				if (val3 != null)
				{
					val3.reelingUp = false;
					if (val3.reelingUpCoroutine != null)
					{
						((MonoBehaviour)this).StopCoroutine(val3.reelingUpCoroutine);
						val3.reelingUpCoroutine = null;
					}
					if ((Object)(object)component == (Object)(object)GameNetworkManager.Instance.localPlayerController)
					{
						component.DiscardHeldObject(false, (NetworkObject)null, default(Vector3), true);
					}
				}
			}
			if (isPlayerImmobilized)
			{
				((MonoBehaviour)this).StartCoroutine(StunPlayer(component, stunTime));
			}
		}

		private IEnumerator StunPlayer(PlayerControllerB player, float stunTime)
		{
			GameObject stunEffect = Object.Instantiate<GameObject>(AddonFusion.stunParticle, ((Component)player.gameplayCamera).transform.position + Vector3.up * 0.1f + ((Component)player.gameplayCamera).transform.right * -0.3f, ((Component)player).transform.rotation);
			stunEffect.transform.SetParent(((Component)player).transform);
			if ((Object)(object)player == (Object)(object)GameNetworkManager.Instance.localPlayerController)
			{
				AFUtilities.EnablePlayerActions(enable: false);
				player.disableLookInput = true;
				player.inSpecialInteractAnimation = true;
				player.snapToServerPosition = true;
			}
			yield return (object)new WaitForSeconds(stunTime);
			if ((Object)(object)player == (Object)(object)GameNetworkManager.Instance.localPlayerController)
			{
				AFUtilities.EnablePlayerActions(enable: true);
				player.disableLookInput = false;
				player.inSpecialInteractAnimation = false;
				player.snapToServerPosition = false;
			}
			Object.Destroy((Object)(object)stunEffect);
		}

		[ServerRpc(RequireOwnership = false)]
		public void StunEnemyServerRpc(NetworkObjectReference enemyObject, float stunTime, int playerId)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: 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_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: 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_00ff: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3066553978u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref enemyObject, default(ForNetworkSerializable));
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref stunTime, default(ForPrimitives));
					BytePacker.WriteValueBitPacked(val2, playerId);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3066553978u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					StunEnemyClientRpc(enemyObject, stunTime, playerId);
				}
			}
		}

		[ClientRpc]
		public void StunEnemyClientRpc(NetworkObjectReference enemyObject, float stunTime, int playerId)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: 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_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: 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)
			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(199093389u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref enemyObject, default(ForNetworkSerializable));
				((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref stunTime, default(ForPrimitives));
				BytePacker.WriteValueBitPacked(val2, playerId);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 199093389u, val, (RpcDelivery)0);
			}
			NetworkObject val3 = default(NetworkObject);
			if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && ((NetworkObjectReference)(ref enemyObject)).TryGet(ref val3, (NetworkManager)null))
			{
				EnemyAI componentInChildren = ((Component)val3).gameObject.GetComponentInChildren<EnemyAI>();
				if (componentInChildren != null)
				{
					componentInChildren.SetEnemyStunned(true, stunTime, StartOfRound.Instance.allPlayerObjects[playerId].GetComponent<PlayerControllerB>());
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void RemoveSprayPaintDecalServerRpc(NetworkObjectReference obj, Vector3 position)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3892143410u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
					((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3892143410u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					RemoveSprayPaintDecalClientRpc(obj, position);
				}
			}
		}

		[ClientRpc]
		private void RemoveSprayPaintDecalClientRpc(NetworkObjectReference obj, Vector3 position)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: 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(265515377u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 265515377u, val, (RpcDelivery)0);
			}
			NetworkObject val3 = default(NetworkObject);
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost) || !((NetworkObjectReference)(ref obj)).TryGet(ref val3, (NetworkManager)null))
			{
				return;
			}
			SprayPaintItem componentInChildren = ((Component)val3).gameObject.GetComponentInChildren<SprayPaintItem>();
			if (!((Object)(object)componentInChildren != (Object)null))
			{
				return;
			}
			foreach (GameObject sprayPaintDecal in SprayPaintItem.sprayPaintDecals)
			{
				if (sprayPaintDecal.transform.position == position)
				{
					sprayPaintDecal.SetActive(false);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void SetAddonServerRpc(NetworkObjectReference obj, string addonName)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: 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_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: 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(1706949683u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				bool flag = addonName != null;
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives));
				if (flag)
				{
					((FastBufferWriter)(ref val2)).WriteValueSafe(addonName, false);
				}
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1706949683u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				SetAddonClientRpc(obj, addonName);
			}
		}

		[ClientRpc]
		public void SetAddonClientRpc(NetworkObjectReference obj, string addonName)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: 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_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: 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(3910001185u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				bool flag = addonName != null;
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives));
				if (flag)
				{
					((FastBufferWriter)(ref val2)).WriteValueSafe(addonName, false);
				}
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3910001185u, val, (RpcDelivery)0);
			}
			NetworkObject val3 = default(NetworkObject);
			if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && ((NetworkObjectReference)(ref obj)).TryGet(ref val3, (NetworkManager)null))
			{
				SetAddon(((Component)val3).gameObject.GetComponentInChildren<GrabbableObject>(), addonName);
			}
		}

		public void SetAddon(GrabbableObject grabbableObject, string addonName)
		{
			if ((Object)(object)grabbableObject != (Object)null)
			{
				Addon addon = ((Component)grabbableObject).gameObject.GetComponent<Addon>() ?? ((Component)grabbableObject).gameObject.AddComponent<Addon>();
				addon.hasAddon = true;
				addon.addonName = addonName;
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void SetEphemeralServerRpc(NetworkObjectReference obj, int maxUse)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3454392667u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
					BytePacker.WriteValueBitPacked(val2, maxUse);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3454392667u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					SetEphemeralClientRpc(obj, maxUse);
				}
			}
		}

		[ClientRpc]
		public void SetEphemeralClientRpc(NetworkObjectReference obj, int maxUse)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(680614074u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
					BytePacker.WriteValueBitPacked(val2, maxUse);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 680614074u, val, (RpcDelivery)0);
				}
				NetworkObject val3 = default(NetworkObject);
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && ((NetworkObjectReference)(ref obj)).TryGet(ref val3, (NetworkManager)null))
				{
					SetEphemeralItem(((Component)val3).gameObject.GetComponentInChildren<GrabbableObject>(), maxUse);
				}
			}
		}

		public void SetEphemeralItem(GrabbableObject grabbableObject, int maxUse)
		{
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Expected O, but got Unknown
			//IL_00f5: 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_012b: 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)
			if (!((Object)(object)grabbableObject != (Object)null))
			{
				return;
			}
			grabbableObject.itemProperties.isScrap = false;
			grabbableObject.scrapValue = 0;
			EphemeralItem ephemeralItem = ((Component)grabbableObject).gameObject.GetComponent<EphemeralItem>() ?? ((Component)grabbableObject).gameObject.AddComponent<EphemeralItem>();
			ephemeralItem.isEphemeral = true;
			FlashlightItem val = (FlashlightItem)(object)((grabbableObject is FlashlightItem) ? grabbableObject : null);
			if (val != null)
			{
				((GrabbableObject)val).insertedBattery.charge = (float)maxUse / 100f;
			}
			else
			{
				SprayPaintItem val2 = (SprayPaintItem)(object)((grabbableObject is SprayPaintItem) ? grabbableObject : null);
				if (val2 != null)
				{
					val2.sprayCanTank = (float)maxUse / 100f;
				}
				else
				{
					TetraChemicalItem val3 = (TetraChemicalItem)(object)((grabbableObject is TetraChemicalItem) ? grabbableObject : null);
					if (val3 != null)
					{
						val3.fuel = (float)maxUse / 100f;
					}
					else
					{
						ephemeralItem.maxUse = maxUse;
					}
				}
			}
			if ((Object)(object)((Component)grabbableObject).gameObject.GetComponentInChildren<ScanNodeProperties>() == (Object)null)
			{
				GameObject val4 = new GameObject("ScanNode", new Type[2]
				{
					typeof(ScanNodeProperties),
					typeof(BoxCollider)
				});
				val4.layer = LayerMask.NameToLayer("ScanNode");
				val4.transform.localScale = Vector3.one * 1f;
				val4.transform.parent = ((Component)grabbableObject).gameObject.transform;
				GameObject val5 = val4;
				val5.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity);
				ScanNodeProperties component = val5.GetComponent<ScanNodeProperties>();
				component.scrapValue = 0;
				component.creatureScanID = -1;
				component.nodeType = 0;
				component.minRange = 1;
				component.maxRange = 13;
				component.requiresLineOfSight = true;
				component.headerText = "Ephemeral " + grabbableObject.itemProperties.itemName;
			}
			else
			{
				ScanNodeProperties componentInChildren = ((Component)grabbableObject).gameObject.GetComponentInChildren<ScanNodeProperties>();
				componentInChildren.scrapValue = 0;
				componentInChildren.creatureScanID = -1;
				componentInChildren.nodeType = 0;
				componentInChildren.headerText = "Ephemeral " + grabbableObject.itemProperties.itemName;
				componentInChildren.subText = null;
			}
		}

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

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_AddonFusionNetworkManager()
		{
			//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
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Expected O, but got Unknown
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Expected O, but got Unknown
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Expected O, but got Unknown
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Expected O, but got Unknown
			//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Expected O, but got Unknown
			//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Expected O, but got Unknown
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: Expected O, but got Unknown
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0201: Expected O, but got Unknown
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(2337963438u, new RpcReceiveHandler(__rpc_handler_2337963438));
			NetworkManager.__rpc_func_table.Add(2490752138u, new RpcReceiveHandler(__rpc_handler_2490752138));
			NetworkManager.__rpc_func_table.Add(2685597582u, new RpcReceiveHandler(__rpc_handler_2685597582));
			NetworkManager.__rpc_func_table.Add(3002418346u, new RpcReceiveHandler(__rpc_handler_3002418346));
			NetworkManager.__rpc_func_table.Add(2906441364u, new RpcReceiveHandler(__rpc_handler_2906441364));
			NetworkManager.__rpc_func_table.Add(3745919737u, new RpcReceiveHandler(__rpc_handler_3745919737));
			NetworkManager.__rpc_func_table.Add(4220854600u, new RpcReceiveHandler(__rpc_handler_4220854600));
			NetworkManager.__rpc_func_table.Add(2902647558u, new RpcReceiveHandler(__rpc_handler_2902647558));
			NetworkManager.__rpc_func_table.Add(1232241059u, new RpcReceiveHandler(__rpc_handler_1232241059));
			NetworkManager.__rpc_func_table.Add(2412820656u, new RpcReceiveHandler(__rpc_handler_2412820656));
			NetworkManager.__rpc_func_table.Add(4057804157u, new RpcReceiveHandler(__rpc_handler_4057804157));
			NetworkManager.__rpc_func_table.Add(4460014u, new RpcReceiveHandler(__rpc_handler_4460014));
			NetworkManager.__rpc_func_table.Add(3066553978u, new RpcReceiveHandler(__rpc_handler_3066553978));
			NetworkManager.__rpc_func_table.Add(199093389u, new RpcReceiveHandler(__rpc_handler_199093389));
			NetworkManager.__rpc_func_table.Add(3892143410u, new RpcReceiveHandler(__rpc_handler_3892143410));
			NetworkManager.__rpc_func_table.Add(265515377u, new RpcReceiveHandler(__rpc_handler_265515377));
			NetworkManager.__rpc_func_table.Add(1706949683u, new RpcReceiveHandler(__rpc_handler_1706949683));
			NetworkManager.__rpc_func_table.Add(3910001185u, new RpcReceiveHandler(__rpc_handler_3910001185));
			NetworkManager.__rpc_func_table.Add(3454392667u, new RpcReceiveHandler(__rpc_handler_3454392667));
			NetworkManager.__rpc_func_table.Add(680614074u, new RpcReceiveHandler(__rpc_handler_680614074));
		}

		private static void __rpc_handler_2337963438(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_004f: 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)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).DestroyObjectServerRpc(obj);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2490752138(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_004f: 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)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).DestroyObjectClientRpc(obj);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2685597582(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_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				Vector3 position = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref position);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).ItemExplodeServerRpc(obj, position);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3002418346(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_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				Vector3 position = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref position);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).ItemExplodeClientRpc(obj, position);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2906441364(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				float flashFilter = default(float);
				((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref flashFilter, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).BlindPlayerServerRpc(playerId, flashFilter);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3745919737(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				float flashFilter = default(float);
				((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref flashFilter, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).BlindPlayerClientRpc(playerId, flashFilter);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_4220854600(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				bool enable = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref enable, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).SetPlayerParryingServerRpc(playerId, enable);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2902647558(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				bool enable = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref enable, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).SetPlayerParryingClientRpc(playerId, enable);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1232241059(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: 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)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				int playerWhoHitId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerWhoHitId);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).ParryPlayerServerRpc(playerId, playerWhoHitId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2412820656(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: 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)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				int playerWhoHitId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerWhoHitId);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).ParryPlayerClientRpc(playerId, playerWhoHitId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_4057804157(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: 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_005d: 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)
			//IL_0078: 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_00ad: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				float stunTime = default(float);
				((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref stunTime, default(ForPrimitives));
				bool isItemDropped = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref isItemDropped, default(ForPrimitives));
				bool isPlayerImmobilized = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref isPlayerImmobilized, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).StunPlayerServerRpc(playerId, stunTime, isItemDropped, isPlayerImmobilized);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_4460014(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: 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_005d: 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)
			//IL_0078: 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_00ad: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				float stunTime = default(float);
				((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref stunTime, default(ForPrimitives));
				bool isItemDropped = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref isItemDropped, default(ForPrimitives));
				bool isPlayerImmobilized = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref isPlayerImmobilized, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).StunPlayerClientRpc(playerId, stunTime, isItemDropped, isPlayerImmobilized);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3066553978(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_004a: 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)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference enemyObject = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref enemyObject, default(ForNetworkSerializable));
				float stunTime = default(float);
				((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref stunTime, default(ForPrimitives));
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).StunEnemyServerRpc(enemyObject, stunTime, playerId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_199093389(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_004a: 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)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference enemyObject = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref enemyObject, default(ForNetworkSerializable));
				float stunTime = default(float);
				((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref stunTime, default(ForPrimitives));
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).StunEnemyClientRpc(enemyObject, stunTime, playerId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3892143410(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_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				Vector3 position = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref position);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).RemoveSprayPaintDecalServerRpc(obj, position);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_265515377(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_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				Vector3 position = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref position);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).RemoveSprayPaintDecalClientRpc(obj, position);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1706949683(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_004a: 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)
			//IL_007c: 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_009a: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				bool flag = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
				string addonName = null;
				if (flag)
				{
					((FastBufferReader)(ref reader)).ReadValueSafe(ref addonName, false);
				}
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).SetAddonServerRpc(obj, addonName);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3910001185(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_004a: 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)
			//IL_007c: 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_009a: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				bool flag = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
				string addonName = null;
				if (flag)
				{
					((FastBufferReader)(ref reader)).ReadValueSafe(ref addonName, false);
				}
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).SetAddonClientRpc(obj, addonName);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3454392667(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_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				int maxUse = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref maxUse);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((AddonFusionNetworkManager)(object)target).SetEphemeralServerRpc(obj, maxUse);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_680614074(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_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference obj = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				int maxUse = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref maxUse);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AddonFusionNetworkManager)(object)target).SetEphemeralClientRpc(obj, maxUse);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		protected internal override string __getTypeName()
		{
			return "AddonFusionNetworkManager";
		}
	}
	internal class AFUtilities
	{
		public static Addon GetAddonInstalled(Component component, string addonName)
		{
			Addon component2 = component.gameObject.GetComponent<Addon>();
			if ((Object)(object)component2 != (Object)null && component2.hasAddon && !string.IsNullOrEmpty(component2.addonName) && component2.addonName.Equals(addonName))
			{
				return component2;
			}
			return null;
		}

		public static Addon GetAddonInstalled(Component component)
		{
			Addon component2 = component.gameObject.GetComponent<Addon>();
			if ((Object)(object)component2 != (Object)null && component2.hasAddon)
			{
				return component2;
			}
			return null;
		}

		public static EphemeralItem GetEphemeralItem(Component component)
		{
			EphemeralItem component2 = component.gameObject.GetComponent<EphemeralItem>();
			if ((Object)(object)component2 != (Object)null && component2.isEphemeral)
			{
				return component2;
			}
			return null;
		}

		public static void EnablePlayerActions(bool enable)
		{
			string[] array = new string[11]
			{
				"Move", "Jump", "Crouch", "Interact", "ItemSecondaryUse", "ItemTertiaryUse", "ActivateItem", "SwitchItem", "InspectItem", "Emote1",
				"Emote2"
			};
			string[] array2 = array;
			foreach (string text in array2)
			{
				if (enable)
				{
					IngamePlayerSettings.Instance.playerInput.actions.FindAction(text, false).Enable();
				}
				else
				{
					IngamePlayerSettings.Instance.playerInput.actions.FindAction(text, false).Disable();
				}
			}
		}
	}
	internal class ConfigManager
	{
		public static ConfigEntry<bool> isEphemeralEnabled;

		public static ConfigEntry<bool> isEphemeralDestroyEnabled;

		public static ConfigEntry<int> minEphemeralItem;

		public static ConfigEntry<int> maxEphemeralItem;

		public static ConfigEntry<int> spawnAddonPerItem;

		public static ConfigEntry<bool> isCapsuleEnabled;

		public static ConfigEntry<bool> isCapsuleSpawnable;

		public static ConfigEntry<int> capsuleRarity;

		public static ConfigEntry<bool> isCapsulePurchasable;

		public static ConfigEntry<int> capsulePrice;

		public static ConfigEntry<bool> isCapsuleCharge;

		public static ConfigEntry<string> capsuleItemValues;

		public static ConfigEntry<bool> isSaltTankEnabled;

		public static ConfigEntry<bool> isSaltTankSpawnable;

		public static ConfigEntry<int> saltTankRarity;

		public static ConfigEntry<bool> isSaltTankPurchasable;

		public static ConfigEntry<int> saltTankPrice;

		public static ConfigEntry<string> saltTankEntityValues;

		public static ConfigEntry<bool> isCordEnabled;

		public static ConfigEntry<bool> isCordSpawnable;

		public static ConfigEntry<int> cordRarity;

		public static ConfigEntry<bool> isCordPurchasable;

		public static ConfigEntry<int> cordPrice;

		public static ConfigEntry<float> cordWindowDuration;

		public static ConfigEntry<float> cordSpamCooldown;

		public static ConfigEntry<bool> canCordStunDropItem;

		public static ConfigEntry<bool> canCordStunImmobilize;

		public static ConfigEntry<string> cordEntityValues;

		public static ConfigEntry<string> cordExclusions;

		public static ConfigEntry<bool> isLensEnabled;

		public static ConfigEntry<bool> isLensSpawnable;

		public static ConfigEntry<int> lensRarity;

		public static ConfigEntry<bool> isLensPurchasable;

		public static ConfigEntry<int> lensPrice;

		public static ConfigEntry<string> lensEntityValues;

		public static ConfigEntry<string> lensExclusions;

		public static ConfigEntry<bool> isSharpenerEnabled;

		public static ConfigEntry<bool> isSharpenerSpawnable;

		public static ConfigEntry<int> sharpenerRarity;

		public static ConfigEntry<bool> isSharpenerPurchasable;

		public static ConfigEntry<int> sharpenerPrice;

		public static ConfigEntry<string> sharpenerEntityValues;

		public static ConfigEntry<bool> isSenzuEnabled;

		public static ConfigEntry<bool> isSenzuSpawnable;

		public static ConfigEntry<int> senzuRarity;

		public static ConfigEntry<bool> isSenzuPurchasable;

		public static ConfigEntry<int> senzuPrice;

		public static ConfigEntry<float> senzuReviveDuration;

		public static ConfigEntry<float> senzuHealthRegenDuration;

		public static ConfigEntry<float> senzuStaminaRegenDuration;

		public static ConfigEntry<bool> isPyrethrinTankEnabled;

		public static ConfigEntry<bool> isPyrethrinTankSpawnable;

		public static ConfigEntry<int> pyrethrinTankRarity;

		public static ConfigEntry<bool> isPyrethrinTankPurchasable;

		public static ConfigEntry<int> pyrethrinTankPrice;

		public static ConfigEntry<string> pyrethrinTankEntityValues;

		public static ConfigEntry<bool> isRepairModuleEnabled;

		public static ConfigEntry<bool> isRepairModuleSpawnable;

		public static ConfigEntry<int> repairModuleRarity;

		public static ConfigEntry<bool> isRepairModulePurchasable;

		public static ConfigEntry<int> repairModulePrice;

		public static ConfigEntry<int> repairModuleDuration;

		public static ConfigEntry<int> repairModuleProfit;

		public static ConfigEntry<bool> isEphemeralFlashEnabled;

		public static ConfigEntry<int> ephemeralFlashRarity;

		public static ConfigEntry<int> ephemeralFlashAddonRarity;

		public static ConfigEntry<int> ephemeralFlashMinUse;

		public static ConfigEntry<int> ephemeralFlashMaxUse;

		public static ConfigEntry<bool> isEphemeralShovelEnabled;

		public static ConfigEntry<int> ephemeralShovelRarity;

		public static ConfigEntry<int> ephemeralShovelAddonRarity;

		public static ConfigEntry<int> ephemeralShovelMinUse;

		public static ConfigEntry<int> ephemeralShovelMaxUse;

		public static ConfigEntry<bool> isEphemeralSprayPaintEnabled;

		public static ConfigEntry<int> ephemeralSprayPaintRarity;

		public static ConfigEntry<int> ephemeralSprayPaintAddonRarity;

		public static ConfigEntry<int> ephemeralSprayPaintMinUse;

		public static ConfigEntry<int> ephemeralSprayPaintMaxUse;

		public static ConfigEntry<bool> isEphemeralKnifeEnabled;

		public static ConfigEntry<int> ephemeralKnifeRarity;

		public static ConfigEntry<int> ephemeralKnifeAddonRarity;

		public static ConfigEntry<int> ephemeralKnifeMinUse;

		public static ConfigEntry<int> ephemeralKnifeMaxUse;

		public static ConfigEntry<bool> isEphemeralWeedKillerEnabled;

		public static ConfigEntry<int> ephemeralWeedKillerRarity;

		public static ConfigEntry<int> ephemeralWeedKillerAddonRarity;

		public static ConfigEntry<int> ephemeralWeedKillerMinUse;

		public static ConfigEntry<int> ephemeralWeedKillerMaxUse;

		public static ConfigEntry<bool> isEphemeralTZPEnabled;

		public static ConfigEntry<int> ephemeralTZPRarity;

		public static ConfigEntry<int> ephemeralTZPAddonRarity;

		public static ConfigEntry<int> ephemeralTZPMinUse;

		public static ConfigEntry<int> ephemeralTZPMaxUse;

		internal static void Load()
		{
			isEphemeralEnabled = AddonFusion.configFile.Bind<bool>("_Global_", "Enable ephemeral items", true, "Is the ephemeral items enabled?");
			isEphemeralDestroyEnabled = AddonFusion.configFile.Bind<bool>("_Global_", "Enable ephemeral destruction", true, "Are ephemeral items destroyed when the ship takes off?");
			minEphemeralItem = AddonFusion.configFile.Bind<int>("_Global_", "Min ephemeral item", 4, "Minimum number of ephemeral items that will spawn in the dungeon.");
			maxEphemeralItem = AddonFusion.configFile.Bind<int>("_Global_", "Max ephemeral item", 8, "Maximum number of ephemeral items that will spawn in the dungeon.");
			spawnAddonPerItem = AddonFusion.configFile.Bind<int>("_Global_", "Spawn addon per item", 1, "If this option is enabled (set to -1 to disable), it limits the number of spawnable addons based on the associated item + configured value.\nExample: If there is one flashlight without an addon, then one Flashlight Lens + 1 (default value) can spawn; if there are two flashlights, two Flashlight Lenses + 1 can spawn; if there are no flashlights, the number of Flashlight Lenses will equal the configured value.");
			isCapsuleEnabled = AddonFusion.configFile.Bind<bool>("Capsule Hoi-Poi", "Enable", true, "Is the capsule Hoi-Poi enabled?");
			isCapsuleSpawnable = AddonFusion.configFile.Bind<bool>("Capsule Hoi-Poi", "Spawnable", false, "Is the capsule Hoi-Poi spawnable?");
			capsuleRarity = AddonFusion.configFile.Bind<int>("Capsule Hoi-Poi", "Rarity", 5, "Capsule Hoi-Poi spawn rarity");
			isCapsulePurchasable = AddonFusion.configFile.Bind<bool>("Capsule Hoi-Poi", "Purchasable", true, "Is the capsule Hoi-Poi purchasable?");
			capsulePrice = AddonFusion.configFile.Bind<int>("Capsule Hoi-Poi", "Price", 30, "Capsule Hoi-Poi price");
			isCapsuleCharge = AddonFusion.configFile.Bind<bool>("Capsule Hoi-Poi", "Charge", true, "Can the capsule Hoi-Poi charge items?");
			capsuleItemValues = AddonFusion.configFile.Bind<string>("Capsule Hoi-Poi", "Values", "default:600", "Values per item, the format is ItemName:ChargeDuration.\nChargeDuration: Time required to charge the item from empty to full capacity when it's in the capsule, in seconds.");
			isSaltTankEnabled = AddonFusion.configFile.Bind<bool>("Salt Tank", "Enable", true, "Is the salt tank enabled?");
			isSaltTankSpawnable = AddonFusion.configFile.Bind<bool>("Salt Tank", "Spawnable", true, "Is the salt tank spawnable?");
			saltTankRarity = AddonFusion.configFile.Bind<int>("Salt Tank", "Rarity", 5, "Salt tank spawn rarity");
			isSaltTankPurchasable = AddonFusion.configFile.Bind<bool>("Salt Tank", "Purchasable", false, "Is the salt tank purchasable?");
			saltTankPrice = AddonFusion.configFile.Bind<int>("Salt Tank", "Price", 30, "Salt tank price");
			saltTankEntityValues = AddonFusion.configFile.Bind<string>("Salt Tank", "Values", "default:20:10", "Values per entity, the format is EntityName:BaseChance:AdditionalChance.\nBaseChance: Base chance for the entity to stop chasing when hit by a salted graffiti.\nAdditionalChance: Additional chance for the entity to stop chasing when hit by a salted graffiti.");
			isCordEnabled = AddonFusion.configFile.Bind<bool>("Protective Cord", "Enable", true, "Is the protective cord enabled?");
			isCordSpawnable = AddonFusion.configFile.Bind<bool>("Protective Cord", "Spawnable", true, "Is the protective cord spawnable?");
			cordRarity = AddonFusion.configFile.Bind<int>("Protective Cord", "Rarity", 100, "Protective cord spawn rarity");
			isCordPurchasable = AddonFusion.configFile.Bind<bool>("Protective Cord", "Purchasable", false, "Is the protective cord purchasable?");
			cordPrice = AddonFusion.configFile.Bind<int>("Protective Cord", "Price", 30, "Protective cord price");
			cordWindowDuration = AddonFusion.configFile.Bind<float>("Protective Cord", "Window duration", 0.35f, "Parrying window duration");
			cordSpamCooldown = AddonFusion.configFile.Bind<float>("Protective Cord", "Spam cooldown", 1f, "Cooldown duration per use");
			canCordStunDropItem = AddonFusion.configFile.Bind<bool>("Protective Cord", "Player item drop", true, "Does the stun cause the player to drop their weapon?");
			canCordStunImmobilize = AddonFusion.configFile.Bind<bool>("Protective Cord", "Player immobilization", true, "Does the stun immobilize the player?");
			cordEntityValues = AddonFusion.configFile.Bind<string>("Protective Cord", "Values", "default:10:1.5:5:100:10,Player:5:4:0:0:0,Flowerman:10:5:5:100:10,MouthDog:10:2.5:5:100:10", "Values per entity, the format is EntityName:CooldownDuration:StunDuration:SpeedBoostDuration:SpeedMultiplier:StaminaRegen.\nSpeedMultiplier: Speed multiplier percentage.\nStaminaRegen: Stamina regen percentage.");
			cordExclusions = AddonFusion.configFile.Bind<string>("Protective Cord", "Exclusion list", "Flowerman,MouthDog,ForestGiant", "List of creatures that will not be affected by the stun.");
			isLensEnabled = AddonFusion.configFile.Bind<bool>("Flashlight Lens", "Enable", true, "Is the flashlight lens enabled?");
			isLensSpawnable = AddonFusion.configFile.Bind<bool>("Flashlight Lens", "Spawnable", true, "Is the flashlight lens spawnable?");
			lensRarity = AddonFusion.configFile.Bind<int>("Flashlight Lens", "Rarity", 100, "Flashlight lens spawn rarity");
			isLensPurchasable = AddonFusion.configFile.Bind<bool>("Flashlight Lens", "Purchasable", false, "Is the flashlight lens purchasable?");
			lensPrice = AddonFusion.configFile.Bind<int>("Flashlight Lens", "Price", 30, "Flashlight lens price");
			lensEntityValues = AddonFusion.configFile.Bind<string>("Flashlight Lens", "Values", "default:2:3:15:120:10:10:0,Player:2:0:10:60:10:0:0,ForestGiant:2:4:30:120:20:20:0", "Values per entity, the format is EntityName:FlashDuration:StunDuration:LightAngle:EntityAngle:EntityDistance:ImmunityDuration:BatteryConsumption.\nFlashDuration: Time required to blind an enemy.\nLightAngle: Angle of the light in relation to the enemy's eyes - increasing this value makes aiming easier.\nEntityAngle: Angle of the enemy in relation to the flashlight - increasing this value makes blinding from an angle easier.");
			lensExclusions = AddonFusion.configFile.Bind<string>("Flashlight Lens", "Exclusion list", "MouthDog", "List of creatures that will not be affected by the stun.");
			isSharpenerEnabled = AddonFusion.configFile.Bind<bool>("Blade Sharpener", "Enable", true, "Is the blade sharpener enabled?");
			isSharpenerSpawnable = AddonFusion.configFile.Bind<bool>("Blade Sharpener", "Spawnable", true, "Is the blade sharpener spawnable?");
			sharpenerRarity = AddonFusion.configFile.Bind<int>("Blade Sharpener", "Rarity", 5, "Blade sharpener spawn rarity");
			isSharpenerPurchasable = AddonFusion.configFile.Bind<bool>("Blade Sharpener", "Purchasable", false, "Is the blade sharpener purchasable?");
			sharpenerPrice = AddonFusion.configFile.Bind<int>("Blade Sharpener", "Price", 30, "Blade sharpener price");
			sharpenerEntityValues = AddonFusion.configFile.Bind<string>("Blade Sharpener", "Values", "default:15:10", "Values per entity, the format is EntityName:CriticalSuccessChance:CriticalFailChance.\nCriticalSuccessChance: Chance for the player to score a critical hit and kill the enemy in one strike.\nCriticalFailChance: Chance for the player to perform a critical failure, causing the player's weapon to drop on the ground without dealing damage.");
			isSenzuEnabled = AddonFusion.configFile.Bind<bool>("Senzu", "Enable", true, "Is the senzu enabled?");
			isSenzuSpawnable = AddonFusion.configFile.Bind<bool>("Senzu", "Spawnable", false, "Is the senzu spawnable?");
			senzuRarity = AddonFusion.configFile.Bind<int>("Senzu", "Rarity", 5, "Senzu spawn rarity");
			isSenzuPurchasable = AddonFusion.configFile.Bind<bool>("Senzu", "Purchasable", true, "Is the senzu purchasable?");
			senzuPrice = AddonFusion.configFile.Bind<int>("Senzu", "Price", 30, "Senzu price");
			senzuReviveDuration = AddonFusion.configFile.Bind<float>("Senzu", "Revive duration", 60f, "Duration during which a player can be revived.");
			senzuHealthRegenDuration = AddonFusion.configFile.Bind<float>("Senzu", "Health regen duration", 25f, "Time required to regen the health from 0 to max, in seconds.");
			senzuStaminaRegenDuration = AddonFusion.configFile.Bind<float>("Senzu", "Stamina regen duration", 35f, "Time required to regen the stamina from 0 to max, in seconds.");
			isPyrethrinTankEnabled = AddonFusion.configFile.Bind<bool>("Pyrethrin Tank", "Enable", true, "Is the pyrethrin tank enabled?");
			isPyrethrinTankSpawnable = AddonFusion.configFile.Bind<bool>("Pyrethrin Tank", "Spawnable", true, "Is the pyrethrin tank spawnable?");
			pyrethrinTankRarity = AddonFusion.configFile.Bind<int>("Pyrethrin Tank", "Rarity", 5, "Pyrethrin tank spawn rarity");
			isPyrethrinTankPurchasable = AddonFusion.configFile.Bind<bool>("Pyrethrin Tank", "Purchasable", false, "Is the pyrethrin tank purchasable?");
			pyrethrinTankPrice = AddonFusion.configFile.Bind<int>("Pyrethrin Tank", "Price", 30, "Pyrethrin tank price");
			pyrethrinTankEntityValues = AddonFusion.configFile.Bind<string>("Pyrethrin Tank", "Values", "Red Locust Bees:3,Butler Bees:5,Bunker Spider:3,Hoarding bug:3,Centipede:3", "Values per entity, the format is EntityName:FleeDuration.\nFleeDuration: Duration for which the entity runs away from the player.");
			isRepairModuleEnabled = AddonFusion.configFile.Bind<bool>("Repair Module", "Enable", true, "Is the repair module enabled?");
			isRepairModuleSpawnable = AddonFusion.configFile.Bind<bool>("Repair Module", "Spawnable", true, "Is the repair module spawnable?");
			repairModuleRarity = AddonFusion.configFile.Bind<int>("Repair Module", "Rarity", 5, "Repair module spawn rarity");
			isRepairModulePurchasable = AddonFusion.configFile.Bind<bool>("Repair Module", "Purchasable", false, "Is the repair module purchasable?");
			repairModulePrice = AddonFusion.configFile.Bind<int>("Repair Module", "Price", 30, "Repair module price");
			repairModuleDurat