Decompiled source of WolfoArtifacts v3.5.2

ArtifactDissimilarity.dll

Decompiled 5 hours ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using ArtifactDissimilarity.Aritfacts;
using BepInEx;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.InfiniteTowerSafeWard;
using EntityStates.Seeker;
using HG;
using IL.EntityStates.Seeker;
using IL.RoR2.UI;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using Newtonsoft.Json.Utilities;
using On;
using On.EntityStates.InfiniteTowerSafeWard;
using On.RoR2;
using On.RoR2.Projectile;
using On.RoR2.UI;
using R2API;
using R2API.ScriptableObjects;
using R2API.Utils;
using RoR2;
using RoR2.Artifacts;
using RoR2.CharacterAI;
using RoR2.Navigation;
using RoR2.Networking;
using RoR2.Projectile;
using RoR2.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.UI;
using WolfoLibrary;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("ArtifactDissimilarity")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+6bdcc38ca642ee0d8c15c2029063442d420669c7")]
[assembly: AssemblyProduct("ArtifactDissimilarity")]
[assembly: AssemblyTitle("ArtifactDissimilarity")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace ArtifactDissimilarity
{
	public class Filters
	{
		internal static void Trimmer_DesiredLength(ref DirectorCard[] cards, int requiredCount)
		{
			if (cards.Length > requiredCount)
			{
				DirectorCard[] array = ArrayUtils.Clone<DirectorCard>(cards);
				Util.ShuffleArray<DirectorCard>(array);
				if (array.Length > requiredCount)
				{
					Array.Resize(ref array, requiredCount);
				}
				cards = array;
			}
		}

		internal static void Trimmer_WithCategoryName(string categoryName, int requiredCount, ref DirectorCardCategorySelection dccs)
		{
			for (int i = 0; i < dccs.categories.Length; i++)
			{
				if (string.CompareOrdinal(categoryName, dccs.categories[i].name) == 0)
				{
					Trimmer_DesiredLength(ref dccs.categories[i].cards, requiredCount);
				}
			}
		}

		public static void MixInteractables_Trimmer_Direct(DirectorCardCategorySelection interactableCategories)
		{
			Xoroshiro128Plus stageRngGenerator = Run.instance.stageRngGenerator;
			Trimmer_DesiredLength(ref interactableCategories.categories[0].cards, 6);
			if (Run.instance is InfiniteTowerRun)
			{
				Trimmer_DesiredLength(ref interactableCategories.categories[1].cards, 0);
				Trimmer_DesiredLength(ref interactableCategories.categories[2].cards, stageRngGenerator.RangeInt(2, 4));
				Trimmer_DesiredLength(ref interactableCategories.categories[3].cards, stageRngGenerator.RangeInt(2, 4));
				Dissimilarity.TrimmedmixInteractablesCards.categories[1].selectionWeight = 0f;
				Dissimilarity.TrimmedmixInteractablesCards.categories[2].selectionWeight = Dissimilarity.random.Next(1, 6);
				Dissimilarity.TrimmedmixInteractablesCards.categories[3].selectionWeight = 0f;
			}
			else
			{
				Trimmer_DesiredLength(ref interactableCategories.categories[1].cards, 2);
				Trimmer_DesiredLength(ref interactableCategories.categories[2].cards, stageRngGenerator.RangeInt(2, 5));
				Trimmer_DesiredLength(ref interactableCategories.categories[3].cards, stageRngGenerator.RangeInt(2, 6));
			}
			Trimmer_DesiredLength(ref interactableCategories.categories[4].cards, 1);
			Trimmer_DesiredLength(ref interactableCategories.categories[5].cards, 2);
			if (RunArtifactManager.instance.IsArtifactEnabled(Main.Remodeling_Def))
			{
				interactableCategories.categories[6].selectionWeight /= 2f;
				Trimmer_DesiredLength(ref interactableCategories.categories[6].cards, 3);
			}
			else
			{
				Trimmer_DesiredLength(ref interactableCategories.categories[6].cards, 5);
			}
			Debug.Log((object)"Artifact of Dissimilarity: Generated Trimmed mixInteractables selection");
			if (!WConfig.DebugPrint.Value)
			{
				return;
			}
			string text = "-----------------\n";
			text += "Artifact of Dissimilarity: Trimmed Interactable List\n\n";
			for (int i = 0; i < interactableCategories.categories.Length; i++)
			{
				ref Category reference = ref interactableCategories.categories[i];
				text += $"--{reference.name} wt:{reference.selectionWeight}--";
				for (int num = reference.cards.Length - 1; num >= 0; num--)
				{
					text += ((Object)reference.cards[num].GetSpawnCard().prefab).name;
					text += "\n";
				}
			}
			text += "-----------------";
			Debug.Log((object)text);
		}

		public static void SingleInteractable_Trimmer(DirectorCardCategorySelection interactableCategories)
		{
			Category[] categories = interactableCategories.categories;
			for (int i = 0; i < categories.Length; i++)
			{
				Trimmer_DesiredLength(ref categories[i].cards, 1);
			}
			Debug.Log((object)"Artifact of Kith: Generated Trimmed SingleInteractable selection");
			if (!WConfig.DebugPrint.Value)
			{
				return;
			}
			string text = "-----------------\n";
			text += "Artifact of Kith: Trimmed Interactable List\n";
			for (int j = 0; j < interactableCategories.categories.Length - 1; j++)
			{
				ref Category reference = ref interactableCategories.categories[j];
				for (int num = reference.cards.Length - 1; num >= 0; num--)
				{
					text += ((Object)reference.cards[num].GetSpawnCard().prefab).name;
					text += "\n";
				}
			}
			text += "-----------------";
			Debug.Log((object)text);
		}

		public static bool NoMoreRadioTower(DirectorCard card)
		{
			GameObject prefab = card.GetSpawnCard().prefab;
			if (Object.op_Implicit((Object)(object)prefab.GetComponent<RadiotowerTerminal>()) || card.selectionWeight == 0)
			{
				return false;
			}
			card.selectionWeight = 1;
			return true;
		}

		public static bool SimulacrumTrimmer(DirectorCard card)
		{
			GameObject prefab = card.GetSpawnCard().prefab;
			return !(Object.op_Implicit((Object)(object)prefab.GetComponent<ShrineCombatBehavior>()) | Object.op_Implicit((Object)(object)prefab.GetComponent<OutsideInteractableLocker>()));
		}

		public static bool TestingPrintCardResults(DirectorCard card)
		{
			Debug.Log((object)card.GetSpawnCard());
			return true;
		}

		public static bool RemoveMinimumStageCompletionTrimmer(DirectorCard card)
		{
			if (card.minimumStageCompletions <= 3)
			{
				card.minimumStageCompletions = 1;
			}
			else if (card.minimumStageCompletions >= 4)
			{
				card.minimumStageCompletions = 2;
			}
			return true;
		}

		public static bool Kith_DoNotRepeatLunarEquipmentOnly(DirectorCard card)
		{
			return !Kith.blacklistedForRepeat.Contains(card.GetSpawnCard());
		}

		public static bool NoMoreScrapper(DirectorCard card)
		{
			GameObject prefab = card.GetSpawnCard().prefab;
			return !Object.op_Implicit((Object)(object)prefab.GetComponent<ScrapperController>());
		}

		public static bool NoMorePrinters(DirectorCard card)
		{
			GameObject prefab = card.GetSpawnCard().prefab;
			return !((Object)prefab).name.StartsWith("Duplicator");
		}

		public static bool ArtifactWorldPredicate(DirectorCard card)
		{
			GameObject prefab = card.GetSpawnCard().prefab;
			return !(((Object)prefab).name.Equals("DuplicatorWild") | Object.op_Implicit((Object)(object)prefab.GetComponent<OutsideInteractableLocker>()) | Object.op_Implicit((Object)(object)prefab.GetComponent<ShrineCombatBehavior>()) | Object.op_Implicit((Object)(object)prefab.GetComponent<ScrapperController>()));
		}

		public static bool RemoveInteractablesThatNeedTeleporter(DirectorCard card)
		{
			GameObject prefab = card.GetSpawnCard().prefab;
			return !(Object.op_Implicit((Object)(object)prefab.GetComponent<ShrineBossBehavior>()) | Object.op_Implicit((Object)(object)prefab.GetComponent<PortalStatueBehavior>()) | Object.op_Implicit((Object)(object)prefab.GetComponent<SeerStationController>()));
		}

		public static void Mix_ApplyCardRemovingFilters(DirectorCardCategorySelection DCCSInput)
		{
			if (Run.instance is InfiniteTowerRun)
			{
				DCCSInput.RemoveCardsThatFailFilter((Predicate<DirectorCard>)RemoveInteractablesThatNeedTeleporter);
				DCCSInput.RemoveCardsThatFailFilter((Predicate<DirectorCard>)SimulacrumTrimmer);
			}
			else if (Object.op_Implicit((Object)(object)SceneInfo.instance))
			{
				if (SceneInfo.instance.sceneDef.baseSceneName.StartsWith("artifactworld"))
				{
					DCCSInput.RemoveCardsThatFailFilter((Predicate<DirectorCard>)RemoveInteractablesThatNeedTeleporter);
					DCCSInput.RemoveCardsThatFailFilter((Predicate<DirectorCard>)ArtifactWorldPredicate);
				}
				else if (SceneInfo.instance.sceneDef.baseSceneName == "voidstage")
				{
					DCCSInput.RemoveCardsThatFailFilter((Predicate<DirectorCard>)RemoveInteractablesThatNeedTeleporter);
				}
			}
		}

		public static void ApplySandSnow(DirectorCardCategorySelection DCCSInput)
		{
			//IL_038c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0391: Unknown result type (might be due to invalid IL or missing references)
			//IL_036c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0400: Unknown result type (might be due to invalid IL or missing references)
			//IL_0405: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b82: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bdc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bba: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bbf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c16: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0798: Unknown result type (might be due to invalid IL or missing references)
			//IL_079d: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07da: Unknown result type (might be due to invalid IL or missing references)
			//IL_082c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0831: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf9: Unknown result type (might be due to invalid IL or missing references)
			//IL_080f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0814: Unknown result type (might be due to invalid IL or missing references)
			string baseSceneName = SceneInfo.instance.sceneDef.baseSceneName;
			switch (baseSceneName)
			{
			default:
				if (!(baseSceneName == "nest"))
				{
					switch (baseSceneName)
					{
					default:
						if (!(baseSceneName == "repurposedcrater"))
						{
							DirectorCard[] cards = DCCSInput.categories[2].cards;
							foreach (DirectorCard val in cards)
							{
								switch (((Object)val.GetSpawnCard()).name)
								{
								case "iscShrineBlood":
								case "iscShrineBloodSnowy":
								case "iscShrineBloodSandy":
									val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBlood/iscShrineBlood.asset").WaitForCompletion();
									break;
								case "iscShrineBoss":
								case "iscShrineBossSnowy":
								case "iscShrineBossSandy":
									val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBoss/iscShrineBoss.asset").WaitForCompletion();
									break;
								case "iscShrineChance":
								case "iscShrineChanceSnowy":
								case "iscShrineChanceSandy":
									val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineChance/iscShrineChance.asset").WaitForCompletion();
									break;
								case "iscShrineCleanse":
								case "iscShrineCleanseSnowy":
								case "iscShrineCleanseSandy":
									val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCleanse/iscShrineCleanse.asset").WaitForCompletion();
									break;
								case "iscShrineCombat":
								case "iscShrineCombatSnowy":
								case "iscShrineCombatSandy":
									val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCombat/iscShrineCombat.asset").WaitForCompletion();
									break;
								case "iscShrineRestack":
								case "iscShrineRestackSnowy":
								case "iscShrineRestackSandy":
									val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineRestack/iscShrineRestack.asset").WaitForCompletion();
									break;
								}
							}
							break;
						}
						goto case "goolake";
					case "goolake":
					case "itgoolake":
					case "ironalluvium":
					case "ironalluvium2":
					{
						DirectorCard[] cards2 = DCCSInput.categories[2].cards;
						foreach (DirectorCard val2 in cards2)
						{
							switch (((Object)val2.GetSpawnCard()).name)
							{
							case "iscShrineBlood":
							case "iscShrineBloodSnowy":
							case "iscShrineBloodSandy":
								val2.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBlood/iscShrineBloodSandy.asset").WaitForCompletion();
								break;
							case "iscShrineBoss":
							case "iscShrineBossSnowy":
							case "iscShrineBossSandy":
								val2.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBoss/iscShrineBossSandy.asset").WaitForCompletion();
								break;
							case "iscShrineChance":
							case "iscShrineChanceSnowy":
							case "iscShrineChanceSandy":
								val2.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineChance/iscShrineChanceSandy.asset").WaitForCompletion();
								break;
							case "iscShrineCleanse":
							case "iscShrineCleanseSnowy":
							case "iscShrineCleanseSandy":
								val2.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCleanse/iscShrineCleanseSandy.asset").WaitForCompletion();
								break;
							case "iscShrineCombat":
							case "iscShrineCombatSnowy":
							case "iscShrineCombatSandy":
								val2.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCombat/iscShrineCombatSandy.asset").WaitForCompletion();
								break;
							case "iscShrineRestack":
							case "iscShrineRestackSnowy":
							case "iscShrineRestackSandy":
								val2.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineRestack/iscShrineRestackSandy.asset").WaitForCompletion();
								break;
							}
						}
						break;
					}
					}
					break;
				}
				goto case "snowyforest";
			case "snowyforest":
			case "frozenwall":
			case "itfrozenwall":
			{
				DirectorCard[] cards3 = DCCSInput.categories[2].cards;
				foreach (DirectorCard val3 in cards3)
				{
					switch (((Object)val3.GetSpawnCard()).name)
					{
					case "iscShrineBlood":
					case "iscShrineBloodSnowy":
					case "iscShrineBloodSandy":
						val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBlood/iscShrineBloodSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineBoss":
					case "iscShrineBossSnowy":
					case "iscShrineBossSandy":
						val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBoss/iscShrineBossSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineChance":
					case "iscShrineChanceSnowy":
					case "iscShrineChanceSandy":
						val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineChance/iscShrineChanceSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineCleanse":
					case "iscShrineCleanseSnowy":
					case "iscShrineCleanseSandy":
						val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCleanse/iscShrineCleanseSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineCombat":
					case "iscShrineCombatSnowy":
					case "iscShrineCombatSandy":
						val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCombat/iscShrineCombatSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineRestack":
					case "iscShrineRestackSnowy":
					case "iscShrineRestackSandy":
						val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineRestack/iscShrineRestackSnowy.asset").WaitForCompletion();
						break;
					}
				}
				break;
			}
			}
		}
	}
	public class DissimWander_LunarSeer
	{
		public static List<SceneDef> scenesSeerDestinations;

		public unsafe static void PopulateSeerList()
		{
			//IL_00c7: 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_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)Run.instance) || scenesSeerDestinations.Count > 13)
			{
				return;
			}
			for (int i = 0; i < scenesSeerDestinations.Count; i++)
			{
				if (Run.instance.CanPickStage(scenesSeerDestinations[i]))
				{
					scenesSeerDestinations.Remove(scenesSeerDestinations[i]);
				}
			}
			for (int j = 0; j < SceneCatalog.allStageSceneDefs.Length; j++)
			{
				if (ValidStageForSeer((SceneDef)Unsafe.Read<object>((void*)SceneCatalog.allStageSceneDefs[j])))
				{
					scenesSeerDestinations.Add((SceneDef)Unsafe.Read<object>((void*)SceneCatalog.allStageSceneDefs[j]));
				}
			}
		}

		public static bool ValidStageForSeer(SceneDef sceneDef)
		{
			if (!Run.instance.CanPickStage(sceneDef))
			{
				return false;
			}
			return sceneDef.hasAnyDestinations && sceneDef.validForRandomSelection;
		}

		public static void Start()
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			MakeSeerMaterials();
			SeerStationController.OnStartClient += new hook_OnStartClient(SeerDestinationRandomizerDissimWander);
			SeerStationController.SetRunNextStageToTarget += new hook_SetRunNextStageToTarget(SeerStationController_SetRunNextStageToTarget);
		}

		private static void SeerStationController_SetRunNextStageToTarget(orig_SetRunNextStageToTarget orig, SeerStationController self)
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Expected O, but got Unknown
			orig.Invoke(self);
			if (Object.op_Implicit((Object)(object)self.explicitTargetSceneExitController) && ((Object)self.explicitTargetSceneExitController).name.StartsWith("LunarTeleporter"))
			{
				Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
				{
					baseToken = "LUNAR_TELEPORTER_ALIGN_DREAM"
				});
			}
		}

		public static void MakeSeerMaterials()
		{
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_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_00d1: 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_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: 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_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			SceneDef val = LegacyResourcesAPI.Load<SceneDef>("scenedefs/golemplains");
			SceneDef val2 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/goolake");
			SceneDef val3 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/frozenwall");
			SceneDef val4 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/dampcavesimple");
			SceneDef val5 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/skymeadow");
			SceneDef val6 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/moon2");
			SceneDef item = LegacyResourcesAPI.Load<SceneDef>("scenedefs/goldshores");
			SceneDef val7 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/arena");
			SceneDef val8 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/artifactworld");
			SceneDef val9 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/bazaar");
			SceneDef val10 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/limbo");
			SceneDef val11 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/mysteryspace");
			SceneDef val12 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/ancientloft/ancientloft.asset").WaitForCompletion();
			SceneDef item2 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/voidstage/voidstage.asset").WaitForCompletion();
			SceneDef val13 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/voidraid/voidraid.asset").WaitForCompletion();
			SceneDef val14 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC2/meridian/meridian.asset").WaitForCompletion();
			SceneDef val15 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC2/artifactworld01/artifactworld01.asset").WaitForCompletion();
			SceneDef val16 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC2/artifactworld02/artifactworld02.asset").WaitForCompletion();
			SceneDef val17 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC2/artifactworld03/artifactworld03.asset").WaitForCompletion();
			scenesSeerDestinations = new List<SceneDef> { val15, val16, val17, val6, item, val7, val11, val8, item2, val14 };
			Material val18 = Object.Instantiate<Material>(val.portalMaterial);
			Material val19 = Object.Instantiate<Material>(val.portalMaterial);
			Material val20 = Object.Instantiate<Material>(val.portalMaterial);
			Material val21 = Object.Instantiate<Material>(val.portalMaterial);
			Material val22 = Object.Instantiate<Material>(val.portalMaterial);
			Material val23 = Object.Instantiate<Material>(val.portalMaterial);
			Material val24 = Object.Instantiate<Material>(val.portalMaterial);
			val6.portalMaterial.SetFloat("_Boost", 1f);
			val6.portalMaterial.mainTextureScale = new Vector2(1f, 0.5f);
			val14.portalMaterial.SetFloat("_Boost", 1f);
			val18.mainTexture = val7.previewTexture;
			val7.portalMaterial = val18;
			val7.portalSelectionMessageString = "BAZAAR_SEER_ARENA";
			val19.mainTexture = val8.previewTexture;
			val8.portalMaterial = val19;
			val15.portalSelectionMessageString = "BAZAAR_SEER_ARTIFACTWORLD";
			val16.portalSelectionMessageString = "BAZAAR_SEER_ARTIFACTWORLD";
			val17.portalSelectionMessageString = "BAZAAR_SEER_ARTIFACTWORLD";
			val20.mainTexture = val9.previewTexture;
			val9.portalMaterial = val20;
			val9.portalSelectionMessageString = "BAZAAR_SEER_SHOP";
			val21.mainTexture = val10.previewTexture;
			val10.portalMaterial = val21;
			val10.portalSelectionMessageString = "BAZAAR_SEER_LIMBO";
			val22.mainTexture = val11.previewTexture;
			val11.portalMaterial = val22;
			val11.portalSelectionMessageString = "BAZAAR_SEER_MS";
			val24.mainTexture = val13.previewTexture;
			val13.portalMaterial = val24;
			val13.portalSelectionMessageString = "BAZAAR_SEER_VOIDLING";
		}

		public static void SeerDestinationRandomizerDissimWander(orig_OnStartClient orig, SeerStationController self)
		{
			orig.Invoke(self);
			if (NetworkServer.active && (RunArtifactManager.instance.IsArtifactEnabled(Main.Wander_Def) || (RunArtifactManager.instance.IsArtifactEnabled(Main.Dissimilarity_Def) && (Object)(object)BazaarController.instance == (Object)null)))
			{
				if (Object.op_Implicit((Object)(object)TeleporterInteraction.instance))
				{
					self.explicitTargetSceneExitController = TeleporterInteraction.instance.sceneExitController;
				}
				int index = Run.instance.nextStageRng.RangeInt(0, scenesSeerDestinations.Count);
				self.SetTargetScene(scenesSeerDestinations[index]);
				if (WConfig.DebugPrint.Value)
				{
					Debug.Log((object)("Lunar Seer going to " + ((object)scenesSeerDestinations[index])?.ToString() + " spawned"));
				}
				((Component)self).gameObject.GetComponent<PurchaseInteraction>().SetAvailable(true);
			}
		}

		public static void WanderNoRepeatStages(orig_PickNextStageScene orig, Run self, WeightedSelection<SceneDef> choices)
		{
			orig.Invoke(self, choices);
			Debug.Log((object)"Wander : Pick next Stage");
			if (Object.op_Implicit((Object)(object)Stage.instance) && (Object)(object)self.nextStageScene == (Object)(object)Stage.instance.sceneDef)
			{
				Debug.Log((object)"Wander : Preventing same stage twice in a row");
				do
				{
					orig.Invoke(self, choices);
				}
				while ((Object)(object)self.nextStageScene == (Object)(object)Stage.instance.sceneDef);
			}
			if (Object.op_Implicit((Object)(object)self.nextStageScene.requiredExpansion) && !self.IsExpansionEnabled(self.nextStageScene.requiredExpansion))
			{
				Debug.Log((object)"Wander : Preventing dlc stage without required dlc");
				do
				{
					orig.Invoke(self, choices);
				}
				while (self.IsExpansionEnabled(self.nextStageScene.requiredExpansion));
			}
		}
	}
	internal static class Assets
	{
		public static AssetBundle Bundle;

		public static PluginInfo PluginInfo;

		public static string Folder = "Artifacts\\";

		internal static string assemblyDir => Path.GetDirectoryName(PluginInfo.Location);

		internal static void Init(PluginInfo info)
		{
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Expected O, but got Unknown
			PluginInfo = info;
			if (!Directory.Exists(GetPathToFile(Folder)))
			{
				Folder = "";
			}
			if (Directory.Exists(GetPathToFile(Folder + "Languages")))
			{
				Language.SetFolders += new hook_SetFolders(SetFolders);
			}
			else
			{
				Debug.LogWarning((object)"COULD NOT FIND LANGUAGES FOLDER");
			}
			if (Directory.Exists(GetPathToFile(Folder + "AssetBundles")))
			{
				Bundle = AssetBundle.LoadFromFile(GetPathToFile(Folder + "AssetBundles", "artifacts_new"));
			}
			else
			{
				Debug.LogWarning((object)"COULD NOT FIND ASSETBUNDLES FOLDER");
			}
		}

		private static void SetFolders(orig_SetFolders orig, Language self, IEnumerable<string> newFolders)
		{
			IEnumerable<string> second = Directory.EnumerateDirectories(Path.Combine(GetPathToFile(Folder + "Languages")), self.name);
			orig.Invoke(self, newFolders.Union(second));
		}

		internal static string GetPathToFile(string folderName)
		{
			return Path.Combine(assemblyDir, folderName);
		}

		internal static string GetPathToFile(string folderName, string fileName)
		{
			return Path.Combine(assemblyDir, folderName, fileName);
		}
	}
	public class WConfig
	{
		public static ConfigEntry<bool> EnableDissim;

		public static ConfigEntry<bool> EnableKith;

		public static ConfigEntry<bool> EnableWanderArtifact;

		public static ConfigEntry<bool> EnableRemodelArtifact;

		public static ConfigEntry<bool> EnableSpiritualArtifact;

		public static ConfigEntry<bool> EnableBrigadeArtifact;

		public static ConfigEntry<bool> EnableTransposeArtifact;

		public static ConfigEntry<bool> EnableUnisonArtifact;

		public static ConfigEntry<bool> Enable_Flamboyance_Artifact;

		public static ConfigEntry<bool> Enable_Doubles_Artifact;

		public static ConfigEntry<bool> DebugPrint;

		public static ConfigEntry<bool> KithNoMinimumStageCompletion;

		public static ConfigEntry<bool> RemodelRerollOutOfScrap;

		public static ConfigEntry<bool> RemodelRerollMonsterItems;

		public static ConfigEntry<bool> RemodelRerollEquipmentDrones;

		public static ConfigEntry<bool> RemodelRerollDevotion;

		public static ConfigEntry<bool> TransposeRerollHeresy;

		public static ConfigEntry<bool> UnisonDisablePrinters;

		internal static void InitConfig()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			ConfigFile val = new ConfigFile(Paths.ConfigPath + "\\Wolfo.Wolfo_Artifacts.cfg", true);
			EnableDissim = val.Bind<bool>(": Main :", "Enable Artifact of Dissimilarity", true, "Artifact of Dissonance for Interactables");
			EnableKith = val.Bind<bool>(": Main :", "Enable Artifact of Kith", true, "Artifact of Kin for Interactables. One per interactable category");
			EnableWanderArtifact = val.Bind<bool>(": Main :", "Enable Artifact of Wander", true, "Stages progress in a random order.");
			EnableRemodelArtifact = val.Bind<bool>(": Main :", "Enable Artifact of Remodelling", true, "Reroll all items and equipment on stage change");
			EnableSpiritualArtifact = val.Bind<bool>(": Main :", "Enable Artifact of Spiriting", true, "RoR1 Spirit inspired, affects more stats");
			EnableBrigadeArtifact = val.Bind<bool>(": Main :", "Enable Artifact of Brigade", true, "Artifact of Kin but for Elite Types");
			EnableTransposeArtifact = val.Bind<bool>(": Main :", "Enable Artifact of Transpose", true, "Get a random skill loadout every stage");
			EnableUnisonArtifact = val.Bind<bool>(": Main :", "Enable Artifact of Unison", true, "One item per tier");
			Enable_Flamboyance_Artifact = val.Bind<bool>(": Main :", "Enable Artifact of Flamboyance", true, "Items may be rerolled into a random one of any tier");
			Enable_Doubles_Artifact = val.Bind<bool>(": Main :", "Enable Artifact of Doubles", true, "Players control 2 survivors or sometimes more.");
			KithNoMinimumStageCompletion = val.Bind<bool>("Kith", "Remove the minimum stage completion of vanilla interactables", true, "Normally certain interactables can only spawn after a certain stage, this doesn't prevent them from being chosen with Kith. Making it so they can always spawn might make the early game more varied.");
			TransposeRerollHeresy = val.Bind<bool>("Transpose", "Reroll Heresy items", false, "Should Transpose reroll Heresy items into other heresy items");
			RemodelRerollOutOfScrap = val.Bind<bool>("Remodeling", "Reroll out of Scrap", true, "If enabled, Scrap will be rerolled into a regular items\nThis allows you to quickly get a high stack of something (ie Scrap all Reds if you want 1 high stack instead of multiple small stacks).\nBut makes it so you can't take Scrap to Bazaar/Moon Cauldrons.");
			RemodelRerollMonsterItems = val.Bind<bool>("Remodeling", "Reroll Monster Teams Inventory", true, "Reroll the items that Artifact of Evolution gives.");
			RemodelRerollEquipmentDrones = val.Bind<bool>("Remodeling", "Reroll Equipment Drone Equipments", true, "Whether or not their Equipment should also be rerolled");
			RemodelRerollDevotion = val.Bind<bool>("Remodeling", "Reroll Devotion Items", true, "Should Devotion inventory be rerolled.");
			DebugPrint = val.Bind<bool>(": Main :", "Print Debug Info in console", false, "Full list of interactables possible on current stage Dissim/Kith");
		}
	}
	public class Defs
	{
	}
	public static class ArrayUtil
	{
		public static T[] Add<T>(this T[] array, params T[] items)
		{
			return (array ?? Enumerable.Empty<T>()).Concat(items).ToArray();
		}

		public static T[] Remove<T>(this T[] array, params T[] items)
		{
			return (array ?? Enumerable.Empty<T>()).Except(items).ToArray();
		}
	}
	public class Blank
	{
		public static void OnArtifactEnable()
		{
		}

		public static void OnArtifactDisable()
		{
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.Wolfo.WolfoArtifacts", "WolfoArtifacts", "3.5.0")]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	public class Main : BaseUnityPlugin
	{
		[CompilerGenerated]
		private sealed class <DelayedRespawn>d__15 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public PlayerCharacterMasterController playerCharacterMasterController;

			public float delay;

			private CharacterBody <temp>5__1;

			private Vector3 <vector>5__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <DelayedRespawn>d__15(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<temp>5__1 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Expected O, but got Unknown
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(delay);
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<temp>5__1 = playerCharacterMasterController.master.GetBody();
					if (Object.op_Implicit((Object)(object)<temp>5__1))
					{
						<vector>5__2 = <temp>5__1.footPosition;
						playerCharacterMasterController.master.Respawn(<vector>5__2, Quaternion.Euler(0f, Random.Range(0f, 360f), 0f), false);
					}
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		public static readonly Random random = new Random();

		public static ArtifactDef Dissimilarity_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Kith_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Wander_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Remodeling_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Spiriting_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Brigade_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Transpose_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Unison_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Obscurity_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Flamboyance_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public static ArtifactDef Doubles_Def = ScriptableObject.CreateInstance<ArtifactDef>();

		public void Awake()
		{
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Expected O, but got Unknown
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Expected O, but got Unknown
			//IL_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Expected O, but got Unknown
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: 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
			Assets.Init(((BaseUnityPlugin)this).Info);
			WConfig.InitConfig();
			ArtifactAdded();
			Spiriting.Start();
			Dissimilarity.Start();
			DissimWander_LunarSeer.Start();
			Kith.Start();
			Doubles.Start();
			Flamboyance.Start();
			((ResourceAvailability)(ref GameModeCatalog.availability)).CallWhenAvailable((Action)ModSupport);
			RunArtifactManager.onArtifactEnabledGlobal += new ArtifactStateChangeDelegate(RunArtifactManager_onEnabledArtifactGlobal);
			RunArtifactManager.onArtifactDisabledGlobal += new ArtifactStateChangeDelegate(RunArtifactManager_onDisableArtifactGlobal);
			ChatMessageBase.chatMessageTypeToIndex.Add(typeof(Brigade.BrigadeMessage), (byte)ChatMessageBase.chatMessageIndexToType.Count);
			ChatMessageBase.chatMessageIndexToType.Add(typeof(Brigade.BrigadeMessage));
			LegacyResourcesAPI.Load<GameObject>("Prefabs/networkedobjects/LunarCauldron, WhiteToGreen").GetComponent<ShopTerminalBehavior>().dropTable = (PickupDropTable)(object)LegacyResourcesAPI.Load<BasicPickupDropTable>("DropTables/dtDuplicatorTier2");
			LegacyResourcesAPI.Load<GameObject>("Prefabs/networkedobjects/LunarCauldron, GreenToRed Variant").GetComponent<ShopTerminalBehavior>().dropTable = (PickupDropTable)(object)LegacyResourcesAPI.Load<BasicPickupDropTable>("DropTables/dtDuplicatorTier3");
			LegacyResourcesAPI.Load<GameObject>("Prefabs/networkedobjects/LunarCauldron, RedToWhite Variant").GetComponent<ShopTerminalBehavior>().dropTable = (PickupDropTable)(object)LegacyResourcesAPI.Load<BasicPickupDropTable>("DropTables/dtDuplicatorTier1");
			Stage.Start += new hook_Start(StageStartMethod);
			Run.Start += new hook_Start(RunStartHook);
			Run.OnDisable += new hook_OnDisable(WanderEnder);
			InfiniteTowerRun.OverrideRuleChoices += new hook_OverrideRuleChoices(InfiniteTowerRun_OverrideRuleChoices);
		}

		private void InfiniteTowerRun_OverrideRuleChoices(orig_OverrideRuleChoices orig, InfiniteTowerRun self, RuleChoiceMask mustInclude, RuleChoiceMask mustExclude, ulong runSeed)
		{
			orig.Invoke(self, mustInclude, mustExclude, runSeed);
			((Run)self).ForceChoice(mustInclude, mustExclude, RuleCatalog.FindRuleDef("Artifacts." + Wander_Def.cachedName).FindChoice("Off"));
		}

		public static void RunStartHook(orig_Start orig, Run self)
		{
			if (NetworkServer.active && Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(Wander_Def))
			{
				Wander.WanderSetup(isEnable: true);
			}
			orig.Invoke(self);
		}

		[IteratorStateMachine(typeof(<DelayedRespawn>d__15))]
		public static IEnumerator DelayedRespawn(PlayerCharacterMasterController playerCharacterMasterController, float delay)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <DelayedRespawn>d__15(0)
			{
				playerCharacterMasterController = playerCharacterMasterController,
				delay = delay
			};
		}

		public static void WanderEnder(orig_OnDisable orig, Run self)
		{
			if (Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(Wander_Def))
			{
				Wander.WanderSetup(isEnable: false);
			}
			orig.Invoke(self);
		}

		public static IEnumerator StageStartMethod(orig_Start orig, Stage self)
		{
			if (NetworkServer.active)
			{
				ArtifactTrialMissionController.trialArtifact = ArtifactCatalog.GetArtifactDef((ArtifactIndex)random.Next(ArtifactCatalog.artifactCount));
			}
			return orig.Invoke(self);
		}

		public static void ArtifactAdded()
		{
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_0298: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_037e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0383: Unknown result type (might be due to invalid IL or missing references)
			//IL_038d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0392: Unknown result type (might be due to invalid IL or missing references)
			//IL_039c: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0469: Unknown result type (might be due to invalid IL or missing references)
			//IL_046e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0478: Unknown result type (might be due to invalid IL or missing references)
			//IL_047d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0487: Unknown result type (might be due to invalid IL or missing references)
			//IL_048c: Unknown result type (might be due to invalid IL or missing references)
			UnlockableDef val = ScriptableObject.CreateInstance<UnlockableDef>();
			val.cachedName = "NoMoreArtifact";
			Dissimilarity_Def.cachedName = "MixInteractable";
			Dissimilarity_Def.nameToken = "ARTIFACT_MIX_INTERACTABLE_NAME";
			Dissimilarity_Def.descriptionToken = "ARTIFACT_MIX_INTERACTABLE_DESC";
			Dissimilarity_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Dissimilarity_On.png");
			Dissimilarity_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Dissimilarity_Off.png");
			Dissimilarity_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/MixEnemy").pickupModelReference;
			ContentAddition.AddArtifactDef(Dissimilarity_Def);
			if (!WConfig.EnableDissim.Value)
			{
				Dissimilarity_Def.unlockableDef = val;
			}
			else
			{
				ArtifactCode val2 = ScriptableObject.CreateInstance<ArtifactCode>();
				val2.topRow = new Vector3Int(1, 1, 5);
				val2.topRow = new Vector3Int(1, 1, 1);
				val2.topRow = new Vector3Int(5, 1, 1);
				ArtifactCodeAPI.AddCode(Dissimilarity_Def, val2);
			}
			Kith_Def.cachedName = "SingleInteractablePerCategory";
			Kith_Def.nameToken = "ARTIFACT_SINGLE_INTERACTABLE_NAME";
			Kith_Def.descriptionToken = "ARTIFACT_SINGLE_INTERACTABLE_DESC";
			Kith_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Kith_On.png");
			Kith_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Kith_Off.png");
			Kith_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/SingleMonsterType").pickupModelReference;
			ContentAddition.AddArtifactDef(Kith_Def);
			if (!WConfig.EnableKith.Value)
			{
				Kith_Def.unlockableDef = val;
			}
			else
			{
				ArtifactCode val3 = ScriptableObject.CreateInstance<ArtifactCode>();
				val3.topRow = new Vector3Int(3, 5, 3);
				val3.topRow = new Vector3Int(3, 5, 3);
				val3.topRow = new Vector3Int(1, 1, 1);
				ArtifactCodeAPI.AddCode(Kith_Def, val3);
			}
			Wander_Def.cachedName = "MeanderStageOrder";
			Wander_Def.nameToken = "ARTIFACT_RANDOM_STAGEORDER_NAME";
			Wander_Def.descriptionToken = "ARTIFACT_RANDOM_STAGEORDER_DESC";
			Wander_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Wander_On.png");
			Wander_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Wander_Off.png");
			Wander_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/Enigma").pickupModelReference;
			ContentAddition.AddArtifactDef(Wander_Def);
			if (!WConfig.EnableWanderArtifact.Value)
			{
				Wander_Def.unlockableDef = val;
			}
			else
			{
				ArtifactCode val4 = ScriptableObject.CreateInstance<ArtifactCode>();
				val4.topRow = new Vector3Int(3, 7, 3);
				val4.topRow = new Vector3Int(7, 7, 7);
				val4.topRow = new Vector3Int(3, 7, 3);
				ArtifactCodeAPI.AddCode(Wander_Def, val4);
			}
			Remodeling_Def.cachedName = "RerollItemsAndEquipments";
			Remodeling_Def.nameToken = "ARTIFACT_REROLL_ITEMS_NAME";
			Remodeling_Def.descriptionToken = "ARTIFACT_REROLL_ITEMS_DESC";
			Remodeling_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Remodeling_On.png");
			Remodeling_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Remodeling_Off.png");
			Remodeling_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/RandomSurvivorOnRespawn").pickupModelReference;
			ContentAddition.AddArtifactDef(Remodeling_Def);
			if (!WConfig.EnableRemodelArtifact.Value)
			{
				Remodeling_Def.unlockableDef = val;
			}
			else
			{
				ArtifactCode val5 = ScriptableObject.CreateInstance<ArtifactCode>();
				val5.topRow = new Vector3Int(1, 7, 1);
				val5.topRow = new Vector3Int(1, 5, 1);
				val5.topRow = new Vector3Int(1, 7, 1);
				ArtifactCodeAPI.AddCode(Remodeling_Def, val5);
			}
			Spiriting_Def.cachedName = "StatsOnLowHealth";
			Spiriting_Def.nameToken = "ARTIFACT_SPEED_ONLOWHEALTH_NAME";
			Spiriting_Def.descriptionToken = "ARTIFACT_SPEED_ONLOWHEALTH_DESC";
			Spiriting_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Spiriting_On.png");
			Spiriting_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Spiriting_Off.png");
			Spiriting_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/TeamDeath").pickupModelReference;
			ContentAddition.AddArtifactDef(Spiriting_Def);
			if (!WConfig.EnableSpiritualArtifact.Value)
			{
				Spiriting_Def.unlockableDef = val;
			}
			else
			{
				ArtifactCode val6 = ScriptableObject.CreateInstance<ArtifactCode>();
				val6.topRow = new Vector3Int(5, 3, 5);
				val6.topRow = new Vector3Int(1, 3, 1);
				val6.topRow = new Vector3Int(5, 3, 5);
				ArtifactCodeAPI.AddCode(Spiriting_Def, val6);
			}
			Brigade_Def.cachedName = "SingleEliteType";
			Brigade_Def.nameToken = "ARTIFACT_SINGLE_ELITE_NAME";
			Brigade_Def.descriptionToken = "ARTIFACT_SINGLE_ELITE_DESC";
			Brigade_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Briaged_On.png");
			Brigade_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Briaged_Off.png");
			Brigade_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/MonsterTeamGainsItems").pickupModelReference;
			ContentAddition.AddArtifactDef(Brigade_Def);
			if (!WConfig.EnableBrigadeArtifact.Value)
			{
				Brigade_Def.unlockableDef = val;
			}
			Transpose_Def.cachedName = "RandomLoadoutOnRespawn";
			Transpose_Def.nameToken = "ARTIFACT_REROLL_SKILLS_NAME";
			Transpose_Def.descriptionToken = "ARTIFACT_REROLL_SKILLS_DESC";
			Transpose_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Transpose_On.png");
			Transpose_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Transpose_Off.png");
			Transpose_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/RandomSurvivorOnRespawn").pickupModelReference;
			ContentAddition.AddArtifactDef(Transpose_Def);
			if (!WConfig.EnableTransposeArtifact.Value)
			{
				Transpose_Def.unlockableDef = val;
			}
			Unison_Def.cachedName = "SingleItemPerTier";
			Unison_Def.nameToken = "ARTIFACT_SINGLE_ITEM_NAME";
			Unison_Def.descriptionToken = "ARTIFACT_SINGLE_ITEM_DESC";
			Unison_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Unison_On.png");
			Unison_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Unison_Off.png");
			Unison_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/SingleMonsterType").pickupModelReference;
			ContentAddition.AddArtifactDef(Unison_Def);
			if (!WConfig.EnableUnisonArtifact.Value)
			{
				Unison_Def.unlockableDef = val;
			}
			Obscurity_Def.cachedName = "ItemsBlind";
			Obscurity_Def.nameToken = "ARTIFACT_BLIND_ITEMS_NAME";
			Obscurity_Def.descriptionToken = "ARTIFACT_BLIND_ITEMS_DESC";
			Obscurity_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Obscurity_On.png");
			Obscurity_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Obscurity_Off.png");
			Obscurity_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/FriendlyFire").pickupModelReference;
			ContentAddition.AddArtifactDef(Obscurity_Def);
			Obscurity_Def.unlockableDef = val;
			Flamboyance_Def.cachedName = "RandomlyRainbow";
			Flamboyance_Def.nameToken = "ARTIFACT_RANDOMLYANYTIER_NAME";
			Flamboyance_Def.descriptionToken = "ARTIFACT_RANDOMLYANYTIER_DESC";
			Flamboyance_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Flamboyance_On.png");
			Flamboyance_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Flamboyance_Off.png");
			Flamboyance_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/Enigma").pickupModelReference;
			ContentAddition.AddArtifactDef(Flamboyance_Def);
			if (!WConfig.Enable_Flamboyance_Artifact.Value)
			{
				Flamboyance_Def.unlockableDef = val;
			}
			Doubles_Def.cachedName = "SwarmsPlayer";
			Doubles_Def.nameToken = "ARTIFACT_DOUBLEPLAYER_NAME";
			Doubles_Def.descriptionToken = "ARTIFACT_DOUBLEPLAYER_DESC";
			Doubles_Def.smallIconSelectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Double_On.png");
			Doubles_Def.smallIconDeselectedSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/Artifacts/Double_Off.png");
			Doubles_Def.pickupModelReference = LegacyResourcesAPI.Load<ArtifactDef>("Artifactdefs/Swarms").pickupModelReference;
			ContentAddition.AddArtifactDef(Doubles_Def);
			if (!WConfig.Enable_Doubles_Artifact.Value)
			{
				Doubles_Def.unlockableDef = val;
			}
			MakeSimuWave();
		}

		public static void MakeSimuWave()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: 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_0135: 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_0140: 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_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0241: Unknown result type (might be due to invalid IL or missing references)
			//IL_0265: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_026e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0273: Unknown result type (might be due to invalid IL or missing references)
			//IL_028e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_0374: Unknown result type (might be due to invalid IL or missing references)
			//IL_0398: Unknown result type (might be due to invalid IL or missing references)
			//IL_039a: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d3: 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)
			GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/ITAssets/InfiniteTowerWaveArtifactBomb.prefab").WaitForCompletion(), "InfiniteTowerWaveArtifactSingleEliteType", true);
			GameObject val2 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/ITAssets/InfiniteTowerCurrentArtifactBombWaveUI.prefab").WaitForCompletion(), "InfiniteTowerCurrentArtifactSingleEliteTypeWaveUI", false);
			InfiniteTowerWaveArtifactPrerequisites val3 = ScriptableObject.CreateInstance<InfiniteTowerWaveArtifactPrerequisites>();
			val.GetComponent<ArtifactEnabler>().artifactDef = Brigade_Def;
			val.GetComponent<InfiniteTowerWaveController>().overlayEntries[1].prefab = val2;
			val.GetComponent<CombatDirector>().eliteBias = 0.25f;
			((Component)val2.transform.GetChild(0).GetChild(0).GetChild(0)).GetComponent<Image>().sprite = Brigade_Def.smallIconSelectedSprite;
			((Component)val2.transform.GetChild(0).GetChild(1).GetChild(0)).GetComponent<InfiniteTowerWaveCounter>().token = "ITWAVE_ARTIFACT_SINGLE_ELITE_NAME";
			((Component)val2.transform.GetChild(0).GetChild(1).GetChild(1)).GetComponent<LanguageTextMeshController>().token = "ITWAVE_ARTIFACT_SINGLE_ELITE_DESC";
			val3.bannedArtifact = Brigade_Def;
			((Object)val3).name = "ArtifacSingleEliteTypeDisabledPrerequisite";
			WeightedWave val4 = default(WeightedWave);
			val4.wavePrefab = val;
			val4.weight = 2f;
			val4.prerequisites = (InfiniteTowerWavePrerequisites)(object)val3;
			WeightedWave val5 = val4;
			GameObject val6 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/ITAssets/InfiniteTowerWaveArtifactBomb.prefab").WaitForCompletion(), "InfiniteTowerWaveArtifactStatsOnLowHealth", true);
			GameObject val7 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/ITAssets/InfiniteTowerCurrentArtifactBombWaveUI.prefab").WaitForCompletion(), "InfiniteTowerCurrentArtifactStatsOnLowHealthWaveUI", false);
			InfiniteTowerWaveArtifactPrerequisites val8 = ScriptableObject.CreateInstance<InfiniteTowerWaveArtifactPrerequisites>();
			val6.GetComponent<ArtifactEnabler>().artifactDef = Spiriting_Def;
			val6.GetComponent<InfiniteTowerWaveController>().overlayEntries[1].prefab = val7;
			((Component)val7.transform.GetChild(0).GetChild(0).GetChild(0)).GetComponent<Image>().sprite = Spiriting_Def.smallIconSelectedSprite;
			((Component)val7.transform.GetChild(0).GetChild(1).GetChild(0)).GetComponent<InfiniteTowerWaveCounter>().token = "ITWAVE_ARTIFACT_SPEED_ONLOWHEALTH_NAME";
			((Component)val7.transform.GetChild(0).GetChild(1).GetChild(1)).GetComponent<LanguageTextMeshController>().token = "ITWAVE_ARTIFACT_SPEED_ONLOWHEALTH_DESC";
			val8.bannedArtifact = Spiriting_Def;
			((Object)val8).name = "ArtifacStatsOnLowHealthDisabledPrerequisite";
			val4 = default(WeightedWave);
			val4.wavePrefab = val6;
			val4.weight = 1f;
			val4.prerequisites = (InfiniteTowerWavePrerequisites)(object)val8;
			WeightedWave val9 = val4;
			GameObject val10 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/ITAssets/InfiniteTowerWaveArtifactBomb.prefab").WaitForCompletion(), "InfiniteTowerWaveArtifactRandomLoadout", true);
			GameObject val11 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/ITAssets/InfiniteTowerCurrentArtifactBombWaveUI.prefab").WaitForCompletion(), "InfiniteTowerCurrentArtifactRandomLoadoutWaveUI", false);
			InfiniteTowerWaveArtifactPrerequisites val12 = ScriptableObject.CreateInstance<InfiniteTowerWaveArtifactPrerequisites>();
			val10.GetComponent<ArtifactEnabler>().artifactDef = Transpose_Def;
			val10.GetComponent<InfiniteTowerWaveController>().overlayEntries[1].prefab = val11;
			((Component)val11.transform.GetChild(0).GetChild(0).GetChild(0)).GetComponent<Image>().sprite = Transpose_Def.smallIconSelectedSprite;
			((Component)val11.transform.GetChild(0).GetChild(1).GetChild(0)).GetComponent<InfiniteTowerWaveCounter>().token = "ITWAVE_ARTIFACT_REROLL_SKILLS_NAME";
			((Component)val11.transform.GetChild(0).GetChild(1).GetChild(1)).GetComponent<LanguageTextMeshController>().token = "ITWAVE_ARTIFACT_REROLL_SKILLS_DESC";
			val12.bannedArtifact = Transpose_Def;
			((Object)val12).name = "ArtifacRandomLoadoutDisabledPrerequisite";
			val4 = default(WeightedWave);
			val4.wavePrefab = val10;
			val4.weight = 1f;
			val4.prerequisites = (InfiniteTowerWavePrerequisites)(object)val12;
			WeightedWave val13 = val4;
			InfiniteTowerWaveCategory val14 = Addressables.LoadAssetAsync<InfiniteTowerWaveCategory>((object)"4e63333e89a09f64680d3475ba1b5903").WaitForCompletion();
			val14.wavePrefabs = val14.wavePrefabs.Add(val5, val13, val9);
		}

		public void RunArtifactManager_onEnabledArtifactGlobal(RunArtifactManager runArtifactManager, ArtifactDef artifactDef)
		{
			if ((Object)(object)artifactDef == (Object)(object)Spiriting_Def)
			{
				Spiriting.OnArtifactEnable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Brigade_Def)
			{
				Brigade.OnArtifactEnable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Wander_Def)
			{
				Wander.OnArtifactEnable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Transpose_Def)
			{
				Transpose.OnArtifactEnable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Remodeling_Def)
			{
				Remodeling.OnArtifactEnable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Dissimilarity_Def)
			{
				Dissimilarity.OnArtifactEnable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Kith_Def)
			{
				Kith.OnArtifactEnable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Unison_Def)
			{
				Unison.OnArtifactEnable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Obscurity_Def)
			{
				Obscurity.OnArtifactEnable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Flamboyance_Def)
			{
				Flamboyance.On_Artifact_Enable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Doubles_Def)
			{
				Doubles.On_Artifact_Enable();
			}
		}

		public void RunArtifactManager_onDisableArtifactGlobal(RunArtifactManager runArtifactManager, ArtifactDef artifactDef)
		{
			if ((Object)(object)artifactDef == (Object)(object)Spiriting_Def)
			{
				Spiriting.OnArtifactDisable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Brigade_Def)
			{
				Brigade.OnArtifactDisable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Wander_Def)
			{
				Wander.OnArtifactDisable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Transpose_Def)
			{
				Transpose.OnArtifactDisable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Remodeling_Def)
			{
				Remodeling.OnArtifactDisable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Dissimilarity_Def)
			{
				Dissimilarity.OnArtifactDisable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Kith_Def)
			{
				Kith.OnArtifactDisable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Unison_Def)
			{
				Unison.OnArtifactDisable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Unison_Def)
			{
				Obscurity.OnArtifactDisable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Flamboyance_Def)
			{
				Flamboyance.On_Artifact_Disable();
			}
			else if ((Object)(object)artifactDef == (Object)(object)Doubles_Def)
			{
				Doubles.On_Artifact_Disable();
			}
		}

		internal static void ModSupport()
		{
			Dissimilarity.ModSupport();
			for (int i = 0; i < ArtifactCatalog.artifactCount; i++)
			{
				ArtifactDef artifactDef = ArtifactCatalog.GetArtifactDef((ArtifactIndex)i);
				if (Object.op_Implicit((Object)(object)artifactDef.pickupModelPrefab) && artifactDef.pickupModelReference == null)
				{
					artifactDef.pickupModelReference = Artifacts.EliteOnly.pickupModelReference;
				}
			}
		}
	}
}
namespace ArtifactDissimilarity.Aritfacts
{
	public class Brigade
	{
		public class BrigadeMessage : ChatMessageBase
		{
			public string eliteNameToken;

