Decompiled source of Risky Artifacts v2.4.2

plugins/Moffein-RiskyArtifacts/Risky_Artifacts.dll

Decompiled 4 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using ArtifactOfPotential;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.LunarTeleporter;
using EntityStates.Scrapper;
using IL.EntityStates;
using IL.RoR2;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates.LunarTeleporter;
using On.EntityStates.Scrapper;
using On.RoR2;
using On.RoR2.Projectile;
using ProperSave;
using R2API;
using R2API.Utils;
using Risky_Artifacts.Artifacts;
using Risky_Artifacts.Artifacts.MonoBehaviours;
using RoR2;
using RoR2.Artifacts;
using RoR2.ExpansionManagement;
using RoR2.Navigation;
using RoR2.Projectile;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
using Zio.FileSystems;

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

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

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

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace Risky_Artifacts
{
	public class HookGetBestBodyName
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static Func<Instruction, bool> <>9__0_1;

			public static Func<string, CharacterBody, string> <>9__0_2;

			public static Manipulator <>9__0_0;

			internal void <.ctor>b__0_0(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				//IL_0038: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val = new ILCursor(il);
				val = val.GotoNext(new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchRet(x)
				});
				val.Emit(OpCodes.Ldloc_0);
				val.EmitDelegate<Func<string, CharacterBody, string>>((Func<string, CharacterBody, string>)delegate(string str, CharacterBody cb)
				{
					if (Object.op_Implicit((Object)(object)cb) && Object.op_Implicit((Object)(object)cb.inventory))
					{
						if (cb.inventory.GetItemCount(Origin.OriginBonusItem) > 0)
						{
							str += Language.GetString("RISKYARTIFACTS_ORIGIN_MODIFIER");
						}
						if (cb.inventory.GetItemCount(BrotherInvasion.BrotherInvasionBonusItem) > 0)
						{
							str = Language.GetString("RISKYARTIFACTS_BROTHERINVASION_MODIFIER") + str;
						}
					}
					return str;
				});
			}

			internal bool <.ctor>b__0_1(Instruction x)
			{
				return ILPatternMatchingExt.MatchRet(x);
			}

			internal string <.ctor>b__0_2(string str, CharacterBody cb)
			{
				if (Object.op_Implicit((Object)(object)cb) && Object.op_Implicit((Object)(object)cb.inventory))
				{
					if (cb.inventory.GetItemCount(Origin.OriginBonusItem) > 0)
					{
						str += Language.GetString("RISKYARTIFACTS_ORIGIN_MODIFIER");
					}
					if (cb.inventory.GetItemCount(BrotherInvasion.BrotherInvasionBonusItem) > 0)
					{
						str = Language.GetString("RISKYARTIFACTS_BROTHERINVASION_MODIFIER") + str;
					}
				}
				return str;
			}
		}

		public HookGetBestBodyName()
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			object obj = <>c.<>9__0_0;
			if (obj == null)
			{
				Manipulator val = delegate(ILContext il)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Expected O, but got Unknown
					//IL_0038: Unknown result type (might be due to invalid IL or missing references)
					ILCursor val2 = new ILCursor(il);
					val2 = val2.GotoNext(new Func<Instruction, bool>[1]
					{
						(Instruction x) => ILPatternMatchingExt.MatchRet(x)
					});
					val2.Emit(OpCodes.Ldloc_0);
					val2.EmitDelegate<Func<string, CharacterBody, string>>((Func<string, CharacterBody, string>)delegate(string str, CharacterBody cb)
					{
						if (Object.op_Implicit((Object)(object)cb) && Object.op_Implicit((Object)(object)cb.inventory))
						{
							if (cb.inventory.GetItemCount(Origin.OriginBonusItem) > 0)
							{
								str += Language.GetString("RISKYARTIFACTS_ORIGIN_MODIFIER");
							}
							if (cb.inventory.GetItemCount(BrotherInvasion.BrotherInvasionBonusItem) > 0)
							{
								str = Language.GetString("RISKYARTIFACTS_BROTHERINVASION_MODIFIER") + str;
							}
						}
						return str;
					});
				};
				<>c.<>9__0_0 = val;
				obj = (object)val;
			}
			Util.GetBestBodyName += (Manipulator)obj;
		}
	}
	internal class LanguageTokens
	{
		public static SubFileSystem fileSystem;

		internal static string languageRoot => Path.Combine(assemblyDir, "language");

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

		public LanguageTokens()
		{
			RegisterLanguageTokens();
		}

		public static void RegisterLanguageTokens()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			Language.SetFolders += new hook_SetFolders(fixme);
		}

		private static void fixme(orig_SetFolders orig, Language self, IEnumerable<string> newFolders)
		{
			if (Directory.Exists(languageRoot))
			{
				IEnumerable<string> second = Directory.EnumerateDirectories(Path.Combine(languageRoot), self.name);
				orig.Invoke(self, newFolders.Union(second));
			}
			else
			{
				orig.Invoke(self, newFolders);
			}
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.Moffein.RiskyArtifacts", "Risky Artifacts", "2.4.2")]
	[R2APISubmoduleDependency(new string[] { "RecalculateStatsAPI", "EliteAPI", "ContentAddition", "ItemAPI" })]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	public class RiskyArtifactsPlugin : BaseUnityPlugin
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_LoadGameModes <>9__8_0;

			internal void <Awake>b__8_0(orig_LoadGameModes orig)
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				orig.Invoke();
				SimulacrumIndex = GameModeCatalog.FindGameModeIndex("InfiniteTowerRun");
			}
		}

		public static bool artifactPotentialLoaded = false;

		public static AssetBundle assetBundle;

		public static GameModeIndex SimulacrumIndex;

		public static PluginInfo pluginInfo;

		public static PickupDropTable tier1Drops = Addressables.LoadAssetAsync<PickupDropTable>((object)"RoR2/Base/Common/dtTier1Item.asset").WaitForCompletion();

		public static PickupDropTable tier2Drops = Addressables.LoadAssetAsync<PickupDropTable>((object)"RoR2/Base/Common/dtTier2Item.asset").WaitForCompletion();

		public static PickupDropTable tier3Drops = Addressables.LoadAssetAsync<PickupDropTable>((object)"RoR2/Base/Common/dtTier3Item.asset").WaitForCompletion();

		public static GameObject potentialPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/OptionPickup/OptionPickup.prefab").WaitForCompletion();

		public void Awake()
		{
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Expected O, but got Unknown
			pluginInfo = ((BaseUnityPlugin)this).Info;
			new LanguageTokens();
			using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Risky_Artifacts.riskyartifactsbundle"))
			{
				assetBundle = AssetBundle.LoadFromStream(stream);
			}
			artifactPotentialLoaded = Chainloader.PluginInfos.ContainsKey("zombieseatflesh7.ArtifactOfPotential");
			ReadConfig();
			object obj = <>c.<>9__8_0;
			if (obj == null)
			{
				hook_LoadGameModes val = delegate(orig_LoadGameModes orig)
				{
					//IL_000d: Unknown result type (might be due to invalid IL or missing references)
					//IL_0012: Unknown result type (might be due to invalid IL or missing references)
					orig.Invoke();
					SimulacrumIndex = GameModeCatalog.FindGameModeIndex("InfiniteTowerRun");
				};
				<>c.<>9__8_0 = val;
				obj = (object)val;
			}
			GameModeCatalog.LoadGameModes += (hook_LoadGameModes)obj;
			new Warfare();
			new Conformity();
			new Arrogance();
			new Expansion();
			new Origin();
			new PrimordialTele();
			new BrotherInvasion();
			new Cruelty();
			new Universe();
			new Hunted();
			if (Origin.enabled || BrotherInvasion.enabled)
			{
				new HookGetBestBodyName();
			}
		}

		public void ReadConfig()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_002c: Expected O, but got Unknown
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Expected O, but got Unknown
			//IL_0061: Expected O, but got Unknown
			//IL_007b: 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_0096: Expected O, but got Unknown
			//IL_0096: Expected O, but got Unknown
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Expected O, but got Unknown
			//IL_00cb: Expected O, but got Unknown
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Expected O, but got Unknown
			//IL_0100: Expected O, but got Unknown
			//IL_011a: 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: Expected O, but got Unknown
			//IL_0135: Expected O, but got Unknown
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Expected O, but got Unknown
			//IL_016a: Expected O, but got Unknown
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0199: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Expected O, but got Unknown
			//IL_01a3: Expected O, but got Unknown
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Expected O, but got Unknown
			//IL_01dc: Expected O, but got Unknown
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_020b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Expected O, but got Unknown
			//IL_0215: Expected O, but got Unknown
			//IL_022f: 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_024a: Expected O, but got Unknown
			//IL_024a: Expected O, but got Unknown
			//IL_0264: Unknown result type (might be due to invalid IL or missing references)
			//IL_0275: Unknown result type (might be due to invalid IL or missing references)
			//IL_027f: Expected O, but got Unknown
			//IL_027f: Expected O, but got Unknown
			//IL_0299: 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_02b8: Expected O, but got Unknown
			//IL_02b8: Expected O, but got Unknown
			//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f1: Expected O, but got Unknown
			//IL_02f1: Expected O, but got Unknown
			//IL_030b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0320: Unknown result type (might be due to invalid IL or missing references)
			//IL_032a: Expected O, but got Unknown
			//IL_032a: Expected O, but got Unknown
			//IL_0344: Unknown result type (might be due to invalid IL or missing references)
			//IL_0359: Unknown result type (might be due to invalid IL or missing references)
			//IL_0363: Expected O, but got Unknown
			//IL_0363: Expected O, but got Unknown
			//IL_037d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0392: Unknown result type (might be due to invalid IL or missing references)
			//IL_039c: Expected O, but got Unknown
			//IL_039c: Expected O, but got Unknown
			//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d5: Expected O, but got Unknown
			//IL_03d5: Expected O, but got Unknown
			//IL_03ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0404: Unknown result type (might be due to invalid IL or missing references)
			//IL_040e: Expected O, but got Unknown
			//IL_040e: Expected O, but got Unknown
			//IL_0428: Unknown result type (might be due to invalid IL or missing references)
			//IL_0439: Unknown result type (might be due to invalid IL or missing references)
			//IL_0443: Expected O, but got Unknown
			//IL_0443: Expected O, but got Unknown
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0472: Unknown result type (might be due to invalid IL or missing references)
			//IL_047c: Expected O, but got Unknown
			//IL_047c: Expected O, but got Unknown
			//IL_0496: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b1: Expected O, but got Unknown
			//IL_04b1: Expected O, but got Unknown
			//IL_04cb: 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_04e6: Expected O, but got Unknown
			//IL_04e6: Expected O, but got Unknown
			//IL_0500: Unknown result type (might be due to invalid IL or missing references)
			//IL_0511: Unknown result type (might be due to invalid IL or missing references)
			//IL_051b: Expected O, but got Unknown
			//IL_051b: Expected O, but got Unknown
			//IL_0535: Unknown result type (might be due to invalid IL or missing references)
			//IL_0546: Unknown result type (might be due to invalid IL or missing references)
			//IL_0550: Expected O, but got Unknown
			//IL_0550: Expected O, but got Unknown
			//IL_056a: Unknown result type (might be due to invalid IL or missing references)
			//IL_057b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: Expected O, but got Unknown
			//IL_0585: Expected O, but got Unknown
			//IL_059f: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ba: Expected O, but got Unknown
			//IL_05ba: Expected O, but got Unknown
			//IL_05d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ef: Expected O, but got Unknown
			//IL_05ef: Expected O, but got Unknown
			//IL_0609: Unknown result type (might be due to invalid IL or missing references)
			//IL_061a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0624: Expected O, but got Unknown
			//IL_0624: Expected O, but got Unknown
			//IL_063e: Unknown result type (might be due to invalid IL or missing references)
			//IL_064f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0659: Expected O, but got Unknown
			//IL_0659: Expected O, but got Unknown
			//IL_0673: Unknown result type (might be due to invalid IL or missing references)
			//IL_0684: Unknown result type (might be due to invalid IL or missing references)
			//IL_068e: Expected O, but got Unknown
			//IL_068e: Expected O, but got Unknown
			//IL_06a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c3: Expected O, but got Unknown
			//IL_06c3: Expected O, but got Unknown
			//IL_06dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f8: Expected O, but got Unknown
			//IL_06f8: Expected O, but got Unknown
			//IL_0712: Unknown result type (might be due to invalid IL or missing references)
			//IL_0723: Unknown result type (might be due to invalid IL or missing references)
			//IL_072d: Expected O, but got Unknown
			//IL_072d: Expected O, but got Unknown
			//IL_0747: Unknown result type (might be due to invalid IL or missing references)
			//IL_0758: Unknown result type (might be due to invalid IL or missing references)
			//IL_0762: Expected O, but got Unknown
			//IL_0762: Expected O, but got Unknown
			//IL_077c: Unknown result type (might be due to invalid IL or missing references)
			//IL_078d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0797: Expected O, but got Unknown
			//IL_0797: Expected O, but got Unknown
			//IL_07b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cc: Expected O, but got Unknown
			//IL_07cc: Expected O, but got Unknown
			//IL_07e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0801: Expected O, but got Unknown
			//IL_0801: Expected O, but got Unknown
			//IL_081b: Unknown result type (might be due to invalid IL or missing references)
			//IL_082c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0836: Expected O, but got Unknown
			//IL_0836: Expected O, but got Unknown
			//IL_0850: Unknown result type (might be due to invalid IL or missing references)
			//IL_0861: Unknown result type (might be due to invalid IL or missing references)
			//IL_086b: Expected O, but got Unknown
			//IL_086b: Expected O, but got Unknown
			//IL_0885: Unknown result type (might be due to invalid IL or missing references)
			//IL_0896: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a0: Expected O, but got Unknown
			//IL_08a0: Expected O, but got Unknown
			//IL_08ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_08cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d5: Expected O, but got Unknown
			//IL_08d5: Expected O, but got Unknown
			//IL_08ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0900: Unknown result type (might be due to invalid IL or missing references)
			//IL_090a: Expected O, but got Unknown
			//IL_090a: Expected O, but got Unknown
			//IL_0924: Unknown result type (might be due to invalid IL or missing references)
			//IL_0935: Unknown result type (might be due to invalid IL or missing references)
			//IL_093f: Expected O, but got Unknown
			//IL_093f: Expected O, but got Unknown
			//IL_0959: Unknown result type (might be due to invalid IL or missing references)
			//IL_096a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0974: Expected O, but got Unknown
			//IL_0974: Expected O, but got Unknown
			//IL_098e: Unknown result type (might be due to invalid IL or missing references)
			//IL_099f: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a9: Expected O, but got Unknown
			//IL_09a9: Expected O, but got Unknown
			//IL_09c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09de: Expected O, but got Unknown
			//IL_09de: Expected O, but got Unknown
			//IL_09f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a09: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a13: Expected O, but got Unknown
			//IL_0a13: Expected O, but got Unknown
			//IL_0a2d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a42: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a4c: Expected O, but got Unknown
			//IL_0a4c: Expected O, but got Unknown
			//IL_0a66: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a85: Expected O, but got Unknown
			//IL_0a85: Expected O, but got Unknown
			//IL_0a9f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0abe: Expected O, but got Unknown
			//IL_0abe: Expected O, but got Unknown
			//IL_0ad8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aed: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af7: Expected O, but got Unknown
			//IL_0af7: Expected O, but got Unknown
			//IL_0b11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b22: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b2c: Expected O, but got Unknown
			//IL_0b2c: Expected O, but got Unknown
			//IL_0b46: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b57: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b61: Expected O, but got Unknown
			//IL_0b61: Expected O, but got Unknown
			//IL_0b7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b96: Expected O, but got Unknown
			//IL_0b96: Expected O, but got Unknown
			//IL_0bb0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bcb: Expected O, but got Unknown
			//IL_0bcb: Expected O, but got Unknown
			//IL_0be5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c00: Expected O, but got Unknown
			//IL_0c00: Expected O, but got Unknown
			//IL_0c1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c2f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c39: Expected O, but got Unknown
			//IL_0c39: Expected O, but got Unknown
			//IL_0c53: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c68: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c72: Expected O, but got Unknown
			//IL_0c72: Expected O, but got Unknown
			//IL_0c8c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ca7: Expected O, but got Unknown
			//IL_0ca7: Expected O, but got Unknown
			//IL_0cc1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cd2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cdc: Expected O, but got Unknown
			//IL_0cdc: Expected O, but got Unknown
			//IL_0cf6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d07: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d11: Expected O, but got Unknown
			//IL_0d11: Expected O, but got Unknown
			//IL_0d2b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d3c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d46: Expected O, but got Unknown
			//IL_0d46: Expected O, but got Unknown
			//IL_0d60: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d7b: Expected O, but got Unknown
			//IL_0d7b: Expected O, but got Unknown
			//IL_0d95: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db0: Expected O, but got Unknown
			//IL_0db0: Expected O, but got Unknown
			//IL_0dca: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ddb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de5: Expected O, but got Unknown
			//IL_0de5: Expected O, but got Unknown
			//IL_0dff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e10: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e1a: Expected O, but got Unknown
			//IL_0e1a: Expected O, but got Unknown
			//IL_0e34: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e45: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e4f: Expected O, but got Unknown
			//IL_0e4f: Expected O, but got Unknown
			//IL_0e69: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e7e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e88: Expected O, but got Unknown
			//IL_0e88: Expected O, but got Unknown
			//IL_0ea2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0eb3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ebd: Expected O, but got Unknown
			//IL_0ebd: Expected O, but got Unknown
			//IL_0ed7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ee8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ef2: Expected O, but got Unknown
			//IL_0ef2: Expected O, but got Unknown
			//IL_0f0c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f2b: Expected O, but got Unknown
			//IL_0f2b: Expected O, but got Unknown
			//IL_0f45: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f5a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f64: Expected O, but got Unknown
			//IL_0f64: Expected O, but got Unknown
			//IL_0f7e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f93: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f9d: Expected O, but got Unknown
			//IL_0f9d: Expected O, but got Unknown
			//IL_0fb7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fc8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fd2: Expected O, but got Unknown
			//IL_0fd2: Expected O, but got Unknown
			//IL_0fec: Unknown result type (might be due to invalid IL or missing references)
			//IL_1001: Unknown result type (might be due to invalid IL or missing references)
			//IL_100b: Expected O, but got Unknown
			//IL_100b: Expected O, but got Unknown
			//IL_1025: Unknown result type (might be due to invalid IL or missing references)
			//IL_1036: Unknown result type (might be due to invalid IL or missing references)
			//IL_1040: Expected O, but got Unknown
			//IL_1040: Expected O, but got Unknown
			//IL_105a: Unknown result type (might be due to invalid IL or missing references)
			//IL_106b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1075: Expected O, but got Unknown
			//IL_1075: Expected O, but got Unknown
			//IL_108f: Unknown result type (might be due to invalid IL or missing references)
			//IL_10a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_10aa: Expected O, but got Unknown
			//IL_10aa: Expected O, but got Unknown
			//IL_10c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_10d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_10df: Expected O, but got Unknown
			//IL_10df: Expected O, but got Unknown
			//IL_10f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_110a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1114: Expected O, but got Unknown
			//IL_1114: Expected O, but got Unknown
			//IL_112e: Unknown result type (might be due to invalid IL or missing references)
			//IL_113f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1149: Expected O, but got Unknown
			//IL_1149: Expected O, but got Unknown
			//IL_1163: Unknown result type (might be due to invalid IL or missing references)
			//IL_1174: Unknown result type (might be due to invalid IL or missing references)
			//IL_117e: Expected O, but got Unknown
			//IL_117e: Expected O, but got Unknown
			//IL_1198: Unknown result type (might be due to invalid IL or missing references)
			//IL_11a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_11b3: Expected O, but got Unknown
			//IL_11b3: Expected O, but got Unknown
			//IL_11d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_11e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_11f1: Expected O, but got Unknown
			//IL_11f1: Expected O, but got Unknown
			//IL_1210: Unknown result type (might be due to invalid IL or missing references)
			//IL_1225: Unknown result type (might be due to invalid IL or missing references)
			//IL_122f: Expected O, but got Unknown
			//IL_122f: Expected O, but got Unknown
			//IL_124e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1263: Unknown result type (might be due to invalid IL or missing references)
			//IL_126d: Expected O, but got Unknown
			//IL_126d: Expected O, but got Unknown
			//IL_128c: Unknown result type (might be due to invalid IL or missing references)
			//IL_12a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_12ab: Expected O, but got Unknown
			//IL_12ab: Expected O, but got Unknown
			//IL_12ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_12df: Unknown result type (might be due to invalid IL or missing references)
			//IL_12e9: Expected O, but got Unknown
			//IL_12e9: Expected O, but got Unknown
			//IL_1308: Unknown result type (might be due to invalid IL or missing references)
			//IL_131d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1327: Expected O, but got Unknown
			//IL_1327: Expected O, but got Unknown
			//IL_1346: Unknown result type (might be due to invalid IL or missing references)
			//IL_135b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1365: Expected O, but got Unknown
			//IL_1365: Expected O, but got Unknown
			//IL_1384: Unknown result type (might be due to invalid IL or missing references)
			//IL_1399: Unknown result type (might be due to invalid IL or missing references)
			//IL_13a3: Expected O, but got Unknown
			//IL_13a3: Expected O, but got Unknown
			//IL_13c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_13d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_13e1: Expected O, but got Unknown
			//IL_13e1: Expected O, but got Unknown
			//IL_1400: Unknown result type (might be due to invalid IL or missing references)
			//IL_1415: Unknown result type (might be due to invalid IL or missing references)
			//IL_141f: Expected O, but got Unknown
			//IL_141f: Expected O, but got Unknown
			//IL_1439: Unknown result type (might be due to invalid IL or missing references)
			//IL_144e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1458: Expected O, but got Unknown
			//IL_1458: Expected O, but got Unknown
			//IL_1472: Unknown result type (might be due to invalid IL or missing references)
			//IL_1487: Unknown result type (might be due to invalid IL or missing references)
			//IL_1491: Expected O, but got Unknown
			//IL_1491: Expected O, but got Unknown
			//IL_14ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_14c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_14ca: Expected O, but got Unknown
			//IL_14ca: Expected O, but got Unknown
			//IL_14e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_14f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_1503: Expected O, but got Unknown
			//IL_1503: Expected O, but got Unknown
			//IL_151d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1532: Unknown result type (might be due to invalid IL or missing references)
			//IL_153c: Expected O, but got Unknown
			//IL_153c: Expected O, but got Unknown
			//IL_1556: Unknown result type (might be due to invalid IL or missing references)
			//IL_156b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1575: Expected O, but got Unknown
			//IL_1575: Expected O, but got Unknown
			//IL_158f: Unknown result type (might be due to invalid IL or missing references)
			//IL_15a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_15ae: Expected O, but got Unknown
			//IL_15ae: Expected O, but got Unknown
			//IL_15c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_15d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_15e3: Expected O, but got Unknown
			//IL_15e3: Expected O, but got Unknown
			//IL_15fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_160e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1618: Expected O, but got Unknown
			//IL_1618: Expected O, but got Unknown
			//IL_1618: Unknown result type (might be due to invalid IL or missing references)
			//IL_161d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1632: Unknown result type (might be due to invalid IL or missing references)
			//IL_1643: Unknown result type (might be due to invalid IL or missing references)
			//IL_164d: Expected O, but got Unknown
			//IL_164d: Expected O, but got Unknown
			//IL_1667: Unknown result type (might be due to invalid IL or missing references)
			//IL_167c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1686: Expected O, but got Unknown
			//IL_1686: Expected O, but got Unknown
			//IL_16a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_16b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_16bb: Expected O, but got Unknown
			//IL_16bb: Expected O, but got Unknown
			//IL_16d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_16e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_16f0: Expected O, but got Unknown
			//IL_16f0: Expected O, but got Unknown
			//IL_16f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_16f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_170a: Unknown result type (might be due to invalid IL or missing references)
			//IL_171b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1725: Expected O, but got Unknown
			//IL_1725: Expected O, but got Unknown
			//IL_173f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1754: Unknown result type (might be due to invalid IL or missing references)
			//IL_175e: Expected O, but got Unknown
			//IL_175e: Expected O, but got Unknown
			//IL_1778: Unknown result type (might be due to invalid IL or missing references)
			//IL_1789: Unknown result type (might be due to invalid IL or missing references)
			//IL_1793: Expected O, but got Unknown
			//IL_1793: Expected O, but got Unknown
			//IL_17ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_17be: Unknown result type (might be due to invalid IL or missing references)
			//IL_17c8: Expected O, but got Unknown
			//IL_17c8: Expected O, but got Unknown
			//IL_17c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_17cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_17e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_17f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_17fd: Expected O, but got Unknown
			//IL_17fd: Expected O, but got Unknown
			//IL_1817: Unknown result type (might be due to invalid IL or missing references)
			//IL_1828: Unknown result type (might be due to invalid IL or missing references)
			//IL_1832: Expected O, but got Unknown
			//IL_1832: Expected O, but got Unknown
			//IL_184c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1861: Unknown result type (might be due to invalid IL or missing references)
			//IL_186b: Expected O, but got Unknown
			//IL_186b: Expected O, but got Unknown
			//IL_1885: Unknown result type (might be due to invalid IL or missing references)
			//IL_1896: Unknown result type (might be due to invalid IL or missing references)
			//IL_18a0: Expected O, but got Unknown
			//IL_18a0: Expected O, but got Unknown
			//IL_18ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_18cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_18d5: Expected O, but got Unknown
			//IL_18d5: Expected O, but got Unknown
			//IL_18d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_18da: Unknown result type (might be due to invalid IL or missing references)
			//IL_18ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_1900: Unknown result type (might be due to invalid IL or missing references)
			//IL_190a: Expected O, but got Unknown
			//IL_190a: Expected O, but got Unknown
			//IL_1924: Unknown result type (might be due to invalid IL or missing references)
			//IL_1939: Unknown result type (might be due to invalid IL or missing references)
			//IL_1943: Expected O, but got Unknown
			//IL_1943: Expected O, but got Unknown
			Arrogance.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Arrogance", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Arrogance.guaranteeMountainShrine = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Arrogance", "Guarantee Mountain Shrine"), true, new ConfigDescription("Guarantees that at least 1 mountain shrine will spawn when this artifact is enabled.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Conformity.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Conformity", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Conformity.disableInBazaar = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Conformity", "Disable Conformity in Bazaar"), true, new ConfigDescription("Allow printers to spawn in the bazaar while Conformity is enabled (for use with mods that do this).", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Conformity.removeScrappers = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Conformity", "Remove Scrappers"), true, new ConfigDescription("Prevent Scrappers from spawning when this artifact is enabled.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Conformity.removePrinters = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Conformity", "Remove Printers"), true, new ConfigDescription("Prevent Printers from spawning when this artifact is enabled.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Warfare.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Warfare", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Warfare.moveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Warfare", "Move Speed Multiplier"), 1.5f, new ConfigDescription("Multiplier for enemy movement speed.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Warfare.atkSpeed = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Warfare", "Attack Speed Multiplier"), 1.5f, new ConfigDescription("Multiplier for enemy attack speed.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Warfare.projSpeed = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Warfare", "Projectile Speed Multiplier"), 1.5f, new ConfigDescription("Multiplier for enemy projectile speed.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Warfare.disableOnMithrix = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Warfare", "Disable move speed boost for Michael"), true, new ConfigDescription("Makes Michael unaffected by the move speed boost of this artifact because it causes him to always miss his melee.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Expansion.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Expansion", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Expansion.priceMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Expansion", "Cost Multiplier"), 1f, new ConfigDescription("Multiplier for how much money things cost.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Expansion.teleRadiusMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Expansion", "Teleporter Radius Multiplier"), 10000f, new ConfigDescription("Multiplier for radius size.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Expansion.teleDurationMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Expansion", "Teleporter Duration Multiplier"), 1.3333334f, new ConfigDescription("Multiplier for charge duration.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Expansion.voidRadiusMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Expansion", "Void Radius Multiplier"), 2f, new ConfigDescription("Multiplier for radius size.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Expansion.voidDurationMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Expansion", "Void Duration Multiplier"), 1.3333334f, new ConfigDescription("Multiplier for charge duration.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Expansion.moonRadiusMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Expansion", "Moon Radius Multiplier"), 2f, new ConfigDescription("Multiplier for radius size.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Expansion.moonDurationMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Expansion", "Moon Duration Multiplier"), 1.3333334f, new ConfigDescription("Multiplier for charge duration.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			OriginInvasionManager.invasionInterval = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Origin", "Invasion Interval"), 600f, new ConfigDescription("Time in seconds between invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.useAdaptiveArmor = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin", "Boss Adaptive Armor"), false, new ConfigDescription("Origin bosses get Mithrix's adaptive armor.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.bossVoidTeam = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin", "Use Void Team"), true, new ConfigDescription("Bosses spawn as part of the Void team.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.combineSpawns = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin", "Combine Spawns"), true, new ConfigDescription("Combine spawns into elites if too many bosses are spawning.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.ignoreHonor = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin", "Ignore Honor"), false, new ConfigDescription("Invasion spawns aren't forced to be elite if Honor is active.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.impOnly = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin", "Imps Only"), false, new ConfigDescription("Only Imp Overlords spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.disableParticles = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin", "Disable Particles"), true, new ConfigDescription("Disables the Origin Boss particle effect.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableTitan = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Stone Titan"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableVagrant = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Wandering Vagrant"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableDunestrider = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Clay Dunestrider"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableBeetle = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Beetle Queen"), false, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableImp = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Imp Overlord"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableGrovetender = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Grovetender"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableRoboBall = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Solus Control Unit"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableWorm = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Magma Worm"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.allowEliteWorms = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Magma Worm - Allow Elites"), false, new ConfigDescription("Allow this boss to spawn as an elite.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableRoboBall = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Xi Construct"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableWorm = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Void Devastator"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableGrandparent = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Grandparent"), false, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Origin.enableScavenger = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Origin Bosses", "Scavenger"), true, new ConfigDescription("Allow this boss to spawn during invasions.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			PrimordialTele.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Primacy", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			PrimordialTele.enableOnFirstLoop = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Primacy", "Enable on First Loop"), false, new ConfigDescription("Primordial teleporters will spawn on the first loop.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			PrimordialTele.forceEnable = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Primacy", "Force Enable"), false, new ConfigDescription("The artifact will always be enabled even in game modes that don't have artifacts.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasion.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("The Phantom", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasion.bossLunarTeam = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("The Phantom", "Use Lunar Team"), true, new ConfigDescription("The Phantom spawns as part of the Lunar team.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasion.ignoreHonor = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("The Phantom", "Ignore Honor"), false, new ConfigDescription("The Phantom isn't forced to be elite if Honor is active.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasionController.useAdaptiveArmor = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("The Phantom", "Adaptive Armor"), false, new ConfigDescription("Enable Adaptive Armor on The Phantom.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasionController.useStatOverride = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("The Phantom", "Stat Override"), false, new ConfigDescription("Override Mithrix unique scaling.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasionController.hpMultOverride = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("The Phantom", "Stat Override - HP Multiplier"), 12f, new ConfigDescription("Phantom HP Multiplier if Stat Override is enabled.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasionController.damageMultOverride = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("The Phantom", "Stat Override - Damage Multiplier"), 3f, new ConfigDescription("Phantom Damage Multiplier if Stat Override is enabled.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasionController.minInvasionTimer = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("The Phantom", "Min Spawn Timer"), 270f, new ConfigDescription("Minimum time before the Phantom spawns.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasionController.maxInvasionTimer = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("The Phantom", "Max Spawn Timer"), 360f, new ConfigDescription("Maximum time before the Phantom spawns.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			BrotherInvasionController.minStages = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("The Phantom", "Min Stages"), 0, new ConfigDescription("Minimum stage completions before the artifact activates.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Cruelty", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.guaranteeSpecialBoss = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Cruelty", "Guarantee Special Boss"), true, new ConfigDescription("Always apply Cruelty to special bosses.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.runEndBossGeneralAffixes = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Cruelty", "Guarantee Special Boss - Non-T2 Affixes"), 3, new ConfigDescription("Elite Types to add to special bosses if Guarantee Special Boss is enabled. Set to 0 to disable tier from being picked. Set to -1 for no limit.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.runEndBossT2Affixes = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Cruelty", "Guarantee Special Boss - T2 Affixes"), 0, new ConfigDescription("Elite Types to add to special bosses if Guarantee Special Boss is enabled. Set to 0 to disable tier from being picked. Set to -1 for no limit.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.triggerChance = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Cruelty", "Trigger Chance"), 25f, new ConfigDescription("Chance for Cruelty to be applied to an enemy. Set to 100 to make it always apply.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.failureChance = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Cruelty", "Failure Chance"), 25f, new ConfigDescription("Chance for Cruelty to stop after each new affix. Set to 0 to make it always attempt to add as many affixes as possible.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.costScaling = ((BaseUnityPlugin)this).Config.Bind<Cruelty.ScalingMode>(new ConfigDefinition("Cruelty", "Cost Scaling"), Cruelty.ScalingMode.Additive, new ConfigDescription("How should director cost scale?", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.damageScaling = ((BaseUnityPlugin)this).Config.Bind<Cruelty.ScalingMode>(new ConfigDefinition("Cruelty", "Damage Scaling"), Cruelty.ScalingMode.None, new ConfigDescription("How should elite damage scale?", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.healthScaling = ((BaseUnityPlugin)this).Config.Bind<Cruelty.ScalingMode>(new ConfigDefinition("Cruelty", "Health Scaling"), Cruelty.ScalingMode.Additive, new ConfigDescription("How should elite health scale?", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.rewardScaling = ((BaseUnityPlugin)this).Config.Bind<Cruelty.ScalingMode>(new ConfigDefinition("Cruelty", "Reward Scaling"), Cruelty.ScalingMode.Additive, new ConfigDescription("How should elite kill rewards scale?", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.maxT2Affixes = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Cruelty", "Max T2 Affixes"), 1, new ConfigDescription("Maximum T2 Affixes that Cruelty can add. Set to 0 to disable tier from being picked. Set to -1 for no limit.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Cruelty.maxGeneralAffixes = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Cruelty", "Max Non-T2 Affixes"), 3, new ConfigDescription("Maximum Non-T2 Affixes that Cruelty can add. Set to 0 to disable tier from being picked. Set to -1 for no limit.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.allSurvivors = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "All Survivors"), false, new ConfigDescription("Allow all survivors to spawn, even if not listed in the Spawnlist.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.survivorsOnly = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Only Spawn Survivors"), false, new ConfigDescription("Only spawn survivors when the artifact is active.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.spawnInfoInput = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Hunted", "Spawnlist"), "CommandoBody, Bandit2Body, ToolbotBody, MercBody, MageBody, LoaderBody, CrocoBody, RailgunnerBody, RocketSurvivorBody, CHEF, SniperClassicBody, MinerBody, HANDOverclockedBody, RobPaladinBody, SS2UChirrBody, SS2UCyborgBody, SS2UExecutionerBody, SS2UPyroBody, SS2UNemmandoBody, SS2UNucleatorBody, RobDriverBody, DeputyBody, MoffeinPilotBody", new ConfigDescription("List of bodies to be added. Format is BodyName separated by comma. To specify custom stats, do BodyName:Cost:HPMult(float):DamageMult(float)", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.nerfEngiTurrets = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Nerf Engi Turrets"), true, new ConfigDescription("Engi Turrets receive no health boost.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.nerfPercentHeal = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Nerf Percent Heal"), true, new ConfigDescription("Percent heal effects are unaffected by the increased HP multiplier.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.categoryWeight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Hunted", "Stats - Director Category Weight"), 1f, new ConfigDescription("Weight of the Hunted survivor director category. Usually it's 2 for Bosses and Minibosses, 3-4 for Common enemies.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.healthMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Hunted", "Stats - Health Multiplier"), 4f, new ConfigDescription("Default health multiplier for Hunted survivors. Vengeance is 10", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.damageMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Hunted", "Stats - Damage Multiplier"), 0.2f, new ConfigDescription("Default damage multiplier for Hunted survivors. Vengeance is 0.1", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.disableRegen = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Stats - Disable Regen"), true, new ConfigDescription("Disable health regeneration for Hunted Survivors.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.directorCost = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Hunted", "Director Cost"), 160, new ConfigDescription("Default director cost for Hunted survivors.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.useOverlay = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Overlay Texture"), false, new ConfigDescription("Hunted survivors use the Vengeance texture.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.allowCruelty = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Allow Cruelty"), true, new ConfigDescription("Hunted survivors can be affected by Cruelty.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.allowElite = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Allow Elites"), true, new ConfigDescription("Hunted survivors can be Elites. Disabling this prevents them from being affected by Cruelty.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.randomizeSkin = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Randomize Skin"), true, new ConfigDescription("Hunted survivors use a random skin.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Hunted.randomizeLoadout = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hunted", "Randomize Loadout"), true, new ConfigDescription("Hunted survivors use a random loadout.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.enabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Universe", "Enable Artifact"), true, new ConfigDescription("Allows this artifact to be selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.enableOnMoon = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Universe", "Replace Moon Spawns"), false, new ConfigDescription("Allow Universe to affect Commencement monster spawns.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.enableOnVoidLocus = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Universe", "Replace Void Locus Spawns"), false, new ConfigDescription("Allow Universe to affect Void Locus monster spawns.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatBasicMonsters.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Basic Monsters"), 4f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatMinibosses.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Minibosses"), 2f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatChampions.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Champions"), 2f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatSpecial.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Special"), 0.5f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatMithrix.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Mithrix"), 0.25f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatMithrixHurt.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Mithrix Phase 4"), 0f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatVoidling.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Voidling"), 0.25f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatNewt.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Newt"), 0f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatLunarScav.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Lunar Scavenger"), 0f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.Categories.CatDrone.weight = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Categories", "Category Weight - Drone"), 0f, new ConfigDescription("Chance of this monster category being selected.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.InputInfo.Basic_Monsters = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Universe - Spawnlists", "Spawnlist - Basic Monsters"), "BeetleBody, WispBody, LemurianBody, JellyfishBody, HermitCrabBody, VoidBarnacleBody, ImpBody, VultureBody, RoboBallMiniBody, AcidLarvaBody, MinorConstructBody, FlyingVerminBody, VerminBody, MoffeinClayManBody:28", new ConfigDescription("List of bodies to be added to this category. Format is BodyName separated by comma. To specify custom stats, do BodyName:Cost(int):MinStages(int):SelectionWeight(int):NodeGraphType(Default, Air, Ground)", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.InputInfo.Minibosses = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Universe - Spawnlists", "Spawnlist - Minibosses"), "LunarExploderBody, LunarGolemBody, LunarWispBody, GupBody, ClayGrenadierBody, ClayBruiserBody, MiniMushroomBody, BisonBody, BellBody, ParentBody, GolemBody, GreaterWispBody, BeetleGuardBody, NullifierBody, VoidJailerBody, LemurianBruiserBody, MoffeinArchWisp:240", new ConfigDescription("List of bodies to be added to this category. Format is BodyName separated by comma. To specify custom stats, do BodyName:Cost(int):MinStages(int):SelectionWeight(int):NodeGraphType(Default, Air, Ground)", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.InputInfo.Champions = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Universe - Spawnlists", "Spawnlist - Champions"), "VagrantBody, TitanBody, BeetleQueen2Body, ClayBossBody, MagmaWormBody, ImpBossBody, RoboBallBossBody, GravekeeperBody, MegaConstructBody, VoidMegaCrabBody, GrandparentBody, ScavBody, ElectricWormBody, MoffeinAncientWispBody:1000, MechorillaBody:600, RegigigasBody:1000", new ConfigDescription("List of bodies to be added to this category. Format is BodyName separated by comma. To specify custom stats, do BodyName:Cost(int):MinStages(int):SelectionWeight(int):NodeGraphType(Default, Air, Ground)", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.InputInfo.Special = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Universe - Spawnlists", "Spawnlist - Special"), "TitanGoldBody:6000:5, SuperRoboBallBossBody:6000:5, DireseekerBossBody:6000:5", new ConfigDescription("List of bodies to be added to this category. Bodies in this category will receive increased health and damage. To specify custom stats, do BodyName:Cost(int):MinStages(int):SelectionWeight(int):NodeGraphType(Default, Air, Ground)", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.InputInfo.LunarScav = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Universe - Spawnlists", "Spawnlist - Lunar Scavenger"), "ScavLunar1Body:8000:5, ScavLunar2Body:8000: 5,ScavLunar3Body:8000:5, ScavLunar4Body:8000:5", new ConfigDescription("List of bodies to be added to this category. Bodies in this category will receive increased health and damage. To specify custom stats, do BodyName:Cost(int):MinStages(int):SelectionWeight(int):NodeGraphType(Default, Air, Ground)", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.InputInfo.Drone = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Universe - Spawnlists", "Spawnlist - Drone"), "Turret1Body, Drone1Body, Drone2Body, MissileDroneBody, FlameDroneBody, EmergencyDroneBody, MegaDroneBody", new ConfigDescription("List of bodies to be added to this category. To specify custom stats, do BodyName:Cost(int):MinStages(int):SelectionWeight(int):NodeGraphType(Default, Air, Ground)", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.mithrixCost = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Universe - Mithrix", "Director Cost"), 8000, new ConfigDescription("Director cost of Mithrix.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.mithrixMinStages = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Universe - Mithrix", "Min Stages"), 5, new ConfigDescription("Min stages completed before Mithrix can spawn.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.mithrixEliteRules = ((BaseUnityPlugin)this).Config.Bind<EliteRules>(new ConfigDefinition("Universe - Mithrix", "Elite Rules"), (EliteRules)1, new ConfigDescription("Affects elite type.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.mithrixAllowElite = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Universe - Mithrix", "Allow Elite"), true, new ConfigDescription("Allow elites to spawn?.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.mithrixHurtCost = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Universe - Mithrix Phase 4", "Director Cost"), 24000, new ConfigDescription("Director cost of Mithrix Phase 4.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.mithrixHurtMinStages = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Universe - Mithrix Phase 4", "Min Stages"), 5, new ConfigDescription("Min stages completed before Mithrix Phase 4 can spawn.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.mithrixHurtEliteRules = ((BaseUnityPlugin)this).Config.Bind<EliteRules>(new ConfigDefinition("Universe - Mithrix Phase 4", "Elite Rules"), (EliteRules)1, new ConfigDescription("Affects elite type.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.mithrixHurtAllowElite = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Universe - Mithrix Phase 4", "Allow Elite"), true, new ConfigDescription("Allow elites to spawn?.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.voidlingCost = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Universe - Voidling", "Director Cost"), 12000, new ConfigDescription("Director cost of Voidling.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.voidlingMinStages = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Universe - Voidling", "Min Stages"), 5, new ConfigDescription("Min stages completed before Voidling can spawn.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.voidlingEliteRules = ((BaseUnityPlugin)this).Config.Bind<EliteRules>(new ConfigDefinition("Universe - Voidling", "Elite Rules"), (EliteRules)1, new ConfigDescription("Affects elite type.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.voidlingPhase2 = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Universe - Voidling", "Enable Phase 2 Attacks"), true, new ConfigDescription("Allow Voidling to use its Phase 2 attacks.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.voidlingAllowElite = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Universe - Voidling", "Allow Elite"), true, new ConfigDescription("Allow elites to spawn?.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.newtCost = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Universe - Newt", "Director Cost"), 18000, new ConfigDescription("Director cost of Newt.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.newtMinStages = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Universe - Newt", "Min Stages"), 5, new ConfigDescription("Min stages completed before Newt can spawn.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.newtEliteRules = ((BaseUnityPlugin)this).Config.Bind<EliteRules>(new ConfigDefinition("Universe - Newt", "Elite Rules"), (EliteRules)2, new ConfigDescription("Affects elite type.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.newtAllowElite = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Universe - Newt", "Allow Elite"), false, new ConfigDescription("Allow elites to spawn?", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			Universe.droneDamageMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Universe - Drone", "Damage Multiplier"), 0.1f, new ConfigDescription("Affects the damage stat of enemy drones.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
		}

		public static void FixScriptableObjectName(ArtifactDef ad)
		{
			((Object)ad).name = ad.cachedName;
		}

		public static bool IsPotentialArtifactActive()
		{
			bool result = false;
			if (artifactPotentialLoaded)
			{
				result = IsPotentialArtifactActiveInternal();
			}
			return result;
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		private static bool IsPotentialArtifactActiveInternal()
		{
			return Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(PotentialArtifact.Potential);
		}
	}
	public static class Utils
	{
		private static Random rng = new Random();

		public static void Shuffle<T>(this IList<T> list)
		{
			int num = list.Count;
			while (num > 1)
			{
				num--;
				int index = rng.Next(num + 1);
				T value = list[index];
				list[index] = list[num];
				list[num] = value;
			}
		}

		public static int CompareEliteTierCost(EliteTierDef tier1, EliteTierDef tier2)
		{
			if (tier1.costMultiplier == tier2.costMultiplier)
			{
				return 0;
			}
			if (tier1.costMultiplier > tier2.costMultiplier)
			{
				return -1;
			}
			return 1;
		}

		public static EliteDef GetRandomElite(EliteTierDef et)
		{
			return et.eliteTypes[Random.Range(0, et.eliteTypes.Length)];
		}

		public static Vector3 FindSafeTeleportPosition(GameObject gameObject, Vector3 targetPosition)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: 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)
			return FindSafeTeleportPosition(gameObject, targetPosition, float.NegativeInfinity, float.NegativeInfinity);
		}

		public static Vector3 FindSafeTeleportPosition(GameObject gameObject, Vector3 targetPosition, float idealMinDistance, float idealMaxDistance)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: 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_0012: 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_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)
			//IL_004e: 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_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Expected O, but got Unknown
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Expected O, but got Unknown
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: 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_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_00ac: Expected O, but got Unknown
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Expected O, but got Unknown
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			SpawnCard val = ScriptableObject.CreateInstance<SpawnCard>();
			val.hullSize = (HullClassification)0;
			val.nodeGraphType = (GraphType)0;
			val.prefab = LegacyResourcesAPI.Load<GameObject>("SpawnCards/HelperPrefab");
			Vector3 result = targetPosition;
			GameObject val2 = null;
			if (idealMaxDistance > 0f && idealMinDistance < idealMaxDistance)
			{
				val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, new DirectorPlacementRule
				{
					placementMode = (PlacementMode)1,
					minDistance = idealMinDistance,
					maxDistance = idealMaxDistance,
					position = targetPosition
				}, RoR2Application.rng));
			}
			if (!Object.op_Implicit((Object)(object)val2))
			{
				val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, new DirectorPlacementRule
				{
					placementMode = (PlacementMode)3,
					position = targetPosition
				}, RoR2Application.rng));
				if (Object.op_Implicit((Object)(object)val2))
				{
					result = val2.transform.position;
				}
			}
			if (Object.op_Implicit((Object)(object)val2))
			{
				Object.Destroy((Object)(object)val2);
			}
			Object.Destroy((Object)(object)val);
			return result;
		}
	}
}
namespace Risky_Artifacts.Artifacts
{
	public class Arrogance
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_AddShrineStack <>9__7_0;

