Decompiled source of Brutal Company Minus Extra v0.19.3

BrutalCompanyMinus.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.RegularExpressions;
using BCMECodeSecurityCheck.Methods;
using BCMECodeSecurityCheck.Modules;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using BrutalCompanyMinus;
using BrutalCompanyMinus.Minus;
using BrutalCompanyMinus.Minus.CustomEvents;
using BrutalCompanyMinus.Minus.Events;
using BrutalCompanyMinus.Minus.Handlers;
using BrutalCompanyMinus.Minus.MonoBehaviours;
using DigitalRuby.ThunderAndLightning;
using GameNetcodeStuff;
using HarmonyLib;
using LethalNetworkAPI;
using Microsoft.CodeAnalysis;
using TMPro;
using Unity.Collections;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.Animations.Rigging;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using com.github.zehsteam.TakeyGokuBracken;
using com.github.zehsteam.ToilHead;
using com.github.zehsteam.ToilHead.MonoBehaviours;

[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("BrutalCompanyMinus")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+2095ffbd223defec4ac52f80ca1d935d204a430b")]
[assembly: AssemblyProduct("BrutalCompanyMinus")]
[assembly: AssemblyTitle("BrutalCompanyMinus")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
internal class <Module>
{
	static <Module>()
	{
		NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedINetworkSerializable<Weather>();
		NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<Weather>();
		NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedINetworkSerializable<OutsideObjectsToSpawn>();
		NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<OutsideObjectsToSpawn>();
		NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedINetworkSerializable<CurrentWeatherEffect>();
		NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<CurrentWeatherEffect>();
		NetworkVariableSerializationTypes.InitializeSerializer_FixedString<FixedString4096Bytes>();
		NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<FixedString4096Bytes>();
	}
}
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

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

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
public class BloodMoonWeather : MonoBehaviour
{
	private float randomThunderTime;

	private float timeAtLastStrike;

	private Vector3 lastRandomStrikePosition;

	private Random seed;

	public AudioClip[] strikeSFX;

	public AudioClip[] distantThunderSFX;

	public LightningBoltPrefabScript randomThunder;

	public LightningBoltPrefabScript targetedThunder;

	public AudioSource randomStrikeAudio;

	public AudioSource randomStrikeAudioB;

	private bool lastStrikeAudioUsed;

	public AudioSource targetedStrikeAudio;

	private RaycastHit rayHit;

	private GameObject[] outsideNodes;

	private NavMeshHit navHit;

	public ParticleSystem explosionEffectParticle;

	private List<GrabbableObject> metalObjects = new List<GrabbableObject>();

	private GrabbableObject targetingMetalObject;

	private float getObjectToTargetInterval;

	private float strikeMetalObjectTimer;

	private bool hasShownStrikeWarning;

	public ParticleSystem staticElectricityParticle;

	private GameObject setStaticToObject;

	private GrabbableObject setStaticGrabbableObject;

	public AudioClip staticElectricityAudio;

	private float lastGlobalTimeUsed;

	private float globalTimeAtLastStrike;

	private Random targetedThunderRandom;

	private void OnEnable()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Expected O, but got Unknown
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		lastRandomStrikePosition = Vector3.zero;
		targetedThunderRandom = new Random(StartOfRound.Instance.randomMapSeed);
		TimeOfDay.Instance.onTimeSync.AddListener(new UnityAction(OnGlobalTimeSync));
		globalTimeAtLastStrike = TimeOfDay.Instance.globalTime;
		lastGlobalTimeUsed = 0f;
		randomThunderTime = TimeOfDay.Instance.globalTime + 7f;
		timeAtLastStrike = TimeOfDay.Instance.globalTime;
		navHit = default(NavMeshHit);
		outsideNodes = (from x in GameObject.FindGameObjectsWithTag("OutsideAINode")
			orderby x.transform.position.x + x.transform.position.z
			select x).ToArray();
		if (((Behaviour)StartOfRound.Instance.spectateCamera).enabled)
		{
			SwitchCamera(StartOfRound.Instance.spectateCamera);
		}
		else
		{
			SwitchCamera(GameNetworkManager.Instance.localPlayerController.gameplayCamera);
		}
		seed = new Random(StartOfRound.Instance.randomMapSeed);
		DetermineNextStrikeInterval();
		((MonoBehaviour)this).StartCoroutine(GetMetalObjectsAfterDelay());
	}

	private void OnDisable()
	{
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Expected O, but got Unknown
		TimeOfDay.Instance.onTimeSync.RemoveListener(new UnityAction(OnGlobalTimeSync));
	}

	private void OnGlobalTimeSync()
	{
		float num = RoundUpToNearestTen(TimeOfDay.Instance.globalTime);
		if (num != lastGlobalTimeUsed)
		{
			lastGlobalTimeUsed = num;
			seed = new Random((int)num + StartOfRound.Instance.randomMapSeed);
			timeAtLastStrike = TimeOfDay.Instance.globalTime;
		}
	}

	private IEnumerator GetMetalObjectsAfterDelay()
	{
		yield return (object)new WaitForSeconds(15f);
		GrabbableObject[] array = Object.FindObjectsOfType<GrabbableObject>();
		for (int i = 0; i < array.Length; i++)
		{
			if (array[i].itemProperties.isConductiveMetal)
			{
				metalObjects.Add(array[i]);
			}
		}
	}

	public void SwitchCamera(Camera newCamera)
	{
		((LightningBoltScript)randomThunder).Camera = newCamera;
		((LightningBoltScript)targetedThunder).Camera = newCamera;
	}

	private void DetermineNextStrikeInterval()
	{
		timeAtLastStrike = randomThunderTime;
		float num = seed.Next(-5, 110);
		randomThunderTime += Mathf.Clamp(num * 0.25f, 0.6f, 110f) / Mathf.Clamp(TimeOfDay.Instance.currentWeatherVariable, 1f, 100f);
	}

	private int RoundUpToNearestTen(float x)
	{
		return (int)(x / 10f) * 10;
	}

	private void Update()
	{
		//IL_0094: Unknown result type (might be due to invalid IL or missing references)
		//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_036c: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
		if (!((Component)this).gameObject.activeInHierarchy)
		{
			return;
		}
		if (TimeOfDay.Instance.globalTime > randomThunderTime)
		{
			LightningStrikeRandom();
			DetermineNextStrikeInterval();
		}
		if ((Object)(object)setStaticToObject != (Object)null && (Object)(object)setStaticGrabbableObject != (Object)null)
		{
			if (setStaticGrabbableObject.isInFactory)
			{
				staticElectricityParticle.Stop();
			}
			((Component)staticElectricityParticle).transform.position = setStaticToObject.transform.position;
		}
		if (!((NetworkBehaviour)RoundManager.Instance).IsOwner)
		{
			return;
		}
		if ((Object)(object)targetingMetalObject == (Object)null)
		{
			if (metalObjects.Count <= 0)
			{
				return;
			}
			if (getObjectToTargetInterval <= 4f)
			{
				getObjectToTargetInterval += Time.deltaTime;
				return;
			}
			hasShownStrikeWarning = false;
			strikeMetalObjectTimer = Mathf.Clamp(Random.Range(1f, 28f), 0f, 20f);
			getObjectToTargetInterval = 0f;
			float num = 1000f;
			for (int i = 0; i < metalObjects.Count; i++)
			{
				if (metalObjects[i].isInFactory || metalObjects[i].isInShipRoom)
				{
					continue;
				}
				for (int j = 0; j < StartOfRound.Instance.allPlayerScripts.Length; j++)
				{
					if (StartOfRound.Instance.allPlayerScripts[j].isPlayerControlled)
					{
						float num2 = Vector3.Distance(((Component)metalObjects[i]).transform.position, ((Component)StartOfRound.Instance.allPlayerScripts[j]).transform.position);
						if (num2 < num)
						{
							targetingMetalObject = metalObjects[i];
							num = num2;
							break;
						}
					}
				}
				if (Random.Range(0, 100) < 20)
				{
					break;
				}
			}
			if ((Object)(object)targetingMetalObject != (Object)null && targetingMetalObject.isHeld)
			{
				strikeMetalObjectTimer = Mathf.Clamp(strikeMetalObjectTimer + Time.deltaTime, 4f, 20f);
			}
			return;
		}
		strikeMetalObjectTimer -= Time.deltaTime;
		if (strikeMetalObjectTimer <= 0f)
		{
			if (!targetingMetalObject.isInFactory)
			{
				RoundManager.Instance.LightningStrikeServerRpc(((Component)targetingMetalObject).transform.position);
			}
			getObjectToTargetInterval = 5f;
			targetingMetalObject = null;
		}
		else if (strikeMetalObjectTimer < 10f && !hasShownStrikeWarning)
		{
			hasShownStrikeWarning = true;
			float num3 = Mathf.Abs(strikeMetalObjectTimer - 10f);
			RoundManager.Instance.ShowStaticElectricityWarningServerRpc(NetworkObjectReference.op_Implicit(((Component)targetingMetalObject).gameObject.GetComponent<NetworkObject>()), num3);
		}
	}

	public void SetStaticElectricityWarning(NetworkObject warningObject, float particleTime)
	{
		//IL_009c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
		setStaticToObject = ((Component)warningObject).gameObject;
		GrabbableObject component = ((Component)warningObject).gameObject.GetComponent<GrabbableObject>();
		if ((Object)(object)component != (Object)null)
		{
			setStaticGrabbableObject = ((Component)warningObject).gameObject.GetComponent<GrabbableObject>();
			for (int i = 0; i < GameNetworkManager.Instance.localPlayerController.ItemSlots.Length; i++)
			{
				if ((Object)(object)GameNetworkManager.Instance.localPlayerController.ItemSlots[i] == (Object)(object)component)
				{
					HUDManager.Instance.DisplayTip("ALERT!", "Drop your metallic items now! A static charge has been detected. You have seconds left to live.", true, true, "LC_LightningTip");
				}
			}
		}
		ShapeModule shape = staticElectricityParticle.shape;
		((ShapeModule)(ref shape)).meshRenderer = setStaticToObject.GetComponentInChildren<MeshRenderer>();
		staticElectricityParticle.time = particleTime;
		staticElectricityParticle.Play();
		staticElectricityParticle.time = particleTime;
		((Component)staticElectricityParticle).gameObject.GetComponent<AudioSource>().clip = staticElectricityAudio;
		((Component)staticElectricityParticle).gameObject.GetComponent<AudioSource>().Play();
		((Component)staticElectricityParticle).gameObject.GetComponent<AudioSource>().time = particleTime;
	}

	private void LightningStrikeRandom()
	{
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0104: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
		Vector3 randomNavMeshPositionInBoxPredictable;
		if (seed.Next(0, 100) < 60 && (randomThunderTime - timeAtLastStrike) * TimeOfDay.Instance.currentWeatherVariable < 3f)
		{
			randomNavMeshPositionInBoxPredictable = lastRandomStrikePosition;
		}
		else
		{
			int num = seed.Next(0, outsideNodes.Length);
			if (outsideNodes == null || (Object)(object)outsideNodes[num] == (Object)null)
			{
				outsideNodes = (from x in GameObject.FindGameObjectsWithTag("OutsideAINode")
					orderby x.transform.position.x + x.transform.position.z
					select x).ToArray();
				num = seed.Next(0, outsideNodes.Length);
			}
			randomNavMeshPositionInBoxPredictable = outsideNodes[num].transform.position;
			randomNavMeshPositionInBoxPredictable = RoundManager.Instance.GetRandomNavMeshPositionInBoxPredictable(randomNavMeshPositionInBoxPredictable, 15f, navHit, seed, -1);
		}
		lastRandomStrikePosition = randomNavMeshPositionInBoxPredictable;
		LightningStrike(randomNavMeshPositionInBoxPredictable, useTargetedObject: false);
	}

	public void LightningStrike(Vector3 strikePosition, bool useTargetedObject)
	{
		//IL_008d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00de: Unknown result type (might be due to invalid IL or missing references)
		//IL_00df: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0101: Unknown result type (might be due to invalid IL or missing references)
		//IL_0106: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: 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_00b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00be: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_020a: Unknown result type (might be due to invalid IL or missing references)
		//IL_020b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0215: Unknown result type (might be due to invalid IL or missing references)
		//IL_021a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0244: Unknown result type (might be due to invalid IL or missing references)
		//IL_0245: Unknown result type (might be due to invalid IL or missing references)
		//IL_024f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0254: Unknown result type (might be due to invalid IL or missing references)
		//IL_026c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_0166: Unknown result type (might be due to invalid IL or missing references)
		//IL_0167: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Unknown result type (might be due to invalid IL or missing references)
		//IL_0109: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: 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_0116: 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_019e: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
		Random random;
		AudioSource val;
		LightningBoltPrefabScript val2;
		if (useTargetedObject)
		{
			random = targetedThunderRandom;
			staticElectricityParticle.Stop();
			((Component)staticElectricityParticle).GetComponent<AudioSource>().Stop();
			setStaticToObject = null;
			val = targetedStrikeAudio;
			val2 = targetedThunder;
		}
		else
		{
			random = new Random(seed.Next(0, 10000));
			val = ((!lastStrikeAudioUsed) ? randomStrikeAudio : randomStrikeAudioB);
			lastStrikeAudioUsed = !lastStrikeAudioUsed;
			val2 = randomThunder;
		}
		bool flag = false;
		Vector3 val3 = Vector3.zero;
		for (int i = 0; i < 7; i++)
		{
			if (i == 6)
			{
				val3 = strikePosition + Vector3.up * 80f;
			}
			else
			{
				float num = random.Next(-32, 32);
				float num2 = random.Next(-32, 32);
				val3 = strikePosition + Vector3.up * 80f + new Vector3(num, 0f, num2);
			}
			if (!Physics.Linecast(val3, strikePosition + Vector3.up * 0.5f, ref rayHit, StartOfRound.Instance.collidersAndRoomMaskAndDefault, (QueryTriggerInteraction)1))
			{
				flag = true;
				break;
			}
		}
		if (!flag)
		{
			if (!Physics.Raycast(val3, strikePosition - val3, ref rayHit, 100f, StartOfRound.Instance.collidersAndRoomMaskAndDefault, (QueryTriggerInteraction)1))
			{
				return;
			}
			strikePosition = ((RaycastHit)(ref rayHit)).point;
		}
		Debug.DrawLine(val3, strikePosition, Color.red, 10f);
		val2.Source.transform.position = val3;
		val2.Destination.transform.position = strikePosition;
		((LightningBoltPrefabScriptBase)val2).AutomaticModeSeconds = 0.2f;
		((Component)val).transform.position = strikePosition + Vector3.up * 0.5f;
		Landmine.SpawnExplosion(strikePosition + Vector3.up * 0.25f, false, 2.4f, 5f, 50, 0f, (GameObject)null, false);
		((Component)explosionEffectParticle).transform.position = strikePosition + Vector3.up * 0.25f;
		explosionEffectParticle.Play();
		PlayThunderEffects(strikePosition, val);
	}

	private void PlayThunderEffects(Vector3 strikePosition, AudioSource audio)
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
		PlayerControllerB val = GameNetworkManager.Instance.localPlayerController;
		if (val.isPlayerDead && (Object)(object)val.spectatedPlayerScript != (Object)null)
		{
			val = val.spectatedPlayerScript;
		}
		float num = Vector3.Distance(((Component)val.gameplayCamera).transform.position, strikePosition);
		bool flag = false;
		if (num < 40f)
		{
			HUDManager.Instance.ShakeCamera((ScreenShakeType)1);
		}
		else if (num < 110f)
		{
			HUDManager.Instance.ShakeCamera((ScreenShakeType)2);
		}
		else
		{
			flag = true;
		}
		AudioClip[] array = ((!flag) ? strikeSFX : distantThunderSFX);
		if (!val.isInsideFactory)
		{
			RoundManager.PlayRandomClip(audio, array, true, 1f, 0, 1000);
		}
		WalkieTalkie.TransmitOneShotAudio(audio, array[Random.Range(0, array.Length)], 1f);
		Bounds bounds = StartOfRound.Instance.shipBounds.bounds;
		if (((Bounds)(ref bounds)).Contains(strikePosition))
		{
			((Component)StartOfRound.Instance.shipAnimatorObject).GetComponent<Animator>().SetTrigger("shipShake");
			RoundManager.PlayRandomClip(StartOfRound.Instance.ship3DAudio, StartOfRound.Instance.shipCreakSFX, false, 1f, 0, 1000);
			StartOfRound.Instance.PowerSurgeShip();
		}
	}
}
namespace BrutalCompanyMinus
{
	[HarmonyPatch]
	public class Assets
	{
		public enum EnemyName
		{
			Bracken,
			HoardingBug,
			CoilHead,
			Thumper,
			BunkerSpider,
			Jester,
			SnareFlea,
			Hygrodere,
			GhostGirl,
			SporeLizard,
			NutCracker,
			Masked,
			EyelessDog,
			ForestKeeper,
			EarthLeviathan,
			BaboonHawk,
			RoamingLocust,
			Manticoil,
			CircuitBee,
			Lasso,
			Butler,
			OldBird,
			FlowerSnake
		}

