Decompiled source of Devious Traps v1.4.4

DeviousTraps.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using DeviousTraps.NetcodePatcher;
using DeviousTraps.src.MouseTrap;
using DeviousTraps.src.SoundCannon;
using GameNetcodeStuff;
using HarmonyLib;
using LethalConfig;
using LethalConfig.ConfigItems;
using LethalConfig.ConfigItems.Options;
using LethalLib.Extras;
using LethalLib.Modules;
using Microsoft.CodeAnalysis;
using On;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("bcs4313")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Adds an array of deadly traps")]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+cd9e2c801759e115bb3ab98ef537ed8ed3634744")]
[assembly: AssemblyProduct("DeviousTraps")]
[assembly: AssemblyTitle("DeviousTraps")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace DeviousTraps
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("DeviousTraps", "DeviousTraps", "1.4.1")]
	public class Plugin : BaseUnityPlugin
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static Func<SelectableLevel, AnimationCurve> <>9__16_0;

			public static Func<SelectableLevel, AnimationCurve> <>9__16_1;

			public static Func<SelectableLevel, AnimationCurve> <>9__16_2;

			public static Func<SelectableLevel, AnimationCurve> <>9__16_3;

			public static hook_LoadNewLevel <>9__17_0;

			internal AnimationCurve <Awake>b__16_0(SelectableLevel _)
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0066: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Expected O, but got Unknown
				int num = 0;
				double num2 = 4.8 * (double)SawSpawnrate.Value;
				return new AnimationCurve((Keyframe[])(object)new Keyframe[2]
				{
					new Keyframe(0f, (float)num, 0.267f, 0.267f, 0f, 0.246f),
					new Keyframe(1f, (float)num2, 61f, 61f, 0.015f * (float)num2, 0f)
				});
			}

			internal AnimationCurve <Awake>b__16_1(SelectableLevel _)
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0066: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Expected O, but got Unknown
				int num = 0;
				double num2 = 4.8 * (double)FlameSpawnrate.Value;
				return new AnimationCurve((Keyframe[])(object)new Keyframe[2]
				{
					new Keyframe(0f, (float)num, 0.267f, 0.267f, 0f, 0.246f),
					new Keyframe(1f, (float)num2, 61f, 61f, 0.015f * (float)num2, 0f)
				});
			}

			internal AnimationCurve <Awake>b__16_2(SelectableLevel _)
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0066: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Expected O, but got Unknown
				int num = 0;
				double num2 = 4.8 * (double)LRADSpawnrate.Value;
				return new AnimationCurve((Keyframe[])(object)new Keyframe[2]
				{
					new Keyframe(0f, (float)num, 0.267f, 0.267f, 0f, 0.246f),
					new Keyframe(1f, (float)num2, 61f, 61f, 0.015f * (float)num2, 0f)
				});
			}

			internal AnimationCurve <Awake>b__16_3(SelectableLevel _)
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0066: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Expected O, but got Unknown
				int num = 0;
				double num2 = 4.8 * (double)MouseTrapSpawnrate.Value;
				return new AnimationCurve((Keyframe[])(object)new Keyframe[2]
				{
					new Keyframe(0f, (float)num, 0.267f, 0.267f, 0f, 0.246f),
					new Keyframe(1f, (float)num2, 61f, 61f, 0.015f * (float)num2, 0f)
				});
			}

			internal void <Hooks>b__17_0(orig_LoadNewLevel orig, RoundManager self, int randomSeed, SelectableLevel newLevel)
			{
				orig.Invoke(self, randomSeed, newLevel);
				try
				{
					if (ImpactFXState.Instances != null)
					{
						foreach (ImpactFXState instance in ImpactFXState.Instances)
						{
							if ((Object)(object)instance != (Object)null)
							{
								Object.Destroy((Object)(object)instance);
							}
						}
						ImpactFXState.Instances.Clear();
					}
				}
				catch (Exception ex)
				{
					Debug.LogError((object)("Devious Traps: LRAD FX clear error: " + ex.ToString() + " this is only an issue if you see red noise fx on your screen or if you are deaf. Otherwise this is OK."));
				}
				try
				{
					if (MouseTrap.instances == null)
					{
						return;
					}
					foreach (MouseTrap instance2 in MouseTrap.instances)
					{
						if ((Object)(object)instance2 != (Object)null)
						{
							if (Object.op_Implicit((Object)(object)((Component)instance2).gameObject))
							{
								Object.Destroy((Object)(object)((Component)instance2).gameObject);
							}
							else
							{
								Object.Destroy((Object)(object)instance2);
							}
						}
					}
					MouseTrap.instances.Clear();
				}
				catch (Exception ex2)
				{
					Debug.LogError((object)("Devious Traps: Mouse Trap clear error: " + ex2.ToString() + " this is only an issue if you have mouse traps attached to you and you can't remove them. Otherwise this is OK."));
				}
			}
		}

		public static Harmony _harmony;

		public static ManualLogSource Logger;

		public static AssetBundle TrapBundle;

		public static GameObject SawTurretPrefab;

		public static GameObject SawPrefab;

		public static SpawnableMapObjectDef SawTurretDef;

		public static GameObject FlameTurretPrefab;

		public static SpawnableMapObjectDef FlameTurretDef;

		public static GameObject LRADTurretPrefab;

		public static GameObject LRADBlastPrefab;

		public static GameObject LRADImpactPrefab;

		public static SpawnableMapObjectDef LRADTurretDef;

		public static GameObject MouseTrapPrefab;

		public static GameObject MouseTrapSpawnerPrefab;

		public static SpawnableMapObjectDef MouseTrapDef;

		public static ConfigEntry<float> SawSpawnrate;

		public static ConfigEntry<float> SawDmgMult;

		public static ConfigEntry<float> SawTargetRange;

		public static ConfigEntry<float> SawWindupTime;

		public static ConfigEntry<float> SawFirerate;

		public static ConfigEntry<int> SawAmmo;

		public static ConfigEntry<float> SawReloadTime;

		public static ConfigEntry<float> SawLaunchSpeed;

		public static ConfigEntry<float> SawVolume;

		public static ConfigEntry<float> FlameSpawnrate;

		public static ConfigEntry<float> FlameDmgMult;

		public static ConfigEntry<float> FlameTargetRange;

		public static ConfigEntry<float> FlameRisingTime;

		public static ConfigEntry<float> FlameRestingTime;

		public static ConfigEntry<float> FlameRotationSpeed;

		public static ConfigEntry<float> FlameSpinningTime;

		public static ConfigEntry<float> FlameVolume;

		public static ConfigEntry<float> SmokeCooldown;

		public static ConfigEntry<float> LRADSpawnrate;

		public static ConfigEntry<float> LRADChargeTime;

		public static ConfigEntry<float> LRADReloadTime;

		public static ConfigEntry<float> LRADTargetRange;

		public static ConfigEntry<float> LRADDmgMult;

		public static ConfigEntry<float> LRADDisorientPeriod;

		public static ConfigEntry<float> LRADDizzyMult;

		public static ConfigEntry<float> LRADDrunknessMult;

		public static ConfigEntry<float> LRADFXMult;

		public static ConfigEntry<float> LRADVolume;

		public static ConfigEntry<float> LRADFXVolume;

		public static ConfigEntry<float> LRADProjectileSpeed;

		public static ConfigEntry<float> MouseTrapSpawnrate;

		public static ConfigEntry<float> BigMTrapChance;

		public static ConfigEntry<float> GiantMTrapChance;

		public static ConfigEntry<int> SmallMTrapDmg;

		public static ConfigEntry<int> BigMTrapDmg;

		public static ConfigEntry<int> GiantMTrapDmg;

		public static ConfigEntry<bool> SmallMTrapAttaches;

		public static ConfigEntry<bool> AttachmentWepRequired;

		public static ConfigEntry<bool> MTrapCanBeDisabled;

		public static ConfigEntry<string> MTrapWhitelist;

		public void LogIfDebugBuild(string text)
		{
			Logger.LogInfo((object)text);
		}

		private void Awake()
		{
			Logger = ((BaseUnityPlugin)this).Logger;
			PopulateAssets();
			bindVars();
			Type[] types = Assembly.GetExecutingAssembly().GetTypes();
			Type[] array = types;
			foreach (Type type in array)
			{
				MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
				MethodInfo[] array2 = methods;
				foreach (MethodInfo methodInfo in array2)
				{
					object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
					if (customAttributes.Length != 0)
					{
						methodInfo.Invoke(null, null);
					}
				}
			}
			SawTurretPrefab = TrapBundle.LoadAsset<GameObject>("SawTurretTrap");
			SawPrefab = TrapBundle.LoadAsset<GameObject>("SawBlade");
			SawTurretDef = TrapBundle.LoadAsset<SpawnableMapObjectDef>("SawTurretDef");
			FlameTurretPrefab = TrapBundle.LoadAsset<GameObject>("FlameTurret");
			FlameTurretDef = TrapBundle.LoadAsset<SpawnableMapObjectDef>("FlamePillarDef");
			LRADTurretPrefab = TrapBundle.LoadAsset<GameObject>("LRAD");
			LRADTurretDef = TrapBundle.LoadAsset<SpawnableMapObjectDef>("SoundTurretDef");
			LRADBlastPrefab = TrapBundle.LoadAsset<GameObject>("SoundWave");
			LRADImpactPrefab = TrapBundle.LoadAsset<GameObject>("ImpactFX");
			MouseTrapPrefab = TrapBundle.LoadAsset<GameObject>("MouseTrap");
			MouseTrapDef = TrapBundle.LoadAsset<SpawnableMapObjectDef>("MouseTrapDef");
			MouseTrapSpawnerPrefab = TrapBundle.LoadAsset<GameObject>("MouseTrapSpawner");
			Random.InitState((int)DateTime.Now.Ticks);
			MapObjects.RegisterMapObject(SawTurretDef, (LevelTypes)(-1), (Func<SelectableLevel, AnimationCurve>)delegate
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0066: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Expected O, but got Unknown
				int num7 = 0;
				double num8 = 4.8 * (double)SawSpawnrate.Value;
				return new AnimationCurve((Keyframe[])(object)new Keyframe[2]
				{
					new Keyframe(0f, (float)num7, 0.267f, 0.267f, 0f, 0.246f),
					new Keyframe(1f, (float)num8, 61f, 61f, 0.015f * (float)num8, 0f)
				});
			});
			MapObjects.RegisterMapObject(FlameTurretDef, (LevelTypes)(-1), (Func<SelectableLevel, AnimationCurve>)delegate
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0066: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Expected O, but got Unknown
				int num5 = 0;
				double num6 = 4.8 * (double)FlameSpawnrate.Value;
				return new AnimationCurve((Keyframe[])(object)new Keyframe[2]
				{
					new Keyframe(0f, (float)num5, 0.267f, 0.267f, 0f, 0.246f),
					new Keyframe(1f, (float)num6, 61f, 61f, 0.015f * (float)num6, 0f)
				});
			});
			MapObjects.RegisterMapObject(LRADTurretDef, (LevelTypes)(-1), (Func<SelectableLevel, AnimationCurve>)delegate
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0066: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Expected O, but got Unknown
				int num3 = 0;
				double num4 = 4.8 * (double)LRADSpawnrate.Value;
				return new AnimationCurve((Keyframe[])(object)new Keyframe[2]
				{
					new Keyframe(0f, (float)num3, 0.267f, 0.267f, 0f, 0.246f),
					new Keyframe(1f, (float)num4, 61f, 61f, 0.015f * (float)num4, 0f)
				});
			});
			MapObjects.RegisterMapObject(MouseTrapDef, (LevelTypes)(-1), (Func<SelectableLevel, AnimationCurve>)delegate
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0066: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Expected O, but got Unknown
				int num = 0;
				double num2 = 4.8 * (double)MouseTrapSpawnrate.Value;
				return new AnimationCurve((Keyframe[])(object)new Keyframe[2]
				{
					new Keyframe(0f, (float)num, 0.267f, 0.267f, 0f, 0.246f),
					new Keyframe(1f, (float)num2, 61f, 61f, 0.015f * (float)num2, 0f)
				});
			});
			NetworkPrefabs.RegisterNetworkPrefab(SawPrefab);
			NetworkPrefabs.RegisterNetworkPrefab(SawTurretPrefab);
			NetworkPrefabs.RegisterNetworkPrefab(FlameTurretPrefab);
			NetworkPrefabs.RegisterNetworkPrefab(LRADTurretPrefab);
			NetworkPrefabs.RegisterNetworkPrefab(LRADBlastPrefab);
			NetworkPrefabs.RegisterNetworkPrefab(LRADImpactPrefab);
			NetworkPrefabs.RegisterNetworkPrefab(MouseTrapPrefab);
			Hooks();
		}

		public void Hooks()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Expected O, but got Unknown
			object obj = <>c.<>9__17_0;
			if (obj == null)
			{
				hook_LoadNewLevel val = delegate(orig_LoadNewLevel orig, RoundManager self, int randomSeed, SelectableLevel newLevel)
				{
					orig.Invoke(self, randomSeed, newLevel);
					try
					{
						if (ImpactFXState.Instances != null)
						{
							foreach (ImpactFXState instance in ImpactFXState.Instances)
							{
								if ((Object)(object)instance != (Object)null)
								{
									Object.Destroy((Object)(object)instance);
								}
							}
							ImpactFXState.Instances.Clear();
						}
					}
					catch (Exception ex)
					{
						Debug.LogError((object)("Devious Traps: LRAD FX clear error: " + ex.ToString() + " this is only an issue if you see red noise fx on your screen or if you are deaf. Otherwise this is OK."));
					}
					try
					{
						if (MouseTrap.instances != null)
						{
							foreach (MouseTrap instance2 in MouseTrap.instances)
							{
								if ((Object)(object)instance2 != (Object)null)
								{
									if (Object.op_Implicit((Object)(object)((Component)instance2).gameObject))
									{
										Object.Destroy((Object)(object)((Component)instance2).gameObject);
									}
									else
									{
										Object.Destroy((Object)(object)instance2);
									}
								}
							}
							MouseTrap.instances.Clear();
						}
					}
					catch (Exception ex2)
					{
						Debug.LogError((object)("Devious Traps: Mouse Trap clear error: " + ex2.ToString() + " this is only an issue if you have mouse traps attached to you and you can't remove them. Otherwise this is OK."));
					}
				};
				<>c.<>9__17_0 = val;
				obj = (object)val;
			}
			RoundManager.LoadNewLevel += (hook_LoadNewLevel)obj;
		}

		public void bindVars()
		{
			//IL_05d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05da: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ed: Expected O, but got Unknown
			//IL_05ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f9: Expected O, but got Unknown
			//IL_05ff: Expected O, but got Unknown
			//IL_05fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0600: Expected O, but got Unknown
			//IL_0605: Unknown result type (might be due to invalid IL or missing references)
			//IL_060a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0612: Unknown result type (might be due to invalid IL or missing references)
			//IL_061d: Expected O, but got Unknown
			//IL_061e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0629: Expected O, but got Unknown
			//IL_062f: Expected O, but got Unknown
			//IL_062a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0630: Expected O, but got Unknown
			//IL_0635: Unknown result type (might be due to invalid IL or missing references)
			//IL_063a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0642: Unknown result type (might be due to invalid IL or missing references)
			//IL_064d: Expected O, but got Unknown
			//IL_064e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0659: Expected O, but got Unknown
			//IL_065f: Expected O, but got Unknown
			//IL_065a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0660: Expected O, but got Unknown
			//IL_0665: Unknown result type (might be due to invalid IL or missing references)
			//IL_066a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0672: Unknown result type (might be due to invalid IL or missing references)
			//IL_067d: Expected O, but got Unknown
			//IL_067e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0689: Expected O, but got Unknown
			//IL_068f: Expected O, but got Unknown
			//IL_068a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0690: Expected O, but got Unknown
			//IL_0695: Unknown result type (might be due to invalid IL or missing references)
			//IL_069a: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ad: Expected O, but got Unknown
			//IL_06ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b9: Expected O, but got Unknown
			//IL_06bf: Expected O, but got Unknown
			//IL_06ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c1: Expected O, but got Unknown
			//IL_06c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06de: Expected O, but got Unknown
			//IL_06df: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ea: Expected O, but got Unknown
			//IL_06f0: Expected O, but got Unknown
			//IL_06eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f2: Expected O, but got Unknown
			//IL_06f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0704: Unknown result type (might be due to invalid IL or missing references)
			//IL_070f: Expected O, but got Unknown
			//IL_0710: Unknown result type (might be due to invalid IL or missing references)
			//IL_071b: Expected O, but got Unknown
			//IL_0721: Expected O, but got Unknown
			//IL_071c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0723: Expected O, but got Unknown
			//IL_0728: Unknown result type (might be due to invalid IL or missing references)
			//IL_072d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0735: Unknown result type (might be due to invalid IL or missing references)
			//IL_0740: Expected O, but got Unknown
			//IL_0741: Unknown result type (might be due to invalid IL or missing references)
			//IL_074c: Expected O, but got Unknown
			//IL_0752: Expected O, but got Unknown
			//IL_074d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0754: Expected O, but got Unknown
			//IL_0759: Unknown result type (might be due to invalid IL or missing references)
			//IL_075e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0766: Unknown result type (might be due to invalid IL or missing references)
			//IL_0771: Expected O, but got Unknown
			//IL_0772: Unknown result type (might be due to invalid IL or missing references)
			//IL_077d: Expected O, but got Unknown
			//IL_0783: Expected O, but got Unknown
			//IL_077e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0785: Expected O, but got Unknown
			//IL_07ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07db: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e6: Expected O, but got Unknown
			//IL_07e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f2: Expected O, but got Unknown
			//IL_07f8: Expected O, but got Unknown
			//IL_07f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07fa: Expected O, but got Unknown
			//IL_07ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0804: Unknown result type (might be due to invalid IL or missing references)
			//IL_080c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0817: Expected O, but got Unknown
			//IL_0818: Unknown result type (might be due to invalid IL or missing references)
			//IL_0823: Expected O, but got Unknown
			//IL_0829: Expected O, but got Unknown
			//IL_0824: Unknown result type (might be due to invalid IL or missing references)
			//IL_082b: Expected O, but got Unknown
			//IL_0830: Unknown result type (might be due to invalid IL or missing references)
			//IL_0835: Unknown result type (might be due to invalid IL or missing references)
			//IL_083d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0848: Expected O, but got Unknown
			//IL_0849: Unknown result type (might be due to invalid IL or missing references)
			//IL_0854: Expected O, but got Unknown
			//IL_085a: Expected O, but got Unknown
			//IL_0855: Unknown result type (might be due to invalid IL or missing references)
			//IL_085c: Expected O, but got Unknown
			//IL_0861: Unknown result type (might be due to invalid IL or missing references)
			//IL_0866: Unknown result type (might be due to invalid IL or missing references)
			//IL_086e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0879: Expected O, but got Unknown
			//IL_087a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0885: Expected O, but got Unknown
			//IL_088b: Expected O, but got Unknown
			//IL_0886: Unknown result type (might be due to invalid IL or missing references)
			//IL_088d: Expected O, but got Unknown
			//IL_0892: Unknown result type (might be due to invalid IL or missing references)
			//IL_0897: Unknown result type (might be due to invalid IL or missing references)
			//IL_089f: Unknown result type (might be due to invalid IL or missing references)
			//IL_08aa: Expected O, but got Unknown
			//IL_08ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b6: Expected O, but got Unknown
			//IL_08bc: Expected O, but got Unknown
			//IL_08b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08be: Expected O, but got Unknown
			//IL_08c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08db: Expected O, but got Unknown
			//IL_08dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e7: Expected O, but got Unknown
			//IL_08ed: Expected O, but got Unknown
			//IL_08e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ef: Expected O, but got Unknown
			//IL_08f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0901: Unknown result type (might be due to invalid IL or missing references)
			//IL_0908: Expected O, but got Unknown
			//IL_0909: Unknown result type (might be due to invalid IL or missing references)
			//IL_0914: Expected O, but got Unknown
			//IL_091a: Expected O, but got Unknown
			//IL_0915: Unknown result type (might be due to invalid IL or missing references)
			//IL_091c: Expected O, but got Unknown
			//IL_0921: Unknown result type (might be due to invalid IL or missing references)
			//IL_0926: Unknown result type (might be due to invalid IL or missing references)
			//IL_092e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0939: Expected O, but got Unknown
			//IL_093a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0945: Expected O, but got Unknown
			//IL_094b: Expected O, but got Unknown
			//IL_0946: Unknown result type (might be due to invalid IL or missing references)
			//IL_094d: Expected O, but got Unknown
			//IL_0952: Unknown result type (might be due to invalid IL or missing references)
			//IL_0957: Unknown result type (might be due to invalid IL or missing references)
			//IL_095f: Unknown result type (might be due to invalid IL or missing references)
			//IL_096a: Expected O, but got Unknown
			//IL_096b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0976: Expected O, but got Unknown
			//IL_097c: Expected O, but got Unknown
			//IL_0977: Unknown result type (might be due to invalid IL or missing references)
			//IL_097e: Expected O, but got Unknown
			//IL_09cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e3: Expected O, but got Unknown
			//IL_09e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ef: Expected O, but got Unknown
			//IL_09f5: Expected O, but got Unknown
			//IL_09f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f7: Expected O, but got Unknown
			//IL_09fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a01: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a09: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a14: Expected O, but got Unknown
			//IL_0a15: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a20: Expected O, but got Unknown
			//IL_0a26: Expected O, but got Unknown
			//IL_0a21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a28: Expected O, but got Unknown
			//IL_0a2d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a32: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a45: Expected O, but got Unknown
			//IL_0a46: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a51: Expected O, but got Unknown
			//IL_0a57: Expected O, but got Unknown
			//IL_0a52: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a59: Expected O, but got Unknown
			//IL_0a5e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a63: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a76: Expected O, but got Unknown
			//IL_0a77: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a82: Expected O, but got Unknown
			//IL_0a88: Expected O, but got Unknown
			//IL_0a83: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a8a: Expected O, but got Unknown
			//IL_0a8f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a94: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa7: Expected O, but got Unknown
			//IL_0aa8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab3: Expected O, but got Unknown
			//IL_0ab9: Expected O, but got Unknown
			//IL_0ab4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0abb: Expected O, but got Unknown
			//IL_0ac0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0acd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad8: Expected O, but got Unknown
			//IL_0ad9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ae4: Expected O, but got Unknown
			//IL_0aea: Expected O, but got Unknown
			//IL_0ae5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aec: Expected O, but got Unknown
			//IL_0af1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0afe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b09: Expected O, but got Unknown
			//IL_0b0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b15: Expected O, but got Unknown
			//IL_0b1b: Expected O, but got Unknown
			//IL_0b16: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b1d: Expected O, but got Unknown
			//IL_0b22: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b27: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b2f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b3a: Expected O, but got Unknown
			//IL_0b3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b46: Expected O, but got Unknown
			//IL_0b4c: Expected O, but got Unknown
			//IL_0b47: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b4e: Expected O, but got Unknown
			//IL_0b53: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b58: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b60: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b6b: Expected O, but got Unknown
			//IL_0b6c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b77: Expected O, but got Unknown
			//IL_0b7d: Expected O, but got Unknown
			//IL_0b78: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7f: Expected O, but got Unknown
			//IL_0b84: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b89: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9c: Expected O, but got Unknown
			//IL_0b9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba8: Expected O, but got Unknown
			//IL_0bae: Expected O, but got Unknown
			//IL_0ba9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb0: Expected O, but got Unknown
			//IL_0bb5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bba: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bcd: Expected O, but got Unknown
			//IL_0bce: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd9: Expected O, but got Unknown
			//IL_0bdf: Expected O, but got Unknown
			//IL_0bda: Unknown result type (might be due to invalid IL or missing references)
			//IL_0be1: Expected O, but got Unknown
			//IL_0be6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0beb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bfe: Expected O, but got Unknown
			//IL_0bff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c0a: Expected O, but got Unknown
			//IL_0c10: Expected O, but got Unknown
			//IL_0c0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c12: Expected O, but got Unknown
			//IL_0c77: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c7c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c84: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c8f: Expected O, but got Unknown
			//IL_0c90: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9b: Expected O, but got Unknown
			//IL_0ca1: Expected O, but got Unknown
			//IL_0c9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ca3: Expected O, but got Unknown
			//IL_0ca8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cad: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cc0: Expected O, but got Unknown
			//IL_0cc1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ccc: Expected O, but got Unknown
			//IL_0cd2: Expected O, but got Unknown
			//IL_0ccd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cd4: Expected O, but got Unknown
			//IL_0cd9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cde: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ce6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cf1: Expected O, but got Unknown
			//IL_0cf2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cfd: Expected O, but got Unknown
			//IL_0d03: Expected O, but got Unknown
			//IL_0cfe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d05: Expected O, but got Unknown
			//IL_0d0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d0f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d17: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d22: Expected O, but got Unknown
			//IL_0d23: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d2e: Expected O, but got Unknown
			//IL_0d34: Expected O, but got Unknown
			//IL_0d2f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d36: Expected O, but got Unknown
			//IL_0d3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d40: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d48: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d53: Expected O, but got Unknown
			//IL_0d54: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d5f: Expected O, but got Unknown
			//IL_0d65: Expected O, but got Unknown
			//IL_0d60: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d67: Expected O, but got Unknown
			//IL_0d6c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d79: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d84: Expected O, but got Unknown
			//IL_0d85: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d90: Expected O, but got Unknown
			//IL_0d96: Expected O, but got Unknown
			//IL_0d91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d98: Expected O, but got Unknown
			//IL_0d9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0daf: Expected O, but got Unknown
			//IL_0daa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db1: Expected O, but got Unknown
			//IL_0db6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dc8: Expected O, but got Unknown
			//IL_0dc3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dca: Expected O, but got Unknown
			//IL_0dcf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dd4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de1: Expected O, but got Unknown
			//IL_0ddc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de3: Expected O, but got Unknown
			//IL_0de8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ded: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dfa: Expected O, but got Unknown
			//IL_0df5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dfc: Expected O, but got Unknown
			SawSpawnrate = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Spawnrate", 1.6f, "How often do these turrets spawn? (default 1.6)");
			SawFirerate = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Time Between Shots", 1.45f, "Length of time between each saw after windup. (default 1.45)");
			SawDmgMult = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Dmg Multiplier", 1.8f, "Damage multiplier for saw blades. Dmg is also dependent on the velocity of a saw blade. You can make them heal with negative values too. (default 1.8)");
			SawTargetRange = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Range", 25f, "How far away a saw turret can see you. They can't see through walls though. (default 25)");
			SawWindupTime = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Windup Time", 1.45f, "How long a saw turret takes before it starts firing saws at you. (default 1.45)");
			SawFirerate = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Time Between Shots", 1.45f, "Length of time between each saw after windup. (default 1.45)");
			SawAmmo = ((BaseUnityPlugin)this).Config.Bind<int>("Saw Turret", "Ammo", 6, "Shots it takes before the turret has to reload. (default 6)");
			SawReloadTime = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Reload Time", 8f, "How long it takes for a saw turret to reload its sawblades (default 8)");
			SawFirerate = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Time Between Shots", 1.45f, "Length of time between each saw after windup. (default 1.45)");
			SawLaunchSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Projectile Speed", 3000f, "How fast are the saws launched from the saw turret? Note that the faster a saw travels, the more damage it will deal. Assume you are applying a force in Newtons (N) to the object. (default 3000)");
			SawVolume = ((BaseUnityPlugin)this).Config.Bind<float>("Saw Turret", "Volume", 0.6f, "How loud are all sounds from this turret? (default 0.6)");
			FlameSpawnrate = ((BaseUnityPlugin)this).Config.Bind<float>("Flame Turret", "Spawnrate", 1.6f, "How often do these turrets spawn? (default 1.6)");
			FlameDmgMult = ((BaseUnityPlugin)this).Config.Bind<float>("Flame Turret", "Dmg Multiplier", 3.2f, "Damage Multiplier for flame turrets. You can make them heal with negative values too. (default 3.2)");
			FlameTargetRange = ((BaseUnityPlugin)this).Config.Bind<float>("Flame Turret", "Range", 7f, "How far away a flame turret can see you. They can't see through walls though. (default 7)");
			FlameRisingTime = ((BaseUnityPlugin)this).Config.Bind<float>("Flame Turret", "Rising Time", 1.4f, "Time in seconds it takes for a flame turret to rise up and fire at you. (default 1.4)");
			FlameRestingTime = ((BaseUnityPlugin)this).Config.Bind<float>("Flame Turret", "Resting Time", 3f, "How long does the flame turret rest before firing again? In seconds. (default 3)");
			FlameSpinningTime = ((BaseUnityPlugin)this).Config.Bind<float>("Flame Turret", "Spinning Time", 3f, "How long does the flame turret spin for (attack duration)? In seconds. (default 3)");
			FlameRotationSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Flame Turret", "Rotation Speed", 120f, "How fast does a flame turret rotate when attacking (degrees per second)? (default 120)");
			SmokeCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Flame Turret", "Warning Interval", 14.5f, "How often a flame turret releases smoke to warn the player of its presence. The smoke release phase lasts for 4.5 seconds. (default 14.5)");
			FlameVolume = ((BaseUnityPlugin)this).Config.Bind<float>("Flame Turret", "Volume", 0.6f, "How loud are all sounds from this turret? (default 0.6)");
			LRADSpawnrate = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Spawnrate", 0.8f, "How often do these turrets spawn? (default 0.8)");
			LRADTargetRange = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Range", 50f, "How far away the LRAD (sound turret) can see you. They can't see through walls though. (default 50)");
			LRADDmgMult = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Dmg Multiplier", 1f, "Damage Multiplier for sound turrets. You can make them heal with negative values too. (default 1)");
			LRADProjectileSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Projectile Speed Multiplier", 1.5f, "Multiplier for the Speed of the launched sound wave. (default 1.5)");
			LRADReloadTime = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Time Between Shots", 60f, "Length of time before the sound cannon can fire again. (default 30)");
			LRADChargeTime = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Charge Up Time", 5.53f, "Time it takes for the LRAD to charge and fire a sound wave in seconds. (default 5.53)");
			LRADDisorientPeriod = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Disorientation Period", 20f, "How long deafness, visual fx, drunkness, and dizziness takes to fade away in seconds (default 20).");
			LRADDizzyMult = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Dizzyness multiplier", 1f, "How much the LRAD cannon messes around with your movement, causing you to sway unpredictably. (default 1)");
			LRADDrunknessMult = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Drunkness Multiplier", 2f, "How strong the drunkness effect from the LRAD cannon is. (default 2)");
			LRADFXMult = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "FX Intensity", 0.8f, "Opacity multiplier to the noise and glitch visual FX when hit by the cannon. Higher values are equivalent to total blindness (default 0.8)");
			LRADVolume = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "Turret Volume", 1f, "How loud are all sounds from this turret? (default 1)");
			LRADFXVolume = ((BaseUnityPlugin)this).Config.Bind<float>("Sound Turret", "FX Volume", 1f, "How loud are all sounds from the Disorientation/Impact effect? (default 1)");
			MouseTrapSpawnrate = ((BaseUnityPlugin)this).Config.Bind<float>("Mouse Trap", "Spawnrate", 0.8f, "How often do mouse traps spawn? Note that this is for 3 separate groups of mousetraps, not just one. (default 1.6)");
			BigMTrapChance = ((BaseUnityPlugin)this).Config.Bind<float>("Mouse Trap", "Big Mouse Trap Chance", 12f, "Percent chance for a mouse trap to spawn as a large one. (default 12%)");
			GiantMTrapChance = ((BaseUnityPlugin)this).Config.Bind<float>("Mouse Trap", "Giant Mouse Trap Chance", 8f, "Percent chance for a mouse trap to be giant. Giant traps have scrap as bait. You have to be really careful when stealing the bait! (default 8%)");
			SmallMTrapDmg = ((BaseUnityPlugin)this).Config.Bind<int>("Mouse Trap", "Small Mouse Trap Damage", 12, "Damage Amount for small traps. You can make them heal with negative values too. (default 12)");
			BigMTrapDmg = ((BaseUnityPlugin)this).Config.Bind<int>("Mouse Trap", "Big Mouse Trap Damage", 36, "Damage Amount for Medium traps. You can make them heal with negative values too. (default 36)");
			GiantMTrapDmg = ((BaseUnityPlugin)this).Config.Bind<int>("Mouse Trap", "Giant Mouse Trap Damage", 100, "Damage Amount for Large traps. You can make them heal with negative values too. (default 100)");
			SmallMTrapAttaches = ((BaseUnityPlugin)this).Config.Bind<bool>("Mouse Trap", "Small Mouse Trap Attachment", true, "If Small Mouse Traps stick onto players. A weapon is required to remove the trap (default true).");
			AttachmentWepRequired = ((BaseUnityPlugin)this).Config.Bind<bool>("Mouse Trap", "Weapon required to remove trap", true, "If mouse traps stuck onto players need a weapon to remove them. (default true)");
			MTrapCanBeDisabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Mouse Trap", "Traps can be disabled", true, "If all mouse traps can be disabled permanently by hitting them with a melee weapon. (default true)");
			MTrapWhitelist = ((BaseUnityPlugin)this).Config.Bind<string>("Mouse Trap", "Bait whitelist", "gift box, jar of pickles, gold bar, fancy lamp, golden cup, zed dog", "All scrap in this whitelist can be selected as bait for the giant trap. Enter the name that appears when you scan the scrap in-game. Comma separated list. (not case sensitive).");
			ConfigEntry<float> flameSpawnrate = FlameSpawnrate;
			FloatInputFieldOptions val = new FloatInputFieldOptions
			{
				RequiresRestart = true
			};
			((BaseRangeOptions<float>)val).Min = 0f;
			((BaseRangeOptions<float>)val).Max = 100000000f;
			FloatInputFieldConfigItem val2 = new FloatInputFieldConfigItem(flameSpawnrate, val);
			ConfigEntry<float> flameDmgMult = FlameDmgMult;
			FloatSliderOptions val3 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val3).Min = -5f;
			((BaseRangeOptions<float>)val3).Max = 5f;
			FloatSliderConfigItem val4 = new FloatSliderConfigItem(flameDmgMult, val3);
			ConfigEntry<float> flameTargetRange = FlameTargetRange;
			FloatSliderOptions val5 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val5).Min = 0f;
			((BaseRangeOptions<float>)val5).Max = 100f;
			FloatSliderConfigItem val6 = new FloatSliderConfigItem(flameTargetRange, val5);
			ConfigEntry<float> flameRisingTime = FlameRisingTime;
			FloatSliderOptions val7 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val7).Min = 0f;
			((BaseRangeOptions<float>)val7).Max = 10f;
			FloatSliderConfigItem val8 = new FloatSliderConfigItem(flameRisingTime, val7);
			ConfigEntry<float> flameRestingTime = FlameRestingTime;
			FloatSliderOptions val9 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val9).Min = 0f;
			((BaseRangeOptions<float>)val9).Max = 20f;
			FloatSliderConfigItem val10 = new FloatSliderConfigItem(flameRestingTime, val9);
			ConfigEntry<float> flameSpinningTime = FlameSpinningTime;
			FloatSliderOptions val11 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val11).Min = 0f;
			((BaseRangeOptions<float>)val11).Max = 20f;
			FloatSliderConfigItem val12 = new FloatSliderConfigItem(flameSpinningTime, val11);
			ConfigEntry<float> flameRotationSpeed = FlameRotationSpeed;
			FloatSliderOptions val13 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val13).Min = 0f;
			((BaseRangeOptions<float>)val13).Max = 1080f;
			FloatSliderConfigItem val14 = new FloatSliderConfigItem(flameRotationSpeed, val13);
			ConfigEntry<float> flameVolume = FlameVolume;
			FloatSliderOptions val15 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val15).Min = 0f;
			((BaseRangeOptions<float>)val15).Max = 2f;
			FloatSliderConfigItem val16 = new FloatSliderConfigItem(flameVolume, val15);
			ConfigEntry<float> smokeCooldown = SmokeCooldown;
			FloatInputFieldOptions val17 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val17).Min = 6f;
			((BaseRangeOptions<float>)val17).Max = 1E+11f;
			FloatInputFieldConfigItem val18 = new FloatInputFieldConfigItem(smokeCooldown, val17);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val2);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val4);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val18);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val6);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val8);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val10);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val12);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val14);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val16);
			ConfigEntry<float> sawSpawnrate = SawSpawnrate;
			FloatInputFieldOptions val19 = new FloatInputFieldOptions
			{
				RequiresRestart = true
			};
			((BaseRangeOptions<float>)val19).Min = 0f;
			((BaseRangeOptions<float>)val19).Max = 100000000f;
			FloatInputFieldConfigItem val20 = new FloatInputFieldConfigItem(sawSpawnrate, val19);
			ConfigEntry<float> sawDmgMult = SawDmgMult;
			FloatSliderOptions val21 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val21).Min = -5f;
			((BaseRangeOptions<float>)val21).Max = 5f;
			FloatSliderConfigItem val22 = new FloatSliderConfigItem(sawDmgMult, val21);
			ConfigEntry<float> sawTargetRange = SawTargetRange;
			FloatSliderOptions val23 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val23).Min = 0f;
			((BaseRangeOptions<float>)val23).Max = 100f;
			FloatSliderConfigItem val24 = new FloatSliderConfigItem(sawTargetRange, val23);
			ConfigEntry<float> sawWindupTime = SawWindupTime;
			FloatSliderOptions val25 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val25).Min = 0f;
			((BaseRangeOptions<float>)val25).Max = 10f;
			FloatSliderConfigItem val26 = new FloatSliderConfigItem(sawWindupTime, val25);
			ConfigEntry<float> sawFirerate = SawFirerate;
			FloatInputFieldOptions val27 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val27).Min = 0f;
			((BaseRangeOptions<float>)val27).Max = 100000000f;
			FloatInputFieldConfigItem val28 = new FloatInputFieldConfigItem(sawFirerate, val27);
			ConfigEntry<float> sawVolume = SawVolume;
			FloatSliderOptions val29 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val29).Min = 0f;
			((BaseRangeOptions<float>)val29).Max = 2f;
			FloatSliderConfigItem val30 = new FloatSliderConfigItem(sawVolume, val29);
			ConfigEntry<int> sawAmmo = SawAmmo;
			IntInputFieldOptions val31 = new IntInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<int>)val31).Min = 1;
			((BaseRangeOptions<int>)val31).Max = 100000000;
			IntInputFieldConfigItem val32 = new IntInputFieldConfigItem(sawAmmo, val31);
			ConfigEntry<float> sawReloadTime = SawReloadTime;
			FloatInputFieldOptions val33 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val33).Min = 0f;
			((BaseRangeOptions<float>)val33).Max = 100000000f;
			FloatInputFieldConfigItem val34 = new FloatInputFieldConfigItem(sawReloadTime, val33);
			ConfigEntry<float> sawLaunchSpeed = SawLaunchSpeed;
			FloatInputFieldOptions val35 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val35).Min = 0f;
			((BaseRangeOptions<float>)val35).Max = 100000000f;
			FloatInputFieldConfigItem val36 = new FloatInputFieldConfigItem(sawLaunchSpeed, val35);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val20);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val22);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val24);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val26);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val28);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val32);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val34);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val36);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val30);
			ConfigEntry<float> lRADSpawnrate = LRADSpawnrate;
			FloatInputFieldOptions val37 = new FloatInputFieldOptions
			{
				RequiresRestart = true
			};
			((BaseRangeOptions<float>)val37).Min = 0f;
			((BaseRangeOptions<float>)val37).Max = 100000000f;
			FloatInputFieldConfigItem val38 = new FloatInputFieldConfigItem(lRADSpawnrate, val37);
			ConfigEntry<float> lRADTargetRange = LRADTargetRange;
			FloatInputFieldOptions val39 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val39).Min = 0f;
			((BaseRangeOptions<float>)val39).Max = 100000000f;
			FloatInputFieldConfigItem val40 = new FloatInputFieldConfigItem(lRADTargetRange, val39);
			ConfigEntry<float> lRADDmgMult = LRADDmgMult;
			FloatSliderOptions val41 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val41).Min = -5f;
			((BaseRangeOptions<float>)val41).Max = 5f;
			FloatSliderConfigItem val42 = new FloatSliderConfigItem(lRADDmgMult, val41);
			ConfigEntry<float> lRADProjectileSpeed = LRADProjectileSpeed;
			FloatInputFieldOptions val43 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val43).Min = 0f;
			((BaseRangeOptions<float>)val43).Max = 9999999f;
			FloatInputFieldConfigItem val44 = new FloatInputFieldConfigItem(lRADProjectileSpeed, val43);
			ConfigEntry<float> lRADChargeTime = LRADChargeTime;
			FloatInputFieldOptions val45 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val45).Min = 0f;
			((BaseRangeOptions<float>)val45).Max = 7.2f;
			FloatInputFieldConfigItem val46 = new FloatInputFieldConfigItem(lRADChargeTime, val45);
			ConfigEntry<float> lRADReloadTime = LRADReloadTime;
			FloatInputFieldOptions val47 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val47).Min = 0f;
			((BaseRangeOptions<float>)val47).Max = 999999f;
			FloatInputFieldConfigItem val48 = new FloatInputFieldConfigItem(lRADReloadTime, val47);
			ConfigEntry<float> lRADDisorientPeriod = LRADDisorientPeriod;
			FloatInputFieldOptions val49 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val49).Min = 0.5f;
			((BaseRangeOptions<float>)val49).Max = 1000000f;
			FloatInputFieldConfigItem val50 = new FloatInputFieldConfigItem(lRADDisorientPeriod, val49);
			ConfigEntry<float> lRADDizzyMult = LRADDizzyMult;
			FloatInputFieldOptions val51 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val51).Min = 0f;
			((BaseRangeOptions<float>)val51).Max = 1000f;
			FloatInputFieldConfigItem val52 = new FloatInputFieldConfigItem(lRADDizzyMult, val51);
			ConfigEntry<float> lRADDrunknessMult = LRADDrunknessMult;
			FloatSliderOptions val53 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val53).Min = 0f;
			((BaseRangeOptions<float>)val53).Max = 5f;
			FloatSliderConfigItem val54 = new FloatSliderConfigItem(lRADDrunknessMult, val53);
			ConfigEntry<float> lRADFXMult = LRADFXMult;
			FloatSliderOptions val55 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val55).Min = 0f;
			((BaseRangeOptions<float>)val55).Max = 10f;
			FloatSliderConfigItem val56 = new FloatSliderConfigItem(lRADFXMult, val55);
			ConfigEntry<float> lRADVolume = LRADVolume;
			FloatSliderOptions val57 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val57).Min = 0f;
			((BaseRangeOptions<float>)val57).Max = 2f;
			FloatSliderConfigItem val58 = new FloatSliderConfigItem(lRADVolume, val57);
			ConfigEntry<float> lRADFXVolume = LRADFXVolume;
			FloatSliderOptions val59 = new FloatSliderOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val59).Min = 0f;
			((BaseRangeOptions<float>)val59).Max = 2f;
			FloatSliderConfigItem val60 = new FloatSliderConfigItem(lRADFXVolume, val59);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val38);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val40);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val42);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val46);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val48);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val44);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val50);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val52);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val54);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val56);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val58);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val60);
			ConfigEntry<float> mouseTrapSpawnrate = MouseTrapSpawnrate;
			FloatInputFieldOptions val61 = new FloatInputFieldOptions
			{
				RequiresRestart = true
			};
			((BaseRangeOptions<float>)val61).Min = 0f;
			((BaseRangeOptions<float>)val61).Max = 100000000f;
			FloatInputFieldConfigItem val62 = new FloatInputFieldConfigItem(mouseTrapSpawnrate, val61);
			ConfigEntry<float> bigMTrapChance = BigMTrapChance;
			FloatInputFieldOptions val63 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val63).Min = 0f;
			((BaseRangeOptions<float>)val63).Max = 100f;
			FloatInputFieldConfigItem val64 = new FloatInputFieldConfigItem(bigMTrapChance, val63);
			ConfigEntry<float> giantMTrapChance = GiantMTrapChance;
			FloatInputFieldOptions val65 = new FloatInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<float>)val65).Min = 0f;
			((BaseRangeOptions<float>)val65).Max = 100f;
			FloatInputFieldConfigItem val66 = new FloatInputFieldConfigItem(giantMTrapChance, val65);
			ConfigEntry<int> smallMTrapDmg = SmallMTrapDmg;
			IntInputFieldOptions val67 = new IntInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<int>)val67).Min = -1000;
			((BaseRangeOptions<int>)val67).Max = 1000;
			IntInputFieldConfigItem val68 = new IntInputFieldConfigItem(smallMTrapDmg, val67);
			ConfigEntry<int> bigMTrapDmg = BigMTrapDmg;
			IntInputFieldOptions val69 = new IntInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<int>)val69).Min = -1000;
			((BaseRangeOptions<int>)val69).Max = 1000;
			IntInputFieldConfigItem val70 = new IntInputFieldConfigItem(bigMTrapDmg, val69);
			ConfigEntry<int> giantMTrapDmg = GiantMTrapDmg;
			IntInputFieldOptions val71 = new IntInputFieldOptions
			{
				RequiresRestart = false
			};
			((BaseRangeOptions<int>)val71).Min = -1000;
			((BaseRangeOptions<int>)val71).Max = 1000;
			IntInputFieldConfigItem val72 = new IntInputFieldConfigItem(giantMTrapDmg, val71);
			BoolCheckBoxConfigItem val73 = new BoolCheckBoxConfigItem(SmallMTrapAttaches, new BoolCheckBoxOptions
			{
				RequiresRestart = false
			});
			BoolCheckBoxConfigItem val74 = new BoolCheckBoxConfigItem(AttachmentWepRequired, new BoolCheckBoxOptions
			{
				RequiresRestart = false
			});
			BoolCheckBoxConfigItem val75 = new BoolCheckBoxConfigItem(MTrapCanBeDisabled, new BoolCheckBoxOptions
			{
				RequiresRestart = false
			});
			TextInputFieldConfigItem val76 = new TextInputFieldConfigItem(MTrapWhitelist, new TextInputFieldOptions
			{
				RequiresRestart = false
			});
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val62);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val64);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val66);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val68);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val70);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val72);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val73);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val74);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val75);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val76);
		}

		public static void PopulateAssets()
		{
			string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
			TrapBundle = AssetBundle.LoadFromFile(Path.Combine(directoryName, "bcs_devioustraps"));
			Debug.Log((object)("DeviousTraps Bundle::: " + (object)TrapBundle));
		}
	}
}
namespace DeviousTraps.src
{
	public class FlameHitbox : NetworkBehaviour
	{
		internal Vector3 LaunchForce = Vector3.zero;

