Decompiled source of BlackLabel Core v1.2.0

BlackLabelCore.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
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 BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BlackLabelCore;
using BlackLabelCore.Levels;
using DunGen;
using DunGen.Graph;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using TMPro;
using Unity.AI.Navigation;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("BlackLabelCore")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("Core plugin for the Black Label modpack.")]
[assembly: AssemblyFileVersion("1.2.0.0")]
[assembly: AssemblyInformationalVersion("1.2.0+74c8af672a0ec3067a4a4829ed295f7eff567ace")]
[assembly: AssemblyProduct("BlackLabelCore")]
[assembly: AssemblyTitle("BlackLabelCore")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.2.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
[HarmonyPatch(typeof(CaveDwellerAI))]
internal class CaveDwellerPatch
{
	[HarmonyPatch("HitEnemy")]
	[HarmonyTranspiler]
	private static IEnumerable<CodeInstruction> ManeaterDamagePatch(IEnumerable<CodeInstruction> instructions)
	{
		//IL_0015: 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_0035: Expected O, but got Unknown
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: Expected O, but got Unknown
		if (Compatibility.ManeaterDamagePatch)
		{
			Plugin.LogWarning("Maneater Damage Patch detected loading, preventing BLC patch!");
			return instructions;
		}
		return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
		{
			new CodeMatch((OpCode?)OpCodes.Ldc_I4_1, (object)null, (string)null)
		}).SetInstruction(new CodeInstruction(OpCodes.Ldarg_1, (object)null)).InstructionEnumeration();
	}
}
namespace BlackLabelCore
{
	internal class BlackLabelCoreConfig
	{
		internal static ConfigEntry<bool> changeMenu;

		public static void Bind(ConfigFile config)
		{
			changeMenu = config.Bind<bool>("Black Label", "Title Change", true, "Toggles the Black Label menu pic.\n\nWill change upon the main menu being reloaded.");
		}
	}
	[BepInPlugin("terraformer9x.BlackLabelCore", "Black Label Core", "1.2.0")]
	public class Plugin : BaseUnityPlugin
	{
		private const string pluginGUID = "terraformer9x.BlackLabelCore";

		private const string pluginName = "Black Label Core";

		private const string pluginVersion = "1.2.0";

		public const int pluginVersionNum = 1;

		private readonly Harmony harmony = new Harmony("terraformer9x.BlackLabelCore");

		public static Plugin Instance;

		private void Awake()
		{
			if (Instance == null)
			{
				Instance = this;
			}
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Black Label Core 1.2.0  is loaded!");
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Loading Black Label Assets");
			try
			{
				Assets.LoadAssets();
			}
			catch (Exception ex)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)(ex.Message + " - Failed to load Black Label assets!"));
			}
			BlackLabelCoreConfig.Bind(((BaseUnityPlugin)this).Config);
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Applying Black Label Patches");
			harmony.PatchAll();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Black Label Patches Applied");
		}

		public static void Log(string msg)
		{
			((BaseUnityPlugin)Instance).Logger.LogInfo((object)msg);
		}

		public static void LogError(string msg)
		{
			((BaseUnityPlugin)Instance).Logger.LogError((object)msg);
		}

		public static void LogWarning(string msg)
		{
			((BaseUnityPlugin)Instance).Logger.LogWarning((object)msg);
		}

		public static void LogDebug(string msg)
		{
			((BaseUnityPlugin)Instance).Logger.LogDebug((object)msg);
		}
	}
	internal static class Assets
	{
		internal static AssetBundle assetBundle;

		internal static Sprite blackLabelLogo;

		internal static Item[] blackLabelItems;

		internal static Mesh waterTileCollision;

		internal static Mesh dineNewSurfaceMesh;

		internal static Mesh dineMetalWallMesh;

		internal static GameObject dineTreeNearFire;

		internal static GameObject dineLeavesNearFire;

		internal static void LoadAssets()
		{
			try
			{
				assetBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "blacklabelassets"));
				blackLabelLogo = assetBundle.LoadAsset<Sprite>("LogoTextBL");
				blackLabelItems = assetBundle.LoadAllAssets<Item>();
				waterTileCollision = assetBundle.LoadAsset<Mesh>("WaterTileCollision");
				dineNewSurfaceMesh = assetBundle.LoadAsset<Mesh>("DineHybridTerrain");
				dineMetalWallMesh = assetBundle.LoadAsset<Mesh>("DineMetalWall");
				dineTreeNearFire = assetBundle.LoadAsset<GameObject>("DineNearFireTree");
				dineLeavesNearFire = assetBundle.LoadAsset<GameObject>("DineNearFireLeaves");
				assetBundle.Unload(false);
			}
			catch (Exception ex)
			{
				Plugin.LogError(ex.Message + " - Failed to load mod assets!");
			}
		}
	}
	internal static class Compatibility
	{
		internal static bool LethalLevelLoader = Chainloader.PluginInfos.ContainsKey("imabatby.lethallevelloader");

		internal static bool Chameleon = Chainloader.PluginInfos.ContainsKey("butterystancakes.lethalcompany.chameleon");

		internal static bool TonightWeDine = Chainloader.PluginInfos.ContainsKey("TonightWeDine");

		internal static bool ManeaterDamagePatch = Chainloader.PluginInfos.ContainsKey("com.github.WhiteSpike.ManeaterDamagePatch");

		internal static bool JesterDoorSlam = Chainloader.PluginInfos.ContainsKey("JesterDoorSlam");
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "BlackLabelCore";

		public const string PLUGIN_NAME = "BlackLabelCore";

		public const string PLUGIN_VERSION = "1.2.0";
	}
}
namespace BlackLabelCore.Patches
{
	[HarmonyPatch(typeof(RedLocustBees))]
	internal class CircuitBeesPatch
	{
		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void Postfix(RedLocustBees __instance)
		{
			((EnemyAI)__instance).openDoorSpeedMultiplier = 0f;
		}
	}
	[HarmonyPatch(typeof(ButlerBeesEnemyAI))]
	internal class ButlerBeesPatch
	{
		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void Postfix(ButlerBeesEnemyAI __instance)
		{
			((EnemyAI)__instance).openDoorSpeedMultiplier = 0f;
		}

		[HarmonyPatch("DoAIInterval")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> SpeedPatch(IEnumerable<CodeInstruction> instructions)
		{
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Expected O, but got Unknown
			List<CodeInstruction> list = instructions.ToList();
			for (int i = 0; i < list.Count - 1; i++)
			{
				if (list[i].opcode == OpCodes.Ldc_R4 && (float)list[i].operand == 4.25f)
				{
					list[i] = new CodeInstruction(OpCodes.Ldc_R4, (object)5.4f);
					break;
				}
			}
			return list;
		}
	}
	[HarmonyPatch(typeof(ButlerEnemyAI))]
	internal class ButlerPatch
	{
		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void ChangeButlerHealth(ButlerEnemyAI __instance)
		{
			if (StartOfRound.Instance.connectedPlayersAmount > 0)
			{
				((EnemyAI)__instance).enemyHP = 4;
			}
		}
	}
	[HarmonyPatch(typeof(RoundManager))]
	internal static class DineOverridePatch
	{
		internal static class DineOverride
		{
			internal static bool executed;

			internal static bool sceneManagerDelegated;

