Decompiled source of 0p41 Sots ItemsReworked v0.7.8

ItemsReworked.dll

Decompiled 2 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using IL.EntityStates.Seeker;
using IL.RoR2;
using ItemsReworked.CommonItems;
using ItemsReworked.LegendaryItems;
using ItemsReworked.UncommonItems;
using Microsoft.CodeAnalysis;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using R2API;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.Orbs;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("ItemsReworked")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ItemsReworked")]
[assembly: AssemblyTitle("ItemsReworked")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ItemsReworked
{
	internal static class Log
	{
		private static ManualLogSource _logSource;

		internal static void Init(ManualLogSource logSource)
		{
			_logSource = logSource;
		}

		internal static void Debug(object data)
		{
			_logSource.LogDebug(data);
		}

		internal static void Error(object data)
		{
			_logSource.LogError(data);
		}

		internal static void Fatal(object data)
		{
			_logSource.LogFatal(data);
		}

		internal static void Info(object data)
		{
			_logSource.LogInfo(data);
		}

		internal static void Message(object data)
		{
			_logSource.LogMessage(data);
		}

		internal static void Warning(object data)
		{
			_logSource.LogWarning(data);
		}
	}
	public class LuminousOrb : GenericDamageOrb, IOrbFixedUpdateBehavior
	{
		private Vector3 lastKnownTargetPosition;

		public override void Begin()
		{
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			((GenericDamageOrb)this).Begin();
			((Orb)this).duration = 0f;
			if (Object.op_Implicit((Object)(object)((Orb)this).target))
			{
				lastKnownTargetPosition = ((Component)((Orb)this).target).transform.position;
			}
		}

		public override GameObject GetOrbEffect()
		{
			return null;
		}

		public override void OnArrival()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: 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_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: 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_00cc: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)base.attacker) && Object.op_Implicit((Object)(object)((Orb)this).target))
			{
				new BlastAttack
				{
					attacker = base.attacker,
					baseDamage = base.damageValue,
					baseForce = 0f,
					bonusForce = Vector3.down * 10f,
					crit = base.isCrit,
					damageColorIndex = (DamageColorIndex)3,
					falloffModel = (FalloffModel)0,
					inflictor = null,
					position = ((Component)((Orb)this).target).transform.position,
					procChainMask = base.procChainMask,
					procCoefficient = base.procCoefficient,
					radius = 1f,
					teamIndex = TeamComponent.GetObjectTeam(base.attacker)
				}.Fire();
			}
		}

		public void FixedUpdate()
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)((Orb)this).target))
			{
				lastKnownTargetPosition = ((Component)((Orb)this).target).transform.position;
			}
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency("com.rune580.riskofoptions", "2.8.2")]
	[BepInPlugin("0p41.Sots_Items_Reworked", "Sots_Items_Reworked", "0.7.8")]
	public class MainPlugin : BaseUnityPlugin
	{
		public const string PluginGUID = "0p41.Sots_Items_Reworked";

		public const string PluginAuthor = "0p41";

		public const string PluginName = "Sots_Items_Reworked";

		public const string PluginVersion = "0.7.8";

		public void Awake()
		{
			Log.Init(((BaseUnityPlugin)this).Logger);
			ModConfig.Init(((BaseUnityPlugin)this).Config);
			if (ModConfig.ResetValues != null)
			{
				ModConfig.ResetAllValues(ModConfig.ResetValues.Value, "0.7.8");
			}
			if (ModConfig.warpedEchoChanges.Value)
			{
				WarpedEchoChanges warpedEchoChanges = new WarpedEchoChanges();
				warpedEchoChanges.Init();
			}
			if (ModConfig.chronicExpansionChanges.Value)
			{
				ChronicExpansionChanges chronicExpansionChanges = new ChronicExpansionChanges();
				chronicExpansionChanges.Init();
			}
			if (ModConfig.knockBackFinChanges.Value)
			{
				KnockbackFinChanges knockbackFinChanges = new KnockbackFinChanges();
				knockbackFinChanges.Init();
			}
			if (ModConfig.bolsteringLanternChanges.Value)
			{
				LanternChanges lanternChanges = new LanternChanges();
				lanternChanges.Init();
			}
			if (ModConfig.antlerShieldChanges.Value)
			{
				AntlersChanges antlersChanges = new AntlersChanges();
				antlersChanges.Init();
			}
			if (ModConfig.chanceDollChanges.Value)
			{
				ChanceDollChanges chanceDollChanges = new ChanceDollChanges();
				chanceDollChanges.Init();
			}
			if (ModConfig.prayerBeadsChanges.Value)
			{
				PrayerBeadsChanges prayerBeadsChanges = new PrayerBeadsChanges();
				prayerBeadsChanges.Init();
			}
			if (ModConfig.luminousShotChanges.Value)
			{
				LuminousShotChanges luminousShotChanges = new LuminousShotChanges();
				luminousShotChanges.Init();
			}
			if (ModConfig.saleStarChanges.Value)
			{
				SaleStarChanges saleStarChanges = new SaleStarChanges();
				saleStarChanges.Init();
			}
			if (ModConfig.unstableTransmitterChanges.Value)
			{
				UnstableTransmiterChanges unstableTransmiterChanges = new UnstableTransmiterChanges();
				unstableTransmiterChanges.Init();
			}
			if (ModConfig.noxiousThornChanges.Value)
			{
				NoxiousThornChanges noxiousThornChanges = new NoxiousThornChanges();
				noxiousThornChanges.Init();
			}
			if (ModConfig.warBondsChanges.Value)
			{
				WarBondsChanges warBondsChanges = new WarBondsChanges();
				warBondsChanges.Init();
			}
		}
	}
	public static class ModConfig
	{
		public static ConfigEntry<bool> ResetValues;

		public static ConfigEntry<string> lastVersion;

		public static ConfigEntry<bool> warpedEchoChanges;

		public static ConfigEntry<int> warpedEchoThreshold;

		private const int defaultEchoThreshold = 25;

		public static ConfigEntry<int> warpedEchoSplit;

		private const int defaultEchoSplit = 60;

		public static ConfigEntry<float> warpedEchoBaseDuration;

		private const float defaultEchoDuration = 4f;

		public static ConfigEntry<float> warpedEchoExtraDuration;

		private const float defaultEchoExtraDuration = 0.5f;

		public static ConfigEntry<float> warpedEchoCooldown;

		private const float defaultEchoCooldown = 10f;

		public static ConfigEntry<bool> chronicExpansionChanges;

		public static ConfigEntry<int> chronicExpansionKillPerStack;

		private const int defaultChronicKillPerStack = 5;

		public static ConfigEntry<int> chronicExpansionMaxStacks;

		private const int defaultChronicMaxStacks = 20;

		public static ConfigEntry<float> chronicExpansionBaseStackDamage;

		private const float defaultChronicBaseStackDamage = 1.25f;

		public static ConfigEntry<float> chronicExpansionExtraStackDamage;

		private const float defaultChronicExtraStackDamage = 1.25f;

		public static ConfigEntry<int> chronicExpansionEliteValue;

		private const int defaultChronicEliteValue = 5;

		public static ConfigEntry<int> chronicExpansionChampionValue;

		private const int defaultChronicChampionValue = 25;

		public static ConfigEntry<bool> knockBackFinChanges;

		public static ConfigEntry<float> knockBackFinChance;

		private const float defaultFinChance = 10f;

		public static ConfigEntry<float> knockBackFinBaseDamage;

		private const float defaultFinBaseDamage = 15f;

		public static ConfigEntry<float> knockBackFinExtraDamage;

		private const float defaultFinExtraDamage = 15f;

		public static ConfigEntry<bool> bolsteringLanternChanges;

		public static ConfigEntry<float> bolsteringLanternBaseArmor;

		private const float defaultLanternBaseArmor = 10f;

		public static ConfigEntry<float> bolsteringLanternExtraArmor;

		private const float defaultLanternExtraArmor = 5f;

		public static ConfigEntry<int> bolsteringLanternThreshold;

		private const int defaultLanternThreshold = 50;

		public static ConfigEntry<bool> antlerShieldChanges;

		public static ConfigEntry<float> antlerShieldSpeed;

		private const float defaultAntlerSpeed = 8f;

		public static ConfigEntry<float> antlerShieldShield;

		private const float defaultAntlerShield = 4f;

		public static ConfigEntry<float> antlerShieldJump;

		private const float defaultAntlerJump = 25f;

		public static ConfigEntry<bool> chanceDollChanges;

		public static ConfigEntry<float> chanceDollBaseChance;

		private const float defaultChanceDollChance = 30f;

		public static ConfigEntry<float> chanceDollExtraChance;

		private const float defaultChanceDollExtraChance = 10f;

		public static ConfigEntry<float> chanceDollCostReduction;

		private const float defaultChanceDollCostReduction = 25f;

		public static ConfigEntry<int> chanceDollTier1;

		private const int defaultChanceDollTier1 = 20;

		public static ConfigEntry<int> chanceDollTier2;

		private const int defaultChanceDollTier2 = 79;

		public static ConfigEntry<int> chanceDollTier3;

		private const int defaultChanceDollTier3 = 1;

		public static ConfigEntry<float> chanceDollBaseBossChance;

		private const float defaultChanceDollBossChance = 1f;

		public static ConfigEntry<float> chanceDollExtraBossChance;

		private const float defaultChanceDollBossExtraChance = 0.5f;

		public static ConfigEntry<bool> prayerBeadsChanges;

		public static ConfigEntry<float> prayerBeadsChance;

		private const float defaultPrayerChance = 10f;

		public static ConfigEntry<int> prayerBeadsTier2;

		private const int defaultPrayerTier2 = 40;

		public static ConfigEntry<int> prayerBeadsTier3;

		private const int defaultPrayerTier3 = 15;

		public static ConfigEntry<int> prayerBeadsBoss;

		private const int defaultPrayerBoss = 5;

		public static ConfigEntry<int> prayerBeadsVoid1;

		private const int defaultPrayerVoid1 = 10;

		public static ConfigEntry<int> prayerBeadsVoid2;

		private const int defaultPrayerVoid2 = 25;

		public static ConfigEntry<int> prayerBeadsVoid3;

		private const int defaultPrayerVoid3 = 5;

		public static ConfigEntry<bool> saleStarChanges;

		public static ConfigEntry<float> saleStarDistance;

		private const float defaultSaleStarDistance = 4f;

		public static ConfigEntry<bool> luminousShotChanges;

		public static ConfigEntry<int> luminousShotCooldown;

		private const int defaultLuminousShotCooldown = 15;

		public static ConfigEntry<float> luminousShotBaseDamage;

		private const int defaultLuminousBaseDamage = 200;

		public static ConfigEntry<int> luminousShotBaseThunder;

		private const int defaultLuminousBaseStacks = 3;

		public static ConfigEntry<int> luminousShotExtraThunder;

		private const int defaultLuminousExtraStacks = 1;

		public static ConfigEntry<bool> unstableTransmitterChanges;

		public static ConfigEntry<int> unstableTransmitterBaseDamage;

		private const int defaultUnstableTransmitterBaseDamage = 350;

		public static ConfigEntry<int> unstableTransmitterExtraDamage;

		private const int defaultUnstableTransmitterExtraDamage = 350;

		public static ConfigEntry<int> unstableTransmitterBaseCooldown;

		private const int defaultUnstableTransmitterBaseCooldown = 180;

		public static ConfigEntry<float> unstableTransmitterCooldownReduction;

		private const float defaultUnstableTransmitterCooldownReduction = 10f;

		public static ConfigEntry<int> unstableTransmitterMinimumCooldown;

		private const int defaultUnstableTransmitterMinimumCooldown = 30;

		public static ConfigEntry<bool> noxiousThornChanges;

		public static ConfigEntry<float> noxiousThornProcChance;

		private const float defaultThornProcChance = 20f;

		public static ConfigEntry<float> noxiousThornDamageMult;

		private const int defaultThornDmgMult = 60;

		public static ConfigEntry<int> noxiousThornThornPerProc;

		private const int defaultThornProjectileAmount = 1;

		public static ConfigEntry<int> noxiousThornExtraThornPerProc;

		private const int defaultThornExtraProjectileAmount = 1;

		public static ConfigEntry<int> noxiousThornBaseTargets;

		private const int defaultThornBaseTargets = 3;

		public static ConfigEntry<int> noxiousThornExtraTargets;

		private const int defaultThornExtraTargets = 2;

		public static ConfigEntry<int> noxiousThornRange;

		private const int defaultThornRange = 15;

		public static ConfigEntry<int> noxiousThornBleed;

		private const int defaultThornBleed = 3;

		public static ConfigEntry<bool> warBondsChanges;

		public static ConfigEntry<int> warBondsBaseChests;

		private const int defaultWarBondsBaseChests = 3;

		public static ConfigEntry<int> warBondsExtraChests;

		private const int defaultWarBondsExtraChests = 1;

		public static ConfigEntry<int> warBondsTier1Weight;

		private const int defaultWarBondsTier1Weight = 79;

		public static ConfigEntry<int> warBondsTier2Weight;

		private const int defaultWarBondsTier2Weight = 20;

		public static ConfigEntry<int> warBondsTier3Weight;

		private const int defaultWarBondsTier3Weight = 1;

		public static void Init(ConfigFile config)
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Expected O, but got Unknown
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: 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_00d3: Expected O, but got Unknown
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Expected O, but got Unknown
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Expected O, but got Unknown
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Expected O, but got Unknown
			//IL_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Expected O, but got Unknown
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Expected O, but got Unknown
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cf: 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_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Expected O, but got Unknown
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0201: Expected O, but got Unknown
			//IL_0235: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0245: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_025b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Expected O, but got Unknown
			//IL_0262: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Expected O, but got Unknown
			//IL_028e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0298: Expected O, but got Unknown
			//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e4: Expected O, but got Unknown
			//IL_02df: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Expected O, but got Unknown
			//IL_0317: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0323: Unknown result type (might be due to invalid IL or missing references)
			//IL_032b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0337: Expected O, but got Unknown
			//IL_0332: Unknown result type (might be due to invalid IL or missing references)
			//IL_033c: Expected O, but got Unknown
			//IL_0370: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_0380: 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_0396: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a2: Expected O, but got Unknown
			//IL_039d: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a7: Expected O, but got Unknown
			//IL_03db: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0401: Unknown result type (might be due to invalid IL or missing references)
			//IL_040d: Expected O, but got Unknown
			//IL_0408: Unknown result type (might be due to invalid IL or missing references)
			//IL_0412: Expected O, but got Unknown
			//IL_043e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0443: Unknown result type (might be due to invalid IL or missing references)
			//IL_044a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_0461: Expected O, but got Unknown
			//IL_045c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0466: Expected O, but got Unknown
			//IL_0494: Unknown result type (might be due to invalid IL or missing references)
			//IL_0499: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b7: Expected O, but got Unknown
			//IL_04b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bc: Expected O, but got Unknown
			//IL_04de: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e8: Expected O, but got Unknown
			//IL_051c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0521: Unknown result type (might be due to invalid IL or missing references)
			//IL_052c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0537: Unknown result type (might be due to invalid IL or missing references)
			//IL_0542: Unknown result type (might be due to invalid IL or missing references)
			//IL_054e: Expected O, but got Unknown
			//IL_0549: Unknown result type (might be due to invalid IL or missing references)
			//IL_0553: Expected O, but got Unknown
			//IL_0587: Unknown result type (might be due to invalid IL or missing references)
			//IL_058c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0597: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b9: Expected O, but got Unknown
			//IL_05b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05be: Expected O, but got Unknown
			//IL_05f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0602: Unknown result type (might be due to invalid IL or missing references)
			//IL_060d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0618: Unknown result type (might be due to invalid IL or missing references)
			//IL_0624: Expected O, but got Unknown
			//IL_061f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0629: Expected O, but got Unknown
			//IL_064b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0655: Expected O, but got Unknown
			//IL_0689: Unknown result type (might be due to invalid IL or missing references)
			//IL_068e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0699: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06af: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bb: Expected O, but got Unknown
			//IL_06b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c0: Expected O, but got Unknown
			//IL_06f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0704: Unknown result type (might be due to invalid IL or missing references)
			//IL_070f: Unknown result type (might be due to invalid IL or missing references)
			//IL_071a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0726: Expected O, but got Unknown
			//IL_0721: Unknown result type (might be due to invalid IL or missing references)
			//IL_072b: Expected O, but got Unknown
			//IL_0759: Unknown result type (might be due to invalid IL or missing references)
			//IL_075e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0765: Unknown result type (might be due to invalid IL or missing references)
			//IL_076d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0779: Expected O, but got Unknown
			//IL_0774: Unknown result type (might be due to invalid IL or missing references)
			//IL_077e: Expected O, but got Unknown
			//IL_07a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07aa: Expected O, but got Unknown
			//IL_07de: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0804: Unknown result type (might be due to invalid IL or missing references)
			//IL_0810: Expected O, but got Unknown
			//IL_080b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0815: Expected O, but got Unknown
			//IL_0849: Unknown result type (might be due to invalid IL or missing references)
			//IL_084e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0859: Unknown result type (might be due to invalid IL or missing references)
			//IL_0864: Unknown result type (might be due to invalid IL or missing references)
			//IL_086f: Unknown result type (might be due to invalid IL or missing references)
			//IL_087b: Expected O, but got Unknown
			//IL_0876: Unknown result type (might be due to invalid IL or missing references)
			//IL_0880: Expected O, but got Unknown
			//IL_08b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_08da: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e6: Expected O, but got Unknown
			//IL_08e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_08eb: Expected O, but got Unknown
			//IL_090d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0917: Expected O, but got Unknown
			//IL_094b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0950: Unknown result type (might be due to invalid IL or missing references)
			//IL_095b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0966: Unknown result type (might be due to invalid IL or missing references)
			//IL_0971: Unknown result type (might be due to invalid IL or missing references)
			//IL_097d: Expected O, but got Unknown
			//IL_0978: Unknown result type (might be due to invalid IL or missing references)
			//IL_0982: Expected O, but got Unknown
			//IL_09b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_09bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_09dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e8: Expected O, but got Unknown
			//IL_09e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ed: Expected O, but got Unknown
			//IL_0a21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a26: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a47: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a53: Expected O, but got Unknown
			//IL_0a4e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a58: Expected O, but got Unknown
			//IL_0a86: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a8b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a92: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa9: Expected O, but got Unknown
			//IL_0aa4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aae: Expected O, but got Unknown
			//IL_0adc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ae1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ae8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aff: Expected O, but got Unknown
			//IL_0afa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b04: Expected O, but got Unknown
			//IL_0b30: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b35: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b3c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b47: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b53: Expected O, but got Unknown
			//IL_0b4e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b58: Expected O, but got Unknown
			//IL_0b8c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bbe: Expected O, but got Unknown
			//IL_0bb9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc3: Expected O, but got Unknown
			//IL_0bf7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bfc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c07: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c12: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c29: Expected O, but got Unknown
			//IL_0c24: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c2e: Expected O, but got Unknown
			//IL_0c50: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c5a: Expected O, but got Unknown
			//IL_0c8e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c93: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ca9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cc0: Expected O, but got Unknown
			//IL_0cbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cc5: Expected O, but got Unknown
			//IL_0cf3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cf8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d16: Expected O, but got Unknown
			//IL_0d11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d1b: Expected O, but got Unknown
			//IL_0d49: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d4e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d55: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d60: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d6c: Expected O, but got Unknown
			//IL_0d67: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d71: Expected O, but got Unknown
			//IL_0d9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dc0: Expected O, but got Unknown
			//IL_0dbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dc5: Expected O, but got Unknown
			//IL_0df3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e16: Expected O, but got Unknown
			//IL_0e11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e1b: Expected O, but got Unknown
			//IL_0e49: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e4e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e55: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e60: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e6c: Expected O, but got Unknown
			//IL_0e67: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e71: Expected O, but got Unknown
			//IL_0e9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ea2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ea9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0eb4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ec0: Expected O, but got Unknown
			//IL_0ebb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ec5: Expected O, but got Unknown
			//IL_0ee7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ef1: Expected O, but got Unknown
			//IL_0f1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f24: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f2b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f33: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f3f: Expected O, but got Unknown
			//IL_0f3a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f44: Expected O, but got Unknown
			//IL_0f78: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f7d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f88: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f93: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f9e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0faa: Expected O, but got Unknown
			//IL_0fa5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0faf: Expected O, but got Unknown
			//IL_0fdb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fe0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fe7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ffb: Expected O, but got Unknown
			//IL_0ff6: Unknown result type (might be due to invalid IL or missing references)
			//IL_1000: Expected O, but got Unknown
			//IL_102c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1031: Unknown result type (might be due to invalid IL or missing references)
			//IL_1038: Unknown result type (might be due to invalid IL or missing references)
			//IL_1040: Unknown result type (might be due to invalid IL or missing references)
			//IL_104c: Expected O, but got Unknown
			//IL_1047: Unknown result type (might be due to invalid IL or missing references)
			//IL_1051: Expected O, but got Unknown
			//IL_1073: Unknown result type (might be due to invalid IL or missing references)
			//IL_107d: Expected O, but got Unknown
			//IL_10b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_10b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_10c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_10cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_10d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_10e3: Expected O, but got Unknown
			//IL_10de: Unknown result type (might be due to invalid IL or missing references)
			//IL_10e8: Expected O, but got Unknown
			//IL_110a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1114: Expected O, but got Unknown
			//IL_1148: Unknown result type (might be due to invalid IL or missing references)
			//IL_114d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1154: Unknown result type (might be due to invalid IL or missing references)
			//IL_115f: Unknown result type (might be due to invalid IL or missing references)
			//IL_116b: Expected O, but got Unknown
			//IL_1166: Unknown result type (might be due to invalid IL or missing references)
			//IL_1170: Expected O, but got Unknown
			//IL_11a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_11a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_11b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_11bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_11c7: Expected O, but got Unknown
			//IL_11c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_11cc: Expected O, but got Unknown
			//IL_1200: Unknown result type (might be due to invalid IL or missing references)
			//IL_1205: Unknown result type (might be due to invalid IL or missing references)
			//IL_120c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1217: Unknown result type (might be due to invalid IL or missing references)
			//IL_1223: Expected O, but got Unknown
			//IL_121e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1228: Expected O, but got Unknown
			//IL_125c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1261: Unknown result type (might be due to invalid IL or missing references)
			//IL_126c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1277: Unknown result type (might be due to invalid IL or missing references)
			//IL_1282: Unknown result type (might be due to invalid IL or missing references)
			//IL_128e: Expected O, but got Unknown
			//IL_1289: Unknown result type (might be due to invalid IL or missing references)
			//IL_1293: Expected O, but got Unknown
			//IL_12c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_12c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_12cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_12d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_12e4: Expected O, but got Unknown
			//IL_12df: Unknown result type (might be due to invalid IL or missing references)
			//IL_12e9: Expected O, but got Unknown
			//IL_130b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1315: Expected O, but got Unknown
			//IL_1349: Unknown result type (might be due to invalid IL or missing references)
			//IL_134e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1359: Unknown result type (might be due to invalid IL or missing references)
			//IL_1364: Unknown result type (might be due to invalid IL or missing references)
			//IL_136f: Unknown result type (might be due to invalid IL or missing references)
			//IL_137b: Expected O, but got Unknown
			//IL_1376: Unknown result type (might be due to invalid IL or missing references)
			//IL_1380: Expected O, but got Unknown
			//IL_13b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_13b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_13c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_13cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_13d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_13e3: Expected O, but got Unknown
			//IL_13de: Unknown result type (might be due to invalid IL or missing references)
			//IL_13e8: Expected O, but got Unknown
			//IL_1414: Unknown result type (might be due to invalid IL or missing references)
			//IL_1419: Unknown result type (might be due to invalid IL or missing references)
			//IL_1420: Unknown result type (might be due to invalid IL or missing references)
			//IL_1428: Unknown result type (might be due to invalid IL or missing references)
			//IL_1434: Expected O, but got Unknown
			//IL_142f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1439: Expected O, but got Unknown
			//IL_1465: Unknown result type (might be due to invalid IL or missing references)
			//IL_146a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1471: Unknown result type (might be due to invalid IL or missing references)
			//IL_1479: Unknown result type (might be due to invalid IL or missing references)
			//IL_1485: Expected O, but got Unknown
			//IL_1480: Unknown result type (might be due to invalid IL or missing references)
			//IL_148a: Expected O, but got Unknown
			//IL_14b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_14bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_14c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_14ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_14d6: Expected O, but got Unknown
			//IL_14d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_14db: Expected O, but got Unknown
			//IL_1507: Unknown result type (might be due to invalid IL or missing references)
			//IL_150c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1513: Unknown result type (might be due to invalid IL or missing references)
			//IL_151b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1527: Expected O, but got Unknown
			//IL_1522: Unknown result type (might be due to invalid IL or missing references)
			//IL_152c: Expected O, but got Unknown
			//IL_155a: Unknown result type (might be due to invalid IL or missing references)
			//IL_155f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1566: Unknown result type (might be due to invalid IL or missing references)
			//IL_156e: Unknown result type (might be due to invalid IL or missing references)
			//IL_157a: Expected O, but got Unknown
			//IL_1575: Unknown result type (might be due to invalid IL or missing references)
			//IL_157f: Expected O, but got Unknown
			//IL_15ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_15b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_15b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_15bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_15cb: Expected O, but got Unknown
			//IL_15c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_15d0: Expected O, but got Unknown
			//IL_15f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_15fc: Expected O, but got Unknown
			//IL_1628: Unknown result type (might be due to invalid IL or missing references)
			//IL_162d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1634: Unknown result type (might be due to invalid IL or missing references)
			//IL_163c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1648: Expected O, but got Unknown
			//IL_1643: Unknown result type (might be due to invalid IL or missing references)
			//IL_164d: Expected O, but got Unknown
			//IL_1679: Unknown result type (might be due to invalid IL or missing references)
			//IL_167e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1685: Unknown result type (might be due to invalid IL or missing references)
			//IL_168d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1699: Expected O, but got Unknown
			//IL_1694: Unknown result type (might be due to invalid IL or missing references)
			//IL_169e: Expected O, but got Unknown
			//IL_16cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_16d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_16d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_16e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_16ef: Expected O, but got Unknown
			//IL_16ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_16f4: Expected O, but got Unknown
			//IL_1722: Unknown result type (might be due to invalid IL or missing references)
			//IL_1727: Unknown result type (might be due to invalid IL or missing references)
			//IL_172e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1739: Unknown result type (might be due to invalid IL or missing references)
			//IL_1745: Expected O, but got Unknown
			//IL_1740: Unknown result type (might be due to invalid IL or missing references)
			//IL_174a: Expected O, but got Unknown
			//IL_1776: Unknown result type (might be due to invalid IL or missing references)
			//IL_177b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1782: Unknown result type (might be due to invalid IL or missing references)
			//IL_178d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1799: Expected O, but got Unknown
			//IL_1794: Unknown result type (might be due to invalid IL or missing references)
			//IL_179e: Expected O, but got Unknown
			if (lastVersion == null)
			{
				lastVersion = config.Bind<string>("Last Version", "Last Version", "0.0.0", "Last version played.");
			}
			ResetValues = config.Bind<bool>("General", "Restore values to default on update", true, "If you don't delete your config file the new values may not be applied properly, with this enabled when the version changes all values will be restored to their default, disabled items stay disabled.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ResetValues, true));
			warpedEchoChanges = config.Bind<bool>("Warped Echo Changes", "Enable Warped Echo Changes?", true, "Toggle Warped Echo changes.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(warpedEchoChanges, true));
			warpedEchoThreshold = config.Bind<int>("Warped Echo Changes", "Warped Echo Damage Threshold", 25, $"Minimum damage treshold for effect to trigger, in health %.\nDefault value: {25}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(warpedEchoThreshold, new IntSliderConfig
			{
				min = 0,
				max = 100,
				restartRequired = true
			}));
			warpedEchoSplit = config.Bind<int>("Warped Echo Changes", "Warped Echo Damage Split", 60, $"How the damage taken is split in upfront damage and gradual damage, this value determines the gradual damage which means higher value = less damage upfront, in %.\nDefault value: {60}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(warpedEchoSplit, new IntSliderConfig
			{
				min = 0,
				max = 100,
				restartRequired = true
			}));
			warpedEchoBaseDuration = config.Bind<float>("Warped Echo Changes", "Warped Echo Base Duration", 4f, $"Base duration for the damage to apply, in seconds.\nCan't be lower than 0.25 seconds, aka 1 tic of damage.\nDefault value: {4f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(warpedEchoBaseDuration, new StepSliderConfig
			{
				min = 0.25f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			warpedEchoExtraDuration = config.Bind<float>("Warped Echo Changes", "Warped Echo Extra Duration", 0.5f, $"Extends the duration for the damage to apply per item stack, in seconds.\nKeep it at increments of 0.25 seconds, every 0.25 seconds is equal to 1 extra tick of damage.\nDefault value: {0.5f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(warpedEchoExtraDuration, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			warpedEchoCooldown = config.Bind<float>("Warped Echo Changes", "Warped Echo Cooldown", 10f, $"Cooldown between effect activations, cooldown starts after all damage is dealt, in seconds.\nDefault value: {10f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(warpedEchoCooldown, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.1f,
				restartRequired = true
			}));
			chronicExpansionChanges = config.Bind<bool>("Chronic Expansion Changes", "Enable Chronic Expansion Changes?", true, "Toggle Chronic Expansion changes");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(chronicExpansionChanges, true));
			chronicExpansionKillPerStack = config.Bind<int>("Chronic Expansion Changes", "Chronic Expansion Kills Per Stack", 5, $"How many kills do you need to get 1 damage stack.\nDefault value: {5}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(chronicExpansionKillPerStack, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			chronicExpansionMaxStacks = config.Bind<int>("Chronic Expansion Changes", "Chronic Expansion Max Stacks", 20, $"Maximum amount of damagae stacks you can have.\nDefault value: {20}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(chronicExpansionMaxStacks, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			chronicExpansionBaseStackDamage = config.Bind<float>("Chronic Expansion Changes", "Chronic Expansion Base Damage Per Stack", 1.25f, $"How much damage each damage stack gives you, in %.\nDefault value: {1.25f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(chronicExpansionBaseStackDamage, new StepSliderConfig
			{
				min = 0.1f,
				max = 100f,
				increment = 0.05f,
				restartRequired = true
			}));
			chronicExpansionExtraStackDamage = config.Bind<float>("Chronic Expansion Changes", "Chronic Expansion Extra Damage Per Stack", 1.25f, $"How much damage each damage stack gives you per item stack, this is added to base value, in %.\nDefault value: {1.25f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(chronicExpansionExtraStackDamage, new StepSliderConfig
			{
				min = 0.1f,
				max = 100f,
				increment = 0.05f,
				restartRequired = true
			}));
			chronicExpansionEliteValue = config.Bind<int>("Chronic Expansion Changes", "Chronic Expansion Elite Kill Value", 5, $"How many kills does an Elite count as.\nDefault value {5}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(chronicExpansionEliteValue, new IntSliderConfig
			{
				min = 1,
				max = 1000,
				restartRequired = true
			}));
			chronicExpansionChampionValue = config.Bind<int>("Chronic Expansion Changes", "Chronic Expansion Champion Kill Value", 25, $"How many kills does a Champion count as.\nDefault value {25}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(chronicExpansionChampionValue, new IntSliderConfig
			{
				min = 1,
				max = 1000,
				restartRequired = true
			}));
			knockBackFinChanges = config.Bind<bool>("Knockback Fin Changes", "Enable Knockback Fin Changes?", true, "Toggle Knockback Fin changes");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(knockBackFinChanges, true));
			knockBackFinChance = config.Bind<float>("Knockback Fin Changes", "Knockback Fin Proc Chance", 10f, $"Chance for the knockback(up) to trigger, in %.\nUses the game formula of: (1f - 100f / (100f + X)) * 100f, where X is the chance * item count.\nDefault value: {10f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(knockBackFinChance, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			knockBackFinBaseDamage = config.Bind<float>("Knockback Fin Changes", "Knockback Fin Base Damage", 15f, $"How much damage you deal to airborne enemies, in %.\nDefault value: {15f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(knockBackFinBaseDamage, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			knockBackFinExtraDamage = config.Bind<float>("Knockback Fin Changes", "Knockback Fin Extra Damage", 15f, $"How much extra damage you deal to airborne enemies per item stack, added to base damage, in %.\nDefault value: {15f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(knockBackFinExtraDamage, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			bolsteringLanternChanges = config.Bind<bool>("Bolstering Lantern Changes", "Enable Bolstering Lantern Changes?", true, "Toggle Bolstering Lantern changes");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(bolsteringLanternChanges, true));
			bolsteringLanternBaseArmor = config.Bind<float>("Bolstering Lantern Changes", "Bolstering Lantern Base Damage", 10f, $"How much armor you get.\nDefault value: {10f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(bolsteringLanternBaseArmor, new StepSliderConfig
			{
				min = 0f,
				max = 1000f,
				increment = 0.25f,
				restartRequired = true
			}));
			bolsteringLanternExtraArmor = config.Bind<float>("Bolstering Lantern Changes", "Bolstering Lantern Extra Armor", 5f, $"How much armor you get per item stack.\nDefault value: {5f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(bolsteringLanternExtraArmor, new StepSliderConfig
			{
				min = 0f,
				max = 1000f,
				increment = 0.25f,
				restartRequired = true
			}));
			bolsteringLanternThreshold = config.Bind<int>("Bolstering Lantern Changes", "Bolstering Lantern Health Threshold", 50, $"Treshold for effect to trigger, in health %.\nDefault value: {50}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(bolsteringLanternThreshold, new IntSliderConfig
			{
				min = 0,
				max = 100,
				restartRequired = true
			}));
			antlerShieldChanges = config.Bind<bool>("Antler Shield Changes", "Enable Antler Shield Changes?", true, "Toggle Antler Shield changes");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(antlerShieldChanges, true));
			antlerShieldSpeed = config.Bind<float>("Antler Shield Changes", "Antler Shield Movement Speed", 8f, $"How much movement speed you get per item, in %.\nDefault value: {8f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(antlerShieldSpeed, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			antlerShieldShield = config.Bind<float>("Antler Shield Changes", "Antler Shield Movement Shield", 4f, $"How much shield you get per item stack, in %.\nDefault value: {4f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(antlerShieldShield, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			antlerShieldJump = config.Bind<float>("Antler Shield Changes", "Antler Shield Movement Jump Height", 25f, $"How much does your jump height increases by having this item, in %.\nDefault value: {25f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(antlerShieldJump, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			chanceDollChanges = config.Bind<bool>("Chance Doll Changes", "Enable Chance Doll Changes?", true, "Toggle Chance Doll changes");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(chanceDollChanges, true));
			chanceDollBaseChance = config.Bind<float>("Chance Doll Changes", "Chance Doll Base Chance", 30f, $"Base Chance to get an extra item, in %.\nDefault value: {30f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(chanceDollBaseChance, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			chanceDollExtraChance = config.Bind<float>("Chance Doll Changes", "Chance Doll Extra Chance", 10f, $"Extra Chance to get an extra item per item stack, this is added to the base chance, in %.\nDefault value: {10f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(chanceDollExtraChance, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			chanceDollCostReduction = config.Bind<float>("Chance Doll Changes", "Chance Doll Cost Ramp Up Reduction", 25f, $"Reduce cost ramp up after use, the normal value is 40% increased cost per use, the cost reduction is X% of this value, in %.\nDefault value: {25f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(chanceDollCostReduction, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			chanceDollTier1 = config.Bind<int>("Chance Doll Changes", "Chance Doll Tier 1 (White) Drop Weight", 20, $"Weight for Tier 1 items to drop from the xtra item effect.\nThis value is relative to the other drop weights, to calculate drop chance use X/(Tier1 + Tier2 + Tier3) where X is the tier you want to check the drop rate, boss item drop chance is not included in this formula.\nDefault value: {20}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(chanceDollTier1, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			chanceDollTier2 = config.Bind<int>("Chance Doll Changes", "Chance Doll Tier 2 (Green) Drop Weight", 79, $"Weight for Tier 2 items to drop from the extra item effect.\nThis value is relative to the other drop weights, to calculate drop chance use X/(Tier1 + Tier2 + Tier3) where X is the tier you want to check the drop rate, boss item drop chance is not included in this formula.\nDefault value: {79}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(chanceDollTier2, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			chanceDollTier3 = config.Bind<int>("Chance Doll Changes", "Chance Doll Tier 3 (Red) Drop Weight", 1, $"Weight for Tier 3 items to drop from the extra item effect.\nThis value is relative to the other drop weights, to calculate drop chance use X/(Tier1 + Tier2 + Tier3) where X is the tier you want to check the drop rate, boss item drop chance is not included in this formula.\nDefault value: {1}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(chanceDollTier3, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			chanceDollBaseBossChance = config.Bind<float>("Chance Doll Changes", "Chance Doll Boss Item Chance", 1f, $"Base drop chance for boss items, in %.\nDefault value: {1f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(chanceDollBaseBossChance, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			chanceDollExtraBossChance = config.Bind<float>("Chance Doll Changes", "Chance Doll Extra Boss Item Chance", 0.5f, $"Extra drop chance for boss items per item stack, in %.\nDefault value: {0.5f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(chanceDollExtraBossChance, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			prayerBeadsChanges = config.Bind<bool>("Prayer Beads Changes", "Enable Prayer Beads Changes?", true, "Toggle Prayer Beads changes");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(prayerBeadsChanges, true));
			prayerBeadsChance = config.Bind<float>("Prayer Beads Changes", "Prayer Beads Extra Item Chance", 10f, $"Base drop chance for it to transform into 2 copies of the same item, in %.\nDefault value: {10f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(prayerBeadsChance, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			prayerBeadsTier2 = config.Bind<int>("Prayer Beads Changes", "Prayer Beads Tier 2(Green) Weight", 40, $"Weight for transforming into a Tier 2 item.\nThis value is relative to the other drop weights, to calculate drop chance use X/(TierA + TierB + TierC ...) where X is this tier and the parentesis is the sum of the tiers of items that you currently have.\nDefault value: {40}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(prayerBeadsTier2, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			prayerBeadsTier3 = config.Bind<int>("Prayer Beads Changes", "Prayer Beads Tier 3(Red) Weight", 15, $"Weight for transforming into a Tier 3 item.\nThis value is relative to the other drop weights, to calculate drop chance use X/(TierA + TierB + TierC ...) where X is this tier and the parentesis is the sum of the tiers of items that you currently have.\nDefault value: {15}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(prayerBeadsTier3, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			prayerBeadsBoss = config.Bind<int>("Prayer Beads Changes", "Prayer Beads Boss Item Weight", 5, $"Weight for transforming into a Boss item.\nThis value is relative to the other drop weights, to calculate drop chance use X/(TierA + TierB + TierC ...) where X is this tier and the parentesis is the sum of the tiers of items that you currently have.\nDefault value: {5}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(prayerBeadsBoss, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			prayerBeadsVoid1 = config.Bind<int>("Prayer Beads Changes", "Prayer Beads Void Tier 1 Weight", 10, $"Weight for transforming into a Void item of Tier 1 (Whites).\nThis value is relative to the other drop weights, to calculate drop chance use X/(TierA + TierB + TierC ...) where X is this tier and the parentesis is the sum of the tiers of items that you currently have.\nDefault value: {10}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(prayerBeadsVoid1, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			prayerBeadsVoid2 = config.Bind<int>("Prayer Beads Changes", "Prayer Beads Void Tier 2 Weight", 25, $"Weight for transforming into a Void item of Tier 2 (Greens).\nThis value is relative to the other drop weights, to calculate drop chance use X/(TierA + TierB + TierC ...) where X is this tier and the parentesis is the sum of the tiers of items that you currently have.\nDefault value: {25}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(prayerBeadsVoid2, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			prayerBeadsVoid3 = config.Bind<int>("Prayer Beads Changes", "Prayer Beads Void Tier 3 Weight", 5, $"Weight for transforming into a Void item of Tier 3 (Reds).\nThis value is relative to the other drop weights, to calculate drop chance use X/(TierA + TierB + TierC ...) where X is this tier and the parentesis is the sum of the tiers of items that you currently have.\nDefault value: {5}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(prayerBeadsVoid3, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			luminousShotChanges = config.Bind<bool>("Luminous Shot Changes", "Enable Luminous Shot Changes Changes?", true, "Toggle Luminous Shot changes");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(luminousShotChanges, true));
			luminousShotCooldown = config.Bind<int>("Luminous Shot Changes", "Luminous Shot Utility Cooldown Reduction", 15, $"Utility skill cooldown reduction, in %.\nDefault value: {15}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(luminousShotCooldown, new IntSliderConfig
			{
				min = 0,
				max = 100,
				restartRequired = true
			}));
			luminousShotBaseDamage = config.Bind<float>("Luminous Shot Changes", "Luminous Shot Thunder Base Damage", 200f, $"How much damage the thunders strike will deal, relative to base damage, in %.\nDefault value: {200}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(luminousShotBaseDamage, new StepSliderConfig
			{
				min = 0f,
				max = 1000f,
				increment = 0.5f,
				restartRequired = true
			}));
			luminousShotBaseThunder = config.Bind<int>("Luminous Shot Changes", "Luminous Shot Base Thunder Strikes", 3, $"How many thunder strikes will be called down.\nDefault value: {3}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(luminousShotBaseThunder, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			luminousShotExtraThunder = config.Bind<int>("Luminous Shot Changes", "Luminous Shot Extra Thunder Strikes", 1, $"How many extra thunder strikes will be called per item stack.\nDefault value: {1}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(luminousShotExtraThunder, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			saleStarChanges = config.Bind<bool>("Sale Star Changes", "Enable Sale Star Changes?", true, "Toggle Sale Star changes.\nBy default Sale Star blue circle only appear around a chest if you are close enough to interact with it and have enough money to buy it, with this enabled it will show regardless of your money and the circle will appear from farther away.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(saleStarChanges, true));
			saleStarDistance = config.Bind<float>("Sale Star Changes", "Sale Star Trigger Distance", 4f, $"Distance at which the blue circle appears around chests.\nThis multiplies the vanilla distance, if set at 1 no changes will be made.\nDefault value: {4f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(saleStarDistance, new StepSliderConfig
			{
				min = 1f,
				max = 10f,
				increment = 0.25f,
				restartRequired = true
			}));
			unstableTransmitterChanges = config.Bind<bool>("Unstable Transmitter Changes", "Enable Unstable Transmitter Changes?", true, "Toggle Unstable Transmitter changes.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(unstableTransmitterChanges, true));
			unstableTransmitterBaseDamage = config.Bind<int>("Unstable Transmitter Changes", "Unstable Transmitter Base Damage", 350, $"Damage multiplier of base damage, in %.\nDefault value: {350}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(unstableTransmitterBaseDamage, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			unstableTransmitterExtraDamage = config.Bind<int>("Unstable Transmitter Changes", "Unstable Transmitter Extra Damage", 350, $"Extra Damage multiplier of base damage, in %.\nDefault value: {350}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(unstableTransmitterExtraDamage, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			unstableTransmitterBaseCooldown = config.Bind<int>("Unstable Transmitter Changes", "Unstable Transmitter Base Cooldown", 180, $"Base cooldown after teleporting, in seconds.\nDefault value: {180}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(unstableTransmitterBaseCooldown, new IntSliderConfig
			{
				min = 1,
				max = 1000,
				restartRequired = true
			}));
			unstableTransmitterCooldownReduction = config.Bind<float>("Unstable Transmitter Changes", "Unstable Transmitter Cooldown Reduction", 10f, $"Cooldown reduction per stack, in %.\nDefault value: {10f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(unstableTransmitterCooldownReduction, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			unstableTransmitterMinimumCooldown = config.Bind<int>("Unstable Transmitter Changes", "Unstable Transmitter Minimum Cooldown", 30, $"Minimum Cooldown for teleport effect, in seconds.\nDefault value: {30}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(unstableTransmitterMinimumCooldown, new IntSliderConfig
			{
				min = 1,
				max = 1000,
				restartRequired = true
			}));
			noxiousThornChanges = config.Bind<bool>("Noxious Thorn Changes", "Enable Noxious Thorn Changes Changes?", true, "Toggle Noxious Thorn changes");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(noxiousThornChanges, true));
			noxiousThornProcChance = config.Bind<float>("Noxious Thorn Changes", "Noxious Thorn Passive Proc Chance", 20f, $"Chance to proc the effect, in %.\nDefault value: {20f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(noxiousThornProcChance, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			noxiousThornDamageMult = config.Bind<float>("Noxious Thorn Changes", "Noxious Thorn TOTAL Damage", 60f, $"How much each TOTAL damage each thorn will deal, in %.\nDefault value: {60}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(noxiousThornDamageMult, new StepSliderConfig
			{
				min = 0f,
				max = 1000f,
				increment = 0.5f,
				restartRequired = true
			}));
			noxiousThornThornPerProc = config.Bind<int>("Noxious Thorn Changes", "Noxious Thorn Thorns Per Proc", 1, $"How many thorns you shoot at each enemy per proc.\nDefault value: {1}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(noxiousThornThornPerProc, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			noxiousThornExtraThornPerProc = config.Bind<int>("Noxious Thorn Changes", "Noxious Thorn Extra Thorns Per Proc", 1, $"How many extra thorns you shoot at each enemy per each item stack.\nDefault value: {1}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(noxiousThornExtraThornPerProc, new IntSliderConfig
			{
				min = 0,
				max = 100,
				restartRequired = true
			}));
			noxiousThornBaseTargets = config.Bind<int>("Noxious Thorn Changes", "Noxious Thorn Base Target Count", 3, $"How many enemies it will target.\nDefault value: {3}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(noxiousThornBaseTargets, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			noxiousThornExtraTargets = config.Bind<int>("Noxious Thorn Changes", "Noxious Thorn Extra Target Count", 2, $"How many extra enemies it will target per item stack.\nDefault value: {2}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(noxiousThornExtraTargets, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			noxiousThornRange = config.Bind<int>("Noxious Thorn Changes", "Noxious Thorn Range", 15, $"Range for effect to proc, in meters.\nDefault value: {15}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(noxiousThornRange, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			noxiousThornBleed = config.Bind<int>("Noxious Thorn Changes", "Noxious Thorn, Thorns to Bleed Ratio", 3, $"How many thorns you need to fire to apply 1 bleed.\nDefault value: {3}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(noxiousThornBleed, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			warBondsChanges = config.Bind<bool>("War Bonds Changes", "Enable War Bonds Changes Changes?", true, "Toggle War Bonds changes");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(warBondsChanges, true));
			warBondsBaseChests = config.Bind<int>("War Bonds Changes", "War Bonds Base Chests", 3, $"How many extra chest will spawn at the start of the next stage.\nDefault value: {3}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(warBondsBaseChests, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			warBondsExtraChests = config.Bind<int>("War Bonds Changes", "War Bonds Extra Chests", 1, $"How many extra chest per stack will spawn at the start of the next stage.\nDefault value: {1}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(warBondsExtraChests, new IntSliderConfig
			{
				min = 1,
				max = 100,
				restartRequired = true
			}));
			warBondsTier1Weight = config.Bind<int>("War Bonds Changes", "War Bonds Small Chest Weight", 79, $"Chance for a small chest to spawn, relative to other chests weights, to calculate chance use X/(small + large + legendary) where X is the weight that you want to check, small, large and legendary is their respective chests weights.\nDefault value: {79}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(warBondsTier1Weight, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			warBondsTier2Weight = config.Bind<int>("War Bonds Changes", "War Bonds Large Chest Weight", 20, $"Chance for a large chest to spawn, relative to other chests weights, to calculate chance use X/(small + large + legendary) where X is the weight that you want to check, small, large and legendary is their respective chests weights.\nDefault value: {20}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(warBondsTier2Weight, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
			warBondsTier3Weight = config.Bind<int>("War Bonds Changes", "War Bonds Legendary Chest Weight", 1, $"Chance for a legendary chest to spawn, relative to other chests weights, to calculate chance use X/(small + large + legendary) where X is the weight that you want to check, small, large and legendary is their respective chests weights.\nDefault value: {1}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(warBondsTier3Weight, new IntSliderConfig
			{
				min = 0,
				max = 1000,
				restartRequired = true
			}));
		}

		public static void ResetAllValues(bool reset, string currentVersion)
		{
			Log.Warning("Last version: " + lastVersion.Value);
			Log.Warning("Current version: " + currentVersion);
			if (reset && lastVersion.Value != currentVersion)
			{
				Log.Warning("Config Reset.");
				lastVersion.Value = currentVersion;
				warpedEchoThreshold.Value = 25;
				warpedEchoSplit.Value = 60;
				warpedEchoBaseDuration.Value = 4f;
				warpedEchoExtraDuration.Value = 0.5f;
				warpedEchoCooldown.Value = 10f;
				chronicExpansionKillPerStack.Value = 5;
				chronicExpansionBaseStackDamage.Value = 1.25f;
				chronicExpansionExtraStackDamage.Value = 1.25f;
				chronicExpansionMaxStacks.Value = 20;
				chronicExpansionEliteValue.Value = 5;
				chronicExpansionChampionValue.Value = 25;
				knockBackFinChance.Value = 10f;
				knockBackFinBaseDamage.Value = 15f;
				knockBackFinExtraDamage.Value = 15f;
				bolsteringLanternBaseArmor.Value = 10f;
				bolsteringLanternExtraArmor.Value = 5f;
				bolsteringLanternThreshold.Value = 50;
				antlerShieldSpeed.Value = 8f;
				antlerShieldShield.Value = 4f;
				antlerShieldJump.Value = 25f;
				chanceDollBaseChance.Value = 30f;
				chanceDollExtraChance.Value = 10f;
				chanceDollCostReduction.Value = 25f;
				chanceDollTier1.Value = 20;
				chanceDollTier2.Value = 79;
				chanceDollTier3.Value = 1;
				chanceDollBaseBossChance.Value = 1f;
				chanceDollExtraBossChance.Value = 0.5f;
				prayerBeadsChance.Value = 10f;
				prayerBeadsTier2.Value = 40;
				prayerBeadsTier3.Value = 15;
				prayerBeadsBoss.Value = 5;
				prayerBeadsVoid1.Value = 10;
				prayerBeadsVoid2.Value = 25;
				prayerBeadsTier3.Value = 15;
				luminousShotCooldown.Value = 15;
				luminousShotBaseDamage.Value = 200f;
				luminousShotBaseThunder.Value = 3;
				luminousShotExtraThunder.Value = 1;
				saleStarDistance.Value = 4f;
				unstableTransmitterBaseDamage.Value = 350;
				unstableTransmitterExtraDamage.Value = 350;
				unstableTransmitterBaseCooldown.Value = 180;
				unstableTransmitterCooldownReduction.Value = 10f;
				unstableTransmitterMinimumCooldown.Value = 30;
				noxiousThornProcChance.Value = 20f;
				noxiousThornThornPerProc.Value = 1;
				noxiousThornExtraThornPerProc.Value = 1;
				noxiousThornBaseTargets.Value = 3;
				noxiousThornExtraTargets.Value = 2;
				noxiousThornRange.Value = 15;
				noxiousThornBleed.Value = 3;
				warBondsBaseChests.Value = 3;
				warBondsExtraChests.Value = 1;
				warBondsTier1Weight.Value = 79;
				warBondsTier2Weight.Value = 20;
				warBondsTier3Weight.Value = 1;
			}
		}
	}
}
namespace ItemsReworked.UncommonItems
{
	internal class ChanceDollChanges
	{
		public static float normalShrineCostMult;

		private float baseChance = 30f;

		private float chancePerItem = 10f;

		private float costDecrease = 0.25f;

		private float tier1Weight = 0.2f;

		private float tier2Weight = 0.79f;

		private float tier3Weight = 0.01f;

		private float baseBossChance = 1f;

		private float extraBossChance = 0.5f;

		private void LoadConfig()
		{
			baseChance = ModConfig.chanceDollBaseChance.Value;
			chancePerItem = ModConfig.chanceDollExtraChance.Value;
			costDecrease = ModConfig.chanceDollCostReduction.Value / 100f;
			tier1Weight = ModConfig.chanceDollTier1.Value;
			tier2Weight = ModConfig.chanceDollTier2.Value;
			tier3Weight = ModConfig.chanceDollTier3.Value;
			baseBossChance = ModConfig.chanceDollBaseBossChance.Value;
			extraBossChance = ModConfig.chanceDollExtraBossChance.Value;
		}

		public void Init()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			LoadConfig();
			Log.Info("Chance Doll Changes and Config Loaded.");
			ShrineChanceBehavior.Start += new hook_Start(ShrineChanceBehavior_Start);
			ShrineChanceBehavior.AddShrineStack += (Manipulator)delegate(ILContext il)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Expected O, but got Unknown
				//IL_0077: Unknown result type (might be due to invalid IL or missing references)
				//IL_0089: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ae: Expected O, but got Unknown
				//IL_0154: Unknown result type (might be due to invalid IL or missing references)
				//IL_0186: Unknown result type (might be due to invalid IL or missing references)
				//IL_018c: Expected O, but got Unknown
				//IL_0245: Unknown result type (might be due to invalid IL or missing references)
				//IL_0257: Unknown result type (might be due to invalid IL or missing references)
				//IL_0263: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val = new ILCursor(il);
				int invIndex = -1;
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 1),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_inventory"),
					(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref invIndex)
				});
				val.Emit(OpCodes.Ldloc, invIndex);
				val.Emit(OpCodes.Ldarg_0);
				val.EmitDelegate<Action<Inventory, ShrineChanceBehavior>>((Action<Inventory, ShrineChanceBehavior>)delegate(Inventory inventory, ShrineChanceBehavior shrineChance)
				{
					if (Object.op_Implicit((Object)(object)inventory))
					{
						int itemCount2 = inventory.GetItemCount(Items.ExtraShrineItem);
						if (itemCount2 > 0 && shrineChance.costMultiplierPerPurchase > 1f && shrineChance.costMultiplierPerPurchase == normalShrineCostMult)
						{
							float costMultiplierPerPurchase = shrineChance.costMultiplierPerPurchase;
							costMultiplierPerPurchase -= 1f;
							costMultiplierPerPurchase *= 1f - costDecrease;
							costMultiplierPerPurchase += 1f;
							shrineChance.costMultiplierPerPurchase = costMultiplierPerPurchase;
						}
					}
				});
				ILCursor val2 = new ILCursor(il);
				ILLabel val8 = default(ILLabel);
				val2.GotoNext((MoveType)2, new Func<Instruction, bool>[4]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld<ShrineChanceBehavior>(x, "dropTable"),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "UnityEngine.Object", "op_Implicit"),
					(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val8)
				});
				val2.Index -= 1;
				val2.Emit(OpCodes.Ldarg_0);
				val2.EmitDelegate<Func<bool, ShrineChanceBehavior, bool>>((Func<bool, ShrineChanceBehavior, bool>)delegate(bool boolean, ShrineChanceBehavior shrine)
				{
					shrine.chanceDollWin = false;
					return false;
				});
				ILCursor val3 = new ILCursor(il);
				val3.GotoNext((MoveType)2, new Func<Instruction, bool>[5]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdfld<ShrineChanceBehavior>(x, "dropletOrigin"),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "UnityEngine.Transform", "get_forward"),
					(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 20f),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "UnityEngine.Vector3", "op_Multiply"),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.PickupDropletController", "CreatePickupDroplet")
				});
				val3.Emit(OpCodes.Ldloc, invIndex);
				val3.Emit(OpCodes.Ldarg_0);
				val3.Emit(OpCodes.Ldarg_1);
				val3.EmitDelegate<Action<Inventory, ShrineChanceBehavior, Interactor>>((Action<Inventory, ShrineChanceBehavior, Interactor>)delegate(Inventory inventory, ShrineChanceBehavior shrine, Interactor interactor)
				{
					//IL_007b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0080: Unknown result type (might be due to invalid IL or missing references)
					//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
					//IL_00de: Unknown result type (might be due to invalid IL or missing references)
					//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
					//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
					//IL_0107: Unknown result type (might be due to invalid IL or missing references)
					//IL_010c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0118: Unknown result type (might be due to invalid IL or missing references)
					//IL_0128: Unknown result type (might be due to invalid IL or missing references)
					//IL_0138: Unknown result type (might be due to invalid IL or missing references)
					//IL_0153: Unknown result type (might be due to invalid IL or missing references)
					//IL_0158: Unknown result type (might be due to invalid IL or missing references)
					//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
					//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
					//IL_015b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0163: Unknown result type (might be due to invalid IL or missing references)
					//IL_016e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0178: Unknown result type (might be due to invalid IL or missing references)
					CharacterBody component = ((Component)interactor).GetComponent<CharacterBody>();
					if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)inventory))
					{
						int itemCount = inventory.GetItemCount(Items.ExtraShrineItem);
						if (itemCount > 0 && shrine.successfulPurchaseCount == shrine.maxPurchaseCount)
						{
							if (Util.CheckRoll(baseChance + (float)(itemCount - 1) * chancePerItem, 0f, component.master))
							{
								PickupIndex none = PickupIndex.none;
								if (Util.CheckRoll(baseBossChance + extraBossChance * (float)(itemCount - 1), 0f, component.master))
								{
									none = shrine.rng.NextElementUniform<PickupIndex>(Run.instance.availableBossDropList);
								}
								else
								{
									PickupIndex val4 = shrine.rng.NextElementUniform<PickupIndex>(Run.instance.availableTier1DropList);
									PickupIndex val5 = shrine.rng.NextElementUniform<PickupIndex>(Run.instance.availableTier2DropList);
									PickupIndex val6 = shrine.rng.NextElementUniform<PickupIndex>(Run.instance.availableTier3DropList);
									WeightedSelection<PickupIndex> val7 = new WeightedSelection<PickupIndex>(8);
									val7.AddChoice(val4, tier1Weight);
									val7.AddChoice(val5, tier2Weight);
									val7.AddChoice(val6, tier3Weight);
									none = val7.Evaluate(shrine.rng.nextNormalizedFloat);
								}
								PickupDropletController.CreatePickupDroplet(none, shrine.dropletOrigin.position, shrine.dropletOrigin.forward * 15f);
								shrine.chanceDollWin = true;
							}
							else
							{
								shrine.chanceDollWin = false;
							}
						}
						else
						{
							shrine.chanceDollWin = false;
						}
					}
				});
			};
			string text = "Chance to get an extra item at Shrines of Chance.";
			string text2 = $"<style=cIsUtility>{baseChance}%</style> <style=cStack>(+{chancePerItem}% per stack)</style> chance to gain an extra item on <style=cShrine>Shrine of Chance</style> last payout, <style=cIsUtility>{baseBossChance}%</style> <style=cStack>(+{extraBossChance}% per stack)</style> chance for a <style=cIsDamage>Boss</style> item. Reduce cost ramp up of <style=cShrine>Shrines of Chance</style> by <style=cIsUtility>{costDecrease * 100f}%</style>.";
			LanguageAPI.Add("ITEM_EXTRASHRINEITEM_PICKUP", text);
			LanguageAPI.Add("ITEM_EXTRASHRINEITEM_DESC", text2);
		}

		private void ShrineChanceBehavior_Start(orig_Start orig, ShrineChanceBehavior self)
		{
			orig.Invoke(self);
			normalShrineCostMult = self.costMultiplierPerPurchase;
		}
	}
	internal class LuminousShotChanges
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

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

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

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

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

			public static Func<int, int> <>9__5_9;

			public static Manipulator <>9__5_0;

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

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

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

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

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

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

			public static Func<bool, bool> <>9__5_16;

			public static Manipulator <>9__5_1;

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

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

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

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

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

			public static Func<CharacterBody, GenericSkill, bool> <>9__5_23;

			public static Manipulator <>9__5_2;

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

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

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

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

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

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

			internal void <Init>b__5_0(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				ILCursor val = new ILCursor(il);
				int num2 = default(int);
				int num = default(int);
				val.GotoNext(new Func<Instruction, bool>[4]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 4),
					(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num2),
					(Instruction x) => ILPatternMatchingExt.MatchAdd(x),
					(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref num)
				});
				val.Remove();
				val.Index += 1;
				val.Remove();
				val.EmitDelegate<Func<int, int>>((Func<int, int>)((int itemCount) => 1));
			}

			internal bool <Init>b__5_5(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdcI4(x, 4);
			}

			internal bool <Init>b__5_6(Instruction x)
			{
				int num = default(int);
				return ILPatternMatchingExt.MatchLdloc(x, ref num);
			}

			internal bool <Init>b__5_7(Instruction x)
			{
				return ILPatternMatchingExt.MatchAdd(x);
			}

			internal bool <Init>b__5_8(Instruction x)
			{
				int num = default(int);
				return ILPatternMatchingExt.MatchStloc(x, ref num);
			}

			internal int <Init>b__5_9(int itemCount)
			{
				return 1;
			}

			internal void <Init>b__5_1(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				ILCursor val = new ILCursor(il);
				ILLabel val2 = default(ILLabel);
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[6]
				{
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<CharacterBody>(x, "get_inventory"),
					(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "IncreasePrimaryDamage"),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Inventory>(x, "GetItemCount"),
					(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchCgt(x),
					(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val2)
				});
				val.Index -= 1;
				val.EmitDelegate<Func<bool, bool>>((Func<bool, bool>)((bool boolean) => false));
			}

			internal bool <Init>b__5_10(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallOrCallvirt<CharacterBody>(x, "get_inventory");
			}

			internal bool <Init>b__5_11(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "IncreasePrimaryDamage");
			}

			internal bool <Init>b__5_12(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallOrCallvirt<Inventory>(x, "GetItemCount");
			}

			internal bool <Init>b__5_13(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdcI4(x, 0);
			}

			internal bool <Init>b__5_14(Instruction x)
			{
				return ILPatternMatchingExt.MatchCgt(x);
			}

			internal bool <Init>b__5_15(Instruction x)
			{
				ILLabel val = default(ILLabel);
				return ILPatternMatchingExt.MatchBrfalse(x, ref val);
			}

			internal bool <Init>b__5_16(bool boolean)
			{
				return false;
			}

			internal void <Init>b__5_2(ILContext il)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Expected O, but got Unknown
				//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
				//IL_011b: Unknown result type (might be due to invalid IL or missing references)
				<>c__DisplayClass5_1 CS$<>8__locals0 = new <>c__DisplayClass5_1();
				ILCursor val = new ILCursor(il);
				CS$<>8__locals0.label = null;
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[6]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<CharacterBody>(x, "get_inventory"),
					(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "IncreasePrimaryDamage"),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Inventory>(x, "GetItemCount"),
					(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchBle(x, ref CS$<>8__locals0.label)
				});
				val.Emit(OpCodes.Ldarg_0);
				val.Emit(OpCodes.Ldarg_1);
				val.EmitDelegate<Func<CharacterBody, GenericSkill, bool>>((Func<CharacterBody, GenericSkill, bool>)delegate(CharacterBody body, GenericSkill skill)
				{
					if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory))
					{
						return false;
					}
					int itemCount = body.inventory.GetItemCount(Items.IncreasePrimaryDamage);
					if (itemCount > 0 && (Object)(object)body.skillLocator.utility == (Object)(object)skill && !body.HasBuff(Buffs.IncreasePrimaryDamageBuff))
					{
						body.AddIncreasePrimaryDamageStack();
					}
					return false;
				});
				val.Emit(OpCodes.Brfalse, (object)CS$<>8__locals0.label);
			}

			internal bool <Init>b__5_17(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdarg(x, 0);
			}

			internal bool <Init>b__5_18(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallOrCallvirt<CharacterBody>(x, "get_inventory");
			}

			internal bool <Init>b__5_19(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "IncreasePrimaryDamage");
			}

			internal bool <Init>b__5_20(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallOrCallvirt<Inventory>(x, "GetItemCount");
			}

			internal bool <Init>b__5_21(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdcI4(x, 0);
			}

			internal bool <Init>b__5_23(CharacterBody body, GenericSkill skill)
			{
				if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory))
				{
					return false;
				}
				int itemCount = body.inventory.GetItemCount(Items.IncreasePrimaryDamage);
				if (itemCount > 0 && (Object)(object)body.skillLocator.utility == (Object)(object)skill && !body.HasBuff(Buffs.IncreasePrimaryDamageBuff))
				{
					body.AddIncreasePrimaryDamageStack();
				}
				return false;
			}

			internal bool <Init>b__5_24(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdarg(x, 1);
			}

			internal bool <Init>b__5_25(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdfld<DamageInfo>(x, "attacker");
			}

			internal bool <Init>b__5_26(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallOrCallvirt(x, "UnityEngine.GameObject", "GetComponent");
			}

			internal bool <Init>b__5_28(Instruction x)
			{
				int num = default(int);
				return ILPatternMatchingExt.MatchLdloc(x, ref num);
			}

			internal bool <Init>b__5_29(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallOrCallvirt<CharacterBody>(x, "get_luminousShotReady");
			}

			internal bool <Init>b__5_30(Instruction x)
			{
				ILLabel val = default(ILLabel);
				return ILPatternMatchingExt.MatchBrfalse(x, ref val);
			}
		}

		[CompilerGenerated]
		private sealed class <>c__DisplayClass5_1
		{
			public ILLabel label;

			internal bool <Init>b__22(Instruction x)
			{
				return ILPatternMatchingExt.MatchBle(x, ref label);
			}
		}

		private float baseDmgCoef = 2f;

		private int baseThunder = 3;

		private int extraThunder = 1;

		private float cooldownReduction = 0.15f;

		private void LoadConfig()
		{
			cooldownReduction = (float)ModConfig.luminousShotCooldown.Value / 100f;
			baseDmgCoef = ModConfig.luminousShotBaseDamage.Value / 100f;
			baseThunder = ModConfig.luminousShotBaseThunder.Value;
			extraThunder = ModConfig.luminousShotExtraThunder.Value;
		}

		public void Init()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Expected O, but got Unknown
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Expected O, but got Unknown
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Expected O, but got Unknown
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Expected O, but got Unknown
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Expected O, but got Unknown
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Expected O, but got Unknown
			LoadConfig();
			Log.Info("Luminous Shot Changes and Config Loaded.");
			BuffDef val = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC2/Items/IncreasePrimaryDamage/bdIncreasePrimaryDamageBuff.asset").WaitForCompletion();
			val.canStack = false;
			object obj = <>c.<>9__5_0;
			if (obj == null)
			{
				Manipulator val2 = delegate(ILContext il)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Expected O, but got Unknown
					ILCursor val11 = new ILCursor(il);
					int num6 = default(int);
					int num5 = default(int);
					val11.GotoNext(new Func<Instruction, bool>[4]
					{
						(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 4),
						(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num6),
						(Instruction x) => ILPatternMatchingExt.MatchAdd(x),
						(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref num5)
					});
					val11.Remove();
					val11.Index += 1;
					val11.Remove();
					val11.EmitDelegate<Func<int, int>>((Func<int, int>)((int itemCount) => 1));
				};
				<>c.<>9__5_0 = val2;
				obj = (object)val2;
			}
			CharacterBody.AddIncreasePrimaryDamageStack += (Manipulator)obj;
			object obj2 = <>c.<>9__5_1;
			if (obj2 == null)
			{
				Manipulator val3 = delegate(ILContext il)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Expected O, but got Unknown
					ILCursor val9 = new ILCursor(il);
					ILLabel val10 = d