Decompiled source of VanillaArtifactsPlus v3.2.0

FixedspawnDissonance.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 HG;
using IL.RoR2;
using IL.RoR2.Artifacts;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On;
using On.RoR2;
using On.RoR2.Artifacts;
using On.RoR2.CharacterAI;
using On.RoR2.UI;
using R2API;
using R2API.Utils;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.Artifacts;
using RoR2.CharacterAI;
using RoR2.Items;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;

[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("FixedspawnDissonance")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+0d90aed3a1c8094afc08355a6d7e95e89d254356")]
[assembly: AssemblyProduct("FixedspawnDissonance")]
[assembly: AssemblyTitle("FixedspawnDissonance")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace FixedspawnDissonance
{
	public class Command
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_SetOptionsInternal <0>__AddVoidParticlesToCommand;

			public static hook_RebuildPickupGroups <1>__AddEliteEquipmentsToCommand;

			public static hook_IsEquipmentAvailable <2>__Make_EliteEquipmentAvailable;
		}

		public static void OnArtifactDisable()
		{
		}

		public static void OnArtifactEnable()
		{
		}

		public static void Start()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			object obj = <>O.<0>__AddVoidParticlesToCommand;
			if (obj == null)
			{
				hook_SetOptionsInternal val = AddVoidParticlesToCommand;
				<>O.<0>__AddVoidParticlesToCommand = val;
				obj = (object)val;
			}
			PickupPickerController.SetOptionsInternal += (hook_SetOptionsInternal)obj;
			object obj2 = <>O.<1>__AddEliteEquipmentsToCommand;
			if (obj2 == null)
			{
				hook_RebuildPickupGroups val2 = AddEliteEquipmentsToCommand;
				<>O.<1>__AddEliteEquipmentsToCommand = val2;
				obj2 = (object)val2;
			}
			PickupTransmutationManager.RebuildPickupGroups += (hook_RebuildPickupGroups)obj2;
			object obj3 = <>O.<2>__Make_EliteEquipmentAvailable;
			if (obj3 == null)
			{
				hook_IsEquipmentAvailable val3 = Make_EliteEquipmentAvailable;
				<>O.<2>__Make_EliteEquipmentAvailable = val3;
				obj3 = (object)val3;
			}
			Run.IsEquipmentAvailable += (hook_IsEquipmentAvailable)obj3;
		}

		private static void AddVoidParticlesToCommand(orig_SetOptionsInternal orig, PickupPickerController self, Option[] newOptions)
		{
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Invalid comparison between Unknown and I4
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Invalid comparison between Unknown and I4
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			if (((Object)self).name.StartsWith("Command"))
			{
				PickupIndexNetworker component = ((Component)self).GetComponent<PickupIndexNetworker>();
				if ((Object)(object)component != (Object)null && Object.op_Implicit((Object)(object)component.pickupDisplay))
				{
					PickupDef pickupDef = ((PickupIndex)(ref component.pickupIndex)).pickupDef;
					if ((int)pickupDef.itemTier >= 6 && (int)pickupDef.itemTier <= 9)
					{
						((Component)self).gameObject.GetComponent<GenericDisplayNameProvider>().displayToken = "ARTIFACT_COMMAND_CUBE_PINK_NAME";
						if (!Object.op_Implicit((Object)(object)component.pickupDisplay.voidParticleEffect))
						{
							GameObject val = Object.Instantiate<GameObject>(LegacyResourcesAPI.Load<GameObject>("Prefabs/NetworkedObjects/GenericPickup").GetComponent<GenericPickupController>().pickupDisplay.voidParticleEffect, ((Component)self).transform.GetChild(0));
							val.SetActive(true);
							GameObject val2 = Object.Instantiate<GameObject>(((Component)component.pickupDisplay.tier2ParticleEffect.transform.GetChild(2)).gameObject, val.transform);
							val2.GetComponent<ParticleSystem>().startColor = Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)25));
							component.pickupDisplay.voidParticleEffect = val;
						}
					}
				}
			}
			orig.Invoke(self, newOptions);
		}

		private static bool Make_EliteEquipmentAvailable(orig_IsEquipmentAvailable orig, Run self, EquipmentIndex equipmentIndex)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex);
			if (Object.op_Implicit((Object)(object)equipmentDef) && Object.op_Implicit((Object)(object)equipmentDef.passiveBuffDef))
			{
				return !self.IsEquipmentExpansionLocked(equipmentIndex);
			}
			return orig.Invoke(self, equipmentIndex);
		}

		private static void AddEliteEquipmentsToCommand(orig_RebuildPickupGroups orig)
		{
			for (int i = 0; i < EliteCatalog.eliteDefs.Length; i++)
			{
				EliteDef val = EliteCatalog.eliteDefs[i];
				EquipmentDef eliteEquipmentDef = val.eliteEquipmentDef;
				if ((Object)(object)eliteEquipmentDef != (Object)null && !((Object)val).name.EndsWith("Gold") && eliteEquipmentDef.dropOnDeathChance > 0f)
				{
					eliteEquipmentDef.canDrop = true;
					eliteEquipmentDef.isBoss = true;
					eliteEquipmentDef.isLunar = false;
				}
			}
			orig.Invoke();
			for (int j = 0; j < EliteCatalog.eliteDefs.Length; j++)
			{
				EliteDef val2 = EliteCatalog.eliteDefs[j];
				EquipmentDef eliteEquipmentDef2 = val2.eliteEquipmentDef;
				if ((Object)(object)eliteEquipmentDef2 != (Object)null && eliteEquipmentDef2.dropOnDeathChance > 0f)
				{
					eliteEquipmentDef2.canDrop = false;
				}
			}
		}
	}
	public class Devotion
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_OnDevotionArtifactEnabled <0>__FixMissingEliteTypes;

			public static hook_OnDevotionArtifactDisabled <1>__Fix_EliteListBeingBlank;

			public static hook_CreateItemTakenOrb <2>__Fix_NullrefWhenOrb;

			public static hook_Rebuild <3>__AddLemurianInventory;

			public static hook_UpdateAllMinions <4>__FixEvoltionBeing1Behind;

			public static Manipulator <5>__FixOneBehindRemoveItemHere;

			public static hook_SetOptionsFromInteractor <6>__VoidForLemurians;

			public static hook_DropScrapOnDeath <7>__ScrapForVoids;

			public static hook_HealthComponentToTransform <8>__FixTwisteds_NotWorkingOnPlayers;

			public static hook_Start <9>__DevotedLemurianController_Start;
		}

		public static void Start()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Expected O, but got Unknown
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: 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_00c1: Expected O, but got Unknown
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: 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_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Expected O, but got Unknown
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Expected O, but got Unknown
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_018d: Expected O, but got Unknown
			object obj = <>O.<0>__FixMissingEliteTypes;
			if (obj == null)
			{
				hook_OnDevotionArtifactEnabled val = FixMissingEliteTypes;
				<>O.<0>__FixMissingEliteTypes = val;
				obj = (object)val;
			}
			DevotionInventoryController.OnDevotionArtifactEnabled += (hook_OnDevotionArtifactEnabled)obj;
			object obj2 = <>O.<1>__Fix_EliteListBeingBlank;
			if (obj2 == null)
			{
				hook_OnDevotionArtifactDisabled val2 = Fix_EliteListBeingBlank;
				<>O.<1>__Fix_EliteListBeingBlank = val2;
				obj2 = (object)val2;
			}
			DevotionInventoryController.OnDevotionArtifactDisabled += (hook_OnDevotionArtifactDisabled)obj2;
			object obj3 = <>O.<2>__Fix_NullrefWhenOrb;
			if (obj3 == null)
			{
				hook_CreateItemTakenOrb val3 = Fix_NullrefWhenOrb;
				<>O.<2>__Fix_NullrefWhenOrb = val3;
				obj3 = (object)val3;
			}
			LemurianEggController.CreateItemTakenOrb += (hook_CreateItemTakenOrb)obj3;
			object obj4 = <>O.<3>__AddLemurianInventory;
			if (obj4 == null)
			{
				hook_Rebuild val4 = AddLemurianInventory;
				<>O.<3>__AddLemurianInventory = val4;
				obj4 = (object)val4;
			}
			ScoreboardController.Rebuild += (hook_Rebuild)obj4;
			object obj5 = <>O.<4>__FixEvoltionBeing1Behind;
			if (obj5 == null)
			{
				hook_UpdateAllMinions val5 = FixEvoltionBeing1Behind;
				<>O.<4>__FixEvoltionBeing1Behind = val5;
				obj5 = (object)val5;
			}
			DevotionInventoryController.UpdateAllMinions += (hook_UpdateAllMinions)obj5;
			object obj6 = <>O.<5>__FixOneBehindRemoveItemHere;
			if (obj6 == null)
			{
				Manipulator val6 = FixOneBehindRemoveItemHere;
				<>O.<5>__FixOneBehindRemoveItemHere = val6;
				obj6 = (object)val6;
			}
			DevotionInventoryController.UpdateMinionInventory += (Manipulator)obj6;
			object obj7 = <>O.<6>__VoidForLemurians;
			if (obj7 == null)
			{
				hook_SetOptionsFromInteractor val7 = VoidForLemurians;
				<>O.<6>__VoidForLemurians = val7;
				obj7 = (object)val7;
			}
			PickupPickerController.SetOptionsFromInteractor += (hook_SetOptionsFromInteractor)obj7;
			object obj8 = <>O.<7>__ScrapForVoids;
			if (obj8 == null)
			{
				hook_DropScrapOnDeath val8 = ScrapForVoids;
				<>O.<7>__ScrapForVoids = val8;
				obj8 = (object)val8;
			}
			DevotionInventoryController.DropScrapOnDeath += (hook_DropScrapOnDeath)obj8;
			GameObject val9 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Lemurian/Fireball.prefab").WaitForCompletion();
			GameObject val10 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/LemurianBigFireball.prefab").WaitForCompletion();
			val9.GetComponent<ProjectileDamage>().damageType.damageSource = (DamageSource)1;
			val10.GetComponent<ProjectileDamage>().damageType.damageSource = (DamageSource)1;
			object obj9 = <>O.<8>__FixTwisteds_NotWorkingOnPlayers;
			if (obj9 == null)
			{
				hook_HealthComponentToTransform val11 = FixTwisteds_NotWorkingOnPlayers;
				<>O.<8>__FixTwisteds_NotWorkingOnPlayers = val11;
				obj9 = (object)val11;
			}
			Util.HealthComponentToTransform += (hook_HealthComponentToTransform)obj9;
			object obj10 = <>O.<9>__DevotedLemurianController_Start;
			if (obj10 == null)
			{
				hook_Start val12 = DevotedLemurianController_Start;
				<>O.<9>__DevotedLemurianController_Start = val12;
				obj10 = (object)val12;
			}
			DevotedLemurianController.Start += (hook_Start)obj10;
		}

		private static void FixOneBehindRemoveItemHere(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchCallvirt(x, "RoR2.Inventory", "GiveItem")
			}))
			{
				val.Prev.OpCode = OpCodes.Ldc_I4_0;
			}
			else
			{
				Debug.LogWarning((object)"IL Failed: FixOneBehindRemoveItemHerel");
			}
		}

		private static void ScrapForVoids(orig_DropScrapOnDeath orig, DevotionInventoryController self, ItemIndex devotionItem, CharacterBody minionBody)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Expected I4, but got Unknown
			//IL_00ae: 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_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: 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_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self, devotionItem, minionBody);
			PickupIndex val = PickupIndex.none;
			ItemDef itemDef = ItemCatalog.GetItemDef(devotionItem);
			if ((Object)(object)itemDef != (Object)null)
			{
				ItemTier tier = itemDef.tier;
				ItemTier val2 = tier;
				switch (val2 - 3)
				{
				case 0:
					val = PickupCatalog.FindPickupIndex(MiscPickups.LunarCoin.miscPickupIndex);
					break;
				case 3:
					val = PickupCatalog.FindPickupIndex("ItemIndex.ScrapWhite");
					break;
				case 4:
					val = PickupCatalog.FindPickupIndex("ItemIndex.ScrapGreen");
					break;
				case 5:
					val = PickupCatalog.FindPickupIndex("ItemIndex.ScrapRed");
					break;
				case 6:
					val = PickupCatalog.FindPickupIndex("ItemIndex.ScrapYellow");
					break;
				}
			}
			if (val != PickupIndex.none)
			{
				PickupDropletController.CreatePickupDroplet(val, minionBody.corePosition, Vector3.down * 15f);
			}
		}

		private static void DevotedLemurianController_Start(orig_Start orig, DevotedLemurianController self)
		{
			orig.Invoke(self);
			self._leashDistSq = 12000f;
		}

		private static Transform FixTwisteds_NotWorkingOnPlayers(orig_HealthComponentToTransform orig, HealthComponent healthComponent)
		{
			if (Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.mainHurtBox))
			{
				return ((Component)healthComponent.body.mainHurtBox).transform;
			}
			return orig.Invoke(healthComponent);
		}

		private static void FixBodyComponentsSometimesJustNotBeingThere(orig_UpdateMinionInventory orig, DevotionInventoryController self, DevotedLemurianController devotedLemurianController, bool shouldEvolve)
		{
			orig.Invoke(self, devotedLemurianController, shouldEvolve);
			if (Object.op_Implicit((Object)(object)devotedLemurianController.LemurianBody) && Object.op_Implicit((Object)(object)devotedLemurianController.LemurianBody.inventory))
			{
				devotedLemurianController.LemurianBody.OnInventoryChanged();
			}
		}

		private static void VoidForLemurians(orig_SetOptionsFromInteractor orig, PickupPickerController self, Interactor activator)
		{
			bool flag = Object.op_Implicit((Object)(object)((Component)self).GetComponent<LemurianEggController>());
			if (flag)
			{
				if (WConfig.DevotionAllowVoids.Value)
				{
					ItemTierCatalog.GetItemTierDef((ItemTier)6).canScrap = true;
					ItemTierCatalog.GetItemTierDef((ItemTier)7).canScrap = true;
					ItemTierCatalog.GetItemTierDef((ItemTier)8).canScrap = true;
				}
				if (WConfig.DevotionAllowLunars.Value)
				{
					ItemTierCatalog.GetItemTierDef((ItemTier)3).canScrap = true;
				}
			}
			orig.Invoke(self, activator);
			if (flag)
			{
				if (WConfig.DevotionAllowVoids.Value)
				{
					ItemTierCatalog.GetItemTierDef((ItemTier)6).canScrap = false;
					ItemTierCatalog.GetItemTierDef((ItemTier)7).canScrap = false;
					ItemTierCatalog.GetItemTierDef((ItemTier)8).canScrap = false;
				}
				if (WConfig.DevotionAllowLunars.Value)
				{
					ItemTierCatalog.GetItemTierDef((ItemTier)3).canScrap = false;
				}
			}
		}

		private static void FixEvoltionBeing1Behind(orig_UpdateAllMinions orig, DevotionInventoryController self, bool shouldEvolve)
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			if (shouldEvolve && Object.op_Implicit((Object)(object)self._summonerMaster))
			{
				MinionGroup val = MinionGroup.FindGroup(((NetworkBehaviour)self._summonerMaster).netId);
				if (val != null)
				{
					MinionOwnership[] members = val.members;
					DevotedLemurianController val3 = default(DevotedLemurianController);
					foreach (MinionOwnership val2 in members)
					{
						if (Object.op_Implicit((Object)(object)val2) && ((Component)((Component)val2).GetComponent<CharacterMaster>()).TryGetComponent<DevotedLemurianController>(ref val3))
						{
							self._devotionMinionInventory.GiveItem(val3.DevotionItem, 1);
						}
					}
				}
			}
			orig.Invoke(self, shouldEvolve);
			((MonoBehaviour)self).StartCoroutine(FixItemComponentsBeingDeleted(self));
		}

		public static IEnumerator FixItemComponentsBeingDeleted(DevotionInventoryController self)
		{
			yield return (object)new WaitForSeconds(1f);
			if (!Object.op_Implicit((Object)(object)self._summonerMaster))
			{
				yield break;
			}
			MinionGroup minionGroup = MinionGroup.FindGroup(((NetworkBehaviour)self._summonerMaster).netId);
			if (minionGroup == null)
			{
				yield break;
			}
			MinionOwnership[] members = minionGroup.members;
			DevotedLemurianController devotedLemurianController = default(DevotedLemurianController);
			foreach (MinionOwnership minionOwnership in members)
			{
				if (Object.op_Implicit((Object)(object)minionOwnership) && ((Component)((Component)minionOwnership).GetComponent<CharacterMaster>()).TryGetComponent<DevotedLemurianController>(ref devotedLemurianController) && Object.op_Implicit((Object)(object)devotedLemurianController.LemurianBody) && Object.op_Implicit((Object)(object)devotedLemurianController.LemurianBody.inventory))
				{
					devotedLemurianController.LemurianBody.OnInventoryChanged();
				}
				devotedLemurianController = null;
			}
		}

		private static void Fix_EliteListBeingBlank(orig_OnDevotionArtifactDisabled orig, RunArtifactManager runArtifactManager, ArtifactDef artifactDef)
		{
			if ((Object)(object)artifactDef == (Object)(object)Artifacts.Devotion)
			{
				List<EquipmentIndex> lowLevelEliteBuffs = new List<EquipmentIndex>(DevotionInventoryController.lowLevelEliteBuffs);
				List<EquipmentIndex> highLevelEliteBuffs = new List<EquipmentIndex>(DevotionInventoryController.highLevelEliteBuffs);
				orig.Invoke(runArtifactManager, artifactDef);
				DevotionInventoryController.lowLevelEliteBuffs = lowLevelEliteBuffs;
				DevotionInventoryController.highLevelEliteBuffs = highLevelEliteBuffs;
			}
			else
			{
				orig.Invoke(runArtifactManager, artifactDef);
			}
		}

		private static void Fix_NullrefWhenOrb(orig_CreateItemTakenOrb orig, LemurianEggController self, Vector3 effectOrigin, GameObject targetObject, ItemIndex itemIndex)
		{
			//IL_003b: 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)
			if (!Object.op_Implicit((Object)(object)DevotionInventoryController.s_effectPrefab))
			{
				Items.BoostDamage.hidden = true;
				Items.BoostHp.hidden = true;
				DevotionInventoryController.s_effectPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OrbEffects/ItemTakenOrbEffect");
			}
			orig.Invoke(self, effectOrigin, targetObject, itemIndex);
		}

		private static void AddLemurianInventory(orig_Rebuild orig, ScoreboardController self)
		{
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			if (!WConfig.DevotionInventory.Value || DevotionInventoryController.InstanceList.Count <= 0)
			{
				return;
			}
			List<CharacterMaster> list = new List<CharacterMaster>();
			Inventory val3 = default(Inventory);
			foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
			{
				list.Add(instance.master);
				if (!WConfig.DevotionShowAllInventory.Value)
				{
					continue;
				}
				CharacterMaster master = instance.master;
				MinionGroup val = MinionGroup.FindGroup(((NetworkBehaviour)master).netId);
				if (val == null)
				{
					continue;
				}
				MinionOwnership[] members = val.members;
				foreach (MinionOwnership val2 in members)
				{
					if (Object.op_Implicit((Object)(object)val2) && ((Component)val2).TryGetComponent<Inventory>(ref val3) && val3.GetItemCount(Items.LemurianHarness) > 0)
					{
						list.Add(((Component)val2).GetComponent<CharacterMaster>());
						break;
					}
				}
			}
			if (!WConfig.DevotionShowAllInventory.Value)
			{
				CharacterMaster master2 = LocalUserManager.readOnlyLocalUsersList.First().cachedMasterController.master;
				MinionGroup val4 = MinionGroup.FindGroup(((NetworkBehaviour)master2).netId);
				if (val4 != null)
				{
					MinionOwnership[] members2 = val4.members;
					DevotedLemurianController val6 = default(DevotedLemurianController);
					foreach (MinionOwnership val5 in members2)
					{
						if (Object.op_Implicit((Object)(object)val5) && ((Component)((Component)val5).GetComponent<CharacterMaster>()).TryGetComponent<DevotedLemurianController>(ref val6))
						{
							list.Add(((Component)val5).GetComponent<CharacterMaster>());
							break;
						}
					}
				}
			}
			self.SetStripCount(list.Count);
			for (int k = 0; k < list.Count; k++)
			{
				self.stripAllocator.elements[k].SetMaster(list[k]);
			}
		}

		private static void FixMissingEliteTypes(orig_OnDevotionArtifactEnabled orig, RunArtifactManager runArtifactManager, ArtifactDef artifactDef)
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(runArtifactManager, artifactDef);
			if (!((Object)(object)artifactDef != (Object)(object)Artifacts.Devotion))
			{
				Items.BoostDamage.hidden = true;
				Items.BoostHp.hidden = true;
				if (!DevotionInventoryController.lowLevelEliteBuffs.Contains(Elites.Aurelionite.eliteEquipmentDef.equipmentIndex) && Elites.Aurelionite.IsAvailable())
				{
					DevotionInventoryController.lowLevelEliteBuffs.Add(Elites.Aurelionite.eliteEquipmentDef.equipmentIndex);
					DevotionInventoryController.highLevelEliteBuffs.Add(Elites.Aurelionite.eliteEquipmentDef.equipmentIndex);
					DevotionInventoryController.highLevelEliteBuffs.Add(Elites.Bead.eliteEquipmentDef.equipmentIndex);
				}
			}
		}
	}
	public class Dissonance
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_RebuildCards <0>__DissoanceLunerEliteAll;

			public static hook_HandleMixEnemyArtifact <1>__FindSkinForSkinnedEnemies;
		}

		public static DirectorCard DissoGolem;

		public static DirectorCard DissoTitan;

		public static DirectorCard DissoVermin;

		public static DirectorCard DissoVerminFlying;

		public static DirectorCard DissoBeetle;

		public static DirectorCard DissoBeetleGuard;

		public static DirectorCard DissoBeetleQueen;

		public static List<SpawnCard> LunarifiedList;

		public static void Start()
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_0038: 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_0043: Expected O, but got Unknown
			Mixenemymaker();
			object obj = <>O.<0>__DissoanceLunerEliteAll;
			if (obj == null)
			{
				hook_RebuildCards val = DissoanceLunerEliteAll;
				<>O.<0>__DissoanceLunerEliteAll = val;
				obj = (object)val;
			}
			ClassicStageInfo.RebuildCards += (hook_RebuildCards)obj;
			object obj2 = <>O.<1>__FindSkinForSkinnedEnemies;
			if (obj2 == null)
			{
				hook_HandleMixEnemyArtifact val2 = FindSkinForSkinnedEnemies;
				<>O.<1>__FindSkinForSkinnedEnemies = val2;
				obj2 = (object)val2;
			}
			ClassicStageInfo.HandleMixEnemyArtifact += (hook_HandleMixEnemyArtifact)obj2;
		}

		public static void DissoanceLunerEliteAll(orig_RebuildCards orig, ClassicStageInfo self, DirectorCardCategorySelection forcedMonsterCategory, DirectorCardCategorySelection forcedInteractableCategory)
		{
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Invalid comparison between Unknown and I4
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self, forcedMonsterCategory, forcedInteractableCategory);
			if (!((Object)(object)self != (Object)null))
			{
				return;
			}
			if (LunarifiedList != null)
			{
				Debug.Log((object)"Dissonance : Un-Lunar");
				for (int i = 0; i < LunarifiedList.Count; i++)
				{
					LunarifiedList[i].eliteRules = (EliteRules)0;
				}
				LunarifiedList = null;
			}
			if (!Object.op_Implicit((Object)(object)RunArtifactManager.instance) || !RunArtifactManager.instance.IsArtifactEnabled(Artifacts.mixEnemyArtifactDef) || (!(SceneInfo.instance.sceneDef.baseSceneName == "moon2") && !(SceneInfo.instance.sceneDef.baseSceneName == "itmoon")))
			{
				return;
			}
			Debug.Log((object)"Dissonance : Lunar");
			WeightedSelection<DirectorCard> monsterSelection = ClassicStageInfo.instance.monsterSelection;
			LunarifiedList = new List<SpawnCard>();
			for (int j = 0; j < monsterSelection.Count; j++)
			{
				ChoiceInfo<DirectorCard> choice = monsterSelection.GetChoice(j);
				if ((int)choice.value.spawnCard.eliteRules != 2)
				{
					choice.value.spawnCard.eliteRules = (EliteRules)2;
					LunarifiedList.Add(choice.value.spawnCard);
				}
			}
		}

		public static void Mixenemymaker()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			//IL_04b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04be: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04de: 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_04ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f5: Expected O, but got Unknown
			//IL_04f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0500: Unknown result type (might be due to invalid IL or missing references)
			//IL_0505: Unknown result type (might be due to invalid IL or missing references)
			//IL_0513: Unknown result type (might be due to invalid IL or missing references)
			//IL_051a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0521: Unknown result type (might be due to invalid IL or missing references)
			//IL_0528: Unknown result type (might be due to invalid IL or missing references)
			//IL_052a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0531: Expected O, but got Unknown
			//IL_0531: Unknown result type (might be due to invalid IL or missing references)
			//IL_0536: Unknown result type (might be due to invalid IL or missing references)
			//IL_053c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0541: Unknown result type (might be due to invalid IL or missing references)
			//IL_054f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0556: 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_0564: Unknown result type (might be due to invalid IL or missing references)
			//IL_0566: Unknown result type (might be due to invalid IL or missing references)
			//IL_056d: Expected O, but got Unknown
			DirectorCardCategorySelection val = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/MixEnemy/dccsMixEnemy.asset").WaitForCompletion();
			DirectorCard val2 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscScav"),
				preventOverhead = false,
				selectionWeight = 1,
				minimumStageCompletions = 0,
				spawnDistance = (MonsterSpawnDistance)0
			};
			DirectorCard val3 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscHermitCrab"),
				selectionWeight = 1,
				preventOverhead = false,
				minimumStageCompletions = 0,
				spawnDistance = (MonsterSpawnDistance)2
			};
			val.categories[0].selectionWeight = 3f;
			val.categories[1].selectionWeight = 3f;
			val.categories[2].selectionWeight = 4f;
			val.categories[3].cards = val.categories[3].cards.Remove(val.categories[3].cards[0]);
			val.AddCard(0, val2);
			bool flag = false;
			DirectorCard val4 = null;
			DirectorCard val5 = null;
			for (int i = 0; val.categories[2].cards.Length > i; i++)
			{
				if (((Object)val.categories[2].cards[i].spawnCard).name.EndsWith("Child"))
				{
					flag = true;
				}
				else if (((Object)val.categories[2].cards[i].spawnCard).name.EndsWith("lMini"))
				{
					val4 = val.categories[2].cards[i];
					val.categories[2].cards[i] = val3;
				}
				else if (((Object)val.categories[2].cards[i].spawnCard).name.Equals("cscVermin"))
				{
					DissoVermin = val.categories[2].cards[i];
				}
				else if (((Object)val.categories[2].cards[i].spawnCard).name.Equals("cscFlyingVermin"))
				{
					DissoVerminFlying = val.categories[2].cards[i];
				}
				else if (((Object)val.categories[2].cards[i].spawnCard).name.Equals("cscBeetle"))
				{
					DissoBeetle = val.categories[2].cards[i];
				}
			}
			for (int j = 0; val.categories[1].cards.Length > j; j++)
			{
				if (((Object)val.categories[1].cards[j].spawnCard).name.Equals("cscLunarWisp"))
				{
					val5 = val.categories[1].cards[j];
					val.categories[1].cards[j] = val4;
				}
				else if (((Object)val.categories[1].cards[j].spawnCard).name.Equals("cscGolem"))
				{
					DissoGolem = val.categories[1].cards[j];
				}
				else if (((Object)val.categories[1].cards[j].spawnCard).name.Equals("cscBeetleGuard"))
				{
					DissoBeetleGuard = val.categories[1].cards[j];
				}
			}
			for (int k = 0; val.categories[0].cards.Length > k; k++)
			{
				if (((Object)val.categories[0].cards[k].spawnCard).name.Equals("cscTitanBlackBeach"))
				{
					DissoTitan = val.categories[0].cards[k];
				}
				else if (((Object)val.categories[0].cards[k].spawnCard).name.Equals("cscBeetleQueen"))
				{
					DissoBeetleQueen = val.categories[0].cards[k];
				}
			}
			val.AddCard(0, val5);
			if (!flag)
			{
				DirectorCard val6 = new DirectorCard
				{
					spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC2/Child/cscChild.asset").WaitForCompletion(),
					selectionWeight = 1,
					preventOverhead = false,
					minimumStageCompletions = 0,
					spawnDistance = (MonsterSpawnDistance)0
				};
				DirectorCard val7 = new DirectorCard
				{
					spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC2/Scorchling/cscScorchling.asset").WaitForCompletion(),
					selectionWeight = 1,
					preventOverhead = false,
					minimumStageCompletions = 0,
					spawnDistance = (MonsterSpawnDistance)0
				};
				DirectorCard val8 = new DirectorCard
				{
					spawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC2/Halcyonite/cscHalcyonite.asset").WaitForCompletion(),
					selectionWeight = 1,
					preventOverhead = false,
					minimumStageCompletions = 0,
					spawnDistance = (MonsterSpawnDistance)0
				};
				val.AddCard(2, val6);
				val.AddCard(1, val7);
				val.AddCard(0, val8);
			}
		}

		public static void FindSkinForSkinnedEnemies(orig_HandleMixEnemyArtifact orig, DirectorCardCategorySelection monsterCategories, Xoroshiro128Plus rng)
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: 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_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0221: Unknown result type (might be due to invalid IL or missing references)
			//IL_0226: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0294: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: Unknown result type (might be due to invalid IL or missing references)
			//IL_0245: Unknown result type (might be due to invalid IL or missing references)
			//IL_036b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0321: Unknown result type (might be due to invalid IL or missing references)
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_038f: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(monsterCategories, rng);
			if (DissoTitan != null)
			{
				switch (rng.RangeInt(1, 5))
				{
				case 1:
					DissoTitan.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Titan/cscTitanBlackBeach.asset").WaitForCompletion();
					break;
				case 2:
					DissoTitan.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Titan/cscTitanDampCave.asset").WaitForCompletion();
					break;
				case 3:
					DissoTitan.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Titan/cscTitanGolemPlains.asset").WaitForCompletion();
					break;
				case 4:
					DissoTitan.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Titan/cscTitanGooLake.asset").WaitForCompletion();
					break;
				}
			}
			if (DissoGolem != null)
			{
				switch (rng.RangeInt(1, 5))
				{
				case 1:
					DissoGolem.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Golem/cscGolem.asset").WaitForCompletion();
					break;
				case 2:
					DissoGolem.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Golem/cscGolemNature.asset").WaitForCompletion();
					break;
				case 3:
					DissoGolem.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Golem/cscGolemSandy.asset").WaitForCompletion();
					break;
				case 4:
					DissoGolem.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Golem/cscGolemSnowy.asset").WaitForCompletion();
					break;
				}
			}
			if (DissoVermin != null)
			{
				switch (rng.RangeInt(1, 3))
				{
				case 1:
					DissoVermin.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/DLC1/Vermin/cscVermin.asset").WaitForCompletion();
					break;
				case 2:
					DissoVermin.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/DLC1/Vermin/cscVerminSnowy.asset").WaitForCompletion();
					break;
				}
			}
			if (DissoVerminFlying != null)
			{
				switch (rng.RangeInt(1, 3))
				{
				case 1:
					DissoVerminFlying.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/DLC1/FlyingVermin/cscFlyingVermin.asset").WaitForCompletion();
					break;
				case 2:
					DissoVerminFlying.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/DLC1/FlyingVermin/cscFlyingVerminSnowy.asset").WaitForCompletion();
					break;
				}
			}
			if (DissoBeetle != null)
			{
				switch (rng.RangeInt(1, 3))
				{
				case 1:
					DissoBeetle.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Beetle/cscBeetle.asset").WaitForCompletion();
					break;
				case 2:
					DissoBeetle.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Beetle/cscBeetleSulfur.asset").WaitForCompletion();
					break;
				}
			}
			if (DissoBeetleGuard != null)
			{
				switch (rng.RangeInt(1, 3))
				{
				case 1:
					DissoBeetleGuard.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Beetle/cscBeetleGuard.asset").WaitForCompletion();
					break;
				case 2:
					DissoBeetleGuard.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Beetle/cscBeetleGuardSulfur.asset").WaitForCompletion();
					break;
				}
			}
			if (DissoBeetleQueen != null)
			{
				switch (rng.RangeInt(1, 3))
				{
				case 1:
					DissoBeetleQueen.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Beetle/cscBeetleQueen.asset").WaitForCompletion();
					break;
				case 2:
					DissoBeetleQueen.spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Beetle/cscBeetleQueenSulfur.asset").WaitForCompletion();
					break;
				}
			}
		}
	}
	public class Enigma
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_CalculateEquipmentCooldownScale <>9__4_0;

			internal float <MakeEnigmaFragment>b__4_0(orig_CalculateEquipmentCooldownScale orig, Inventory self)
			{
				int itemCount = self.GetItemCount(EnigmaFragmentPurple);
				if (itemCount > 0)
				{
					float num = orig.Invoke(self);
					return num * Mathf.Pow(EnigmaFragmentCooldownReduction, (float)itemCount);
				}
				return orig.Invoke(self);
			}
		}

		public static ItemDef EnigmaFragmentPurple = null;

		public static float EnigmaFragmentCooldownReduction = 0.88f;

		public static Color CustomColor = Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)24));

		public static void Start()
		{
			if (!WConfig.EnigmaInterrupt.Value)
			{
				LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/BossHunter").enigmaCompatible = false;
				LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/BossHunterConsumed").enigmaCompatible = false;
				LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/Recycle").enigmaCompatible = false;
			}
			if (WConfig.EnigmaMovement.Value)
			{
				LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/Jetpack").enigmaCompatible = true;
				LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/FireBallDash").enigmaCompatible = true;
			}
			else
			{
				LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/Jetpack").enigmaCompatible = false;
				LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/FireBallDash").enigmaCompatible = false;
			}
			LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/Tonic").enigmaCompatible = false;
			LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/Meteor").enigmaCompatible = false;
			LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/BurnNearby").enigmaCompatible = false;
			LegacyResourcesAPI.Load<EquipmentDef>("equipmentdefs/CrippleWard").enigmaCompatible = true;
			if (!WConfig.DisableNewContent.Value)
			{
				MakeEnigmaFragment();
			}
		}

		public static void MakeEnigmaFragment()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: 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_00a1: Expected O, but got Unknown
			//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_00e8: Expected O, but got Unknown
			ArtifactDef val = LegacyResourcesAPI.Load<ArtifactDef>("artifactdefs/Enigma");
			ItemDef val2 = ScriptableObject.CreateInstance<ItemDef>();
			((Object)val2).name = "EnigmaFragment_ArtifactHelper";
			val2.deprecatedTier = (ItemTier)5;
			val2.pickupModelPrefab = val.pickupModelPrefab;
			val2.nameToken = "ITEM_ENIGMAEQUIPMENTBOOST_NAME";
			val2.pickupToken = "ITEM_ENIGMAEQUIPMENTBOOST_PICKUP";
			val2.descriptionToken = "ITEM_ENIGMAEQUIPMENTBOOST_DESC";
			val2.loreToken = "";
			val2.hidden = false;
			val2.canRemove = false;
			val2.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)9 };
			ItemDisplayRule[] array = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { default(ItemDisplayRule) };
			CustomItem val3 = new CustomItem(val2, (ItemDisplayRule[])(object)new ItemDisplayRule[0]);
			ItemAPI.Add(val3);
			EnigmaFragmentPurple = val2;
			EnigmaFragmentCooldownReduction = 1f - WConfig.EnigmaCooldownReduction.Value / 100f;
			object obj = <>c.<>9__4_0;
			if (obj == null)
			{
				hook_CalculateEquipmentCooldownScale val4 = delegate(orig_CalculateEquipmentCooldownScale orig, Inventory self)
				{
					int itemCount = self.GetItemCount(EnigmaFragmentPurple);
					if (itemCount > 0)
					{
						float num = orig.Invoke(self);
						return num * Mathf.Pow(EnigmaFragmentCooldownReduction, (float)itemCount);
					}
					return orig.Invoke(self);
				};
				<>c.<>9__4_0 = val4;
				obj = (object)val4;
			}
			Inventory.CalculateEquipmentCooldownScale += (hook_CalculateEquipmentCooldownScale)obj;
		}

		public static void EnigmaCallLate()
		{
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: 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)
			if (!WConfig.DisableNewContent.Value)
			{
				Texture2D val = Assets.Bundle.LoadAsset<Texture2D>("Assets/ArtifactsVanilla/texItemEnigmaP.png");
				((Texture)val).wrapMode = (TextureWrapMode)1;
				Sprite val2 = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f));
				EnigmaFragmentPurple.pickupIconSprite = val2;
				PickupDef pickupDef = PickupCatalog.GetPickupDef(PickupCatalog.FindPickupIndex("ItemIndex.EnigmaFragment_ArtifactHelper"));
				ColorUtility.TryParseHtmlString("#AE6BCB", ref CustomColor);
				pickupDef.baseColor = CustomColor;
				pickupDef.darkColor = CustomColor;
				pickupDef.displayPrefab = PickupCatalog.GetPickupDef(PickupCatalog.FindPickupIndex("ArtifactIndex.Enigma")).displayPrefab;
				pickupDef.dropletDisplayPrefab = PickupCatalog.GetPickupDef(PickupCatalog.FindPickupIndex("EquipmentIndex.Fruit")).dropletDisplayPrefab;
				pickupDef.iconSprite = val2;
			}
			EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(EquipmentCatalog.FindEquipmentIndex("EQUIPMENT_IMPULSEFROSTSHIELD"));
			if ((Object)(object)equipmentDef != (Object)null)
			{
				equipmentDef.enigmaCompatible = false;
				EquipmentCatalog.enigmaEquipmentList.Remove(equipmentDef.equipmentIndex);
			}
			equipmentDef = EquipmentCatalog.GetEquipmentDef(EquipmentCatalog.FindEquipmentIndex("EQUIPMENT_REUSER"));
			if ((Object)(object)equipmentDef != (Object)null)
			{
				equipmentDef.enigmaCompatible = false;
				EquipmentCatalog.enigmaEquipmentList.Remove(equipmentDef.equipmentIndex);
			}
			equipmentDef = EquipmentCatalog.GetEquipmentDef(EquipmentCatalog.FindEquipmentIndex("EQUIPMENT_Reducer"));
			if ((Object)(object)equipmentDef != (Object)null)
			{
				equipmentDef.enigmaCompatible = false;
				EquipmentCatalog.enigmaEquipmentList.Remove(equipmentDef.equipmentIndex);
			}
		}

		public static GenericPickupController EnigmaFragmentMaker(orig_CreatePickup orig, ref CreatePickupInfo createPickupInfo)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Invalid comparison between Unknown and I4
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			PickupDef pickupDef = PickupCatalog.GetPickupDef(((CreatePickupInfo)(ref createPickupInfo)).pickupIndex);
			if (pickupDef != null && (int)pickupDef.equipmentIndex != -1)
			{
				EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(pickupDef.equipmentIndex);
				if (equipmentDef.enigmaCompatible)
				{
					((CreatePickupInfo)(ref createPickupInfo)).pickupIndex = PickupCatalog.FindPickupIndex(EnigmaFragmentPurple.itemIndex);
					GenericPickupController val = orig.Invoke(ref createPickupInfo);
					if (Object.op_Implicit((Object)(object)((Component)val).gameObject) && Object.op_Implicit((Object)(object)val.pickupDisplay))
					{
						Util.PlaySound("Play_item_proc_crit_cooldown", ((Component)val).gameObject);
						Util.PlaySound("Play_item_proc_crit_cooldown", ((Component)val).gameObject);
						val.pickupDisplay.tier1ParticleEffect.SetActive(true);
						val.pickupDisplay.equipmentParticleEffect.SetActive(true);
					}
					return val;
				}
			}
			return orig.Invoke(ref createPickupInfo);
		}

		public static void EnigmaEquipmentGranter(orig_AttemptGrant orig, GenericPickupController self, CharacterBody body)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Invalid comparison between Unknown and I4
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: 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_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Invalid comparison between Unknown and I4
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Invalid comparison between Unknown and I4
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Expected O, but got Unknown
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Expected O, but got Unknown
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: 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_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: 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)
			if ((int)body.inventory.currentEquipmentIndex == -1 && PickupCatalog.GetPickupDef(self.pickupIndex).itemIndex == EnigmaFragmentPurple.itemIndex)
			{
				self.pickupIndex = PickupCatalog.FindPickupIndex(EnigmaArtifactManager.GetRandomEquipment(EnigmaArtifactManager.serverInitialEquipmentRng, 0));
				Util.PlaySound("Play_UI_insufficient_funds", ((Component)self).gameObject);
				Util.PlaySound("Play_UI_insufficient_funds", ((Component)self).gameObject);
				if (((NetworkBehaviour)body.master).hasAuthority)
				{
					CharacterMasterNotificationQueue notificationQueueForMaster = CharacterMasterNotificationQueue.GetNotificationQueueForMaster(body.master);
					TransformationInfo val = new TransformationInfo((TransformationType)0, (object)EnigmaFragmentPurple);
					NotificationInfo val2 = new NotificationInfo((object)EquipmentCatalog.GetEquipmentDef(((PickupIndex)(ref self.pickupIndex)).pickupDef.equipmentIndex), val);
					notificationQueueForMaster.PushNotification(val2, 6f);
				}
			}
			EquipmentIndex equipmentIndex = PickupCatalog.GetPickupDef(self.pickupIndex).equipmentIndex;
			bool flag = (int)body.inventory.currentEquipmentIndex != -1 && (int)equipmentIndex != -1;
			orig.Invoke(self, body);
			if (flag)
			{
				EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex);
				CreatePickupInfo val3;
				if (Object.op_Implicit((Object)(object)equipmentDef.passiveBuffDef) && equipmentDef.passiveBuffDef.isElite)
				{
					val3 = default(CreatePickupInfo);
					val3.position = ((Component)self).transform.position;
					val3.rotation = ((Component)self).transform.rotation;
					((CreatePickupInfo)(ref val3)).pickupIndex = PickupCatalog.FindPickupIndex(Items.ShinyPearl.itemIndex);
					GenericPickupController.CreatePickup(ref val3);
					Util.PlaySound("Play_item_proc_crit_cooldown", ((Component)self).gameObject);
					Util.PlaySound("Play_item_proc_crit_cooldown", ((Component)self).gameObject);
				}
				else
				{
					val3 = default(CreatePickupInfo);
					val3.position = ((Component)self).transform.position;
					val3.rotation = ((Component)self).transform.rotation;
					((CreatePickupInfo)(ref val3)).pickupIndex = PickupCatalog.FindPickupIndex(Equipment.Fruit.equipmentIndex);
					GenericPickupController.CreatePickup(ref val3);
				}
				Object.Destroy((Object)(object)((Component)self).gameObject);
			}
		}
	}
	public class Evolution
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static Manipulator <0>__Evolution_MoreItems;

			public static hook_OnServerCardSpawnedGlobal <1>__Evo_VoidTeamCorrupted;
		}

		public static BasicPickupDropTable dtMonsterTeamLunarItem = ScriptableObject.CreateInstance<BasicPickupDropTable>();

		public static void Start()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Expected O, but got Unknown
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Expected O, but got Unknown
			BasicPickupDropTable val = Addressables.LoadAssetAsync<BasicPickupDropTable>((object)"RoR2/Base/MonsterTeamGainsItems/dtMonsterTeamTier1Item.asset").WaitForCompletion();
			BasicPickupDropTable val2 = Addressables.LoadAssetAsync<BasicPickupDropTable>((object)"RoR2/Base/MonsterTeamGainsItems/dtMonsterTeamTier2Item.asset").WaitForCompletion();
			BasicPickupDropTable val3 = Addressables.LoadAssetAsync<BasicPickupDropTable>((object)"RoR2/Base/MonsterTeamGainsItems/dtMonsterTeamTier3Item.asset").WaitForCompletion();
			ItemTag[] array = new ItemTag[7];
			RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			ItemTag[] bannedItemTags = (val3.bannedItemTags = (val2.bannedItemTags = (val.bannedItemTags = (ItemTag[])(object)array)));
			dtMonsterTeamLunarItem.bannedItemTags = bannedItemTags;
			dtMonsterTeamLunarItem.tier1Weight = 0f;
			dtMonsterTeamLunarItem.tier2Weight = 0f;
			dtMonsterTeamLunarItem.tier3Weight = 0f;
			dtMonsterTeamLunarItem.lunarItemWeight = 1f;
			((PickupDropTable)dtMonsterTeamLunarItem).canDropBeReplaced = false;
			((Object)dtMonsterTeamLunarItem).name = "dtMonsterTeamLunarItem";
			object obj = <>O.<0>__Evolution_MoreItems;
			if (obj == null)
			{
				Manipulator val4 = Evolution_MoreItems;
				<>O.<0>__Evolution_MoreItems = val4;
				obj = (object)val4;
			}
			MonsterTeamGainsItemsArtifactManager.GrantMonsterTeamItem += (Manipulator)obj;
			object obj2 = <>O.<1>__Evo_VoidTeamCorrupted;
			if (obj2 == null)
			{
				hook_OnServerCardSpawnedGlobal val5 = Evo_VoidTeamCorrupted;
				<>O.<1>__Evo_VoidTeamCorrupted = val5;
				obj2 = (object)val5;
			}
			MonsterTeamGainsItemsArtifactManager.OnServerCardSpawnedGlobal += (hook_OnServerCardSpawnedGlobal)obj2;
		}

		private static void Evo_VoidTeamCorrupted(orig_OnServerCardSpawnedGlobal orig, SpawnResult spawnResult)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Invalid comparison between Unknown and I4
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(spawnResult);
			CharacterMaster val = (Object.op_Implicit((Object)(object)spawnResult.spawnedInstance) ? spawnResult.spawnedInstance.GetComponent<CharacterMaster>() : null);
			if (!Object.op_Implicit((Object)(object)val) || (int)val.teamIndex != 4)
			{
				return;
			}
			val.inventory.AddItemsFrom(MonsterTeamGainsItemsArtifactManager.monsterTeamInventory);
			Enumerator<TransformationInfo> enumerator = ContagiousItemManager.transformationInfos.GetEnumerator();
			try
			{
				while (enumerator.MoveNext())
				{
					TransformationInfo current = enumerator.Current;
					ContagiousItemManager.TryForceReplacement(val.inventory, current.originalItem);
				}
			}
			finally
			{
				((IDisposable)enumerator).Dispose();
			}
		}

		private static void Evolution_MoreItems(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.Inventory", "GiveItem")
			}))
			{
				int index = val.Index;
				val.Index = index - 1;
				val.EmitDelegate<Func<ItemIndex, ItemIndex>>((Func<ItemIndex, ItemIndex>)delegate(ItemIndex item)
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_0009: Unknown result type (might be due to invalid IL or missing references)
					//IL_000f: Invalid comparison between Unknown and I4
					//IL_0057: Unknown result type (might be due to invalid IL or missing references)
					//IL_0058: Unknown result type (might be due to invalid IL or missing references)
					//IL_0020: Unknown result type (might be due to invalid IL or missing references)
					//IL_0025: Unknown result type (might be due to invalid IL or missing references)
					//IL_0026: Unknown result type (might be due to invalid IL or missing references)
					//IL_0027: Unknown result type (might be due to invalid IL or missing references)
					//IL_005c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0036: Unknown result type (might be due to invalid IL or missing references)
					//IL_004c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0051: Unknown result type (might be due to invalid IL or missing references)
					ItemDef itemDef = ItemCatalog.GetItemDef(item);
					if ((int)itemDef.tier == 3)
					{
						PickupIndex val2 = ((PickupDropTable)dtMonsterTeamLunarItem).GenerateDrop(MonsterTeamGainsItemsArtifactManager.treasureRng);
						if (val2 != PickupIndex.none)
						{
							PickupDef pickupDef = PickupCatalog.GetPickupDef(val2);
							if (pickupDef != null)
							{
								return pickupDef.itemIndex;
							}
						}
					}
					return item;
				});
				index = val.Index;
				val.Index = index + 1;
				val.EmitDelegate<Func<int, int>>((Func<int, int>)delegate(int amount)
				{
					if (WConfig.EvoMoreItems.Value)
					{
						bool flag = false;
						if (WConfig.EvoMoreAfterLoop.Value && MonsterTeamGainsItemsArtifactManager.currentItemIterator > 5)
						{
							flag = true;
						}
						else if (!WConfig.EvoMoreAfterLoop.Value)
						{
							flag = true;
						}
						if (flag)
						{
							switch ((MonsterTeamGainsItemsArtifactManager.currentItemIterator - 1) % MonsterTeamGainsItemsArtifactManager.dropPattern.Length)
							{
							case 0:
							case 1:
								return WConfig.EvoMoreWhite.Value;
							case 2:
							case 3:
								return WConfig.EvoMoreGreen.Value;
							case 4:
								return WConfig.EvoMoreRed.Value;
							}
						}
					}
					return amount;
				});
			}
			else
			{
				Debug.LogWarning((object)"IL Failed: Evolution_MoreItems");
			}
		}

		public static void Tagchanger()
		{
			//IL_0424: Unknown result type (might be due to invalid IL or missing references)
			//IL_045c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0494: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cc: Unknown result type (might be due to invalid IL or missing references)
			Items.PrimarySkillShuriken.tags = Items.PrimarySkillShuriken.tags.Add((ItemTag)4);
			Items.MoveSpeedOnKill.tags = Items.MoveSpeedOnKill.tags.Add((ItemTag)6);
			Items.RegeneratingScrap.tags = Items.RegeneratingScrap.tags.Add((ItemTag)4);
			Items.LowerPricedChests.tags = Items.LowerPricedChests.tags.Add((ItemTag)4);
			Items.ExtraShrineItem.tags = Items.ExtraShrineItem.tags.Add((ItemTag)4);
			Items.IncreasePrimaryDamage.tags = Items.IncreasePrimaryDamage.tags.Add((ItemTag)4);
			Items.ExtraStatsOnLevelUp.tags = Items.ExtraStatsOnLevelUp.tags.Add((ItemTag)4);
			Items.BonusGoldPackOnKill.tags = Items.BonusGoldPackOnKill.tags.Add((ItemTag)4);
			Items.Infusion.tags = Items.Infusion.tags.Add((ItemTag)4);
			Items.NovaOnHeal.tags = Items.NovaOnHeal.tags.Add((ItemTag)4);
			Items.GoldOnStageStart.tags = Items.GoldOnStageStart.tags.Add((ItemTag)4);
			Items.BarrierOnOverHeal.tags = Items.BarrierOnOverHeal.tags.Add((ItemTag)24);
			Items.MoreMissile.tags = Items.MoreMissile.tags.Add((ItemTag)24);
			Items.TitanGoldDuringTP.tags = Items.TitanGoldDuringTP.tags.Add((ItemTag)17);
			Items.TitanGoldDuringTP.tags = Items.TitanGoldDuringTP.tags.Add((ItemTag)4);
			Items.SprintWisp.tags = Items.SprintWisp.tags.Add((ItemTag)4);
			Items.SiphonOnLowHealth.tags = Items.SiphonOnLowHealth.tags.Add((ItemTag)4);
			Items.MinorConstructOnKill.tags = Items.MinorConstructOnKill.tags.Add((ItemTag)4);
			Items.MonstersOnShrineUse.tags = Items.MonstersOnShrineUse.tags.Add((ItemTag)18);
			Items.GoldOnHit.tags = Items.GoldOnHit.tags.Add((ItemTag)4);
			Items.LunarTrinket.tags = Items.LunarTrinket.tags.Add((ItemTag)4);
			Items.FocusConvergence.tags = Items.FocusConvergence.tags.Add((ItemTag)4);
			Items.LunarSun.tags = Items.LunarSun.tags.Add((ItemTag)4);
			Items.RandomlyLunar.tags = Items.RandomlyLunar.tags.Add((ItemTag)4);
			Items.OnLevelUpFreeUnlock.tags = Items.OnLevelUpFreeUnlock.tags.Add((ItemTag)4);
			Items.ElementalRingVoid.tags = Items.ElementalRingVoid.tags.Add((ItemTag)4);
			Items.ExplodeOnDeathVoid.tags = Items.ExplodeOnDeathVoid.tags.Add((ItemTag)4);
			Items.MushroomVoid.tags = Items.MushroomVoid.tags.Add((ItemTag)8);
			Items.MushroomVoid.tags = Items.MushroomVoid.tags.Add((ItemTag)4);
			Items.TreasureCacheVoid.tags = Items.TreasureCacheVoid.tags.Add((ItemTag)4);
			ItemDef itemDef = ItemCatalog.GetItemDef(ItemCatalog.FindItemIndex("WatchMetronome"));
			if ((Object)(object)itemDef != (Object)null)
			{
				itemDef.tags = itemDef.tags.Add((ItemTag)8);
			}
			itemDef = ItemCatalog.GetItemDef(ItemCatalog.FindItemIndex("PortableReactor"));
			if ((Object)(object)itemDef != (Object)null)
			{
				itemDef.tags = itemDef.tags.Add((ItemTag)4);
			}
			itemDef = ItemCatalog.GetItemDef(ItemCatalog.FindItemIndex("HuntersSigil"));
			if ((Object)(object)itemDef != (Object)null)
			{
				itemDef.tags = itemDef.tags.Add((ItemTag)4);
			}
			itemDef = ItemCatalog.GetItemDef(ItemCatalog.FindItemIndex("VV_ITEM_EHANCE_VIALS_ITEM"));
			if ((Object)(object)itemDef != (Object)null)
			{
				itemDef.tags = itemDef.tags.Add((ItemTag)4);
			}
			Items.ParentEgg.tags[0] = (ItemTag)2;
			Items.ShieldOnly.tags[0] = (ItemTag)2;
			Items.LunarUtilityReplacement.tags[0] = (ItemTag)2;
			Items.RandomDamageZone.tags[0] = (ItemTag)1;
			Items.HalfSpeedDoubleHealth.tags[0] = (ItemTag)2;
			Items.LunarSun.tags[0] = (ItemTag)1;
			Items.MinorConstructOnKill.tags = Items.MinorConstructOnKill.tags.Add((ItemTag)3);
			Items.Knurl.tags = Items.Knurl.tags.Remove((ItemTag)3);
			Items.Pearl.tags = Items.Pearl.tags.Remove((ItemTag)3);
			Items.Pearl.tags = Items.Pearl.tags.Add((ItemTag)2);
			Items.Infusion.tags = Items.Infusion.tags.Remove((ItemTag)3);
			Items.GhostOnKill.tags = Items.GhostOnKill.tags.Remove((ItemTag)1);
			Items.HeadHunter.tags = Items.HeadHunter.tags.Remove((ItemTag)3);
			Items.BarrierOnKill.tags = Items.BarrierOnKill.tags.Remove((ItemTag)3);
			Items.BarrierOnOverHeal.tags = Items.BarrierOnOverHeal.tags.Remove((ItemTag)3);
			Items.FallBoots.tags = Items.FallBoots.tags.Remove((ItemTag)1);
			Items.NovaOnHeal.tags = Items.NovaOnHeal.tags.Remove((ItemTag)1);
			Items.NovaOnHeal.tags = Items.NovaOnHeal.tags.Add((ItemTag)2);
			Items.ImmuneToDebuff.tags = Items.ImmuneToDebuff.tags.Add((ItemTag)2);
			Items.ElementalRingVoid.tags = Items.ElementalRingVoid.tags.Remove((ItemTag)3);
			Items.KnockBackHitEnemies.tags = Items.KnockBackHitEnemies.tags.Remove((ItemTag)23);
			Items.IncreasePrimaryDamage.tags = Items.IncreasePrimaryDamage.tags.Remove((ItemTag)23);
		}
	}
	public class Glass
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static Manipulator <0>__CharacterModel_UpdateOverlayStates;
		}

		public static void Start()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			object obj = <>O.<0>__CharacterModel_UpdateOverlayStates;
			if (obj == null)
			{
				Manipulator val = CharacterModel_UpdateOverlayStates;
				<>O.<0>__CharacterModel_UpdateOverlayStates = val;
				obj = (object)val;
			}
			CharacterModel.UpdateOverlays += (Manipulator)obj;
			object obj2 = <>O.<0>__CharacterModel_UpdateOverlayStates;
			if (obj2 == null)
			{
				Manipulator val2 = CharacterModel_UpdateOverlayStates;
				<>O.<0>__CharacterModel_UpdateOverlayStates = val2;
				obj2 = (object)val2;
			}
			CharacterModel.UpdateOverlayStates += (Manipulator)obj2;
		}

		private static void CharacterModel_UpdateOverlayStates(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.RoR2Content/Items", "LunarDagger")
			}))
			{
				val.Index += 4;
				val.Emit(OpCodes.Ldarg_0);
				val.EmitDelegate<Func<bool, CharacterModel, bool>>((Func<bool, CharacterModel, bool>)((bool yes, CharacterModel model) => model.body.isGlass || yes));
			}
			else
			{
				Debug.LogWarning((object)"IL Failed: IL.CharacterModel_UpdateOverlays");
			}
		}
	}
	public class Honor
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_BeginEncounter <0>__Honor_ForceSpecialEliteType;

			public static hook_Initialize <1>__Honor_SimuForceSpecialEliteType;

			public static hook_UpdateItemAvailability <2>__RemoveFireTrailFromWorm;

			public static hook_NotEliteOnlyArtifactActive <3>__AllowNormalTiersHonor;
		}

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

		public static void Start()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			object obj = <>O.<0>__Honor_ForceSpecialEliteType;
			if (obj == null)
			{
				hook_BeginEncounter val = Honor_ForceSpecialEliteType;
				<>O.<0>__Honor_ForceSpecialEliteType = val;
				obj = (object)val;
			}
			ScriptedCombatEncounter.BeginEncounter += (hook_BeginEncounter)obj;
			object obj2 = <>O.<1>__Honor_SimuForceSpecialEliteType;
			if (obj2 == null)
			{
				hook_Initialize val2 = Honor_SimuForceSpecialEliteType;
				<>O.<1>__Honor_SimuForceSpecialEliteType = val2;
				obj2 = (object)val2;
			}
			InfiniteTowerExplicitSpawnWaveController.Initialize += (hook_Initialize)obj2;
			object obj3 = <>O.<2>__RemoveFireTrailFromWorm;
			if (obj3 == null)
			{
				hook_UpdateItemAvailability val3 = RemoveFireTrailFromWorm;
				<>O.<2>__RemoveFireTrailFromWorm = val3;
				obj3 = (object)val3;
			}
			CharacterBody.UpdateItemAvailability += (hook_UpdateItemAvailability)obj3;
			Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/DLC1/EliteEarth/edEarthHonor.asset").WaitForCompletion().healthBoostCoefficient = 2f;
		}

		public static void Honor_EliteTiers(bool activate)
		{
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Expected O, but got Unknown
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Expected O, but got Unknown
			if (!WConfig.Honor_RedoneElites.Value)
			{
				return;
			}
			List<EliteDef> list = new List<EliteDef>();
			float num = 2f;
			if (activate)
			{
				object obj = <>O.<3>__AllowNormalTiersHonor;
				if (obj == null)
				{
					hook_NotEliteOnlyArtifactActive val = AllowNormalTiersHonor;
					<>O.<3>__AllowNormalTiersHonor = val;
					obj = (object)val;
				}
				CombatDirector.NotEliteOnlyArtifactActive += (hook_NotEliteOnlyArtifactActive)obj;
				CombatDirector.eliteTiers[0].isAvailable = (EliteRules rules) => false;
				num = 0.5f;
			}
			else
			{
				object obj2 = <>O.<3>__AllowNormalTiersHonor;
				if (obj2 == null)
				{
					hook_NotEliteOnlyArtifactActive val2 = AllowNormalTiersHonor;
					<>O.<3>__AllowNormalTiersHonor = val2;
					obj2 = (object)val2;
				}
				CombatDirector.NotEliteOnlyArtifactActive -= (hook_NotEliteOnlyArtifactActive)obj2;
				CombatDirector.eliteTiers[0].isAvailable = (EliteRules rules) => true;
			}
			EliteDef[] eliteDefs = EliteCatalog.eliteDefs;
			foreach (EliteDef val3 in eliteDefs)
			{
				if (!((Object)val3).name.EndsWith("Honor"))
				{
					val3.healthBoostCoefficient = Mathf.LerpUnclamped(1f, val3.healthBoostCoefficient, num);
					val3.damageBoostCoefficient = Mathf.LerpUnclamped(1f, val3.damageBoostCoefficient, num);
				}
				else if (val3.IsAvailable())
				{
					minionEliteDefs.Add(val3);
				}
			}
			for (int j = 1; j < CombatDirector.eliteTiers.Length; j++)
			{
				if ((Object)(object)CombatDirector.eliteTiers[j].eliteTypes[0] == (Object)(object)Elites.LightningHonor)
				{
					EliteTierDef val4 = CombatDirector.eliteTiers[0];
					CombatDirector.eliteTiers[0] = CombatDirector.eliteTiers[j];
					CombatDirector.eliteTiers[j] = val4;
				}
				else
				{
					CombatDirector.eliteTiers[j].costMultiplier = Mathf.LerpUnclamped(1f, CombatDirector.eliteTiers[j].costMultiplier, num);
				}
			}
		}

		private static bool AllowNormalTiersHonor(orig_NotEliteOnlyArtifactActive orig)
		{
			return true;
		}

		public static bool DisableHonorEliteTier(orig_IsEliteOnlyArtifactActive orig)
		{
			return false;
		}

		private static void Honor_SimuForceSpecialEliteType(orig_Initialize orig, InfiniteTowerExplicitSpawnWaveController self, int waveIndex, Inventory enemyInventory, GameObject spawnTargetObject)
		{
			if (RunArtifactManager.instance.IsArtifactEnabled(Artifacts.EliteOnly) && WConfig.Honor_PerfectMithrix.Value)
			{
				string name = ((Object)self.spawnList[0].spawnCard).name;
				if (name.StartsWith("cscBrother"))
				{
					self.spawnList[0].eliteDef = Elites.Lunar;
				}
				else if (name.StartsWith("cscScavLunar"))
				{
					self.spawnList[0].eliteDef = Elites.Lunar;
				}
				else if (name.StartsWith("cscMiniVoidR"))
				{
					self.spawnList[0].eliteDef = Elites.Void;
				}
				else if (name.StartsWith("cscITVoidMe"))
				{
					self.spawnList[0].eliteDef = Elites.Void;
				}
				else if (name.StartsWith("cscVoidInfestor"))
				{
					self.spawnList[0].eliteDef = Elites.Void;
				}
				else if (name.StartsWith("cscFalseSon"))
				{
					self.spawnList[0].eliteDef = Elites.Aurelionite;
				}
				else if (name.StartsWith("cscTitanGold") && Run.instance.IsExpansionEnabled(Elites.Aurelionite.eliteEquipmentDef.requiredExpansion))
				{
					self.spawnList[0].eliteDef = Elites.Aurelionite;
				}
			}
			orig.Invoke(self, waveIndex, enemyInventory, spawnTargetObject);
		}

		private static void Honor_ForceSpecialEliteType(orig_BeginEncounter orig, ScriptedCombatEncounter self)
		{
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			if (!RunArtifactManager.instance.IsArtifactEnabled(Artifacts.EliteOnly) || !WConfig.Honor_PerfectMithrix.Value)
			{
				return;
			}
			string name = ((Object)self.spawns[0].spawnCard).name;
			bool flag = false;
			EquipmentDef val = null;
			if (name.StartsWith("cscBrother") || name.StartsWith("cscScavLunar"))
			{
				flag = true;
				val = Equipment.AffixLunar;
			}
			else if (name.StartsWith("cscMiniVoidR") || name.StartsWith("cscVoidInfe"))
			{
				flag = true;
				val = Equipment.EliteVoidEquipment;
			}
			else if (name.StartsWith("cscFalseSon") || name.StartsWith("cscTitanGold"))
			{
				val = Equipment.EliteAurelioniteEquipment;
				if (Run.instance.IsExpansionEnabled(val.requiredExpansion))
				{
					flag = true;
				}
			}
			if (flag)
			{
				for (int i = 0; i < self.combatSquad.memberCount; i++)
				{
					self.combatSquad.membersList[i].inventory.SetEquipmentIndex(val.equipmentIndex);
				}
			}
		}

		private static void RemoveFireTrailFromWorm(orig_UpdateItemAvailability orig, CharacterBody self)
		{
			orig.Invoke(self);
			if (Object.op_Implicit((Object)(object)self) && Object.op_Implicit((Object)(object)((Component)self).GetComponent<WormBodyPositions2>()))
			{
				self.itemAvailability.hasFireTrail = false;
			}
		}

		public static void PreventPerfectedMithrixFromRegenningShield(orig_OnOutOfDangerChanged orig, CharacterBody self)
		{
			orig.Invoke(self);
			if (((Object)self).name.StartsWith("Bro"))
			{
				self.outOfDangerStopwatch = -1000f;
			}
		}

		public static void MinionsInheritHonor(orig_AddMinion orig, NetworkInstanceId ownerId, MinionOwnership minion)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Invalid comparison between Unknown and I4
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(ownerId, minion);
			if (NetworkServer.active)
			{
				Inventory component = ((Component)minion).gameObject.GetComponent<Inventory>();
				if (Object.op_Implicit((Object)(object)component) && (int)component.currentEquipmentIndex == -1 && minionEliteDefs.Count > 0)
				{
					int index = Main.Random.Next(minionEliteDefs.Count);
					component.SetEquipmentIndex(minionEliteDefs[index].eliteEquipmentDef.equipmentIndex);
					component.GiveItem(Items.BoostHp, (int)(minionEliteDefs[index].healthBoostCoefficient - 1f) * 10);
					component.GiveItem(Items.BoostDamage, (int)(minionEliteDefs[index].damageBoostCoefficient - 1f) * 10);
				}
			}
		}

		public static void Worm_EliteStuff(bool honorActive)
		{
			//IL_0024: 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_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			if (WConfig.Honor_EliteWormsAlways.Value)
			{
				CharacterSpawnCard val = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscMagmaWorm");
				val.noElites = false;
				((SpawnCard)val).eliteRules = (EliteRules)0;
				CharacterSpawnCard val2 = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscElectricWorm");
				val2.noElites = false;
				((SpawnCard)val2).eliteRules = (EliteRules)0;
			}
			else if (WConfig.Honor_EliteWorms.Value)
			{
				if (honorActive)
				{
					CharacterSpawnCard val3 = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscMagmaWorm");
					val3.noElites = false;
					((SpawnCard)val3).eliteRules = (EliteRules)0;
					CharacterSpawnCard val4 = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscElectricWorm");
					val4.noElites = false;
					((SpawnCard)val4).eliteRules = (EliteRules)0;
				}
				else
				{
					CharacterSpawnCard val5 = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscMagmaWorm");
					val5.noElites = true;
					CharacterSpawnCard val6 = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscElectricWorm");
					val6.noElites = true;
				}
			}
		}
	}
	public class Kin
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static Manipulator <0>__IL_ClassicStageInfo_HandleSingleMonsterTypeArtifact1;

			public static hook_HandleSingleMonsterTypeArtifact <1>__ClassicStageInfo_HandleSingleMonsterTypeArtifact;
		}

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

		public static SpawnCard KinNoRepeat;

		public static void Start()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Expected O, but got Unknown
			((Object)KinBackup).name = "dcccBackupKinHelper";
			object obj = <>O.<0>__IL_ClassicStageInfo_HandleSingleMonsterTypeArtifact1;
			if (obj == null)
			{
				Manipulator val = IL_ClassicStageInfo_HandleSingleMonsterTypeArtifact1;
				<>O.<0>__IL_ClassicStageInfo_HandleSingleMonsterTypeArtifact1 = val;
				obj = (object)val;
			}
			ClassicStageInfo.HandleSingleMonsterTypeArtifact += (Manipulator)obj;
			object obj2 = <>O.<1>__ClassicStageInfo_HandleSingleMonsterTypeArtifact;
			if (obj2 == null)
			{
				hook_HandleSingleMonsterTypeArtifact val2 = ClassicStageInfo_HandleSingleMonsterTypeArtifact;
				<>O.<1>__ClassicStageInfo_HandleSingleMonsterTypeArtifact = val2;
				obj2 = (object)val2;
			}
			ClassicStageInfo.HandleSingleMonsterTypeArtifact += (hook_HandleSingleMonsterTypeArtifact)obj2;
		}

		private static void IL_ClassicStageInfo_HandleSingleMonsterTypeArtifact1(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.MatchLdcR4(x, 40f)
			}))
			{
				val.Next.Operand = 50f;
				int index = val.Index;
				val.Index = index + 1;
				val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 50f)
				});
				val.Next.Operand = 60f;
			}
			else
			{
				Debug.LogWarning((object)"IL Failed: IL.IL_ClassicStageInfo_HandleMixEnemyArtifact");
			}
		}

		private static void IL_ClassicStageInfo_HandleMixEnemyArtifact(ILContext il)
		{
		}

		private static void ClassicStageInfo_HandleSingleMonsterTypeArtifact(orig_HandleSingleMonsterTypeArtifact orig, DirectorCardCategorySelection monsterCategories, Xoroshiro128Plus rng)
		{
			KinBackup.CopyFrom(monsterCategories);
			orig.Invoke(monsterCategories, rng);
			int num = 0;
			SpawnCard spawnCard = monsterCategories.categories[0].cards[0].spawnCard;
			if ((Object)(object)spawnCard == (Object)(object)KinNoRepeat)
			{
				do
				{
					num++;
					monsterCategories.CopyFrom(KinBackup);
					orig.Invoke(monsterCategories, rng);
					spawnCard = monsterCategories.categories[0].cards[0].spawnCard;
				}
				while (num < 15 && (Object)(object)spawnCard == (Object)(object)KinNoRepeat);
			}
			if ((Object)(object)spawnCard != (Object)(object)KinNoRepeat)
			{
				Debug.Log((object)(num + " Cycles until non repeat"));
				KinNoRepeat = spawnCard;
			}
			else if (num == 10)
			{
				Debug.Log((object)(num + " Cycles, stop looking for non repeat"));
			}
			KinBackup.Clear();
		}
	}
	public class KinBossDropsForEnemies
	{
		public static CharacterMaster tempClayMan;

		public static string ol = Language.GetString("ELITE_MODIFIER_LIGHTNING");

		public static void Start()
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: 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_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: 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_0139: 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_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: 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_01d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_0227: Unknown result type (might be due to invalid IL or missing references)
			//IL_0229: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: Unknown result type (might be due to invalid IL or missing references)
			//IL_0255: Unknown result type (might be due to invalid IL or missing references)
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_0283: Unknown result type (might be due to invalid IL or missing references)
			//IL_0285: Unknown result type (might be due to invalid IL or missing references)
			//IL_029f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0303: 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_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0334: Unknown result type (might be due to invalid IL or missing references)
			//IL_0336: Unknown result type (might be due to invalid IL or missing references)
			//IL_034e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0350: 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_036a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0382: Unknown result type (might be due to invalid IL or missing references)
			//IL_0384: Unknown result type (might be due to invalid IL or missing references)
			//IL_039c: Unknown result type (might be due to invalid IL or missing references)
			//IL_039e: 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_03ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0400: Unknown result type (might be due to invalid IL or missing references)
			//IL_040a: Unknown result type (might be due to invalid IL or missing references)
			//IL_040f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0421: Unknown result type (might be due to invalid IL or missing references)
			//IL_0423: Unknown result type (might be due to invalid IL or missing references)
			//IL_042d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0432: Unknown result type (might be due to invalid IL or missing references)
			//IL_0444: Unknown result type (might be due to invalid IL or missing references)
			//IL_0446: 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_0455: 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_0469: Unknown result type (might be due to invalid IL or missing references)
			//IL_0473: Unknown result type (might be due to invalid IL or missing references)
			//IL_0478: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_048c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0496: Unknown result type (might be due to invalid IL or missing references)
			//IL_049b: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_04af: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04be: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f5: 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_0509: Unknown result type (might be due to invalid IL or missing references)
			//IL_0513: Unknown result type (might be due to invalid IL or missing references)
			//IL_0518: Unknown result type (might be due to invalid IL or missing references)
			//IL_052c: Unknown result type (might be due to invalid IL or missing references)
			//IL_053e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0540: Unknown result type (might be due to invalid IL or missing references)
			//IL_054a: Unknown result type (might be due to invalid IL or missing references)
			//IL_054f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0563: Unknown result type (might be due to invalid IL or missing references)
			//IL_0575: Unknown result type (might be due to invalid IL or missing references)
			//IL_0577: 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_01a6: Unknown result type (might be due to invalid IL or missing references)
			SerializablePickupIndex val = default(SerializablePickupIndex);
			val.pickupName = "ItemIndex.SprintWisp";
			SerializablePickupIndex bossPickup = val;
			val = default(SerializablePickupIndex);
			val.pickupName = "ItemIndex.BeetleGland";
			SerializablePickupIndex bossPickup2 = val;
			val = default(SerializablePickupIndex);
			val.pickupName = "ItemIndex.RoboBallBuddy";
			SerializablePickupIndex bossPickup3 = val;
			val = default(SerializablePickupIndex);
			val.pickupName = "ItemIndex.FireballsOnHit";
			SerializablePickupIndex bossPickup4 = val;
			val = default(SerializablePickupIndex);
			val.pickupName = "ItemIndex.ShinyPearl";
			SerializablePickupIndex bossPickup5 = val;
			val = default(SerializablePickupIndex);
			val.pickupName = "ItemIndex.VoidMegaCrabItem";
			SerializablePickupIndex bossPickup6 = val;
			DeathRewards component = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/GolemBody").GetComponent<DeathRewards>();
			component.bossPickup = new SerializablePickupIndex
			{
				pickupName = "ItemIndex.Knurl"
			};
			component = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Halcyonite/HalcyoniteBody.prefab").WaitForCompletion().GetComponent<DeathRewards>();
			component.bossPickup = new SerializablePickupIndex
			{
				pickupName = "ItemIndex.Knurl"