			internal static void DineSceneOverride()
			{
				//IL_0116: Unknown result type (might be due to invalid IL or missing references)
				//IL_013a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0158: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0206: Unknown result type (might be due to invalid IL or missing references)
				//IL_0220: Unknown result type (might be due to invalid IL or missing references)
				//IL_0243: Unknown result type (might be due to invalid IL or missing references)
				//IL_0262: Unknown result type (might be due to invalid IL or missing references)
				//IL_0285: Unknown result type (might be due to invalid IL or missing references)
				//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_02be: Unknown result type (might be due to invalid IL or missing references)
				//IL_0305: Unknown result type (might be due to invalid IL or missing references)
				//IL_0325: 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_037d: Unknown result type (might be due to invalid IL or missing references)
				//IL_03ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0412: Unknown result type (might be due to invalid IL or missing references)
				//IL_0432: Unknown result type (might be due to invalid IL or missing references)
				//IL_046f: Unknown result type (might be due to invalid IL or missing references)
				//IL_048f: 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_04ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_0529: Unknown result type (might be due to invalid IL or missing references)
				//IL_0549: Unknown result type (might be due to invalid IL or missing references)
				//IL_0586: Unknown result type (might be due to invalid IL or missing references)
				//IL_05a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_05e3: Unknown result type (might be due to invalid IL or missing references)
				//IL_0603: Unknown result type (might be due to invalid IL or missing references)
				//IL_061e: Unknown result type (might be due to invalid IL or missing references)
				if (!sceneManagerDelegated)
				{
					SceneManager.sceneUnloaded += delegate
					{
						executed = false;
					};
					sceneManagerDelegated = true;
				}
				GameObject obj = GameObject.Find("/Environment/NeonLightsSingle");
				if (obj != null)
				{
					obj.SetActive(false);
				}
				GameObject obj2 = GameObject.Find("/Environment/Map/CementFacility1/Cube.002");
				Transform val = ((obj2 != null) ? obj2.transform : null);
				GameObject obj3 = GameObject.Find("/Environment/FireExitDoorContainer/FireExitDoor");
				Transform val2 = ((obj3 != null) ? obj3.transform : null);
				GameObject obj4 = GameObject.Find("/Environment/Teleports/EntranceTeleportB");
				Transform val3 = ((obj4 != null) ? obj4.transform : null);
				GameObject val4 = GameObject.Find("/Environment/NewDineTerrainCutdown");
				if ((Object)(object)val4 != (Object)null)
				{
					val4.GetComponent<MeshFilter>().mesh = Assets.dineNewSurfaceMesh;
					val4.GetComponent<MeshCollider>().sharedMesh = Assets.dineNewSurfaceMesh;
				}
				GameObject obj5 = GameObject.Find("/Environment/ReverbTriggers (1)/WindTriggers");
				Transform val5 = ((obj5 != null) ? obj5.transform : null);
				GameObject val6 = GameObject.Find("/Environment/ReverbTriggers (1)/WindTriggers/shipWindTrigger2");
				if ((Object)(object)val6 != (Object)null && (Object)(object)val5 != (Object)null)
				{
					GameObject obj6 = Object.Instantiate<GameObject>(val6, val5);
					obj6.transform.localPosition = new Vector3(-193.03427f, 7.074562f, -83.64745f);
					obj6.transform.localRotation = new Quaternion(0f, 0f, 0f, 1f);
					obj6.transform.localScale = new Vector3(12.9657545f, 6.9007154f, 11.519966f);
				}
				if ((Object)(object)RoundManager.Instance.mapPropsContainer == (Object)null)
				{
					RoundManager.Instance.mapPropsContainer = GameObject.FindGameObjectWithTag("MapPropsContainer");
				}
				if ((Object)(object)RoundManager.Instance.mapPropsContainer != (Object)null)
				{
					Object.Instantiate<GameObject>(Assets.dineTreeNearFire, RoundManager.Instance.mapPropsContainer.transform);
					Object.Instantiate<GameObject>(Assets.dineLeavesNearFire, RoundManager.Instance.mapPropsContainer.transform);
				}
				if ((Object)(object)val != (Object)null)
				{
					val.localPosition = new Vector3(-15.267663f, 5.13949f, 29.441992f);
					val.localRotation = new Quaternion(-0.2334155f, -0.66771203f, -0.66668123f, 0.23497672f);
					val.localScale = new Vector3(0.5241794f, 0.64612794f, 0.4780146f);
				}
				if ((Object)(object)val2 != (Object)null)
				{
					val2.localPosition = new Vector3(-218.79054f, 32.197186f, -177.6566f);
					val2.localRotation = new Quaternion(0f, 0.5992887f, 0f, -0.800533f);
				}
				if ((Object)(object)val3 != (Object)null)
				{
					val3.localPosition = new Vector3(-28.067f, 1.4099998f, -70.185f);
					val3.localRotation = new Quaternion(0f, 0.94372284f, 0f, -0.33073732f);
					val3.localScale = new Vector3(1.9334757f, 3.462273f, 0.5321793f);
				}
				GameObject val7 = GameObject.Find("/Environment/Map/Cube.001 (16)");
				if ((Object)(object)val7 != (Object)null)
				{
					val7.GetComponent<MeshFilter>().mesh = Assets.dineMetalWallMesh;
					val7.transform.localPosition = new Vector3(179.3406f, -20.249994f, -22.0728f);
					val7.transform.localScale = new Vector3(1f, 1.4000261f, 1.1451999f);
				}
				GameObject obj7 = GameObject.Find("/Environment/Map/Cube.001 (8)");
				BoxCollider val8 = ((obj7 != null) ? obj7.GetComponent<BoxCollider>() : null);
				if ((Object)(object)val8 != (Object)null)
				{
					val8.center = new Vector3(-0.14010677f, -2.7291498f, -0.26022604f);
					val8.size = new Vector3(0.53314275f, 6.8050165f, 4.480085f);
				}
				GameObject obj8 = GameObject.Find("/Environment/Map/Cube.001 (4)");
				BoxCollider val9 = ((obj8 != null) ? obj8.GetComponent<BoxCollider>() : null);
				if ((Object)(object)val9 != (Object)null)
				{
					val9.center = new Vector3(-0.14010829f, -1.0517684f, -0.26022604f);
					val9.size = new Vector3(0.53314275f, 10.159763f, 4.480085f);
				}
				GameObject obj9 = GameObject.Find("/Environment/Plane");
				Transform val10 = ((obj9 != null) ? obj9.transform : null);
				if ((Object)(object)val10 != (Object)null)
				{
					val10.localPosition = new Vector3(178.84203f, -20.405f, -16.50813f);
					val10.localRotation = new Quaternion(0.5249201f, -0.4737709f, -0.4737702f, -0.52492076f);
				}
				GameObject obj10 = GameObject.Find("/Environment/SteelDoorFake");
				Transform val11 = ((obj10 != null) ? obj10.transform : null);
				if ((Object)(object)val11 != (Object)null)
				{
					val11.localPosition = new Vector3(178.729f, -20.34f, -15.17f);
					val11.localRotation = new Quaternion(0.038197827f, -0.7060744f, -0.70607436f, -0.03819688f);
				}
				GameObject obj11 = GameObject.Find("/Environment/SteelDoorFake (1)");
				Transform val12 = ((obj11 != null) ? obj11.transform : null);
				if ((Object)(object)val12 != (Object)null)
				{
					val12.localPosition = new Vector3(179.06046f, -20.340002f, -18.119337f);
					val12.localRotation = new Quaternion(0.03954247f, -0.7060007f, -0.706f, -0.039542507f);
				}
				GameObject obj12 = GameObject.Find("/Environment/DoorFrame (1)");
				Transform val13 = ((obj12 != null) ? obj12.transform : null);
				if ((Object)(object)val13 != (Object)null)
				{
					val13.localPosition = new Vector3(178.902f, -23.807f, -16.656f);
					val13.localRotation = new Quaternion(0.03933583f, -0.7060121f, -0.70601153f, -0.03933586f);
				}
				GameObject obj13 = GameObject.Find("/Environment/Teleports/EntranceTeleportA");
				Transform val14 = ((obj13 != null) ? obj13.transform : null);
				if ((Object)(object)val14 != (Object)null)
				{
					val14.localPosition = new Vector3(178.67831f, -21.2327f, -16.662853f);
					val14.localRotation = new Quaternion(0f, 0.99843365f, 0f, 0.055948973f);
				}
				GameObject obj14 = GameObject.Find("/Environment/ScanNodes/ScanNode");
				Transform val15 = ((obj14 != null) ? obj14.transform : null);
				if ((Object)(object)val15 != (Object)null)
				{
					val15.localPosition = new Vector3(175.7f, -24.01f, -19.5f);
					val15.localRotation = new Quaternion(0.7071068f, -0.7071068f, -2.43634E-06f, 2.43634E-06f);
					val15.localScale = new Vector3(9.139909f, 138.73448f, 4.0328393f);
				}
				GameObject val16 = GameObject.Find("/Environment");
				if ((Object)(object)val16 != (Object)null)
				{
					val16.GetComponent<NavMeshSurface>().RemoveData();
					val16.GetComponent<NavMeshSurface>().BuildNavMesh();
				}
			}

			internal static void FancyDoorOverride()
			{
				//IL_003f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				GameObject obj = GameObject.Find("/Environment/MapPropsContainer/WideDoorFrame(Clone)");
				Transform val = ((obj != null) ? obj.transform : null);
				if ((Object)(object)val != (Object)null)
				{
					Plugin.LogDebug("Found Chameleon's fancy door, moving them");
					((Component)val).transform.position = new Vector3(-156.553f, -15.126f, 12.155f);
					((Component)val).transform.rotation = new Quaternion(-0.70618117f, -0.036169115f, -0.036169115f, 0.70618117f);
				}
			}

			internal static void DineFixes()
			{
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				GameObject obj = GameObject.Find("/Environment/Map/KillTrigger (1)");
				Transform val = ((obj != null) ? obj.transform : null);
				if ((Object)(object)val != (Object)null)
				{
					val.localScale = new Vector3(349.60406f, 0.69064f, 181.3727f);
				}
				GameObject obj2 = GameObject.Find("/Environment/Map/KillTrigger (4)");
				Transform val2 = ((obj2 != null) ? obj2.transform : null);
				if ((Object)(object)val2 != (Object)null)
				{
					val2.localScale = new Vector3(42.223473f, 0.69064f, 81.23343f);
				}
			}
		}

		[HarmonyPatch("FinishGeneratingNewLevelClientRpc")]
		[HarmonyPriority(300)]
		[HarmonyPostfix]
		private static void DineOverridePostfix()
		{
			if (!Compatibility.TonightWeDine && ((Object)StartOfRound.Instance.currentLevel).name == "DineLevel" && !DineOverride.executed)
			{
				DineOverride.executed = true;
				Plugin.LogDebug("Changing Dine's layout");
				DineOverride.DineSceneOverride();
				if (Compatibility.Chameleon)
				{
					DineOverride.FancyDoorOverride();
				}
				Plugin.LogDebug("Fixing Dine's pits");
				DineOverride.DineFixes();
			}
		}
	}
	[HarmonyPatch]
	internal class DungeonPatch
	{
		private class Functions
		{
			internal static GameObject CreateItemSpawn(Transform transform, Vector3 localPosition, string spawn, int range, bool copy)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0005: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_002e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Expected O, but got Unknown
				GameObject val = new GameObject
				{
					name = "AddedItemSpawn_" + spawn
				};
				val.transform.SetParent(transform);
				val.transform.localPosition = localPosition;
				RandomScrapSpawn obj = val.AddComponent<RandomScrapSpawn>();
				obj.spawnableItems = GlobalInfo.itemGroups[spawn];
				obj.itemSpawnRange = range;
				obj.spawnedItemsCopyPosition = copy;
				return val;
			}

			internal static GameObject ConvertToRandomSpawn(Transform transform, float mainWeight, float branchWeight)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Expected O, but got Unknown
				//IL_003f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0045: Expected O, but got Unknown
				GameObject val = new GameObject();
				((Object)val).name = "AddedRandomSpawn_" + ((Object)transform).name;
				val.transform.SetParent(transform.parent);
				transform.SetParent(val.transform);
				LocalPropSet obj = val.AddComponent<LocalPropSet>();
				GameObjectChance val2 = new GameObjectChance();
				val2.Value = ((Component)transform).gameObject;
				val2.MainPathWeight = mainWeight;
				val2.BranchPathWeight = branchWeight;
				obj.Props.Weights.Add(val2);
				obj.PropCount.Min = 0;
				obj.PropCount.Max = 1;
				return val;
			}
		}

		[HarmonyPatch(typeof(Dungeon), "PreGenerateDungeon")]
		[HarmonyPostfix]
		private static void PreGenerateDungeonPostfix(Dungeon __instance)
		{
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Expected O, but got Unknown
			if (!Compatibility.LethalLevelLoader)
			{
				int num = 1;
				if (((Object)RoundManager.Instance.currentLevel).name == "MarchLevel")
				{
					num = 3;
				}
				__instance.DungeonFlow.GlobalProps.Find((GlobalPropSettings x) => x.ID == 1231).Count = new IntRange(num, num);
			}
		}

		[HarmonyPatch(typeof(Dungeon), "PostGenerateDungeon")]
		[HarmonyPostfix]
		private static void PostGenerateDungeonPostfix(Dungeon __instance)
		{
			string name = ((Object)__instance.DungeonFlow).name;
			if (!(name == "Level2Flow"))
			{
				if (name == "Level3Flow")
				{
					Level3Patch();
				}
			}
			else
			{
				Level2Patch();
			}
			void Level2Patch()
			{
				Plugin.LogDebug(((Object)__instance.DungeonFlow).name + " detected, forcing ground level entrance.");
				Tile val = __instance.AllTiles?.First((Tile x) => ((Object)x).name == "ManorStartRoom(Clone)");
				if ((Object)(object)val != (Object)null)
				{
					Transform obj = ((Component)val).transform.Find("MainEntrancePropSet");
					LocalPropSet val2 = ((obj != null) ? ((Component)obj).GetComponent<LocalPropSet>() : null);
					if ((Object)(object)val2 != (Object)null)
					{
						val2.Props.Weights.ForEach(delegate(GameObjectChance x)
						{
							if (((Object)x.Value).name != "MainEntranceSpawnPositionA")
							{
								x.MainPathWeight = 0f;
							}
							x.BranchPathWeight = 0f;
						});
					}
				}
			}
			void Level3Patch()
			{
				//IL_0076: Unknown result type (might be due to invalid IL or missing references)
				//IL_007b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0094: Unknown result type (might be due to invalid IL or missing references)
				//IL_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
				foreach (Tile item in __instance.AllTiles.Where((Tile x) => ((Object)x).name == "CaveSmallIntersectTile(Clone)" || ((Object)x).name == "CaveCrampedIntersectTile(Clone)"))
				{
					Transform obj2 = ((Component)item).transform.Find("GeneralScrapSpawn");
					Transform val3 = ((obj2 != null) ? ((Component)obj2).transform : null);
					if ((Object)(object)val3 != (Object)null)
					{
						Plugin.LogDebug("Converting to random spawn at " + val3.position.x + ", " + val3.position.y + ", " + val3.position.z);
						Functions.ConvertToRandomSpawn(val3, 0.3f, 0.5f);
					}
				}
			}
		}