			public override string ConstructChatString()
			{
				string @string = Language.GetString("ANNOUNCE_BRIGADE_ELITE");
				string arg = string.Format(Language.GetString(eliteNameToken), "");
				return string.Format(@string, arg);
			}

			public override void Serialize(NetworkWriter writer)
			{
				((ChatMessageBase)this).Serialize(writer);
				writer.Write(eliteNameToken);
			}

			public override void Deserialize(NetworkReader reader)
			{
				((ChatMessageBase)this).Deserialize(reader);
				eliteNameToken = reader.ReadString();
			}
		}

		[CompilerGenerated]
		private sealed class <DelayedBrigadeMessage>d__12 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public string elite;

			public float delay;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <DelayedBrigadeMessage>d__12(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(delay);
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					Chat.SendBroadcastChat((ChatMessageBase)(object)new BrigadeMessage
					{
						eliteNameToken = elite
					});
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		private static List<EliteDef> Tier1EliteDefs = new List<EliteDef>();

		private static List<EliteDef> Tier2EliteDefs = new List<EliteDef>();

		public static List<EliteDef> forRandomization = new List<EliteDef>();

		public static EliteDef chosenEliteDef;

		public static EliteTierDef[] backupNormalEliteTiers;

		private static int howManyTimesAddedTier2 = 1;

		public static void OnArtifactEnable()
		{
			SetupBrigade();
			backupNormalEliteTiers = CombatDirector.eliteTiers;
			if (forRandomization.Count > 0 && Object.op_Implicit((Object)(object)SceneInfo.instance) && Object.op_Implicit((Object)(object)Run.instance))
			{
				EliteKinAsMethod();
			}
			Debug.Log((object)"Added Brigade");
			SceneDirector.onPrePopulateSceneServer += SceneDirector_onPrePopulateSceneServer;
		}

		public static void OnArtifactDisable()
		{
			CombatDirector.eliteTiers = backupNormalEliteTiers;
			SceneDirector.onPrePopulateSceneServer -= SceneDirector_onPrePopulateSceneServer;
			Debug.Log((object)"UnBrigading");
			Tier1EliteDefs.Clear();
			Tier2EliteDefs.Clear();
			forRandomization.Clear();
		}

		private static void SceneDirector_onPrePopulateSceneServer(SceneDirector obj)
		{
			EliteKinAsMethod();
		}

		public static void SetupBrigade()
		{
			Tier1EliteDefs = new List<EliteDef>();
			Tier2EliteDefs = new List<EliteDef>();
			forRandomization = new List<EliteDef>();
			Debug.Log((object)("EliteTiers : " + CombatDirector.eliteTiers.Length));
			for (int i = 0; i < CombatDirector.eliteTiers.Length; i++)
			{
				EliteTierDef val = CombatDirector.eliteTiers[i];
				if (val.eliteTypes.Length == 0 || (Object)(object)val.eliteTypes[0] == (Object)null || ((Object)val.eliteTypes[0]).name.EndsWith("Honor"))
				{
					continue;
				}
				EliteDef[] eliteTypes = val.eliteTypes;
				foreach (EliteDef val2 in eliteTypes)
				{
					if (!val2.IsAvailable())
					{
						continue;
					}
					if (val2.healthBoostCoefficient > 8f)
					{
						if (!Tier2EliteDefs.Contains(val2))
						{
							Tier2EliteDefs.Add(val2);
						}
					}
					else if (!Tier1EliteDefs.Contains(val2))
					{
						Tier1EliteDefs.Add(val2);
					}
				}
			}
			Tier1EliteDefs.Remove(Elites.Lunar);
			if (Elites.Void.IsAvailable())
			{
			}
			howManyTimesAddedTier2 = 1;
			forRandomization.AddRange(Tier1EliteDefs);
		}

		public static void EliteKinAsMethod()
		{
			//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0260: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Expected I4, but got Unknown
			//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bb: Expected O, but got Unknown
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_030e: Expected O, but got Unknown
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_036b: Expected O, but got Unknown
			Debug.Log((object)("COMBATDIRECTORS:" + CombatDirector.instancesList.Count));
			if (!NetworkServer.active)
			{
				return;
			}
			chosenEliteDef = null;
			if (howManyTimesAddedTier2 <= Run.instance.NetworkstageClearCount / 5)
			{
				howManyTimesAddedTier2++;
				Debug.Log((object)"Add Tier 2 to Brigade");
				forRandomization.AddRange(Tier2EliteDefs);
				forRandomization.AddRange(Tier2EliteDefs);
			}
			switch (SceneInfo.instance.sceneDef.baseSceneName)
			{
			case "moon":
			case "moon2":
				chosenEliteDef = Elites.Lunar;
				break;
			case "itmoon":
				if (Run.instance.treasureRng.RangeInt(0, 5) == 0)
				{
					chosenEliteDef = Elites.Lunar;
				}
				break;
			case "voidraid":
				if (Run.instance.treasureRng.RangeInt(0, 4) == 0)
				{
					chosenEliteDef = Elites.Void;
				}
				break;
			case "conduitcanyon":
				chosenEliteDef = Elites.CollectiveWeak;
				break;
			default:
				if (Run.instance.treasureRng.RangeInt(0, 200) == 0 && Elites.Void.IsAvailable())
				{
					chosenEliteDef = Elites.Void;
				}
				else
				{
					chosenEliteDef = forRandomization[Run.instance.treasureRng.RangeInt(0, forRandomization.Count)];
				}
				break;
			}
			if ((Object)(object)chosenEliteDef == (Object)null)
			{
				Debug.LogError((object)"NO ELITE DEF FOUND");
			}
			int itemCountGlobal = Util.GetItemCountGlobal(Items.RandomlyLunar.itemIndex, false, false);
			if (itemCountGlobal > 0)
			{
				itemCountGlobal++;
				if (Run.instance.spawnRng.nextNormalizedFloat < 0.05f * (float)itemCountGlobal)
				{
					chosenEliteDef = Elites.Lunar;
				}
			}
			if (Run.instance is WeeklyRun)
			{
				Run instance = Run.instance;
				((WeeklyRun)((instance is WeeklyRun) ? instance : null)).bossAffixes = (EquipmentIndex[])(object)new EquipmentIndex[1] { (EquipmentIndex)(int)chosenEliteDef.eliteEquipmentDef.equipmentIndex };
			}
			Debug.Log((object)("Artifact of Brigade: This stages only Elite " + ((Object)chosenEliteDef).name));
			float num = 6f;
			if (chosenEliteDef.healthBoostCoefficient > 8f)
			{
				num = 30f;
			}
			EliteTierDef[] array = (EliteTierDef[])(object)new EliteTierDef[3];
			EliteTierDef val = new EliteTierDef();
			val.costMultiplier = 1f;
			val.eliteTypes = (EliteDef[])(object)new EliteDef[1];
			val.canSelectWithoutAvailableEliteDef = true;
			val.isAvailable = (EliteRules rules) => !CombatDirector.IsEliteOnlyArtifactActive();
			array[0] = val;
			val = new EliteTierDef();
			val.costMultiplier = num * 0.8f;
			val.eliteTypes = (EliteDef[])(object)new EliteDef[1] { chosenEliteDef };
			val.isAvailable = (EliteRules rules) => !CombatDirector.IsEliteOnlyArtifactActive();
			val.canSelectWithoutAvailableEliteDef = false;
			array[1] = val;
			val = new EliteTierDef();
			val.costMultiplier = num;
			val.eliteTypes = (EliteDef[])(object)new EliteDef[1] { chosenEliteDef };
			val.isAvailable = (EliteRules rules) => CombatDirector.IsEliteOnlyArtifactActive();
			val.canSelectWithoutAvailableEliteDef = false;
			array[2] = val;
			CombatDirector.eliteTiers = array;
			if (Object.op_Implicit((Object)(object)SceneInfo.instance) && Object.op_Implicit((Object)(object)ClassicStageInfo.instance))
			{
				((MonoBehaviour)SceneInfo.instance).StartCoroutine(DelayedBrigadeMessage(chosenEliteDef.modifierToken, 1.2f));
				return;
			}
			Chat.SendBroadcastChat((ChatMessageBase)(object)new BrigadeMessage
			{
				eliteNameToken = chosenEliteDef.modifierToken
			});
		}

		[IteratorStateMachine(typeof(<DelayedBrigadeMessage>d__12))]
		public static IEnumerator DelayedBrigadeMessage(string elite, float delay)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <DelayedBrigadeMessage>d__12(0)
			{
				elite = elite,
				delay = delay
			};
		}
	}
	public class Dissimilarity
	{
		public static readonly Random random = new Random();