			public static hook_Start <>9__7_1;

			public static hook_Start <>9__7_2;

			internal void <.ctor>b__7_0(orig_AddShrineStack orig, ShrineBossBehavior self, Interactor interactor)
			{
				if (NetworkServer.active)
				{
					stageMountainCount++;
				}
				orig.Invoke(self, interactor);
			}

			internal void <.ctor>b__7_1(orig_Start orig, Run self)
			{
				runMountainCount = 0;
				stageMountainCount = 0;
				orig.Invoke(self);
			}

			internal void <.ctor>b__7_2(orig_Start orig, Stage self)
			{
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				runMountainCount += stageMountainCount;
				stageMountainCount = 0;
				orig.Invoke(self);
				if (Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(artifact.artifactIndex) && Object.op_Implicit((Object)(object)TeleporterInteraction.instance))
				{
					for (int i = 0; i < runMountainCount; i++)
					{
						TeleporterInteraction.instance.AddShrineStack();
					}
				}
			}
		}

		public static bool enabled = true;

		public static ArtifactDef artifact;

		private static InteractableSpawnCard mountainShrineCard = Addressables.LoadAssetAsync<InteractableSpawnCard>((object)"RoR2/Base/ShrineBoss/iscShrineBoss.asset").WaitForCompletion();

		public static List<SceneDef> blacklistedScenes = new List<SceneDef>
		{
			Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/Base/moon/moon.asset").WaitForCompletion(),
			Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/Base/moon2/moon2.asset").WaitForCompletion(),
			Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/voidraid/voidraid.asset").WaitForCompletion(),
			Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/voidstage/voidstage.asset").WaitForCompletion()
		};

		public static bool guaranteeMountainShrine = true;

		public static int runMountainCount = 0;

		public static int stageMountainCount = 0;

		public Arrogance()
		{
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Expected O, but got Unknown
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Expected O, but got Unknown
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Expected O, but got Unknown
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Expected O, but got Unknown
			if (!enabled)
			{
				return;
			}
			artifact = ScriptableObject.CreateInstance<ArtifactDef>();
			artifact.cachedName = "RiskyArtifactOfArrogance";
			artifact.nameToken = "RISKYARTIFACTS_ARROGANCE_NAME";
			artifact.descriptionToken = "RISKYARTIFACTS_ARROGANCE_DESC";
			artifact.smallIconDeselectedSprite = RiskyArtifactsPlugin.assetBundle.LoadAsset<Sprite>("texArrogDisabled.png");
			artifact.smallIconSelectedSprite = RiskyArtifactsPlugin.assetBundle.LoadAsset<Sprite>("texArrogEnabled.png");
			RiskyArtifactsPlugin.FixScriptableObjectName(artifact);
			ContentAddition.AddArtifactDef(artifact);
			if (Chainloader.PluginInfos.ContainsKey("com.KingEnderBrine.ProperSave"))
			{
				HandleSave();
			}
			object obj = <>c.<>9__7_0;
			if (obj == null)
			{
				hook_AddShrineStack val = delegate(orig_AddShrineStack orig, ShrineBossBehavior self, Interactor interactor)
				{
					if (NetworkServer.active)
					{
						stageMountainCount++;
					}
					orig.Invoke(self, interactor);
				};
				<>c.<>9__7_0 = val;
				obj = (object)val;
			}
			ShrineBossBehavior.AddShrineStack += (hook_AddShrineStack)obj;
			object obj2 = <>c.<>9__7_1;
			if (obj2 == null)
			{
				hook_Start val2 = delegate(orig_Start orig, Run self)
				{
					runMountainCount = 0;
					stageMountainCount = 0;
					orig.Invoke(self);
				};
				<>c.<>9__7_1 = val2;
				obj2 = (object)val2;
			}
			Run.Start += (hook_Start)obj2;
			object obj3 = <>c.<>9__7_2;
			if (obj3 == null)
			{
				hook_Start val3 = delegate(orig_Start orig, Stage self)
				{
					//IL_0035: Unknown result type (might be due to invalid IL or missing references)
					runMountainCount += stageMountainCount;
					stageMountainCount = 0;
					orig.Invoke(self);
					if (Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(artifact.artifactIndex) && Object.op_Implicit((Object)(object)TeleporterInteraction.instance))
					{
						for (int i = 0; i < runMountainCount; i++)
						{
							TeleporterInteraction.instance.AddShrineStack();
						}
					}
				};
				<>c.<>9__7_2 = val3;
				obj3 = (object)val3;
			}
			Stage.Start += (hook_Start)obj3;
			if (guaranteeMountainShrine)
			{
				SceneDirector.PopulateScene += new hook_PopulateScene(GuaranteeMountainShrine);
			}
		}

		private void GuaranteeMountainShrine(orig_PopulateScene orig, SceneDirector self)
		{
			//IL_001f: 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_0058: Invalid comparison between Unknown and I4
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Expected O, but got Unknown
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Expected O, but got Unknown
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Invalid comparison between Unknown and I4
			orig.Invoke(self);
			if (!Object.op_Implicit((Object)(object)RunArtifactManager.instance) || !RunArtifactManager.instance.IsArtifactEnabled(artifact.artifactIndex) || Object.op_Implicit((Object)(object)Run.instance))
			{
				return;
			}
			SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
			if (!Object.op_Implicit((Object)(object)sceneDefForCurrentScene) || (int)sceneDefForCurrentScene.sceneType != 1 || blacklistedScenes.Contains(sceneDefForCurrentScene))
			{
				return;
			}
			DirectorPlacementRule val = new DirectorPlacementRule
			{
				placementMode = (PlacementMode)4
			};
			GameObject val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest((SpawnCard)(object)mountainShrineCard, val, self.rng));
			if (Object.op_Implicit((Object)(object)val2))
			{
				PurchaseInteraction component = val2.GetComponent<PurchaseInteraction>();
				if (Object.op_Implicit((Object)(object)component) && (int)component.costType == 1)
				{
					component.Networkcost = Run.instance.GetDifficultyScaledCost(component.cost);
				}
				Debug.Log((object)"Arrogance - Placing guaranteed Mountain Shrine");
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		private void HandleSave()
		{
			SaveFile.OnGatgherSaveData += Save;
			Loading.OnLoadingEnded += Load;
		}

		public static void Save(Dictionary<string, object> dict)
		{
			dict.Add("riskyArtifact.Arrogance.runCount", runMountainCount);
		}

		public void Load(SaveFile save)
		{
			runMountainCount = save.GetModdedData<int>("riskyArtifact.Arrogance.runCount");
		}
	}
	public class BrotherInvasion
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static Func<Instruction, bool> <>9__6_4;

			public static Func<bool, CharacterModel, bool> <>9__6_5;

			public static Manipulator <>9__6_0;

			public static Func<Instruction, bool> <>9__6_6;

			public static Func<bool, CharacterModel, bool> <>9__6_7;

			public static Manipulator <>9__6_1;

			public static hook_GetSubtitle <>9__6_2;

			public static hook_TakeDamage <>9__6_3;

			internal void <InitBrotherItem>b__6_0(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val = new ILCursor(il);
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchCall(x, typeof(CharacterModel), "get_isGhost")
				});
				val.Emit(OpCodes.Ldarg_0);
				val.EmitDelegate<Func<bool, CharacterModel, bool>>((Func<bool, CharacterModel, bool>)delegate(bool isGhost, CharacterModel self)
				{
					bool flag = false;
					if (Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)self.body.inventory))
					{
						flag = self.body.inventory.GetItemCount(BrotherInvasionBonusItem) > 0;
					}
					return isGhost || flag;
				});
			}

			internal bool <InitBrotherItem>b__6_4(Instruction x)
			{
				return ILPatternMatchingExt.MatchCall(x, typeof(CharacterModel), "get_isGhost");
			}

			internal bool <InitBrotherItem>b__6_5(bool isGhost, CharacterModel self)
			{
				bool flag = false;
				if (Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)self.body.inventory))
				{
					flag = self.body.inventory.GetItemCount(BrotherInvasionBonusItem) > 0;
				}
				return isGhost || flag;
			}

			internal void <InitBrotherItem>b__6_1(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val = new ILCursor(il);
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchCall(x, typeof(CharacterModel), "get_isGhost")
				});
				val.Emit(OpCodes.Ldarg_0);
				val.EmitDelegate<Func<bool, CharacterModel, bool>>((Func<bool, CharacterModel, bool>)delegate(bool isGhost, CharacterModel self)
				{
					bool flag = false;
					if (Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)self.body.inventory))
					{
						flag = self.body.inventory.GetItemCount(BrotherInvasionBonusItem) > 0;
					}
					return isGhost || flag;
				});
			}

			internal bool <InitBrotherItem>b__6_6(Instruction x)
			{
				return ILPatternMatchingExt.MatchCall(x, typeof(CharacterModel), "get_isGhost");
			}

			internal bool <InitBrotherItem>b__6_7(bool isGhost, CharacterModel self)
			{
				bool flag = false;
				if (Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)self.body.inventory))
				{
					flag = self.body.inventory.GetItemCount(BrotherInvasionBonusItem) > 0;
				}
				return isGhost || flag;
			}

			internal string <InitBrotherItem>b__6_2(orig_GetSubtitle orig, CharacterBody self)
			{
				if (Object.op_Implicit((Object)(object)self.inventory) && self.inventory.GetItemCount(BrotherInvasionBonusItem) > 0)
				{
					return Language.GetString("RISKYARTIFACTS_BROTHERINVASION_SUBTITLENAMETOKEN");
				}
				return orig.Invoke(self);
			}

			internal void <InitBrotherItem>b__6_3(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
			{
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_002d: Invalid comparison between Unknown and I4
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Invalid comparison between Unknown and I4
				if (NetworkServer.active && !Object.op_Implicit((Object)(object)damageInfo.attacker) && !Object.op_Implicit((Object)(object)damageInfo.inflictor) && (int)damageInfo.damageColorIndex == 9 && (int)damageInfo.damageType == 66 && Object.op_Implicit((Object)(object)self.body.inventory) && self.body.inventory.GetItemCount(BrotherInvasionBonusItem) > 0)
				{
					damageInfo.damage = 0f;
					damageInfo.rejected = true;
				}
				orig.Invoke(self, damageInfo);
			}
		}

		public static bool enabled = true;

		public static ItemDef BrotherInvasionBonusItem;

		public static ArtifactDef artifact;

		public static bool bossLunarTeam = true;

		public static bool ignoreHonor = false;

		public BrotherInvasion()
		{
			if (enabled)
			{
				artifact = ScriptableObject.CreateInstance<ArtifactDef>();
				artifact.cachedName = "RiskyArtifactOfBrotherInvasion";
				artifact.nameToken = "RISKYARTIFACTS_BROTHERINVASION_NAME";
				artifact.descriptionToken = "RISKYARTIFACTS_BROTHERINVASION_DESC";
				artifact.smallIconDeselectedSprite = RiskyArtifactsPlugin.assetBundle.LoadAsset<Sprite>("texPhantomDisabled.png");
				artifact.smallIconSelectedSprite = RiskyArtifactsPlugin.assetBundle.LoadAsset<Sprite>("texPhantomEnabled.png");
				RiskyArtifactsPlugin.FixScriptableObjectName(artifact);
				ContentAddition.AddArtifactDef(artifact);
				Stage.onServerStageBegin += CreateBrotherSpawner;
				InitBrotherItem();
			}
		}

		private void InitBrotherItem()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Expected O, but got Unknown
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Expected O, but got Unknown
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Expected O, but got Unknown
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Expected O, but got Unknown
			BrotherInvasionBonusItem = ScriptableObject.CreateInstance<ItemDef>();
			((Object)BrotherInvasionBonusItem).name = "RiskyArtifactsBrotherInvasionBonus";
			BrotherInvasionBonusItem.deprecatedTier = (ItemTier)5;
			BrotherInvasionBonusItem.nameToken = "RISKYARTIFACTS_BROTHERINVASIONBONUSITEM_NAME";
			BrotherInvasionBonusItem.pickupToken = "RISKYARTIFACTS_BROTHERINVASIONBONUSITEM_PICKUP";
			BrotherInvasionBonusItem.descriptionToken = "RISKYARTIFACTS_BROTHERINVASIONBONUSITEM_DESC";
			ItemDef brotherInvasionBonusItem = BrotherInvasionBonusItem;
			ItemTag[] array = new ItemTag[3];
			RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			brotherInvasionBonusItem.tags = (ItemTag[])(object)array;
			ItemDisplayRule[] array2 = (ItemDisplayRule[])(object)new ItemDisplayRule[0];
			ItemAPI.Add(new CustomItem(BrotherInvasionBonusItem, array2));
			object obj = <>c.<>9__6_0;
			if (obj == null)
			{
				Manipulator val = delegate(ILContext il)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Expected O, but got Unknown
					//IL_0039: Unknown result type (might be due to invalid IL or missing references)
					ILCursor val6 = new ILCursor(il);
					val6.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
					{
						(Instruction x) => ILPatternMatchingExt.MatchCall(x, typeof(CharacterModel), "get_isGhost")
					});
					val6.Emit(OpCodes.Ldarg_0);
					val6.EmitDelegate<Func<bool, CharacterModel, bool>>((Func<bool, CharacterModel, bool>)delegate(bool isGhost, CharacterModel self)
					{
						bool flag2 = false;
						if (Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)self.body.inventory))
						{
							flag2 = self.body.inventory.GetItemCount(BrotherInvasionBonusItem) > 0;
						}
						return isGhost || flag2;
					});
				};
				<>c.<>9__6_0 = val;
				obj = (object)val;
			}
			CharacterModel.UpdateOverlays += (Manipulator)obj;
			object obj2 = <>c.<>9__6_1;
			if (obj2 == null)
			{
				Manipulator val2 = delegate(ILContext il)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Expected O, but got Unknown
					//IL_0039: Unknown result type (might be due to invalid IL or missing references)
					ILCursor val5 = new ILCursor(il);
					val5.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
					{
						(Instruction x) => ILPatternMatchingExt.MatchCall(x, typeof(CharacterModel), "get_isGhost")
					});
					val5.Emit(OpCodes.Ldarg_0);
					val5.EmitDelegate<Func<bool, CharacterModel, bool>>((Func<bool, CharacterModel, bool>)delegate(bool isGhost, CharacterModel self)
					{
						bool flag = false;
						if (Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)self.body.inventory))
						{
							flag = self.body.inventory.GetItemCount(BrotherInvasionBonusItem) > 0;
						}
						return isGhost || flag;
					});
				};
				<>c.<>9__6_1 = val2;
				obj2 = (object)val2;
			}
			CharacterModel.UpdateRendererMaterials += (Manipulator)obj2;
			object obj3 = <>c.<>9__6_2;
			if (obj3 == null)
			{
				hook_GetSubtitle val3 = (orig_GetSubtitle orig, CharacterBody self) => (Object.op_Implicit((Object)(object)self.inventory) && self.inventory.GetItemCount(BrotherInvasionBonusItem) > 0) ? Language.GetString("RISKYARTIFACTS_BROTHERINVASION_SUBTITLENAMETOKEN") : orig.Invoke(self);
				<>c.<>9__6_2 = val3;
				obj3 = (object)val3;
			}
			CharacterBody.GetSubtitle += (hook_GetSubtitle)obj3;
			object obj4 = <>c.<>9__6_3;
			if (obj4 == null)
			{
				hook_TakeDamage val4 = delegate(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
				{
					//IL_0026: Unknown result type (might be due to invalid IL or missing references)
					//IL_002d: Invalid comparison between Unknown and I4
					//IL_0030: Unknown result type (might be due to invalid IL or missing references)
					//IL_0037: Invalid comparison between Unknown and I4
					if (NetworkServer.active && !Object.op_Implicit((Object)(object)damageInfo.attacker) && !Object.op_Implicit((Object)(object)damageInfo.inflictor) && (int)damageInfo.damageColorIndex == 9 && (int)damageInfo.damageType == 66 && Object.op_Implicit((Object)(object)self.body.inventory) && self.body.inventory.GetItemCount(BrotherInvasionBonusItem) > 0)
					{
						damageInfo.damage = 0f;
						damageInfo.rejected = true;
					}
					orig.Invoke(self, damageInfo);
				};
				<>c.<>9__6_3 = val4;
				obj4 = (object)val4;
			}
			HealthComponent.TakeDamage += (hook_TakeDamage)obj4;
		}

		private void CreateBrotherSpawner(Stage obj)
		{
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Invalid comparison between Unknown and I4
			if (Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(artifact))
			{
				SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
				if (Object.op_Implicit((Object)(object)sceneDefForCurrentScene) && !sceneDefForCurrentScene.isFinalStage && (int)sceneDefForCurrentScene.sceneType == 1 && Object.op_Implicit((Object)(object)obj))
				{
					((Component)obj).gameObject.AddComponent<BrotherInvasionController>();
				}
			}
		}
	}
	public class Conformity
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_OnEnter <>9__6_0;

			public static hook_Awake <>9__6_1;

			internal void <.ctor>b__6_0(orig_OnEnter orig, ScrapperBaseState self)
			{
				orig.Invoke(self);
				if (Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(artifact))
				{
					SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
					if (!disableInBazaar || !Object.op_Implicit((Object)(object)sceneDefForCurrentScene) || !((Object)(object)sceneDefForCurrentScene == (Object)(object)bazaarSceneDef))
					{
						Debug.Log((object)"Conformity - Removing Scrapper");
						Object.Destroy((Object)(object)((EntityState)