Decompiled source of FalseSon Survivor Tweaks v1.0.0

FalseSonSurvivorTweaks.dll

Decompiled 4 hours ago
using System;
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 EntityStates;
using EntityStates.FalseSon;
using FalseSonSurvivorTweaks.DashChanges;
using FalseSonSurvivorTweaks.ForsakenClubChanges;
using FalseSonSurvivorTweaks.GrowthChanges;
using FalseSonSurvivorTweaks.LaserBurstChanges;
using FalseSonSurvivorTweaks.LaserChargedChanges;
using FalseSonSurvivorTweaks.LunarSpikesChanges;
using FalseSonSurvivorTweaks.LunarTamperingChanges;
using IL.EntityStates.FalseSon;
using IL.RoR2;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates.FalseSon;
using On.RoR2;
using R2API;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.Projectile;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.AddressableAssets;

[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("FalseSonSurvivorTweaks")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("FalseSonSurvivorTweaks")]
[assembly: AssemblyTitle("FalseSonSurvivorTweaks")]
[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 FalseSonSurvivorTweaks
{
	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);
		}
	}
	[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.FalseSon_Survivor_Tweaks", "FalseSon_Survivor_Tweaks", "1.0.0")]
	public class MainPlugin : BaseUnityPlugin
	{
		public const string PluginGUID = "0p41.FalseSon_Survivor_Tweaks";

		public const string PluginAuthor = "0p41";

		public const string PluginName = "FalseSon_Survivor_Tweaks";

		public const string PluginVersion = "1.0.0";

		public void Awake()
		{
			Log.Init(((BaseUnityPlugin)this).Logger);
			ModConfig.Init(((BaseUnityPlugin)this).Config);
			if (ModConfig.growthChanges.Value)
			{
				GrowthMod.Init();
			}
			if (ModConfig.forsakenClubChanges.Value)
			{
				ClubSlamMod.Init();
			}
			if (ModConfig.lunarTamperingChanges.Value)
			{
				LunarTamperingMod.Init();
			}
			if (ModConfig.lunarSpikeChanges.Value)
			{
				LunarSpikesMod.Init();
			}
			if (ModConfig.dashChanges.Value)
			{
				DashMod.Init();
			}
			if (ModConfig.laserChargedChanges.Value)
			{
				LaserChargedMod.Init();
			}
			if (ModConfig.laserBurstChanges.Value)
			{
				LaserBurstMod.Init();
			}
		}
	}
	public static class ModConfig
	{
		public static ConfigEntry<bool> ResetValues;

		public static ConfigEntry<string> lastVersion;

		public static ConfigEntry<bool> growthChanges;

		public static ConfigEntry<float> growthMaxHealthPerGrowth;

		private const float defaultGrowthMaxHealthPerGrowth = 10f;

		public static ConfigEntry<float> growthScaling;

		private const float defaultGrowthScaling = 10f;

		public static ConfigEntry<int> growthPerLevel;

		private const int defaultGrowthPerLevel = 5;

		public static ConfigEntry<bool> growthCounter;

		public static ConfigEntry<bool> lunarTamperingChanges;

		public static ConfigEntry<float> lunarTamperingHealthRegen;

		private const float defaultLunarTamperingHealthRegen = 1f;

		public static ConfigEntry<float> lunarTamperingMovementSpeed;

		private const float defaultLunarTamperingMovementSpeed = 2.5f;

		public static ConfigEntry<float> lunarTamperingAttackSpeed;

		private const float defaultLunarTamperingAttackSpeed = 2.5f;

		public static ConfigEntry<float> lunarTamperingArmor;

		private const float defaultLunarTamperingArmor = 2.5f;

		public static ConfigEntry<bool> forsakenClubChanges;

		public static ConfigEntry<bool> forsakenClubHoldFix;

		public static ConfigEntry<float> forsakenClubMinimumCharge;

		private const float defaultForsakenClubMinimumCharge = 0.6f;

		public static ConfigEntry<float> forsakenClubDamage;

		private const float defaultForsakenClubDamage = 1200f;

		public static ConfigEntry<float> forsakenClubGrowthDamage;

		private const float defaultForsakenClubGrowthDamage = 50f;

		public static ConfigEntry<float> forsakenClubProcCoefficient;

		private const float defaultForsakenClubProcCoefficient = 1f;

		public static ConfigEntry<float> forsakenClubRadius;

		private const float defaultForsakenClubRadius = 6f;

		public static ConfigEntry<float> forsakenClubGrowthRadius;

		private const float defaultForsakenClubGrowthRadius = 0.5f;

		public static ConfigEntry<bool> lunarSpikeChanges;

		public static ConfigEntry<bool> lunarSpikeAgile;

		public static ConfigEntry<float> lunarSpikeUseSpeed;

		private const float defaultLunarSpikeUseSpeed = 0.65f;

		public static ConfigEntry<float> lunarSpikeSpeed;

		private const float defaultLunarSpikeSpeed = 2.5f;

		public static ConfigEntry<bool> dashChanges;

		public static ConfigEntry<int> dashStock;

		private const int defaultDashStock = 1;

		public static ConfigEntry<bool> dashSpeedFormula;

		public static ConfigEntry<int> dashPower;

		private const int defaultDashPower = 100;

		public static ConfigEntry<float> dashSpeedTreshold;

		private const float defaultDashSpeedTreshold = 30f;

		public static ConfigEntry<float> dashBarrierGain;

		private const float defaultDashBarrierGain = 4f;

		public static ConfigEntry<float> dashBarrierGrowth;

		private const float defaultDashBarrierGrowth = 0.3f;

		public static ConfigEntry<bool> laserChargedChanges;

		public static ConfigEntry<bool> laserChargedWobbleFix;

		public static ConfigEntry<bool> laserBurstChanges;

		public static ConfigEntry<bool> laserBurstFaster;

		public static ConfigEntry<int> laserBurstDamage;

		private const int defaultLaserBurstDamage = 2200;

		public static ConfigEntry<float> laserBurstRadius;

		private const float defaultLaserBurstRadius = 6f;

		public static ConfigEntry<float> laserBurstCooldown;

		private const float defaultLaserBurstCooldown = 10f;

		public static ConfigEntry<int> laserBurstStock;

		private const int defaultLaserBurstStock = 4;

		public static ConfigEntry<int> laserBurstRestock;

		private const int defaultLaserBurstRestock = 50;

		public static ConfigEntry<bool> laserBurstKnockback;

		public static ConfigEntry<float> laserBurstKnockbackForce;

		private const float defaultLaserBurstKnockbackForce = 18f;

		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_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Expected O, but got Unknown
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: Expected O, but got Unknown
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Expected O, but got Unknown
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Expected O, but got Unknown
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Expected O, but got Unknown
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Expected O, but got Unknown
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d8: Expected O, but got Unknown
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Expected O, but got Unknown
			//IL_0238: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Unknown result type (might be due to invalid IL or missing references)
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Expected O, but got Unknown
			//IL_0265: Unknown result type (might be due to invalid IL or missing references)
			//IL_026f: Expected O, but got Unknown
			//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d5: Expected O, but got Unknown
			//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Expected O, but got Unknown
			//IL_030e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_031e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0329: Unknown result type (might be due to invalid IL or missing references)
			//IL_0334: Unknown result type (might be due to invalid IL or missing references)
			//IL_0340: Expected O, but got Unknown
			//IL_033b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0345: Expected O, but got Unknown
			//IL_0379: Unknown result type (might be due to invalid IL or missing references)
			//IL_037e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_0394: Unknown result type (might be due to invalid IL or missing references)
			//IL_039f: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Expected O, but got Unknown
			//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b0: Expected O, but got Unknown
			//IL_03d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03dc: Expected O, but got Unknown
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0408: Expected O, but got Unknown
			//IL_043c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0441: Unknown result type (might be due to invalid IL or missing references)
			//IL_044c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0457: Unknown result type (might be due to invalid IL or missing references)
			//IL_0462: Unknown result type (might be due to invalid IL or missing references)
			//IL_046e: Expected O, but got Unknown
			//IL_0469: Unknown result type (might be due to invalid IL or missing references)
			//IL_0473: Expected O, but got Unknown
			//IL_04a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d9: Expected O, but got Unknown
			//IL_04d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04de: Expected O, but got Unknown
			//IL_0512: Unknown result type (might be due to invalid IL or missing references)
			//IL_0517: Unknown result type (might be due to invalid IL or missing references)
			//IL_0522: Unknown result type (might be due to invalid IL or missing references)
			//IL_052d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0538: Unknown result type (might be due to invalid IL or missing references)
			//IL_0544: Expected O, but got Unknown
			//IL_053f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0549: Expected O, but got Unknown
			//IL_057d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0582: Unknown result type (might be due to invalid IL or missing references)
			//IL_058d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0598: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05af: Expected O, but got Unknown
			//IL_05aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b4: Expected O, but got Unknown
			//IL_05e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0603: Unknown result type (might be due to invalid IL or missing references)
			//IL_060e: Unknown result type (might be due to invalid IL or missing references)
			//IL_061a: Expected O, but got Unknown
			//IL_0615: Unknown result type (might be due to invalid IL or missing references)
			//IL_061f: Expected O, but got Unknown
			//IL_0653: Unknown result type (might be due to invalid IL or missing references)
			//IL_0658: Unknown result type (might be due to invalid IL or missing references)
			//IL_0663: Unknown result type (might be due to invalid IL or missing references)
			//IL_066e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0679: Unknown result type (might be due to invalid IL or missing references)
			//IL_0685: Expected O, but got Unknown
			//IL_0680: Unknown result type (might be due to invalid IL or missing references)
			//IL_068a: Expected O, but got Unknown
			//IL_06ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b6: Expected O, but got Unknown
			//IL_06d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e2: Expected O, but got Unknown
			//IL_0716: Unknown result type (might be due to invalid IL or missing references)
			//IL_071b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0726: Unknown result type (might be due to invalid IL or missing references)
			//IL_0731: Unknown result type (might be due to invalid IL or missing references)
			//IL_073c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0748: Expected O, but got Unknown
			//IL_0743: Unknown result type (might be due to invalid IL or missing references)
			//IL_074d: Expected O, but got Unknown
			//IL_0781: Unknown result type (might be due to invalid IL or missing references)
			//IL_0786: Unknown result type (might be due to invalid IL or missing references)
			//IL_0791: Unknown result type (might be due to invalid IL or missing references)
			//IL_079c: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b3: Expected O, but got Unknown
			//IL_07ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b8: Expected O, but got Unknown
			//IL_07da: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e4: Expected O, but got Unknown
			//IL_0810: Unknown result type (might be due to invalid IL or missing references)
			//IL_0815: Unknown result type (might be due to invalid IL or missing references)
			//IL_081c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0824: Unknown result type (might be due to invalid IL or missing references)
			//IL_0830: Expected O, but got Unknown
			//IL_082b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0835: Expected O, but got Unknown
			//IL_0857: Unknown result type (might be due to invalid IL or missing references)
			//IL_0861: Expected O, but got Unknown
			//IL_088f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0894: Unknown result type (might be due to invalid IL or missing references)
			//IL_089b: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b2: Expected O, but got Unknown
			//IL_08ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b7: Expected O, but got Unknown
			//IL_08eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0906: Unknown result type (might be due to invalid IL or missing references)
			//IL_0911: Unknown result type (might be due to invalid IL or missing references)
			//IL_091d: Expected O, but got Unknown
			//IL_0918: Unknown result type (might be due to invalid IL or missing references)
			//IL_0922: Expected O, but got Unknown
			//IL_0956: 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_097c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0988: Expected O, but got Unknown
			//IL_0983: Unknown result type (might be due to invalid IL or missing references)
			//IL_098d: Expected O, but got Unknown
			//IL_09c1: 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_09e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f3: Expected O, but got Unknown
			//IL_09ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f8: Expected O, but got Unknown
			//IL_0a1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a24: Expected O, but got Unknown
			//IL_0a46: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a50: Expected O, but got Unknown
			//IL_0a72: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7c: Expected O, but got Unknown
			//IL_0a9e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa8: 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_0b38: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b3d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b48: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b53: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b5e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b6a: Expected O, but got Unknown
			//IL_0b65: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b6f: Expected O, but got Unknown
			//IL_0ba3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bbe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd5: Expected O, but got Unknown
			//IL_0bd0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bda: Expected O, but got Unknown
			//IL_0c06: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c0b: 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_0c1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c26: Expected O, but got Unknown
			//IL_0c21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c2b: Expected O, but got Unknown
			//IL_0c59: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c5e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c65: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c6d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c79: Expected O, but got Unknown
			//IL_0c74: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c7e: Expected O, but got Unknown
			//IL_0ca0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0caa: Expected O, but got Unknown
			//IL_0cde: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ce3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cee: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cf9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d04: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d10: Expected O, but got Unknown
			//IL_0d0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d15: 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 changes stay disabled.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ResetValues, true));
			growthChanges = config.Bind<bool>("Growth Changes", "Enable Growth Changes?", true, "Toggle Growth changes.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(growthChanges, true));
			growthMaxHealthPerGrowth = config.Bind<float>("Growth Changes", "Bonus Health To Growth Ratio", 10f, $"How much bonus health you need per growth, this is the initial value and will increase the more growth you have.\nDefault value: {10f}.\nVanilla value: 15");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(growthMaxHealthPerGrowth, new StepSliderConfig
			{
				min = 0.5f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			growthScaling = config.Bind<float>("Growth Changes", "Bonus Health Scaling", 10f, $"This affect the scaling of how much bonus health you need per growth, higher values means harsher scaling.\nDefault value: {10f}.\nVanilla value: 5");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(growthScaling, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			growthPerLevel = config.Bind<int>("Growth Changes", "Level To Growth Ratio", 5, $"How many many level ups you need to gain 1 Growth, setting this to 0 will disable this behavior.\nDefault value: {5}.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(growthPerLevel, new IntSliderConfig
			{
				min = 0,
				max = 100,
				restartRequired = true
			}));
			growthCounter = config.Bind<bool>("Growth Changes", "Enable Growth Counter", true, "Enables a buff counter to keep track of your current growth.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(growthCounter, true));
			lunarTamperingChanges = config.Bind<bool>("Lunar Tampering (Passive) Changes", "Enable Lunar Tampering Changes?", true, "Toggle Lunar Tampering changes.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(lunarTamperingChanges, true));
			lunarTamperingHealthRegen = config.Bind<float>("Lunar Tampering (Passive) Changes", "Lunar Tampering Health Regen", 1f, $"How much health regeneration you gain per growth.\nDefault value: {1f}.\nVanilla value: 2.5.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(lunarTamperingHealthRegen, new StepSliderConfig
			{
				min = 0f,
				max = 10f,
				increment = 0.25f,
				restartRequired = true
			}));
			lunarTamperingMovementSpeed = config.Bind<float>("Lunar Tampering (Passive) Changes", "Lunar Tampering Movement Speed", 2.5f, $"How much movement speed you gain per growth, in %.\nDefault value: {2.5f}.\nVanilla value: 5.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(lunarTamperingMovementSpeed, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			lunarTamperingAttackSpeed = config.Bind<float>("Lunar Tampering (Passive) Changes", "Lunar Tampering Attack Speed", 2.5f, $"How much attack speed you gain per growth, in %.\nDefault value: {2.5f}.\nVanilla value: 5.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(lunarTamperingAttackSpeed, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			lunarTamperingArmor = config.Bind<float>("Lunar Tampering (Passive) Changes", "Lunar Tampering Armor", 2.5f, $"How much armor you gain per growth.\nDefault value: {2.5f}.\nVanilla value: 2.5.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(lunarTamperingArmor, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			forsakenClubChanges = config.Bind<bool>("Forsaken Club (Primary) Changes", "Enable Forsaken Club Changes?", true, "Toggle Forsaken Club changes.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(forsakenClubChanges, true));
			forsakenClubHoldFix = config.Bind<bool>("Forsaken Club (Primary) Changes", "Enable Slam Hold Changes?", true, "IMPORTANT: This is more of a bandaid fix and only works if you are using the Lunar Spikes skill, if you replace it with lunar items or mods this fix does nothing.\nIn vanilla you are only allowed to start charging the slam if you press your primary skill first and then your secondary, enabling this allow you to start it by using your secondary skill first.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(forsakenClubHoldFix, true));
			forsakenClubMinimumCharge = config.Bind<float>("Forsaken Club (Primary) Changes", "Forsaken Club Minimum Hold Time", 0.6f, $"The minimum charge needed for the slam to occur.\nDefault value: {0.6f}.\nVanilla value: 0.8.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(forsakenClubMinimumCharge, new StepSliderConfig
			{
				min = 0.1f,
				max = 1f,
				increment = 0.1f,
				restartRequired = true
			}));
			forsakenClubDamage = config.Bind<float>("Forsaken Club (Primary) Changes", "Forsaken Club Max Damage", 1200f, $"Damage multiplier at maximum charge, in %.\nDefault value: {1200f}.\nVanilla value: 1500.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(forsakenClubDamage, new StepSliderConfig
			{
				min = 25f,
				max = 10000f,
				increment = 25f,
				restartRequired = true
			}));
			forsakenClubGrowthDamage = config.Bind<float>("Forsaken Club (Primary) Changes", "Forsaken Club Damage Per Growth", 50f, $"Extra damage multiplier per each growth, this is added to the damage multiplier, in %.\nDefault value: {50f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(forsakenClubGrowthDamage, new StepSliderConfig
			{
				min = 0f,
				max = 1000f,
				increment = 25f,
				restartRequired = true
			}));
			forsakenClubProcCoefficient = config.Bind<float>("Forsaken Club (Primary) Changes", "Forsaken Club Proc Coefficient", 1f, $"Blast proc coefficient.\nDefault value: {1f}.\nVanilla value: 3.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(forsakenClubProcCoefficient, new StepSliderConfig
			{
				min = 0f,
				max = 10f,
				increment = 0.1f,
				restartRequired = true
			}));
			forsakenClubRadius = config.Bind<float>("Forsaken Club (Primary) Changes", "Forsaken Club Radius", 6f, $"Blast radius.\nDefault value: {6f}.\nVanilla value: 5.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(forsakenClubRadius, new StepSliderConfig
			{
				min = 0.5f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			forsakenClubGrowthRadius = config.Bind<float>("Forsaken Club (Primary) Changes", "Forsaken Club Radius Per Growth", 0.5f, $"Extra blast radius per growth, added to the normal blast radius.\nDefault value: {0.5f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(forsakenClubGrowthRadius, new StepSliderConfig
			{
				min = 0f,
				max = 10f,
				increment = 0.25f,
				restartRequired = true
			}));
			lunarSpikeChanges = config.Bind<bool>("Lunar Spikes (Secondary) Changes", "Enable Lunar Spikes Changes?", true, "Toggle Lunar Spikes changes.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(lunarSpikeChanges, true));
			lunarSpikeAgile = config.Bind<bool>("Lunar Spikes (Secondary) Changes", "Add Agile To Lunar Spikes?", true, "Adds Agile to Lunar spikes, allowing them to be fired while running.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(lunarSpikeAgile, true));
			lunarSpikeUseSpeed = config.Bind<float>("Lunar Spikes (Secondary) Changes", "Lunar Spike Delay", 0.65f, $"Decrease the delay between each shot of your lunar spikes, this is multiplied to the base value, lower values means faster shooting speed while higher values slower shooting speed, set to 1 to disable this behavior.\nDefault value: {0.65f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(lunarSpikeUseSpeed, new StepSliderConfig
			{
				min = 0.1f,
				max = 1f,
				increment = 0.05f,
				restartRequired = true
			}));
			lunarSpikeSpeed = config.Bind<float>("Lunar Spikes (Secondary) Changes", "Lunar Spike Projectile Speed", 2.5f, $"Increase the speed of the spike projectile, this multiplies the base speed, set to 1 to disable this behavior.\nDefault value: {2.5f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(lunarSpikeSpeed, new StepSliderConfig
			{
				min = 0.2f,
				max = 10f,
				increment = 0.2f,
				restartRequired = true
			}));
			dashChanges = config.Bind<bool>("Step of the Brothers (Utility) Changes", "Enable Step of the Brothers Changes?", true, "Toggle Step of the Brothers changes.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(dashChanges, true));
			dashStock = config.Bind<int>("Step of the Brothers (Utility) Changes", "Dash Stocks", 1, $"How many stocks the skill has by default.\nDefault value: {1}.\nVanilla value: 2.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(dashStock, new IntSliderConfig
			{
				min = 1,
				max = 10,
				restartRequired = true
			}));
			dashSpeedFormula = config.Bind<bool>("Step of the Brothers (Utility) Changes", "Enable Dash Speed Formula Changes?", true, "Toggle Dash formula changes so the dash distance is less affected by movement speed.\nOld formula was movementStat * dashPower.\nNew formula is dashPower * (1 + (movementStat/speedThreshold)).");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(dashSpeedFormula, true));
			dashPower = config.Bind<int>("Step of the Brothers (Utility) Changes", "Dash Power", 100, $"This affects the distance of the dash.\nDefault value: {100}.\nVanilla value: 15, check Formula Changes to see how is it used and why vanilla is so low in comparison.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(dashPower, new IntSliderConfig
			{
				min = 1,
				max = 1000,
				restartRequired = true
			}));
			dashSpeedTreshold = config.Bind<float>("Step of the Brothers (Utility) Changes", "Dash Speed Treshold", 30f, $"This affects the distance of the dash, check Formula Changes to see how is it used, if Formula Changes is disabled this does nothing.\nDefault value: {30f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(dashSpeedTreshold, new StepSliderConfig
			{
				min = 1f,
				max = 100f,
				increment = 0.5f,
				restartRequired = true
			}));
			dashBarrierGain = config.Bind<float>("Step of the Brothers (Utility) Changes", "Dash Barrier Gain", 4f, $"How much barrier you gain per enemy hit, based of your maximum health in %.\nDefault value: {4f}%.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(dashBarrierGain, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			dashBarrierGrowth = config.Bind<float>("Step of the Brothers (Utility) Changes", "Dash Barrier Per Growth", 0.3f, $"How much extra barrier per growth you gain on enemy hit, added to barrier gain.\nDefault value: {0.3f}%.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(dashBarrierGrowth, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.05f,
				restartRequired = true
			}));
			laserChargedChanges = config.Bind<bool>("Laser of the Father (Special) Changes", "Enable Charged Laser Changes?", true, "Toggle Charged Laser changes.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(laserChargedChanges, true));
			laserChargedWobbleFix = config.Bind<bool>("Laser of the Father (Special) Changes", "Enable Charged Laser Wobble Fix?", true, "Fixes the laser wobbling up and down when moving around, same fix from StormTweaks by pseudopulse.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(laserChargedWobbleFix, true));
			laserBurstChanges = config.Bind<bool>("Laser Burst (Special) Changes", "Enable Laser Burst Changes?", true, "Toggle Laser Burst changes.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(laserBurstChanges, true));
			laserBurstFaster = config.Bind<bool>("Laser Burst (Special) Changes", "Enable Laser Burst Faster Use?", true, "Reduces the delay between Laser Burst uses.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(laserBurstFaster, true));
			laserBurstDamage = config.Bind<int>("Laser Burst (Special) Changes", "Laser Burst Damage", 2200, $"Damage multiplier of base damage.\nDefault value: {2200}.\nVanilla value: 1000.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(laserBurstDamage, new IntSliderConfig
			{
				min = 1,
				max = 10000,
				restartRequired = true
			}));
			laserBurstRadius = config.Bind<float>("Laser Burst (Special) Changes", "Laser Burst Explosion Radius", 6f, $"Radius of explosion on impact.\nDefault value: {6f}.\nVanilla value: 3.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(laserBurstRadius, new StepSliderConfig
			{
				min = 1f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			laserBurstCooldown = config.Bind<float>("Laser Burst (Special) Changes", "Laser Burst Cooldown", 10f, $"Cooldown of Laser Burst, in seconds.\nDefault value: {10f}.\nVanilla value: 7.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(laserBurstCooldown, new StepSliderConfig
			{
				min = 1f,
				max = 100f,
				increment = 0.25f,
				restartRequired = true
			}));
			laserBurstStock = config.Bind<int>("Laser Burst (Special) Changes", "Laser Burst Stock Per Growth Ratio", 4, $"How much growth do you need to gain 1 extra stock on your Laser Burst.\nDefault value: {4}.\nVanilla value: 4.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(laserBurstStock, new IntSliderConfig
			{
				min = 1,
				max = 10,
				restartRequired = true
			}));
			laserBurstRestock = config.Bind<int>("Laser Burst (Special) Changes", "Laser Burst Spikes Restock", 50, $"How many spikes it will regenerate on hit, in %.\nDefault value: {50}.\nVanilla value: 30.");
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(laserBurstRestock, new IntSliderConfig
			{
				min = 0,
				max = 100,
				restartRequired = true
			}));
			laserBurstKnockback = config.Bind<bool>("Laser Burst (Special) Changes", "Enable Laser Burst Knockback?", true, "Adds a knockback when using Laser Burst, only applies when looking downwards.");
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(laserBurstKnockback, true));
			laserBurstKnockbackForce = config.Bind<float>("Laser Burst (Special) Changes", "Laser Burst Knockback Force", 18f, $"Knockback force applied after using Laser Burst, this is multiplied by character mass, if Laser Burst Knockback is disabled this does nothing.\nDefault value: {18f}.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(laserBurstKnockbackForce, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 0.25f,
				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;
				growthMaxHealthPerGrowth.Value = 10f;
				growthScaling.Value = 10f;
				growthPerLevel.Value = 5;
				lunarTamperingHealthRegen.Value = 1f;
				lunarTamperingMovementSpeed.Value = 2.5f;
				lunarTamperingAttackSpeed.Value = 2.5f;
				lunarTamperingArmor.Value = 2.5f;
				forsakenClubMinimumCharge.Value = 0.6f;
				forsakenClubDamage.Value = 1200f;
				forsakenClubGrowthDamage.Value = 50f;
				forsakenClubProcCoefficient.Value = 1f;
				forsakenClubRadius.Value = 6f;
				forsakenClubGrowthRadius.Value = 0.5f;
				lunarSpikeUseSpeed.Value = 0.65f;
				lunarSpikeSpeed.Value = 2.5f;
				dashStock.Value = 1;
				dashPower.Value = 100;
				dashSpeedTreshold.Value = 30f;
				dashBarrierGain.Value = 4f;
				dashBarrierGrowth.Value = 0.3f;
				laserBurstDamage.Value = 2200;
				laserBurstRadius.Value = 6f;
				laserBurstCooldown.Value = 10f;
				laserBurstKnockbackForce.Value = 18f;
				laserBurstStock.Value = 4;
				laserBurstRestock.Value = 50;
			}
		}
	}
}
namespace FalseSonSurvivorTweaks.LunarTamperingChanges
{
	internal class LunarTamperingMod
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_CalcTamperedHeartStats <0>__FalseSonController_CalcTamperedHeartStats;
		}

		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

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

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

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

			public static Func<bool, CharacterBody, bool> <>9__7_4;

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

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

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

			public static Func<bool, CharacterBody, bool> <>9__7_8;

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

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

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

			public static Func<bool, CharacterBody, bool> <>9__7_12;

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

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

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

			public static Func<bool, CharacterBody, bool> <>9__7_16;

			public static Manipulator <>9__7_0;

			internal void <LunarTamperingRecalculateStats>b__7_0(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0141: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val = new ILCursor(il);
				ILLabel val5 = default(ILLabel);
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive"),
					(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val5)
				});
				val.Index -= 1;
				val.Emit(OpCodes.Ldarg_0);
				val.EmitDelegate<Func<bool, CharacterBody, bool>>((Func<bool, CharacterBody, bool>)((bool boolean, CharacterBody body) => (boolean && Object.op_Implicit((Object)(object)body) && body.outOfCombat) ? true : false));
				ILLabel val4 = default(ILLabel);
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive"),
					(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val4)
				});
				val.Index -= 1;
				val.Emit(OpCodes.Ldarg_0);
				val.EmitDelegate<Func<bool, CharacterBody, bool>>((Func<bool, CharacterBody, bool>)((bool boolean, CharacterBody body) => (boolean && Object.op_Implicit((Object)(object)body) && body.outOfCombat) ? true : false));
				ILLabel val3 = default(ILLabel);
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive"),
					(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val3)
				});
				val.Index -= 1;
				val.Emit(OpCodes.Ldarg_0);
				val.EmitDelegate<Func<bool, CharacterBody, bool>>((Func<bool, CharacterBody, bool>)((bool boolean, CharacterBody body) => (boolean && Object.op_Implicit((Object)(object)body) && !body.outOfCombat) ? true : false));
				ILLabel val2 = default(ILLabel);
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive"),
					(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val2)
				});
				val.Index -= 1;
				val.Emit(OpCodes.Ldarg_0);
				val.EmitDelegate<Func<bool, CharacterBody, bool>>((Func<bool, CharacterBody, bool>)((bool boolean, CharacterBody body) => (boolean && Object.op_Implicit((Object)(object)body) && !body.outOfCombat) ? true : false));
			}

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

			internal bool <LunarTamperingRecalculateStats>b__7_2(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive");
			}

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

			internal bool <LunarTamperingRecalculateStats>b__7_4(bool boolean, CharacterBody body)
			{
				if (boolean && Object.op_Implicit((Object)(object)body) && body.outOfCombat)
				{
					return true;
				}
				return false;
			}

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

			internal bool <LunarTamperingRecalculateStats>b__7_6(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive");
			}

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

			internal bool <LunarTamperingRecalculateStats>b__7_8(bool boolean, CharacterBody body)
			{
				if (boolean && Object.op_Implicit((Object)(object)body) && body.outOfCombat)
				{
					return true;
				}
				return false;
			}

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

			internal bool <LunarTamperingRecalculateStats>b__7_10(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive");
			}

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

			internal bool <LunarTamperingRecalculateStats>b__7_12(bool boolean, CharacterBody body)
			{
				if (boolean && Object.op_Implicit((Object)(object)body) && !body.outOfCombat)
				{
					return true;
				}
				return false;
			}

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

			internal bool <LunarTamperingRecalculateStats>b__7_14(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive");
			}

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

			internal bool <LunarTamperingRecalculateStats>b__7_16(bool boolean, CharacterBody body)
			{
				if (boolean && Object.op_Implicit((Object)(object)body) && !body.outOfCombat)
				{
					return true;
				}
				return false;
			}
		}

		private static SkillDef passiveDef = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/FalseSon/FalseSonBodyTheTamperedHeart.asset").WaitForCompletion();

		private static float healthRegenStack = ModConfig.lunarTamperingHealthRegen.Value;

		private static float movemenSpeedStack = ModConfig.lunarTamperingMovementSpeed.Value / 100f;

		private static float attackSpeedStack = ModConfig.lunarTamperingAttackSpeed.Value / 100f;

		private static float armorStack = ModConfig.lunarTamperingArmor.Value;

		public static void Init()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			object obj = <>O.<0>__FalseSonController_CalcTamperedHeartStats;
			if (obj == null)
			{
				hook_CalcTamperedHeartStats val = FalseSonController_CalcTamperedHeartStats;
				<>O.<0>__FalseSonController_CalcTamperedHeartStats = val;
				obj = (object)val;
			}
			FalseSonController.CalcTamperedHeartStats += (hook_CalcTamperedHeartStats)obj;
			LunarTamperingRecalculateStats();
			string[] keywordTokens = new string[1] { "KEYWORD_GROWTH" };
			passiveDef.keywordTokens = keywordTokens;
			string text = $"While <style=cIsUtility>in combat</style> gain <style=cIsDamage>+{attackSpeedStack * 100f}% attack speed</style> and <style=cIsDamage>+{armorStack} armor</style> per <style=cIsHealing>Growth</style>.\nWhile <style=cIsUtility>outside of combat</style> gain <style=cIsUtility>+{movemenSpeedStack * 100f}% movement speed</style> and <style=cIsHealing>+{healthRegenStack} health regeneration</style> per <style=cIsHealing>Growth</style> instead.";
			LanguageAPI.Add(passiveDef.skillDescriptionToken, text);
			Log.Info("Lunar Tampering Changes Loaded");
		}

		private static void FalseSonController_CalcTamperedHeartStats(orig_CalcTamperedHeartStats orig, FalseSonController self)
		{
			float num = 0f;
			float num2 = 0f;
			float num3 = 0f;
			float num4 = 0f;
			float num5 = 0f;
			if ((Object)(object)self.passiveSkillSlot.skillDef == (Object)(object)passiveDef)
			{
				int extraShardFromHealth = self.extraShardFromHealth;
				num = healthRegenStack * (float)extraShardFromHealth;
				num2 = movemenSpeedStack * (float)extraShardFromHealth;
				num3 = attackSpeedStack * (float)extraShardFromHealth;
				num4 = armorStack * (float)extraShardFromHealth;
			}
			self.characterBody.ApplyTamperedHeartPassive(num, num2, num5, num4, num3);
			self.UpdateStats();
			self.oldSecondaryStock = self.secondaryStock;
		}

		private static void LunarTamperingRecalculateStats()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Expected O, but got Unknown
			object obj = <>c.<>9__7_0;
			if (obj == null)
			{
				Manipulator val = delegate(ILContext il)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Expected O, but got Unknown
					//IL_008c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0141: Unknown result type (might be due to invalid IL or missing references)
					//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
					//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
					ILCursor val2 = new ILCursor(il);
					ILLabel val6 = default(ILLabel);
					val2.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
					{
						(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
						(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive"),
						(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val6)
					});
					val2.Index -= 1;
					val2.Emit(OpCodes.Ldarg_0);
					val2.EmitDelegate<Func<bool, CharacterBody, bool>>((Func<bool, CharacterBody, bool>)((bool boolean, CharacterBody body) => (boolean && Object.op_Implicit((Object)(object)body) && body.outOfCombat) ? true : false));
					ILLabel val5 = default(ILLabel);
					val2.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
					{
						(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
						(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive"),
						(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val5)
					});
					val2.Index -= 1;
					val2.Emit(OpCodes.Ldarg_0);
					val2.EmitDelegate<Func<bool, CharacterBody, bool>>((Func<bool, CharacterBody, bool>)((bool boolean, CharacterBody body) => (boolean && Object.op_Implicit((Object)(object)body) && body.outOfCombat) ? true : false));
					ILLabel val4 = default(ILLabel);
					val2.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
					{
						(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
						(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive"),
						(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val4)
					});
					val2.Index -= 1;
					val2.Emit(OpCodes.Ldarg_0);
					val2.EmitDelegate<Func<bool, CharacterBody, bool>>((Func<bool, CharacterBody, bool>)((bool boolean, CharacterBody body) => (boolean && Object.op_Implicit((Object)(object)body) && !body.outOfCombat) ? true : false));
					ILLabel val3 = default(ILLabel);
					val2.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
					{
						(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
						(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "tamperedHeartActive"),
						(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val3)
					});
					val2.Index -= 1;
					val2.Emit(OpCodes.Ldarg_0);
					val2.EmitDelegate<Func<bool, CharacterBody, bool>>((Func<bool, CharacterBody, bool>)((bool boolean, CharacterBody body) => (boolean && Object.op_Implicit((Object)(object)body) && !body.outOfCombat) ? true : false));
				};
				<>c.<>9__7_0 = val;
				obj = (object)val;
			}
			CharacterBody.RecalculateStats += (Manipulator)obj;
		}
	}
}
namespace FalseSonSurvivorTweaks.LunarSpikesChanges
{
	internal class LunarSpikesMod
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_OnEnter <0>__LunarSpikes_OnEnter;
		}

		private static SkillDef spikesDef = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/FalseSon/FalseSonBodyLunarSpikes.asset").WaitForCompletion();

		private static SkillDef primaryDef = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/FalseSon/FalseSonBodyClub.asset").WaitForCompletion();

		private static SkillDef slamDef = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/FalseSon/FalseSonClubSlam.asset").WaitForCompletion();

		private static float lunarSpikeSpeed = ModConfig.lunarSpikeSpeed.Value;

		private static float useSpeedMult = ModConfig.lunarSpikeUseSpeed.Value;

		public static void Init()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Expected O, but got Unknown
			GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/FalseSon/LunarSpike.prefab").WaitForCompletion();
			ProjectileSimple component = val.GetComponent<ProjectileSimple>();
			component.desiredForwardSpeed *= lunarSpikeSpeed;
			if (ModConfig.lunarSpikeAgile.Value)
			{
				spikesDef.cancelSprintingOnActivation = false;
				spikesDef.keywordTokens = new string[3] { "KEYWORD_LUNARRUIN", "KEYWORD_AGILE", "KEYWORD_GROWTH" };
				string text = "<style=cIsUtility>Lunar Ruin</style>. <style=cIsUtility>Agile</style>. Shoot a Lunar Spike for <style=cIsDamage>150% damage</style>.\nGain additional Lunar Spikes through <style=cIsHealing>Growth</style>.";
				LanguageAPI.Add(spikesDef.skillDescriptionToken, text);
			}
			object obj = <>O.<0>__LunarSpikes_OnEnter;
			if (obj == null)
			{
				hook_OnEnter val2 = LunarSpikes_OnEnter;
				<>O.<0>__LunarSpikes_OnEnter = val2;
				obj = (object)val2;
			}
			LunarSpikes.OnEnter += (hook_OnEnter)obj;
			Log.Info("Lunar Spikes Changes Loaded");
		}

		private static void LunarSpikes_OnEnter(orig_OnEnter orig, LunarSpikes self)
		{
			self.baseDuration *= useSpeedMult;
			orig.Invoke(self);
		}
	}
}
namespace FalseSonSurvivorTweaks.LaserChargedChanges
{
	internal class LaserChargedMod
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_FixedUpdate <0>__LaserFatherCharged_FixedUpdate;

			public static hook_OnExit <1>__LaserFatherCharged_OnExit;
		}

		public static void Init()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Expected O, but got Unknown
			if (ModConfig.laserChargedWobbleFix.Value)
			{
				object obj = <>O.<0>__LaserFatherCharged_FixedUpdate;
				if (obj == null)
				{
					hook_FixedUpdate val = LaserFatherCharged_FixedUpdate;
					<>O.<0>__LaserFatherCharged_FixedUpdate = val;
					obj = (object)val;
				}
				LaserFatherCharged.FixedUpdate += (hook_FixedUpdate)obj;
				object obj2 = <>O.<1>__LaserFatherCharged_OnExit;
				if (obj2 == null)
				{
					hook_OnExit val2 = LaserFatherCharged_OnExit;
					<>O.<1>__LaserFatherCharged_OnExit = val2;
					obj2 = (object)val2;
				}
				LaserFatherCharged.OnExit += (hook_OnExit)obj2;
			}
			Log.Info("Laser Charged Changes Loaded");
		}

		private static void LaserFatherCharged_FixedUpdate(orig_FixedUpdate orig, LaserFatherCharged self)
		{
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			if (Object.op_Implicit((Object)(object)self.laserEffectEnd) && Object.op_Implicit((Object)(object)((Component)self.laserEffectEnd).transform.parent))
			{
				((Component)self.laserEffectEnd).transform.parent = null;
			}
			if (Object.op_Implicit((Object)(object)self.laserEffectEnd) && !Object.op_Implicit((Object)(object)self.lockedOnHurtBox))
			{
				Ray aimRay = ((BaseState)self).GetAimRay();
				RaycastHit val = default(RaycastHit);
				Vector3 position = ((!Physics.Raycast(aimRay, ref val, LaserFatherCharged.maxDistance, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask))) ? ((Ray)(ref aimRay)).GetPoint(LaserFatherCharged.maxDistance) : ((RaycastHit)(ref val)).point);
				((Component)self.laserEffectEnd).transform.position = position;
			}
		}

		private static void LaserFatherCharged_OnExit(orig_OnExit orig, LaserFatherCharged self)
		{
			orig.Invoke(self);
			if (Object.op_Implicit((Object)(object)self.laserEffectEnd))
			{
				Object.Destroy((Object)(object)((Component)self.laserEffectEnd).gameObject);
			}
		}
	}
}
namespace FalseSonSurvivorTweaks.LaserBurstChanges
{
	internal class LaserBurstMod
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_OnEnter <0>__LaserFatherBurst_OnEnter;