		[HarmonyPatch(typeof(DungeonGenerator), "ProcessGlobalProps")]
		[HarmonyPostfix]
		private static void ProcessGlobalPropsPostfix(DungeonGenerator __instance)
		{
			if (((Object)__instance.DungeonFlow).name == "Level3Flow")
			{
				Level3Patch();
			}
			void Level3Patch()
			{
				//IL_0080: Unknown result type (might be due to invalid IL or missing references)
				//IL_0085: 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_00a4: 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_00c3: 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)
				//IL_0139: Unknown result type (might be due to invalid IL or missing references)
				//IL_013e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0158: Unknown result type (might be due to invalid IL or missing references)
				//IL_015d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0177: Unknown result type (might be due to invalid IL or missing references)
				//IL_017c: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_033b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0340: Unknown result type (might be due to invalid IL or missing references)
				//IL_0360: Unknown result type (might be due to invalid IL or missing references)
				//IL_0365: Unknown result type (might be due to invalid IL or missing references)
				//IL_0385: Unknown result type (might be due to invalid IL or missing references)
				//IL_038a: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
				//IL_0214: Unknown result type (might be due to invalid IL or missing references)
				//IL_0219: Unknown result type (might be due to invalid IL or missing references)
				//IL_0234: Unknown result type (might be due to invalid IL or missing references)
				//IL_0239: Unknown result type (might be due to invalid IL or missing references)
				//IL_0263: Unknown result type (might be due to invalid IL or missing references)
				//IL_044b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0450: Unknown result type (might be due to invalid IL or missing references)
				//IL_0470: Unknown result type (might be due to invalid IL or missing references)
				//IL_0475: Unknown result type (might be due to invalid IL or missing references)
				//IL_0495: Unknown result type (might be due to invalid IL or missing references)
				//IL_049a: Unknown result type (might be due to invalid IL or missing references)
				//IL_050a: Unknown result type (might be due to invalid IL or missing references)
				//IL_050f: Unknown result type (might be due to invalid IL or missing references)
				//IL_052f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0534: Unknown result type (might be due to invalid IL or missing references)
				//IL_0554: Unknown result type (might be due to invalid IL or missing references)
				//IL_0559: Unknown result type (might be due to invalid IL or missing references)
				foreach (Tile item in __instance.CurrentDungeon.AllTiles.Where((Tile x) => ((Object)x).name == "TunnelSplit(Clone)" || ((Object)x).name == "TunnelSplitEndTile(Clone)"))
				{
					Transform obj = ((Component)item).transform.Find("SouthWallProps/Shelf1 (14)");
					Transform val = ((obj != null) ? ((Component)obj).transform : null);
					if ((Object)(object)val != (Object)null)
					{
						Plugin.LogDebug("Found a shelf at " + val.position.x + ", " + val.position.y + ", " + val.position.z);
						Functions.CreateItemSpawn(val, new Vector3(-7.68f, -6.6f, 1.79f), "SmallItems", 15, copy: true);
					}
					Transform obj2 = ((Component)item).transform.Find("Props/PropSet2/WoodPalletPile2x");
					Transform val2 = ((obj2 != null) ? ((Component)obj2).transform : null);
					if ((Object)(object)val2 != (Object)null)
					{
						Plugin.LogDebug("Found a pallet at " + val2.position.x + ", " + val2.position.y + ", " + val2.position.z);
						Functions.CreateItemSpawn(val2, new Vector3(0.3f, 0.04f, 2.54f), "TabletopItems", 3, copy: false);
					}
					Transform obj3 = ((Component)item).transform.Find("Props/PropSet2/Minecart (1)");
					Transform val3 = ((obj3 != null) ? ((Component)obj3).transform : null);
					if ((Object)(object)val3 != (Object)null)
					{
						Plugin.LogDebug("Found a minecart at " + val3.position.x + ", " + val3.position.y + ", " + val3.position.z);
						GameObject obj4 = Functions.CreateItemSpawn(val3, new Vector3(-0.74f, 1.22f, 4.11f), "SmallItems", 1, copy: false);
						Transform val4 = ((obj4 != null) ? obj4.transform : null);
						if ((Object)(object)val4 != (Object)null)
						{
							Functions.ConvertToRandomSpawn(val4, 0.25f, 0.8f);
						}
					}
				}
				foreach (Tile item2 in __instance.CurrentDungeon.AllTiles.Where((Tile x) => ((Object)x).name == "CaveCrampedIntersectTile(Clone)"))
				{
					Transform obj5 = ((Component)item2).transform.Find("TablePropSpawn");
					GameObject val5 = ((obj5 != null) ? ((Component)obj5).gameObject : null);
					if ((Object)(object)val5 != (Object)null)
					{
						Plugin.LogDebug("Destroying table prop spawn at " + val5.transform.position.x + ", " + val5.transform.position.y + ", " + val5.transform.position.z);
						Object.Destroy((Object)(object)val5);
					}
				}
				foreach (Tile item3 in __instance.CurrentDungeon.AllTiles.Where((Tile x) => ((Object)x).name == "CaveWaterTile(Clone)"))
				{
					Transform obj6 = ((Component)item3).transform.Find("MapHazardSpawnType1");
					GameObject val6 = ((obj6 != null) ? ((Component)obj6).gameObject : null);
					if ((Object)(object)val6 != (Object)null)
					{
						Plugin.LogDebug("Destroying hazard spawn at " + val6.transform.position.x + ", " + val6.transform.position.y + ", " + val6.transform.position.z);
						Object.Destroy((Object)(object)val6);
					}
					Transform obj7 = ((Component)item3).transform.Find("WaterTileMesh");
					object obj8;
					if (obj7 == null)
					{
						obj8 = null;
					}
					else
					{
						MeshCollider component = ((Component)obj7).gameObject.GetComponent<MeshCollider>();
						obj8 = ((component != null) ? component.sharedMesh : null);
					}
					if ((Object)obj8 != (Object)null)
					{
						Plugin.LogDebug("Changing collision on water tile at " + ((Component)item3).transform.position.x + ", " + ((Component)item3).transform.position.y + ", " + ((Component)item3).transform.position.z);
						_ = Assets.waterTileCollision;
					}
				}
			}
		}
	}
	[HarmonyPatch(typeof(GameNetworkManager))]
	internal class GameNetworkManagerPatch
	{
		private static bool executed;

		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void GameNetworkManagerPostfix(ref GameNetworkManager __instance)
		{
			if (!executed)
			{
				Item[] blackLabelItems = Assets.blackLabelItems;
				foreach (Item val in blackLabelItems)
				{
					((Component)__instance).GetComponent<NetworkManager>().AddNetworkPrefab(val.spawnPrefab);
				}
				executed = true;
			}
		}
	}
	[HarmonyPatch(typeof(JesterAI))]
	internal class JesterPatch
	{
		[HarmonyPatch("SetJesterInitialValues")]
		[HarmonyPostfix]
		private static void ChangeJesterTimer(ref JesterAI __instance)
		{
			__instance.beginCrankingTimer = Random.Range(25f, 42f);
		}

		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		private static void SlamOpenDoors(ref JesterAI __instance)
		{
			if (Compatibility.JesterDoorSlam)
			{
				Plugin.LogWarning("JesterDoorSlam detected! Preventing BLC postfix...");
			}
			else if (((EnemyAI)__instance).currentBehaviourStateIndex == 2 && ((EnemyAI)__instance).agent.speed >= 10f)
			{
				((EnemyAI)__instance).useSecondaryAudiosOnAnimatedObjects = true;
			}
			else
			{
				((EnemyAI)__instance).useSecondaryAudiosOnAnimatedObjects = false;
			}
		}
	}
	[HarmonyPatch(typeof(MenuManager))]
	internal class MenuManagerPatch
	{
		[HarmonyPatch("Awake")]
		[HarmonyPriority(500)]
		[HarmonyPostfix]
		private static void ChangeLogo(MenuManager __instance)
		{
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: 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)
			if (BlackLabelCoreConfig.changeMenu.Value)
			{
				GameObject obj = GameObject.Find("MenuContainer/MainButtons/HeaderImage");
				Image val = ((obj != null) ? obj.GetComponent<Image>() : null);
				if ((Object)(object)val != (Object)null)
				{
					val.sprite = Assets.blackLabelLogo;
				}
				GameObject obj2 = GameObject.Find("MenuContainer");
				object obj3;
				if (obj2 == null)
				{
					obj3 = null;
				}
				else
				{
					Transform obj4 = obj2.transform.Find("LoadingScreen/Image");
					obj3 = ((obj4 != null) ? ((Component)obj4).GetComponent<Image>() : null);
				}
				Image val2 = (Image)obj3;
				if ((Object)(object)val2 != (Object)null)
				{
					val2.sprite = Assets.blackLabelLogo;
				}
			}
			if ((Object)(object)__instance.launchedInLanModeText != (Object)null)
			{
				((TMP_Text)__instance.launchedInLanModeText).rectTransform.anchoredPosition3D = new Vector3(96f, ((TMP_Text)__instance.launchedInLanModeText).rectTransform.anchoredPosition3D.y, ((TMP_Text)__instance.launchedInLanModeText).rectTransform.anchoredPosition3D.z);
			}
			if ((Object)(object)__instance.versionNumberText != (Object)null)
			{
				((TMP_Text)__instance.versionNumberText).text = ((TMP_Text)__instance.versionNumberText).text + "-BL" + 1;
				((TMP_Text)__instance.versionNumberText).margin = new Vector4(0f, 0f, -300f, 0f);
			}
		}
	}
	[HarmonyPatch(typeof(MouthDogAI))]
	internal class MouthDogPatch
	{
		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void ChangeDogHealth(MouthDogAI __instance)
		{
			((EnemyAI)__instance).enemyHP = 10;
		}
	}
	[HarmonyPatch(typeof(NutcrackerEnemyAI))]
	internal class NutcrackerPatch
	{
		[HarmonyPatch(/*Could not decode attribute arguments.*/)]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> AimGunPatch(IEnumerable<CodeInstruction> instructions)
		{
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Expected O, but got Unknown
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Expected O, but got Unknown
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Expected O, but got Unknown
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Expected O, but got Unknown
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Expected O, but got Unknown
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Expected O, but got Unknown
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Expected O, but got Unknown
			bool flag = false;
			List<CodeInstruction> list = instructions.ToList();
			for (int i = 0; i < list.Count - 1; i++)
			{
				if (list[i + 1].opcode == OpCodes.Ldc_R4 && (float)list[i + 1].operand == 1.3f && !flag)
				{
					list.Insert(i + 1, new CodeInstruction(OpCodes.Ldloc_1, (object)null));
					list.Insert(i + 2, new CodeInstruction(OpCodes.Ldloc_1, (object)null));
					list.Insert(i + 4, new CodeInstruction(OpCodes.Ldc_R4, (object)1f));
					list.Insert(i + 5, new CodeInstruction(OpCodes.Call, (object)AccessTools.Method(typeof(NutcrackerPatch), "ChangeAimTime", (Type[])null, (Type[])null)));
					flag = true;
				}
				if (list[i + 1].opcode == OpCodes.Ldc_R4 && (float)list[i + 1].operand == 1.75f)
				{
					list.Insert(i + 1, new CodeInstruction(OpCodes.Ldloc_1, (object)null));
					list.Insert(i + 2, new CodeInstruction(OpCodes.Ldloc_1, (object)null));
					list.Insert(i + 4, new CodeInstruction(OpCodes.Ldc_R4, (object)1.3f));
					list.Insert(i + 5, new CodeInstruction(OpCodes.Call, (object)AccessTools.Method(typeof(NutcrackerPatch), "ChangeAimTime", (Type[])null, (Type[])null)));
					break;
				}
			}
			return list;
		}

		public float ChangeAimTime(NutcrackerEnemyAI ai, float aimTime, float changeTime)
		{
			if (((EnemyAI)ai).enemyHP > 3)
			{
				return aimTime;
			}
			return changeTime;
		}
	}
	[HarmonyPatch(typeof(RoundManager))]
	internal class RoundManagerPatch
	{
		[HarmonyPatch("SpawnScrapInLevel")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> ChangeMineshaftAmount(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: 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_0035: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Expected O, but got Unknown
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(true, (CodeMatch[])(object)new CodeMatch[1]
			{
				new CodeMatch((OpCode?)OpCodes.Ldfld, (object)AccessTools.Field(typeof(RoundManager), "currentDungeonType"), (string)null)
			}).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
			{
				new CodeMatch((OpCode?)OpCodes.Ldc_I4_6, (object)null, (string)null)
			}).SetInstruction(new CodeInstruction(OpCodes.Ldc_I4_0, (object)null))
				.InstructionEnumeration();
		}

		[HarmonyPatch("RefreshEnemiesList")]
		[HarmonyPostfix]
		private static void NerfAnomaliesPatch(RoundManager __instance)
		{
			if ((int)typeof(RoundManager).GetField("enemyRushIndex", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(__instance) >= 0 && !StartOfRound.Instance.isChallengeFile)
			{
				typeof(RoundManager).GetField("enemyRushIndex", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, -1);
				__instance.currentMaxInsidePower = __instance.currentLevel.maxEnemyPowerCount;
				Plugin.LogDebug("Prevented an enemy rush, enemy power is reset back to " + __instance.currentMaxInsidePower);
			}
			Random random = new Random(StartOfRound.Instance.randomMapSeed + 5781);
			((Component)__instance.indoorFog).gameObject.SetActive(random.Next(0, 150) < 3);
			__instance.indoorFog.parameters.meanFreePath = 10f;
		}
	}
	[HarmonyPatch(typeof(StartOfRound))]
	internal class StartOfRoundPatch
	{
		private static bool executed;

		public static RoundManager RoundManager { get; internal set; }

		public static StartOfRound StartOfRound { get; internal set; }

		public static SoundManager SoundManager { get; internal set; }

		[HarmonyPatch("Awake")]
		[HarmonyPrefix]
		private static void Execute()
		{
			if (!executed)
			{
				RoundManager = Object.FindFirstObjectByType<RoundManager>();
				StartOfRound = Object.FindFirstObjectByType<StartOfRound>();
				SoundManager = Object.FindFirstObjectByType<SoundManager>();
				SetupGlobalInfo();
				SetupItems();
				SetupDungeonFlows();
				SetupLevels();
				executed = true;
			}
		}

		private static void SetupGlobalInfo()
		{
			SelectableLevel[] array = Resources.FindObjectsOfTypeAll<SelectableLevel>();
			foreach (SelectableLevel val in array)
			{
				if ((Object)(object)val != (Object)null && !GlobalInfo.levels.ContainsKey(((Object)val).name) && !GlobalInfo.levels.ContainsValue(val))
				{
					GlobalInfo.levels.Add(((Object)val).name, val);
				}
			}
			Item[] array2 = Resources.FindObjectsOfTypeAll<Item>();
			foreach (Item val2 in array2)
			{
				if ((Object)(object)val2.spawnPrefab != (Object)null && !GlobalInfo.items.ContainsKey(((Object)val2).name) && !GlobalInfo.items.ContainsValue(val2))
				{
					GlobalInfo.items.Add(((Object)val2).name, val2);
				}
			}
			ItemGroup[] array3 = Resources.FindObjectsOfTypeAll<ItemGroup>();
			foreach (ItemGroup val3 in array3)
			{
				if ((Object)(object)val3 != (Object)null && !GlobalInfo.itemGroups.ContainsKey(((Object)val3).name) && !GlobalInfo.itemGroups.ContainsValue(val3))
				{
					GlobalInfo.itemGroups.Add(((Object)val3).name, val3);
				}
			}
			EnemyType[] array4 = Resources.FindObjectsOfTypeAll<EnemyType>();
			foreach (EnemyType val4 in array4)
			{
				if ((Object)(object)val4.enemyPrefab != (Object)null && !GlobalInfo.enemies.ContainsKey(((Object)val4).name) && !GlobalInfo.enemies.ContainsValue(val4))
				{
					GlobalInfo.enemies.Add(((Object)val4).name, val4);
				}
			}
			array = Resources.FindObjectsOfTypeAll<SelectableLevel>();
			for (int i = 0; i < array.Length; i++)
			{
				SpawnableMapObject[] spawnableMapObjects = array[i].spawnableMapObjects;
				foreach (SpawnableMapObject val5 in spawnableMapObjects)
				{
					if ((Object)(object)val5.prefabToSpawn != (Object)null && !GlobalInfo.traps.ContainsKey(((Object)val5.prefabToSpawn).name) && !GlobalInfo.traps.ContainsValue(val5.prefabToSpawn))
					{
						GlobalInfo.traps.Add(((Object)val5.prefabToSpawn).name, val5.prefabToSpawn);
					}
				}
			}
			DungeonFlow[] array5 = Resources.FindObjectsOfTypeAll<DungeonFlow>();
			foreach (DungeonFlow val6 in array5)
			{
				if ((Object)(object)val6 != (Object)null && !GlobalInfo.dungeonFlows.ContainsKey(((Object)val6).name) && !GlobalInfo.dungeonFlows.ContainsValue(val6))
				{
					GlobalInfo.dungeonFlows.Add(((Object)val6).name, val6);
				}
			}
			IndoorMapType[] dungeonFlowTypes = RoundManager.dungeonFlowTypes;
			for (int k = 0; k < dungeonFlowTypes.Length; k++)
			{
				if (dungeonFlowTypes[k] != null)
				{
					GlobalInfo.dungeonIDs.Add(((Object)dungeonFlowTypes[k].dungeonFlow).name, k);
					Plugin.LogDebug(((Object)dungeonFlowTypes[k].dungeonFlow).name + " = " + k);
				}
			}
			LevelAmbienceLibrary[] array6 = Resources.FindObjectsOfTypeAll<LevelAmbienceLibrary>();
			foreach (LevelAmbienceLibrary val7 in array6)
			{
				if ((Object)(object)val7 != (Object)null && !GlobalInfo.ambienceLibraries.ContainsKey(((Object)val7).name) && !GlobalInfo.ambienceLibraries.ContainsValue(val7))
				{
					GlobalInfo.ambienceLibraries.Add(((Object)val7).name, val7);
				}
			}
		}

		private static void SetupItems()
		{
			Item[] blackLabelItems = Assets.blackLabelItems;
			foreach (Item val in blackLabelItems)
			{
				if ((Object)(object)val != (Object)null && !StartOfRound.allItemsList.itemsList.Contains(val))
				{
					StartOfRound.allItemsList.itemsList.Add(val);
				}
			}
			GlobalInfo.items["TrafficCone"].spawnPositionTypes.Add(GlobalInfo.itemGroups["GeneralItemClass"]);
			GlobalInfo.items["Tuba"].spawnPositionTypes.Add(GlobalInfo.itemGroups["GeneralItemClass"]);
			GlobalInfo.items["WineBottle"].spawnPositionTypes.Add(GlobalInfo.itemGroups["TabletopItems"]);
			GlobalInfo.items["Fan"].spawnPositionTypes.Add(GlobalInfo.itemGroups["GeneralItemClass"]);
			GlobalInfo.items["Fan"].spawnPositionTypes.Add(GlobalInfo.itemGroups["TabletopItems"]);
			GlobalInfo.items["Shovel"].weight = 1.08f;
			GlobalInfo.items["StopSign"].weight = 1.2f;
			GlobalInfo.items["Jetpack"].creditsWorth = 700;
		}

		private static void SetupDungeonFlows()
		{
			DungeonFlow obj = GlobalInfo.dungeonFlows["Level3Flow"];
			obj.Length.Min = 10;
			obj.Length.Max = 12;
			obj.Lines[0].Length = 0.35f;
			obj.Lines[1].Position = 0.35f;
			obj.Lines[1].Length = 0.3f;
			obj.Lines[2].Position = 0.65f;
			obj.Lines[2].Length = 0.35f;
		}

		private static void SetupLevels()
		{
			GlobalInfo.blackLabelLevels.AddRange(new <>z__ReadOnlyArray<BlackLabelLevel>(new BlackLabelLevel[11]
			{
				new ExperimentationBlackLabelLevel(),
				new AssuranceBlackLabelLevel(),
				new VowBlackLabelLevel(),
				new MarchBlackLabelLevel(),
				new OffenseBlackLabelLevel(),
				new AdamanceBlackLabelLevel(),
				new RendBlackLabelLevel(),
				new DineBlackLabelLevel(),
				new TitanBlackLabelLevel(),
				new ArtificeBlackLabelLevel(),
				new EmbrionBlackLabelLevel()
			}));
		}
	}
	[HarmonyPatch(typeof(StormyWeather))]
	internal class StormyPatch
	{
		[HarmonyPatch("Update")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> UpdatePatch(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Expected O, but got Unknown
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Expected O, but got Unknown
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Expected O, but got Unknown
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_014e: Expected O, but got Unknown
			List<CodeInstruction> list = instructions.ToList();
			for (int i = 0; i < list.Count - 1; i++)
			{
				if (list[i].opcode == OpCodes.Ldc_R4 && (float)list[i].operand == 1f && list[i + 1].opcode == OpCodes.Ldc_R4 && (float)list[i + 1].operand == 28f)
				{
					list[i + 1] = new CodeInstruction(OpCodes.Ldc_R4, (object)35f);
					list[i + 4] = new CodeInstruction(OpCodes.Ldc_R4, (object)25f);
				}
				if (list[i].opcode == OpCodes.Ldc_R4 && (float)list[i].operand == 4f && list[i + 1].opcode == OpCodes.Ldc_R4 && (float)list[i + 1].operand == 20f)
				{
					list[i] = new CodeInstruction(OpCodes.Ldc_R4, (object)8f);
					list[i + 1] = new CodeInstruction(OpCodes.Ldc_R4, (object)25f);
					break;
				}
			}
			return list;
		}
	}
}
namespace BlackLabelCore.Levels
{
	public class AdamanceBlackLabelLevel : BlackLabelLevel
	{
		public AdamanceBlackLabelLevel()
			: base("AdamanceLevel")
		{
		}

		public override void SetupLevel()
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Expected O, but got Unknown
			//IL_0075: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			//IL_0099: 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_00bb: Expected O, but got Unknown
			//IL_00bd: 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_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Expected O, but got Unknown
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Expected O, but got Unknown
			//IL_0107: 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_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Expected O, but got Unknown
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Expected O, but got Unknown
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Expected O, but got Unknown
			BlackLabelLevel.level.spawnableScrap.Remove(BlackLabelLevel.level.spawnableScrap.Find((SpawnableItemWithRarity x) => ((Object)x.spawnableItem).name == "EasterEgg"));
			BlackLabelLevel.level.spawnableScrap.AddRange(new <>z__ReadOnlyArray<SpawnableItemWithRarity>((SpawnableItemWithRarity[])(object)new SpawnableItemWithRarity[8]
			{
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Hairdryer"],
					rarity = 10
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["ComedyMask"],
					rarity = 6
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["TragedyMask"],
					rarity = 5
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Bucket"],
					rarity = 27
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Fan"],
					rarity = 22
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Spatula"],
					rarity = 40
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Toaster"],
					rarity = 30
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Boot"],
					rarity = 1
				}
			}));
		}
	}
	public class ArtificeBlackLabelLevel : BlackLabelLevel
	{
		public ArtificeBlackLabelLevel()
			: base("ArtificeLevel")
		{
		}

		public override void SetupLevel()
		{
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Expected O, but got Unknown
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Expected O, but got Unknown
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: 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_00e5: Expected O, but got Unknown
			//IL_00e7: 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)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Expected O, but got Unknown
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: 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_012f: Expected O, but got Unknown
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Expected O, but got Unknown
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Expected O, but got Unknown
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_019e: Expected O, but got Unknown
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Expected O, but got Unknown
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Expected O, but got Unknown
			//IL_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0258: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0317: Unknown result type (might be due to invalid IL or missing references)
			//IL_0318: Unknown result type (might be due to invalid IL or missing references)
			//IL_0321: Unknown result type (might be due to invalid IL or missing references)
			//IL_0377: Unknown result type (might be due to invalid IL or missing references)
			//IL_0378: Unknown result type (might be due to invalid IL or missing references)
			//IL_037d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0382: Unknown result type (might be due to invalid IL or missing references)
			//IL_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_0395: Expected O, but got Unknown
			BlackLabelLevel.level.minScrap = 31;
			BlackLabelLevel.level.maxScrap = 37;
			BlackLabelLevel.level.factorySizeMultiplier = 2f;
			BlackLabelLevel.level.spawnableScrap.Remove(BlackLabelLevel.level.spawnableScrap.Find((SpawnableItemWithRarity x) => ((Object)x.spawnableItem).name == "EasterEgg"));
			BlackLabelLevel.level.spawnableScrap.AddRange(new <>z__ReadOnlyArray<SpawnableItemWithRarity>((SpawnableItemWithRarity[])(object)new SpawnableItemWithRarity[10]
			{
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Wallet"],
					rarity = 25
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Briefcase"],
					rarity = 17
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Fan"],
					rarity = 13
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Bucket"],
					rarity = 35
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["WineBottle"],
					rarity = 40
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Toaster"],
					rarity = 27
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Tophat"],
					rarity = 22
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Tuba"],
					rarity = 19
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["TrafficCone"],
					rarity = 9
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Boot"],
					rarity = 1
				}
			}));
			SelectableLevel obj = BlackLabelLevel.level;
			Keyframe[] array = new Keyframe[4];
			Keyframe val = default(Keyframe);
			((Keyframe)(ref val)).time = 0f;
			((Keyframe)(ref val)).value = -3f;
			((Keyframe)(ref val)).inTangent = 59.199333f;
			((Keyframe)(ref val)).outTangent = 59.199333f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0f;
			((Keyframe)(ref val)).outWeight = 0.18829483f;
			array[0] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 0.16255526f;
			((Keyframe)(ref val)).value = 1.1420287f;
			((Keyframe)(ref val)).inTangent = 9.178675f;
			((Keyframe)(ref val)).outTangent = 9.178675f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0.65918964f;
			((Keyframe)(ref val)).outWeight = 0.43745992f;
			array[1] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 0.7631003f;
			((Keyframe)(ref val)).value = 11.275558f;
			((Keyframe)(ref val)).inTangent = 25.289257f;
			((Keyframe)(ref val)).outTangent = 25.289257f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0.41667995f;
			((Keyframe)(ref val)).outWeight = 0.5360636f;
			array[2] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 1f;
			((Keyframe)(ref val)).value = 15f;
			((Keyframe)(ref val)).inTangent = 35.604027f;
			((Keyframe)(ref val)).outTangent = 35.604027f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)1;
			((Keyframe)(ref val)).inWeight = 0.04912584f;
			((Keyframe)(ref val)).outWeight = 0f;
			array[3] = val;
			obj.enemySpawnChanceThroughoutDay = new AnimationCurve((Keyframe[])(object)array)
			{
				preWrapMode = (WrapMode)2,
				postWrapMode = (WrapMode)2
			};
			BlackLabelLevel.level.Enemies.Find((SpawnableEnemyWithRarity x) => ((Object)x.enemyType).name == "CaveDweller").rarity = 25;
			BlackLabelLevel.level.dungeonFlowTypes.First((IntWithRarity x) => x.id == GlobalInfo.dungeonIDs["Level2Flow"]).rarity = 300;
			BlackLabelLevel.level.dungeonFlowTypes.First((IntWithRarity x) => x.id == GlobalInfo.dungeonIDs["Level1Flow"]).rarity = 50;
			BlackLabelLevel.level.dungeonFlowTypes.First((IntWithRarity x) => x.id == GlobalInfo.dungeonIDs["Level3Flow"]).rarity = 50;
		}
	}
	public class AssuranceBlackLabelLevel : BlackLabelLevel
	{
		public AssuranceBlackLabelLevel()
			: base("AssuranceLevel")
		{
		}

		public override void SetupLevel()
		{
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Expected O, but got Unknown
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Expected O, but got Unknown
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: 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_00f2: Expected O, but got Unknown
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Expected O, but got Unknown
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Expected O, but got Unknown
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Expected O, but got Unknown
			BlackLabelLevel.level.spawnableScrap.Remove(BlackLabelLevel.level.spawnableScrap.Find((SpawnableItemWithRarity x) => ((Object)x.spawnableItem).name == "EasterEgg"));
			BlackLabelLevel.level.spawnableScrap.Find((SpawnableItemWithRarity x) => ((Object)x.spawnableItem).name == "EggBeater").rarity = 23;
			BlackLabelLevel.level.spawnableScrap.AddRange(new <>z__ReadOnlyArray<SpawnableItemWithRarity>((SpawnableItemWithRarity[])(object)new SpawnableItemWithRarity[6]
			{
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Spatula"],
					rarity = 21
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Fan"],
					rarity = 18
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Stapler"],
					rarity = 15
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Bucket"],
					rarity = 42
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Toaster"],
					rarity = 21
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Boot"],
					rarity = 1
				}
			}));
			BlackLabelLevel.level.Enemies.Remove(BlackLabelLevel.level.Enemies.Find((SpawnableEnemyWithRarity x) => ((Object)x.enemyType).name == "CaveDweller"));
		}
	}
	public class DineBlackLabelLevel : BlackLabelLevel
	{
		public DineBlackLabelLevel()
			: base("DineLevel")
		{
		}

		public override void SetupLevel()
		{
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Expected O, but got Unknown
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Expected O, but got Unknown
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Expected O, but got Unknown
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Expected O, but got Unknown
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Expected O, but got Unknown
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Expected O, but got Unknown
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Expected O, but got Unknown
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Expected O, but got Unknown
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Expected O, but got Unknown
			//IL_025f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0315: Unknown result type (might be due to invalid IL or missing references)
			//IL_0316: Unknown result type (might be due to invalid IL or missing references)
			//IL_031f: 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_0376: Unknown result type (might be due to invalid IL or missing references)
			//IL_037b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0380: Unknown result type (might be due to invalid IL or missing references)
			//IL_0387: Unknown result type (might be due to invalid IL or missing references)
			//IL_0393: Expected O, but got Unknown
			//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0421: Unknown result type (might be due to invalid IL or missing references)
			//IL_0422: Unknown result type (might be due to invalid IL or missing references)
			//IL_042b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0481: Unknown result type (might be due to invalid IL or missing references)
			//IL_0482: Unknown result type (might be due to invalid IL or missing references)
			//IL_048b: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0541: Unknown result type (might be due to invalid IL or missing references)
			//IL_0542: Unknown result type (might be due to invalid IL or missing references)
			//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_0553: Unknown result type (might be due to invalid IL or missing references)
			//IL_055f: Expected O, but got Unknown
			//IL_0597: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_064d: Unknown result type (might be due to invalid IL or missing references)
			//IL_064e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0657: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_070d: Unknown result type (might be due to invalid IL or missing references)
			//IL_070e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0713: 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_071f: Unknown result type (might be due to invalid IL or missing references)
			//IL_072b: Expected O, but got Unknown
			BlackLabelLevel.level.maxScrap = 27;
			BlackLabelLevel.level.spawnableScrap.Remove(BlackLabelLevel.level.spawnableScrap.Find((SpawnableItemWithRarity x) => ((Object)x.spawnableItem).name == "EasterEgg"));
			BlackLabelLevel.level.spawnableScrap.ForEach(delegate(SpawnableItemWithRarity x)
			{
				string name2 = ((Object)x.spawnableItem).name;
				if (name2 != null)
				{
					switch (name2.Length)
					{
					case 4:
						switch (name2[0])
						{
						case 'B':
							if (name2 == "Bell")
							{
								x.rarity = 48;
							}
							break;
						case 'C':
							if (name2 == "Cog1")
							{
								x.rarity = 6;
							}
							break;
						case 'R':
							if (name2 == "Ring")
							{
								x.rarity = 19;
							}
							break;
						}
						break;
					case 5:
						switch (name2[0])
						{
						case 'B':
							if (name2 == "Brush")
							{
								x.rarity = 20;
							}
							break;
						case 'C':
							if (name2 == "Candy")
							{
								x.rarity = 16;
							}
							break;
						case 'P':
							if (name2 == "Phone")
							{
								x.rarity = 17;
							}
							break;
						}
						break;
					case 12:
						switch (name2[0])
						{
						case 'C':
							if (name2 == "CashRegister")
							{
								x.rarity = 13;
							}
							break;
						case 'D':
							if (name2 == "DiyFlashbang")
							{
								x.rarity = 10;
							}
							break;
						case 'F':
							if (name2 == "FishTestProp")
							{
								x.rarity = 16;
							}
							break;
						case 'E':
							break;
						}
						break;
					case 10:
						switch (name2[0])
						{
						case 'C':
							if (name2 == "ComedyMask")
							{
								x.rarity = 29;
							}
							break;
						case 'G':
							if (name2 == "GarbageLid")
							{
								x.rarity = 9;
							}
							break;
						case 'P':
							if (name2 == "PillBottle")
							{
								x.rarity = 4;
							}
							break;
						case 'R':
							if (name2 == "RubberDuck")
							{
								x.rarity = 16;
							}
							break;
						case 'S':
							if (name2 == "SodaCanRed")
							{
								x.rarity = 26;
							}
							break;
						case 'T':
							if (name2 == "Toothpaste")
							{
								x.rarity = 24;
							}
							break;
						}
						break;
					case 8:
						switch (name2[0])
						{
						case 'D':
							if (name2 == "Dentures")
							{
								x.rarity = 31;
							}
							break;
						case 'R':
							if (name2 == "RobotToy")
							{
								x.rarity = 46;
							}
							break;
						}
						break;
					case 11:
						switch (name2[0])
						{
						case 'E':
							if (name2 == "EnginePart1")
							{
								x.rarity = 3;
							}
							break;
						case 'T':
							if (name2 == "TragedyMask")
							{
								x.rarity = 37;
							}
							break;
						}
						break;
					case 9:
						switch (name2[0])
						{
						case 'F':
							if (name2 == "FancyLamp")
							{
								x.rarity = 49;
							}
							break;
						case 'H':
							if (name2 == "Hairdryer")
							{
								x.rarity = 43;
							}
							break;
						case 'P':
							if (name2 == "PickleJar")
							{
								x.rarity = 9;
							}
							break;
						case 'T':
							if (name2 == "TeaKettle")
							{
								x.rarity = 25;
							}
							break;
						}
						break;
					case 13:
						switch (name2[0])
						{
						case 'F':
							if (name2 == "FancyPainting")
							{
								x.rarity = 50;
							}
							break;
						case 'P':
							if (name2 == "PerfumeBottle")
							{
								x.rarity = 28;
							}
							break;
						}
						break;
					case 7:
						if (name2 == "GiftBox")
						{
							x.rarity = 21;
						}
						break;
					case 15:
						if (name2 == "MagnifyingGlass")
						{
							x.rarity = 35;
						}
						break;
					case 16:
						if (name2 == "ToiletPaperRolls")
						{
							x.rarity = 8;
						}
						break;
					case 14:
						if (name2 == "WhoopieCushion")
						{
							x.rarity = 18;
						}
						break;
					case 6:
						break;
					}
				}
			});
			BlackLabelLevel.level.spawnableScrap.AddRange(new <>z__ReadOnlyArray<SpawnableItemWithRarity>((SpawnableItemWithRarity[])(object)new SpawnableItemWithRarity[9]
			{
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Fan"],
					rarity = 13
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Toaster"],
					rarity = 16
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Briefcase"],
					rarity = 30
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["WineBottle"],
					rarity = 34
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Tophat"],
					rarity = 7
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Bucket"],
					rarity = 3
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Tuba"],
					rarity = 12
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Wallet"],
					rarity = 13
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Boot"],
					rarity = 1
				}
			}));
			BlackLabelLevel.level.maxEnemyPowerCount = 15;
			BlackLabelLevel.level.maxOutsideEnemyPowerCount = 8;
			BlackLabelLevel.level.Enemies.ForEach(delegate(SpawnableEnemyWithRarity x)
			{
				string name = ((Object)x.enemyType).name;
				if (name != null)
				{
					switch (name.Length)
					{
					case 9:
						switch (name[0])
						{
						case 'C':
							if (name == "Centipede")
							{
								x.rarity = 52;
							}
							break;
						case 'D':
							if (name == "DressGirl")
							{
								x.rarity = 18;
							}
							break;
						case 'F':
							if (name == "Flowerman")
							{
								x.rarity = 25;
							}
							break;
						case 'S':
							if (name == "SpringMan")
							{
								x.rarity = 53;
							}
							break;
						}
						break;
					case 10:
						switch (name[0])
						{
						case 'H':
							if (name == "HoarderBug")
							{
								x.rarity = 48;
							}
							break;
						case 'N':
							if (name == "Nutcracker")
							{
								x.rarity = 60;
							}
							break;
						case 'S':
							if (name == "SandSpider")
							{
								x.rarity = 64;
							}
							break;
						}
						break;
					case 6:
						switch (name[0])
						{
						case 'J':
							if (name == "Jester")
							{
								x.rarity = 66;
							}
							break;
						case 'P':
							if (name == "Puffer")
							{
								x.rarity = 16;
							}
							break;
						case 'B':
							if (name == "Butler")
							{
								x.rarity = 100;
							}
							break;
						}
						break;
					case 11:
						switch (name[1])
						{
						case 'l':
							if (name == "ClaySurgeon")
							{
								x.rarity = 34;
							}
							break;
						case 'a':
							if (name == "CaveDweller")
							{
								x.rarity = 6;
							}
							break;
						}
						break;
					case 4:
						if (name == "Blob")
						{
							x.rarity = 39;
						}
						break;
					case 7:
						if (name == "Crawler")
						{
							x.rarity = 48;
						}
						break;
					case 5:
					case 8:
						break;
					}
				}
			});
			BlackLabelLevel.level.OutsideEnemies.ForEach(delegate(SpawnableEnemyWithRarity x)
			{
				switch (((Object)x.enemyType).name)
				{
				case "ForestGiant":
					x.rarity = 31;
					break;
				case "MouthDog":
					x.rarity = 68;
					break;
				case "RadMech":
					x.rarity = 11;
					break;
				case "SandWorm":
					x.rarity = 50;
					break;
				}
			});
			SelectableLevel obj = BlackLabelLevel.level;
			Keyframe[] array = new Keyframe[3];
			Keyframe val = default(Keyframe);
			((Keyframe)(ref val)).time = -7.7369623E-07f;
			((Keyframe)(ref val)).value = -2.8875f;
			((Keyframe)(ref val)).inTangent = float.PositiveInfinity;
			((Keyframe)(ref val)).outTangent = -1.0600616f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0f;
			((Keyframe)(ref val)).outWeight = 0.14093608f;
			array[0] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 0.5432813f;
			((Keyframe)(ref val)).value = 0.055187404f;
			((Keyframe)(ref val)).inTangent = 9.172262f;
			((Keyframe)(ref val)).outTangent = 9.172262f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 1f / 3f;
			((Keyframe)(ref val)).outWeight = 0.71965504f;
			array[1] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 1f;
			((Keyframe)(ref val)).value = 0.055187404f;
			((Keyframe)(ref val)).inTangent = 5.3594007f;
			((Keyframe)(ref val)).outTangent = 16.256857f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0.25347674f;
			((Keyframe)(ref val)).outWeight = 0.48315445f;
			array[2] = val;
			obj.outsideEnemySpawnChanceThroughDay = new AnimationCurve((Keyframe[])(object)array)
			{
				preWrapMode = (WrapMode)2,
				postWrapMode = (WrapMode)2
			};
			SpawnableMapObject obj2 = BlackLabelLevel.level.spawnableMapObjects.First((SpawnableMapObject x) => ((Object)x.prefabToSpawn).name == "Landmine");
			Keyframe[] array2 = new Keyframe[4];
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 0f;
			((Keyframe)(ref val)).value = 0f;
			((Keyframe)(ref val)).inTangent = 0.35461718f;
			((Keyframe)(ref val)).outTangent = 0.35461718f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)2;
			((Keyframe)(ref val)).inWeight = 0f;
			((Keyframe)(ref val)).outWeight = 0.31411442f;
			array2[0] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 0.33f;
			((Keyframe)(ref val)).value = 1.6f;
			((Keyframe)(ref val)).inTangent = 9.622354f;
			((Keyframe)(ref val)).outTangent = 9.622354f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0.3329991f;
			((Keyframe)(ref val)).outWeight = 0.37682974f;
			array2[1] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 0.75f;
			((Keyframe)(ref val)).value = 15.25f;
			((Keyframe)(ref val)).inTangent = 17.336048f;
			((Keyframe)(ref val)).outTangent = 17.336048f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0.3517064f;
			((Keyframe)(ref val)).outWeight = 0.70731705f;
			array2[2] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 1f;
			((Keyframe)(ref val)).value = 35f;
			((Keyframe)(ref val)).inTangent = 2.1870255f;
			((Keyframe)(ref val)).outTangent = 2.1870255f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0.47984266f;
			((Keyframe)(ref val)).outWeight = 0f;
			array2[3] = val;
			obj2.numberToSpawn = new AnimationCurve((Keyframe[])(object)array2)
			{
				preWrapMode = (WrapMode)2,
				postWrapMode = (WrapMode)2
			};
			SpawnableMapObject obj3 = BlackLabelLevel.level.spawnableMapObjects.First((SpawnableMapObject x) => ((Object)x.prefabToSpawn).name == "TurretContainer");
			Keyframe[] array3 = new Keyframe[4];
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 0f;
			((Keyframe)(ref val)).value = 0.25f;
			((Keyframe)(ref val)).inTangent = -0.082629666f;
			((Keyframe)(ref val)).outTangent = -0.082629666f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0f;
			((Keyframe)(ref val)).outWeight = 0.08271725f;
			array3[0] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 0.35f;
			((Keyframe)(ref val)).value = 1.65f;
			((Keyframe)(ref val)).inTangent = 0.84200466f;
			((Keyframe)(ref val)).outTangent = 0.84200466f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0.1623793f;
			((Keyframe)(ref val)).outWeight = 0.11892447f;
			array3[1] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 0.8f;
			((Keyframe)(ref val)).value = 11.25f;
			((Keyframe)(ref val)).inTangent = 5.785181f;
			((Keyframe)(ref val)).outTangent = 5.785181f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0.10231435f;
			((Keyframe)(ref val)).outWeight = 1f / 3f;
			array3[2] = val;
			val = default(Keyframe);
			((Keyframe)(ref val)).time = 1f;
			((Keyframe)(ref val)).value = 18f;
			((Keyframe)(ref val)).inTangent = 4.8281865f;
			((Keyframe)(ref val)).outTangent = 4.8281865f;
			((Keyframe)(ref val)).weightedMode = (WeightedMode)3;
			((Keyframe)(ref val)).inWeight = 0.42531443f;
			((Keyframe)(ref val)).outWeight = 0f;
			array3[3] = val;
			obj3.numberToSpawn = new AnimationCurve((Keyframe[])(object)array3)
			{
				preWrapMode = (WrapMode)2,
				postWrapMode = (WrapMode)2
			};
			BlackLabelLevel.level.dungeonFlowTypes.First((IntWithRarity x) => x.id == GlobalInfo.dungeonIDs["Level3Flow"]).rarity = 27;
		}
	}
	public class EmbrionBlackLabelLevel : BlackLabelLevel
	{
		public EmbrionBlackLabelLevel()
			: base("EmbrionLevel")
		{
		}

		public override void SetupLevel()
		{
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Expected O, but got Unknown
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Expected O, but got Unknown
			//IL_00f0: 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_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Expected O, but got Unknown
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Expected O, but got Unknown
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Expected O, but got Unknown
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Expected O, but got Unknown
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Expected O, but got Unknown
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Expected O, but got Unknown
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Expected O, but got Unknown
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_020e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0217: Expected O, but got Unknown
			//IL_021a: Unknown result type (might be due to invalid IL or missing references)
			//IL_021f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0234: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Expected O, but got Unknown
			//IL_0240: 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_025a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Expected O, but got Unknown
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			//IL_026b: 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_0289: Expected O, but got Unknown
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02af: Expected O, but got Unknown
			//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d5: Expected O, but got Unknown
			//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fa: Expected O, but got Unknown
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0317: Unknown result type (might be due to invalid IL or missing references)
			//IL_031f: Expected O, but got Unknown
			BlackLabelLevel.level.maxScrap = 24;
			BlackLabelLevel.level.spawnableScrap.Remove(BlackLabelLevel.level.spawnableScrap.Find((SpawnableItemWithRarity x) => ((Object)x.spawnableItem).name == "EasterEgg"));
			BlackLabelLevel.level.spawnableScrap.AddRange(new <>z__ReadOnlyArray<SpawnableItemWithRarity>((SpawnableItemWithRarity[])(object)new SpawnableItemWithRarity[19]
			{
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Bell"],
					rarity = 21
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Clock"],
					rarity = 12
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Flask"],
					rarity = 7
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["DustPan"],
					rarity = 12
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["SodaCanRed"],
					rarity = 5
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Mug"],
					rarity = 35
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["ToyTrain"],
					rarity = 2
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["SteeringWheel"],
					rarity = 38
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["GarbageLid"],
					rarity = 29
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Hairdryer"],
					rarity = 11
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["EggBeater"],
					rarity = 23
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["PlasticCup"],
					rarity = 42
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Fan"],
					rarity = 39
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Wallet"],
					rarity = 40
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Bucket"],
					rarity = 54
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Spatula"],
					rarity = 35
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["TrafficCone"],
					rarity = 51
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["GoldenBolt"],
					rarity = 5
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Boot"],
					rarity = 2
				}
			}));
		}
	}
	public class ExperimentationBlackLabelLevel : BlackLabelLevel
	{
		public ExperimentationBlackLabelLevel()
			: base("ExperimentationLevel")
		{
		}

		public override void SetupLevel()
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Expected O, but got Unknown
			//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_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			//IL_0099: 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_00bb: Expected O, but got Unknown
			//IL_00bd: 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_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Expected O, but got Unknown
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Expected O, but got Unknown
			BlackLabelLevel.level.spawnableScrap.Remove(BlackLabelLevel.level.spawnableScrap.Find((SpawnableItemWithRarity x) => ((Object)x.spawnableItem).name == "EasterEgg"));
			BlackLabelLevel.level.spawnableScrap.AddRange(new <>z__ReadOnlyArray<SpawnableItemWithRarity>((SpawnableItemWithRarity[])(object)new SpawnableItemWithRarity[5]
			{
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["TrafficCone"],
					rarity = 8
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Stapler"],
					rarity = 39
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Wallet"],
					rarity = 4
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Bucket"],
					rarity = 19
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Boot"],
					rarity = 1
				}
			}));
		}
	}
	internal class GlobalInfo
	{
		internal static Dictionary<string, SelectableLevel> levels = new Dictionary<string, SelectableLevel>();

		internal static Dictionary<string, Item> items = new Dictionary<string, Item>();

		internal static Dictionary<string, ItemGroup> itemGroups = new Dictionary<string, ItemGroup>();

		internal static Dictionary<string, EnemyType> enemies = new Dictionary<string, EnemyType>();

		internal static Dictionary<string, GameObject> traps = new Dictionary<string, GameObject>();

		internal static Dictionary<string, DungeonFlow> dungeonFlows = new Dictionary<string, DungeonFlow>();

		internal static Dictionary<string, int> dungeonIDs = new Dictionary<string, int>();

		internal static Dictionary<string, LevelAmbienceLibrary> ambienceLibraries = new Dictionary<string, LevelAmbienceLibrary>();

		internal static List<BlackLabelLevel> blackLabelLevels = new List<BlackLabelLevel>();
	}
	public class BlackLabelLevel
	{
		public static SelectableLevel level;

		public BlackLabelLevel(string levelName)
		{
			level = GlobalInfo.levels[levelName];
			SetupLevel();
		}

		public virtual void SetupLevel()
		{
		}
	}
	public class MarchBlackLabelLevel : BlackLabelLevel
	{
		public MarchBlackLabelLevel()
			: base("MarchLevel")
		{
		}

		public override void SetupLevel()
		{
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: 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: Expected O, but got Unknown
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Expected O, but got Unknown
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Expected O, but got Unknown
			//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_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Expected O, but got Unknown
			//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_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Expected O, but got Unknown
			//IL_0121: 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_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Expected O, but got Unknown
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Expected O, but got Unknown
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Expected O, but got Unknown
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Expected O, but got Unknown
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d9: Expected O, but got Unknown
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ff: Expected O, but got Unknown
			//IL_0202: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0224: Expected O, but got Unknown
			//IL_0239: Unknown result type (might be due to invalid IL or missing references)
			//IL_023e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Expected O, but got Unknown
			//IL_0264: Unknown result type (might be due to invalid IL or missing references)
			//IL_0269: Unknown result type (might be due to invalid IL or missing references)
			//IL_027e: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Expected O, but got Unknown
			//IL_028b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c7: Expected O, but got Unknown
			BlackLabelLevel.level.minScrap = 14;
			BlackLabelLevel.level.maxScrap = 17;
			BlackLabelLevel.level.spawnableScrap.Remove(BlackLabelLevel.level.spawnableScrap.Find((SpawnableItemWithRarity x) => ((Object)x.spawnableItem).name == "EasterEgg"));
			BlackLabelLevel.level.spawnableScrap.AddRange(new <>z__ReadOnlyArray<SpawnableItemWithRarity>((SpawnableItemWithRarity[])(object)new SpawnableItemWithRarity[12]
			{
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Bell"],
					rarity = 31
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Phone"],
					rarity = 6
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Brush"],
					rarity = 35
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["DiyFlashbang"],
					rarity = 12
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["RubberDuck"],
					rarity = 24
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["ChemicalJug"],
					rarity = 37
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["EggBeater"],
					rarity = 49
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["PickleJar"],
					rarity = 22
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Toaster"],
					rarity = 37
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Fan"],
					rarity = 19
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Bucket"],
					rarity = 48
				},
				new SpawnableItemWithRarity
				{
					spawnableItem = GlobalInfo.items["Boot"],
					rarity = 1
				}
			}));
			BlackLabelLevel.level.dungeonFlowTypes = new List<IntWithRarity>
			{
				new IntWithRarity
				{
					id = GlobalInfo.dungeonIDs["Level1Flow3Exits"],
					rarity = 300
				},
				new IntWithRarity
				{
					id = GlobalInfo.dungeonIDs["Level2Flow"],
					rarity = 4
				},
				new IntWithRarity
				{
					id = GlobalInfo.dungeonIDs["Level3Flow"],
					rarity = 15,
					overrideLevelAmbience = GlobalInfo.ambienceLibraries["Level1TypeAmbienceMineshaft"]
				}
			}.ToArray();
		}
	}
	public class OffenseBlackLabelLevel : BlackLabelLevel
	{
		public OffenseBlackLabelLevel()
			: base("OffenseLevel")
		{
		}

		public override void SetupLevel()
		{
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Expected O, but got Unknown
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Expected O, but got Unknown
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Expected O, but got Unknown
			//IL_0106: 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_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: 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_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Expected O, but got Unknown
			//IL_014e: Unknown result type (might be due to invalid IL or mis