		public Collider Collider;

		private float HitCooldown = 0f;

		private float HitCooldownReset = 0.2f;

		private float LastHitEnemyCooldown = 0f;

		public static float BaseDmg = 10f;

		public float dmgRamp = 0f;

		public static float dmgRampTime = 0.45f;

		public void Update()
		{
			HitCooldown -= Time.deltaTime;
			LastHitEnemyCooldown -= Time.deltaTime;
			if (dmgRamp < 1f)
			{
				dmgRamp += Time.deltaTime / dmgRampTime;
				if (dmgRamp > 1f)
				{
					dmgRamp = 1f;
				}
			}
		}

		public void ResetDmgRamp()
		{
			dmgRamp = 0f;
		}

		[ClientRpc]
		public void DmgPlayerClientRpc(ulong netid, int amount)
		{
			//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)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2246517757u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, netid);
				BytePacker.WriteValueBitPacked(val2, amount);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2246517757u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			base.__rpc_exec_stage = (__RpcExecStage)0;
			PlayerControllerB[] allPlayerScripts = RoundManager.Instance.playersManager.allPlayerScripts;
			PlayerControllerB[] array = allPlayerScripts;
			foreach (PlayerControllerB val3 in array)
			{
				if (((NetworkBehaviour)val3).NetworkObject.NetworkObjectId == netid)
				{
					val3.DamagePlayer(amount, true, true, (CauseOfDeath)0, 0, false, default(Vector3));
				}
			}
		}