			public static hook_IncreaseStockCount <1>__FalseSonController_IncreaseStockCount;

			public static hook_FireBurstLaser <2>__LaserFatherBurst_FireBurstLaser;
		}

		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

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

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

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

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

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

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

			public static Func<float, float> <>9__8_7;

			public static Manipulator <>9__8_0;

			internal void <LaserFatherRestock>b__8_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 num = default(int);
				val.GotoNext(new Func<Instruction, bool>[6]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "EntityStates.FalseSon.LaserFatherBurst", "maxSecondaryStock"),
					(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.3f),
					(Instruction x) => ILPatternMatchingExt.MatchMul(x),
					(Instruction x) => ILPatternMatchingExt.MatchConvI4(x),
					(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref num)
				});
				val.Index += 3;
				val.EmitDelegate<Func<float, float>>((Func<float, float>)((float value) => laserBurstSpikeRestock));
			}

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

			internal bool <LaserFatherRestock>b__8_2(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdfld(x, "EntityStates.FalseSon.LaserFatherBurst", "maxSecondaryStock");
			}

			internal bool <LaserFatherRestock>b__8_3(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdcR4(x, 0.3f);
			}

			internal bool <LaserFatherRestock>b__8_4(Instruction x)
			{
				return ILPatternMatchingExt.MatchMul(x);
			}

			internal bool <LaserFatherRestock>b__8_5(Instruction x)
			{
				return ILPatternMatchingExt.MatchConvI4(x);
			}

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

			internal float <LaserFatherRestock>b__8_7(float value)
			{
				return laserBurstSpikeRestock;
			}
		}

		private static float burstLaserdamageCoefficient = 22f;

		private static float blastRadius = 6f;

		private static float laserBurstCooldown = 10f;

		private static int growthPerBustStock = 4;

		private static float laserBurstSpikeRestock = 0.6f;

		private static float burstDuration = 0.5f;

		private static float knockbackForce = -15f;

		public static void Init()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Expected O, but got Unknown
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Expected O, but got Unknown
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Expected O, but got Unknown
			SteppedSkillDef val = Addressables.LoadAssetAsync<SteppedSkillDef>((object)"RoR2/DLC2/FalseSon/FalseSonBodyLaserBurst.asset").WaitForCompletion();
			burstLaserdamageCoefficient = (float)ModConfig.laserBurstDamage.Value / 100f;
			blastRadius = ModConfig.laserBurstRadius.Value;
			laserBurstCooldown = ModConfig.laserBurstCooldown.Value;
			((SkillDef)val).baseRechargeInterval = laserBurstCooldown;
			laserBurstSpikeRestock = (float)ModConfig.laserBurstRestock.Value / 100f;
			if (ModConfig.laserBurstFaster.Value)
			{
				object obj = <>O.<0>__LaserFatherBurst_OnEnter;
				if (obj == null)
				{
					hook_OnEnter val2 = LaserFatherBurst_OnEnter;
					<>O.<0>__LaserFatherBurst_OnEnter = val2;
					obj = (object)val2;
				}
				LaserFatherBurst.OnEnter += (hook_OnEnter)obj;
			}
			object obj2 = <>O.<1>__FalseSonController_IncreaseStockCount;
			if (obj2 == null)
			{
				hook_IncreaseStockCount val3 = FalseSonController_IncreaseStockCount;
				<>O.<1>__FalseSonController_IncreaseStockCount = val3;
				obj2 = (object)val3;
			}
			FalseSonController.IncreaseStockCount += (hook_IncreaseStockCount)obj2;
			LaserFatherRestock();
			knockbackForce = 0f - ModConfig.laserBurstKnockbackForce.Value;
			object obj3 = <>O.<2>__LaserFatherBurst_FireBurstLaser;
			if (obj3 == null)
			{
				hook_FireBurstLaser val4 = LaserFatherBurst_FireBurstLaser;
				<>O.<2>__LaserFatherBurst_FireBurstLaser = val4;
				obj3 = (object)val4;
			}
			LaserFatherBurst.FireBurstLaser += (hook_FireBurstLaser)obj3;
			string text = $"Fire a powerful laser for <style=cIsDamage>{burstLaserdamageCoefficient * 100f}% damage</style>, refilling <style=cIsUtility>{laserBurstSpikeRestock * 100f}% Lunar Spikes</style>.\nGain additional stocks through <style=cIsHealing>Growth</style>.";
			LanguageAPI.Add(((SkillDef)val).skillDescriptionToken, text);
			Log.Info("Laser Burst Changes Loaded");
		}

		private static void LaserFatherRestock()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Expected O, but got Unknown
			object obj = <>c.<>9__8_0;
			if (obj == null)
			{
				Manipulator val = delegate(ILContext il)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Expected O, but got Unknown
					ILCursor val2 = new ILCursor(il);
					int num = default(int);
					val2.GotoNext(new Func<Instruction, bool>[6]
					{
						(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
						(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "EntityStates.FalseSon.LaserFatherBurst", "maxSecondaryStock"),
						(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.3f),
						(Instruction x) => ILPatternMatchingExt.MatchMul(x),
						(Instruction x) => ILPatternMatchingExt.MatchConvI4(x),
						(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref num)
					});
					val2.Index += 3;
					val2.EmitDelegate<Func<float, float>>((Func<float, float>)((float value) => laserBurstSpikeRestock));
				};
				<>c.<>9__8_0 = val;
				obj = (object)val;
			}
			LaserFatherBurst.OnEnter += (Manipulator)obj;
		}

		private static void LaserFatherBurst_OnEnter(orig_OnEnter orig, LaserFatherBurst self)
		{
			LaserFatherBurst.baseDuration = burstDuration;
			orig.Invoke(self);
		}

		private static void LaserFatherBurst_FireBurstLaser(orig_FireBurstLaser orig, LaserFatherBurst self)
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			LaserFatherBurst.damageCoefficient = burstLaserdamageCoefficient;
			LaserFatherBurst.blastRadius = blastRadius;
			orig.Invoke(self);
			if (ModConfig.laserBurstKnockback.Value && !((EntityState)self).characterMotor.isGrounded)
			{
				Ray aimRay = ((BaseState)self).GetAimRay();
				Vector3 direction = ((Ray)(ref aimRay)).direction;
				float num = (Object.op_Implicit((Object)(object)((EntityState)self).characterBody.characterMotor) ? ((EntityState)self).characterBody.characterMotor.mass : 1f);
				if ((double)direction.y <= -0.75)
				{
					((EntityState)self).characterBody.characterMotor.ApplyForce(knockbackForce * num * direction, false, false);
				}
			}
		}

		private static void FalseSonController_IncreaseStockCount(orig_IncreaseStockCount orig, FalseSonController self)
		{
			self.extraShardFromHealth = self.GetTotalSpikeCount();
			if (self.extraShardFromHealth != self.oldExtraShardFromHealth)
			{
				if (self.extraShardFromHealth < 0)
				{
					self.extraShardFromHealth = 0;
				}
				self.characterBody.extraSecondaryFromSkill = self.extraShardFromHealth;
				int extraSpecialFromSkill = self.extraShardFromHealth / growthPerBustStock;
				if (self.laserSpecialSkill.skillDef.skillIndex == self.laserBurstSkillIndex)
				{
					self.characterBody.extraSpecialFromSkill = extraSpecialFromSkill;
				}
				self.UpdateStats();
				self.oldExtraShardFromHealth = self.extraShardFromHealth;
			}
			self.maxSecondaryStock = self.GetMaxSecondaryStock();
		}
	}
}
namespace FalseSonSurvivorTweaks.GrowthChanges
{
	internal class GrowthMod
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_GetTotalSpikeCount <0>__FalseSonController_GetTotalSpikeCount;
		}

		private static BuffDef growthCounterBuff = ScriptableObject.CreateInstance<BuffDef>();

		private static int growthPerLevel = ModConfig.growthPerLevel.Value;

		private static float maxHealthThresholdValue = ModConfig.growthMaxHealthPerGrowth.Value;

		private static float growthScaling = ModConfig.growthScaling.Value;

		public static void Init()
		{
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//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_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Expected O, but got Unknown
			Log.Warning("growthPerLevel: " + growthPerLevel);
			Log.Warning("maxHealthThresholdValue: " + maxHealthThresholdValue);
			Log.Warning("growthScaling: " + growthScaling);
			((Object)growthCounterBuff).name = "bdGrowthCounterBuff";
			growthCounterBuff.buffColor = Color.green;
			growthCounterBuff.canStack = true;
			growthCounterBuff.isDebuff = false;
			growthCounterBuff.isCooldown = false;
			growthCounterBuff.iconSprite = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/LunarSkillReplacements/bdLunarDetonationCharge.asset").WaitForCompletion().iconSprite;
			ContentAddition.AddBuffDef(growthCounterBuff);
			object obj = <>O.<0>__FalseSonController_GetTotalSpikeCount;
			if (obj == null)
			{
				hook_GetTotalSpikeCount val = FalseSonController_GetTotalSpikeCount;
				<>O.<0>__FalseSonController_GetTotalSpikeCount = val;
				obj = (object)val;
			}
			FalseSonController.GetTotalSpikeCount += (hook_GetTotalSpikeCount)obj;
			string text = $"<style=cKeywordName>Growth</style>Enhances your skills by gaining <style=cIsHealing>bonus health</style> from items or other sources, <style=cIsHealing>maximum health</style> gained from level ups does not count towards this bonus, instead gain <style=cIsHealing>Growth</style> every <style=cIsUtility>{5}</style> levels.";
			LanguageAPI.Add("KEYWORD_GROWTH", text);
			Log.Info("Growth Changes Loaded.");
		}

		private static int FalseSonController_GetTotalSpikeCount(orig_GetTotalSpikeCount orig, FalseSonController self)
		{
			//IL_0131: 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)
			int num = 0;
			float num2 = maxHealthThresholdValue;
			float num3 = growthScaling;
			float num4 = self.characterBody.maxBonusHealth - (self.characterBody.baseMaxHealth + self.characterBody.levelMaxHealth * (float)((int)self.characterBody.level - 1));
			int num5 = 10;
			if (num2 == 0f && num3 == 0f)
			{
				Log.Error("Growth Math Safety Check Triggered.");
				num = (int)num4;
			}
			else
			{
				while (num4 >= num2)
				{
					num4 -= num2;
					if (num4 < 0f)
					{
						break;
					}
					num++;
					if (num + 4 > num5)
					{
						num5 += 10;
						num3 = growthScaling + growthScaling * (float)(num / 10);
					}
					num2 = maxHealthThresholdValue + num3 * (float)num;
				}
			}
			int num6 = (int)self.characterBody.level - 1;
			int num7 = 0;
			if (growthPerLevel > 0)
			{
				num7 = num6 / growthPerLevel;
			}
			if (ModConfig.growthCounter.Value)
			{
				if (self.characterBody.HasBuff(growthCounterBuff))
				{
					self.characterBody.SetBuffCount(growthCounterBuff.buffIndex, num + num7);
				}
				else if (num + num7 > 0)
				{
					self.characterBody.AddBuff(growthCounterBuff);
					self.characterBody.SetBuffCount(growthCounterBuff.buffIndex, num + num7);
				}
			}
			return num + num7;
		}
	}
}
namespace FalseSonSurvivorTweaks.ForsakenClubChanges
{
	internal class ClubSlamMod
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_OnEnter <0>__LunarSpikes_OnEnter;

			public static hook_FixedUpdate <1>__LunarSpikes_FixedUpdate;

			public static hook_OnExit <2>__LunarSpikes_OnExit;

			public static hook_OnEnter <3>__ClubForsaken_OnEnter;

			public static hook_OnEnter <4>__ClubForsaken2_OnEnter;

			public static hook_OnEnter <5>__ClubSwing3_OnEnter;

			public static hook_FixedUpdate <6>__ClubSwing3_FixedUpdate;

			public static hook_DetonateAuthority <7>__ClubGroundSlam_DetonateAuthority;

			public static hook_InitializeBlastAttackAsCharged <8>__ChargedClubSwing_InitializeBlastAttackAsCharged;
		}

		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

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

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

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

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

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

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

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

			public static Func<EntityState, bool> <>9__12_8;

			public static Manipulator <>9__12_0;

			internal void <CLubSwingButtonDownFix>b__12_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);
				ILLabel val3 = default(ILLabel);
				ILLabel val2 = default(ILLabel);
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[7]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val3),
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "EntityStates.EntityState", "get_inputBank"),
					(Instruction x) => ILPatternMatchingExt.MatchLdflda(x, "RoR2.InputBankTest", "skill2"),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.InputBankTest/ButtonState", "get_justPressed"),
					(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val2)
				});
				val.Index -= 4;
				val.RemoveRange(3);
				val.EmitDelegate<Func<EntityState, bool>>((Func<EntityState, bool>)((EntityState state) => state.inputBank.skill2.down ? true : false));
			}

			internal bool <CLubSwingButtonDownFix>b__12_1(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdloc(x, 0);
			}

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

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

			internal bool <CLubSwingButtonDownFix>b__12_4(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallOrCallvirt(x, "EntityStates.EntityState", "get_inputBank");
			}

			internal bool <CLubSwingButtonDownFix>b__12_5(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdflda(x, "RoR2.InputBankTest", "skill2");
			}

			internal bool <CLubSwingButtonDownFix>b__12_6(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.InputBankTest/ButtonState", "get_justPressed");
			}

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

			internal bool <CLubSwingButtonDownFix>b__12_8(EntityState state)
			{
				if (state.inputBank.skill2.down)
				{
					return true;
				}
				return false;
			}
		}

		private static float slamDamageGrowthScaling = ModConfig.forsakenClubGrowthDamage.Value / 100f;

		private static float slamRadiusGrowthScaling = ModConfig.forsakenClubGrowthRadius.Value;

		private static float damageCoefficient = ModConfig.forsakenClubDamage.Value / 100f;

		private static float blastProcCoefficient = ModConfig.forsakenClubProcCoefficient.Value;

		private static float blastRadius = ModConfig.forsakenClubRadius.Value;

		private static float blastForce = 600f;

		private static Vector3 blastBonusForce = new Vector3(1000f, 1000f, 1000f);

		private static float minChargeSlam = ModConfig.forsakenClubMinimumCharge.Value;

		private static GameObject clubSlamClone = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/FalseSon/FalseSonGroundSlam.prefab").WaitForCompletion(), "0p41_scalableGroundSlam");

		private static SkillDef primaryDef = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/FalseSon/FalseSonBodyClub.asset").WaitForCompletion();

		private static SkillDef slamDef = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/FalseSon/FalseSonClubSlam.asset").WaitForCompletion();

		public static void Init()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: 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_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Expected O, but got Unknown
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Expected O, but got Unknown
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Expected O, but got Unknown
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Expected O, but got Unknown
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0188: Expected O, but got Unknown
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Expected O, but got Unknown
			//IL_019e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Expected O, but got Unknown
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Expected O, but got Unknown
			//IL_01e0: 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_01eb: Expected O, but got Unknown
			SkillDef val = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/FalseSon/FalseSonBodyClub.asset").WaitForCompletion();
			val.keywordTokens = new string[1] { "KEYWORD_GROWTH" };
			string text = $"Swing at nearby enemies for <style=cIsDamage>{300}% damage</style>. Hold the primary and secondary buttons to charge a slam for <style=cIsDamage>{damageCoefficient * 100f}% damage</style>.\nIncrease slam damage and range through <style=cIsHealing>Growth</style>.";
			LanguageAPI.Add(val.skillDescriptionToken, text);
			ParticleSystem[] componentsInChildren = ((Component)clubSlamClone.transform).GetComponentsInChildren<ParticleSystem>();
			ParticleSystem[] array = componentsInChildren;
			foreach (ParticleSystem val2 in array)
			{
				MainModule main = val2.main;
				((MainModule)(ref main)).scalingMode = (ParticleSystemScalingMode)0;
				((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)0;
			}
			ContentAddition.AddEffect(clubSlamClone);
			if (ModConfig.forsakenClubHoldFix.Value)
			{
				object obj = <>O.<0>__LunarSpikes_OnEnter;
				if (obj == null)
				{
					hook_OnEnter val3 = LunarSpikes_OnEnter;
					<>O.<0>__LunarSpikes_OnEnter = val3;
					obj = (object)val3;
				}
				LunarSpikes.OnEnter += (hook_OnEnter)obj;
				object obj2 = <>O.<1>__LunarSpikes_FixedUpdate;
				if (obj2 == null)
				{
					hook_FixedUpdate val4 = LunarSpikes_FixedUpdate;
					<>O.<1>__LunarSpikes_FixedUpdate = val4;
					obj2 = (object)val4;
				}
				LunarSpikes.FixedUpdate += (hook_FixedUpdate)obj2;
				object obj3 = <>O.<2>__LunarSpikes_OnExit;
				if (obj3 == null)
				{
					hook_OnExit val5 = LunarSpikes_OnExit;
					<>O.<2>__LunarSpikes_OnExit = val5;
					obj3 = (object)val5;
				}
				LunarSpikes.OnExit += (hook_OnExit)obj3;
			}
			CLubSwingButtonDownFix();
			object obj4 = <>O.<3>__ClubForsaken_OnEnter;
			if (obj4 == null)
			{
				hook_OnEnter val6 = ClubForsaken_OnEnter;
				<>O.<3>__ClubForsaken_OnEnter = val6;
				obj4 = (object)val6;
			}
			ClubForsaken.OnEnter += (hook_OnEnter)obj4;
			object obj5 = <>O.<4>__ClubForsaken2_OnEnter;
			if (obj5 == null)
			{
				hook_OnEnter val7 = ClubForsaken2_OnEnter;
				<>O.<4>__ClubForsaken2_OnEnter = val7;
				obj5 = (object)val7;
			}
			ClubForsaken2.OnEnter += (hook_OnEnter)obj5;
			object obj6 = <>O.<5>__ClubSwing3_OnEnter;
			if (obj6 == null)
			{
				hook_OnEnter val8 = ClubSwing3_OnEnter;
				<>O.<5>__ClubSwing3_OnEnter = val8;
				obj6 = (object)val8;
			}
			ClubSwing3.OnEnter += (hook_OnEnter)obj6;
			object obj7 = <>O.<6>__ClubSwing3_FixedUpdate;
			if (obj7 == null)
			{
				hook_FixedUpdate val9 = ClubSwing3_FixedUpdate;
				<>O.<6>__ClubSwing3_FixedUpdate = val9;
				obj7 = (object)val9;
			}
			ClubSwing3.FixedUpdate += (hook_FixedUpdate)obj7;
			object obj8 = <>O.<7>__ClubGroundSlam_DetonateAuthority;
			if (obj8 == null)
			{
				hook_DetonateAuthority val10 = ClubGroundSlam_DetonateAuthority;
				<>O.<7>__ClubGroundSlam_DetonateAuthority = val10;
				obj8 = (object)val10;
			}
			ClubGroundSlam.DetonateAuthority += (hook_DetonateAuthority)obj8;
			object obj9 = <>O.<8>__ChargedClubSwing_InitializeBlastAttackAsCharged;
			if (obj9 == null)
			{
				hook_InitializeBlastAttackAsCharged val11 = ChargedClubSwing_InitializeBlastAttackAsCharged;
				<>O.<8>__ChargedClubSwing_InitializeBlastAttackAsCharged = val11;
				obj9 = (object)val11;
			}
			ChargedClubSwing.InitializeBlastAttackAsCharged += (hook_InitializeBlastAttackAsCharged)obj9;
			Log.Warning("Club Slam Changes Loaded");
		}

		private static void CLubSwingButtonDownFix()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Expected O, but got Unknown
			object obj = <>c.<>9__12_0;
			if (obj == null)
			{
				Manipulator val = delegate(ILContext il)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Expected O, but got Unknown
					ILCursor val2 = new ILCursor(il);
					ILLabel val4 = default(ILLabel);
					ILLabel val3 = default(ILLabel);
					val2.GotoNext((MoveType)2, new Func<Instruction, bool>[7]
					{
						(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 0),
						(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val4),
						(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
						(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "EntityStates.EntityState", "get_inputBank"),
						(Instruction x) => ILPatternMatchingExt.MatchLdflda(x, "RoR2.InputBankTest", "skill2"),
						(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.InputBankTest/ButtonState", "get_justPressed"),
						(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val3)
					});
					val2.Index -= 4;
					val2.RemoveRange(3);
					val2.EmitDelegate<Func<EntityState, bool>>((Func<EntityState, bool>)((EntityState state) => state.inputBank.skill2.down ? true : false));
				};
				<>c.<>9__12_0 = val;
				obj = (object)val;
			}
			ClubSwing.FixedUpdate += (Manipulator)obj;
		}

		private static void LunarSpikes_OnEnter(orig_OnEnter orig, LunarSpikes self)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)((EntityState)self).skillLocator.primary.skillDef == (Object)(object)primaryDef)
			{
				((EntityState)self).skillLocator.primary.SetSkillOverride((object)((EntityState)self).characterBody, slamDef, SkillStateOverrideData.priority);
			}
			orig.Invoke(self);
		}

		private static void LunarSpikes_FixedUpdate(orig_FixedUpdate orig, LunarSpikes self)
		{
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			if (!((EntityState)self).inputBank.skill2.down && (Object)(object)((EntityState)self).skillLocator.primary.skillDef == (Object)(object)slamDef)
			{
				((EntityState)self).skillLocator.primary.UnsetSkillOverride((object)((EntityState)self).characterBody, slamDef, SkillStateOverrideData.priority);
			}
			orig.Invoke(self);
		}

		private static void LunarSpikes_OnExit(orig_OnExit orig, LunarSpikes self)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)((EntityState)self).skillLocator.primary.skillDef == (Object)(object)slamDef)
			{
				((EntityState)self).skillLocator.primary.UnsetSkillOverride((object)((EntityState)self).characterBody, slamDef, SkillStateOverrideData.priority);
			}
			orig.Invoke(self);
		}

		private static void ClubForsaken_OnEnter(orig_OnEnter orig, ClubForsaken self)
		{
			ClubForsaken.minChargeForChargedAttack = minChargeSlam;
			orig.Invoke(self);
		}

		private static void ClubForsaken2_OnEnter(orig_OnEnter orig, ClubForsaken2 self)
		{
			ClubForsaken2.minChargeForChargedAttack = minChargeSlam;
			orig.Invoke(self);
		}

		private static void ClubSwing3_OnEnter(orig_OnEnter orig, ClubSwing3 self)
		{
			self.minChargeToChargeAttack = minChargeSlam;
			orig.Invoke(self);
		}

		private static void ClubSwing3_FixedUpdate(orig_FixedUpdate orig, ClubSwing3 self)
		{
			self.minChargeToChargeAttack = minChargeSlam;
			orig.Invoke(self);
		}

		private static Result ClubGroundSlam_DetonateAuthority(orig_DetonateAuthority orig, ClubGroundSlam self)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: 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_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: 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_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Expected O, but got Unknown
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: 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_011d: 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_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: 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_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			int num = 0;
			FalseSonController val = default(FalseSonController);
			if (((Component)((EntityState)self).characterBody).TryGetComponent<FalseSonController>(ref val))
			{
				num = val.extraShardFromHealth;
			}
			Vector3 position = ((Component)((BaseState)self).FindModelChild("ClubExplosionPoint")).transform.position;
			Vector3 footPosition = ((EntityState)self).characterBody.footPosition;
			Vector3 origin = footPosition + (position - footPosition) * ClubGroundSlam.normalizedVFXPositionBetweenFootAndClub;
			Vector3 position2 = footPosition + (position - footPosition) * ClubGroundSlam.normalizedBlastPositionBetweenFootAndClub;
			EffectManager.SpawnEffect(clubSlamClone, new EffectData
			{
				origin = origin,
				scale = (blastRadius + (float)num * slamRadiusGrowthScaling) * (self.charge + 1.25f + self.timeInAir * 1.75f) / 10f
			}, true);
			return new BlastAttack
			{
				attacker = ((EntityState)self).gameObject,
				baseDamage = ((BaseState)self).damageStat * ((damageCoefficient + (float)num * slamDamageGrowthScaling) * self.charge),
				baseForce = blastForce,
				bonusForce = blastBonusForce,
				crit = ((BaseState)self).RollCrit(),
				falloffModel = (FalloffModel)0,
				procCoefficient = blastProcCoefficient,
				radius = (blastRadius + (float)num * slamRadiusGrowthScaling) * (self.charge + 1.25f + self.timeInAir * 1.75f),
				position = position2,
				attackerFiltering = (AttackerFiltering)2,
				impactEffect = EffectCatalog.FindEffectIndexFromPrefab(ClubGroundSlam.blastImpactEffectPrefab),
				teamIndex = ((EntityState)self).teamComponent.teamIndex
			}.Fire();
		}

		private static void ChargedClubSwing_InitializeBlastAttackAsCharged(orig_InitializeBlastAttackAsCharged orig, ChargedClubSwing self, ref BlastAttack blast)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Expected O, but got Unknown
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			int num = 0;
			FalseSonController val = default(FalseSonController);
			if (((Component)((EntityState)self).characterBody).TryGetComponent<FalseSonController>(ref val))
			{
				num = val.extraShardFromHealth;
			}
			Vector3 position = ((Component)((BaseState)self).FindModelChild("ClubExplosionPoint")).transform.position;
			EffectManager.SpawnEffect(clubSlamClone, new EffectData
			{
				origin = position,
				scale = (blastRadius + (float)num * slamRadiusGrowthScaling) * (self.charge + 1.25f) / 10f
			}, true);
			blast.attacker = ((EntityState)self).gameObject;
			blast.baseDamage = ((BaseState)self).damageStat * ((damageCoefficient + (float)num * slamDamageGrowthScaling) * self.charge);
			blast.baseForce = blastForce;
			blast.bonusForce = blastBonusForce;
			blast.crit = ((BaseState)self).RollCrit();
			blast.falloffModel = (FalloffModel)0;
			blast.procCoefficient = blastProcCoefficient;
			blast.radius = (blastRadius + (float)num * slamRadiusGrowthScaling) * (self.charge + 1.25f);
			blast.position = position;
			blast.attackerFiltering = (AttackerFiltering)2;
			blast.impactEffect = EffectCatalog.FindEffectIndexFromPrefab(ClubGroundSlam.blastImpactEffectPrefab);
			blast.teamIndex = ((EntityState)self).teamComponent.teamIndex;
		}
	}
}
namespace FalseSonSurvivorTweaks.DashChanges
{
	internal class DashMod
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_OnEnter <0>__StepBrothers_OnEnter;
		}

		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

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

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

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

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

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

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

			public static Action<StepBrothers> <>9__8_7;

			public static Manipulator <>9__8_0;

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

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

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

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

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

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

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

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

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

			public static Func<Vector3, float, float, Vector3> <>9__9_10;

			public static Manipulator <>9__9_0;

			internal void <GainBarrier>b__8_0(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val = new ILCursor(il);
				val.GotoNext((MoveType)2, new Func<Instruction, bool>[6]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "EntityStates.FalseSon.StepBrothers", "hitPauseDuration"),
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "EntityStates.BaseState", "attackSpeedStat"),
					(Instruction x) => ILPatternMatchingExt.MatchDiv(x),
					(Instruction x) => ILPatternMatchingExt.MatchStfld(x, "EntityStates.FalseSon.StepBrothers", "hitPauseTimer")
				});
				val.Emit(OpCodes.Ldarg_0);
				val.EmitDelegate<Action<StepBrothers>>((Action<StepBrothers>)delegate(StepBrothers self)
				{
					int num = 0;
					FalseSonController val2 = default(FalseSonController);
					if (((Component)((EntityState)self).characterBody).TryGetComponent<FalseSonController>(ref val2))
					{
						num = val2.extraShardFromHealth;
					}
					((EntityState)self).healthComponent.AddBarrierAuthority((barrierGain + (float)num * growthScaling) * ((EntityState)self).healthComponent.fullBarrier);
				});
			}

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

			internal bool <GainBarrier>b__8_2(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdsfld(x, "EntityStates.FalseSon.StepBrothers", "hitPauseDuration");
			}

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

			internal bool <GainBarrier>b__8_4(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdfld(x, "EntityStates.BaseState", "attackSpeedStat");
			}

			internal bool <GainBarrier>b__8_5(Instruction x)
			{
				return ILPatternMatchingExt.MatchDiv(x);
			}

			internal bool <GainBarrier>b__8_6(Instruction x)
			{
				return ILPatternMatchingExt.MatchStfld(x, "EntityStates.FalseSon.StepBrothers", "hitPauseTimer");
			}

			internal void <GainBarrier>b__8_7(StepBrothers self)
			{
				int num = 0;
				FalseSonController val = default(FalseSonController);
				if (((Component)((EntityState)self).characterBody).TryGetComponent<FalseSonController>(ref val))
				{
					num = val.extraShardFromHealth;
				}
				((EntityState)self).healthComponent.AddBarrierAuthority((barrierGain + (float)num * growthScaling) * ((EntityState)self).healthComponent.fullBarrier);
			}

			internal void <DashSpeed>b__9_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);
				val.GotoNext(new Func<Instruction, bool>[9]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "EntityStates.FalseSon.StepBrothers", "dashVector"),
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "EntityStates.BaseState", "moveSpeedStat"),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "UnityEngine.Vector3", "op_Multiply"),
					(Instruction x) => ILPatternMatchingExt.MatchLdsfld