Decompiled source of BossAdd v1.2.4

BepInEx/plugins/bossadd/bossadd.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using JetBrains.Annotations;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.Rendering;
using bossadd.Patches;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

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

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

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace bossadd
{
	public static class BonemassConfig
	{
		public static ConfigEntry<bool> SplitEnabled { get; private set; }

		public static ConfigEntry<float> SplitHealthThreshold { get; private set; }

		public static ConfigEntry<string> SplitHPThresholdMessage { get; private set; }

		public static ConfigEntry<bool> KillConditionEnabled { get; private set; }

		public static ConfigEntry<bool> KillOrderEnabled { get; private set; }

		public static ConfigEntry<float> WrongOrderHealPercent { get; private set; }

		public static ConfigEntry<float> MiniLeashDistance { get; private set; }

		public static ConfigEntry<string> MiniSaveMessage { get; private set; }

		public static ConfigEntry<string> MiniSaveVFX { get; private set; }

		public static ConfigEntry<float> MiniSaveVFXScale { get; private set; }

		public static ConfigEntry<float> MiniDamageMult { get; private set; }

		public static ConfigEntry<float> MiniHPMult { get; private set; }

		public static ConfigEntry<float> MiniSpeedMult { get; private set; }

		public static ConfigEntry<float> MiniAttackRangeMult { get; private set; }

		public static ConfigEntry<float> MiniAttackIntervalMult { get; private set; }

		public static ConfigEntry<float> MiniAnimationSpeedMult { get; private set; }

		public static ConfigEntry<string> MiniResistBlunt { get; private set; }

		public static ConfigEntry<string> MiniResistSlash { get; private set; }

		public static ConfigEntry<string> MiniResistPierce { get; private set; }

		public static ConfigEntry<string> MiniResistFire { get; private set; }

		public static ConfigEntry<string> MiniResistFrost { get; private set; }

		public static ConfigEntry<string> MiniResistLightning { get; private set; }

		public static ConfigEntry<string> MiniResistPoison { get; private set; }

		public static ConfigEntry<string> MiniResistSpirit { get; private set; }

		public static ConfigEntry<bool> BonusSpawnEnabled { get; private set; }

		public static ConfigEntry<string> BonusSpawnPrefab { get; private set; }

		public static ConfigEntry<float> BonusSpawnChance { get; private set; }

		public static ConfigEntry<int> BonusSpawnCount { get; private set; }

		public static ConfigEntry<float> BonusSpawnHealthThreshold { get; private set; }

		public static ConfigEntry<string> BonusSpawnHPThresholdMessage { get; private set; }

		public static ConfigEntry<float> BonusSpawnMinDistanceFromBoss { get; private set; }

		public static ConfigEntry<float> ProjectileSpeedMult { get; private set; }

		public static ConfigEntry<float> ProjectileDamageBlunt { get; private set; }

		public static ConfigEntry<float> ProjectileHitRadius { get; private set; }

		public static ConfigEntry<float> ProjectileDamagePoison { get; private set; }

		public static ConfigEntry<bool> ProjectileStickyEnabled { get; private set; }

		public static ConfigEntry<string> ProjectileStickySourceEffect { get; private set; }

		public static ConfigEntry<string> ProjectileStickyDisplayName { get; private set; }

		public static ConfigEntry<float> ProjectileStickyDuration { get; private set; }

		public static ConfigEntry<float> ProjectilePushForceFallback { get; private set; }

		public static ConfigEntry<float> ProjectileSpawnOffsetDistance { get; private set; }

		public static ConfigEntry<float> ProjectileAimHeightOffset { get; private set; }

		public static ConfigEntry<bool> MiniInvulnerableEnabled { get; private set; }

		public static ConfigEntry<string> PhaseMessage { get; private set; }

		public static ConfigEntry<float> PhaseMessageHP { get; private set; }

		public static void Bind(ConfigFile cfg)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Expected O, but got Unknown
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Expected O, but got Unknown
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Expected O, but got Unknown
			//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Expected O, but got Unknown
			//IL_021b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0225: Expected O, but got Unknown
			//IL_0264: Unknown result type (might be due to invalid IL or missing references)
			//IL_026e: Expected O, but got Unknown
			//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c5: Expected O, but got Unknown
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_030a: Expected O, but got Unknown
			//IL_0357: Unknown result type (might be due to invalid IL or missing references)
			//IL_0361: Expected O, but got Unknown
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d3: Expected O, but got Unknown
			//IL_0420: Unknown result type (might be due to invalid IL or missing references)
			//IL_042a: Expected O, but got Unknown
			//IL_0477: Unknown result type (might be due to invalid IL or missing references)
			//IL_0481: Expected O, but got Unknown
			//IL_04ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d8: Expected O, but got Unknown
			//IL_0525: Unknown result type (might be due to invalid IL or missing references)
			//IL_052f: Expected O, but got Unknown
			//IL_057c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0586: Expected O, but got Unknown
			//IL_062c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0636: Expected O, but got Unknown
			//IL_0675: Unknown result type (might be due to invalid IL or missing references)
			//IL_067f: Expected O, but got Unknown
			//IL_06be: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c8: Expected O, but got Unknown
			//IL_0707: Unknown result type (might be due to invalid IL or missing references)
			//IL_0711: Expected O, but got Unknown
			//IL_0750: Unknown result type (might be due to invalid IL or missing references)
			//IL_075a: Expected O, but got Unknown
			//IL_0799: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a3: Expected O, but got Unknown
			//IL_07e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ec: Expected O, but got Unknown
			//IL_082b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0835: Expected O, but got Unknown
			//IL_089d: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a7: Expected O, but got Unknown
			//IL_08f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fe: Expected O, but got Unknown
			//IL_094b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0955: Expected O, but got Unknown
			//IL_09a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ac: Expected O, but got Unknown
			//IL_09e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f1: Expected O, but got Unknown
			//IL_0a30: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3a: Expected O, but got Unknown
			//IL_0a79: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a83: Expected O, but got Unknown
			//IL_0ad0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ada: Expected O, but got Unknown
			//IL_0b27: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b31: Expected O, but got Unknown
			//IL_0b7e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b88: Expected O, but got Unknown
			//IL_0bd5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bdf: Expected O, but got Unknown
			//IL_0c35: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c3f: Expected O, but got Unknown
			//IL_0c8c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c96: Expected O, but got Unknown
			//IL_0cd5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cdf: Expected O, but got Unknown
			//IL_0d1e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d28: Expected O, but got Unknown
			//IL_0d75: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d7f: Expected O, but got Unknown
			//IL_0dc1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dcb: Expected O, but got Unknown
			//IL_0e18: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e22: Expected O, but got Unknown
			//IL_0e61: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e6b: Expected O, but got Unknown
			//IL_0eb8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ec2: Expected O, but got Unknown
			SplitEnabled = cfg.Bind<bool>("Bonemass", "(Split Summon) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.SplitSummon.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 9000
				}
			}));
			SplitHealthThreshold = cfg.Bind<float>("Bonemass", "(Split Summon) HPThreshold", 50f, new ConfigDescription(LocalizationManager.Desc("Bonemass.SplitSummon.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 99f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8990
				}
			}));
			SplitHPThresholdMessage = cfg.Bind<string>("Bonemass", "(Split Summon) HPThresholdMessage", "", new ConfigDescription(LocalizationManager.Desc("Bonemass.SplitSummon.HPThresholdMessage"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8985
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Bonemass", "(Divider) 1", 8985, 8000);
			KillConditionEnabled = cfg.Bind<bool>("Bonemass", "(Kill Condition) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8000
				}
			}));
			KillOrderEnabled = cfg.Bind<bool>("Bonemass", "(Kill Condition) OrderEnabled", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.OrderEnabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7990
				}
			}));
			WrongOrderHealPercent = cfg.Bind<float>("Bonemass", "(Kill Condition) WrongOrderHeal", 20f, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.WrongOrderHeal"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 50f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7980
				}
			}));
			MiniSaveMessage = cfg.Bind<string>("Bonemass", "(Kill Condition) MiniSaveMessage", "", new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.MiniSaveMessage"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7975
				}
			}));
			MiniSaveVFX = cfg.Bind<string>("Bonemass", "(Kill Condition) MiniSaveVFX", "vfx_BombBlob_explode_poison", new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.MiniSaveVFX"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7973
				}
			}));
			MiniSaveVFXScale = cfg.Bind<float>("Bonemass", "(Kill Condition) MiniSaveVFXScale", 2f, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.MiniSaveVFXScale"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 10f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7972
				}
			}));
			MiniInvulnerableEnabled = cfg.Bind<bool>("Bonemass", "(Kill Condition) MiniInvulnerable", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.MiniInvulnerable"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7970
				}
			}));
			MiniLeashDistance = cfg.Bind<float>("Bonemass", "(Kill Condition) MiniLeashDistance", 50f, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.MiniLeashDistance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 200f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7960
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Bonemass", "(Divider) 2", 7960, 7000);
			MiniDamageMult = cfg.Bind<float>("Bonemass", "(Mini Stat) DamageMult", 0.5f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.DamageMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7000
				}
			}));
			MiniHPMult = cfg.Bind<float>("Bonemass", "(Mini Stat) HPMult", 0.3f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.HPMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.05f, 1f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6990
				}
			}));
			MiniSpeedMult = cfg.Bind<float>("Bonemass", "(Mini Stat) SpeedMult", 1.6f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.SpeedMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 10f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6980
				}
			}));
			MiniAttackRangeMult = cfg.Bind<float>("Bonemass", "(Mini Stat) AttackRangeMult", 0.35f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.AttackRangeMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 1f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6970
				}
			}));
			MiniAttackIntervalMult = cfg.Bind<float>("Bonemass", "(Mini Stat) AttackIntervalMult", 1f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.AttackIntervalMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.3f, 3f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6960
				}
			}));
			MiniAnimationSpeedMult = cfg.Bind<float>("Bonemass", "(Mini Stat) AnimationSpeedMult", 1.6f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.AnimationSpeedMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 3f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6950
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Bonemass", "(Divider) 3", 6950, 6000);
			AcceptableValueList<string> val = new AcceptableValueList<string>(new string[8] { "Inherit", "Normal", "Resistant", "VeryResistant", "Weak", "VeryWeak", "Immune", "Ignore" });
			MiniResistBlunt = cfg.Bind<string>("Bonemass", "(Mini Resist) Blunt", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Blunt"), (AcceptableValueBase)(object)val, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6000
				}
			}));
			MiniResistSlash = cfg.Bind<string>("Bonemass", "(Mini Resist) Slash", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Slash"), (AcceptableValueBase)(object)val, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 5990
				}
			}));
			MiniResistPierce = cfg.Bind<string>("Bonemass", "(Mini Resist) Pierce", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Pierce"), (AcceptableValueBase)(object)val, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 5980
				}
			}));
			MiniResistFire = cfg.Bind<string>("Bonemass", "(Mini Resist) Fire", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Fire"), (AcceptableValueBase)(object)val, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 5970
				}
			}));
			MiniResistFrost = cfg.Bind<string>("Bonemass", "(Mini Resist) Frost", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Frost"), (AcceptableValueBase)(object)val, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 5960
				}
			}));
			MiniResistLightning = cfg.Bind<string>("Bonemass", "(Mini Resist) Lightning", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Lightning"), (AcceptableValueBase)(object)val, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 5950
				}
			}));
			MiniResistPoison = cfg.Bind<string>("Bonemass", "(Mini Resist) Poison", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Poison"), (AcceptableValueBase)(object)val, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 5940
				}
			}));
			MiniResistSpirit = cfg.Bind<string>("Bonemass", "(Mini Resist) Spirit", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Spirit"), (AcceptableValueBase)(object)val, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 5930
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Bonemass", "(Divider) 4", 5930, 5000);
			ProjectileSpeedMult = cfg.Bind<float>("Bonemass", "(Throw Projectile) SpeedMult", 5f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.SpeedMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 5000
				}
			}));
			ProjectileDamageBlunt = cfg.Bind<float>("Bonemass", "(Throw Projectile) DamageBlunt", 20f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4990
				}
			}));
			ProjectileHitRadius = cfg.Bind<float>("Bonemass", "(Throw Projectile) HitRadius", 2f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.HitRadius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 3f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4980
				}
			}));
			ProjectileDamagePoison = cfg.Bind<float>("Bonemass", "(Throw Projectile) DamagePoison", 30f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.DamagePoison"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4970
				}
			}));
			ProjectileStickyEnabled = cfg.Bind<bool>("Bonemass", "(Throw Projectile) StickyEnabled", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.StickyEnabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4960
				}
			}));
			ProjectileStickySourceEffect = cfg.Bind<string>("Bonemass", "(Throw Projectile) StickySourceEffect", "Tared", new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.StickySourceEffect"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4950
				}
			}));
			ProjectileStickyDisplayName = cfg.Bind<string>("Bonemass", "(Throw Projectile) StickyDisplayName", "오물투성이", new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.StickyDisplayName"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4940
				}
			}));
			ProjectileStickyDuration = cfg.Bind<float>("Bonemass", "(Throw Projectile) StickyDuration", 10f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.StickyDuration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 30f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4930
				}
			}));
			ProjectilePushForceFallback = cfg.Bind<float>("Bonemass", "(Throw Projectile) PushForceFallback", 25f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.PushForceFallback"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4920
				}
			}));
			ProjectileSpawnOffsetDistance = cfg.Bind<float>("Bonemass", "(Throw Projectile) SpawnOffsetDistance", 5f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.SpawnOffsetDistance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 15f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4910
				}
			}));
			ProjectileAimHeightOffset = cfg.Bind<float>("Bonemass", "(Throw Projectile) AimHeightOffset", 2.5f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.AimHeightOffset"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 6f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4905
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Bonemass", "(Divider) 5", 4905, 4000);
			BonusSpawnEnabled = cfg.Bind<bool>("Bonemass", "(Throw Summon) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 4000
				}
			}));
			BonusSpawnHealthThreshold = cfg.Bind<float>("Bonemass", "(Throw Summon) HPThreshold", 80f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 3995
				}
			}));
			BonusSpawnHPThresholdMessage = cfg.Bind<string>("Bonemass", "(Throw Summon) HPThresholdMessage", "", new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.HPThresholdMessage"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 3990
				}
			}));
			BonusSpawnPrefab = cfg.Bind<string>("Bonemass", "(Throw Summon) Prefab", "Draugr_Ranged", new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.Prefab"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 3985
				}
			}));
			BonusSpawnChance = cfg.Bind<float>("Bonemass", "(Throw Summon) Chance", 100f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.Chance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 3980
				}
			}));
			BonusSpawnCount = cfg.Bind<int>("Bonemass", "(Throw Summon) Count", 3, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.Count"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 3975
				}
			}));
			BonusSpawnMinDistanceFromBoss = cfg.Bind<float>("Bonemass", "(Throw Summon) MinDistanceFromBoss", 8f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.MinDistanceFromBoss"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 30f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 3970
				}
			}));
			PhaseMessage = cfg.Bind<string>("Bonemass", "(Phase) Message", "", new ConfigDescription(LocalizationManager.Desc("Bonemass.Phase.Message"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 2000
				}
			}));
			PhaseMessageHP = cfg.Bind<float>("Bonemass", "(Phase) MessageHP", 50f, new ConfigDescription(LocalizationManager.Desc("Bonemass.Phase.MessageHP"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 1990
				}
			}));
		}
	}
	internal static class MiniBonemassVariants
	{
		public const int Count = 5;

		public static readonly string[] Names = new string[5] { "MiniBonemass_Red", "MiniBonemass_Orange", "MiniBonemass_Yellow", "MiniBonemass_Green", "MiniBonemass_Blue" };

		public static readonly string[] KoreanNames = new string[5] { "빨강", "주황", "노랑", "초록", "파랑" };

		public static readonly Color[] Colors = (Color[])(object)new Color[5]
		{
			new Color(1f, 0.05f, 0.05f),
			new Color(1f, 0.45f, 0f),
			new Color(1f, 1f, 0f),
			new Color(0f, 0.9f, 0.8f),
			new Color(0.05f, 0.3f, 1f)
		};

		public static bool IsMini(string prefabName)
		{
			return prefabName?.StartsWith("MiniBonemass_") ?? false;
		}

		public static int IndexOf(string prefabName)
		{
			for (int i = 0; i < Names.Length; i++)
			{
				if (Names[i] == prefabName)
				{
					return i;
				}
			}
			return -1;
		}
	}
	internal static class MonsterDB
	{
		private static readonly FieldInfo s_namedPrefabsField = AccessTools.Field(typeof(ZNetScene), "m_namedPrefabs");

		private static readonly GameObject[] s_variants = (GameObject[])(object)new GameObject[5];

		private static readonly Dictionary<GameObject, GameObject> s_weaponCloneCache = new Dictionary<GameObject, GameObject>();

		private static GameObject s_templateHolder;

		private static bool s_itemsLogged = false;

		private static readonly FieldInfo s_attackRangeField = AccessTools.Field(typeof(Attack), "m_attackRange");

		private static readonly List<GameObject> s_pendingObjectDBItems = new List<GameObject>();

		private static readonly MethodInfo s_updateRegistersMethod = AccessTools.Method(typeof(ObjectDB), "UpdateRegisters", (Type[])null, (Type[])null);

		private static void EnsureTemplateHolder()
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			if (!((Object)(object)s_templateHolder != (Object)null))
			{
				s_templateHolder = new GameObject("MiniBonemassTemplateHolder");
				s_templateHolder.SetActive(false);
				Object.DontDestroyOnLoad((Object)(object)s_templateHolder);
			}
		}

		[HarmonyPostfix]
		public static void Postfix(ZNetScene __instance)
		{
			if (!(s_namedPrefabsField.GetValue(__instance) is Dictionary<int, GameObject> namedPrefabs))
			{
				Plugin.Log.LogError((object)"[MonsterDB] m_namedPrefabs 접근 실패");
				return;
			}
			for (int i = 0; i < 5; i++)
			{
				RegisterVariant(__instance, namedPrefabs, i);
			}
		}

		private static void RegisterVariant(ZNetScene zns, Dictionary<int, GameObject> namedPrefabs, int idx)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0202: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_0217: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0234: Unknown result type (might be due to invalid IL or missing references)
			//IL_0239: Unknown result type (might be due to invalid IL or missing references)
			//IL_024a: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_0269: Unknown result type (might be due to invalid IL or missing references)
			//IL_026e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0273: Unknown result type (might be due to invalid IL or missing references)
			//IL_0284: Unknown result type (might be due to invalid IL or missing references)
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_028b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ad: 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_02c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_02db: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_038b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0399: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
			string text = MiniBonemassVariants.Names[idx];
			Color tint = MiniBonemassVariants.Colors[idx];
			if ((Object)(object)zns.GetPrefab(text) != (Object)null)
			{
				return;
			}
			if ((Object)(object)s_variants[idx] != (Object)null)
			{
				zns.m_prefabs.Add(s_variants[idx]);
				namedPrefabs[StringExtensionMethods.GetStableHashCode(text)] = s_variants[idx];
				Plugin.Log.LogInfo((object)("[MonsterDB] " + text + " 재등록"));
				return;
			}
			GameObject prefab = zns.GetPrefab("Bonemass");
			if ((Object)(object)prefab == (Object)null)
			{
				Plugin.Log.LogError((object)("[MonsterDB] Bonemass 프리팹 없음 — " + text + " 등록 실패"));
				return;
			}
			LogBonemassAttackItems(prefab);
			bool activeSelf = prefab.activeSelf;
			prefab.SetActive(false);
			GameObject val = Object.Instantiate<GameObject>(prefab);
			prefab.SetActive(activeSelf);
			((Object)val).name = text;
			Object.DontDestroyOnLoad((Object)(object)val);
			EnsureTemplateHolder();
			val.transform.SetParent(s_templateHolder.transform, false);
			val.SetActive(true);
			Character component = prefab.GetComponent<Character>();
			Character component2 = val.GetComponent<Character>();
			if ((Object)(object)component2 != (Object)null)
			{
				component2.m_boss = false;
				component2.m_bossEvent = "";
				component2.m_runSpeed *= BonemassConfig.MiniSpeedMult.Value;
				component2.m_walkSpeed *= BonemassConfig.MiniSpeedMult.Value;
				component2.m_swimSpeed *= BonemassConfig.MiniSpeedMult.Value;
				component2.m_acceleration *= BonemassConfig.MiniSpeedMult.Value;
				if ((Object)(object)component != (Object)null)
				{
					component2.m_health = Mathf.Max(component.m_health * BonemassConfig.MiniHPMult.Value, 1f);
				}
			}
			if ((Object)(object)component2 != (Object)null)
			{
				DamageModifiers damageModifiers = component2.m_damageModifiers;
				damageModifiers.m_blunt = ParseModifier(BonemassConfig.MiniResistBlunt.Value, damageModifiers.m_blunt);
				damageModifiers.m_slash = ParseModifier(BonemassConfig.MiniResistSlash.Value, damageModifiers.m_slash);
				damageModifiers.m_pierce = ParseModifier(BonemassConfig.MiniResistPierce.Value, damageModifiers.m_pierce);
				damageModifiers.m_fire = ParseModifier(BonemassConfig.MiniResistFire.Value, damageModifiers.m_fire);
				damageModifiers.m_frost = ParseModifier(BonemassConfig.MiniResistFrost.Value, damageModifiers.m_frost);
				damageModifiers.m_lightning = ParseModifier(BonemassConfig.MiniResistLightning.Value, damageModifiers.m_lightning);
				damageModifiers.m_poison = ParseModifier(BonemassConfig.MiniResistPoison.Value, damageModifiers.m_poison);
				damageModifiers.m_spirit = ParseModifier(BonemassConfig.MiniResistSpirit.Value, damageModifiers.m_spirit);
				component2.m_damageModifiers = damageModifiers;
			}
			RemoveNonMeleeAttackItems(val);
			ZNetView component3 = val.GetComponent<ZNetView>();
			if ((Object)(object)component3 != (Object)null)
			{
				component3.m_persistent = false;
			}
			MonsterAI component4 = val.GetComponent<MonsterAI>();
			if ((Object)(object)component4 != (Object)null && BonemassConfig.MiniAttackIntervalMult.Value != 1f)
			{
				component4.m_minAttackInterval *= BonemassConfig.MiniAttackIntervalMult.Value;
			}
			CharacterDrop component5 = val.GetComponent<CharacterDrop>();
			if ((Object)(object)component5 != (Object)null)
			{
				component5.m_drops.Clear();
			}
			ApplyTint(val, tint);
			val.transform.localScale = Vector3.one * 0.3f;
			zns.m_prefabs.Add(val);
			namedPrefabs[StringExtensionMethods.GetStableHashCode(text)] = val;
			s_variants[idx] = val;
		}

		private static void LogBonemassAttackItems(GameObject original)
		{
			if (!s_itemsLogged)
			{
				s_itemsLogged = true;
				if ((Object)(object)original.GetComponent<Humanoid>() == (Object)null)
				{
					Plugin.Log.LogWarning((object)"[MonsterDB:진단] Bonemass에 Humanoid 컴포넌트 없음 — m_defaultItems 기반 접근 불가, 다른 방식 필요");
				}
			}
		}

		private static void RemoveNonMeleeAttackItems(GameObject mini)
		{
			Humanoid component = mini.GetComponent<Humanoid>();
			if (!((Object)(object)component == (Object)null))
			{
				float rangeMult = BonemassConfig.MiniAttackRangeMult.Value;
				float intervalMult = BonemassConfig.MiniAttackIntervalMult.Value;
				component.m_defaultItems = (from go in FilterMeleeOnly(component.m_defaultItems)
					select CreateMiniExclusiveWeapon(go, rangeMult, intervalMult)).ToArray();
				component.m_randomWeapon = (from go in FilterMeleeOnly(component.m_randomWeapon)
					select CreateMiniExclusiveWeapon(go, rangeMult, intervalMult)).ToArray();
			}
		}

		private static GameObject CreateMiniExclusiveWeapon(GameObject weaponPrefab, float rangeMult, float intervalMult)
		{
			if ((Object)(object)weaponPrefab == (Object)null)
			{
				return weaponPrefab;
			}
			if (s_weaponCloneCache.TryGetValue(weaponPrefab, out var value))
			{
				return value;
			}
			ItemDrop component = weaponPrefab.GetComponent<ItemDrop>();
			if (component?.m_itemData?.m_shared == null)
			{
				return weaponPrefab;
			}
			bool activeSelf = weaponPrefab.activeSelf;
			weaponPrefab.SetActive(false);
			GameObject val = Object.Instantiate<GameObject>(weaponPrefab);
			weaponPrefab.SetActive(activeSelf);
			((Object)val).name = ((Object)weaponPrefab).name + "_MiniBonemass";
			Object.DontDestroyOnLoad((Object)(object)val);
			val.SetActive(false);
			ItemDrop component2 = val.GetComponent<ItemDrop>();
			SharedData shared = component2.m_itemData.m_shared;
			if (shared == component.m_itemData.m_shared)
			{
				Plugin.Log.LogWarning((object)("[MonsterDB:진단] " + ((Object)val).name + " SharedData가 원본과 공유 중 — 독립 복제 실패, 별도 조치 필요"));
			}
			shared.m_aiAttackRange *= rangeMult;
			if (shared.m_aiAttackRangeMin > 0f)
			{
				shared.m_aiAttackRangeMin *= rangeMult;
			}
			ScaleAttackRange(shared.m_attack, rangeMult);
			ScaleAttackRange(shared.m_secondaryAttack, rangeMult);
			shared.m_aiAttackInterval *= intervalMult;
			RegisterInObjectDB(val);
			Plugin.Log.LogInfo((object)("[MonsterDB] MiniBonemass 전용 무기 생성: " + ((Object)val).name + " — " + $"aiAttackRange={shared.m_aiAttackRange:F2} attackRange={GetAttackRange(shared.m_attack):F2} " + "secondaryAttackRange=" + ((shared.m_secondaryAttack != null) ? GetAttackRange(shared.m_secondaryAttack).ToString("F2") : "N/A") + " " + $"aiAttackInterval={shared.m_aiAttackInterval:F2} (rangeMult {rangeMult:F2} / intervalMult {intervalMult:F2})"));
			s_weaponCloneCache[weaponPrefab] = val;
			return val;
		}

		private static void ScaleAttackRange(Attack attack, float mult)
		{
			if (attack != null && !(s_attackRangeField == null))
			{
				float num = (float)(s_attackRangeField.GetValue(attack) ?? ((object)0f));
				s_attackRangeField.SetValue(attack, num * mult);
			}
		}

		private static float GetAttackRange(Attack attack)
		{
			if (attack == null || s_attackRangeField == null)
			{
				return 0f;
			}
			return (float)(s_attackRangeField.GetValue(attack) ?? ((object)0f));
		}

		private static void RegisterInObjectDB(GameObject itemPrefab)
		{
			if (!s_pendingObjectDBItems.Contains(itemPrefab))
			{
				s_pendingObjectDBItems.Add(itemPrefab);
			}
			TryFlushPendingObjectDBItems();
		}

		internal static void TryFlushPendingObjectDBItems()
		{
			if ((Object)(object)ObjectDB.instance == (Object)null)
			{
				return;
			}
			bool flag = false;
			List<GameObject> list = new List<GameObject>();
			foreach (GameObject item in s_pendingObjectDBItems)
			{
				if (!((Object)(object)item == (Object)null) && !ObjectDB.instance.m_items.Contains(item))
				{
					if (ObjectDB.instance.m_items.Exists((GameObject existing) => (Object)(object)existing != (Object)null && ((Object)existing).name == ((Object)item).name))
					{
						Plugin.Log.LogWarning((object)("[MonsterDB] ObjectDB 등록 스킵(이름 중복): " + ((Object)item).name));
						continue;
					}
					ObjectDB.instance.m_items.Add(item);
					flag = true;
					list.Add(item);
				}
			}
			if (!flag)
			{
				return;
			}
			try
			{
				s_updateRegistersMethod?.Invoke(ObjectDB.instance, null);
			}
			catch (Exception ex)
			{
				Plugin.Log.LogError((object)("[MonsterDB:진단] UpdateRegisters() 호출 중 예외 — " + ex.GetType().Name + ": " + ex.Message + " (내부: " + ex.InnerException?.GetType().Name + ": " + ex.InnerException?.Message + ")"));
				return;
			}
			foreach (GameObject item2 in list)
			{
				GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(((Object)item2).name);
				if ((Object)(object)itemPrefab != (Object)(object)item2)
				{
					Plugin.Log.LogWarning((object)("[MonsterDB] ObjectDB 등록 후 조회 검증 실패: " + ((Object)item2).name + " — " + (((Object)(object)itemPrefab == (Object)null) ? "못찾음" : "다른 객체가 조회됨")));
				}
			}
		}

		private static GameObject[] FilterMeleeOnly(GameObject[] arr)
		{
			if (arr == null || arr.Length == 0)
			{
				return arr;
			}
			return arr.Where(delegate(GameObject go)
			{
				//IL_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: Invalid comparison between Unknown and I4
				//IL_0086: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)go == (Object)null)
				{
					return true;
				}
				Attack val = go.GetComponent<ItemDrop>()?.m_itemData?.m_shared?.m_attack;
				if (val == null)
				{
					return true;
				}
				bool flag = (int)val.m_attackType == 0 || (int)val.m_attackType == 1;
				if (!flag)
				{
					Plugin.Log.LogInfo((object)("[MonsterDB] MiniBonemass 근접외 공격 제거: " + ((Object)go).name + " " + $"(attackType={val.m_attackType})"));
				}
				return flag;
			}).ToArray();
		}

		private static DamageModifier ParseModifier(string value, DamageModifier original)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			if (string.IsNullOrEmpty(value) || value == "Inherit")
			{
				return original;
			}
			if (Enum.TryParse<DamageModifier>(value, out DamageModifier result))
			{
				return result;
			}
			Plugin.Log.LogWarning((object)("[MonsterDB] 알 수 없는 저항값 '" + value + "' → Inherit 처리"));
			return original;
		}

		internal static void ApplyTint(GameObject go, Color tint)
		{
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_017c: 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_01c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Expected O, but got Unknown
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			Renderer[] componentsInChildren = go.GetComponentsInChildren<Renderer>(true);
			foreach (Renderer val in componentsInChildren)
			{
				if (val is ParticleSystemRenderer)
				{
					continue;
				}
				Material[] sharedMaterials = val.sharedMaterials;
				bool flag = false;
				for (int j = 0; j < sharedMaterials.Length; j++)
				{
					if (!((Object)(object)sharedMaterials[j] == (Object)null))
					{
						Material val2 = new Material(sharedMaterials[j]);
						if (val2.HasProperty("_Color"))
						{
							Color color = val2.color;
							val2.color = new Color(tint.r, tint.g, tint.b, color.a);
						}
						if (val2.HasProperty("_EmissionColor"))
						{
							val2.EnableKeyword("_EMISSION");
							val2.SetColor("_EmissionColor", tint * 15f);
						}
						if (val2.HasProperty("_TintColor"))
						{
							val2.SetColor("_TintColor", new Color(tint.r, tint.g, tint.b, 0.5f));
						}
						sharedMaterials[j] = val2;
						flag = true;
					}
				}
				if (flag)
				{
					val.sharedMaterials = sharedMaterials;
				}
			}
			ParticleSystem[] componentsInChildren2 = go.GetComponentsInChildren<ParticleSystem>(true);
			foreach (ParticleSystem val3 in componentsInChildren2)
			{
				MainModule main = val3.main;
				EmissionModule emission = val3.emission;
				((EmissionModule)(ref emission)).rateOverTimeMultiplier = ((EmissionModule)(ref emission)).rateOverTimeMultiplier * 0.1f;
				((EmissionModule)(ref emission)).rateOverDistanceMultiplier = ((EmissionModule)(ref emission)).rateOverDistanceMultiplier * 0.1f;
				((MainModule)(ref main)).startSizeMultiplier = ((MainModule)(ref main)).startSizeMultiplier * 0.35f;
				MinMaxGradient startColor = ((MainModule)(ref main)).startColor;
				Color color2 = ((MinMaxGradient)(ref startColor)).color;
				((MainModule)(ref main)).startColor = new MinMaxGradient(new Color(tint.r, tint.g, tint.b, color2.a * 0.06f));
			}
		}
	}
	[HarmonyPatch]
	internal static class MonsterDBObjectDBRegisterPatch
	{
		[HarmonyTargetMethods]
		private static IEnumerable<MethodBase> TargetMethods()
		{
			yield return AccessTools.Method(typeof(ObjectDB), "Awake", (Type[])null, (Type[])null);
			yield return AccessTools.Method(typeof(ObjectDB), "CopyOtherDB", (Type[])null, (Type[])null);
		}

		[HarmonyPostfix]
		public static void Postfix()
		{
			MonsterDB.TryFlushPendingObjectDBItems();
		}
	}
	public static class EikthyrSummonConfig
	{
		public static ConfigEntry<bool> Enabled { get; private set; }

		public static ConfigEntry<SummonTriggerMode> TriggerMode { get; private set; }

		public static ConfigEntry<int> HealthStepCount { get; private set; }

		public static ConfigEntry<float> TimerInterval { get; private set; }

		public static ConfigEntry<string> SummonPrefab { get; private set; }

		public static ConfigEntry<int> SummonCount { get; private set; }

		public static ConfigEntry<int> SummonLevel { get; private set; }

		public static ConfigEntry<int> MaxTotalSummons { get; private set; }

		public static ConfigEntry<bool> UseCLLC { get; private set; }

		public static ConfigEntry<bool> SpecialSummonEnabled { get; private set; }

		public static ConfigEntry<float> SpecialSummonHealthThreshold { get; private set; }

		public static ConfigEntry<string> SpecialSummonHPThresholdMessage { get; private set; }

		public static ConfigEntry<string> SpecialSummonPrefab { get; private set; }

		public static ConfigEntry<int> SpecialSummonCount { get; private set; }

		public static ConfigEntry<int> SpecialSummonLevel { get; private set; }

		public static ConfigEntry<float> SpawnRadius { get; private set; }

		public static ConfigEntry<float> SpawnDelay { get; private set; }

		public static ConfigEntry<float> SpecialSummonVfxScale { get; private set; }

		public static ConfigEntry<bool> HornGlowEnabled { get; private set; }

		public static ConfigEntry<string> HornGlowColor { get; private set; }

		public static ConfigEntry<float> HornGlowIntensity { get; private set; }

		public static ConfigEntry<bool> BodyLightningEnabled { get; private set; }

		public static ConfigEntry<float> BodyLightningScale { get; private set; }

		public static ConfigEntry<float> BodyLightningSpread { get; private set; }

		public static ConfigEntry<bool> TransformEnabled { get; private set; }

		public static ConfigEntry<float> TransformScale { get; private set; }

		public static ConfigEntry<bool> Phase2Enabled { get; private set; }

		public static ConfigEntry<float> Phase2HealthThreshold { get; private set; }

		public static ConfigEntry<string> Phase2HPThresholdMessage { get; private set; }

		public static ConfigEntry<string> StompAnimName { get; private set; }

		public static ConfigEntry<float> LightningProcChance { get; private set; }

		public static ConfigEntry<int> LightningCount { get; private set; }

		public static ConfigEntry<float> LightningDamageBlunt { get; private set; }

		public static ConfigEntry<float> LightningDamageSlash { get; private set; }

		public static ConfigEntry<float> LightningDamagePierce { get; private set; }

		public static ConfigEntry<float> LightningDamageLightning { get; private set; }

		public static ConfigEntry<float> LightningPushForce { get; private set; }

		public static ConfigEntry<float> LightningStartDelay { get; private set; }

		public static ConfigEntry<float> LightningSafeZoneRadius { get; private set; }

		public static ConfigEntry<float> LightningDotDuration { get; private set; }

		public static ConfigEntry<float> LightningDotMinDamage { get; private set; }

		public static ConfigEntry<float> LightningDotMaxDamage { get; private set; }

		public static ConfigEntry<bool> HornLaunchEnabled { get; private set; }

		public static ConfigEntry<float> HornLaunchHealthThreshold { get; private set; }

		public static ConfigEntry<string> HornLaunchAnimName { get; private set; }

		public static ConfigEntry<float> HornLaunchHorizontalForce { get; private set; }

		public static ConfigEntry<float> HornLaunchVerticalForce { get; private set; }

		public static ConfigEntry<float> HornLaunchProcChance { get; private set; }

		public static ConfigEntry<bool> HornLaunchAffectsBlocking { get; private set; }

		public static ConfigEntry<string> HornLaunchHPThresholdMessage { get; private set; }

		public static ConfigEntry<string> PhaseMessage { get; private set; }

		public static ConfigEntry<float> PhaseMessageHP { get; private set; }

		public static void Bind(ConfigFile cfg)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Expected O, but got Unknown
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Expected O, but got Unknown
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Expected O, but got Unknown
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d7: Expected O, but got Unknown
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_022e: Expected O, but got Unknown
			//IL_0269: Unknown result type (might be due to invalid IL or missing references)
			//IL_0273: Expected O, but got Unknown
			//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Expected O, but got Unknown
			//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0301: Expected O, but got Unknown
			//IL_034e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0358: Expected O, but got Unknown
			//IL_03ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b8: Expected O, but got Unknown
			//IL_0405: Unknown result type (might be due to invalid IL or missing references)
			//IL_040f: Expected O, but got Unknown
			//IL_044e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0458: Expected O, but got Unknown
			//IL_0493: Unknown result type (might be due to invalid IL or missing references)
			//IL_049d: Expected O, but got Unknown
			//IL_04ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f4: Expected O, but got Unknown
			//IL_0541: Unknown result type (might be due to invalid IL or missing references)
			//IL_054b: Expected O, but got Unknown
			//IL_058a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0594: Expected O, but got Unknown
			//IL_05e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05eb: Expected O, but got Unknown
			//IL_062d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0637: Expected O, but got Unknown
			//IL_0684: Unknown result type (might be due to invalid IL or missing references)
			//IL_068e: Expected O, but got Unknown
			//IL_06db: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e5: Expected O, but got Unknown
			//IL_0732: Unknown result type (might be due to invalid IL or missing references)
			//IL_073c: Expected O, but got Unknown
			//IL_0789: Unknown result type (might be due to invalid IL or missing references)
			//IL_0793: Expected O, but got Unknown
			//IL_07e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ea: Expected O, but got Unknown
			//IL_0837: Unknown result type (might be due to invalid IL or missing references)
			//IL_0841: Expected O, but got Unknown
			//IL_088e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0898: Expected O, but got Unknown
			//IL_08e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ef: Expected O, but got Unknown
			//IL_093c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0946: Expected O, but got Unknown
			//IL_0993: Unknown result type (might be due to invalid IL or missing references)
			//IL_099d: Expected O, but got Unknown
			//IL_09f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09fd: Expected O, but got Unknown
			//IL_0a4a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a54: Expected O, but got Unknown
			//IL_0aaa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab4: Expected O, but got Unknown
			//IL_0aef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af9: Expected O, but got Unknown
			//IL_0b3c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b46: Expected O, but got Unknown
			//IL_0b93: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9d: Expected O, but got Unknown
			//IL_0bdc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0be6: Expected O, but got Unknown
			//IL_0c28: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c32: Expected O, but got Unknown
			//IL_0c73: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c7d: Expected O, but got Unknown
			//IL_0cc3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ccd: Expected O, but got Unknown
			//IL_0d08: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d12: Expected O, but got Unknown
			//IL_0d5f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d69: Expected O, but got Unknown
			//IL_0db6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dc0: Expected O, but got Unknown
			//IL_0e16: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e20: Expected O, but got Unknown
			//IL_0e6d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e77: Expected O, but got Unknown
			//IL_0eb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ec0: Expected O, but got Unknown
			//IL_0eff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f09: Expected O, but got Unknown
			//IL_0f4b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f55: Expected O, but got Unknown
			//IL_0f96: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fa0: Expected O, but got Unknown
			//IL_0fed: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ff7: Expected O, but got Unknown
			//IL_1051: Unknown result type (might be due to invalid IL or missing references)
			//IL_105b: Expected O, but got Unknown
			//IL_10a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_10b2: Expected O, but got Unknown
			HornLaunchEnabled = cfg.Bind<bool>("Eikthyr", "(Horn Attack) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 9000
				}
			}));
			HornLaunchHealthThreshold = cfg.Bind<float>("Eikthyr", "(Horn Attack) HPThreshold", 70f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8990
				}
			}));
			HornLaunchHPThresholdMessage = cfg.Bind<string>("Eikthyr", "(Horn Attack) HPThresholdMessage", "", new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.HPThresholdMessage"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8985
				}
			}));
			HornLaunchAnimName = cfg.Bind<string>("Eikthyr", "(Horn Attack) Anim", "attack1", new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.Anim"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8980
				}
			}));
			HornLaunchHorizontalForce = cfg.Bind<float>("Eikthyr", "(Horn Attack) HorizontalForce", 2f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.HorizontalForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8970
				}
			}));
			HornLaunchVerticalForce = cfg.Bind<float>("Eikthyr", "(Horn Attack) VerticalForce", 20f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.VerticalForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8960
				}
			}));
			HornLaunchProcChance = cfg.Bind<float>("Eikthyr", "(Horn Attack) ProcChance", 100f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.ProcChance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8950
				}
			}));
			HornLaunchAffectsBlocking = cfg.Bind<bool>("Eikthyr", "(Horn Attack) AffectsBlocking", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.AffectsBlocking"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8940
				}
			}));
			HornGlowEnabled = cfg.Bind<bool>("Eikthyr", "(Horn Attack) GlowEnabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.GlowEnabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8935
				}
			}));
			HornGlowColor = cfg.Bind<string>("Eikthyr", "(Horn Attack) GlowColor", "#F0FFFF", new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.GlowColor"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8933
				}
			}));
			HornGlowIntensity = cfg.Bind<float>("Eikthyr", "(Horn Attack) GlowIntensity", 3f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.GlowIntensity"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 10f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8932
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Eikthyr", "(Divider) 1", 8932, 8000);
			Phase2Enabled = cfg.Bind<bool>("Eikthyr", "(Lightning) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8000
				}
			}));
			Phase2HealthThreshold = cfg.Bind<float>("Eikthyr", "(Lightning) HPThreshold", 50f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 99f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7990
				}
			}));
			Phase2HPThresholdMessage = cfg.Bind<string>("Eikthyr", "(Lightning) HPThresholdMessage", "", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.HPThresholdMessage"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7985
				}
			}));
			BodyLightningEnabled = cfg.Bind<bool>("Eikthyr", "(Lightning) BodyLightningEnabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.BodyLightningEnabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7983
				}
			}));
			BodyLightningScale = cfg.Bind<float>("Eikthyr", "(Lightning) BodyLightningScale", 1.35f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.BodyLightningScale"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7981
				}
			}));
			BodyLightningSpread = cfg.Bind<float>("Eikthyr", "(Lightning) BodyLightningSpread", 1.3f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.BodyLightningSpread"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7980
				}
			}));
			StompAnimName = cfg.Bind<string>("Eikthyr", "(Lightning) StompAnim", "stomp", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.StompAnim"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7979
				}
			}));
			LightningProcChance = cfg.Bind<float>("Eikthyr", "(Lightning) ProcChance", 100f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.ProcChance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7970
				}
			}));
			LightningCount = cfg.Bind<int>("Eikthyr", "(Lightning) Count", 1, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.Count"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7960
				}
			}));
			LightningDamageBlunt = cfg.Bind<float>("Eikthyr", "(Lightning) DamageBlunt", 0f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1000f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7950
				}
			}));
			LightningDamageSlash = cfg.Bind<float>("Eikthyr", "(Lightning) DamageSlash", 0f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DamageSlash"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1000f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7940
				}
			}));
			LightningDamagePierce = cfg.Bind<float>("Eikthyr", "(Lightning) DamagePierce", 10f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DamagePierce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1000f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7930
				}
			}));
			LightningDamageLightning = cfg.Bind<float>("Eikthyr", "(Lightning) DamageLightning", 20f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DamageLightning"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1000f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7920
				}
			}));
			LightningPushForce = cfg.Bind<float>("Eikthyr", "(Lightning) PushForce", 30f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.PushForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7915
				}
			}));
			LightningStartDelay = cfg.Bind<float>("Eikthyr", "(Lightning) StartDelay", 0.8f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.StartDelay"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7910
				}
			}));
			LightningSafeZoneRadius = cfg.Bind<float>("Eikthyr", "(Lightning) SafeZoneRadius", 10f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.SafeZoneRadius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 49f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7900
				}
			}));
			LightningDotDuration = cfg.Bind<float>("Eikthyr", "(Lightning) DotDuration", 4f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DotDuration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 30f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7890
				}
			}));
			LightningDotMinDamage = cfg.Bind<float>("Eikthyr", "(Lightning) DotMinDamage", 1f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DotMinDamage"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7880
				}
			}));
			LightningDotMaxDamage = cfg.Bind<float>("Eikthyr", "(Lightning) DotMaxDamage", 2f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DotMaxDamage"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7870
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Eikthyr", "(Divider) 2", 7870, 7860);
			TransformEnabled = cfg.Bind<bool>("Eikthyr", "(Transform) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Transform.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7860
				}
			}));
			TransformScale = cfg.Bind<float>("Eikthyr", "(Transform) Scale", 1f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Transform.Scale"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.3f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7850
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Eikthyr", "(Divider) 2b", 7850, 7000);
			Enabled = cfg.Bind<bool>("Eikthyr", "(Summon) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7000
				}
			}));
			TriggerMode = cfg.Bind<SummonTriggerMode>("Eikthyr", "(Summon) TriggerMode", SummonTriggerMode.Both, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.TriggerMode"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6990
				}
			}));
			HealthStepCount = cfg.Bind<int>("Eikthyr", "(Summon) HealthStepCount", 10, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.HealthStepCount"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6980
				}
			}));
			TimerInterval = cfg.Bind<float>("Eikthyr", "(Summon) TimerInterval", 30f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.TimerInterval"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 3600f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6970
				}
			}));
			SummonPrefab = cfg.Bind<string>("Eikthyr", "(Summon) Prefab", "Neck", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.Prefab"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6960
				}
			}));
			SummonCount = cfg.Bind<int>("Eikthyr", "(Summon) Count", 4, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.Count"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 50), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6950
				}
			}));
			SummonLevel = cfg.Bind<int>("Eikthyr", "(Summon) Level", 2, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.Level"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 5), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6940
				}
			}));
			MaxTotalSummons = cfg.Bind<int>("Eikthyr", "(Summon) MaxTotal", 20, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.MaxTotal"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 200), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6930
				}
			}));
			UseCLLC = cfg.Bind<bool>("Eikthyr", "(Summon) UseCLLC", false, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.UseCLLC"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6920
				}
			}));
			SpawnRadius = cfg.Bind<float>("Eikthyr", "(Summon) SpawnRadius", 8f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpawnRadius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(2f, 30f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6910
				}
			}));
			SpawnDelay = cfg.Bind<float>("Eikthyr", "(Summon) SpawnDelay", -1f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpawnDelay"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 10f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6900
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Eikthyr", "(Divider) 3", 6900, 6800);
			SpecialSummonEnabled = cfg.Bind<bool>("Eikthyr", "(Special Summon) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialEnabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6800
				}
			}));
			SpecialSummonHealthThreshold = cfg.Bind<float>("Eikthyr", "(Special Summon) HPThreshold", 50f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialHPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 99f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6790
				}
			}));
			SpecialSummonHPThresholdMessage = cfg.Bind<string>("Eikthyr", "(Special Summon) HPThresholdMessage", "", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialHPThresholdMessage"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6785
				}
			}));
			SpecialSummonPrefab = cfg.Bind<string>("Eikthyr", "(Special Summon) Prefab", "Boar", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialPrefab"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6780
				}
			}));
			SpecialSummonCount = cfg.Bind<int>("Eikthyr", "(Special Summon) Count", 3, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialCount"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6770
				}
			}));
			SpecialSummonLevel = cfg.Bind<int>("Eikthyr", "(Special Summon) Level", 3, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialLevel"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 5), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6760
				}
			}));
			SpecialSummonVfxScale = cfg.Bind<float>("Eikthyr", "(Special Summon) SpawnVFXScale", 3f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialSpawnVFXScale"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 10f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6750
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Eikthyr", "(Divider) 4", 6750, 6000);
			PhaseMessage = cfg.Bind<string>("Eikthyr", "(Phase) Message", "", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Phase.Message"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 6000
				}
			}));
			PhaseMessageHP = cfg.Bind<float>("Eikthyr", "(Phase) MessageHP", 50f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Phase.MessageHP"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 5990
				}
			}));
		}
	}
	public static class ModerConfig
	{
		public static ConfigEntry<bool> AirBreathEnabled { get; private set; }

		public static ConfigEntry<float> AirBreathCooldown { get; private set; }

		public static ConfigEntry<float> AirBreathTickInterval { get; private set; }

		public static ConfigEntry<float> AirBreathDuration { get; private set; }

		public static ConfigEntry<float> AirBreathRange { get; private set; }

		public static ConfigEntry<float> AirBreathAngle { get; private set; }

		public static ConfigEntry<float> AirBreathDamageFrost { get; private set; }

		public static ConfigEntry<float> AirBreathDamageBlunt { get; private set; }

		public static ConfigEntry<float> AirBreathStaggerMult { get; private set; }

		public static ConfigEntry<string> AirBreathVFX { get; private set; }

		public static ConfigEntry<float> AirBreathMinAltitude { get; private set; }

		public static ConfigEntry<float> AirBreathHPThreshold { get; private set; }

		public static ConfigEntry<string> AirBreathHPThresholdMessage { get; private set; }

		public static ConfigEntry<string> PhaseMessage { get; private set; }

		public static ConfigEntry<float> PhaseMessageHP { get; private set; }

		public static ConfigEntry<bool> AirBreathFurColorEnabled { get; private set; }

		public static ConfigEntry<string> AirBreathFurColor { get; private set; }

		public static ConfigEntry<float> AirBreathFurColorIntensity { get; private set; }

		public static ConfigEntry<float> AirBreathFurBrightnessThreshold { get; private set; }

		public static ConfigEntry<bool> GroundBreathEnabled { get; private set; }

		public static ConfigEntry<float> GroundBreathTickInterval { get; private set; }

		public static ConfigEntry<float> GroundBreathDuration { get; private set; }

		public static ConfigEntry<float> GroundBreathRange { get; private set; }

		public static ConfigEntry<float> GroundBreathAngle { get; private set; }

		public static ConfigEntry<float> GroundBreathHeight { get; private set; }

		public static ConfigEntry<float> GroundBreathDamageFrost { get; private set; }

		public static ConfigEntry<float> GroundBreathDamageBlunt { get; private set; }

		public static ConfigEntry<float> GroundBreathPushForce { get; private set; }

		public static ConfigEntry<float> GroundBreathStaggerMult { get; private set; }

		public static ConfigEntry<bool> StrikeEnabled { get; private set; }

		public static ConfigEntry<bool> StrikeTakeoffEnabled { get; private set; }

		public static ConfigEntry<float> StrikeRadius { get; private set; }

		public static ConfigEntry<float> StrikeExpandDuration { get; private set; }

		public static ConfigEntry<float> StrikeDamageBlunt { get; private set; }

		public static ConfigEntry<float> StrikePushForce { get; private set; }

		public static ConfigEntry<float> StrikePushForceY { get; private set; }

		public static ConfigEntry<float> StrikeStaggerMult { get; private set; }

		public static ConfigEntry<string> StrikeImpactVFX { get; private set; }

		public static ConfigEntry<float> StrikeImpactVFXScale { get; private set; }

		public static ConfigEntry<bool> FearEnabled { get; private set; }

		public static ConfigEntry<float> FearHPThreshold { get; private set; }

		public static ConfigEntry<string> FearHPThresholdMessage { get; private set; }

		public static ConfigEntry<float> FearTargetRadius { get; private set; }

		public static ConfigEntry<float> FearDelay { get; private set; }

		public static ConfigEntry<float> FearImpactRadius { get; private set; }

		public static ConfigEntry<float> FearDamageLightning { get; private set; }

		public static ConfigEntry<float> FearDamagePierce { get; private set; }

		public static ConfigEntry<float> FearPushForce { get; private set; }

		public static ConfigEntry<float> FearStaggerMult { get; private set; }

		public static ConfigEntry<float> FearShockSlowPercent { get; private set; }

		public static ConfigEntry<float> FearShockDuration { get; private set; }

		public static ConfigEntry<float> FearMeleeRangeThreshold { get; private set; }

		public static ConfigEntry<float> FearNoMeleeCastInterval { get; private set; }

		public static ConfigEntry<float> FearForcedTriggerMinInterval { get; private set; }

		public static ConfigEntry<string> FearMessage { get; private set; }

		public static ConfigEntry<float> FearImpactVFXScaleMultiplier { get; private set; }

		public static ConfigEntry<bool> FearHornGlowEnabled { get; private set; }

		public static ConfigEntry<string> FearHornGlowColor { get; private set; }

		public static ConfigEntry<float> FearHornGlowIntensity { get; private set; }

		public static ConfigEntry<float> FearHornGlowScale { get; private set; }

		public static ConfigEntry<bool> TransformEnabled { get; private set; }

		public static ConfigEntry<float> TransformScale { get; private set; }

		public static void Bind(ConfigFile cfg)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Expected O, but got Unknown
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Expected O, but got Unknown
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Expected O, but got Unknown
			//IL_01db: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Expected O, but got Unknown
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Expected O, but got Unknown
			//IL_0289: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Expected O, but got Unknown
			//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ea: Expected O, but got Unknown
			//IL_0337: Unknown result type (might be due to invalid IL or missing references)
			//IL_0341: Expected O, but got Unknown
			//IL_038e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0398: Expected O, but got Unknown
			//IL_03d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e1: Expected O, but got Unknown
			//IL_042e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Expected O, but got Unknown
			//IL_0473: Unknown result type (might be due to invalid IL or missing references)
			//IL_047d: Expected O, but got Unknown
			//IL_04bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c6: Expected O, but got Unknown
			//IL_0513: Unknown result type (might be due to invalid IL or missing references)
			//IL_051d: Expected O, but got Unknown
			//IL_056a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0574: Expected O, but got Unknown
			//IL_05ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d4: Expected O, but got Unknown
			//IL_0621: Unknown result type (might be due to invalid IL or missing references)
			//IL_062b: Expected O, but got Unknown
			//IL_0678: Unknown result type (might be due to invalid IL or missing references)
			//IL_0682: Expected O, but got Unknown
			//IL_06cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d9: Expected O, but got Unknown
			//IL_0726: Unknown result type (might be due to invalid IL or missing references)
			//IL_0730: Expected O, but got Unknown
			//IL_077d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0787: Expected O, but got Unknown
			//IL_07d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07de: Expected O, but got Unknown
			//IL_082b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0835: Expected O, but got Unknown
			//IL_0882: Unknown result type (might be due to invalid IL or missing references)
			//IL_088c: Expected O, but got Unknown
			//IL_08d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e3: Expected O, but got Unknown
			//IL_0939: Unknown result type (might be due to invalid IL or missing references)
			//IL_0943: Expected O, but got Unknown
			//IL_0990: Unknown result type (might be due to invalid IL or missing references)
			//IL_099a: Expected O, but got Unknown
			//IL_09d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e3: Expected O, but got Unknown
			//IL_0a30: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3a: Expected O, but got Unknown
			//IL_0a87: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a91: Expected O, but got Unknown
			//IL_0ade: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ae8: Expected O, but got Unknown
			//IL_0b35: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b3f: Expected O, but got Unknown
			//IL_0b8c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b96: Expected O, but got Unknown
			//IL_0be3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bed: Expected O, but got Unknown
			//IL_0c3a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c44: Expected O, but got Unknown
			//IL_0c91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9b: Expected O, but got Unknown
			//IL_0ce8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cf2: Expected O, but got Unknown
			//IL_0d3f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d49: Expected O, but got Unknown
			//IL_0d96: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da0: Expected O, but got Unknown
			//IL_0ded: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df7: Expected O, but got Unknown
			//IL_0e36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e40: Expected O, but got Unknown
			//IL_0e8d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e97: Expected O, but got Unknown
			//IL_0ed2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0edc: Expected O, but got Unknown
			//IL_0f1b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f25: Expected O, but got Unknown
			//IL_0f72: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f7c: Expected O, but got Unknown
			//IL_0fc9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fd3: Expected O, but got Unknown
			//IL_1029: Unknown result type (might be due to invalid IL or missing references)
			//IL_1033: Expected O, but got Unknown
			//IL_106e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1078: Expected O, but got Unknown
			//IL_10c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_10cf: Expected O, but got Unknown
			//IL_111c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1126: Expected O, but got Unknown
			//IL_1173: Unknown result type (might be due to invalid IL or missing references)
			//IL_117d: Expected O, but got Unknown
			//IL_11ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_11d4: Expected O, but got Unknown
			//IL_1221: Unknown result type (might be due to invalid IL or missing references)
			//IL_122b: Expected O, but got Unknown
			//IL_1278: Unknown result type (might be due to invalid IL or missing references)
			//IL_1282: Expected O, but got Unknown
			//IL_12c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_12cb: Expected O, but got Unknown
			//IL_1318: Unknown result type (might be due to invalid IL or missing references)
			//IL_1322: Expected O, but got Unknown
			//IL_1378: Unknown result type (might be due to invalid IL or missing references)
			//IL_1382: Expected O, but got Unknown
			//IL_13cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_13d9: Expected O, but got Unknown
			//IL_1433: Unknown result type (might be due to invalid IL or missing references)
			//IL_143d: Expected O, but got Unknown
			//IL_148a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1494: Expected O, but got Unknown
			AirBreathEnabled = cfg.Bind<bool>("Moder", "(Air Breath) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 9000
				}
			}));
			AirBreathHPThreshold = cfg.Bind<float>("Moder", "(Air Breath) HPThreshold", 50f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8995
				}
			}));
			AirBreathHPThresholdMessage = cfg.Bind<string>("Moder", "(Air Breath) HPThresholdMessage", "", new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.HPThresholdMessage"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8992
				}
			}));
			AirBreathCooldown = cfg.Bind<float>("Moder", "(Air Breath) Cooldown", 8f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Cooldown"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 60f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8990
				}
			}));
			AirBreathTickInterval = cfg.Bind<float>("Moder", "(Air Breath) TickInterval", 0.25f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.TickInterval"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 2f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8985
				}
			}));
			AirBreathDuration = cfg.Bind<float>("Moder", "(Air Breath) Duration", 2.5f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Duration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 10f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8982
				}
			}));
			AirBreathRange = cfg.Bind<float>("Moder", "(Air Breath) Range", 35f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Range"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(5f, 80f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8980
				}
			}));
			AirBreathAngle = cfg.Bind<float>("Moder", "(Air Breath) Angle", 30f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Angle"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 180f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8970
				}
			}));
			AirBreathDamageFrost = cfg.Bind<float>("Moder", "(Air Breath) DamageFrost", 100f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.DamageFrost"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8960
				}
			}));
			AirBreathDamageBlunt = cfg.Bind<float>("Moder", "(Air Breath) DamageBlunt", 10f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8950
				}
			}));
			AirBreathStaggerMult = cfg.Bind<float>("Moder", "(Air Breath) StaggerMult", 0.3f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.StaggerMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8945
				}
			}));
			AirBreathVFX = cfg.Bind<string>("Moder", "(Air Breath) VFX", "vfx_dragon_coldbreath", new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.VFX"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8940
				}
			}));
			AirBreathMinAltitude = cfg.Bind<float>("Moder", "(Air Breath) MinAltitude", 8f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.MinAltitude"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 30f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8930
				}
			}));
			AirBreathFurColorEnabled = cfg.Bind<bool>("Moder", "(Air Breath) FurColorEnabled", true, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.FurColorEnabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8897
				}
			}));
			AirBreathFurColor = cfg.Bind<string>("Moder", "(Air Breath) FurColor", "#1FA2FF", new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.FurColor"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8896
				}
			}));
			AirBreathFurColorIntensity = cfg.Bind<float>("Moder", "(Air Breath) FurColorIntensity", 2f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.FurColorIntensity"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 3f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8895
				}
			}));
			AirBreathFurBrightnessThreshold = cfg.Bind<float>("Moder", "(Air Breath) FurBrightnessThreshold", 0.6f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.FurBrightnessThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 0.95f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8894
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Moder", "(Divider) 1", 8894, 8890);
			GroundBreathEnabled = cfg.Bind<bool>("Moder", "(Ground Breath) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8890
				}
			}));
			GroundBreathTickInterval = cfg.Bind<float>("Moder", "(Ground Breath) TickInterval", 0.25f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.TickInterval"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 2f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8880
				}
			}));
			GroundBreathDuration = cfg.Bind<float>("Moder", "(Ground Breath) Duration", 2.5f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Duration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 10f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8875
				}
			}));
			GroundBreathRange = cfg.Bind<float>("Moder", "(Ground Breath) Range", 35f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Range"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(2f, 40f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8870
				}
			}));
			GroundBreathAngle = cfg.Bind<float>("Moder", "(Ground Breath) Angle", 30f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Angle"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 180f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8860
				}
			}));
			GroundBreathHeight = cfg.Bind<float>("Moder", "(Ground Breath) Height", 1f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Height"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8850
				}
			}));
			GroundBreathDamageFrost = cfg.Bind<float>("Moder", "(Ground Breath) DamageFrost", 100f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.DamageFrost"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8840
				}
			}));
			GroundBreathDamageBlunt = cfg.Bind<float>("Moder", "(Ground Breath) DamageBlunt", 10f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8830
				}
			}));
			GroundBreathPushForce = cfg.Bind<float>("Moder", "(Ground Breath) PushForce", 20f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.PushForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8820
				}
			}));
			GroundBreathStaggerMult = cfg.Bind<float>("Moder", "(Ground Breath) StaggerMult", 0.3f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.StaggerMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8815
				}
			}));
			ConfigSectionDivider.Insert(cfg, "Moder", "(Divider) 2", 8815, 8000);
			FearEnabled = cfg.Bind<bool>("Moder", "(Dragon Fear) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.Enabled"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 8000
				}
			}));
			FearHPThreshold = cfg.Bind<float>("Moder", "(Dragon Fear) HPThreshold", 70f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7990
				}
			}));
			FearHPThresholdMessage = cfg.Bind<string>("Moder", "(Dragon Fear) HPThresholdMessage", "", new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.HPThresholdMessage"), (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7985
				}
			}));
			FearTargetRadius = cfg.Bind<float>("Moder", "(Dragon Fear) TargetRadius", 100f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.TargetRadius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 200f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7970
				}
			}));
			FearDelay = cfg.Bind<float>("Moder", "(Dragon Fear) Delay", 0.5f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.Delay"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7960
				}
			}));
			FearImpactRadius = cfg.Bind<float>("Moder", "(Dragon Fear) ImpactRadius", 4f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.ImpactRadius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 20f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7950
				}
			}));
			FearDamageLightning = cfg.Bind<float>("Moder", "(Dragon Fear) DamageLightning", 40f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.DamageLightning"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7940
				}
			}));
			FearDamagePierce = cfg.Bind<float>("Moder", "(Dragon Fear) DamagePierce", 20f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.DamagePierce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7935
				}
			}));
			FearPushForce = cfg.Bind<float>("Moder", "(Dragon Fear) PushForce", 50f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.PushForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7930
				}
			}));
			FearStaggerMult = cfg.Bind<float>("Moder", "(Dragon Fear) StaggerMult", 1f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.StaggerMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7920
				}
			}));
			FearShockSlowPercent = cfg.Bind<float>("Moder", "(Dragon Fear) ShockSlowPercent", 80f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.ShockSlowPercent"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7910
				}
			}));
			FearShockDuration = cfg.Bind<float>("Moder", "(Dragon Fear) ShockDuration", 8f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.ShockDuration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 30f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7900
				}
			}));
			FearMeleeRangeThreshold = cfg.Bind<float>("Moder", "(Dragon Fear) MeleeRangeThreshold", 20f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.MeleeRangeThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 30f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7895
				}
			}));
			FearNoMeleeCastInterval = cfg.Bind<float>("Moder", "(Dragon Fear) NoMeleeCastInterval", 3f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.NoMeleeCastInterval"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 60f), new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Order = 7890
				}
			}));
			FearForcedTriggerMinInterval = cfg.Bind<float>("Moder", "(Dragon Fear) ForcedTriggerMinInterval", 10f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFe