Decompiled source of EasyBossConfig v0.0.2

EasyBossConfig.dll

Decompiled 7 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using JetBrains.Annotations;
using Microsoft.CodeAnalysis;
using ServerSync;
using TMPro;
using UnityEngine;

[assembly: AssemblyFileVersion("0.0.2")]
[assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")]
[assembly: ComVisible(false)]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyProduct("EasyBossConfig")]
[assembly: AssemblyCompany("coemt")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("EasyBossConfig")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.2.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[<b5cd5ca8-4d67-47e4-98c1-ef6031574f58>Embedded]
	internal sealed class <b5cd5ca8-4d67-47e4-98c1-ef6031574f58>EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[<b5cd5ca8-4d67-47e4-98c1-ef6031574f58>Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class <5aaca9f9-4112-402c-9b66-a4acfb98f33a>NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public <5aaca9f9-4112-402c-9b66-a4acfb98f33a>NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public <5aaca9f9-4112-402c-9b66-a4acfb98f33a>NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	[<b5cd5ca8-4d67-47e4-98c1-ef6031574f58>Embedded]
	internal sealed class <321a49f9-db32-4783-9f22-0d231b80558d>NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public <321a49f9-db32-4783-9f22-0d231b80558d>NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace EasyBossConfig
{
	public class EasyBossConfigPatch
	{
		[HarmonyPatch(typeof(ZNetScene), "Awake")]
		public static class EasyBoss_Patch_Coe
		{
			[<321a49f9-db32-4783-9f22-0d231b80558d>NullableContext(1)]
			public static void Postfix(ZNetScene __instance)
			{
				//IL_0089: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f9: Expected O, but got Unknown
				//IL_03bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_03c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_03da: Unknown result type (might be due to invalid IL or missing references)
				//IL_03ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
				//IL_040a: Unknown result type (might be due to invalid IL or missing references)
				//IL_041a: Unknown result type (might be due to invalid IL or missing references)
				//IL_042f: Expected O, but got Unknown
				//IL_0115: Unknown result type (might be due to invalid IL or missing references)
				//IL_011a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0130: Unknown result type (might be due to invalid IL or missing references)
				//IL_0140: Unknown result type (might be due to invalid IL or missing references)
				//IL_0150: Unknown result type (might be due to invalid IL or missing references)
				//IL_0160: Unknown result type (might be due to invalid IL or missing references)
				//IL_0170: Unknown result type (might be due to invalid IL or missing references)
				//IL_0185: Expected O, but got Unknown
				//IL_06f9: Unknown result type (might be due to invalid IL or missing references)
				//IL_06fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_0714: Unknown result type (might be due to invalid IL or missing references)
				//IL_0724: Unknown result type (might be due to invalid IL or missing references)
				//IL_0734: Unknown result type (might be due to invalid IL or missing references)
				//IL_0744: Unknown result type (might be due to invalid IL or missing references)
				//IL_0754: Unknown result type (might be due to invalid IL or missing references)
				//IL_0769: Expected O, but got Unknown
				//IL_044c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0451: Unknown result type (might be due to invalid IL or missing references)
				//IL_0467: Unknown result type (might be due to invalid IL or missing references)
				//IL_0477: Unknown result type (might be due to invalid IL or missing references)
				//IL_0487: Unknown result type (might be due to invalid IL or missing references)
				//IL_0497: 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_04bc: Expected O, but got Unknown
				//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0211: Expected O, but got Unknown
				//IL_0a33: Unknown result type (might be due to invalid IL or missing references)
				//IL_0a38: Unknown result type (might be due to invalid IL or missing references)
				//IL_0a4e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0a5e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0a6e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0a7e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0a8e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0aa3: Expected O, but got Unknown
				//IL_0786: Unknown result type (might be due to invalid IL or missing references)
				//IL_078b: Unknown result type (might be due to invalid IL or missing references)
				//IL_07a1: Unknown result type (might be due to invalid IL or missing references)
				//IL_07b1: Unknown result type (might be due to invalid IL or missing references)
				//IL_07c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_07d1: Unknown result type (might be due to invalid IL or missing references)
				//IL_07e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_07f6: Expected O, but got Unknown
				//IL_04d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_04de: Unknown result type (might be due to invalid IL or missing references)
				//IL_04f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_0504: Unknown result type (might be due to invalid IL or missing references)
				//IL_0514: Unknown result type (might be due to invalid IL or missing references)
				//IL_0524: Unknown result type (might be due to invalid IL or missing references)
				//IL_0534: Unknown result type (might be due to invalid IL or missing references)
				//IL_0549: Expected O, but got Unknown
				//IL_022d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0232: Unknown result type (might be due to invalid IL or missing references)
				//IL_0248: Unknown result type (might be due to invalid IL or missing references)
				//IL_0258: Unknown result type (might be due to invalid IL or missing references)
				//IL_0268: Unknown result type (might be due to invalid IL or missing references)
				//IL_0278: Unknown result type (might be due to invalid IL or missing references)
				//IL_0288: Unknown result type (might be due to invalid IL or missing references)
				//IL_029d: Expected O, but got Unknown
				//IL_0d6d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0d72: Unknown result type (might be due to invalid IL or missing references)
				//IL_0d88: Unknown result type (might be due to invalid IL or missing references)
				//IL_0d98: Unknown result type (might be due to invalid IL or missing references)
				//IL_0da8: Unknown result type (might be due to invalid IL or missing references)
				//IL_0db8: Unknown result type (might be due to invalid IL or missing references)
				//IL_0dc8: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ddd: Expected O, but got Unknown
				//IL_0ac0: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ac5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0adb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0aeb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0afb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0b0b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0b1b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0b30: Expected O, but got Unknown
				//IL_0813: Unknown result type (might be due to invalid IL or missing references)
				//IL_0818: Unknown result type (might be due to invalid IL or missing references)
				//IL_082e: Unknown result type (might be due to invalid IL or missing references)
				//IL_083e: Unknown result type (might be due to invalid IL or missing references)
				//IL_084e: Unknown result type (might be due to invalid IL or missing references)
				//IL_085e: Unknown result type (might be due to invalid IL or missing references)
				//IL_086e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0883: Expected O, but got Unknown
				//IL_0566: Unknown result type (might be due to invalid IL or missing references)
				//IL_056b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0581: Unknown result type (might be due to invalid IL or missing references)
				//IL_0591: Unknown result type (might be due to invalid IL or missing references)
				//IL_05a1: Unknown result type (might be due to invalid IL or missing references)
				//IL_05b1: Unknown result type (might be due to invalid IL or missing references)
				//IL_05c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_05d6: Expected O, but got Unknown
				//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_02be: Unknown result type (might be due to invalid IL or missing references)
				//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_0304: Unknown result type (might be due to invalid IL or missing references)
				//IL_0314: Unknown result type (might be due to invalid IL or missing references)
				//IL_0329: Expected O, but got Unknown
				//IL_10a7: Unknown result type (might be due to invalid IL or missing references)
				//IL_10ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_10c2: Unknown result type (might be due to invalid IL or missing references)
				//IL_10d2: Unknown result type (might be due to invalid IL or missing references)
				//IL_10e2: Unknown result type (might be due to invalid IL or missing references)
				//IL_10f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_1102: Unknown result type (might be due to invalid IL or missing references)
				//IL_1117: Expected O, but got Unknown
				//IL_0dfa: Unknown result type (might be due to invalid IL or missing references)
				//IL_0dff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0e15: Unknown result type (might be due to invalid IL or missing references)
				//IL_0e25: Unknown result type (might be due to invalid IL or missing references)
				//IL_0e35: 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_0e55: Unknown result type (might be due to invalid IL or missing references)
				//IL_0e6a: Expected O, but got Unknown
				//IL_0b4d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0b52: Unknown result type (might be due to invalid IL or missing references)
				//IL_0b68: Unknown result type (might be due to invalid IL or missing references)
				//IL_0b78: Unknown result type (might be due to invalid IL or missing references)
				//IL_0b88: Unknown result type (might be due to invalid IL or missing references)
				//IL_0b98: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ba8: Unknown result type (might be due to invalid IL or missing references)
				//IL_0bbd: Expected O, but got Unknown
				//IL_08a0: Unknown result type (might be due to invalid IL or missing references)
				//IL_08a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_08bb: 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_08db: Unknown result type (might be due to invalid IL or missing references)
				//IL_08eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_08fb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0910: Expected O, but got Unknown
				//IL_05f3: Unknown result type (might be due to invalid IL or missing references)
				//IL_05f8: Unknown result type (might be due to invalid IL or missing references)
				//IL_060e: Unknown result type (might be due to invalid IL or missing references)
				//IL_061e: Unknown result type (might be due to invalid IL or missing references)
				//IL_062e: Unknown result type (might be due to invalid IL or missing references)
				//IL_063e: Unknown result type (might be due to invalid IL or missing references)
				//IL_064e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0663: Expected O, but got Unknown
				//IL_1134: Unknown result type (might be due to invalid IL or missing references)
				//IL_1139: Unknown result type (might be due to invalid IL or missing references)
				//IL_114f: Unknown result type (might be due to invalid IL or missing references)
				//IL_115f: Unknown result type (might be due to invalid IL or missing references)
				//IL_116f: Unknown result type (might be due to invalid IL or missing references)
				//IL_117f: Unknown result type (might be due to invalid IL or missing references)
				//IL_118f: Unknown result type (might be due to invalid IL or missing references)
				//IL_11a4: Expected O, but got Unknown
				//IL_0e87: Unknown result type (might be due to invalid IL or missing references)
				//IL_0e8c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ea2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0eb2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ec2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ed2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ee2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ef7: Expected O, but got Unknown
				//IL_0bda: Unknown result type (might be due to invalid IL or missing references)
				//IL_0bdf: Unknown result type (might be due to invalid IL or missing references)
				//IL_0bf5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c05: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c15: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c25: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c35: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c4a: Expected O, but got Unknown
				//IL_092d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0932: Unknown result type (might be due to invalid IL or missing references)
				//IL_0948: Unknown result type (might be due to invalid IL or missing references)
				//IL_0958: Unknown result type (might be due to invalid IL or missing references)
				//IL_0968: Unknown result type (might be due to invalid IL or missing references)
				//IL_0978: Unknown result type (might be due to invalid IL or missing references)
				//IL_0988: Unknown result type (might be due to invalid IL or missing references)
				//IL_099d: Expected O, but got Unknown
				//IL_11c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_11c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_11dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_11ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_11fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_120c: Unknown result type (might be due to invalid IL or missing references)
				//IL_121c: Unknown result type (might be due to invalid IL or missing references)
				//IL_1231: Expected O, but got Unknown
				//IL_0f14: Unknown result type (might be due to invalid IL or missing references)
				//IL_0f19: Unknown result type (might be due to invalid IL or missing references)
				//IL_0f2f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0f3f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0f4f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0f5f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0f6f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0f84: Expected O, but got Unknown
				//IL_0c67: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c6c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c82: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c92: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ca2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0cb2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0cc2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0cd7: Expected O, but got Unknown
				//IL_124e: Unknown result type (might be due to invalid IL or missing references)
				//IL_1253: Unknown result type (might be due to invalid IL or missing references)
				//IL_1269: Unknown result type (might be due to invalid IL or missing references)
				//IL_1279: Unknown result type (might be due to invalid IL or missing references)
				//IL_1289: Unknown result type (might be due to invalid IL or missing references)
				//IL_1299: Unknown result type (might be due to invalid IL or missing references)
				//IL_12a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_12be: Expected O, but got Unknown
				//IL_0fa1: Unknown result type (might be due to invalid IL or missing references)
				//IL_0fa6: Unknown result type (might be due to invalid IL or missing references)
				//IL_0fbc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0fcc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0fdc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0fec: Unknown result type (might be due to invalid IL or missing references)
				//IL_0ffc: Unknown result type (might be due to invalid IL or missing references)
				//IL_1011: Expected O, but got Unknown
				//IL_12db: Unknown result type (might be due to invalid IL or missing references)
				//IL_12e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_12f6: Unknown result type (might be due to invalid IL or missing references)
				//IL_1306: Unknown result type (might be due to invalid IL or missing references)
				//IL_1316: Unknown result type (might be due to invalid IL or missing references)
				//IL_1326: Unknown result type (might be due to invalid IL or missing references)
				//IL_1336: Unknown result type (might be due to invalid IL or missing references)
				//IL_134b: Expected O, but got Unknown
				if (EasyBossConfigPlugin.EikthyrToggle.Value == EasyBossConfigPlugin.Toggle.On)
				{
					if (!Object.op_Implicit((Object)(object)__instance))
					{
						return;
					}
					GameObject prefab = __instance.GetPrefab("Eikthyr");
					if (!Object.op_Implicit((Object)(object)prefab))
					{
						return;
					}
					CharacterDrop component = prefab.GetComponent<CharacterDrop>();
					if (!Object.op_Implicit((Object)(object)component))
					{
						return;
					}
					component.m_drops.Clear();
					if (EasyBossConfigPlugin.drop1Toggle.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss1Drop1.Value),
							m_amountMin = EasyBossConfigPlugin.drop1min.Value,
							m_amountMax = EasyBossConfigPlugin.drop1max.Value,
							m_chance = EasyBossConfigPlugin.drop1chance.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop1onePerPlayer.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop1multiplier.Value
						});
					}
					if (EasyBossConfigPlugin.drop2Toggle.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss1Drop2.Value),
							m_amountMin = EasyBossConfigPlugin.drop2min.Value,
							m_amountMax = EasyBossConfigPlugin.drop2max.Value,
							m_chance = EasyBossConfigPlugin.drop2chance.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop2onePerPlayer.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop2multiplier.Value
						});
					}
					if (EasyBossConfigPlugin.drop3Toggle.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss1Drop3.Value),
							m_amountMin = EasyBossConfigPlugin.drop3min.Value,
							m_amountMax = EasyBossConfigPlugin.drop3max.Value,
							m_chance = EasyBossConfigPlugin.drop3chance.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop3onePerPlayer.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop3multiplier.Value
						});
					}
					if (EasyBossConfigPlugin.drop4Toggle.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss1Drop4.Value),
							m_amountMin = EasyBossConfigPlugin.drop4min.Value,
							m_amountMax = EasyBossConfigPlugin.drop4max.Value,
							m_chance = EasyBossConfigPlugin.drop4chance.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop4onePerPlayer.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop4multiplier.Value
						});
					}
					if (EasyBossConfigPlugin.drop5Toggle.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss1Drop5.Value),
							m_amountMin = EasyBossConfigPlugin.drop5min.Value,
							m_amountMax = EasyBossConfigPlugin.drop5max.Value,
							m_chance = EasyBossConfigPlugin.drop5chance.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop5onePerPlayer.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop5multiplier.Value
						});
					}
				}
				if (EasyBossConfigPlugin.ElderToggle.Value == EasyBossConfigPlugin.Toggle.On)
				{
					if (!Object.op_Implicit((Object)(object)__instance))
					{
						return;
					}
					GameObject prefab2 = __instance.GetPrefab("gd_king");
					if (!Object.op_Implicit((Object)(object)prefab2))
					{
						return;
					}
					CharacterDrop component2 = prefab2.GetComponent<CharacterDrop>();
					if (!Object.op_Implicit((Object)(object)component2))
					{
						return;
					}
					component2.m_drops.Clear();
					if (EasyBossConfigPlugin.drop1ToggleE.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component2.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss2Drop1.Value),
							m_amountMin = EasyBossConfigPlugin.drop1minE.Value,
							m_amountMax = EasyBossConfigPlugin.drop1maxE.Value,
							m_chance = EasyBossConfigPlugin.drop1chanceE.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop1onePerPlayerE.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop1multiplierE.Value
						});
					}
					if (EasyBossConfigPlugin.drop2ToggleE.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component2.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss2Drop2.Value),
							m_amountMin = EasyBossConfigPlugin.drop2minE.Value,
							m_amountMax = EasyBossConfigPlugin.drop2maxE.Value,
							m_chance = EasyBossConfigPlugin.drop2chanceE.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop2onePerPlayerE.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop2multiplierE.Value
						});
					}
					if (EasyBossConfigPlugin.drop3ToggleE.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component2.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss2Drop3.Value),
							m_amountMin = EasyBossConfigPlugin.drop3minE.Value,
							m_amountMax = EasyBossConfigPlugin.drop3maxE.Value,
							m_chance = EasyBossConfigPlugin.drop3chanceE.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop3onePerPlayerE.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop3multiplierE.Value
						});
					}
					if (EasyBossConfigPlugin.drop4ToggleE.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component2.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss2Drop4.Value),
							m_amountMin = EasyBossConfigPlugin.drop4minE.Value,
							m_amountMax = EasyBossConfigPlugin.drop4maxE.Value,
							m_chance = EasyBossConfigPlugin.drop4chanceE.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop4onePerPlayerE.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop4multiplierE.Value
						});
					}
					if (EasyBossConfigPlugin.drop5ToggleE.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component2.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss2Drop5.Value),
							m_amountMin = EasyBossConfigPlugin.drop5minE.Value,
							m_amountMax = EasyBossConfigPlugin.drop5maxE.Value,
							m_chance = EasyBossConfigPlugin.drop5chanceE.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop5onePerPlayerE.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop5multiplierE.Value
						});
					}
				}
				if (EasyBossConfigPlugin.BonemassToggle.Value == EasyBossConfigPlugin.Toggle.On)
				{
					if (!Object.op_Implicit((Object)(object)__instance))
					{
						return;
					}
					GameObject prefab3 = __instance.GetPrefab("Bonemass");
					if (!Object.op_Implicit((Object)(object)prefab3))
					{
						return;
					}
					CharacterDrop component3 = prefab3.GetComponent<CharacterDrop>();
					if (!Object.op_Implicit((Object)(object)component3))
					{
						return;
					}
					component3.m_drops.Clear();
					if (EasyBossConfigPlugin.drop1ToggleB.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component3.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss3Drop1.Value),
							m_amountMin = EasyBossConfigPlugin.drop1minB.Value,
							m_amountMax = EasyBossConfigPlugin.drop1maxB.Value,
							m_chance = EasyBossConfigPlugin.drop1chanceB.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop1onePerPlayerB.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop1multiplierB.Value
						});
					}
					if (EasyBossConfigPlugin.drop2ToggleB.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component3.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss3Drop2.Value),
							m_amountMin = EasyBossConfigPlugin.drop2minB.Value,
							m_amountMax = EasyBossConfigPlugin.drop2maxB.Value,
							m_chance = EasyBossConfigPlugin.drop2chanceB.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop2onePerPlayerB.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop2multiplierB.Value
						});
					}
					if (EasyBossConfigPlugin.drop3ToggleB.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component3.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss3Drop3.Value),
							m_amountMin = EasyBossConfigPlugin.drop3minB.Value,
							m_amountMax = EasyBossConfigPlugin.drop3maxB.Value,
							m_chance = EasyBossConfigPlugin.drop3chanceB.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop3onePerPlayerB.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop3multiplierB.Value
						});
					}
					if (EasyBossConfigPlugin.drop4ToggleB.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component3.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss3Drop4.Value),
							m_amountMin = EasyBossConfigPlugin.drop4minB.Value,
							m_amountMax = EasyBossConfigPlugin.drop4maxB.Value,
							m_chance = EasyBossConfigPlugin.drop4chanceB.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop4onePerPlayerB.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop4multiplierB.Value
						});
					}
					if (EasyBossConfigPlugin.drop5ToggleB.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component3.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss3Drop5.Value),
							m_amountMin = EasyBossConfigPlugin.drop5minB.Value,
							m_amountMax = EasyBossConfigPlugin.drop5maxB.Value,
							m_chance = EasyBossConfigPlugin.drop5chanceB.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop5onePerPlayerB.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop5multiplierB.Value
						});
					}
				}
				if (EasyBossConfigPlugin.ModerToggle.Value == EasyBossConfigPlugin.Toggle.On)
				{
					if (!Object.op_Implicit((Object)(object)__instance))
					{
						return;
					}
					GameObject prefab4 = __instance.GetPrefab("Dragon");
					if (!Object.op_Implicit((Object)(object)prefab4))
					{
						return;
					}
					CharacterDrop component4 = prefab4.GetComponent<CharacterDrop>();
					if (!Object.op_Implicit((Object)(object)component4))
					{
						return;
					}
					component4.m_drops.Clear();
					if (EasyBossConfigPlugin.drop1ToggleD.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component4.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss4Drop1.Value),
							m_amountMin = EasyBossConfigPlugin.drop1minD.Value,
							m_amountMax = EasyBossConfigPlugin.drop1maxD.Value,
							m_chance = EasyBossConfigPlugin.drop1chanceD.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop1onePerPlayerD.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop1multiplierD.Value
						});
					}
					if (EasyBossConfigPlugin.drop2ToggleD.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component4.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss4Drop2.Value),
							m_amountMin = EasyBossConfigPlugin.drop2minD.Value,
							m_amountMax = EasyBossConfigPlugin.drop2maxD.Value,
							m_chance = EasyBossConfigPlugin.drop2chanceD.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop2onePerPlayerD.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop2multiplierD.Value
						});
					}
					if (EasyBossConfigPlugin.drop3ToggleD.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component4.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss4Drop3.Value),
							m_amountMin = EasyBossConfigPlugin.drop3minD.Value,
							m_amountMax = EasyBossConfigPlugin.drop3maxD.Value,
							m_chance = EasyBossConfigPlugin.drop3chanceD.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop3onePerPlayerD.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop3multiplierD.Value
						});
					}
					if (EasyBossConfigPlugin.drop4ToggleD.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component4.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss4Drop4.Value),
							m_amountMin = EasyBossConfigPlugin.drop4minD.Value,
							m_amountMax = EasyBossConfigPlugin.drop4maxD.Value,
							m_chance = EasyBossConfigPlugin.drop4chanceD.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop4onePerPlayerD.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop4multiplierD.Value
						});
					}
					if (EasyBossConfigPlugin.drop5ToggleD.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component4.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss4Drop5.Value),
							m_amountMin = EasyBossConfigPlugin.drop5minD.Value,
							m_amountMax = EasyBossConfigPlugin.drop5maxD.Value,
							m_chance = EasyBossConfigPlugin.drop5chanceD.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop5onePerPlayerD.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop5multiplierD.Value
						});
					}
				}
				if (EasyBossConfigPlugin.YagluthToggle.Value == EasyBossConfigPlugin.Toggle.On)
				{
					if (!Object.op_Implicit((Object)(object)__instance))
					{
						return;
					}
					GameObject prefab5 = __instance.GetPrefab("GoblinKing");
					if (!Object.op_Implicit((Object)(object)prefab5))
					{
						return;
					}
					CharacterDrop component5 = prefab5.GetComponent<CharacterDrop>();
					if (!Object.op_Implicit((Object)(object)component5))
					{
						return;
					}
					component5.m_drops.Clear();
					if (EasyBossConfigPlugin.drop1ToggleY.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component5.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss5Drop1.Value),
							m_amountMin = EasyBossConfigPlugin.drop1minY.Value,
							m_amountMax = EasyBossConfigPlugin.drop1maxY.Value,
							m_chance = EasyBossConfigPlugin.drop1chanceY.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop1onePerPlayerY.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop1multiplierY.Value
						});
					}
					if (EasyBossConfigPlugin.drop2ToggleY.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component5.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss5Drop2.Value),
							m_amountMin = EasyBossConfigPlugin.drop2minY.Value,
							m_amountMax = EasyBossConfigPlugin.drop2maxY.Value,
							m_chance = EasyBossConfigPlugin.drop2chanceY.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop2onePerPlayerY.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop2multiplierY.Value
						});
					}
					if (EasyBossConfigPlugin.drop3ToggleY.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component5.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss5Drop3.Value),
							m_amountMin = EasyBossConfigPlugin.drop3minY.Value,
							m_amountMax = EasyBossConfigPlugin.drop3maxY.Value,
							m_chance = EasyBossConfigPlugin.drop3chanceY.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop3onePerPlayerY.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop3multiplierY.Value
						});
					}
					if (EasyBossConfigPlugin.drop4ToggleY.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component5.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss5Drop4.Value),
							m_amountMin = EasyBossConfigPlugin.drop4minY.Value,
							m_amountMax = EasyBossConfigPlugin.drop4maxY.Value,
							m_chance = EasyBossConfigPlugin.drop4chanceY.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop4onePerPlayerY.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop4multiplierY.Value
						});
					}
					if (EasyBossConfigPlugin.drop5ToggleY.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component5.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss5Drop5.Value),
							m_amountMin = EasyBossConfigPlugin.drop5minY.Value,
							m_amountMax = EasyBossConfigPlugin.drop5maxY.Value,
							m_chance = EasyBossConfigPlugin.drop5chanceY.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop5onePerPlayerY.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop5multiplierY.Value
						});
					}
				}
				if (EasyBossConfigPlugin.QueenToggle.Value != EasyBossConfigPlugin.Toggle.On || !Object.op_Implicit((Object)(object)__instance))
				{
					return;
				}
				GameObject prefab6 = __instance.GetPrefab("SeekerQueen");
				if (!Object.op_Implicit((Object)(object)prefab6))
				{
					return;
				}
				CharacterDrop component6 = prefab6.GetComponent<CharacterDrop>();
				if (Object.op_Implicit((Object)(object)component6))
				{
					component6.m_drops.Clear();
					if (EasyBossConfigPlugin.drop1ToggleQ.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component6.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss6Drop1.Value),
							m_amountMin = EasyBossConfigPlugin.drop1minQ.Value,
							m_amountMax = EasyBossConfigPlugin.drop1maxQ.Value,
							m_chance = EasyBossConfigPlugin.drop1chanceQ.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop1onePerPlayerQ.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop1multiplierQ.Value
						});
					}
					if (EasyBossConfigPlugin.drop2ToggleQ.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component6.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss6Drop2.Value),
							m_amountMin = EasyBossConfigPlugin.drop2minQ.Value,
							m_amountMax = EasyBossConfigPlugin.drop2maxQ.Value,
							m_chance = EasyBossConfigPlugin.drop2chanceQ.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop2onePerPlayerQ.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop2multiplierQ.Value
						});
					}
					if (EasyBossConfigPlugin.drop3ToggleQ.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component6.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss6Drop3.Value),
							m_amountMin = EasyBossConfigPlugin.drop3minQ.Value,
							m_amountMax = EasyBossConfigPlugin.drop3maxQ.Value,
							m_chance = EasyBossConfigPlugin.drop3chanceQ.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop3onePerPlayerQ.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop3multiplierQ.Value
						});
					}
					if (EasyBossConfigPlugin.drop4ToggleQ.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component6.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss6Drop4.Value),
							m_amountMin = EasyBossConfigPlugin.drop4minQ.Value,
							m_amountMax = EasyBossConfigPlugin.drop4maxQ.Value,
							m_chance = EasyBossConfigPlugin.drop4chanceQ.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop4onePerPlayerQ.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop4multiplierQ.Value
						});
					}
					if (EasyBossConfigPlugin.drop5ToggleQ.Value == EasyBossConfigPlugin.Toggle.On)
					{
						component6.m_drops.Add(new Drop
						{
							m_prefab = __instance.GetPrefab(EasyBossConfigPlugin.boss6Drop5.Value),
							m_amountMin = EasyBossConfigPlugin.drop5minQ.Value,
							m_amountMax = EasyBossConfigPlugin.drop5maxQ.Value,
							m_chance = EasyBossConfigPlugin.drop5chanceQ.Value,
							m_onePerPlayer = EasyBossConfigPlugin.drop5onePerPlayerQ.Value,
							m_levelMultiplier = EasyBossConfigPlugin.drop5multiplierQ.Value
						});
					}
				}
			}
		}
	}
	[<5aaca9f9-4112-402c-9b66-a4acfb98f33a>Nullable(0)]
	[<321a49f9-db32-4783-9f22-0d231b80558d>NullableContext(1)]
	[BepInPlugin("coemt.EasyBossConfig", "EasyBossConfig", "0.0.2")]
	public class EasyBossConfigPlugin : BaseUnityPlugin
	{
		[<321a49f9-db32-4783-9f22-0d231b80558d>NullableContext(0)]
		public enum Toggle
		{
			On = 1,
			Off = 0
		}

		[<321a49f9-db32-4783-9f22-0d231b80558d>NullableContext(0)]
		private class ConfigurationManagerAttributes
		{
			[UsedImplicitly]
			public int? Order;

			[UsedImplicitly]
			public bool? Browsable;

			[UsedImplicitly]
			[<5aaca9f9-4112-402c-9b66-a4acfb98f33a>Nullable(2)]
			public string Category;

			[<5aaca9f9-4112-402c-9b66-a4acfb98f33a>Nullable(new byte[] { 2, 1 })]
			[UsedImplicitly]
			public Action<ConfigEntryBase> CustomDrawer;
		}

		[<5aaca9f9-4112-402c-9b66-a4acfb98f33a>Nullable(0)]
		private class AcceptableShortcuts : AcceptableValueBase
		{
			public AcceptableShortcuts()
				: base(typeof(KeyboardShortcut))
			{
			}

			public override object Clamp(object value)
			{
				return value;
			}

			public override bool IsValid(object value)
			{
				return true;
			}

			public override string ToDescriptionString()
			{
				return "# Acceptable values: " + string.Join(", ", KeyboardShortcut.AllKeyCodes);
			}
		}

		internal const string ModName = "EasyBossConfig";

		internal const string ModVersion = "0.0.2";

		internal const string Author = "coemt";

		private const string ModGUID = "coemt.EasyBossConfig";

		private static string ConfigFileName = "coemt.EasyBossConfig.cfg";

		private static string ConfigFileFullPath;

		internal static string ConnectionError;

		private readonly Harmony _harmony = new Harmony("coemt.EasyBossConfig");

		public static readonly ManualLogSource EasyBossConfigLogger;

		private static readonly ConfigSync ConfigSync;

		public Texture2D tex;

		private Sprite mySprite;

		private SpriteRenderer sr;

		private static ConfigEntry<Toggle> _serverConfigLocked;

		public static ConfigEntry<Toggle> EikthyrToggle;

		public static ConfigEntry<Toggle> drop1Toggle;

		public static ConfigEntry<string> boss1Drop1;

		public static ConfigEntry<int> drop1min;

		public static ConfigEntry<int> drop1max;

		public static ConfigEntry<float> drop1chance;

		public static ConfigEntry<bool> drop1onePerPlayer;

		public static ConfigEntry<bool> drop1multiplier;

		public static ConfigEntry<Toggle> drop2Toggle;

		public static ConfigEntry<string> boss1Drop2;

		public static ConfigEntry<int> drop2min;

		public static ConfigEntry<int> drop2max;

		public static ConfigEntry<float> drop2chance;

		public static ConfigEntry<bool> drop2onePerPlayer;

		public static ConfigEntry<bool> drop2multiplier;

		public static ConfigEntry<Toggle> drop3Toggle;

		public static ConfigEntry<string> boss1Drop3;

		public static ConfigEntry<int> drop3min;

		public static ConfigEntry<int> drop3max;

		public static ConfigEntry<float> drop3chance;

		public static ConfigEntry<bool> drop3onePerPlayer;

		public static ConfigEntry<bool> drop3multiplier;

		public static ConfigEntry<Toggle> drop4Toggle;

		public static ConfigEntry<string> boss1Drop4;

		public static ConfigEntry<int> drop4min;

		public static ConfigEntry<int> drop4max;

		public static ConfigEntry<float> drop4chance;

		public static ConfigEntry<bool> drop4onePerPlayer;

		public static ConfigEntry<bool> drop4multiplier;

		public static ConfigEntry<Toggle> drop5Toggle;

		public static ConfigEntry<string> boss1Drop5;

		public static ConfigEntry<int> drop5min;

		public static ConfigEntry<int> drop5max;

		public static ConfigEntry<float> drop5chance;

		public static ConfigEntry<bool> drop5onePerPlayer;

		public static ConfigEntry<bool> drop5multiplier;

		public static ConfigEntry<Toggle> ElderToggle;

		public static ConfigEntry<Toggle> drop1ToggleE;

		public static ConfigEntry<string> boss2Drop1;

		public static ConfigEntry<int> drop1minE;

		public static ConfigEntry<int> drop1maxE;

		public static ConfigEntry<float> drop1chanceE;

		public static ConfigEntry<bool> drop1onePerPlayerE;

		public static ConfigEntry<bool> drop1multiplierE;

		public static ConfigEntry<Toggle> drop2ToggleE;

		public static ConfigEntry<string> boss2Drop2;

		public static ConfigEntry<int> drop2minE;

		public static ConfigEntry<int> drop2maxE;

		public static ConfigEntry<float> drop2chanceE;

		public static ConfigEntry<bool> drop2onePerPlayerE;

		public static ConfigEntry<bool> drop2multiplierE;

		public static ConfigEntry<Toggle> drop3ToggleE;

		public static ConfigEntry<string> boss2Drop3;

		public static ConfigEntry<int> drop3minE;

		public static ConfigEntry<int> drop3maxE;

		public static ConfigEntry<float> drop3chanceE;

		public static ConfigEntry<bool> drop3onePerPlayerE;

		public static ConfigEntry<bool> drop3multiplierE;

		public static ConfigEntry<Toggle> drop4ToggleE;

		public static ConfigEntry<string> boss2Drop4;

		public static ConfigEntry<int> drop4minE;

		public static ConfigEntry<int> drop4maxE;

		public static ConfigEntry<float> drop4chanceE;

		public static ConfigEntry<bool> drop4onePerPlayerE;

		public static ConfigEntry<bool> drop4multiplierE;

		public static ConfigEntry<Toggle> drop5ToggleE;

		public static ConfigEntry<string> boss2Drop5;

		public static ConfigEntry<int> drop5minE;

		public static ConfigEntry<int> drop5maxE;

		public static ConfigEntry<float> drop5chanceE;

		public static ConfigEntry<bool> drop5onePerPlayerE;

		public static ConfigEntry<bool> drop5multiplierE;

		public static ConfigEntry<Toggle> BonemassToggle;

		public static ConfigEntry<Toggle> drop1ToggleB;

		public static ConfigEntry<string> boss3Drop1;

		public static ConfigEntry<int> drop1minB;

		public static ConfigEntry<int> drop1maxB;

		public static ConfigEntry<float> drop1chanceB;

		public static ConfigEntry<bool> drop1onePerPlayerB;

		public static ConfigEntry<bool> drop1multiplierB;

		public static ConfigEntry<Toggle> drop2ToggleB;

		public static ConfigEntry<string> boss3Drop2;

		public static ConfigEntry<int> drop2minB;

		public static ConfigEntry<int> drop2maxB;

		public static ConfigEntry<float> drop2chanceB;

		public static ConfigEntry<bool> drop2onePerPlayerB;

		public static ConfigEntry<bool> drop2multiplierB;

		public static ConfigEntry<Toggle> drop3ToggleB;

		public static ConfigEntry<string> boss3Drop3;

		public static ConfigEntry<int> drop3minB;

		public static ConfigEntry<int> drop3maxB;

		public static ConfigEntry<float> drop3chanceB;

		public static ConfigEntry<bool> drop3onePerPlayerB;

		public static ConfigEntry<bool> drop3multiplierB;

		public static ConfigEntry<Toggle> drop4ToggleB;

		public static ConfigEntry<string> boss3Drop4;

		public static ConfigEntry<int> drop4minB;

		public static ConfigEntry<int> drop4maxB;

		public static ConfigEntry<float> drop4chanceB;

		public static ConfigEntry<bool> drop4onePerPlayerB;

		public static ConfigEntry<bool> drop4multiplierB;

		public static ConfigEntry<Toggle> drop5ToggleB;

		public static ConfigEntry<string> boss3Drop5;

		public static ConfigEntry<int> drop5minB;

		public static ConfigEntry<int> drop5maxB;

		public static ConfigEntry<float> drop5chanceB;

		public static ConfigEntry<bool> drop5onePerPlayerB;

		public static ConfigEntry<bool> drop5multiplierB;

		public static ConfigEntry<Toggle> ModerToggle;

		public static ConfigEntry<Toggle> drop1ToggleD;

		public static ConfigEntry<string> boss4Drop1;

		public static ConfigEntry<int> drop1minD;

		public static ConfigEntry<int> drop1maxD;

		public static ConfigEntry<float> drop1chanceD;

		public static ConfigEntry<bool> drop1onePerPlayerD;

		public static ConfigEntry<bool> drop1multiplierD;

		public static ConfigEntry<Toggle> drop2ToggleD;

		public static ConfigEntry<string> boss4Drop2;

		public static ConfigEntry<int> drop2minD;

		public static ConfigEntry<int> drop2maxD;

		public static ConfigEntry<float> drop2chanceD;

		public static ConfigEntry<bool> drop2onePerPlayerD;

		public static ConfigEntry<bool> drop2multiplierD;

		public static ConfigEntry<Toggle> drop3ToggleD;

		public static ConfigEntry<string> boss4Drop3;

		public static ConfigEntry<int> drop3minD;

		public static ConfigEntry<int> drop3maxD;

		public static ConfigEntry<float> drop3chanceD;

		public static ConfigEntry<bool> drop3onePerPlayerD;

		public static ConfigEntry<bool> drop3multiplierD;

		public static ConfigEntry<Toggle> drop4ToggleD;

		public static ConfigEntry<string> boss4Drop4;

		public static ConfigEntry<int> drop4minD;

		public static ConfigEntry<int> drop4maxD;

		public static ConfigEntry<float> drop4chanceD;

		public static ConfigEntry<bool> drop4onePerPlayerD;

		public static ConfigEntry<bool> drop4multiplierD;

		public static ConfigEntry<Toggle> drop5ToggleD;

		public static ConfigEntry<string> boss4Drop5;

		public static ConfigEntry<int> drop5minD;

		public static ConfigEntry<int> drop5maxD;

		public static ConfigEntry<float> drop5chanceD;

		public static ConfigEntry<bool> drop5onePerPlayerD;

		public static ConfigEntry<bool> drop5multiplierD;

		public static ConfigEntry<Toggle> YagluthToggle;

		public static ConfigEntry<Toggle> drop1ToggleY;

		public static ConfigEntry<string> boss5Drop1;

		public static ConfigEntry<int> drop1minY;

		public static ConfigEntry<int> drop1maxY;

		public static ConfigEntry<float> drop1chanceY;

		public static ConfigEntry<bool> drop1onePerPlayerY;

		public static ConfigEntry<bool> drop1multiplierY;

		public static ConfigEntry<Toggle> drop2ToggleY;

		public static ConfigEntry<string> boss5Drop2;

		public static ConfigEntry<int> drop2minY;

		public static ConfigEntry<int> drop2maxY;

		public static ConfigEntry<float> drop2chanceY;

		public static ConfigEntry<bool> drop2onePerPlayerY;

		public static ConfigEntry<bool> drop2multiplierY;

		public static ConfigEntry<Toggle> drop3ToggleY;

		public static ConfigEntry<string> boss5Drop3;

		public static ConfigEntry<int> drop3minY;

		public static ConfigEntry<int> drop3maxY;

		public static ConfigEntry<float> drop3chanceY;

		public static ConfigEntry<bool> drop3onePerPlayerY;

		public static ConfigEntry<bool> drop3multiplierY;

		public static ConfigEntry<Toggle> drop4ToggleY;

		public static ConfigEntry<string> boss5Drop4;

		public static ConfigEntry<int> drop4minY;

		public static ConfigEntry<int> drop4maxY;

		public static ConfigEntry<float> drop4chanceY;

		public static ConfigEntry<bool> drop4onePerPlayerY;

		public static ConfigEntry<bool> drop4multiplierY;

		public static ConfigEntry<Toggle> drop5ToggleY;

		public static ConfigEntry<string> boss5Drop5;

		public static ConfigEntry<int> drop5minY;

		public static ConfigEntry<int> drop5maxY;

		public static ConfigEntry<float> drop5chanceY;

		public static ConfigEntry<bool> drop5onePerPlayerY;

		public static ConfigEntry<bool> drop5multiplierY;

		public static ConfigEntry<Toggle> QueenToggle;

		public static ConfigEntry<Toggle> drop1ToggleQ;

		public static ConfigEntry<string> boss6Drop1;

		public static ConfigEntry<int> drop1minQ;

		public static ConfigEntry<int> drop1maxQ;

		public static ConfigEntry<float> drop1chanceQ;

		public static ConfigEntry<bool> drop1onePerPlayerQ;

		public static ConfigEntry<bool> drop1multiplierQ;

		public static ConfigEntry<Toggle> drop2ToggleQ;

		public static ConfigEntry<string> boss6Drop2;

		public static ConfigEntry<int> drop2minQ;

		public static ConfigEntry<int> drop2maxQ;

		public static ConfigEntry<float> drop2chanceQ;

		public static ConfigEntry<bool> drop2onePerPlayerQ;

		public static ConfigEntry<bool> drop2multiplierQ;

		public static ConfigEntry<Toggle> drop3ToggleQ;

		public static ConfigEntry<string> boss6Drop3;

		public static ConfigEntry<int> drop3minQ;

		public static ConfigEntry<int> drop3maxQ;

		public static ConfigEntry<float> drop3chanceQ;

		public static ConfigEntry<bool> drop3onePerPlayerQ;

		public static ConfigEntry<bool> drop3multiplierQ;

		public static ConfigEntry<Toggle> drop4ToggleQ;

		public static ConfigEntry<string> boss6Drop4;

		public static ConfigEntry<int> drop4minQ;

		public static ConfigEntry<int> drop4maxQ;

		public static ConfigEntry<float> drop4chanceQ;

		public static ConfigEntry<bool> drop4onePerPlayerQ;

		public static ConfigEntry<bool> drop4multiplierQ;

		public static ConfigEntry<Toggle> drop5ToggleQ;

		public static ConfigEntry<string> boss6Drop5;

		public static ConfigEntry<int> drop5minQ;

		public static ConfigEntry<int> drop5maxQ;

		public static ConfigEntry<float> drop5chanceQ;

		public static ConfigEntry<bool> drop5onePerPlayerQ;

		public static ConfigEntry<bool> drop5multiplierQ;

		public void Awake()
		{
			_serverConfigLocked = config("1 - General", "Lock Configuration", Toggle.On, "If on, the configuration is locked and can be changed by server admins only.");
			ConfigSync.AddLockingConfigEntry<Toggle>(_serverConfigLocked);
			EikthyrToggle = config("2 - Eikthyr", "Toggle Eikthyr", Toggle.On, "If on, Eikthyr config below is available");
			drop1Toggle = config("2 - Eikthyr", "Toggle Drop 1", Toggle.On, "If on, Drop 1 below is available, must use correct prefab name!");
			boss1Drop1 = config("2 - Eikthyr", "Drop 1 Prefab", "HardAntler", "Enter the Prefab name");
			drop1min = config("2 - Eikthyr", "Drop 1 Amount Minimum", 3, "The minimum drop amount");
			drop1max = config("2 - Eikthyr", "Drop 1 Amount Maximum", 3, "The maximum drop amount");
			drop1chance = config("2 - Eikthyr", "Drop 1 Chance", 1f, "The chance to drop");
			drop1onePerPlayer = config("2 - Eikthyr", "Drop 1 One per player?", value: false, "Should it drop 1 per player?");
			drop1multiplier = config("2 - Eikthyr", "Drop 1 Multiplier", value: false, "Multiply drops if has stars");
			drop2Toggle = config("2 - Eikthyr", "Toggle Drop 2", Toggle.On, "If on, Drop 2 below is available, must use correct prefab name!");
			boss1Drop2 = config("2 - Eikthyr", "Drop 2 Prefab", "TrophyEikthyr", "Enter the Prefab name");
			drop2min = config("2 - Eikthyr", "Drop 2 Amount Minimum", 1, "The minimum drop amount");
			drop2max = config("2 - Eikthyr", "Drop 2 Amount Maximum", 1, "The maximum drop amount");
			drop2chance = config("2 - Eikthyr", "Drop 2 Chance", 1f, "The chance to drop");
			drop2onePerPlayer = config("2 - Eikthyr", "Drop 2 One per player?", value: false, "Should it drop 1 per player?");
			drop2multiplier = config("2 - Eikthyr", "Drop 2 Multiplier", value: false, "Multiply drops if has stars");
			drop3Toggle = config("2 - Eikthyr", "Toggle Drop 3", Toggle.Off, "If on, Drop 3 below is available, must use correct prefab name!");
			boss1Drop3 = config("2 - Eikthyr", "Drop 3 Prefab", "Finewood", "Enter the Prefab name");
			drop3min = config("2 - Eikthyr", "Drop 3 Amount Minimum", 1, "The minimum drop amount");
			drop3max = config("2 - Eikthyr", "Drop 3 Amount Maximum", 1, "The maximum drop amount");
			drop3chance = config("2 - Eikthyr", "Drop 3 Chance", 1f, "The chance to drop");
			drop3onePerPlayer = config("2 - Eikthyr", "Drop 3 One per player?", value: false, "Should it drop 1 per player?");
			drop3multiplier = config("2 - Eikthyr", "Drop 3 Multiplier", value: false, "Multiply drops if has stars");
			drop4Toggle = config("2 - Eikthyr", "Toggle Drop 4", Toggle.Off, "If on, Drop 4 below is available, must use correct prefab name!");
			boss1Drop4 = config("2 - Eikthyr", "Drop 4 Prefab", "Finewood", "Enter the Prefab name");
			drop4min = config("2 - Eikthyr", "Drop 4 Amount Minimum", 1, "The minimum drop amount");
			drop4max = config("2 - Eikthyr", "Drop 4 Amount Maximum", 1, "The maximum drop amount");
			drop4chance = config("2 - Eikthyr", "Drop 4 Chance", 1f, "The chance to drop");
			drop4onePerPlayer = config("2 - Eikthyr", "Drop 4 One per player?", value: false, "Should it drop 1 per player?");
			drop4multiplier = config("2 - Eikthyr", "Drop 4 Multiplier", value: false, "Multiply drops if has stars");
			drop5Toggle = config("2 - Eikthyr", "Toggle Drop 5", Toggle.Off, "If on, Drop 5 below is available, must use correct prefab name!");
			boss1Drop5 = config("2 - Eikthyr", "Drop 5 Prefab", "Finewood", "Enter the Prefab name");
			drop5min = config("2 - Eikthyr", "Drop 5 Amount Minimum", 1, "The minimum drop amount");
			drop5max = config("2 - Eikthyr", "Drop 5 Amount Maximum", 1, "The maximum drop amount");
			drop5chance = config("2 - Eikthyr", "Drop 5 Chance", 1f, "The chance to drop");
			drop5onePerPlayer = config("2 - Eikthyr", "Drop 5 One per player?", value: false, "Should it drop 1 per player?");
			drop5multiplier = config("2 - Eikthyr", "Drop 5 Multiplier", value: false, "Multiply drops if has stars");
			ElderToggle = config("3 - Elder", "Toggle Elder", Toggle.On, "If on, Elder config below is available");
			drop1ToggleE = config("3 - Elder", "Toggle Drop 1", Toggle.On, "If on, Drop 1 below is available, must use correct prefab name!");
			boss2Drop1 = config("3 - Elder", "Drop 1 Prefab", "CryptKey", "Enter the Prefab name");
			drop1minE = config("3 - Elder", "Drop 1 Amount Minimum", 1, "The minimum drop amount");
			drop1maxE = config("3 - Elder", "Drop 1 Amount Maximum", 1, "The maximum drop amount");
			drop1chanceE = config("3 - Elder", "Drop 1 Chance", 1f, "The chance to drop");
			drop1onePerPlayerE = config("3 - Elder", "Drop 1 One per player?", value: true, "Should it drop 1 per player?");
			drop1multiplierE = config("3 - Elder", "Drop 1 Multiplier", value: false, "Multiply drops if has stars");
			drop2ToggleE = config("3 - Elder", "Toggle Drop 2", Toggle.On, "If on, Drop 2 below is available, must use correct prefab name!");
			boss2Drop2 = config("3 - Elder", "Drop 2 Prefab", "TrophyTheElder", "Enter the Prefab name");
			drop2minE = config("3 - Elder", "Drop 2 Amount Minimum", 1, "The minimum drop amount");
			drop2maxE = config("3 - Elder", "Drop 2 Amount Maximum", 1, "The maximum drop amount");
			drop2chanceE = config("3 - Elder", "Drop 2 Chance", 1f, "The chance to drop");
			drop2onePerPlayerE = config("3 - Elder", "Drop 2 One per player?", value: false, "Should it drop 1 per player?");
			drop2multiplierE = config("3 - Elder", "Drop 2 Multiplier", value: false, "Multiply drops if has stars");
			drop3ToggleE = config("3 - Elder", "Toggle Drop 3", Toggle.Off, "If on, Drop 3 below is available, must use correct prefab name!");
			boss2Drop3 = config("3 - Elder", "Drop 3 Prefab", "Finewood", "Enter the Prefab name");
			drop3minE = config("3 - Elder", "Drop 3 Amount Minimum", 1, "The minimum drop amount");
			drop3maxE = config("3 - Elder", "Drop 3 Amount Maximum", 1, "The maximum drop amount");
			drop3chanceE = config("3 - Elder", "Drop 3 Chance", 1f, "The chance to drop");
			drop3onePerPlayerE = config("3 - Elder", "Drop 3 One per player?", value: false, "Should it drop 1 per player?");
			drop3multiplierE = config("3 - Elder", "Drop 3 Multiplier", value: false, "Multiply drops if has stars");
			drop4ToggleE = config("3 - Elder", "Toggle Drop 4", Toggle.Off, "If on, Drop 4 below is available, must use correct prefab name!");
			boss2Drop4 = config("3 - Elder", "Drop 4 Prefab", "Finewood", "Enter the Prefab name");
			drop4minE = config("3 - Elder", "Drop 4 Amount Minimum", 1, "The minimum drop amount");
			drop4maxE = config("3 - Elder", "Drop 4 Amount Maximum", 1, "The maximum drop amount");
			drop4chanceE = config("3 - Elder", "Drop 4 Chance", 1f, "The chance to drop");
			drop4onePerPlayerE = config("3 - Elder", "Drop 4 One per player?", value: false, "Should it drop 1 per player?");
			drop4multiplierE = config("3 - Elder", "Drop 4 Multiplier", value: false, "Multiply drops if has stars");
			drop5ToggleE = config("3 - Elder", "Toggle Drop 5", Toggle.Off, "If on, Drop 5 below is available, must use correct prefab name!");
			boss2Drop5 = config("3 - Elder", "Drop 5 Prefab", "Finewood", "Enter the Prefab name");
			drop5minE = config("3 - Elder", "Drop 5 Amount Minimum", 1, "The minimum drop amount");
			drop5maxE = config("3 - Elder", "Drop 5 Amount Maximum", 1, "The maximum drop amount");
			drop5chanceE = config("3 - Elder", "Drop 5 Chance", 1f, "The chance to drop");
			drop5onePerPlayerE = config("3 - Elder", "Drop 5 One per player?", value: false, "Should it drop 1 per player?");
			drop5multiplierE = config("3 - Elder", "Drop 5 Multiplier", value: false, "Multiply drops if has stars");
			BonemassToggle = config("4 - Bonemass", "Toggle Bonemass", Toggle.On, "If on, Bonemass config below is available");
			drop1ToggleB = config("4 - Bonemass", "Toggle Drop 1", Toggle.On, "If on, Drop 1 below is available, must use correct prefab name!");
			boss3Drop1 = config("4 - Bonemass", "Drop 1 Prefab", "Wishbone", "Enter the Prefab name");
			drop1minB = config("4 - Bonemass", "Drop 1 Amount Minimum", 1, "The minimum drop amount");
			drop1maxB = config("4 - Bonemass", "Drop 1 Amount Maximum", 1, "The maximum drop amount");
			drop1chanceB = config("4 - Bonemass", "Drop 1 Chance", 1f, "The chance to drop");
			drop1onePerPlayerB = config("4 - Bonemass", "Drop 1 One per player?", value: true, "Should it drop 1 per player?");
			drop1multiplierB = config("4 - Bonemass", "Drop 1 Multiplier", value: false, "Multiply drops if has stars");
			drop2ToggleB = config("4 - Bonemass", "Toggle Drop 2", Toggle.On, "If on, Drop 2 below is available, must use correct prefab name!");
			boss3Drop2 = config("4 - Bonemass", "Drop 2 Prefab", "TrophyBonemass", "Enter the Prefab name");
			drop2minB = config("4 - Bonemass", "Drop 2 Amount Minimum", 1, "The minimum drop amount");
			drop2maxB = config("4 - Bonemass", "Drop 2 Amount Maximum", 1, "The maximum drop amount");
			drop2chanceB = config("4 - Bonemass", "Drop 2 Chance", 1f, "The chance to drop");
			drop2onePerPlayerB = config("4 - Bonemass", "Drop 2 One per player?", value: false, "Should it drop 1 per player?");
			drop2multiplierB = config("4 - Bonemass", "Drop 2 Multiplier", value: false, "Multiply drops if has stars");
			drop3ToggleB = config("4 - Bonemass", "Toggle Drop 3", Toggle.Off, "If on, Drop 3 below is available, must use correct prefab name!");
			boss3Drop3 = config("4 - Bonemass", "Drop 3 Prefab", "Finewood", "Enter the Prefab name");
			drop3minB = config("4 - Bonemass", "Drop 3 Amount Minimum", 1, "The minimum drop amount");
			drop3maxB = config("4 - Bonemass", "Drop 3 Amount Maximum", 1, "The maximum drop amount");
			drop3chanceB = config("4 - Bonemass", "Drop 3 Chance", 1f, "The chance to drop");
			drop3onePerPlayerB = config("4 - Bonemass", "Drop 3 One per player?", value: false, "Should it drop 1 per player?");
			drop3multiplierB = config("4 - Bonemass", "Drop 3 Multiplier", value: false, "Multiply drops if has stars");
			drop4ToggleB = config("4 - Bonemass", "Toggle Drop 4", Toggle.Off, "If on, Drop 4 below is available, must use correct prefab name!");
			boss3Drop4 = config("4 - Bonemass", "Drop 4 Prefab", "Finewood", "Enter the Prefab name");
			drop4minB = config("4 - Bonemass", "Drop 4 Amount Minimum", 1, "The minimum drop amount");
			drop4maxB = config("4 - Bonemass", "Drop 4 Amount Maximum", 1, "The maximum drop amount");
			drop4chanceB = config("4 - Bonemass", "Drop 4 Chance", 1f, "The chance to drop");
			drop4onePerPlayerB = config("4 - Bonemass", "Drop 4 One per player?", value: false, "Should it drop 1 per player?");
			drop4multiplierB = config("4 - Bonemass", "Drop 4 Multiplier", value: false, "Multiply drops if has stars");
			drop5ToggleB = config("4 - Bonemass", "Toggle Drop 5", Toggle.Off, "If on, Drop 5 below is available, must use correct prefab name!");
			boss3Drop5 = config("4 - Bonemass", "Drop 5 Prefab", "Finewood", "Enter the Prefab name");
			drop5minB = config("4 - Bonemass", "Drop 5 Amount Minimum", 1, "The minimum drop amount");
			drop5maxB = config("4 - Bonemass", "Drop 5 Amount Maximum", 1, "The maximum drop amount");
			drop5chanceB = config("4 - Bonemass", "Drop 5 Chance", 1f, "The chance to drop");
			drop5onePerPlayerB = config("4 - Bonemass", "Drop 5 One per player?", value: false, "Should it drop 1 per player?");
			drop5multiplierB = config("4 - Bonemass", "Drop 5 Multiplier", value: false, "Multiply drops if has stars");
			ModerToggle = config("5 - Moder", "Toggle Moder", Toggle.On, "If on, Moder config below is available");
			drop1ToggleD = config("5 - Moder", "Toggle Drop 1", Toggle.On, "If on, Drop 1 below is available, must use correct prefab name!");
			boss4Drop1 = config("5 - Moder", "Drop 1 Prefab", "DragonTear", "Enter the Prefab name");
			drop1minD = config("5 - Moder", "Drop 1 Amount Minimum", 10, "The minimum drop amount");
			drop1maxD = config("5 - Moder", "Drop 1 Amount Maximum", 10, "The maximum drop amount");
			drop1chanceD = config("5 - Moder", "Drop 1 Chance", 1f, "The chance to drop");
			drop1onePerPlayerD = config("5 - Moder", "Drop 1 One per player?", value: false, "Should it drop 1 per player?");
			drop1multiplierD = config("5 - Moder", "Drop 1 Multiplier", value: false, "Multiply drops if has stars");
			drop2ToggleD = config("5 - Moder", "Toggle Drop 2", Toggle.On, "If on, Drop 2 below is available, must use correct prefab name!");
			boss4Drop2 = config("5 - Moder", "Drop 2 Prefab", "TrophyDragonQueen", "Enter the Prefab name");
			drop2minD = config("5 - Moder", "Drop 2 Amount Minimum", 1, "The minimum drop amount");
			drop2maxD = config("5 - Moder", "Drop 2 Amount Maximum", 1, "The maximum drop amount");
			drop2chanceD = config("5 - Moder", "Drop 2 Chance", 1f, "The chance to drop");
			drop2onePerPlayerD = config("5 - Moder", "Drop 2 One per player?", value: false, "Should it drop 1 per player?");
			drop2multiplierD = config("5 - Moder", "Drop 2 Multiplier", value: false, "Multiply drops if has stars");
			drop3ToggleD = config("5 - Moder", "Toggle Drop 3", Toggle.Off, "If on, Drop 3 below is available, must use correct prefab name!");
			boss4Drop3 = config("5 - Moder", "Drop 3 Prefab", "Finewood", "Enter the Prefab name");
			drop3minD = config("5 - Moder", "Drop 3 Amount Minimum", 1, "The minimum drop amount");
			drop3maxD = config("5 - Moder", "Drop 3 Amount Maximum", 1, "The maximum drop amount");
			drop3chanceD = config("5 - Moder", "Drop 3 Chance", 1f, "The chance to drop");
			drop3onePerPlayerD = config("5 - Moder", "Drop 3 One per player?", value: false, "Should it drop 1 per player?");
			drop3multiplierD = config("5 - Moder", "Drop 3 Multiplier", value: false, "Multiply drops if has stars");
			drop4ToggleD = config("5 - Moder", "Toggle Drop 4", Toggle.Off, "If on, Drop 4 below is available, must use correct prefab name!");
			boss4Drop4 = config("5 - Moder", "Drop 4 Prefab", "Finewood", "Enter the Prefab name");
			drop4minD = config("5 - Moder", "Drop 4 Amount Minimum", 1, "The minimum drop amount");
			drop4maxD = config("5 - Moder", "Drop 4 Amount Maximum", 1, "The maximum drop amount");
			drop4chanceD = config("5 - Moder", "Drop 4 Chance", 1f, "The chance to drop");
			drop4onePerPlayerD = config("5 - Moder", "Drop 4 One per player?", value: false, "Should it drop 1 per player?");
			drop4multiplierD = config("5 - Moder", "Drop 4 Multiplier", value: false, "Multiply drops if has stars");
			drop5ToggleD = config("5 - Moder", "Toggle Drop 5", Toggle.Off, "If on, Drop 5 below is available, must use correct prefab name!");
			boss4Drop5 = config("5 - Moder", "Drop 5 Prefab", "Finewood", "Enter the Prefab name");
			drop5minD = config("5 - Moder", "Drop 5 Amount Minimum", 1, "The minimum drop amount");
			drop5maxD = config("5 - Moder", "Drop 5 Amount Maximum", 1, "The maximum drop amount");
			drop5chanceD = config("5 - Moder", "Drop 5 Chance", 1f, "The chance to drop");
			drop5onePerPlayerD = config("5 - Moder", "Drop 5 One per player?", value: false, "Should it drop 1 per player?");
			drop5multiplierD = config("5 - Moder", "Drop 5 Multiplier", value: false, "Multiply drops if has stars");
			YagluthToggle = config("6 - Yagluth", "Toggle Yagluth", Toggle.On, "If on, Yagluth config below is available");
			drop1ToggleY = config("6 - Yagluth", "Toggle Drop 1", Toggle.On, "If on, Drop 1 below is available, must use correct prefab name!");
			boss5Drop1 = config("6 - Yagluth", "Drop 1 Prefab", "YagluthDrop", "Enter the Prefab name");
			drop1minY = config("6 - Yagluth", "Drop 1 Amount Minimum", 3, "The minimum drop amount");
			drop1maxY = config("6 - Yagluth", "Drop 1 Amount Maximum", 3, "The maximum drop amount");
			drop1chanceY = config("6 - Yagluth", "Drop 1 Chance", 1f, "The chance to drop");
			drop1onePerPlayerY = config("6 - Yagluth", "Drop 1 One per player?", value: false, "Should it drop 1 per player?");
			drop1multiplierY = config("6 - Yagluth", "Drop 1 Multiplier", value: false, "Multiply drops if has stars");
			drop2ToggleY = config("6 - Yagluth", "Toggle Drop 2", Toggle.On, "If on, Drop 2 below is available, must use correct prefab name!");
			boss5Drop2 = config("6 - Yagluth", "Drop 2 Prefab", "TrophyGoblinKing", "Enter the Prefab name");
			drop2minY = config("6 - Yagluth", "Drop 2 Amount Minimum", 1, "The minimum drop amount");
			drop2maxY = config("6 - Yagluth", "Drop 2 Amount Maximum", 1, "The maximum drop amount");
			drop2chanceY = config("6 - Yagluth", "Drop 2 Chance", 1f, "The chance to drop");
			drop2onePerPlayerY = config("6 - Yagluth", "Drop 2 One per player?", value: false, "Should it drop 1 per player?");
			drop2multiplierY = config("6 - Yagluth", "Drop 2 Multiplier", value: false, "Multiply drops if has stars");
			drop3ToggleY = config("6 - Yagluth", "Toggle Drop 3", Toggle.Off, "If on, Drop 3 below is available, must use correct prefab name!");
			boss5Drop3 = config("6 - Yagluth", "Drop 3 Prefab", "Finewood", "Enter the Prefab name");
			drop3minY = config("6 - Yagluth", "Drop 3 Amount Minimum", 1, "The minimum drop amount");
			drop3maxY = config("6 - Yagluth", "Drop 3 Amount Maximum", 1, "The maximum drop amount");
			drop3chanceY = config("6 - Yagluth", "Drop 3 Chance", 1f, "The chance to drop");
			drop3onePerPlayerY = config("6 - Yagluth", "Drop 3 One per player?", value: false, "Should it drop 1 per player?");
			drop3multiplierY = config("6 - Yagluth", "Drop 3 Multiplier", value: false, "Multiply drops if has stars");
			drop4ToggleY = config("6 - Yagluth", "Toggle Drop 4", Toggle.Off, "If on, Drop 4 below is available, must use correct prefab name!");
			boss5Drop4 = config("6 - Yagluth", "Drop 4 Prefab", "Finewood", "Enter the Prefab name");
			drop4minY = config("6 - Yagluth", "Drop 4 Amount Minimum", 1, "The minimum drop amount");
			drop4maxY = config("6 - Yagluth", "Drop 4 Amount Maximum", 1, "The maximum drop amount");
			drop4chanceY = config("6 - Yagluth", "Drop 4 Chance", 1f, "The chance to drop");
			drop4onePerPlayerY = config("6 - Yagluth", "Drop 4 One per player?", value: false, "Should it drop 1 per player?");
			drop4multiplierY = config("6 - Yagluth", "Drop 4 Multiplier", value: false, "Multiply drops if has stars");
			drop5ToggleY = config("6 - Yagluth", "Toggle Drop 5", Toggle.Off, "If on, Drop 5 below is available, must use correct prefab name!");
			boss5Drop5 = config("6 - Yagluth", "Drop 5 Prefab", "Finewood", "Enter the Prefab name");
			drop5minY = config("6 - Yagluth", "Drop 5 Amount Minimum", 1, "The minimum drop amount");
			drop5maxY = config("6 - Yagluth", "Drop 5 Amount Maximum", 1, "The maximum drop amount");
			drop5chanceY = config("6 - Yagluth", "Drop 5 Chance", 1f, "The chance to drop");
			drop5onePerPlayerY = config("6 - Yagluth", "Drop 5 One per player?", value: false, "Should it drop 1 per player?");
			drop5multiplierY = config("6 - Yagluth", "Drop 5 Multiplier", value: false, "Multiply drops if has stars");
			QueenToggle = config("7 - Queen", "Toggle Queen", Toggle.On, "If on, Queen config below is available");
			drop1ToggleQ = config("7 - Queen", "Toggle Drop 1", Toggle.On, "If on, Drop 1 below is available, must use correct prefab name!");
			boss6Drop1 = config("7 - Queen", "Drop 1 Prefab", "QueenDrop", "Enter the Prefab name");
			drop1minQ = config("7 - Queen", "Drop 1 Amount Minimum", 3, "The minimum drop amount");
			drop1maxQ = config("7 - Queen", "Drop 1 Amount Maximum", 3, "The maximum drop amount");
			drop1chanceQ = config("7 - Queen", "Drop 1 Chance", 1f, "The chance to drop");
			drop1onePerPlayerQ = config("7 - Queen", "Drop 1 One per player?", value: false, "Should it drop 1 per player?");
			drop1multiplierQ = config("7 - Queen", "Drop 1 Multiplier", value: false, "Multiply drops if has stars");
			drop2ToggleQ = config("7 - Queen", "Toggle Drop 2", Toggle.On, "If on, Drop 2 below is available, must use correct prefab name!");
			boss6Drop2 = config("7 - Queen", "Drop 2 Prefab", "TrophySeekerQueen", "Enter the Prefab name");
			drop2minQ = config("7 - Queen", "Drop 2 Amount Minimum", 1, "The minimum drop amount");
			drop2maxQ = config("7 - Queen", "Drop 2 Amount Maximum", 1, "The maximum drop amount");
			drop2chanceQ = config("7 - Queen", "Drop 2 Chance", 1f, "The chance to drop");
			drop2onePerPlayerQ = config("7 - Queen", "Drop 2 One per player?", value: false, "Should it drop 1 per player?");
			drop2multiplierQ = config("7 - Queen", "Drop 2 Multiplier", value: false, "Multiply drops if has stars");
			drop3ToggleQ = config("7 - Queen", "Toggle Drop 3", Toggle.Off, "If on, Drop 3 below is available, must use correct prefab name!");
			boss6Drop3 = config("7 - Queen", "Drop 3 Prefab", "Finewood", "Enter the Prefab name");
			drop3minQ = config("7 - Queen", "Drop 3 Amount Minimum", 1, "The minimum drop amount");
			drop3maxQ = config("7 - Queen", "Drop 3 Amount Maximum", 1, "The maximum drop amount");
			drop3chanceQ = config("7 - Queen", "Drop 3 Chance", 1f, "The chance to drop");
			drop3onePerPlayerQ = config("7 - Queen", "Drop 3 One per player?", value: false, "Should it drop 1 per player?");
			drop3multiplierQ = config("7 - Queen", "Drop 3 Multiplier", value: false, "Multiply drops if has stars");
			drop4ToggleQ = config("7 - Queen", "Toggle Drop 4", Toggle.Off, "If on, Drop 4 below is available, must use correct prefab name!");
			boss6Drop4 = config("7 - Queen", "Drop 4 Prefab", "Finewood", "Enter the Prefab name");
			drop4minQ = config("7 - Queen", "Drop 4 Amount Minimum", 1, "The minimum drop amount");
			drop4maxQ = config("7 - Queen", "Drop 4 Amount Maximum", 1, "The maximum drop amount");
			drop4chanceQ = config("7 - Queen", "Drop 4 Chance", 1f, "The chance to drop");
			drop4onePerPlayerQ = config("7 - Queen", "Drop 4 One per player?", value: false, "Should it drop 1 per player?");
			drop4multiplierQ = config("7 - Queen", "Drop 4 Multiplier", value: false, "Multiply drops if has stars");
			drop5ToggleQ = config("7 - Queen", "Toggle Drop 5", Toggle.Off, "If on, Drop 5 below is available, must use correct prefab name!");
			boss6Drop5 = config("7 - Queen", "Drop 5 Prefab", "Finewood", "Enter the Prefab name");
			drop5minQ = config("7 - Queen", "Drop 5 Amount Minimum", 1, "The minimum drop amount");
			drop5maxQ = config("7 - Queen", "Drop 5 Amount Maximum", 1, "The maximum drop amount");
			drop5chanceQ = config("7 - Queen", "Drop 5 Chance", 1f, "The chance to drop");
			drop5onePerPlayerQ = config("7 - Queen", "Drop 5 One per player?", value: false, "Should it drop 1 per player?");
			drop5multiplierQ = config("7 - Queen", "Drop 5 Multiplier", value: false, "Multiply drops if has stars");
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			_harmony.PatchAll(executingAssembly);
			SetupWatcher();
		}

		private void OnDestroy()
		{
			((BaseUnityPlugin)this).Config.Save();
		}

		private void SetupWatcher()
		{
			FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(Paths.ConfigPath, ConfigFileName);
			fileSystemWatcher.Changed += ReadConfigValues;
			fileSystemWatcher.Created += ReadConfigValues;
			fileSystemWatcher.Renamed += ReadConfigValues;
			fileSystemWatcher.IncludeSubdirectories = true;
			fileSystemWatcher.SynchronizingObject = ThreadingHelper.SynchronizingObject;
			fileSystemWatcher.EnableRaisingEvents = true;
		}

		private void ReadConfigValues(object sender, FileSystemEventArgs e)
		{
			if (!File.Exists(ConfigFileFullPath))
			{
				return;
			}
			try
			{
				EasyBossConfigLogger.LogDebug((object)"ReadConfigValues called");
				((BaseUnityPlugin)this).Config.Reload();
			}
			catch
			{
				EasyBossConfigLogger.LogError((object)("There was an issue loading your " + ConfigFileName));
				EasyBossConfigLogger.LogError((object)"Please check your config entries for spelling and format!");
			}
		}

		private ConfigEntry<T> config<[<5aaca9f9-4112-402c-9b66-a4acfb98f33a>Nullable(2)] T>(string group, string name, T value, ConfigDescription description, bool synchronizedSetting = true)
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Expected O, but got Unknown
			ConfigDescription val = new ConfigDescription(description.Description + (synchronizedSetting ? " [Synced with Server]" : " [Not Synced with Server]"), description.AcceptableValues, description.Tags);
			ConfigEntry<T> val2 = ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, val);
			SyncedConfigEntry<T> syncedConfigEntry = ConfigSync.AddConfigEntry<T>(val2);
			syncedConfigEntry.SynchronizedConfig = synchronizedSetting;
			return val2;
		}

		private ConfigEntry<T> config<[<5aaca9f9-4112-402c-9b66-a4acfb98f33a>Nullable(2)] T>(string group, string name, T value, string description, bool synchronizedSetting = true)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()), synchronizedSetting);
		}

		static EasyBossConfigPlugin()
		{
			string configPath = Paths.ConfigPath;
			char directorySeparatorChar = Path.DirectorySeparatorChar;
			ConfigFileFullPath = configPath + directorySeparatorChar + ConfigFileName;
			ConnectionError = "";
			EasyBossConfigLogger = Logger.CreateLogSource("EasyBossConfig");
			ConfigSync = new ConfigSync("coemt.EasyBossConfig")
			{
				DisplayName = "EasyBossConfig",
				CurrentVersion = "0.0.2",
				MinimumRequiredVersion = "0.0.2"
			};
			_serverConfigLocked = null;
			EikthyrToggle = null;
			drop1Toggle = null;
			boss1Drop1 = null;
			drop1min = null;
			drop1max = null;
			drop1chance = null;
			drop1onePerPlayer = null;
			drop1multiplier = null;
			drop2Toggle = null;
			boss1Drop2 = null;
			drop2min = null;
			drop2max = null;
			drop2chance = null;
			drop2onePerPlayer = null;
			drop2multiplier = null;
			drop3Toggle = null;
			boss1Drop3 = null;
			drop3min = null;
			drop3max = null;
			drop3chance = null;
			drop3onePerPlayer = null;
			drop3multiplier = null;
			drop4Toggle = null;
			boss1Drop4 = null;
			drop4min = null;
			drop4max = null;
			drop4chance = null;
			drop4onePerPlayer = null;
			drop4multiplier = null;
			drop5Toggle = null;
			boss1Drop5 = null;
			drop5min = null;
			drop5max = null;
			drop5chance = null;
			drop5onePerPlayer = null;
			drop5multiplier = null;
			ElderToggle = null;
			drop1ToggleE = null;
			boss2Drop1 = null;
			drop1minE = null;
			drop1maxE = null;
			drop1chanceE = null;
			drop1onePerPlayerE = null;
			drop1multiplierE = null;
			drop2ToggleE = null;
			boss2Drop2 = null;
			drop2minE = null;
			drop2maxE = null;
			drop2chanceE = null;
			drop2onePerPlayerE = null;
			drop2multiplierE = null;
			drop3ToggleE = null;
			boss2Drop3 = null;
			drop3minE = null;
			drop3maxE = null;
			drop3chanceE = null;
			drop3onePerPlayerE = null;
			drop3multiplierE = null;
			drop4ToggleE = null;
			boss2Drop4 = null;
			drop4minE = null;
			drop4maxE = null;
			drop4chanceE = null;
			drop4onePerPlayerE = null;
			drop4multiplierE = null;
			drop5ToggleE = null;
			boss2Drop5 = null;
			drop5minE = null;
			drop5maxE = null;
			drop5chanceE = null;
			drop5onePerPlayerE = null;
			drop5multiplierE = null;
			BonemassToggle = null;
			drop1ToggleB = null;
			boss3Drop1 = null;
			drop1minB = null;
			drop1maxB = null;
			drop1chanceB = null;
			drop1onePerPlayerB = null;
			drop1multiplierB = null;
			drop2ToggleB = null;
			boss3Drop2 = null;
			drop2minB = null;
			drop2maxB = null;
			drop2chanceB = null;
			drop2onePerPlayerB = null;
			drop2multiplierB = null;
			drop3ToggleB = null;
			boss3Drop3 = null;
			drop3minB = null;
			drop3maxB = null;
			drop3chanceB = null;
			drop3onePerPlayerB = null;
			drop3multiplierB = null;
			drop4ToggleB = null;
			boss3Drop4 = null;
			drop4minB = null;
			drop4maxB = null;
			drop4chanceB = null;
			drop4onePerPlayerB = null;
			drop4multiplierB = null;
			drop5ToggleB = null;
			boss3Drop5 = null;
			drop5minB = null;
			drop5maxB = null;
			drop5chanceB = null;
			drop5onePerPlayerB = null;
			drop5multiplierB = null;
			ModerToggle = null;
			drop1ToggleD = null;
			boss4Drop1 = null;
			drop1minD = null;
			drop1maxD = null;
			drop1chanceD = null;
			drop1onePerPlayerD = null;
			drop1multiplierD = null;
			drop2ToggleD = null;
			boss4Drop2 = null;
			drop2minD = null;
			drop2maxD = null;
			drop2chanceD = null;
			drop2onePerPlayerD = null;
			drop2multiplierD = null;
			drop3ToggleD = null;
			boss4Drop3 = null;
			drop3minD = null;
			drop3maxD = null;
			drop3chanceD = null;
			drop3onePerPlayerD = null;
			drop3multiplierD = null;
			drop4ToggleD = null;
			boss4Drop4 = null;
			drop4minD = null;
			drop4maxD = null;
			drop4chanceD = null;
			drop4onePerPlayerD = null;
			drop4multiplierD = null;
			drop5ToggleD = null;
			boss4Drop5 = null;
			drop5minD = null;
			drop5maxD = null;
			drop5chanceD = null;
			drop5onePerPlayerD = null;
			drop5multiplierD = null;
			YagluthToggle = null;
			drop1ToggleY = null;
			boss5Drop1 = null;
			drop1minY = null;
			drop1maxY = null;
			drop1chanceY = null;
			drop1onePerPlayerY = null;
			drop1multiplierY = null;
			drop2ToggleY = null;
			boss5Drop2 = null;
			drop2minY = null;
			drop2maxY = null;
			drop2chanceY = null;
			drop2onePerPlayerY = null;
			drop2multiplierY = null;
			drop3ToggleY = null;
			boss5Drop3 = null;
			drop3minY = null;
			drop3maxY = null;
			drop3chanceY = null;
			drop3onePerPlayerY = null;
			drop3multiplierY = null;
			drop4ToggleY = null;
			boss5Drop4 = null;
			drop4minY = null;
			drop4maxY = null;
			drop4chanceY = null;
			drop4onePerPlayerY = null;
			drop4multiplierY = null;
			drop5ToggleY = null;
			boss5Drop5 = null;
			drop5minY = null;
			drop5maxY = null;
			drop5chanceY = null;
			drop5onePerPlayerY = null;
			drop5multiplierY = null;
			QueenToggle = null;
			drop1ToggleQ = null;
			boss6Drop1 = null;
			drop1minQ = null;
			drop1maxQ = null;
			drop1chanceQ = null;
			drop1onePerPlayerQ = null;
			drop1multiplierQ = null;
			drop2ToggleQ = null;
			boss6Drop2 = null;
			drop2minQ = null;
			drop2maxQ = null;
			drop2chanceQ = null;
			drop2onePerPlayerQ = null;
			drop2multiplierQ = null;
			drop3ToggleQ = null;
			boss6Drop3 = null;
			drop3minQ = null;
			drop3maxQ = null;
			drop3chanceQ = null;
			drop3onePerPlayerQ = null;
			drop3multiplierQ = null;
			drop4ToggleQ = null;
			boss6Drop4 = null;
			drop4minQ = null;
			drop4maxQ = null;
			drop4chanceQ = null;
			drop4onePerPlayerQ = null;
			drop4multiplierQ = null;
			drop5ToggleQ = null;
			boss6Drop5 = null;
			drop5minQ = null;
			drop5maxQ = null;
			drop5chanceQ = null;
			drop5onePerPlayerQ = null;
			drop5multiplierQ = null;
		}
	}
	[HarmonyPatch(typeof(ZNet), "OnNewConnection")]
	public static class RegisterAndCheckVersion
	{
		[<321a49f9-db32-4783-9f22-0d231b80558d>NullableContext(1)]
		private static void Prefix(ZNetPeer peer, ref ZNet __instance)
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			EasyBossConfigPlugin.EasyBossConfigLogger.LogDebug((object)"Registering version RPC handler");
			peer.m_rpc.Register<ZPackage>("EasyBossConfig_VersionCheck", (Action<ZRpc, ZPackage>)RpcHandlers.RPC_EasyBossConfig_Version);
			EasyBossConfigPlugin.EasyBossConfigLogger.LogDebug((object)"Invoking version check");
			ZPackage val = new ZPackage();
			val.Write("0.0.2");
			peer.m_rpc.Invoke("EasyBossConfig_VersionCheck", new object[1] { val });
		}
	}
	[<321a49f9-db32-4783-9f22-0d231b80558d>NullableContext(1)]
	[<5aaca9f9-4112-402c-9b66-a4acfb98f33a>Nullable(0)]
	[HarmonyPatch(typeof(ZNet), "RPC_PeerInfo")]
	public static class VerifyClient
	{
		private static bool Prefix(ZRpc rpc, ZPackage pkg, ref ZNet __instance)
		{
			if (!__instance.IsServer() || RpcHandlers.ValidatedPeers.Contains(rpc))
			{
				return true;
			}
			EasyBossConfigPlugin.EasyBossConfigLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") never sent version or couldn't due to previous disconnect, disconnecting"));
			rpc.Invoke("Error", new object[1] { 3 });
			return false;
		}

		private static void Postfix(ZNet __instance)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Expected O, but got Unknown
			ZRoutedRpc.instance.InvokeRoutedRPC(ZRoutedRpc.instance.GetServerPeerID(), "RequestAdminSync", new object[1] { (object)new ZPackage() });
		}
	}
	[HarmonyPatch(typeof(FejdStartup), "ShowConnectError")]
	public class ShowConnectionError
	{
		[<321a49f9-db32-4783-9f22-0d231b80558d>NullableContext(1)]
		private static void Postfix(FejdStartup __instance)
		{
			if (__instance.m_connectionFailedPanel.activeSelf)
			{
				__instance.m_connectionFailedError.fontSizeMax = 25f;
				__instance.m_connectionFailedError.fontSizeMin = 15f;
				TMP_Text connectionFailedError = __instance.m_connectionFailedError;
				connectionFailedError.text = connectionFailedError.text + "\n" + EasyBossConfigPlugin.ConnectionError;
			}
		}
	}
	[HarmonyPatch(typeof(ZNet), "Disconnect")]
	public static class RemoveDisconnectedPeerFromVerified
	{
		[<321a49f9-db32-4783-9f22-0d231b80558d>NullableContext(1)]
		private static void Prefix(ZNetPeer peer, ref ZNet __instance)
		{
			if (__instance.IsServer())
			{
				EasyBossConfigPlugin.EasyBossConfigLogger.LogInfo((object)("Peer (" + peer.m_rpc.m_socket.GetHostName() + ") disconnected, removing from validated list"));
				RpcHandlers.ValidatedPeers.Remove(peer.m_rpc);
			}
		}
	}
	[<5aaca9f9-4112-402c-9b66-a4acfb98f33a>Nullable(0)]
	[<321a49f9-db32-4783-9f22-0d231b80558d>NullableContext(1)]
	public static class RpcHandlers
	{
		public static readonly List<ZRpc> ValidatedPeers = new List<ZRpc>();

		public static void RPC_EasyBossConfig_Version(ZRpc rpc, ZPackage pkg)
		{
			string text = pkg.ReadString();
			EasyBossConfigPlugin.EasyBossConfigLogger.LogInfo((object)("Version check, local: 0.0.2,  remote: " + text));
			if (text != "0.0.2")
			{
				EasyBossConfigPlugin.ConnectionError = "EasyBossConfig Installed: 0.0.2\n Needed: " + text;
				if (ZNet.instance.IsServer())
				{
					EasyBossConfigPlugin.EasyBossConfigLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") has incompatible version, disconnecting"));
					rpc.Invoke("Error", new object[1] { 3 });
				}
			}
			else if (!ZNet.instance.IsServer())
			{
				EasyBossConfigPlugin.EasyBossConfigLogger.LogInfo((object)"Received same version from server!");
			}
			else
			{
				EasyBossConfigPlugin.EasyBossConfigLogger.LogInfo((object)("Adding peer (" + rpc.m_socket.GetHostName() + ") to validated list"));
				ValidatedPeers.Add(rpc);
			}
		}
	}
}
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	[Microsoft.CodeAnalysis.Embedded]
	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;
		}
	}
	[Microsoft.CodeAnalysis.Embedded]
	[CompilerGenerated]
	[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;
		}
	}
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	[Microsoft.CodeAnalysis.Embedded]
	[CompilerGenerated]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ServerSync
{
	[PublicAPI]
	internal abstract class OwnConfigEntryBase
	{
		public object? LocalBaseValue;

		public bool SynchronizedConfig = true;

		public abstract ConfigEntryBase BaseConfig { get; }
	}
	[PublicAPI]
	internal class SyncedConfigEntry<T> : OwnConfigEntryBase
	{
		public readonly ConfigEntry<T> SourceConfig;

		public override ConfigEntryBase BaseConfig => (ConfigEntryBase)(object)SourceConfig;

		public T Value
		{
			get
			{
				return SourceConfig.Value;
			}
			set
			{
				SourceConfig.Value = value;
			}
		}

		public SyncedConfigEntry(ConfigEntry<T> sourceConfig)
		{
			SourceConfig = sourceConfig;
		}

		public void AssignLocalValue(T value)
		{
			if (LocalBaseValue == null)
			{
				Value = value;
			}
			else
			{
				LocalBaseValue = value;
			}
		}
	}
	internal abstract class CustomSyncedValueBase
	{
		public object? LocalBaseValue;

		public readonly string Identifier;

		public readonly Type Type;

		private object? boxedValue;

		protected bool localIsOwner;

		public readonly int Priority;

		public object? BoxedValue
		{
			get
			{
				return boxedValue;
			}
			set
			{
				boxedValue = value;
				this.ValueChanged?.Invoke();
			}
		}

		public event Action? ValueChanged;

		protected CustomSyncedValueBase(ConfigSync configSync, string identifier, Type type, int priority)
		{
			Priority = priority;
			Identifier = identifier;
			Type = type;
			configSync.AddCustomValue(this);
			localIsOwner = configSync.IsSourceOfTruth;
			configSync.SourceOfTruthChanged += delegate(bool truth)
			{
				localIsOwner = truth;
			};
		}
	}
	[PublicAPI]
	internal sealed class CustomSyncedValue<T> : CustomSyncedValueBase
	{
		public T Value
		{
			get
			{
				return (T)base.BoxedValue;
			}
			set
			{
				base.BoxedValue = value;
			}
		}

		public CustomSyncedValue(ConfigSync configSync, string identifier, T value = default(T), int priority = 0)
			: base(configSync, identifier, typeof(T), priority)
		{
			Value = value;
		}

		public void AssignLocalValue(T value)
		{
			if (localIsOwner)
			{
				Value = value;
			}
			else
			{
				LocalBaseValue = value;
			}
		}
	}
	internal class ConfigurationManagerAttributes
	{
		[UsedImplicitly]
		public bool? ReadOnly = false;
	}
	[PublicAPI]
	internal class ConfigSync
	{
		[HarmonyPatch(typeof(ZRpc), "HandlePackage")]
		private static class SnatchCurrentlyHandlingRPC
		{
			public static ZRpc? currentRpc;

			[HarmonyPrefix]
			private static void Prefix(ZRpc __instance)
			{
				currentRpc = __instance;
			}
		}

		[HarmonyPatch(typeof(ZNet), "Awake")]
		internal static class RegisterRPCPatch
		{
			[HarmonyPostfix]
			private static void Postfix(ZNet __instance)
			{
				isServer = __instance.IsServer();
				foreach (ConfigSync configSync2 in configSyncs)
				{
					ZRoutedRpc.instance.Register<ZPackage>(configSync2.Name + " ConfigSync", (Action<long, ZPackage>)configSync2.RPC_FromOtherClientConfigSync);
					if (isServer)
					{
						configSync2.InitialSyncDone = true;
						Debug.Log((object)("Registered '" + configSync2.Name + " ConfigSync' RPC - waiting for incoming connections"));
					}
				}
				if (isServer)
				{
					((MonoBehaviour)__instance).StartCoroutine(WatchAdminListChanges());
				}
				static void SendAdmin(List<ZNetPeer> peers, bool isAdmin)
				{
					ZPackage package = ConfigsToPackage(null, null, new PackageEntry[1]
					{
						new PackageEntry
						{
							section = "Internal",
							key = "lockexempt",
							type = typeof(bool),
							value = isAdmin
						}
					});
					ConfigSync configSync = configSyncs.First();
					if (configSync != null)
					{
						((MonoBehaviour)ZNet.instance).StartCoroutine(configSync.sendZPackage(peers, package));
					}
				}
				static IEnumerator WatchAdminListChanges()
				{
					SyncedList adminList = (SyncedList)AccessTools.DeclaredField(typeof(ZNet), "m_adminList").GetValue(ZNet.instance);
					List<string> CurrentList = new List<string>(adminList.GetList());
					while (true)
					{
						yield return (object)new WaitForSeconds(30f);
						if (!adminList.GetList().SequenceEqual(CurrentList))
						{
							CurrentList = new List<string>(adminList.GetList());
							List<ZNetPeer> adminPeer = (from p in ZNet.instance.GetPeers()
								where adminList.Contains(p.m_rpc.GetSocket().GetHostName())
								select p).ToList();
							List<ZNetPeer> nonAdminPeer = ZNet.instance.GetPeers().Except(adminPeer).ToList();
							SendAdmin(nonAdminPeer, isAdmin: false);
							SendAdmin(adminPeer, isAdmin: true);
						}
					}
				}
			}
		}

		[HarmonyPatch(typeof(ZNet), "OnNewConnection")]
		private static class RegisterClientRPCPatch
		{
			[HarmonyPostfix]
			private static void Postfix(ZNet __instance, ZNetPeer peer)
			{
				if (__instance.IsServer())
				{
					return;
				}
				foreach (ConfigSync configSync in configSyncs)
				{
					peer.m_rpc.Register<ZPackage>(configSync.Name + " ConfigSync", (Action<ZRpc, ZPackage>)configSync.RPC_FromServerConfigSync);
				}
			}
		}

		private class ParsedConfigs
		{
			public readonly Dictionary<OwnConfigEntryBase, object?> configValues = new Dictionary<OwnConfigEntryBase, object>();

			public readonly Dictionary<CustomSyncedValueBase, object?> customValues = new Dictionary<CustomSyncedValueBase, object>();
		}

		[HarmonyPatch(typeof(ZNet), "Shutdown")]
		private class ResetConfigsOnShutdown
		{
			[HarmonyPostfix]
			private static void Postfix()
			{
				ProcessingServerUpdate = true;
				foreach (ConfigSync configSync in configSyncs)
				{
					configSync.resetConfigsFromServer();
					configSync.IsSourceOfTruth = true;
					configSync.InitialSyncDone = false;
				}
				ProcessingServerUpdate = false;
			}
		}

		[HarmonyPatch(typeof(ZNet), "RPC_PeerInfo")]
		private class SendConfigsAfterLogin
		{
			private class BufferingSocket : ISocket
			{
				public volatile bool finished = false;

				public volatile int versionMatchQueued = -1;

				public readonly List<ZPackage> Package = new List<ZPackage>();

				public readonly ISocket Original;

				public BufferingSocket(ISocket original)
				{
					Original = original;
				}

				public bool IsConnected()
				{
					return Original.IsConnected();
				}

				public ZPackage Recv()
				{
					return Original.Recv();
				}

				public int GetSendQueueSize()
				{
					return Original.GetSendQueueSize();
				}

				public int GetCurrentSendRate()
				{
					return Original.GetCurrentSendRate();
				}

				public bool IsHost()
				{
					return Original.IsHost();
				}

				public void Dispose()
				{
					Original.Dispose();
				}

				public bool GotNewData()
				{
					return Original.GotNewData();
				}

				public void Close()
				{
					Original.Close();
				}

				public string GetEndPointString()
				{
					return Original.GetEndPointString();
				}

				public void GetAndResetStats(out int totalSent, out int totalRecv)
				{
					Original.GetAndResetStats(ref totalSent, ref totalRecv);
				}

				public void GetConnectionQuality(out float localQuality, out float remoteQuality, out int ping, out float outByteSec, out float inByteSec)
				{
					Original.GetConnectionQuality(ref localQuality, ref remoteQuality, ref ping, ref outByteSec, ref inByteSec);
				}

				public ISocket Accept()
				{
					return Original.Accept();
				}

				public int GetHostPort()
				{
					return Original.GetHostPort();
				}

				public bool Flush()
				{
					return Original.Flush();
				}

				public string GetHostName()
				{
					return Original.GetHostName();
				}

				public void VersionMatch()
				{
					if (finished)
					{
						Original.VersionMatch();
					}
					else
					{
						versionMatchQueued = Package.Count;
					}
				}

				public void Send(ZPackage pkg)
				{
					//IL_0057: Unknown result type (might be due to invalid IL or missing references)
					//IL_005d: Expected O, but got Unknown
					int pos = pkg.GetPos();
					pkg.SetPos(0);
					int num = pkg.ReadInt();
					if ((num == StringExtensionMethods.GetStableHashCode("PeerInfo") || num == StringExtensionMethods.GetStableHashCode("RoutedRPC") || num == StringExtensionMethods.GetStableHashCode("ZDOData")) && !finished)
					{
						ZPackage val = new ZPackage(pkg.GetArray());
						val.SetPos(pos);
						Package.Add(val);
					}
					else
					{
						pkg.SetPos(pos);
						Original.Send(pkg);
					}
				}
			}

			[HarmonyPrefix]
			[HarmonyPriority(800)]
			private static void Prefix(ref Dictionary<Assembly, BufferingSocket>? __state, ZNet __instance, ZRpc rpc)
			{
				//IL_0078: Unknown result type (might be due to invalid IL or missing references)
				//IL_007e: Invalid comparison between Unknown and I4
				if (__instance.IsServer())
				{
					BufferingSocket value = new BufferingSocket(rpc.GetSocket());
					AccessTools.DeclaredField(typeof(ZRpc), "m_socket").SetValue(rpc, value);
					object? obj = AccessTools.DeclaredMethod(typeof(ZNet), "GetPeer", new Type[1] { typeof(ZRpc) }, (Type[])null).Invoke(__instance, new object[1] { rpc });
					ZNetPeer val = (ZNetPeer)((obj is ZNetPeer) ? obj : null);
					if (val != null && (int)ZNet.m_onlineBackend > 0)
					{
						AccessTools.DeclaredField(typeof(ZNetPeer), "m_socket").SetValue(val, value);
					}
					if (__state == null)
					{
						__state = new Dictionary<Assembly, BufferingSocket>();
					}
					__state[Assembly.GetExecutingAssembly()] = value;
				}
			}

			[HarmonyPostfix]
			private static void Postfix(Dictionary<Assembly, BufferingSocket> __state, ZNet __instance, ZRpc rpc)
			{
				ZRpc rpc2 = rpc;
				ZNet __instance2 = __instance;
				Dictionary<Assembly, BufferingSocket> __state2 = __state;
				ZNetPeer peer;
				if (__instance2.IsServer())
				{
					object obj = AccessTools.DeclaredMethod(typeof(ZNet), "GetPeer", new Type[1] { typeof(ZRpc) }, (Type[])null).Invoke(__instance2, new object[1] { rpc2 });
					peer = (ZNetPeer)((obj is ZNetPeer) ? obj : null);
					if (peer == null)
					{
						SendBufferedData();
					}
					else
					{
						((MonoBehaviour)__instance2).StartCoroutine(sendAsync());
					}
				}
				void SendBufferedData()
				{
					if (rpc2.GetSocket() is BufferingSocket bufferingSocket)
					{
						AccessTools.DeclaredField(typeof(ZRpc), "m_socket").SetValue(rpc2, bufferingSocket.Original);
						object? obj2 = AccessTools.DeclaredMethod(typeof(ZNet), "GetPeer", new Type[1] { typeof(ZRpc) }, (Type[])null).Invoke(__instance2, new object[1] { rpc2 });
						ZNetPeer val = (ZNetPeer)((obj2 is ZNetPeer) ? obj2 : null);
						if (val != null)
						{
							AccessTools.DeclaredField(typeof(ZNetPeer), "m_socket").SetValue(val, bufferingSocket.Original);
						}
					}
					BufferingSocket bufferingSocket2 = __state2[Assembly.GetExecutingAssembly()];
					bufferingSocket2.finished = true;
					for (int i = 0; i < bufferingSocket2.Package.Count; i++)
					{
						if (i == bufferingSocket2.versionMatchQueued)
						{
							bufferingSocket2.Original.VersionMatch();
						}
						bufferingSocket2.Original.Send(bufferingSocket2.Package[i]);
					}
					if (bufferingSocket2.Package.Count == bufferingSocket2.versionMatchQueued)
					{