		public enum ItemName
		{
			LargeAxle,
			V_TypeEngine,
			PlasticFish,
			MetalSheet,
			LaserPointer,
			BigBolt,
			Bottles,
			Ring,
			SteeringWheel,
			CookieMoldPan,
			EggBeater,
			JarOfPickles,
			DustPan,
			AirHorn,
			ClownHorn,
			CashRegister,
			Candy,
			GoldBar,
			YieldSign,
			HomemadeFlashbang,
			Gift,
			Flask,
			ToyCube,
			Remote,
			ToyRobot,
			MagnifyingGlass,
			StopSign,
			TeaKettle,
			Mug,
			RedSoda,
			OldPhone,
			HairDryer,
			Brush,
			Bell,
			WhoopieCushion,
			Comedy,
			Tragedy,
			RubberDucky,
			ChemicalJug,
			FancyLamp,
			GoldenCup,
			Painting,
			Toothpaste,
			PillBottle,
			PerfumeBottle,
			Teeth,
			Magic7Ball,
			EasterEgg
		}

		public enum ObjectName
		{
			LargeRock1,
			LargeRock2,
			LargeRock3,
			LargeRock4,
			TreeLeaflessBrown1,
			GiantPumkin,
			GreyRockGrouping2,
			GreyRockGrouping4,
			Tree,
			TreeLeafless2,
			TreeLeafless3,
			Landmine,
			Turret,
			SpikeRoofTrap
		}

		public enum AtmosphereName
		{
			RollingGroundFog,
			Rainy,
			Stormy,
			Foggy,
			Flooded,
			Exclipsed
		}

		internal static AssetBundle bundle;

		internal static AssetBundle customAssetBundle;

		public static Dictionary<EnemyName, string> EnemyNameList = new Dictionary<EnemyName, string>
		{
			{
				EnemyName.SnareFlea,
				"Centipede"
			},
			{
				EnemyName.BunkerSpider,
				"SandSpider"
			},
			{
				EnemyName.HoardingBug,
				"HoarderBug"
			},
			{
				EnemyName.Bracken,
				"Flowerman"
			},
			{
				EnemyName.Thumper,
				"Crawler"
			},
			{
				EnemyName.Hygrodere,
				"Blob"
			},
			{
				EnemyName.GhostGirl,
				"DressGirl"
			},
			{
				EnemyName.SporeLizard,
				"Puffer"
			},
			{
				EnemyName.NutCracker,
				"Nutcracker"
			},
			{
				EnemyName.EyelessDog,
				"MouthDog"
			},
			{
				EnemyName.ForestKeeper,
				"ForestGiant"
			},
			{
				EnemyName.EarthLeviathan,
				"SandWorm"
			},
			{
				EnemyName.CircuitBee,
				"RedLocustBees"
			},
			{
				EnemyName.BaboonHawk,
				"BaboonHawk"
			},
			{
				EnemyName.CoilHead,
				"SpringMan"
			},
			{
				EnemyName.Jester,
				"Jester"
			},
			{
				EnemyName.Lasso,
				"LassoMan"
			},
			{
				EnemyName.Masked,
				"MaskedPlayerEnemy"
			},
			{
				EnemyName.Manticoil,
				"Doublewing"
			},
			{
				EnemyName.RoamingLocust,
				"DocileLocustBees"
			},
			{
				EnemyName.Butler,
				"Butler"
			},
			{
				EnemyName.OldBird,
				"RadMech"
			},
			{
				EnemyName.FlowerSnake,
				"FlowerSnake"
			}
		};

		public static Dictionary<ItemName, string> ItemNameList = new Dictionary<ItemName, string>
		{
			{
				ItemName.LargeAxle,
				"Cog1"
			},
			{
				ItemName.V_TypeEngine,
				"EnginePart1"
			},
			{
				ItemName.PlasticFish,
				"FishTestProp"
			},
			{
				ItemName.MetalSheet,
				"MetalSheet"
			},
			{
				ItemName.LaserPointer,
				"FlashLaserPointer"
			},
			{
				ItemName.BigBolt,
				"BigBolt"
			},
			{
				ItemName.Bottles,
				"BottleBin"
			},
			{
				ItemName.Ring,
				"Ring"
			},
			{
				ItemName.SteeringWheel,
				"SteeringWheel"
			},
			{
				ItemName.CookieMoldPan,
				"MoldPan"
			},
			{
				ItemName.EggBeater,
				"EggBeater"
			},
			{
				ItemName.JarOfPickles,
				"PickleJar"
			},
			{
				ItemName.DustPan,
				"DustPan"
			},
			{
				ItemName.AirHorn,
				"Airhorn"
			},
			{
				ItemName.ClownHorn,
				"ClownHorn"
			},
			{
				ItemName.CashRegister,
				"CashRegister"
			},
			{
				ItemName.Candy,
				"Candy"
			},
			{
				ItemName.GoldBar,
				"GoldBar"
			},
			{
				ItemName.YieldSign,
				"YieldSign"
			},
			{
				ItemName.HomemadeFlashbang,
				"DiyFlashbang"
			},
			{
				ItemName.Gift,
				"GiftBox"
			},
			{
				ItemName.Flask,
				"Flask"
			},
			{
				ItemName.ToyCube,
				"ToyCube"
			},
			{
				ItemName.Remote,
				"Remote"
			},
			{
				ItemName.ToyRobot,
				"RobotToy"
			},
			{
				ItemName.MagnifyingGlass,
				"MagnifyingGlass"
			},
			{
				ItemName.StopSign,
				"StopSign"
			},
			{
				ItemName.TeaKettle,
				"TeaKettle"
			},
			{
				ItemName.Mug,
				"Mug"
			},
			{
				ItemName.RedSoda,
				"SodaCanRed"
			},
			{
				ItemName.OldPhone,
				"Phone"
			},
			{
				ItemName.HairDryer,
				"Hairdryer"
			},
			{
				ItemName.Brush,
				"Brush"
			},
			{
				ItemName.Bell,
				"Bell"
			},
			{
				ItemName.WhoopieCushion,
				"WhoopieCushion"
			},
			{
				ItemName.Comedy,
				"ComedyMask"
			},
			{
				ItemName.Tragedy,
				"TragedyMask"
			},
			{
				ItemName.RubberDucky,
				"RubberDuck"
			},
			{
				ItemName.ChemicalJug,
				"ChemicalJug"
			},
			{
				ItemName.FancyLamp,
				"FancyLamp"
			},
			{
				ItemName.Painting,
				"FancyPainting"
			},
			{
				ItemName.GoldenCup,
				"FancyCup"
			},
			{
				ItemName.Toothpaste,
				"Toothpaste"
			},
			{
				ItemName.PillBottle,
				"PillBottle"
			},
			{
				ItemName.PerfumeBottle,
				"PerfumeBottle"
			},
			{
				ItemName.Teeth,
				"Dentures"
			},
			{
				ItemName.Magic7Ball,
				"7Ball"
			},
			{
				ItemName.EasterEgg,
				"EasterEgg"
			}
		};

		public static Dictionary<ObjectName, string> ObjectNameList = new Dictionary<ObjectName, string>
		{
			{
				ObjectName.LargeRock1,
				"LargeRock1"
			},
			{
				ObjectName.LargeRock2,
				"LargeRock2"
			},
			{
				ObjectName.LargeRock3,
				"LargeRock3"
			},
			{
				ObjectName.LargeRock4,
				"LargeRock4"
			},
			{
				ObjectName.GreyRockGrouping2,
				"GreyRockGrouping2"
			},
			{
				ObjectName.GreyRockGrouping4,
				"GreyRockGrouping4"
			},
			{
				ObjectName.GiantPumkin,
				"GiantPumpkin"
			},
			{
				ObjectName.Tree,
				"tree"
			},
			{
				ObjectName.TreeLeaflessBrown1,
				"treeLeaflessBrown.001 Variant"
			},
			{
				ObjectName.TreeLeafless2,
				"treeLeafless.002_LOD0"
			},
			{
				ObjectName.TreeLeafless3,
				"treeLeafless.003_LOD0"
			},
			{
				ObjectName.Landmine,
				"Landmine"
			},
			{
				ObjectName.Turret,
				"TurretContainer"
			},
			{
				ObjectName.SpikeRoofTrap,
				"SpikeRoofTrapHazard"
			}
		};

		public static Dictionary<AtmosphereName, string> AtmosphereNameList = new Dictionary<AtmosphereName, string>
		{
			{
				AtmosphereName.RollingGroundFog,
				"rolling ground fog"
			},
			{
				AtmosphereName.Rainy,
				"rainy"
			},
			{
				AtmosphereName.Stormy,
				"stormy"
			},
			{
				AtmosphereName.Foggy,
				"foggy"
			},
			{
				AtmosphereName.Flooded,
				"flooded"
			},
			{
				AtmosphereName.Exclipsed,
				"eclipsed"
			}
		};