		[ClientRpc]
		public void KillPlayerClientRpc(ulong netid)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: 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.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1308895154u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, netid);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1308895154u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			base.__rpc_exec_stage = (__RpcExecStage)0;
			PlayerControllerB[] allPlayerScripts = RoundManager.Instance.playersManager.allPlayerScripts;
			PlayerControllerB[] array = allPlayerScripts;
			foreach (PlayerControllerB val3 in array)
			{
				if (((NetworkBehaviour)val3).NetworkObject.NetworkObjectId == netid)
				{
					val3.KillPlayer(val3.playerRigidbody.velocity, true, (CauseOfDeath)13, 0, default(Vector3));
				}
			}
		}

		public void OnTriggerStay(Collider other)
		{
			if (!((NetworkBehaviour)RoundManager.Instance).IsHost)
			{
				return;
			}
			GameObject gameObject = ((Component)other).gameObject;
			PlayerControllerB component = gameObject.GetComponent<PlayerControllerB>();
			EnemyAI component2 = gameObject.GetComponent<EnemyAI>();
			if (Object.op_Implicit((Object)(object)component) && HitCooldown <= 0f)
			{
				int num = (int)(dmgRamp * BaseDmg * Plugin.FlameDmgMult.Value);
				if (num >= component.health)
				{
					KillPlayerClientRpc(((NetworkBehaviour)component).NetworkObject.NetworkObjectId);
				}
				else
				{
					DmgPlayerClientRpc(((NetworkBehaviour)component).NetworkObject.NetworkObjectId, num);
				}
				HitCooldown = HitCooldownReset;
			}
			if (Object.op_Implicit((Object)(object)component2) && LastHitEnemyCooldown <= 0f)
			{
				component2.HitEnemyClientRpc(3, -1, true, -1);
				LastHitEnemyCooldown = HitCooldownReset;
			}
		}

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

		protected override void __initializeRpcs()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Expected O, but got Unknown
			((NetworkBehaviour)this).__registerRpc(2246517757u, new RpcReceiveHandler(__rpc_handler_2246517757), "DmgPlayerClientRpc");
			((NetworkBehaviour)this).__registerRpc(1308895154u, new RpcReceiveHandler(__rpc_handler_1308895154), "KillPlayerClientRpc");
			((NetworkBehaviour)this).__initializeRpcs();
		}

		private static void __rpc_handler_2246517757(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)
			{
				ulong netid = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref netid);
				int amount = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref amount);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((FlameHitbox)(object)target).DmgPlayerClientRpc(netid, amount);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1308895154(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong netid = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref netid);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((FlameHitbox)(object)target).KillPlayerClientRpc(netid);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "FlameHitbox";
		}
	}
	public class FlameTurret : NetworkBehaviour
	{
		public AudioSource AudioFlameTurretOn;

		public AudioSource AudioFireFlames;

		public AudioSource AudioReload;

		public AudioSource AudioSmokeRelease;

		public AudioSource AudioPowerDown;

		private bool Activated = false;

		public ParticleSystem Fire1;

		public ParticleSystem Fire2;

		public ParticleSystem Fire3;

		public Light Light1;

		public Light Light2;

		public Light Light3;

		public FlameHitbox H1;

		public FlameHitbox H2;

		public FlameHitbox H3;

		public GameObject pillar;

		public GameObject SmokeSystem;

		internal Animator animator;

		private bool On = false;

		private bool lastOn = false;

		[Tooltip("How high the pillar moves up from its starting local Y (world units).")]
		public float ElevationAmount = 2.2f;

		private float t_SmokeReleaseTotal = 0f;

		private float t_SpinningTimeTotal = 0f;

		private float t_StandbyTimeTotal = 0f;

		private float t_ElevationState = 0f;

		private bool InStandby = false;

		private float pillarBaseY;

		public float TimeUntilEnabled = -1f;

		public bool Inactive = false;

		public void Start()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			Activated = false;
			animator = ((Component)this).GetComponent<Animator>();
			pillarBaseY = pillar.transform.localPosition.y;
			AudioFlameTurretOn.volume = Plugin.FlameVolume.Value;
			AudioFireFlames.volume = Plugin.FlameVolume.Value;
			AudioReload.volume = Plugin.FlameVolume.Value;
			AudioSmokeRelease.volume = Plugin.FlameVolume.Value / 9f;
			AudioPowerDown.volume = Plugin.FlameVolume.Value;
		}

		public void Update()
		{
			if (((NetworkBehaviour)this).IsServer)
			{
				OnOffConditional();
				if (On != lastOn)
				{
					SetOnStateClientRpc(On);
					ToggleTurretOnClientRpc(On);
					lastOn = On;
				}
			}
			if (((NetworkBehaviour)RoundManager.Instance).IsHost)
			{
				t_SmokeReleaseTotal -= Time.deltaTime;
				if (t_SmokeReleaseTotal < 0f)
				{
					t_SmokeReleaseTotal = Plugin.SmokeCooldown.Value;
					PlaySmokeReleaseClientRpc();
				}
			}
			TimeUntilEnabled -= Time.deltaTime;
			if (Inactive && TimeUntilEnabled < 0f)
			{
				TerminalToggleClientRpc(turnOn: true);
			}
			AITick();
		}

		[ClientRpc]
		public void TerminalToggleClientRpc(bool turnOn)
		{
			//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_00dc: 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.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4023908665u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref turnOn, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4023908665u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				base.__rpc_exec_stage = (__RpcExecStage)0;
				if (turnOn)
				{
					TimeUntilEnabled = -1f;
					Inactive = false;
				}
				else
				{
					TimeUntilEnabled = 7f;
					Inactive = true;
					AudioPowerDown.Play();
				}
			}
		}

		public void OnOffConditional()
		{
			//IL_005b: 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_006a: 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)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			float num = Plugin.FlameTargetRange.Value;
			PlayerControllerB val = null;
			PlayerControllerB[] allPlayerScripts = RoundManager.Instance.playersManager.allPlayerScripts;
			PlayerControllerB[] array = allPlayerScripts;
			foreach (PlayerControllerB val2 in array)
			{
				if (!((Object)(object)val2 == (Object)null) && !val2.isPlayerDead)
				{
					Vector3 val3 = ((Component)this).transform.position + Vector3.up * 1.2f;
					Vector3 position = ((Component)val2.gameplayCamera).transform.position;
					float num2 = Vector3.Distance(val3, position);
					if (!(num2 > Plugin.FlameTargetRange.Value) && !Physics.Linecast(val3, position, StartOfRound.Instance.collidersAndRoomMask, (QueryTriggerInteraction)1) && num2 < num)
					{
						num = num2;
						val = val2;
					}
				}
			}
			On = (Object)(object)val != (Object)null && !Inactive;
		}

		private void SetPillarHeight(float normalized)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			normalized = Mathf.Clamp01(normalized);
			t_ElevationState = normalized;
			float num = ((Component)this).transform.lossyScale.y;
			if (num <= 0f)
			{
				num = 1f;
			}
			float num2 = ElevationAmount / num;
			Vector3 localPosition = pillar.transform.localPosition;
			localPosition.y = pillarBaseY + num2 * normalized;
			pillar.transform.localPosition = localPosition;
		}

		public void TerminalDisableTurretMethod()
		{
			if (((NetworkBehaviour)RoundManager.Instance).IsHost)
			{
				TerminalToggleClientRpc(turnOn: false);
			}
			else
			{
				TerminalToggleServerRpc();
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void TerminalToggleServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: 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(1935411860u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1935411860u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					base.__rpc_exec_stage = (__RpcExecStage)0;
					TerminalToggleClientRpc(turnOn: false);
				}
			}
		}

		public void AITick()
		{
			if (Inactive)
			{
				if (Activated && ((NetworkBehaviour)this).IsServer)
				{
					SetGroupActiveClientRpc(value: false);
				}
				if (AudioFlameTurretOn.isPlaying)
				{
					StopFireClientRpc();
				}
				return;
			}
			if (!InStandby)
			{
				if (t_ElevationState < 1f)
				{
					if (!AudioFlameTurretOn.isPlaying)
					{
						PlayFireClientRpc();
					}
					float num = Time.deltaTime / Plugin.FlameRisingTime.Value;
					SetPillarHeight(t_ElevationState + num);
				}
				else if (t_SpinningTimeTotal < Plugin.FlameSpinningTime.Value)
				{
					if (((NetworkBehaviour)this).IsServer && !Activated)
					{
						SetGroupActiveClientRpc(value: true);
					}
					t_SpinningTimeTotal += Time.deltaTime;
					pillar.transform.Rotate(0f, Plugin.FlameRotationSpeed.Value * Time.deltaTime, 0f, (Space)1);
				}
				else
				{
					InStandby = true;
				}
				return;
			}
			if (((NetworkBehaviour)this).IsServer && Activated)
			{
				if (AudioFlameTurretOn.isPlaying)
				{
					StopFireClientRpc();
				}
				SetGroupActiveClientRpc(value: false);
			}
			if (t_ElevationState > 0f)
			{
				if (!AudioReload.isPlaying)
				{
					PlayReloadClientRpc();
				}
				float num2 = Time.deltaTime / Plugin.FlameRisingTime.Value;
				SetPillarHeight(t_ElevationState - num2);
			}
			else if (t_StandbyTimeTotal < Plugin.FlameRestingTime.Value)
			{
				t_StandbyTimeTotal += Time.deltaTime;
			}
			else if (On)
			{
				InStandby = false;
				t_StandbyTimeTotal = 0f;
				t_SpinningTimeTotal = 0f;
			}
		}

		[ClientRpc]
		public void PlaySmokeReleaseClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: 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.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(941713206u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 941713206u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					base.__rpc_exec_stage = (__RpcExecStage)0;
					((MonoBehaviour)this).StartCoroutine(PlaySmokeCoroutine());
				}
			}
		}

		public IEnumerator PlaySmokeCoroutine()
		{
			SmokeSystem.SetActive(true);
			yield return (object)new WaitForSeconds(4.5f);
			SmokeSystem.SetActive(false);
		}

		[ClientRpc]
		private void SetOnStateClientRpc(bool value)
		{
			//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_00dc: 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.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1393123788u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref value, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1393123788u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					base.__rpc_exec_stage = (__RpcExecStage)0;
					On = value;
				}
			}
		}

		[ClientRpc]
		public void SetGroupActiveClientRpc(bool value)
		{
			//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_00dc: 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.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2323146907u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref value, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2323146907u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				base.__rpc_exec_stage = (__RpcExecStage)0;
				Activated = value;
				if (value)
				{
					AudioFireFlames.Play();
					Fire1.Play();
					Fire2.Play();
					Fire3.Play();
					((Behaviour)Light1).enabled = true;
					((Behaviour)Light2).enabled = true;
					((Behaviour)Light3).enabled = true;
					((Behaviour)H1).enabled = true;
					((Behaviour)H2).enabled = true;
					((Behaviour)H3).enabled = true;
				}
				else
				{
					AudioFireFlames.Stop();
					Fire1.Stop();
					Fire2.Stop();
					Fire3.Stop();
					((Behaviour)Light1).enabled = false;
					((Behaviour)Light2).enabled = false;
					((Behaviour)Light3).enabled = false;
					((Behaviour)H1).enabled = false;
					((Behaviour)H2).enabled = false;
					((Behaviour)H3).enabled = false;
					H1.ResetDmgRamp();
					H2.ResetDmgRamp();
					H3.ResetDmgRamp();
				}
			}
		}

		[ClientRpc]
		public void PlayFireClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: 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.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(141116094u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 141116094u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					base.__rpc_exec_stage = (__RpcExecStage)0;
					AudioFlameTurretOn.Play();
				}
			}
		}

		[ClientRpc]
		public void StopFireClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: 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.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2040491108u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2040491108u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					base.__rpc_exec_stage = (__RpcExecStage)0;
					AudioFlameTurretOn.Stop();
				}
			}
		}

		[ClientRpc]
		public void PlayReloadClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: 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.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2148362063u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2148362063u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					base.__rpc_exec_stage = (__RpcExecStage)0;
					AudioReload.Play();
				}
			}
		}

		[ClientRpc]
		public void StopReloadClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: 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.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1334700428u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1334700428u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					base.__rpc_exec_stage = (__RpcExecStage)0;
					AudioReload.Stop();
				}
			}
		}

		[ClientRpc]
		public void ToggleTurretOnClientRpc(bool on)
		{
			//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_00dc: 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.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1074175290u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref on, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1074175290u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				base.__rpc_exec_stage = (__RpcExecStage)0;
				if (on && AudioReload.isPlaying)
				{
					AudioReload.Stop();
				}
			}
		}

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

		protected override void __initializeRpcs()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Expected O, but got Unknown
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Expected O, but got Unknown
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Expected O, but got Unknown
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Expected O, but got Unknown
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Expected O, but got Unknown
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Expected O, but got Unknown
			((NetworkBehaviour)this).__registerRpc(4023908665u, new RpcReceiveHandler(__rpc_handler_4023908665), "TerminalToggleClientRpc");
			((NetworkBehaviour)this).__registerRpc(1935411860u, new RpcReceiveHandler(__rpc_handler_1935411860), "TerminalToggleServerRpc");
			((NetworkBehaviour)this).__registerRpc(941713206u, new RpcReceiveHandler(__rpc_handler_941713206), "PlaySmokeReleaseClientRpc");
			((NetworkBehaviour)this).__registerRpc(1393123788u, new RpcReceiveHandler(__rpc_handler_1393123788), "SetOnStateClientRpc");
			((NetworkBehaviour)this).__registerRpc(2323146907u, new RpcReceiveHandler(__rpc_handler_2323146907), "SetGroupActiveClientRpc");
			((NetworkBehaviour)this).__registerRpc(141116094u, new RpcReceiveHandler(__rpc_handler_141116094), "PlayFireClientRpc");
			((NetworkBehaviour)this).__registerRpc(2040491108u, new RpcReceiveHandler(__rpc_handler_2040491108), "StopFireClientRpc");
			((NetworkBehaviour)this).__registerRpc(2148362063u, new RpcReceiveHandler(__rpc_handler_2148362063), "PlayReloadClientRpc");
			((NetworkBehaviour)this).__registerRpc(1334700428u, new RpcReceiveHandler(__rpc_handler_1334700428), "StopReloadClientRpc");
			((NetworkBehaviour)this).__registerRpc(1074175290u, new RpcReceiveHandler(__rpc_handler_1074175290), "ToggleTurretOnClientRpc");
			((NetworkBehaviour)this).__initializeRpcs();
		}

		private static void __rpc_handler_4023908665(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				bool turnOn = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref turnOn, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((FlameTurret)(object)target).TerminalToggleClientRpc(turnOn);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1935411860(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((FlameTurret)(object)target).TerminalToggleServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_941713206(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((FlameTurret)(object)target).PlaySmokeReleaseClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1393123788(NetworkBehaviour target, FastBufferReader reader, __RpcParams r