Decompiled source of WolfoArtifacts v3.2.0

ArtifactDissimilarity.dll

Decompiled a week ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using EntityStates.InfiniteTowerSafeWard;
using HG;
using IL.RoR2.UI;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates.InfiniteTowerSafeWard;
using On.RoR2;
using On.RoR2.Projectile;
using On.RoR2.UI;
using On.RoR2.UI.LogBook;
using R2API;
using R2API.ScriptableObjects;
using R2API.Utils;
using RoR2;
using RoR2.Artifacts;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("ArtifactDissimilarity")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+9f3a459bd4008723b9d6ec65668ad7f4a18dd557")]
[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)
		{
			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, 2);
				Trimmer_DesiredLength(ref interactableCategories.categories[3].cards, 0);
				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, 3);
				Trimmer_DesiredLength(ref interactableCategories.categories[3].cards, 3);
			}
			Trimmer_DesiredLength(ref interactableCategories.categories[5].cards, 3);
			if (RunArtifactManager.instance.IsArtifactEnabled(Main.Remodeling_Def))
			{
				interactableCategories.categories[6].selectionWeight /= 2f;
				Trimmer_DesiredLength(ref interactableCategories.categories[6].cards, 2);
			}
			else
			{
				Trimmer_DesiredLength(ref interactableCategories.categories[6].cards, 4);
			}
			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";
			for (int i = 0; i < interactableCategories.categories.Length; i++)
			{
				ref Category reference = ref interactableCategories.categories[i];
				for (int num = reference.cards.Length - 1; num >= 0; num--)
				{
					text += ((Object)reference.cards[num].spawnCard.prefab).name;
					text += "\n";
				}
			}
			text += "-----------------";
			Debug.Log((object)text);
		}

		public static void MixInteractableTrimmerWithNames(DirectorCardCategorySelection interactableCategories)
		{
			Trimmer_WithCategoryName("Chests", 6, ref interactableCategories);
			if (((Object)Run.instance).name.Equals("InfiniteTowerRun(Clone)"))
			{
				Trimmer_WithCategoryName("Barrels", 0, ref interactableCategories);
				Trimmer_WithCategoryName("Shrines", 2, ref interactableCategories);
				Trimmer_WithCategoryName("Drones", 0, ref interactableCategories);
				Dissimilarity.TrimmedmixInteractablesCards.categories[1].selectionWeight = 0f;
				Dissimilarity.TrimmedmixInteractablesCards.categories[2].selectionWeight = Dissimilarity.random.Next(1, 6);
				Dissimilarity.TrimmedmixInteractablesCards.categories[3].selectionWeight = 0f;
			}
			else
			{
				Trimmer_WithCategoryName("Barrels", 2, ref interactableCategories);
				Trimmer_WithCategoryName("Shrines", 3, ref interactableCategories);
				Trimmer_WithCategoryName("Drones", 3, ref interactableCategories);
			}
			Trimmer_WithCategoryName("Rare", 2, ref interactableCategories);
			if (RunArtifactManager.instance.IsArtifactEnabled(Main.Remodeling_Def))
			{
				interactableCategories.categories[6].selectionWeight /= 2f;
				Trimmer_WithCategoryName("Duplicator", 2, ref interactableCategories);
			}
			else
			{
				Trimmer_WithCategoryName("Duplicator", 4, ref interactableCategories);
			}
		}

		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].spawnCard.prefab).name;
					text += "\n";
				}
			}
			text += "-----------------";
			Debug.Log((object)text);
		}

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

		public static bool SacrificeArtifactTrimmer(DirectorCard card)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Expected O, but got Unknown
			InteractableSpawnCard val = (InteractableSpawnCard)card.spawnCard;
			return !val.skipSpawnWhenSacrificeArtifactEnabled;
		}

		public static bool SimulacrumTrimmer(DirectorCard card)
		{
			GameObject prefab = card.spawnCard.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.spawnCard);
			return true;
		}

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

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

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

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

		public static bool ArtifactWorldPredicate(DirectorCard card)
		{
			GameObject prefab = card.spawnCard.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.spawnCard.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 (Object.op_Implicit((Object)(object)Run.instance) && ((Object)Run.instance).name.StartsWith("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 == "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_0395: 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_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_03cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d2: 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_03b6: 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_040a: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b97: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b77: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c10: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b7: Unknown result type (might be due to invalid IL or missing references)
			//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_07ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0826: Unknown result type (might be due to invalid IL or missing references)
			//IL_082b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bee: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0809: Unknown result type (might be due to invalid IL or missing references)
			//IL_080e: Unknown result type (might be due to invalid IL or missing references)
			if (SceneInfo.instance.sceneDef.baseSceneName == "snowyforest" || SceneInfo.instance.sceneDef.baseSceneName == "frozenwall" || SceneInfo.instance.sceneDef.baseSceneName == "itfrozenwall")
			{
				DirectorCard[] cards = DCCSInput.categories[2].cards;
				foreach (DirectorCard val in cards)
				{
					switch (((Object)val.spawnCard).name)
					{
					case "iscShrineBlood":
					case "iscShrineBloodSnowy":
					case "iscShrineBloodSandy":
						val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBlood/iscShrineBloodSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineBoss":
					case "iscShrineBossSnowy":
					case "iscShrineBossSandy":
						val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBoss/iscShrineBossSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineChance":
					case "iscShrineChanceSnowy":
					case "iscShrineChanceSandy":
						val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineChance/iscShrineChanceSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineCleanse":
					case "iscShrineCleanseSnowy":
					case "iscShrineCleanseSandy":
						val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCleanse/iscShrineCleanseSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineCombat":
					case "iscShrineCombatSnowy":
					case "iscShrineCombatSandy":
						val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCombat/iscShrineCombatSnowy.asset").WaitForCompletion();
						break;
					case "iscShrineRestack":
					case "iscShrineRestackSnowy":
					case "iscShrineRestackSandy":
						val.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineRestack/iscShrineRestackSnowy.asset").WaitForCompletion();
						break;
					}
				}
				return;
			}
			if (SceneInfo.instance.sceneDef.baseSceneName == "goolake" || SceneInfo.instance.sceneDef.baseSceneName == "itgoolake")
			{
				DirectorCard[] cards2 = DCCSInput.categories[2].cards;
				foreach (DirectorCard val2 in cards2)
				{
					switch (((Object)val2.spawnCard).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;
					}
				}
				return;
			}
			DirectorCard[] cards3 = DCCSInput.categories[2].cards;
			foreach (DirectorCard val3 in cards3)
			{
				switch (((Object)val3.spawnCard).name)
				{
				case "iscShrineBlood":
				case "iscShrineBloodSnowy":
				case "iscShrineBloodSandy":
					val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBlood/iscShrineBlood.asset").WaitForCompletion();
					break;
				case "iscShrineBoss":
				case "iscShrineBossSnowy":
				case "iscShrineBossSandy":
					val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineBoss/iscShrineBoss.asset").WaitForCompletion();
					break;
				case "iscShrineChance":
				case "iscShrineChanceSnowy":
				case "iscShrineChanceSandy":
					val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineChance/iscShrineChance.asset").WaitForCompletion();
					break;
				case "iscShrineCleanse":
				case "iscShrineCleanseSnowy":
				case "iscShrineCleanseSandy":
					val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCleanse/iscShrineCleanse.asset").WaitForCompletion();
					break;
				case "iscShrineCombat":
				case "iscShrineCombatSnowy":
				case "iscShrineCombatSandy":
					val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCombat/iscShrineCombat.asset").WaitForCompletion();
					break;
				case "iscShrineRestack":
				case "iscShrineRestackSnowy":
				case "iscShrineRestackSandy":
					val3.spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineRestack/iscShrineRestack.asset").WaitForCompletion();
					break;
				}
			}
		}
	}
	public class WanderDissim_LunarSeer
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_SetRunNextStageToTarget <>9__3_0;

			internal void <Start>b__3_0(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 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
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			MakeSeerMaterials();
			SeerStationController.OnStartClient += new hook_OnStartClient(SeerDestinationRandomizerDissimWander);
			SeerStationController.OnTargetSceneChanged += new hook_OnTargetSceneChanged(SeerStation_DestinationInName);
			object obj = <>c.<>9__3_0;
			if (obj == null)
			{
				hook_SetRunNextStageToTarget val = delegate(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"
						});
					}
				};
				<>c.<>9__3_0 = val;
				obj = (object)val;
			}
			SeerStationController.SetRunNextStageToTarget += (hook_SetRunNextStageToTarget)obj;
		}

		private static void SeerStation_DestinationInName(orig_OnTargetSceneChanged orig, SeerStationController self, SceneDef targetScene)
		{
			orig.Invoke(self, targetScene);
			if ((Object)(object)targetScene != (Object)null)
			{
				string nameToken = targetScene.nameToken;
				nameToken = nameToken.Replace("Hidden Realm: ", "");
				((Component)self).gameObject.GetComponent<PurchaseInteraction>().contextToken = Language.GetString("BAZAAR_SEER_CONTEXT") + " of " + nameToken;
				((Component)self).gameObject.GetComponent<PurchaseInteraction>().displayNameToken = Language.GetString("BAZAAR_SEER_NAME") + " (" + nameToken + ")";
			}
		}

		public static void MakeSeerMaterials()
		{
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0304: 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_048e: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_0525: Unknown result type (might be due to invalid IL or missing references)
			//IL_0560: Unknown result type (might be due to invalid IL or missing references)
			//IL_059b: 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 = LegacyResourcesAPI.Load<SceneDef>("scenedefs/lobby");
			SceneDef val13 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itgolemplains/itgolemplains.asset").WaitForCompletion();
			SceneDef val14 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itgoolake/itgoolake.asset").WaitForCompletion();
			SceneDef val15 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itancientloft/itancientloft.asset").WaitForCompletion();
			SceneDef val16 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itfrozenwall/itfrozenwall.asset").WaitForCompletion();
			SceneDef val17 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itdampcave/itdampcave.asset").WaitForCompletion();
			SceneDef val18 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itskymeadow/itskymeadow.asset").WaitForCompletion();
			SceneDef val19 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itmoon/itmoon.asset").WaitForCompletion();
			SceneDef val20 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/ancientloft/ancientloft.asset").WaitForCompletion();
			SceneDef item2 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/voidstage/voidstage.asset").WaitForCompletion();
			SceneDef val21 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/voidraid/voidraid.asset").WaitForCompletion();
			SceneDef val22 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC2/meridian/meridian.asset").WaitForCompletion();
			SceneDef val23 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC2/artifactworld01/artifactworld01.asset").WaitForCompletion();
			SceneDef val24 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC2/artifactworld02/artifactworld02.asset").WaitForCompletion();
			SceneDef val25 = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC2/artifactworld03/artifactworld03.asset").WaitForCompletion();
			scenesSeerDestinations = new List<SceneDef> { val23, val24, val25, val6, item, val7, val11, val8, item2, val22 };
			Material val26 = Object.Instantiate<Material>(val.portalMaterial);
			Material val27 = Object.Instantiate<Material>(val.portalMaterial);
			Material val28 = Object.Instantiate<Material>(val.portalMaterial);
			Material val29 = Object.Instantiate<Material>(val.portalMaterial);
			Material val30 = Object.Instantiate<Material>(val.portalMaterial);
			Material val31 = Object.Instantiate<Material>(val.portalMaterial);
			Material val32 = Object.Instantiate<Material>(val.portalMaterial);
			Material val33 = Object.Instantiate<Material>(val.portalMaterial);
			Material val34 = Object.Instantiate<Material>(val2.portalMaterial);
			Material val35 = Object.Instantiate<Material>(val20.portalMaterial);
			Material val36 = Object.Instantiate<Material>(val3.portalMaterial);
			Material val37 = Object.Instantiate<Material>(val4.portalMaterial);
			Material val38 = Object.Instantiate<Material>(val5.portalMaterial);
			Material val39 = Object.Instantiate<Material>(val6.portalMaterial);
			val6.portalMaterial.SetFloat("_Boost", 1f);
			val6.portalMaterial.mainTextureScale = new Vector2(1f, 0.5f);
			val22.portalMaterial.SetFloat("_Boost", 1f);
			val26.mainTexture = val7.previewTexture;
			val7.portalMaterial = val26;
			val7.portalSelectionMessageString = "BAZAAR_SEER_ARENA";
			val27.mainTexture = val8.previewTexture;
			val8.portalMaterial = val27;
			val23.portalSelectionMessageString = "BAZAAR_SEER_ARTIFACTWORLD";
			val24.portalSelectionMessageString = "BAZAAR_SEER_ARTIFACTWORLD";
			val25.portalSelectionMessageString = "BAZAAR_SEER_ARTIFACTWORLD";
			val28.mainTexture = val9.previewTexture;
			val9.portalMaterial = val28;
			val9.portalSelectionMessageString = "BAZAAR_SEER_SHOP";
			val29.mainTexture = val10.previewTexture;
			val10.portalMaterial = val29;
			val10.portalSelectionMessageString = "BAZAAR_SEER_LIMBO";
			val30.mainTexture = val11.previewTexture;
			val11.portalMaterial = val30;
			val11.portalSelectionMessageString = "BAZAAR_SEER_MS";
			val32.mainTexture = val21.previewTexture;
			val21.portalMaterial = val32;
			val21.portalSelectionMessageString = "BAZAAR_SEER_VOIDLING";
			Color val40 = default(Color);
			((Color)(ref val40))..ctor(0.15f, 0.15f, 1f, 1f);
			Color val41 = default(Color);
			((Color)(ref val41))..ctor(0.5f, 0.5f, 1f, 1f);
			val33.SetColor("_TintColor", new Color(0.8f, 0.2f, 1f, 1f));
			val13.portalMaterial = val33;
			val13.portalSelectionMessageString = "BAZAAR_SEER_GOLEMPLAINS";
			val34.SetColor("_TintColor", val40);
			val14.portalMaterial = val34;
			val14.portalSelectionMessageString = "BAZAAR_SEER_GOOLAKE";
			val35.SetColor("_TintColor", val40);
			val15.portalMaterial = val35;
			val15.portalSelectionMessageString = "BAZAAR_SEER_ANCIENTLOFT";
			val36.SetColor("_TintColor", new Color(0.5f, 0.5f, 1f, 1f));
			val16.portalMaterial = val36;
			val16.portalSelectionMessageString = "BAZAAR_SEER_FROZENWALL";
			val37.SetColor("_TintColor", new Color(0f, 1.5f, 1.5f, 1f));
			val17.portalMaterial = val37;
			val17.portalSelectionMessageString = "BAZAAR_SEER_DAMPCAVESIMPLE";
			val38.SetColor("_TintColor", new Color(0.6f, 0.6f, 0.1f, 1f));
			val18.portalMaterial = val38;
			val18.portalSelectionMessageString = "BAZAAR_SEER_SKYMEADOW";
			val39.SetColor("_TintColor", new Color(0.5f, 0.2f, 0.7f, 1f));
			val19.portalMaterial = val39;
			val19.portalSelectionMessageString = "BAZAAR_SEER_MOON";
		}

		public static void SeerDestinationRandomizerDissimWander(orig_OnStartClient orig, SeerStationController self)
		{
			orig.Invoke(self);
			if (!RunArtifactManager.instance.IsArtifactEnabled(Main.Wander_Def) && (!RunArtifactManager.instance.IsArtifactEnabled(Main.Dissimilarity_Def) || !(SceneInfo.instance.sceneDef.baseSceneName != "bazaar")))
			{
				return;
			}
			if (Object.op_Implicit((Object)(object)TeleporterInteraction.instance))
			{
				self.explicitTargetSceneExitController = TeleporterInteraction.instance.sceneExitController;
			}
			if (Object.op_Implicit((Object)(object)((Component)Run.instance).GetComponent<InfiniteTowerRun>()))
			{
				int num = Run.instance.nextStageRng.RangeInt(0, Wander.InfiniteTowerSceneDefs.Length);
				self.SetTargetScene(Wander.InfiniteTowerSceneDefs[num]);
			}
			else
			{
				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));
			}
		}
	}
	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();
			}
		}

		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>();
			EliteTierDef[] eliteTiers = CombatDirector.eliteTiers;
			foreach (EliteTierDef val in eliteTiers)
			{
				if ((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())
			{
				Tier2EliteDefs.Add(Elites.Void);
			}
			howManyTimesAddedTier2 = 1;
			forRandomization.AddRange(Tier1EliteDefs);
		}

		public static void EliteKinAsMethod()
		{
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Expected I4, but got Unknown
			//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Expected O, but got Unknown
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Expected O, but got Unknown
			//IL_0294: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Expected O, but got Unknown
			if (!NetworkServer.active)
			{
				return;
			}
			if (howManyTimesAddedTier2 <= Run.instance.NetworkstageClearCount / 5)
			{
				howManyTimesAddedTier2++;
				Debug.Log((object)"Add Tier 2 to Brigade");
				forRandomization.AddRange(Tier2EliteDefs);
				forRandomization.AddRange(Tier2EliteDefs);
			}
			string baseSceneName = SceneInfo.instance.sceneDef.baseSceneName;
			if (baseSceneName == "moon2" || baseSceneName == "limbo")
			{
				chosenEliteDef = Elites.Lunar;
			}
			else if (baseSceneName == "voidstage" || baseSceneName == "voidraid")
			{
				chosenEliteDef = Elites.Void;
			}
			else
			{
				chosenEliteDef = forRandomization[Main.random.Next(forRandomization.Count)];
			}
			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 (((Object)Run.instance).name.StartsWith("WeeklyRun"))
			{
				EquipmentIndex[] array = Array.Empty<EquipmentIndex>();
				array = array.Add((EquipmentIndex)(int)chosenEliteDef.eliteEquipmentDef.equipmentIndex);
				Reflection.SetFieldValue<EquipmentIndex[]>((object)Run.instance, "bossAffixes", array);
			}
			Debug.Log((object)("Artifact of Brigade: This stages only Elite " + ((Object)chosenEliteDef).name));
			EliteDef val = chosenEliteDef;
			float num = 5f;
			if (chosenEliteDef.healthBoostCoefficient > 10f)
			{
				num = 30f;
			}
			EliteTierDef[] array2 = (EliteTierDef[])(object)new EliteTierDef[3];
			EliteTierDef val2 = new EliteTierDef();
			val2.costMultiplier = 1f;
			val2.eliteTypes = (EliteDef[])(object)new EliteDef[1];
			val2.canSelectWithoutAvailableEliteDef = true;
			val2.isAvailable = (EliteRules rules) => !CombatDirector.IsEliteOnlyArtifactActive();
			array2[0] = val2;
			val2 = new EliteTierDef();
			val2.costMultiplier = num;
			val2.eliteTypes = (EliteDef[])(object)new EliteDef[1] { val };
			val2.isAvailable = (EliteRules rules) => !CombatDirector.IsEliteOnlyArtifactActive();
			val2.canSelectWithoutAvailableEliteDef = false;
			array2[1] = val2;
			val2 = new EliteTierDef();
			val2.costMultiplier = num * 1.25f;
			val2.eliteTypes = (EliteDef[])(object)new EliteDef[1] { val };
			val2.isAvailable = (EliteRules rules) => CombatDirector.IsEliteOnlyArtifactActive();
			val2.canSelectWithoutAvailableEliteDef = false;
			array2[2] = val2;
			CombatDirector.eliteTiers = array2;
			if (Object.op_Implicit((Object)(object)SceneInfo.instance) && Object.op_Implicit((Object)(object)ClassicStageInfo.instance))
			{
				((MonoBehaviour)SceneInfo.instance).StartCoroutine(DelayedBrigadeMessage(chosenEliteDef.modifierToken, 1.5f));
				return;
			}
			Chat.SendBroadcastChat((ChatMessageBase)(object)new BrigadeMessage
			{
				eliteNameToken = chosenEliteDef.modifierToken
			});
		}

		public static IEnumerator DelayedBrigadeMessage(string elite, float delay)
		{
			yield return (object)new WaitForSeconds(delay);
			Chat.SendBroadcastChat((ChatMessageBase)(object)new BrigadeMessage
			{
				eliteNameToken = elite
			});
		}
	}
	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;
			WanderDissim_LunarSeer.PopulateSeerList();
		}

		private static void LunarTeleporterEvery5Stages(SceneDirector obj)
		{
			if (Run.instance.NetworkstageClearCount % Run.stagesPerLoop == Run.stagesPerLoop - 1)
			{
				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_00c5: 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_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: 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_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ff: Expected O, but got Unknown
			//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_0214: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Expected O, but got Unknown
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Expected O, but got Unknown
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0242: Unknown result type (might be due to invalid IL or missing references)
			//IL_0252: Unknown result type (might be due to invalid IL or missing references)
			//IL_025c: Expected O, but got Unknown
			//IL_025c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_027b: Expected O, but got Unknown
			//IL_027b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0280: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Unknown result type (might be due to invalid IL or missing references)
			//IL_029a: Expected O, but got Unknown
			//IL_029a: Unknown result type (might be due to invalid IL or missing references)
			//IL_029f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02af: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Expected O, but got Unknown
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d8: Expected O, but got Unknown
			//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f7: Expected O, but got Unknown
			//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_030c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0316: Expected O, but got Unknown
			//IL_0316: Unknown result type (might be due to invalid IL or missing references)
			//IL_031b: 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_0335: Expected O, but got Unknown
			//IL_0335: Unknown result type (might be due to invalid IL or missing references)
			//IL_033a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0340: Unknown result type (might be due to invalid IL or missing references)
			//IL_0345: 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_035d: Expected O, but got Unknown
			//IL_035d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0362: Unknown result type (might be due to invalid IL or missing references)
			//IL_0368: Unknown result type (might be due to invalid IL or missing references)
			//IL_036d: 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_0385: Expected O, but got Unknown
			//IL_0385: Unknown result type (might be due to invalid IL or missing references)
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0390: Unknown result type (might be due to invalid IL or missing references)
			//IL_0395: 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_03ad: Expected O, but got Unknown
			//IL_03ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bd: 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_03d5: Expected O, but got Unknown
			//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: 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_03e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fd: Expected O, but got Unknown
			//IL_03fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0402: Unknown result type (might be due to invalid IL or missing references)
			//IL_0412: Unknown result type (might be due to invalid IL or missing references)
			//IL_041c: Expected O, but got Unknown
			//IL_0421: Unknown result type (might be due to invalid IL or missing references)
			//IL_0426: Unknown result type (might be due to invalid IL or missing references)
			//IL_044b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0450: Unknown result type (might be due to invalid IL or missing references)
			//IL_0458: Unknown result type (might be due to invalid IL or missing references)
			//IL_0462: Expected O, but got Unknown
			//IL_046b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0470: Unknown result type (might be due to invalid IL or missing references)
			//IL_0480: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Expected O, but got Unknown
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_048f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0495: Unknown result type (might be due to invalid IL or missing references)
			//IL_049a: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b2: Expected O, but got Unknown
			//IL_04b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d0: Expected O, but got Unknown
			//IL_04d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f2: Expected O, but got Unknown
			//IL_04f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0507: Unknown result type (might be due to invalid IL or missing references)
			//IL_0514: Expected O, but got Unknown
			//IL_0514: Unknown result type (might be due to invalid IL or missing references)
			//IL_0519: Unknown result type (might be due to invalid IL or missing references)
			//IL_0529: Unknown result type (might be due to invalid IL or missing references)
			//IL_0536: Expected O, but got Unknown
			//IL_0536: Unknown result type (might be due to invalid IL or missing references)
			//IL_053b: Unknown result type (might be due to invalid IL or missing references)
			//IL_054b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0558: Expected O, but got Unknown
			//IL_0558: Unknown result type (might be due to invalid IL or missing references)
			//IL_055d: Unknown result type (might be due to invalid IL or missing references)
			//IL_056d: Unknown result type (might be due to invalid IL or missing references)
			//IL_057a: Expected O, but got Unknown
			//IL_057a: Unknown result type (might be due to invalid IL or missing references)
			//IL_057f: Unknown result type (might be due to invalid IL or missing references)
			//IL_058f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0599: Expected O, but got Unknown
			//IL_0599: Unknown result type (might be due to invalid IL or missing references)
			//IL_059e: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b8: Expected O, but got Unknown
			//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e0: Expected O, but got Unknown
			//IL_05e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ff: Expected O, but got Unknown
			//IL_05ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0604: Unknown result type (might be due to invalid IL or missing references)
			//IL_0614: Unknown result type (might be due to invalid IL or missing references)
			//IL_061e: Expected O, but got Unknown
			//IL_061e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0623: Unknown result type (might be due to invalid IL or missing references)
			//IL_0633: Unknown result type (might be due to invalid IL or missing references)
			//IL_063d: Expected O, but got Unknown
			//IL_063d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0642: Unknown result type (might be due to invalid IL or missing references)
			//IL_0652: Unknown result type (might be due to invalid IL or missing references)
			//IL_065c: Expected O, but got Unknown
			//IL_065c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0661: Unknown result type (might be due to invalid IL or missing references)
			//IL_0671: Unknown result type (might be due to invalid IL or missing references)
			//IL_067b: Expected O, but got Unknown
			//IL_067b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0680: Unknown result type (might be due to invalid IL or missing references)
			//IL_0690: Unknown result type (might be due to invalid IL or missing references)
			//IL_0699: Expected O, but got Unknown
			//IL_0699: Unknown result type (might be due to invalid IL or missing references)
			//IL_069e: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b8: Expected O, but got Unknown
			//IL_06b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d7: Expected O, but got Unknown
			//IL_06d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f5: Expected O, but got Unknown
			//IL_06f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_070a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0713: Expected O, but got Unknown
			//IL_0713: Unknown result type (might be due to invalid IL or missing references)
			//IL_0718: Unknown result type (might be due to invalid IL or missing references)
			//IL_0720: Unknown result type (might be due to invalid IL or missing references)
			//IL_072a: Expected O, but got Unknown
			//IL_072a: Unknown result type (might be due to invalid IL or missing references)
			//IL_072f: Unknown result type (might be due to invalid IL or missing references)
			//IL_073f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0749: Expected O, but got Unknown
			//IL_0749: Unknown result type (might be due to invalid IL or missing references)
			//IL_074e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0754: 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_0767: Unknown result type (might be due to invalid IL or missing references)
			//IL_0771: Expected O, but got Unknown
			//IL_0771: Unknown result type (might be due to invalid IL or missing references)
			//IL_0776: Unknown result type (might be due to invalid IL or missing references)
			//IL_077c: 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_078f: 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_07a0: Expected O, but got Unknown
			//IL_07a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c2: Expected O, but got Unknown
			//IL_07c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e1: Expected O, but got Unknown
			//IL_07e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0800: Expected O, but got Unknown
			//IL_0800: Unknown result type (might be due to invalid IL or missing references)
			//IL_0805: Unknown result type (might be due to invalid IL or missing references)
			//IL_0815: Unknown result type (might be due to invalid IL or missing references)
			//IL_081f: Expected O, but got Unknown
			//IL_081f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0824: Unknown result type (might be due to invalid IL or missing references)
			//IL_0834: Unknown result type (might be due to invalid IL or missing references)
			//IL_083e: Expected O, but got Unknown
			//IL_083e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0843: Unknown result type (might be due to invalid IL or missing references)
			//IL_084a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0854: Expected O, but got Unknown
			//IL_0854: Unknown result type (might be due to invalid IL or missing references)
			//IL_0859: Unknown result type (might be due to invalid IL or missing references)
			//IL_0860: Unknown result type (might be due to invalid IL or missing references)
			//IL_086a: Expected O, but got Unknown
			//IL_086a: Unknown result type (might be due to invalid IL or missing references)
			//IL_086f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0876: Unknown result type (might be due to invalid IL or missing references)
			//IL_0880: 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;
			((SpawnCard)val2).eliteRules = (EliteRules)0;
			val2.orientToFloor = true;
			val2.slightlyRandomizeOrientation = false;
			val2.skipSpawnWhenSacrificeArtifactEnabled = false;
			InteractableSpawnCard val3 = ScriptableObject.CreateInstance<InteractableSpawnCard>();
			((Object)val3).name = "iscSoupRedWhite";
			((SpawnCard)val3).prefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/networkedobjects/LunarCauldron, RedToWhite Variant");
			((SpawnCard)val3).sendOverNetwork = true;
			((SpawnCard)val3).hullSize = (HullClassification)1;
			((SpawnCard)val3).nodeGraphType = (GraphType)0;
			((SpawnCard)val3).requiredFlags = (NodeFlags)0;
			((SpawnCard)val3).forbiddenFlags = (NodeFlags)8;
			((SpawnCard)val3).directorCreditCost = 1;
			((SpawnCard)val3).occupyPosition = true;
			((SpawnCard)val3).eliteRules = (EliteRules)0;
			val3.orientToFloor = true;
			val3.slightlyRandomizeOrientation = false;
			val3.skipSpawnWhenSacrificeArtifactEnabled = false;
			GameObject val4 = LegacyResourcesAPI.Load<GameObject>("Prefabs/networkedobjects/SeerStation");
			SeerStationController component = val4.GetComponent<SeerStationController>();
			component.fallBackToFirstActiveExitController = true;
			InteractableSpawnCard val5 = ScriptableObject.CreateInstance<InteractableSpawnCard>();
			((Object)val5).name = "iscLunarSeer";
			((SpawnCard)val5).prefab = val4;
			((SpawnCard)val5).sendOverNetwork = true;
			((SpawnCard)val5).hullSize = (HullClassification)0;
			((SpawnCard)val5).nodeGraphType = (GraphType)0;
			((SpawnCard)val5).requiredFlags = (NodeFlags)0;
			((SpawnCard)val5).forbiddenFlags = (NodeFlags)8;
			((SpawnCard)val5).directorCreditCost = 1;
			((SpawnCard)val5).occupyPosition = true;
			((SpawnCard)val5).eliteRules = (EliteRules)0;
			val5.orientToFloor = true;
			val5.slightlyRandomizeOrientation = false;
			val5.skipSpawnWhenSacrificeArtifactEnabled = false;
			DirectorCard val6 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscChest1"),
				selectionWeight = 240
			};
			DirectorCard val7 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscChest2"),
				selectionWeight = 40
			};
			DirectorCard val8 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscEquipmentBarrel"),
				selectionWeight = 20
			};
			DirectorCard val9 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscTripleShop"),
				selectionWeight = 40
			};
			DirectorCard val10 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscLunarChest"),
				selectionWeight = 15
			};
			DirectorCard val11 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscCategoryChestDamage"),
				selectionWeight = 25
			};
			DirectorCard val12 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscCategoryChestHealing"),
				selectionWeight = 25
			};
			DirectorCard val13 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscCategoryChestUtility"),
				selectionWeight = 25
			};
			DirectorCard val14 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscTripleShopLarge"),
				selectionWeight = 40
			};
			DirectorCard val15 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscCasinoChest"),
				selectionWeight = 40
			};
			DirectorCard val16 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscTripleShopEquipment"),
				selectionWeight = 20
			};
			DirectorCard val17 = new DirectorCard
			{
				spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/CategoryChest2/iscCategoryChest2Damage.asset").WaitForCompletion(),
				selectionWeight = 20
			};
			DirectorCard val18 = new DirectorCard
			{
				spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/CategoryChest2/iscCategoryChest2Healing.asset").WaitForCompletion(),
				selectionWeight = 20
			};
			DirectorCard val19 = new DirectorCard
			{
				spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/CategoryChest2/iscCategoryChest2Utility.asset").WaitForCompletion(),
				selectionWeight = 20
			};
			DirectorCard val20 = new DirectorCard
			{
				spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/VoidChest/iscVoidChest.asset").WaitForCompletion(),
				selectionWeight = 40
			};
			DirectorCard val21 = new DirectorCard
			{
				spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/VoidTriple/iscVoidTriple.asset").WaitForCompletion(),
				selectionWeight = 20
			};
			DirectorCard val22 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBarrel1"),
				selectionWeight = 100
			};
			InteractableSpawnCard val23 = Object.Instantiate<InteractableSpawnCard>(Addressables.LoadAssetAsync<InteractableSpawnCard>((object)"RoR2/DLC1/VoidCoinBarrel/iscVoidCoinBarrel.asset").WaitForCompletion());
			((Object)val23).name = "iscVoidCoinBarrelLowPrice";
			((SpawnCard)val23).directorCreditCost = 2;
			DirectorCard val24 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)val23,
				selectionWeight = 50
			};
			val24.spawnCard = (SpawnCard)(object)val23;
			DirectorCard val25 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscScrapper"),
				selectionWeight = 15
			};
			DirectorCard val26 = new DirectorCard
			{
				spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/VoidCamp/iscVoidCamp.asset").WaitForCompletion(),
				selectionWeight = 25
			};
			DirectorCard val27 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBarrel1"),
				selectionWeight = 1
			};
			DirectorCard val28 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscShrineCombat"),
				selectionWeight = 250
			};
			DirectorCard val29 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscShrineBoss"),
				selectionWeight = 250
			};
			DirectorCard val30 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscShrineChance"),
				selectionWeight = 400
			};
			DirectorCard val31 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscShrineBlood"),
				selectionWeight = 200
			};
			DirectorCard val32 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscShrineHealing"),
				selectionWeight = 200
			};
			DirectorCard val33 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscShrineRestack"),
				selectionWeight = 50
			};
			DirectorCard val34 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscShrineCleanse"),
				selectionWeight = 100
			};
			DirectorCard val35 = new DirectorCard
			{
				spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC2/iscShrineColossusAccess.asset").WaitForCompletion(),
				selectionWeight = 50
			};
			DirectorCard val36 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenDrone1"),
				selectionWeight = 21
			};
			DirectorCard val37 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenDrone2"),
				selectionWeight = 21
			};
			DirectorCard val38 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenEmergencyDrone"),
				selectionWeight = 14
			};
			DirectorCard val39 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenEquipmentDrone"),
				selectionWeight = 14
			};
			DirectorCard val40 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenFlameDrone"),
				selectionWeight = 14
			};
			DirectorCard val41 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenMegaDrone"),
				selectionWeight = 3
			};
			DirectorCard val42 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenMissileDrone"),
				selectionWeight = 14
			};
			DirectorCard val43 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenTurret1"),
				selectionWeight = 14
			};
			DirectorCard val44 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscGoldChest"),
				selectionWeight = 6
			};
			DirectorCard val45 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscShrineGoldshoresAccess"),
				selectionWeight = 5
			};
			DirectorCard val46 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)val5,
				selectionWeight = 17
			};
			DirectorCard val47 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscChest1Stealthed"),
				selectionWeight = 13
			};
			DirectorCard val48 = new DirectorCard
			{
				spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/VoidSuppressor/iscVoidSuppressor.asset").WaitForCompletion(),
				selectionWeight = 23
			};
			DirectorCard val49 = new DirectorCard
			{
				spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC2/iscShrineHalcyonite.asset").WaitForCompletion(),
				selectionWeight = 23,
				minimumStageCompletions = 1
			};
			DirectorCard val50 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscDuplicator"),
				selectionWeight = 300
			};
			DirectorCard val51 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscDuplicatorLarge"),
				selectionWeight = 80
			};
			DirectorCard val52 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscDuplicatorMilitary"),
				selectionWeight = 30
			};
			DirectorCard val53 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscDuplicatorWild"),
				selectionWeight = 30
			};
			DirectorCard val54 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscScrapper"),
				selectionWeight = 120
			};
			DirectorCard val55 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)val,
				selectionWeight = 75
			};
			DirectorCard val56 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)val2,
				selectionWeight = 45
			};
			DirectorCard val57 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)val3,
				selectionWeight = 25
			};
			mixInteractablesCards.AddCategory("Chests", 45f);
			mixInteractablesCards.AddCategory("Barrels", 10f);
			mixInteractablesCards.AddCategory("Shrines", 10f);
			mixInteractablesCards.AddCategory("Drones", 14f);
			mixInteractablesCards.AddCategory("Misc", 2f);
			mixInteractablesCards.AddCategory("Rare", 0.4f);
			mixInteractablesCards.AddCategory("Duplicator", 8f);
			mixInteractablesCards.AddCategory("Void Stuff", 1f);
			mixInteractablesCards.AddCategory("Storm Stuff", 1f);
			mixInteractablesCards.AddCard(0, val6);
			mixInteractablesCards.AddCard(0, val7);
			mixInteractablesCards.AddCard(0, val11);
			mixInteractablesCards.AddCard(0, val12);
			mixInteractablesCards.AddCard(0, val13);
			mixInteractablesCards.AddCard(0, val8);
			mixInteractablesCards.AddCard(0, val10);
			mixInteractablesCards.AddCard(0, val9);
			mixInteractablesCards.AddCard(0, val14);
			mixInteractablesCards.AddCard(0, val16);
			mixInteractablesCards.AddCard(0, val15);
			mixInteractablesCards.AddCard(0, val17);
			mixInteractablesCards.AddCard(0, val18);
			mixInteractablesCards.AddCard(0, val19);
			mixInteractablesCards.AddCard(0, val20);
			mixInteractablesCards.AddCard(0, val21);
			mixInteractablesCards.AddCard(1, val22);
			mixInteractablesCards.AddCard(1, val24);
			mixInteractablesCards.AddCard(1, val25);
			mixInteractablesCards.AddCard(1, val26);
			mixInteractablesCards.AddCard(2, val31);
			mixInteractablesCards.AddCard(2, val29);
			mixInteractablesCards.AddCard(2, val29);
			mixInteractablesCards.AddCard(2, val30);
			mixInteractablesCards.AddCard(2, val34);
			mixInteractablesCards.AddCard(2, val28);
			mixInteractablesCards.AddCard(2, val32);
			mixInteractablesCards.AddCard(2, val33);
			mixInteractablesCards.AddCard(2, val35);
			mixInteractablesCards.AddCard(3, val36);
			mixInteractablesCards.AddCard(3, val37);
			mixInteractablesCards.AddCard(3, val38);
			mixInteractablesCards.AddCard(3, val39);
			mixInteractablesCards.AddCard(3, val40);
			mixInteractablesCards.AddCard(3, val41);
			mixInteractablesCards.AddCard(3, val42);
			mixInteractablesCards.AddCard(3, val43);
			mixInteractablesCards.AddCard(5, val47);
			mixInteractablesCards.AddCard(5, val44);
			mixInteractablesCards.AddCard(5, val45);
			mixInteractablesCards.AddCard(5, val48);
			mixInteractablesCards.AddCard(5, val46);
			mixInteractablesCards.AddCard(5, val49);
			mixInteractablesCards.AddCard(6, val54);
			mixInteractablesCards.AddCard(6, val50);
			mixInteractablesCards.AddCard(6, val51);
			mixInteractablesCards.AddCard(6, val52);
			mixInteractablesCards.AddCard(6, val53);
			mixInteractablesCards.AddCard(6, val55);
			mixInteractablesCards.AddCard(6, val56);
			mixInteractablesCards.AddCard(6, val57);
		}

		public static void MakeTrimmerMixInteractablesDCCS()
		{
			//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_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Expected O, but got Unknown
			if (Object.op_Implicit((Object)(object)Run.instance))
			{
				if (ClassicStageInfo.instance.sceneDirectorInteractibleCredits != 0)
				{
					ClassicStageInfo instance = ClassicStageInfo.instance;
					instance.sceneDirectorInteractibleCredits += 4;
				}
				TrimmedmixInteractablesCards.Clear();
				TrimmedmixInteractablesCards.CopyFrom(mixInteractablesCards);
				TrimmedmixInteractablesCards.categories[2].selectionWeight = random.Next(7, 13);
				TrimmedmixInteractablesCards.categories[3].selectionWeight = random.Next(3, 15);
				Filters.Mix_ApplyCardRemovingFilters(TrimmedmixInteractablesCards);
				Filters.MixInteractables_Trimmer_Direct(TrimmedmixInteractablesCards);
				Filters.ApplySandSnow(TrimmedmixInteractablesCards);
				if (Object.op_Implicit((Object)(object)Run.instance) && Run.instance.stageClearCount == 0)
				{
					DirectorCard val = new DirectorCard
					{
						spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC2/iscShrineHalcyoniteTier1.asset").WaitForCompletion(),
						selectionWeight = 200
					};
					TrimmedmixInteractablesCards.AddCard(2, val);
				}
			}
		}
	}
	public class Kith
	{
		public static readonly Random random = new Random();

		public static SpawnCard KithNoRepeat;

		public static DirectorCardCategorySelection tempSaftey;

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

		public static List<SpawnCard> blacklistedForRepeat = new List<SpawnCard>();

		public static void Start()
		{
			((Object)dccsSingleInteractable).name = "dccsSingleInteractable";
		}

		public static void OnArtifactEnable()
		{
			SceneDirector.onGenerateInteractableCardSelection += ModifyCards;
			if (blacklistedForRepeat.Count == 0)
			{
				blacklistedForRepeat.Add((SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscEquipmentBarrel"));
				blacklistedForRepeat.Add((SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscTripleShopEquipment"));
				blacklistedForRepeat.Add((SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscLunarChest"));
			}
			KithNoRepeat = null;
		}

		public static void OnArtifactDisable()
		{
			SceneDirector.onGenerateInteractableCardSelection -= ModifyCards;
		}

		private static void ModifyCards(SceneDirector self, DirectorCardCategorySelection dccs)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Expected O, but got Unknown
			DirectorCardCategorySelection.GenerateDirectorCardWeightedSelection += new hook_GenerateDirectorCardWeightedSelection(Handle_SingleInteractable);
			if (self.interactableCredit != 0)
			{
				self.interactableCredit += 15;
			}
			dccs.RemoveCardsThatFailFilter((Predicate<DirectorCard>)Filters.NoMoreRadioTower);
			if ((Object)(object)KithNoRepeat != (Object)null && blacklistedForRepeat.Contains(KithNoRepeat))
			{
				dccs.RemoveCardsThatFailFilter((Predicate<DirectorCard>)Filters.Kith_DoNotRepeatLunarEquipmentOnly);
			}
			else if (Object.op_Implicit((Object)(object)Run.instance) && Run.instance.stageClearCount == 0)
			{
				dccs.RemoveCardsThatFailFilter((Predicate<DirectorCard>)Filters.Kith_DoNotRepeatLunarEquipmentOnly);
			}
			DirectorCard val = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBarrel1"),
				selectionWeight = 1
			};
			int num = dccs.AddCategory("SafeteyBarrel", 0.1f);
			dccs.AddCard(num, val);
			tempSaftey = dccs;
			dccsSingleInteractable.CopyFrom(dccs);
			if (dccsSingleInteractable.categories[0].cards.Length != 0)
			{
				KithNoRepeat = dccsSingleInteractable.categories[0].cards[0].spawnCard;
			}
		}

		private static WeightedSelection<DirectorCard> Handle_SingleInteractable(orig_GenerateDirectorCardWeightedSelection orig, DirectorCardCategorySelection self)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			DirectorCardCategorySelection.GenerateDirectorCardWeightedSelection -= new hook_GenerateDirectorCardWeightedSelection(Handle_SingleInteractable);
			if ((Object)(object)self == (Object)(object)tempSaftey)
			{
				Filters.SingleInteractable_Trimmer(self);
				if (WConfig.KithNoMinimumStageCompletion.Value)
				{
					self.RemoveCardsThatFailFilter((Predicate<DirectorCard>)Filters.RemoveMinimumStageCompletionTrimmer);
				}
			}
			return orig.Invoke(self);
		}
	}
	public class Obscurity
	{
		public static Sprite BlindT1;

		public static Sprite BlindT2;

		public static Sprite BlindT3;

		public static Sprite BlindBoss;

		public static Sprite BlindLunar;

		public static Sprite BlindVoid;

		public static Sprite BlindEquipment;

		public static Sprite BlindMod;

		public static void Start()
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_015a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_023b: Unknown result type (might be due to invalid IL or missing references)
			//IL_024a: Unknown result type (might be due to invalid IL or missing references)
			Texture2D val = Assets.Bundle.LoadAsset<Texture2D>("Assets/Artifacts/Blind/BlindT1.png");
			((Texture)val).wrapMode = (TextureWrapMode)1;
			BlindT1 = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f));
			val = Assets.Bundle.LoadAsset<Texture2D>("Assets/Artifacts/Blind/BlindT2.png");
			((Texture)val).wrapMode = (TextureWrapMode)1;
			BlindT2 = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f));
			val = Assets.Bundle.LoadAsset<Texture2D>("Assets/Artifacts/Blind/BlindT3.png");
			((Texture)val).wrapMode = (TextureWrapMode)1;
			BlindT3 = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f));
			val = Assets.Bundle.LoadAsset<Texture2D>("Assets/Artifacts/Blind/BlindBoss.png");
			((Texture)val).wrapMode = (TextureWrapMode)1;
			BlindBoss = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f));
			val = Assets.Bundle.LoadAsset<Texture2D>("Assets/Artifacts/Blind/BlindLunar.png");
			((Texture)val).wrapMode = (TextureWrapMode)1;
			BlindLunar = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f));
			val = Assets.Bundle.LoadAsset<Texture2D>("Assets/Artifacts/Blind/BlindVoid.png");
			((Texture)val).wrapMode = (TextureWrapMode)1;
			BlindVoid = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f));
			val = Assets.Bundle.LoadAsset<Texture2D>("Assets/Artifacts/Blind/BlindEq.png");
			((Texture)val).wrapMode = (TextureWrapMode)1;
			BlindEquipment = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f));
			val = Assets.Bundle.LoadAsset<Texture2D>("Assets/Artifacts/Blind/BlindMod.png");
			((Texture)val).wrapMode = (TextureWrapMode)1;
			BlindMod = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f));
		}

		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
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Expected O, but got Unknown
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Expected O, but got Unknown
			PickupDisplay.RebuildModel += new hook_RebuildModel(Hide_PickupOverworld);
			GenericPickupController.GetDisplayName += new hook_GetDisplayName(Hide_GetDisplayName);
			PlayerPickupChatMessage.ConstructChatString += new hook_ConstructChatString(Hide_PickupChatMessage);
			PingIndicator.RebuildPing += new Manipulator(Hide_PingChat);
			CharacterModel.UpdateItemDisplay += new hook_UpdateItemDisplay(Hide_PickupDisplays);
			ItemIcon.SetItemIndex += new hook_SetItemIndex(Hide_ItemIcon);
			EquipmentIcon.SetDisplayData += new hook_SetDisplayData(Hide_EquipmentIcon);
		}

		public static void OnArtifactDisable()
		{
		}

		private static void Hide_PickupDisplays(orig_UpdateItemDisplay orig, CharacterModel self, Inventory inventory)
		{
		}

		private static void Hide_PingChat(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchCallvirt(x, "RoR2.ShopTerminalBehavior", "get_pickupIndexIsHidden")
			}))
			{
				val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "RoR2.PickupDef", "nameToken")
				});
				val.EmitDelegate<Func<string, string>>((Func<string, string>)((string damageInfo) => "SHOP_ITEM_MYSTERY_TITLE"));
			}
			else
			{
				Debug.LogWarning((object)"IL Failed: Hide_PingChat");
			}
		}

		private static string Hide_GetDisplayName(orig_GetDisplayName orig, GenericPickupController self)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			string @string = Language.GetString("SHOP_ITEM_MYSTERY_TITLE");
			PickupDef pickupDef = PickupCatalog.GetPickupDef(self.pickupIndex);
			if (pickupDef != null)
			{
				string text = ColorUtility.ToHtmlStringRGB(pickupDef.baseColor);
				return "<color=#" + text + ">" + @string + "</color>";
			}
			return @string;
		}

		private static string Hide_PickupChatMessage(orig_ConstructChatString orig, PlayerPickupChatMessage self)
		{
			self.pickupToken = "SHOP_ITEM_MYSTERY_TITLE";
			return orig.Invoke(self);
		}

		private static void Hide_EquipmentIcon(orig_SetDisplayData orig, EquipmentIcon self, ValueType newDisplayData)
		{
			orig.Invoke(self, newDisplayData);
			if (Object.op_Implicit((Object)(object)self.iconImage) && (Object)(object)self.iconImage != (Object)null)
			{
				self.iconImage.texture = (Texture)(object)BlindEquipment.texture;
				if (Object.op_Implicit((Object)(object)self.tooltipProvider))
				{
					self.tooltipProvider.titleToken = "SHOP_ITEM_MYSTERY_TITLE";
					self.tooltipProvider.bodyToken = "INSPECT_INFO_MISSING_DESCRIPTION";
				}
			}
		}

		private static void Hide_ItemIcon(orig_SetItemIndex orig, ItemIcon self, ItemIndex newItemIndex, int newItemCount)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: 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_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: 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_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Expected I4, but got Unknown
			orig.Invoke(self, newItemIndex, newItemCount);
			self.tooltipProvider.titleToken = "SHOP_ITEM_MYSTERY_TITLE";
			self.tooltipProvider.bodyToken = "INSPECT_INFO_MISSING_DESCRIPTION";
			ItemDef itemDef = ItemCatalog.GetItemDef(newItemIndex);
			ItemTier tier = itemDef.tier;
			ItemTier val = tier;
			switch ((int)val)
			{
			case 5:
				break;
			case 0:
				self.image.texture = (Texture)(object)BlindT1.texture;
				break;
			case 1:
				self.image.texture = (Texture)(object)BlindT2.texture;
				break;
			case 2:
				self.image.texture = (Texture)(object)BlindT3.texture;
				break;
			case 4:
				self.image.texture = (Texture)(object)BlindBoss.texture;
				break;
			case 3:
				self.image.texture = (Texture)(object)BlindLunar.texture;
				break;
			case 6:
			case 7:
			case 8:
			case 9:
				self.image.texture = (Texture)(object)BlindVoid.texture;
				break;
			default:
				self.image.texture = (Texture)(object)BlindMod.texture;
				break;
			}
		}

		private static void Hide_PickupOverworld(orig_RebuildModel orig, PickupDisplay self, GameObject modelObjectOverride)
		{
			self.hidden = true;
			orig.Invoke(self, modelObjectOverride);
		}
	}
	public class Remodeling
	{
		public static readonly Random random = new Random();

		public static List<List<PickupIndex>> itemPickupLists;

		public static List<List<PickupIndex>> equipmentPickupLists;

		public static void OnArtifactEnable()
		{
			if (NetworkServer.active)
			{
				MakePickupIndexLists();
				SceneDirector.onPrePopulateSceneServer += RandomizeOnStageStart;
				SceneDirector.onGenerateInteractableCardSelection += RemoveInteractables_Remodeling;
			}
			Debug.Log((object)"Added Remodeling");
		}

		public static void OnArtifactDisable()
		{
			if (NetworkServer.active)
			{
				SceneDirector.onPrePopulateSceneServer -= RandomizeOnStageStart;
				SceneDirector.onGenerateInteractableCardSelection -= RemoveInteractables_Remodeling;
			}
			itemPickupLists = null;
			equipmentPickupLists = null;
		}

		private static void RemoveInteractables_Remodeling(SceneDirector sceneDirector, DirectorCardCategorySelection dccs)
		{
			dccs.RemoveCardsThatFailFilter((Predicate<DirectorCard>)Filters.NoMorePrinters);
		}

		public static void MakePickupIndexLists()
		{
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: 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_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0211: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Unknown result type (might be due to invalid IL or missing references)
			//IL_0236: Unknown result type (might be due to invalid IL or missing references)
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)Run.instance))
			{
				Run.instance.BuildDropTable();
				int num = ItemTierCatalog.itemTierDefs.Length + 1;
				itemPickupLists = new List<List<PickupIndex>>(num);
				equipmentPickupLists = new List<List<PickupIndex>>(3);
				for (int i = 0; i < num; i++)
				{
					itemPickupLists.Add(new List<PickupIndex>());
				}
				for (int j = 0; j < 3; j++)
				{
					equipmentPickupLists.Add(new List<PickupIndex>());
				}
				itemPickupLists[0].AddRange(Run.instance.availableTier1DropList);
				itemPickupLists[1].AddRange(Run.instance.availableTier2DropList);
				itemPickupLists[2].AddRange(Run.instance.availableTier3DropList);
				itemPickupLists[3].AddRange(Run.instance.availableLunarItemDropList);
				itemPickupLists[4].AddRange(Run.instance.availableBossDropList);
				itemPickupLists[6].AddRange(Run.instance.availableVoidTier1DropList);
				itemPickupLists[7].AddRange(Run.instance.availableVoidTier2DropList);
				itemPickupLists[8].AddRange(Run.instance.availableVoidTier3DropList);
				itemPickupLists[9].AddRange(Run.instance.availableVoidBossDropList);
				itemPickupLists[3].Remove(PickupCatalog.FindPickupIndex(Items.LunarPrimaryReplacement.itemIndex));
				itemPickupLists[3].Remove(PickupCatalog.FindPickupIndex(Items.LunarSecondaryReplacement.itemIndex));
				itemPickupLists[3].Remove(PickupCatalog.FindPickupIndex(Items.LunarUtilityReplacement.itemIndex));
				itemPickupLists[3].Remove(PickupCatalog.FindPickupIndex(Items.LunarSpecialReplacement.itemIndex));
				itemPickupLists[3].Remove(PickupCatalog.FindPickupIndex(Items.LunarTrinket.itemIndex));
				itemPickupLists[4].Add(PickupCatalog.FindPickupIndex(Items.Pearl.itemIndex));
				itemPickupLists[4].Add(PickupCatalog.FindPickupIndex(Items.ShinyPearl.itemIndex));
				equipmentPickupLists[0].AddRange(Run.instance.availableEquipmentDropList);
				equipmentPickupLists[1].AddRange(Run.instance.availableLunarEquipmentDropList);
				equipmentPickupLists[2].AddRange(PickupTransmutationManager.e