		public static Dictionary<string, EnemyType> EnemyList = new Dictionary<string, EnemyType>();

		public static Dictionary<string, Item> ItemList = new Dictionary<string, Item>();

		public static Dictionary<string, GameObject> ObjectList = new Dictionary<string, GameObject>();

		internal static List<float> factorySizeMultiplierList = new List<float>();

		internal static List<SpawnableMapObject[]> spawnableMapObjects = new List<SpawnableMapObject[]>();

		internal static List<float> averageScrapValueList = new List<float>();

		internal static List<AnimationCurve> insideSpawnChanceCurves = new List<AnimationCurve>();

		internal static List<AnimationCurve> outsideSpawnChanceCurves = new List<AnimationCurve>();

		internal static List<AnimationCurve> daytimeSpawnChanceCurves = new List<AnimationCurve>();

		internal static List<int> insideMaxPowerCounts = new List<int>();

		internal static List<int> outsideMaxPowerCounts = new List<int>();

		internal static List<int> daytimeMaxPowerCounts = new List<int>();

		internal static StormyWeather stormy;

		internal static FloodWeather flooded;

		public static EnemyType antiCoilHead;

		public static EnemyType nutSlayer;

		public static EnemyType kamikazieBug;

		public static Item slayerShotgun;

		public static Item grabbableTurret;

		public static Item grabbableLandmine;

		public static GameObject artilleryShell;

		public static GameObject artillerySirens;

		public static GameObject bunkerEntrance;

		public static GameObject bunkerEscape;

		public static GameObject teleportAudio;

		public static GameObject bloodRain;

		private static bool generatedList = false;

		private static bool generatedOrignalValuesList = false;

		internal static GameObject hangarShip => GameObject.Find("/Environment/HangarShip");

		[HarmonyPostfix]
		[HarmonyPatch(typeof(GameNetworkManager), "Start")]
		private static void GenerateCustom()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Expected O, but got Unknown
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Expected O, but got Unknown
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Expected O, but got Unknown
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Expected O, but got Unknown
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Expected O, but got Unknown
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Expected O, but got Unknown
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Expected O, but got Unknown
			antiCoilHead = (EnemyType)customAssetBundle.LoadAsset("AntiCoilHead");
			nutSlayer = (EnemyType)customAssetBundle.LoadAsset("NutSlayer");
			kamikazieBug = (EnemyType)customAssetBundle.LoadAsset("KamikazieBug");
			slayerShotgun = (Item)customAssetBundle.LoadAsset("SlayerShotgun");
			grabbableTurret = (Item)customAssetBundle.LoadAsset("GrabbableTurret");
			grabbableLandmine = (Item)customAssetBundle.LoadAsset("GrabbableLandmine");
			artilleryShell = (GameObject)customAssetBundle.LoadAsset("ArtilleryShell");
			artillerySirens = (GameObject)customAssetBundle.LoadAsset("DDay");
			bunkerEntrance = (GameObject)customAssetBundle.LoadAsset("BunkerEntrance");
			bunkerEscape = (GameObject)customAssetBundle.LoadAsset("BunkerEscape");
			teleportAudio = (GameObject)customAssetBundle.LoadAsset("TeleportAudioSource");
			bloodRain = (GameObject)customAssetBundle.LoadAsset("BloodRainParticleContainer");
			RegisterNetworkPrefabs(antiCoilHead.enemyPrefab, nutSlayer.enemyPrefab, kamikazieBug.enemyPrefab, slayerShotgun.spawnPrefab, grabbableTurret.spawnPrefab, grabbableLandmine.spawnPrefab, artillerySirens, bunkerEntrance, bunkerEscape);
		}

		private static void RegisterNetworkPrefabs(params GameObject[] objects)
		{
			foreach (GameObject val in objects)
			{
				NetworkManager.Singleton.AddNetworkPrefab(val);
			}
		}

		[HarmonyPostfix]
		[HarmonyPatch(typeof(TimeOfDay), "Start")]
		private static void OnTimeOfODayStart(ref TimeOfDay __instance)
		{
			//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_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			GameObject val = Object.Instantiate<GameObject>(bloodRain);
			LocalVolumetricFog component = ((Component)val.transform.Find("Foggy")).GetComponent<LocalVolumetricFog>();
			component.parameters.albedo = new Color(0.25f, 0.35f, 0.55f, 1f);
			component.parameters.meanFreePath = 80f;
			component.parameters.size.y = 255f;
			__instance.effects = __instance.effects.Add(new WeatherEffect
			{
				name = "bloodyrain",
				effectObject = val,
				effectPermanentObject = null,
				lerpPosition = false,
				effectEnabled = false
			});
		}

		[HarmonyPrefix]
		[HarmonyPatch(typeof(StartOfRound), "Start")]
		private static void OnStartOfRoundStart()
		{
			StartOfRound.Instance.allItemsList.itemsList.AddRange(new List<Item> { slayerShotgun, grabbableTurret, grabbableLandmine });
		}