		public static DirectorCardCategorySelection mixInteractablesCards = ScriptableObject.CreateInstance<DirectorCardCategorySelection>();

		public static DirectorCardCategorySelection TrimmedmixInteractablesCards = ScriptableObject.CreateInstance<DirectorCardCategorySelection>();

		public static void Start()
		{
			((Object)mixInteractablesCards).name = "dccsMixInteractableMaster";
			((Object)TrimmedmixInteractablesCards).name = "dccsMixInteractableTrimmed";
			DCCSmaker();
		}

		public static void OnArtifactDisable()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			ClassicStageInfo.RebuildCards -= new hook_RebuildCards(ForceMixInteractables_ClassicStageInfo_RebuildCards);
			SceneDirector.onPrePopulateSceneServer -= LunarTeleporterEvery5Stages;
		}

		public static void OnArtifactEnable()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			ClassicStageInfo.RebuildCards += new hook_RebuildCards(ForceMixInteractables_ClassicStageInfo_RebuildCards);
			SceneDirector.onPrePopulateSceneServer += LunarTeleporterEvery5Stages;
			DissimWander_LunarSeer.PopulateSeerList();
		}

		private static void LunarTeleporterEvery5Stages(SceneDirector obj)
		{
			if (Run.instance.NetworkstageClearCount % 5 == 4)
			{
				obj.teleporterSpawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscLunarTeleporter");
			}
		}

		private static void ForceMixInteractables_ClassicStageInfo_RebuildCards(orig_RebuildCards orig, ClassicStageInfo self, DirectorCardCategorySelection forcedMonsterCategory, DirectorCardCategorySelection forcedInteractableCategory)
		{
			MakeTrimmerMixInteractablesDCCS();
			orig.Invoke(self, forcedInteractableCategory, TrimmedmixInteractablesCards);
		}

		public static void ModSupport()
		{
			//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_020d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Expected O, but got Unknown
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Expected O, but got Unknown
			//IL_0226: Unknown result type (might be due to invalid IL or missing references)
			//IL_022b: 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_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Expected O, but got Unknown
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_019d: Expected O, but got Unknown
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_014e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Expected O, but got Unknown
			//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: Expected O, but got Unknown
			InteractableSpawnCard[] array = Object.FindObjectsOfType(typeof(InteractableSpawnCard)) as InteractableSpawnCard[];
			for (int i = 0; i < array.Length; i++)
			{
				switch (((Object)array[i]).name)
				{
				case "MysticsItems_iscShrineLegendary":
				{
					DirectorCard val7 = new DirectorCard
					{
						spawnCard = (SpawnCard)(object)array[i],
						selectionWeight = 50
					};
					break;
				}
				case "iscTripleShopRed":
				{
					DirectorCard val6 = new DirectorCard
					{
						spawnCard = (SpawnCard)(object)array[i],
						selectionWeight = 11
					};
					mixInteractablesCards.AddCard(5, val6);
					break;
				}
				case "midcDroneTable":
				{
					DirectorCard val5 = new DirectorCard
					{
						spawnCard = (SpawnCard)(object)array[i],
						selectionWeight = 100
					};
					mixInteractablesCards.AddCard(6, val5);
					break;
				}
				case "msidcCloneDrone":
				{
					DirectorCard val4 = new DirectorCard
					{
						spawnCard = (SpawnCard)(object)array[i],
						selectionWeight = 7
					};
					mixInteractablesCards.AddCard(3, val4);
					break;
				}
				case "msidcShockDrone":
				{
					DirectorCard val3 = new DirectorCard
					{
						spawnCard = (SpawnCard)(object)array[i],
						selectionWeight = 14
					};
					mixInteractablesCards.AddCard(3, val3);
					break;
				}
				case "iscCloakedShrine":
				{
					DirectorCard val2 = new DirectorCard
					{
						spawnCard = (SpawnCard)(object)array[i],
						selectionWeight = 8
					};
					mixInteractablesCards.AddCard(5, val2);
					break;
				}
				case "iscAegisShrine":
				{
					DirectorCard val = new DirectorCard
					{
						spawnCard = (SpawnCard)(object)array[i],
						selectionWeight = 8
					};
					mixInteractablesCards.AddCard(5, val);
					break;
				}
				}
			}
		}

		public static void DCCSmaker()
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: 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_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: 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_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Expected O, but got Unknown
			//IL_01bd: 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_01d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: 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_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fb: Expected O, but got Unknown
			//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_021a: 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_022f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0239: 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_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0258: Expected O, but got Unknown
			//IL_0258: Unknown result type (might be due to invalid IL or missing references)
			//IL_025d: Unknown result type (might be due to invalid IL or missing references)
			//IL_026d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0277: Expected O, but got Unknown
			//IL_0277: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0296: Expected O, but got Unknown
			//IL_0296: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Expected O, but got Unknown
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d4: Expected O, but got Unknown
			//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f3: Expected O, but got Unknown
			//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0303: Unknown result type (might be due to invalid IL or missing references)
			//IL_0311: Unknown result type (might be due to invalid IL or missing references)
			//IL_031b: Expected O, but got Unknown
			//IL_031b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0320: Unknown result type (might be due to invalid IL or missing references)
			//IL_0326: Unknown result type (might be due to invalid IL or missing references)
			//IL_032b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: Unknown result type (might be due to invalid IL or missing references)
			//IL_0343: Expected O, but got Unknown
			//IL_0343: Unknown result type (might be due to invalid IL or missing references)
			//IL_0348: Unknown result type (might be due to invalid IL or missing references)
			//IL_034e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0353: Unknown result type (might be due to invalid IL or missing references)
			//IL_0361: Unknown result type (might be due to invalid IL or missing references)
			//IL_036b: Expected O, but got Unknown
			//IL_036b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: 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_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_0393: Expected O, but got Unknown
			//IL_0393: Unknown result type (might be due to invalid IL or missing references)
			//IL_0398: Unknown result type (might be due to invalid IL or missing references)
			//IL_039e: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bb: Expected O, but got Unknown
			//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Expected O, but got Unknown
			//IL_03db: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fa: Expected O, but got Unknown
			//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0404: Unknown result type (might be due to invalid IL or missing references)
			//IL_0429: Unknown result type (might be due to invalid IL or missing references)
			//IL_042e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0436: Unknown result type (might be due to invalid IL or missing references)
			//IL_0440: Expected O, but got Unknown
			//IL_0440: Unknown result type (might be due to invalid IL or missing references)
			//IL_0445: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_0462: Expected O, but got Unknown
			//IL_0462: Unknown result type (might be due to invalid IL or missing references)
			//IL_0467: Unknown result type (might be due to invalid IL or missing references)
			//IL_0477: Unknown result type (might be due to invalid IL or missing references)
			//IL_0484: Expected O, but got Unknown
			//IL_0484: Unknown result type (might be due to invalid IL or missing references)
			//IL_0489: Unknown result type (might be due to invalid IL or missing references)
			//IL_0499: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a6: Expected O, but got Unknown
			//IL_04a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c8: Expected O, but got Unknown
			//IL_04c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ea: Expected O, but got Unknown
			//IL_04ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0509: Expected O, but got Unknown
			//IL_0509: Unknown result type (might be due to invalid IL or missing references)
			//IL_050e: Unknown result type (might be due to invalid IL or missing references)
			//IL_051e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0526: Unknown result type (might be due to invalid IL or missing references)
			//IL_052f: Expected O, but got Unknown
			//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_053a: Unknown result type (might be due to invalid IL or missing references)
			//IL_053f: Unknown result type (might be due to invalid IL or missing references)
			//IL_054d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0555: Unknown result type (might be due to invalid IL or missing references)
			//IL_055e: Expected O, but got Unknown
			//IL_055e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0563: Unknown result type (might be due to invalid IL or missing references)
			//IL_0573: Unknown result type (might be due to invalid IL or missing references)
			//IL_057d: Expected O, but got Unknown
			//IL_057d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0582: Unknown result type (might be due to invalid IL or missing references)
			//IL_0592: Unknown result type (might be due to invalid IL or missing references)
			//IL_059c: Expected O, but got Unknown
			//IL_059c: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05bb: Expected O, but got Unknown
			//IL_05bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05da: Expected O, but got Unknown
			//IL_05da: Unknown result type (might be due to invalid IL or missing references)
			//IL_05df: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f9: Expected O, but got Unknown
			//IL_05f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_060e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0618: Expected O, but got Unknown
			//IL_0618: Unknown result type (might be due to invalid IL or missing references)
			//IL_061d: Unknown result type (might be due to invalid IL or missing references)
			//IL_062d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0637: Expected O, but got Unknown
			//IL_0637: Unknown result type (might be due to invalid IL or missing references)
			//IL_063c: Unknown result type (might be due to invalid IL or missing references)
			//IL_064c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0654: Unknown result type (might be due to invalid IL or missing references)
			//IL_065d: Expected O, but got Unknown
			//IL_065d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0662: Unknown result type (might be due to invalid IL or missing references)
			//IL_0672: Unknown result type (might be due to invalid IL or missing references)
			//IL_067c: Expected O, but got Unknown
			//IL_067c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0681: Unknown result type (might be due to invalid IL or missing references)
			//IL_0691: Unknown result type (might be due to invalid IL or missing references)
			//IL_069b: Expected O, but got Unknown
			//IL_069b: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ba: Expected O, but got Unknown
			//IL_06ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d9: Expected O, but got Unknown
			//IL_06d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06de: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f8: Expected O, but got Unknown
			//IL_06f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fd: 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_0715: Unknown result type (might be due to invalid IL or missing references)
			//IL_071e: Expected O, but got Unknown
			//IL_071e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0723: Unknown result type (might be due to invalid IL or missing references)
			//IL_0733: Unknown result type (might be due to invalid IL or missing references)
			//IL_073b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0744: Expected O, but got Unknown
			//IL_0744: Unknown result type (might be due to invalid IL or missing references)
			//IL_0749: Unknown result type (might be due to invalid IL or missing references)
			//IL_0759: Unknown result type (might be due to invalid IL or missing references)
			//IL_0763: Expected O, but got Unknown
			//IL_0763: Unknown result type (might be due to invalid IL or missing references)
			//IL_0768: Unknown result type (might be due to invalid IL or missing references)
			//IL_076e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0773: Unknown result type (might be due to invalid IL or missing references)
			//IL_0781: Unknown result type (might be due to invalid IL or missing references)
			//IL_0789: Unknown result type (might be due to invalid IL or missing references)
			//IL_0792: Expected O, but got Unknown
			//IL_0792: Unknown result type (might be due to invalid IL or missing references)
			//IL_0797: Unknown result type (might be due to invalid IL or missing references)
			//IL_079d: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c1: Expected O, but got Unknown
			//IL_07c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e6: Expected O, but got Unknown
			//IL_07e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_07fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0802: Unknown result type (might be due to invalid IL or missing references)
			//IL_080b: Expected O, but got Unknown
			//IL_080b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0810: Unknown result type (might be due to invalid IL or missing references)
			//IL_0818: Unknown result type (might be due to invalid IL or missing references)
			//IL_0822: Expected O, but got Unknown
			//IL_0822: Unknown result type (might be due to invalid IL or missing references)
			//IL_0827: Unknown result type (might be due to invalid IL or missing references)
			//IL_0837: Unknown result type (might be due to invalid IL or missing references)
			//IL_0841: Expected O, but got Unknown
			//IL_0841: Unknown result type (might be due to invalid IL or missing references)
			//IL_0846: Unknown result type (might be due to invalid IL or missing references)
			//IL_084c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0851: Unknown result type (might be due to invalid IL or missing references)
			//IL_085f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0869: Expected O, but got Unknown
			//IL_0869: Unknown result type (might be due to invalid IL or missing references)
			//IL_086e: Unknown result type (might be due to invalid IL or missing references)
			//IL_087e: Unknown result type (might be due to invalid IL or missing references)
			//IL_088b: Expected O, but got Unknown
			//IL_088b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0890: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08aa: Expected O, but got Unknown
			//IL_08aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_08af: Unknown result type (might be due to invalid IL or missing references)
			//IL_08bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d0: Expected O, but got Unknown
			//IL_08d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f6: Expected O, but got Unknown
			//IL_08f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_090b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0915: Expected O, but got Unknown
			//IL_0915: Unknown result type (might be due to invalid IL or missing references)
			//IL_091a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0921: Unknown result type (might be due to invalid IL or missing references)
			//IL_092b: Expected O, but got Unknown
			//IL_092b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0930: Unknown result type (might be due to invalid IL or missing references)
			//IL_0937: Unknown result type (might be due to invalid IL or missing references)
			//IL_093f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0948: Expected O, but got Unknown
			//IL_0948: Unknown result type (might be due to invalid IL or missing references)
			//IL_094d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0954: Unknown result type (might be due to invalid IL or missing references)
			//IL_095c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0965: Expected O, but got Unknown
			//IL_0965: Unknown result type (might be due to invalid IL or missing references)
			//IL_096a: Unknown result type (might be due to invalid IL or missing references)
			//IL_097a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0982: Unknown result type (might be due to invalid IL or missing references)
			//IL_098b: Expected O, but got Unknown
			//IL_098b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0990: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_09aa: Expected O, but got Unknown
			InteractableSpawnCard val = ScriptableObject.CreateInstance<InteractableSpawnCard>();
			((Object)val).name = "iscSoupWhiteGreen";
			((SpawnCard)val).prefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/networkedobjects/LunarCauldron, WhiteToGreen");
			((SpawnCard)val).sendOverNetwork = true;
			((SpawnCard)val).hullSize = (HullClassification)1;
			((SpawnCard)val).nodeGraphType = (GraphType)0;
			((SpawnCard)val).requiredFlags = (NodeFlags)0;
			((SpawnCard)val).forbiddenFlags = (NodeFlags)8;
			((SpawnCard)val).directorCreditCost = 3;
			((SpawnCard)val).occupyPosition = true;
			((SpawnCard)val).eliteRules = (EliteRules)0;
			val.orientToFloor = true;
			val.slightlyRandomizeOrientation = false;
			val.skipSpawnWhenSacrificeArtifactEnabled = false;
			InteractableSpawnCard val2 = ScriptableObject.CreateInstance<InteractableSpawnCard>();
			((Object)val2).name = "iscSoupGreenRed";
			((SpawnCard)val2).prefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/networkedobjects/LunarCauldron, GreenToRed Variant");
			((SpawnCard)val2).sendOverNetwork = true;
			((SpawnCard)val2).hullSize = (HullClassification)1;
			((SpawnCard)val2).nodeGraphType = (GraphType)0;
			((SpawnCard)val2).requiredFlags = (NodeFlags)0;
			((SpawnCard)val2).forbiddenFlags = (NodeFlags)8;
			((SpawnCard)val2).directorCreditCost = 2;
			((SpawnCard)val2).occupyPosition = true;
			val2.orientToFloor = true;
			InteractableSpawnCard val3 = ScriptableObject.CreateInstance<InteractableSpawnCard>();
			((Object)val3).name = "iscSoupRedWhite";
			((SpawnCard)val3).prefab = LegacyR