		internal static void Load()
		{
			using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("BrutalCompanyMinus.Asset.bcm_assets"))
			{
				bundle = AssetBundle.LoadFromStream(stream);
			}
			using (Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("BrutalCompanyMinus.Asset.bcm_customassets"))
			{
				customAssetBundle = AssetBundle.LoadFromStream(stream2);
			}
			SceneManager.sceneLoaded += OnSceneLoaded;
		}

		private static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
		{
			if ((Object)(object)StartOfRound.Instance == (Object)null)
			{
				return;
			}
			StormyWeather[] array = Resources.FindObjectsOfTypeAll<StormyWeather>().Concat(Object.FindObjectsByType<StormyWeather>((FindObjectsInactive)1, (FindObjectsSortMode)1)).ToArray();
			FloodWeather[] array2 = Resources.FindObjectsOfTypeAll<FloodWeather>().Concat(Object.FindObjectsByType<FloodWeather>((FindObjectsInactive)1, (FindObjectsSortMode)1)).ToArray();
			if (array.Length != 0)
			{
				stormy = array[0];
			}
			if (array2.Length != 0)
			{
				flooded = array2[0];
			}
			if (generatedList)
			{
				return;
			}
			Log.LogInfo("Generating 'EnemyList'");
			EnemyType[] array3 = Resources.FindObjectsOfTypeAll<EnemyType>().Concat(Object.FindObjectsByType<EnemyType>((FindObjectsInactive)1, (FindObjectsSortMode)1)).ToArray();
			Array.Reverse(array3);
			array3 = (from x in array3
				group x by ((Object)x).name into x
				select x.FirstOrDefault()).ToArray();
			for (int i = 0; i < array3.Length; i++)
			{
				if ((Object)(object)array3[i].enemyPrefab == (Object)null)
				{
					Log.LogWarning($"Enemy:{((Object)array3[i]).name}, prefab is null, this may cause issues...");
				}
				EnemyList.Add(((Object)array3[i]).name, array3[i]);
			}
			EnemyList.Remove("RedPillEnemyType");
			foreach (KeyValuePair<string, EnemyType> enemy in EnemyList)
			{
				bool flag = false;
				foreach (KeyValuePair<EnemyName, string> enemyName in EnemyNameList)
				{
					if (enemy.Key == enemyName.Value)
					{
						flag = true;
						break;
					}
				}
				if (!flag)
				{
					Log.LogWarning($"Enemy:'{enemy.Key}', isn't matched with enum, this may cause issues...");
				}
			}
			Log.LogInfo($"Finished generating 'EnemyList', Count:{EnemyList.Count}");
			Log.LogInfo("Generating 'ItemList'");
			Item[] array4 = Resources.FindObjectsOfTypeAll<Item>().Concat(Object.FindObjectsByType<Item>((FindObjectsInactive)1, (FindObjectsSortMode)1)).ToArray();
			Array.Reverse(array4);
			array4 = (from x in array4
				group x by ((Object)x).name into x
				select x.FirstOrDefault()).ToArray();
			for (int j = 0; j < array4.Length; j++)
			{
				if ((Object)(object)array4[j].spawnPrefab == (Object)null)
				{
					Log.LogWarning($"Item:{((Object)array4[j]).name}, prefab is null, this may cause issues...");
				}
				ItemList.Add(((Object)array4[j]).name, array4[j]);
			}
			foreach (KeyValuePair<string, Item> item in ItemList)
			{
				bool flag2 = false;
				foreach (KeyValuePair<ItemName, string> itemName in ItemNameList)
				{
					if (item.Key == itemName.Value)
					{
						flag2 = true;
						break;
					}
				}
				if (!flag2)
				{
					Log.LogWarning($"Item:'{item.Key}', isn't matched with enum, this may cause issues...");
				}
			}
			Log.LogInfo($"Finished generating 'ItemList', Count:{ItemList.Count}");
			Log.LogInfo("Generating 'ObjectList'");
			List<SpawnableMapObject> list = new List<SpawnableMapObject>();
			List<SpawnableOutsideObjectWithRarity> list2 = new List<SpawnableOutsideObjectWithRarity>();
			SelectableLevel[] levels = StartOfRound.Instance.levels;
			foreach (SelectableLevel val in levels)
			{
				if ((Object)(object)val == (Object)null || val.spawnableMapObjects == null)
				{
					continue;
				}
				SpawnableMapObject[] array5 = val.spawnableMapObjects;
				foreach (SpawnableMapObject obj2 in array5)
				{
					if (obj2 != null && !((Object)(object)obj2.prefabToSpawn == (Object)null) && list.FindIndex((SpawnableMapObject o) => ((Object)o.prefabToSpawn).name == ((Object)obj2.prefabToSpawn).name) < 0)
					{
						list.Add(obj2);
					}
				}
				SpawnableOutsideObjectWithRarity[] spawnableOutsideObjects = val.spawnableOutsideObjects;
				foreach (SpawnableOutsideObjectWithRarity obj in spawnableOutsideObjects)
				{
					if (obj != null && !((Object)(object)obj.spawnableObject == (Object)null) && !((Object)(object)obj.spawnableObject.prefabToSpawn == (Object)null) && list2.FindIndex((SpawnableOutsideObjectWithRarity o) => ((Object)o.spawnableObject.prefabToSpawn).name == ((Object)obj.spawnableObject.prefabToSpawn).name) < 0)
					{
						list2.Add(obj);
					}
				}
			}
			foreach (SpawnableMapObject item2 in list)
			{
				ObjectList.Add(((Object)item2.prefabToSpawn).name, item2.prefabToSpawn);
			}
			foreach (SpawnableOutsideObjectWithRarity item3 in list2)
			{
				ObjectList.Add(((Object)item3.spawnableObject.prefabToSpawn).name, item3.spawnableObject.prefabToSpawn);
			}
			foreach (KeyValuePair<string, GameObject> @object in ObjectList)
			{
				bool flag3 = false;
				foreach (KeyValuePair<ObjectName, string> objectName in ObjectNameList)
				{
					if (@object.Key == objectName.Value)
					{
						flag3 = true;
						break;
					}
				}
				if (!flag3)
				{
					Log.LogWarning($"Object:'{@object.Key}', isn't matched with enum, this may cause issues...");
				}
			}
			Log.LogInfo($"Finished generating 'ObjectList', Count:{ObjectList.Count}");
			Log.LogInfo($"Map Count:{factorySizeMultiplierList.Count}");
			Log.LogInfo("Generating configuration");
			Configuration.CreateConfig();
			generatedList = true;
		}

		internal static void generateOriginalValuesLists()
		{
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Expected O, but got Unknown
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Expected O, but got Unknown
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: Expected O, but got Unknown
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			if (generatedOrignalValuesList)
			{
				return;
			}
			SelectableLevel[] levels = StartOfRound.Instance.levels;
			foreach (SelectableLevel val in levels)
			{
				factorySizeMultiplierList.Add(val.factorySizeMultiplier);
				List<SpawnableItemWithRarity> list = new List<SpawnableItemWithRarity>();
				list.AddRange(val.spawnableScrap);
				float num = 0f;
				float num2 = 0f;
				foreach (SpawnableItemWithRarity item in list)
				{
					num += (float)((item.spawnableItem.minValue + item.spawnableItem.maxValue) * item.rarity);
					num2 += (float)item.rarity;
				}
				if (num2 != 0f)
				{
					averageScrapValueList.Add(num / (num2 * 2f));
				}
				else
				{
					averageScrapValueList.Add(80f);
				}
				AnimationCurve val2 = new AnimationCurve();
				AnimationCurve val3 = new AnimationCurve();
				AnimationCurve val4 = new AnimationCurve();
				Keyframe[] keys = val.enemySpawnChanceThroughoutDay.keys;
				foreach (Keyframe val5 in keys)
				{
					val2.AddKey(val5);
				}
				Keyframe[] keys2 = val.outsideEnemySpawnChanceThroughDay.keys;
				foreach (Keyframe val6 in keys2)
				{
					val3.AddKey(val6);
				}
				Keyframe[] keys3 = val.daytimeEnemySpawnChanceThroughDay.keys;
				foreach (Keyframe val7 in keys3)
				{
					val4.AddKey(val7);
				}
				insideSpawnChanceCurves.Add(val2);
				outsideSpawnChanceCurves.Add(val3);
				daytimeSpawnChanceCurves.Add(val4);
				insideMaxPowerCounts.Add(val.maxEnemyPowerCount);
				outsideMaxPowerCounts.Add(val.maxOutsideEnemyPowerCount);
				daytimeMaxPowerCounts.Add(val.maxDaytimeEnemyPowerCount);
				spawnableMapObjects.Add(val.spawnableMapObjects);
			}
			generatedOrignalValuesList = true;
		}

		public static EnemyType GetEnemy(EnemyName name)
		{
			return GetEnemy(EnemyNameList[name]);
		}

		public static EnemyType GetEnemy(string name)
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			if (EnemyList.TryGetValue(name, out EnemyType value))
			{
				return value;
			}
			Log.LogWarning("GetEnemy(" + name + ") failed, returning an empty enemy type");
			EnemyType val = new EnemyType();
			val.enemyName = name;
			((Object)val).name = name;
			return val;
		}

		public static EnemyType GetEnemyOrDefault(string name)
		{
			if (EnemyList.TryGetValue(name, out EnemyType value))
			{
				return value;
			}
			Log.LogWarning("GetEnemyOrDefault(" + name + ") failed, returning kamikazie bug.");
			return kamikazieBug;
		}

		public static Item GetItem(ItemName name)
		{
			return GetItem(ItemNameList[name]);
		}

		public static Item GetItem(string name)
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			if (ItemList.TryGetValue(name, out Item value))
			{
				return value;
			}
			Log.LogWarning("GetItem(" + name + ") failed, returning an empty item");
			Item val = new Item();
			val.itemName = name;
			((Object)val).name = name;
			return val;
		}

		[Obsolete("Causes the mod to fail, do not use on modded item events", false)]
		public static Item GetItemByName(string itemName, bool matchCase = true)
		{
			StringComparison comparisonType = ((!matchCase) ? StringComparison.OrdinalIgnoreCase : StringComparison.CurrentCulture);
			foreach (Item items in StartOfRound.Instance.allItemsList.itemsList)
			{
				if (items.itemName.Equals(itemName, comparisonType))
				{
					return items;
				}
			}
			return null;
		}

		[Obsolete("Causes the mod to fail, do not use on vanilla item events", true)]
		public static Item GetItemByNameModded(string itemName, bool isModPresent, bool matchCase = true)
		{
			if (isModPresent)
			{
				StringComparison comparisonType = ((!matchCase) ? StringComparison.OrdinalIgnoreCase : StringComparison.CurrentCulture);
				foreach (Item items in StartOfRound.Instance.allItemsList.itemsList)
				{
					if (items.itemName.Equals(itemName, comparisonType))
					{
						return items;
					}
				}
				return null;
			}
			return null;
		}

		public static GameObject GetObject(ObjectName name)
		{
			return GetObject(ObjectNameList[name]);
		}

		public static GameObject GetObject(string name)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			if (ObjectList.TryGetValue(name, out GameObject value))
			{
				return value;
			}
			Log.LogWarning("GetObject(" + name + " failed, returning empty gameObject");
			return new GameObject(name);
		}
	}
	[HarmonyPatch]
	public class Net : NetworkBehaviour
	{
		public NetworkList<Weather> currentWeatherMultipliers;

		public NetworkList<OutsideObjectsToSpawn> outsideObjectsToSpawn;

		public NetworkList<CurrentWeatherEffect> currentWeatherEffects;

		public NetworkVariable<FixedString4096Bytes> textUI = new NetworkVariable<FixedString4096Bytes>(default(FixedString4096Bytes), (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);

		public bool receivedSyncedValues = false;

		public List<GameObject> objectsToSpawn = new List<GameObject>();

		public List<int> objectsToSpawnAmount = new List<int>();

		public List<float> objectsToSpawnRadius = new List<float>();

		public List<Vector3> objectsToSpawnOffsets = new List<Vector3>();

		private float currentIntervalTime = 0f;

		public int _seed = 49;

		public static Net Instance { get; private set; }

		public static GameObject netObject { get; private set; }

		private void Awake()
		{
			currentWeatherMultipliers = new NetworkList<Weather>();
			outsideObjectsToSpawn = new NetworkList<OutsideObjectsToSpawn>();
			currentWeatherEffects = new NetworkList<CurrentWeatherEffect>();
		}

		private void Update()
		{
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			if (currentIntervalTime > 0f)
			{
				currentIntervalTime -= Time.deltaTime;
			}
			else
			{
				currentIntervalTime = 0.5f;
				if (currentWeatherEffects.Count > 0)
				{
					foreach (CurrentWeatherEffect currentWeatherEffect in currentWeatherEffects)
					{
						PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
						if (!((Object)(object)localPlayerController == (Object)null))
						{
							if (localPlayerController.isPlayerDead)
							{
								UpdateAtmosphere(currentWeatherEffect.name, state: false);
							}
							else if (!localPlayerController.isInsideFactory)
							{
								UpdateAtmosphere(currentWeatherEffect.name, currentWeatherEffect.state);
							}
							else
							{
								UpdateAtmosphere(currentWeatherEffect.name, state: false);
							}
						}
					}
				}
			}
			if (objectsToSpawn.Count > 0)
			{
				Manager.Spawn.DoSpawnOutsideObjects(objectsToSpawnAmount[0], objectsToSpawnRadius[0], objectsToSpawnOffsets[0], objectsToSpawn[0]);
				objectsToSpawn.RemoveAt(0);
				objectsToSpawnAmount.RemoveAt(0);
				objectsToSpawnRadius.RemoveAt(0);
				objectsToSpawnOffsets.RemoveAt(0);
			}
		}

		public override void OnNetworkSpawn()
		{
			Instance = this;
			UI.SpawnObject();
			if (((NetworkBehaviour)this).IsServer)
			{
				InitalizeCurrentWeatherMultipliersServerRpc();
			}
			((NetworkBehaviour)this).OnNetworkSpawn();
		}

		public override void OnNetworkDespawn()
		{
			UI.Instance.UnsubscribeFromKeyboardEvent();
			Object.Destroy((Object)(object)GameObject.Find("EventGUI"));
			((NetworkBehaviour)this).OnNetworkDespawn();
		}

		[ClientRpc]
		public FixedString4096Bytes GetSyncedTextServerRpc()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return textUI.Value;
		}

		[ServerRpc(RequireOwnership = false)]
		public int GiveSeed()
		{
			return _seed++;
		}

		[ClientRpc]
		public void ClearGameObjectsClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(174694319u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 174694319u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			for (int i = 0; i != Manager.objectsToClear.Count; i++)
			{
				if (!((Object)(object)Manager.objectsToClear[i] != (Object)null))
				{
					continue;
				}
				NetworkObject component = Manager.objectsToClear[i].GetComponent<NetworkObject>();
				if ((Object)(object)component != (Object)null)
				{
					try
					{
						component.Despawn(true);
					}
					catch
					{
					}
				}
				else
				{
					try
					{
						Object.Destroy((Object)(object)Manager.objectsToClear[i]);
					}
					catch
					{
					}
				}
			}
			Manager.objectsToClear.Clear();
		}

		[ClientRpc]
		public void SyncValuesClientRpc(float factorySizeMultiplier, float scrapValueMultiplier, float scrapAmountMultiplier, int bonusMaxHp)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2150416984u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref factorySizeMultiplier, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref scrapValueMultiplier, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref scrapAmountMultiplier, default(ForPrimitives));
					BytePacker.WriteValueBitPacked(val2, bonusMaxHp);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2150416984u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					RoundManager.Instance.currentLevel.factorySizeMultiplier = factorySizeMultiplier;
					Manager.bonusEnemyHp = bonusMaxHp;
					receivedSyncedValues = true;
				}
			}
		}

		[ServerRpc]
		public void SyncScrapValueServerRpc(NetworkObjectReference obj, int value)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Invalid comparison between Unknown and I4
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Invalid comparison between Unknown and I4
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId)
				{
					if ((int)networkManager.LogLevel <= 1)
					{
						Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!");
					}
					return;
				}
				ServerRpcParams val = default(ServerRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(875794818u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
				BytePacker.WriteValueBitPacked(val2, value);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 875794818u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				SyncScrapValueClientRpc(obj, value);
			}
		}

		[ClientRpc]
		private void SyncScrapValueClientRpc(NetworkObjectReference obj, int value)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(268987115u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
					BytePacker.WriteValueBitPacked(val2, value);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 268987115u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					NetworkObject val3 = default(NetworkObject);
					((NetworkObjectReference)(ref obj)).TryGet(ref val3, (NetworkManager)null);
					((Component)val3).GetComponent<GrabbableObject>().SetScrapValue(value);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void GenerateAndSyncTerminalCodeServerRpc(NetworkObjectReference netObject, int code)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2205229909u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref netObject, default(ForNetworkSerializable));
					BytePacker.WriteValueBitPacked(val2, code);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2205229909u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					GenerateAndSyncTerminalCodeClientRpc(netObject, code);
				}
			}
		}

		[ClientRpc]
		public void GenerateAndSyncTerminalCodeClientRpc(NetworkObjectReference netObject, int code)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3849078077u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref netObject, default(ForNetworkSerializable));
				BytePacker.WriteValueBitPacked(val2, code);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3849078077u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			NetworkObject val3 = null;
			if (!((NetworkObjectReference)(ref netObject)).TryGet(ref val3, (NetworkManager)null))
			{
				Log.LogError("Network Object is null in GenerateAndSyncTerminalCodeClientRpc()");
				return;
			}
			TerminalAccessibleObject componentInChildren = ((Component)val3).GetComponentInChildren<TerminalAccessibleObject>();
			if ((Object)(object)componentInChildren == (Object)null)
			{
				Log.LogError("Terminal Accessible Object is null in GenerateAndSyncTerminalCodeClientRpc()");
				return;
			}
			componentInChildren.InitializeValues();
			componentInChildren.SetCodeTo(code);
		}

		[ServerRpc(RequireOwnership = false)]
		public void MoveTimeServerRpc(float amount, float speedMultiplier = 1f)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: 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(2208211795u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref amount, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref speedMultiplier, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2208211795u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					MoveTimeClientRpc(amount, speedMultiplier);
				}
			}
		}

		[ClientRpc]
		public void MoveTimeClientRpc(float amount, float speedMultiplier)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3436861046u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref amount, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref speedMultiplier, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3436861046u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					Manager.moveTime = true;
					Manager.moveTimeAmount += amount;
					Manager.timeSpeedMultiplier *= speedMultiplier;
				}
			}
		}

		private void UpdateAtmosphere(FixedString128Bytes name, bool state)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < TimeOfDay.Instance.effects.Length; i++)
			{
				FixedString128Bytes val = FixedString128Bytes.op_Implicit(TimeOfDay.Instance.effects[i].name);
				if ((ref val) == (ref name))
				{
					TimeOfDay.Instance.effects[i].effectEnabled = state;
				}
			}
		}

		[ClientRpc]
		public void ShowCaseEventsClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1744607847u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1744607847u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					UI.Instance.curretShowCaseEventTime = UI.Instance.showCaseEventTime;
					UI.Instance.TogglePanel(state: true);
					UI.Instance.panelScrollBar.value = 1f;
					UI.Instance.showCaseEvents = true;
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		private void InitalizeCurrentWeatherMultipliersServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1335262659u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1335262659u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					currentWeatherMultipliers = Weather.InitalizeWeatherMultipliers(currentWeatherMultipliers);
					UpdateCurrentWeatherMultipliersServerRpc();
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void UpdateCurrentWeatherMultipliersServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(466041418u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 466041418u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					currentWeatherMultipliers = Weather.RandomizeWeatherMultipliers(currentWeatherMultipliers);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void SetRecievedServerRpc(bool state)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1853859009u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref state, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1853859009u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					SetRecievedClientRpc(state);
				}
			}
		}

		[ClientRpc]
		public void SetRecievedClientRpc(bool state)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(603622741u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref state, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 603622741u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					receivedSyncedValues = state;
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void SetRealityShiftActiveServerRpc(bool state)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(4203994123u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref state, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 4203994123u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					SetRealityShiftActiveClientRpc(state);
				}
			}
		}

		[ClientRpc]
		public void SetRealityShiftActiveClientRpc(bool state)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2568149201u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref state, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2568149201u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					BrutalCompanyMinus.Minus.Events.RealityShift.Active = state;
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void SetAllWeatherActiveServerRpc(bool state)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1050877662u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref state, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1050877662u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					SetAllWeatherActiveClientRpc(state);
				}
			}
		}

		[ClientRpc]
		public void SetAllWeatherActiveClientRpc(bool state)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1627891447u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref state, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1627891447u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					BrutalCompanyMinus.Minus.Events.AllWeather.Active = state;
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void MessWithLightsServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3368901509u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3368901509u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					MessWithLightsClientRpc();
				}
			}
		}

		[ClientRpc]
		public void MessWithLightsClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2808903510u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2808903510u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					RoundManager.Instance.FlickerLights(true, true);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void MessWithBreakerServerRpc(bool state)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3941924814u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref state, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3941924814u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					MessWithBreakerClientRpc(state);
				}
			}
		}

		[ClientRpc]
		public void MessWithBreakerClientRpc(bool state)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3457555438u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref state, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3457555438u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				BreakerBox val3 = Object.FindObjectOfType<BreakerBox>();
				if ((Object)(object)val3 != (Object)null)
				{
					val3.SetSwitchesOff();
					RoundManager.Instance.TurnOnAllLights(state);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void MessWithDoorsServerRpc(float openCloseChance, bool messWithLock = false, float messWithLockChance = 0f)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				ServerRpcParams val = default(ServerRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2842285472u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref openCloseChance, default(ForPrimitives));
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref messWithLock, default(ForPrimitives));
				((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref messWithLockChance, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2842285472u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				if (_seed == 0)
				{
					_seed = StartOfRound.Instance.randomMapSeed;
				}
				_seed++;
				MessWithDoorsClientRpc(openCloseChance, _seed, messWithLock, messWithLockChance);
			}
		}

		[ClientRpc]
		public void MessWithDoorsClientRpc(float openCloseChance, int seed, bool messWithLock, float messWithLockChance)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1683303265u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref openCloseChance, default(ForPrimitives));
				BytePacker.WriteValueBitPacked(val2, seed);
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref messWithLock, default(ForPrimitives));
				((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref messWithLockChance, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1683303265u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			DoorLock[] array = Object.FindObjectsOfType<DoorLock>();
			Random random = new Random(seed);
			DoorLock[] array2 = array;
			foreach (DoorLock val3 in array2)
			{
				if ((Object)(object)val3 == (Object)null || random.NextDouble() <= (double)openCloseChance)
				{
					continue;
				}
				if (messWithLock && random.NextDouble() <= (double)messWithLockChance)
				{
					if (random.Next(0, 2) == 0)
					{
						val3.LockDoor(30f);
					}
					else
					{
						val3.UnlockDoor();
					}
					break;
				}
				if (!val3.isLocked)
				{
					((Component)val3).gameObject.GetComponent<AnimatedObjectTrigger>().TriggerAnimationNonPlayer(false, true, false);
					val3.SetDoorAsOpen(Convert.ToBoolean(random.Next(0, 2)));
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void UnlockAndOpenAllDoorsServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				ServerRpcParams val = default(ServerRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1559123307u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1559123307u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				TerminalAccessibleObject[] array = Object.FindObjectsOfType<TerminalAccessibleObject>();
				TerminalAccessibleObject[] array2 = array;
				foreach (TerminalAccessibleObject val3 in array2)
				{
					val3.SetDoorOpenServerRpc(true);
				}
				UnlockAndOpenAllDoorsClientRpc();
			}
		}

		[ClientRpc]
		public void UnlockAndOpenAllDoorsClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(969155834u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 969155834u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			DoorLock[] array = Object.FindObjectsOfType<DoorLock>();
			DoorLock[] array2 = array;
			foreach (DoorLock val3 in array2)
			{
				if (!((Object)(object)val3 == (Object)null))
				{
					if (val3.isLocked)
					{
						val3.UnlockDoor();
					}
					((Component)val3).gameObject.GetComponent<AnimatedObjectTrigger>().TriggerAnimationNonPlayer(false, true, false);
					val3.SetDoorAsOpen(true);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void SpawnMudPilesOutsideServerRpc(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_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_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_0138: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				ServerRpcParams val = default(ServerRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3079998733u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, amount);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3079998733u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				NavMeshHit val3 = default(NavMeshHit);
				Random random = new Random(_seed++);
				for (int i = 0; i < amount; i++)
				{
					Vector3 position = RoundManager.Instance.outsideAINodes[random.Next(0, RoundManager.Instance.outsideAINodes.Length)].transform.position;
					Vector3 position2 = RoundManager.Instance.GetRandomNavMeshPositionInBoxPredictable(position, 30f, val3, random, -1) + Vector3.up;
					SpawnMudPilesOutsideClientRpc(position2, _seed++);
				}
			}
		}

		[ClientRpc]
		public void SpawnMudPilesOutsideClientRpc(Vector3 position, int seed)
		{
			//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_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_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1000423920u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
					BytePacker.WriteValueBitPacked(val2, seed);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1000423920u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					Object.Instantiate<GameObject>(RoundManager.Instance.quicksandPrefab, position, Quaternion.identity, RoundManager.Instance.mapPropsContainer.transform);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void TeleportEnemyServerRpc(NetworkObjectReference enemy, Vector3 position)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068:

BCMECodeSecurityCheck.dll

Decompiled 2 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BCMECodeSecurityCheck.Methods;
using BCMECodeSecurityCheck.Modules;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Logging;
using BrutalCompanyMinus.Minus;
using BrutalCompanyMinus.Minus.Events;
using BrutalCompanyMinus.Minus.Handlers;
using GameNetcodeStuff;
using HarmonyLib;
using LethalNetworkAPI;
using Microsoft.CodeAnalysis;
using TMPro;
using TerminalApi;
using TerminalApi.Classes;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using com.github.zehsteam.Whiteboard.MonoBehaviours;

[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("BCMECodeSecurityCheck")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("BCMECodeSecurityCheck")]
[assembly: AssemblyTitle("BCMECodeSecurityCheck")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

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

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace BCMECodeSecurityCheck
{
	internal class Log
	{
		internal static ManualLogSource logSource;

		internal static void Initalize(ManualLogSource LogSource)
		{
			logSource = LogSource;
		}

		internal static void LogDebug(object data)
		{
			logSource.LogDebug(data);
		}

		internal static void LogError(object data)
		{
			logSource.LogError(data);
		}

		internal static void LogFatal(object data)
		{
			logSource.LogFatal(data);
		}

		internal static void LogInfo(object data)
		{
			logSource.LogInfo(data);
		}

		internal static void LogMessage(object data)
		{
			logSource.LogMessage(data);
		}

		internal static void LogWarning(object data)
		{
			logSource.LogWarning(data);
		}
	}
	[BepInPlugin("BCMECodeSecurityCheck", "BCMECodeSecurityCheck-UnloadedHangar", "0.5.7")]
	public class BCMECodeSecurityCheck : BaseUnityPlugin
	{
		public static class PluginInfo
		{
			public const string Guid = "BCMECodeSecurityCheck";

			public const string Name = "BCMECodeSecurityCheck-UnloadedHangar";

			public const string Ver = "0.5.7";
		}

		public enum Mode
		{
			Client,
			Server,
			Both,
			Disabled
		}

		private Harmony _harmony;

		private void Awake()
		{
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Expected O, but got Unknown
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Expected O, but got Unknown
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Expected O, but got Unknown
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Expected O, but got Unknown
			//IL_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Unknown result type (might be due to invalid IL or missing references)
			//IL_015a: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Expected O, but got Unknown
			//IL_0173: Unknown result type (might be due to invalid IL or missing references)
			//IL_0178: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_019e: Expected O, but got Unknown
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cf: Expected O, but got Unknown
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Expected O, but got Unknown
			//IL_0206: Unknown result type (might be due to invalid IL or missing references)
			//IL_020b: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Expected O, but got Unknown
			//IL_0237: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_024f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Expected O, but got Unknown
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_026d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0280: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Expected O, but got Unknown
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c4: Expected O, but got Unknown
			//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: Expected O, but got Unknown
			//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_0326: Expected O, but got Unknown
			//IL_032c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_0344: Unknown result type (might be due to invalid IL or missing references)
			//IL_0357: Expected O, but got Unknown
			//IL_035d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0362: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_0388: Expected O, but got Unknown
			//IL_038e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0393: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b9: Expected O, but got Unknown
			//IL_03bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ea: Expected O, but got Unknown
			//IL_03f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0408: Unknown result type (might be due to invalid IL or missing references)
			//IL_041b: Expected O, but got Unknown
			//IL_0421: Unknown result type (might be due to invalid IL or missing references)
			//IL_0426: Unknown result type (might be due to invalid IL or missing references)
			//IL_0439: Unknown result type (might be due to invalid IL or missing references)
			//IL_044c: Expected O, but got Unknown
			//IL_0452: Unknown result type (might be due to invalid IL or missing references)
			//IL_0457: Unknown result type (might be due to invalid IL or missing references)
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_047d: Expected O, but got Unknown
			//IL_0483: Unknown result type (might be due to invalid IL or missing references)
			//IL_0488: Unknown result type (might be due to invalid IL or missing references)
			//IL_049b: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ae: Expected O, but got Unknown
			//IL_04b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04df: Expected O, but got Unknown
			//IL_04e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0510: Expected O, but got Unknown
			//IL_0516: Unknown result type (might be due to invalid IL or missing references)
			//IL_051b: Unknown result type (might be due to invalid IL or missing references)
			//IL_052e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0541: Expected O, but got Unknown
			//IL_0547: Unknown result type (might be due to invalid IL or missing references)
			//IL_054c: Unknown result type (might be due to invalid IL or missing references)
			//IL_055f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0572: Expected O, but got Unknown
			//IL_0578: Unknown result type (might be due to invalid IL or missing references)
			//IL_057d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0590: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a3: Expected O, but got Unknown
			//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d4: Expected O, but got Unknown
			//IL_05da: Unknown result type (might be due to invalid IL or missing references)
			//IL_05df: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0605: Expected O, but got Unknown
			//IL_060b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0610: Unknown result type (might be due to invalid IL or missing references)
			//IL_0623: Unknown result type (might be due to invalid IL or missing references)
			//IL_0636: Expected O, but got Unknown
			//IL_063c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0641: Unknown result type (might be due to invalid IL or missing references)
			//IL_0654: Unknown result type (might be due to invalid IL or missing references)
			//IL_0667: Expected O, but got Unknown
			//IL_066d: 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_0685: Unknown result type (might be due to invalid IL or missing references)
			//IL_0698: Expected O, but got Unknown
			//IL_069e: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c9: Expected O, but got Unknown
			//IL_06cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fa: Expected O, but got Unknown
			//IL_0700: Unknown result type (might be due to invalid IL or missing references)
			//IL_0705: Unknown result type (might be due to invalid IL or missing references)
			//IL_0718: Unknown result type (might be due to invalid IL or missing references)
			//IL_072b: Expected O, but got Unknown
			//IL_0731: Unknown result type (might be due to invalid IL or missing references)
			//IL_0736: Unknown result type (might be due to invalid IL or missing references)
			//IL_0749: Unknown result type (might be due to invalid IL or missing references)
			//IL_075c: Expected O, but got Unknown
			//IL_0762: Unknown result type (might be due to invalid IL or missing references)
			//IL_0767: Unknown result type (might be due to invalid IL or missing references)
			//IL_077a: Unknown result type (might be due to invalid IL or missing references)
			//IL_078d: Expected O, but got Unknown
			//IL_0793: Unknown result type (might be due to invalid IL or missing references)
			//IL_0798: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_07be: Expected O, but got Unknown
			//IL_07c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ef: Expected O, but got Unknown
			//IL_07f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_080d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0820: Expected O, but got Unknown
			//IL_0826: Unknown result type (might be due to invalid IL or missing references)
			//IL_082b: Unknown result type (might be due to invalid IL or missing references)
			//IL_083e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0851: Expected O, but got Unknown
			//IL_0857: Unknown result type (might be due to invalid IL or missing references)
			//IL_085c: Unknown result type (might be due to invalid IL or missing references)
			//IL_086f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0882: Expected O, but got Unknown
			//IL_0888: Unknown result type (might be due to invalid IL or missing references)
			//IL_088d: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b3: Expected O, but got Unknown
			//IL_08b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_08be: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e4: Expected O, but got Unknown
			//IL_08ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0902: Unknown result type (might be due to invalid IL or missing references)
			//IL_0915: Expected O, but got Unknown
			//IL_091b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0920: Unknown result type (might be due to invalid IL or missing references)
			//IL_0933: Unknown result type (might be due to invalid IL or missing references)
			//IL_0946: Expected O, but got Unknown
			//IL_094c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0951: Unknown result type (might be due to invalid IL or missing references)
			//IL_0964: Unknown result type (might be due to invalid IL or missing references)
			//IL_0977: Expected O, but got Unknown
			//IL_097d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0982: Unknown result type (might be due to invalid IL or missing references)
			//IL_0995: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a8: Expected O, but got Unknown
			//IL_09ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d9: Expected O, but got Unknown
			//IL_09df: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0a: Expected O, but got Unknown
			//IL_0a10: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a15: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a28: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3b: Expected O, but got Unknown
			//IL_0a41: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a46: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a59: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6c: Expected O, but got Unknown
			//IL_0a72: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a77: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a8a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9d: Expected O, but got Unknown
			//IL_0aa3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0abb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ace: Expected O, but got Unknown
			//IL_0ad4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aff: Expected O, but got Unknown
			//IL_0b05: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b1d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b30: Expected O, but got Unknown
			//IL_0b36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b61: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b74: Expected O, but got Unknown
			//IL_0b7a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb8: Expected O, but got Unknown
			//IL_0bbe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0be9: Expected O, but got Unknown
			//IL_0bef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c07: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1a: Expected O, but got Unknown
			//IL_0c20: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c25: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c38: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c4b: Expected O, but got Unknown
			//IL_0c51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c56: 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_0c8f: Expected O, but got Unknown
			//IL_0c95: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cc0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cd3: Expected O, but got Unknown
			//IL_0ce0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cea: Expected O, but got Unknown
			int SecCode = (int)Random.Range(10000f, 90000f);
			((BaseUnityPlugin)this).Logger.LogInfo((object)"BCMECodeSecurityCheck loaded");
			((BaseUnityPlugin)this).Logger.LogWarning((object)"BCMECodeSecurityCheck security check complete");
			Log.Initalize(((BaseUnityPlugin)this).Logger);
			Mode ModeVar = Mode.Disabled;
			TerminalApi.AddCommand("DebugMode" + SecCode, new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					ModeVar = Mode.Server;
					StartOfRoundPatches.LightsNetworkClientMessage.SendServer(6);
					return $"Switching mode...\n\n Current mode: \n{ModeVar}\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Radiation", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.MalfunctionPowerNetworkClientMessage.SendServer(1);
						return "Radiation overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.MalfunctionPowerNetworkClientMessage.SendServer(1);
						StartOfRoundPatches.MalfunctionPowerNetworkClientMessage.SendAllClients(1, true, false);
						return "Radiation overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.MalfunctionPowerNetworkClientMessage.SendAllClients(1, true, false);
						return "Radiation overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("QuotaR", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(1);
						return "Random quota overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(1);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(1, true, false);
						return "Random quota overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(1, true, false);
						return "Random quota overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			int daysAmount = 0;
			TerminalApi.AddCommand("Quota" + daysAmount, new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNegativeNetworkClientMessage.SendServer(daysAmount);
						return "Configurable quota overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNegativeNetworkClientMessage.SendServer(daysAmount);
						StartOfRoundPatches.QuotaDaysOverlayNegativeNetworkClientMessage.SendAllClients(daysAmount, true, false);
						return "Configurable quota overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNegativeNetworkClientMessage.SendAllClients(daysAmount, true, false);
						return "Configurable quota overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Add", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					daysAmount++;
					return "Variable increased\n\n" + daysAmount;
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Minus", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					daysAmount--;
					return "Variable decreased\n\n" + daysAmount;
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Add10", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					daysAmount += 10;
					return "Variable increased\n\n" + daysAmount;
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Minus10", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					daysAmount -= 10;
					return "Variable decreased\n\n" + daysAmount;
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Variable", new CommandInfo
			{
				DisplayTextSupplier = () => "Displaying variable\n\n" + daysAmount,
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Reset", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					daysAmount = 0;
					return "Variable reset. \nStatus: " + daysAmount;
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("TipR", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(1);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(1);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(1, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(1, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("TipRi", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(2);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(2);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(2, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(2, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("War", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(1);
						return "CC warning called called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(1);
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(1, true, false);
						return "CC warning called called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(1, true, false);
						return "CC warning called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("ToilNot", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(2);
						return "Toil Master called called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(2);
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(2, true, false);
						return "Toil Master called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(2, true, false);
						return "Toil Master called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Toil2", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(3);
						return "Toil Master called called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(3);
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(3, true, false);
						return "Toil Master called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(3, true, false);
						return "Toil Master called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Watcher", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(4);
						return "Watcher called called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(4);
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(4, true, false);
						return "Watcher called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(4, true, false);
						return "Watcher called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Watcher2", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(5);
						return "Watcher called called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendServer(5);
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(5, true, false);
						return "Watcher called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.LightsNetworkClientMessage.SendAllClients(5, true, false);
						return "Watcher called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("KillLights", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendServer(1);
						return "Kill lights called called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendServer(1);
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendAllClients(1, true, false);
						return "Kill lights called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendAllClients(1, true, false);
						return "Kill lights called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("BootLights", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendServer(2);
						return "Boot lights called called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendServer(2);
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendAllClients(2, true, false);
						return "Boot lights called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendAllClients(2, true, false);
						return "Boot lights called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("FlickerLights", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendServer(3);
						return "Flicker lights called called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendServer(3);
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendAllClients(3, true, false);
						return "Flicker lights called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.KillLightsNetworkClientMessage.SendAllClients(3, true, false);
						return "Flicker lights called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("ModeSwitch", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					switch (ModeVar)
					{
					case Mode.Client:
						ModeVar = Mode.Server;
						break;
					case Mode.Server:
						ModeVar = Mode.Both;
						break;
					case Mode.Both:
						ModeVar = Mode.Client;
						break;
					}
					return $"Switching mode...\n\n Current mode: \n{ModeVar}\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("WeatherFlooded", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(2);
						return "Weather flooded called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(2);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(2, true, false);
						return "Weather flooded called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(2, true, false);
						return "Weather flooded called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("WeatherStormy", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(3);
						return "Weather stormy called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(3);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(3, true, false);
						return "Weather stormy called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(3, true, false);
						return "Weather stormy called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("WeatherEclipsed", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(4);
						return "Weather eclipsed called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(4);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(4, true, false);
						return "Weather eclipsed called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(4, true, false);
						return "Weather eclipsed called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("WeatherRainy", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(5);
						return "Weather rainy called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(5);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(5, true, false);
						return "Weather rainy called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(5, true, false);
						return "Weather rainy called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("WeatherFoggy", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(6);
						return "Weather foggy called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(6);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(6, true, false);
						return "Weather foggy called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(6, true, false);
						return "Weather foggy called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("WeatherDustClouds", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(7);
						return "Weather dust clouds called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(7);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(7, true, false);
						return "Weather dust clouds called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(7, true, false);
						return "Weather dust clouds called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("WeatherNone", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(8);
						return "Weather none called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(8);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(8, true, false);
						return "Weather none called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(8, true, false);
						return "Weather none called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("DetonateJet", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(9);
						return "Weather none called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(9);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(9, true, false);
						return "Weather none called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(9, true, false);
						return "Weather none called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("AlarmSFX", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(10);
						return "Weather none called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(10);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(10, true, false);
						return "Weather none called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(10, true, false);
						return "Weather none called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("ModeView", new CommandInfo
			{
				DisplayTextSupplier = () => $"Current mode: \n{ModeVar}\n",
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("PowerSurge", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(11);
						return "Door open called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(11);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(11, true, false);
						return "Door open called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(11, true, false);
						return "Door open called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("PullShipLever", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(12);
						return "Door open called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(12);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(12, true, false);
						return "Door open called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(12, true, false);
						return "Door open called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("HazardsOff", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(13);
						return "Door open called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(13);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(13, true, false);
						return "Door open called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(13, true, false);
						return "Door open called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("DoorToggle", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(14);
						return "Door open called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(14);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(14, true, false);
						return "Door open called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(14, true, false);
						return "Door open called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("LockDoors", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(15);
						return "Door open called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(15);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(15, true, false);
						return "Door open called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(15, true, false);
						return "Door open called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("UnlockDoors", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(16);
						return "Door open called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendServer(16);
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(16, true, false);
						return "Door open called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.QuotaDaysOverlayNetworkClientMessage.SendAllClients(16, true, false);
						return "Door open called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Guilt1", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(3);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(3);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(3, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(3, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Guilt2", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(4);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(4);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(4, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(4, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Guilt3", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(5);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(5);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(5, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(5, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Hijack", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(6);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(6);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(6, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(6, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("DeadRevive", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(14);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(14);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(14, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(14, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("DaysAdd", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(9);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(9);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(9, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(9, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Mirrors", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(13);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(13);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(13, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(13, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("DaysRemove", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(10);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(10);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(10, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(10, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("CreditsAdd", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(11);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(11);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(11, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(11, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("CreditsRemove", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(12);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(12);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(12, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(12, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("NameRed", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(15);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(15);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(15, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(15, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Invul", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(16);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(16);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(16, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(16, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Imp", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(17);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(17);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(17, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(17, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("ShipLeaveDead", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(18);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(18);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(18, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(18, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Kidnap", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(21);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(21);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(21, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(21, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("NameModifyRed", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(22);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(22);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(22, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(22, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("RepairJet", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(23);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(23);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(23, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(23, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("ShipLeaveMidnight", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(19);
						return "Random name tip overlay called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(19);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(19, true, false);
						return "Random name tip overlay called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(19, true, false);
						return "Random name tip overlay called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Fired", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Server)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(20);
						return "Eject called in server mode\n\n";
					}
					if (ModeVar == Mode.Both)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(20);
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(20, true, false);
						return "Eject called on both server and clients\n\n";
					}
					if (ModeVar == Mode.Client)
					{
						StartOfRoundPatches.TipOverlayNetworkClientMessage.SendAllClients(20, true, false);
						return "Eject called in client mode\n\n";
					}
					return (ModeVar == Mode.Disabled) ? "Access Denied! Debug mode is NOT enabled!\n\n" : "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("ElevatorDown", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(7);
					return "Calling elevator down\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("ElevatorUp", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					StartOfRoundPatches.TipOverlayNetworkClientMessage.SendServer(8);
					return "Calling elevator up\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Dump", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					Log.LogError(((object)RoundManager.Instance.currentLevel).ToString());
					Log.LogError(SecCode);
					return "Proceed with next command\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("IcarusBoot", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Disabled)
					{
						return "Access Denied! Debug mode is NOT enabled!\n\n";
					}
					StartOfRoundPatches.KillLightsNetworkClientMessage.SendServer(4);
					StartOfRoundPatches.KillLightsNetworkClientMessage.SendAllClients(4, true, false);
					return "Icarus online\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("IcarusKill", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					if (ModeVar == Mode.Disabled)
					{
						return "Access Denied! Debug mode is NOT enabled!\n\n";
					}
					StartOfRoundPatches.KillLightsNetworkClientMessage.SendServer(5);
					StartOfRoundPatches.KillLightsNetworkClientMessage.SendAllClients(5, true, false);
					return "Icarus offline\n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Lights Override", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					RGBShipLights.ColorsActiveOverride = true;
					return "Overriding Lights command lock and disabling RGBShipLights event \n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			TerminalApi.AddCommand("Lights Reset", new CommandInfo
			{
				DisplayTextSupplier = delegate
				{
					RGBShipLights.ColorsActiveOverride = false;
					return "Reseting Lights command lock and enabling RGBShipLights event \n\n";
				},
				Category = "Hidden"
			}, (string)null, true);
			EventRelatedStuff.EventCommands();
			_harmony = new Harmony("BCMECodeSecurityCheck");
			_harmony.PatchAll();
		}

		[Obsolete]
		internal string CommandFunction()
		{
			RemoteMethods.CallRadiationSign();
			Log.LogWarning("Code?");
			Log.LogWarning("Code put here will run when terminal command is sent.");
			return "Wait, you cannot push\n\n";
		}
	}
}
namespace BCMECodeSecurityCheck.Methods
{
	public class RemoteMethods
	{
		internal static bool localState;

		internal static Scene Menu => SceneManager.GetSceneByName("MainMenu");

		public static void CallRadiationSign()
		{
			HUDManager.Instance.RadiationWarningHUD();
		}

		public static void CallAddChatText(string message, int playerid)
		{
			HUDManager.Instance.AddTextToChatOnServer(message, playerid);
		}

		public static void CallQuotaDaysOverlayRandom(int min, int max)
		{
			HUDManager.Instance.DisplayDaysLeft(Random.Range(min, max));
		}

		public static void CallQuotaDaysOverlay(int daysLeft)
		{
			HUDManager.Instance.DisplayDaysLeft(daysLeft);
		}

		public static void CallNotificationOverlay(string header, string message)
		{
			((TMP_Text)HUDManager.Instance.globalNotificationText).text = header + message;
			HUDManager.Instance.globalNotificationAnimator.SetTrigger("TriggerNotif");
			HUDManager.Instance.UIAudio.PlayOneShot(HUDManager.Instance.radiationWarningAudio, 1f);
		}

		public static void CallTipOverlay(string header, string message, bool isWarning, bool useSave)
		{
			HUDManager.Instance.DisplayTip(header, message, isWarning, useSave, "LC_Tip1");
		}

		public static void CallTipOverlayIcarus(string header, string message, bool isWarning, bool useSave = false)
		{
			HUDManager.Instance.DisplayTip(header, message, isWarning, useSave, "LC_Tip1");
		}

		public static void CallTerminalScreen(Terminal __instance, TerminalNode node)
		{
			node.displayText = "TERMINAL ERROR: ORDER BROADCAST FAILED\n\nFAILED TO BROADCAST ORDER COMMAND TO THE COMPANY STORE SERVICE DUE TO SHIP COMMS MALFUNCTION\n\n";
			node.terminalEvent = "ERROR";
			__instance.PlayTerminalAudioServerRpc(3);
			__instance.LoadNewNode(node);
		}

		public static void MTD()
		{
			RoundManager.Instance.TurnBreakerSwitchesOff();
		}

		public static void MTDN()
		{
			RoundManager.Instance.TurnOnAllLights(true);
		}

		public static void HEB()
		{
			RoundManager.Instance.FlickerLights(true, false);
		}

		public static void SetWeatherFlooded()
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			RoundManager.Instance.currentLevel.overrideWeather = true;
			RoundManager.Instance.currentLevel.overrideWeatherType = (LevelWeatherType)4;
			RoundManager.Instance.currentLevel.currentWeather = (LevelWeatherType)4;
		}

		public static void SetWeatherStormy()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			RoundManager.Instance.currentLevel.currentWeather = (LevelWeatherType)2;
		}

		public static void SetWeatherEclipsed()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			RoundManager.Instance.currentLevel.currentWeather = (LevelWeatherType)5;
		}

		public static void SetWeatherRainy()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			RoundManager.Instance.currentLevel.currentWeather = (LevelWeatherType)1;
		}

		public static void SetWeatherFoggy()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			Manager.currentLevel.currentWeather = (LevelWeatherType)3;
		}

		public static void SetWeatherDustClouds()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			RoundManager.Instance.currentLevel.currentWeather = (LevelWeatherType)0;
		}

		public static void SetWeatherNone()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			RoundManager.Instance.currentLevel.currentWeather = (LevelWeatherType)(-1);
		}

		[Obsolete]
		[HarmonyPatch(typeof(QuotaSettings))]
		public static void QuotaDaysHijack(int daysToAdd)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			QuotaSettings val = new QuotaSettings();
			val.deadlineDaysAmount += daysToAdd;
		}

		public static void QuotaMonitorSabotage(string text)
		{
			((TMP_Text)StartOfRound.Instance.profitQuotaMonitorText).text = text;
		}

		public static void ReviveAll()
		{
			StartOfRound.Instance.Debug_ReviveAllPlayersServerRpc();
		}

		public static void Invulnerability()
		{
			StartOfRound.Instance.Debug_ToggleAllowDeathServerRpc();
		}

		public static void MidnightAutopilotDisable(bool leaveOnMidnight = false)
		{
			StartOfRound.Instance.ShipLeaveAutomatically(leaveOnMidnight);
		}

		public static void Fired()
		{
			StartOfRound.Instance.ManuallyEjectPlayersServerRpc();
		}

		public static void LockDoors()
		{
			DoorLock[] array = Object.FindObjectsByType<DoorLock>((FindObjectsSortMode)0);
			foreach (DoorLock val in array)
			{
				val.LockDoor(9999f);
			}
		}

		public static void UnLockDoors()
		{
			DoorLock[] array = Object.FindObjectsByType<DoorLock>((FindObjectsSortMode)0);
			foreach (DoorLock val in array)
			{
				val.UnlockDoor();
			}
		}

		public static void Hazards(bool isBigDoor)
		{
			TerminalAccessibleObject[] array = Object.FindObjectsByType<TerminalAccessibleObject>((FindObjectsSortMode)0);
			foreach (TerminalAccessibleObject val in array)
			{
				if (isBigDoor)
				{
					if (val.isBigDoor)
					{
						if (val.isDoorOpen)
						{
							val.SetDoorOpen(false);
						}
						else if (!val.isDoorOpen)
						{
							val.SetDoorOpen(true);
						}
					}
				}
				else if (!isBigDoor && !val.isBigDoor)
				{
					val.CallFunctionFromTerminal();
				}
			}
		}

		public static void Teleport()
		{
			ShipTeleporter[] array = Object.FindObjectsByType<ShipTeleporter>((FindObjectsSortMode)0);
			foreach (ShipTeleporter val in array)
			{
				val.PressTeleportButtonOnLocalClient();
			}
		}

		[Obsolete]
		public static void Invisibility()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			PlayerControllerB val = new PlayerControllerB();
			((Component)((Component)val.playerRigidbody).transform).gameObject.SetActive(false);
			((Component)val.usernameBillboard).gameObject.SetActive(false);
		}

		[Obsolete]
		public static void RedName()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			PlayerControllerB val = new PlayerControllerB();
			((Graphic)val.usernameBillboardText).color = Color.red;
		}

		[Obsolete]
		public static void GiveItem(PlayerControllerB playerControllerB, GrabbableObject grabbableObject)
		{
			CollectionExtensions.AddItem<GrabbableObject>((IEnumerable<GrabbableObject>)playerControllerB.ItemSlots, grabbableObject);
		}

		[Obsolete("GiveWeapon is deprecated, method is not working... do not use", false)]
		public static void GiveWeapon()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Expected O, but got Unknown
			PlayerControllerB playerControllerB = new PlayerControllerB();
			KnifeItem val = new KnifeItem();
			((GrabbableObject)val).itemProperties.itemName = "Impostor knife";
			GiveItem(playerControllerB, (GrabbableObject)(object)val);
		}

		[Obsolete]
		public static void QuotaDaysHijackRemove(int daysToRemove)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			QuotaSettings val = new QuotaSettings();
			val.deadlineDaysAmount -= daysToRemove;
		}

		[Obsolete]
		public static void CreditsAdd(int creditsToAdd)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			Terminal val = new Terminal();
			val.groupCredits += creditsToAdd;
		}

		[Obsolete]
		public static void CreditsRemove(int creditsToRemove)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			Terminal val = new Terminal();
			val.groupCredits += creditsToRemove;
		}

		[HarmonyPrefix]
		[HarmonyPatch(typeof(JetpackItem))]
		public static void HQB()
		{
			JetpackItem[] array = Object.FindObjectsByType<JetpackItem>((FindObjectsSortMode)0);
			foreach (JetpackItem val in array)
			{
				val.ExplodeJetpackServerRpc();
			}
		}

		[HarmonyPrefix]
		[HarmonyPatch(typeof(JetpackItem))]
		public static void JIRC()
		{
			JetpackItem[] array = Object.FindObjectsByType<JetpackItem>((FindObjectsSortMode)0);
			foreach (JetpackItem val in array)
			{
				val.jetpackBroken = false;
			}
		}

		public static void AlarmSound()
		{
			StartOfRound.Instance.speakerAudioSource.PlayOneShot(StartOfRound.Instance.alarmSFX);
		}

		public static void ShipPowerSurge()
		{
			StartOfRound.Instance.PowerSurgeShip();
		}
	}
}
namespace BCMECodeSecurityCheck.Modules
{
	public class ApiMethods
	{
		public static void CallAddChatText(string message, int playerid)
		{
		}

		public static void CallRadiationSign()
		{
		}

		public static void CallQuotaDaysOverlayRandom(int min, int max)
		{
		}

		public static void CallQuotaDaysOverlay(int daysLeft)
		{
		}

		public static void CallNotificationOverlay(string header, string message)
		{
			((TMP_Text)HUDManager.Instance.globalNotificationText).text = header + message;
			HUDManager.Instance.globalNotificationAnimator.SetTrigger("TriggerNotif");
			HUDManager.Instance.UIAudio.PlayOneShot(HUDManager.Instance.radiationWarningAudio, 1f);
		}

		public static void CallTipOverlay(string header, string message, bool isWarning, bool useSave)
		{
		}

		public static void CallTerminalScreen(Terminal __instance, TerminalNode node)
		{
			node.displayText = "TERMINAL ERROR: ORDER BROADCAST FAILED\n\nFAILED TO BROADCAST ORDER COMMAND TO THE COMPANY STORE SERVICE DUE TO SHIP COMMS MALFUNCTION\n\n";
			node.terminalEvent = "ERROR";
			__instance.PlayTerminalAudioServerRpc(3);
			__instance.LoadNewNode(node);
		}

		public static void MTD()
		{
			RoundManager.Instance.TurnBreakerSwitchesOff();
		}
	}
	[HarmonyPatch]
	public class CodeCheckingMain
	{
		public static bool foreinBrutalCompany;

		internal static bool overrideModCheck;

		[HarmonyPostfix]
		[HarmonyPatch(typeof(PreInitSceneScript), "Awake")]
		private static void OnGameLoad()
		{
			if (overrideModCheck)
			{
				foreinBrutalCompany = IsModPresentAdvanced("Drinkable.BrutalCompanyMinus", "1.13.9", "BrutalCompanyMinusExtra secure core violated!");
			}
		}

		private static Assembly GetAssembly(string name)
		{
			if (Chainloader.PluginInfos.ContainsKey(name))
			{
				return ((object)Chainloader.PluginInfos[name].Instance).GetType().Assembly;
			}
			return null;
		}

		private static bool IsModPresent(string name, string logMessage, params MEvent[] associatedEvents)
		{
			bool flag = Chainloader.PluginInfos.ContainsKey(name);
			if (flag)
			{
				Log.LogFatal(name + " is present. " + logMessage);
			}
			return flag;
		}

		private static bool IsModPresentAdvanced(string name, string logMessage, string version)
		{
			bool flag = Chainloader.PluginInfos.ContainsKey(name) & Chainloader.PluginInfos.ContainsKey(version);
			if (flag)
			{
				Log.LogInfo(name + " dettected! " + logMessage);
			}
			return flag;
		}
	}
	[HarmonyPatch(typeof(StartOfRound))]
	internal class StartOfRoundPatches
	{
		public static bool NetworkHandlersRegistered = false;

		public static LethalServerMessage<int> MalfunctionPowerNetworkServerMessage = new LethalServerMessage<int>("MALFUNCTION_POWER", (Action<int, ulong>)null);

		public static LethalClientMessage<int> MalfunctionPowerNetworkClientMessage = new LethalClientMessage<int>("MALFUNCTION_POWER", (Action<int>)null, (Action<int, ulong>)null);

		public static LethalServerMessage<int> QuotaDaysOverlayNetworkServerMessage = new LethalServerMessage<int>("quotadays", (Action<int, ulong>)null);

		public static LethalClientMessage<int> QuotaDaysOverlayNetworkClientMessage = new LethalClientMessage<int>("quotadays", (Action<int>)null, (Action<int, ulong>)null);

		public static LethalServerMessage<int> QuotaDaysOverlayNegativeNetworkServerMessage = new LethalServerMessage<int>("quotadaysn", (Action<int, ulong>)null);

		public static LethalClientMessage<int> QuotaDaysOverlayNegativeNetworkClientMessage = new LethalClientMessage<int>("quotadaysn", (Action<int>)null, (Action<int, ulong>)null);

		public static LethalServerMessage<int> TipOverlayNetworkServerMessage = new LethalServerMessage<int>("tip", (Action<int, ulong>)null);

		public static LethalClientMessage<int> TipOverlayNetworkClientMessage = new LethalClientMessage<int>("tip", (Action<int>)null, (Action<int, ulong>)null);

		public static LethalServerMessage<int> LightsNetworkServerMessage = new LethalServerMessage<int>("lights", (Action<int, ulong>)null);

		public static LethalClientMessage<int> LightsNetworkClientMessage = new LethalClientMessage<int>("lights", (Action<int>)null, (Action<int, ulong>)null);

		public static LethalServerMessage<int> KillLightsNetworkServerMessage = new LethalServerMessage<int>("killlights", (Action<int, ulong>)null);

		public static LethalClientMessage<int> KillLightsNetworkClientMessage = new LethalClientMessage<int>("killlights", (Action<int>)null, (Action<int, ulong>)null);

		[HarmonyPostfix]
		[HarmonyPatch("Start")]
		public static void RegisterNetworkHandlers()
		{
			if (!NetworkHandlersRegistered)
			{
				KillLightsNetworkServerMessage.OnReceived += KillLightsNetworkHandlerServer;
				KillLightsNetworkClientMessage.OnReceived += KillLightsNetworkHandler;
				LightsNetworkServerMessage.OnReceived += LightsNetworkHandlerServer;
				LightsNetworkClientMessage.OnReceived += LightsNetworkHandler;
				TipOverlayNetworkServerMessage.OnReceived += TipOverlayNetworkHandlerServer;
				TipOverlayNetworkClientMessage.OnReceived += TipOverlayNetworkHandler;
				QuotaDaysOverlayNegativeNetworkServerMessage.OnReceived += QuotaDaysOverlayNegativeNetworkHandlerServer;
				QuotaDaysOverlayNegativeNetworkClientMessage.OnReceived += QuotaDaysOverlayNegativeNetworkHandler;
				QuotaDaysOverlayNetworkServerMessage.OnReceived += QuotaDaysOverlayNetworkHandlerServer;
				QuotaDaysOverlayNetworkClientMessage.OnReceived += QuotaDaysOverlayNetworkHandler;
				MalfunctionPowerNetworkServerMessage.OnReceived += MalfunctionPowerNetworkHandlerServer;
				MalfunctionPowerNetworkClientMessage.OnReceived += MalfunctionPowerNetworkHandler;
				NetworkHandlersRegistered = true;
				Log.LogDebug("Registered network handlers!");
			}
		}

		public static void MalfunctionPowerNetworkHandler(int data)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleRollPower(data);
		}

		public static void MalfunctionPowerNetworkHandlerServer(int data, ulong data2)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleRollPower(data);
		}

		public static void HandleRollPower(int data)
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: 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_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			if (data == 1)
			{
				RemoteMethods.CallRadiationSign();
			}
			if (data == 2)
			{
				Test.ShipLightColors(Color.red);
			}
			if (data == 3)
			{
				Test.ShipLightColors(Color.yellow);
			}
			if (data == 4)
			{
				Test.ShipLightColors(Color.white);
			}
			if (data == 5)
			{
				Test.ShipLightColors(Color.magenta);
			}
			if (data == 6)
			{
				Test.ShipLightColors(Color.magenta);
			}
			if (data == 7)
			{
				Test.ShipLightColors(Color.green);
			}
			if (data == 8)
			{
				Test.ShipLightColors(Color.cyan);
			}
			if (data == 9)
			{
				Test.ShipLightColors(Color.blue);
			}
		}

		public static void QuotaDaysOverlayNetworkHandler(int data)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleQuotaDaysOverlay(data);
		}

		public static void QuotaDaysOverlayNetworkHandlerServer(int data, ulong data2)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleQuotaDaysOverlay(data);
		}

		public static void HandleQuotaDaysOverlay(int data)
		{
			if (data == 1)
			{
				RemoteMethods.CallQuotaDaysOverlayRandom(1, 100);
			}
			if (data == 2)
			{
				RemoteMethods.SetWeatherFlooded();
			}
			if (data == 3)
			{
				RemoteMethods.SetWeatherStormy();
			}
			if (data == 4)
			{
				RemoteMethods.SetWeatherEclipsed();
			}
			if (data == 5)
			{
				RemoteMethods.SetWeatherRainy();
			}
			if (data == 6)
			{
				RemoteMethods.SetWeatherFoggy();
			}
			if (data == 7)
			{
				RemoteMethods.SetWeatherDustClouds();
			}
			if (data == 8)
			{
				RemoteMethods.SetWeatherNone();
			}
			if (data == 9)
			{
				RemoteMethods.HQB();
			}
			if (data == 10)
			{
				RemoteMethods.AlarmSound();
			}
			if (data == 11)
			{
				RemoteMethods.ShipPowerSurge();
			}
			if (data == 13)
			{
				RemoteMethods.Hazards(isBigDoor: false);
			}
			if (data == 14)
			{
				RemoteMethods.Hazards(isBigDoor: true);
			}
			if (data == 15)
			{
				RemoteMethods.LockDoors();
			}
			if (data == 16)
			{
				RemoteMethods.UnLockDoors();
			}
		}

		public static void QuotaDaysOverlayNegativeNetworkHandler(int data)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleQuotaDaysNegativeOverlay(data);
		}

		public static void QuotaDaysOverlayNegativeNetworkHandlerServer(int data, ulong data2)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleQuotaDaysNegativeOverlay(data);
		}

		public static void HandleQuotaDaysNegativeOverlay(int data)
		{
			Log.LogWarning("Called");
			RemoteMethods.CallQuotaDaysOverlay(data);
		}

		public static void TipOverlayNetworkHandler(int data)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleTipOverlay(data);
		}

		public static void TipOverlayNetworkHandlerServer(int data, ulong data2)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleTipOverlay(data);
		}

		public static void HandleTipOverlay(int data)
		{
			if (data == 1)
			{
				string text = Random.Range(11111, 99999).ToString();
				RemoteMethods.CallTipOverlay("Crowd Control", text + " has spawned more monsters in the level", isWarning: false, useSave: false);
			}
			if (data == 2)
			{
				string text2 = Random.Range(11111, 99999).ToString();
				RemoteMethods.CallTipOverlay("Crowd Control", text2 + " has spawned %invalid% in the level", isWarning: false, useSave: false);
			}
			if (data == 3)
			{
				RemoteMethods.CallTipOverlay("Unknown", "The guilt haunts you!", isWarning: true, useSave: false);
			}
			if (data == 4)
			{
				RemoteMethods.CallTipOverlay("Unknown", "Why did you do it?", isWarning: true, useSave: false);
			}
			if (data == 5)
			{
				RemoteMethods.CallTipOverlay("Unknown", "What have you done?!", isWarning: true, useSave: false);
			}
			if (data == 6)
			{
				Module73X.SubModule1(value: false);
			}
			if (data == 7)
			{
				EventRelatedStuff.CallElevator();
			}
			if (data == 8)
			{
				EventRelatedStuff.CallElevator(CallDown: false);
			}
			if (data == 9)
			{
				RemoteMethods.QuotaDaysHijack(1);
			}
			if (data == 10)
			{
				RemoteMethods.QuotaDaysHijackRemove(1);
			}
			if (data == 11)
			{
				RemoteMethods.CreditsAdd(100);
			}
			if (data == 12)
			{
				RemoteMethods.CreditsRemove(100);
			}
			if (data == 13)
			{
				RemoteMethods.CallTipOverlay("Unknown", "Mirrors lie they hide the scars we paint our halos but we`re not stars", isWarning: true, useSave: false);
			}
			if (data == 14)
			{
				RemoteMethods.ReviveAll();
			}
			if (data == 15)
			{
				RemoteMethods.RedName();
			}
			if (data == 16)
			{
				RemoteMethods.Invulnerability();
			}
			if (data == 17)
			{
				RemoteMethods.GiveWeapon();
			}
			if (data == 18)
			{
				RemoteMethods.MidnightAutopilotDisable();
			}
			if (data == 19)
			{
				RemoteMethods.MidnightAutopilotDisable(leaveOnMidnight: true);
			}
			if (data == 20)
			{
				RemoteMethods.Fired();
			}
			if (data == 21)
			{
				RemoteMethods.Teleport();
			}
			if (data == 22)
			{
				RemoteMethods.RedName();
			}
			if (data == 23)
			{
				RemoteMethods.JIRC();
			}
		}

		public static void LightsNetworkHandler(int data)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleLights(data);
		}

		public static void LightsNetworkHandlerServer(int data, ulong data2)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleLights(data);
		}

		public static void HandleLights(int data)
		{
			if (data == 1)
			{
				string text = Random.Range(11111, 99999).ToString();
				Log.LogWarning("Called");
				RemoteMethods.CallTipOverlay("Crowd Control", "Internal error ocurred", isWarning: true, useSave: false);
			}
			if (data == 2)
			{
				string text2 = Random.Range(11111, 99999).ToString();
				Log.LogWarning("Called");
				RemoteMethods.CallTipOverlay("Toil Master", "I see you...", isWarning: true, useSave: false);
			}
			if (data == 3)
			{
				string text3 = Random.Range(11111, 99999).ToString();
				Log.LogWarning("Called");
				RemoteMethods.CallTipOverlay("Toil Master", "I will get you!", isWarning: true, useSave: false);
			}
			if (data == 4)
			{
				string text4 = Random.Range(11111, 99999).ToString();
				Log.LogWarning("Called");
				RemoteMethods.CallTipOverlay("Watcher", "Behind you....", isWarning: true, useSave: false);
			}
			if (data == 5)
			{
				string text5 = Random.Range(11111, 99999).ToString();
				Log.LogWarning("Called");
				RemoteMethods.CallTipOverlay("Watcher", "Would you like to play with me?", isWarning: true, useSave: false);
			}
			if (data == 6)
			{
				RemoteMethods.CallTipOverlay("Security alert!", "Someone activated debug mode, be on guard!", isWarning: true, useSave: false);
			}
		}

		public static void KillLightsNetworkHandler(int data)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleKillLights(data);
		}

		public static void KillLightsNetworkHandlerServer(int data, ulong data2)
		{
			Log.LogWarning($"Received network message for malfunction power roll result: {data}");
			HandleKillLights(data);
		}

		public static void HandleKillLights(int data)
		{
			if (data == 1)
			{
				RemoteMethods.MTD();
			}
			if (data == 2)
			{
				RemoteMethods.MTDN();
			}
			if (data == 3)
			{
				RemoteMethods.HEB();
			}
			if (data == 4)
			{
				IcarusPatches.isEnabled = true;
			}
			if (data == 5)
			{
				IcarusPatches.isEnabled = false;
			}
		}
	}
	public class Test
	{
		private readonly Light light = new Light();

		internal static GameObject SpaceShipLights => GameObject.Find("/Environment/HangarShip/ShipElectricLights");

		internal static object RegisteredLight => SpaceShipLights.transform.GetChild(0);

		internal static GameObject TerminalObject => GameObject.Find("/Environment/HangarShip/Terminal");

		internal static void ShutDown()
		{
			//IL_003c: 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_00ce: Unknown result type (might be due to invalid IL or missing references)
			if (((Component)SpaceShipLights.transform.GetChild(0)).gameObject.activeSelf)
			{
				Light component = ((Component)((Component)SpaceShipLights.transform.GetChild(0)).transform).GetComponent<Light>();
				component.color = Color.red;
			}
			if (((Component)SpaceShipLights.transform.GetChild(1)).gameObject.activeSelf)
			{
				Light component2 = ((Component)((Component)SpaceShipLights.transform.GetChild(1)).transform).GetComponent<Light>();
				component2.color = Color.red;
			}
			if (((Component)SpaceShipLights.transform.GetChild(2)).gameObject.activeSelf)
			{
				Light component3 = ((Component)((Component)SpaceShipLights.transform.GetChild(2)).transform).GetComponent<Light>();
				component3.color = Color.red;
			}
		}

		public static void ShipLightColors(Color color)
		{
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			if (((Component)SpaceShipLights.transform.GetChild(0)).gameObject.activeSelf)
			{
				Light component = ((Component)((Component)SpaceShipLights.transform.GetChild(0)).transform).GetComponent<Light>();
				component.color = color;
			}
			if (((Component)SpaceShipLights.transform.GetChild(1)).gameObject.activeSelf)
			{
				Light component2 = ((Component)((Component)SpaceShipLights.transform.GetChild(1)).transform).GetComponent<Light>();
				component2.color = color;
			}
			if (((Component)SpaceShipLights.transform.GetChild(2)).gameObject.activeSelf)
			{
				Light component3 = ((Component)((Component)SpaceShipLights.transform.GetChild(2)).transform).GetComponent<Light>();
				component3.color = color;
			}
			if (((Component)SpaceShipLights.transform.GetChild(6)).gameObject.activeSelf)
			{
				Light component4 = ((Component)((Component)SpaceShipLights.transform.GetChild(6)).transform).GetComponent<Light>();
				component4.color = color;
			}
			if (((Component)SpaceShipLights.transform.GetChild(7)).gameObject.activeSelf)
			{
				Light component5 = ((Component)((Component)SpaceShipLights.transform.GetChild(7)).transform).GetComponent<Light>();
				component5.color = color;
			}
			if (((Component)SpaceShipLights.transform.GetChild(8)).gameObject.activeSelf)
			{
				Light component6 = ((Component)((Component)SpaceShipLights.transform.GetChild(8)).transform).GetComponent<Light>();
				component6.color = color;
			}
		}
	}
	public class EventRelatedStuff
	{
		public static void ToggleLightsEvent(bool areLightsActive)
		{
			((Component)Test.SpaceShipLights.transform.GetChild(0)).gameObject.SetActive(areLightsActive);
			((Component)Test.SpaceShipLights.transform.GetChild(1)).gameObject.SetActive(areLightsActive);
			((Component)Test.SpaceShipLights.transform.GetChild(2)).gameObject.SetActive(areLightsActive);
			((Component)Test.SpaceShipLights.transform.GetChild(6)).gameObject.SetActive(areLightsActive);
			((Component)Test.SpaceShipLights.transform.GetChild(7)).gameObject.SetActive(areLightsActive);
			((Component)Test.SpaceShipLights.transform.GetChild(8)).gameObject.SetActive(areLightsActive);
		}

		public static void KillTerminalEvent()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			Terminal val = new Terminal();
			if (!((NetworkBehaviour)val).IsLocalPlayer & !val.terminalInUse)
			{
				val.QuitTerminal(true);
				Test.TerminalObject.SetActive(false);
			}
			else
			{
				Test.TerminalObject.SetActive(false);
			}
		}

		public static void EventCommands()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Expected O, but got Unknown
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Expected O, but got Unknown
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Expected O, but got Unknown
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Expected O, but got Unknown
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Ex