Decompiled source of Risk Of Rain Rebalanced v1.2.0

BepInEx/plugins/Nuxlar-MithrixTheAccursed/MithrixTheAccursed.dll

Decompiled a year 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 System.Threading.Tasks;
using BepInEx;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.BrotherHaunt;
using EntityStates.BrotherMonster;
using EntityStates.BrotherMonster.Weapon;
using EntityStates.Huntress;
using EntityStates.LunarExploderMonster.Weapon;
using EntityStates.LunarGolem;
using EntityStates.Missions.BrotherEncounter;
using KinematicCharacterController;
using On.EntityStates;
using On.EntityStates.BrotherMonster;
using On.EntityStates.BrotherMonster.Weapon;
using On.EntityStates.Missions.BrotherEncounter;
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;
using UnityEngine.Networking;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("MithrixTheAccursed")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("MithrixTheAccursed")]
[assembly: AssemblyTitle("MithrixTheAccursed")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace MithrixTheAccursed;

[BepInPlugin("com.Nuxlar.MithrixTheAccursed", "MithrixTheAccursed", "2.9.8")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class MithrixTheAccursed : BaseUnityPlugin
{
	[CompilerGenerated]
	private static class <>O
	{
		public static hook_OnEnter <0>__CleanupPillar;

		public static hook_OnEnter <1>__FistSlamOnEnter;

		public static hook_FixedUpdate <2>__FistSlamFixedUpdate;

		public static hook_OnEnter <3>__SpellChannelEnterStateOnEnter;

		public static hook_OnEnter <4>__SpellChannelStateOnEnter;

		public static hook_OnEnter <5>__SpellChannelExitStateOnEnter;

		public static hook_OnEnter <6>__StaggerEnterOnEnter;

		public static hook_OnEnter <7>__StaggerExitOnEnter;

		public static hook_OnEnter <8>__StaggerLoopOnEnter;
	}

	private bool hasfired;

	private int phaseCounter = 0;

	private float elapsed = 0f;

	private GameObject Mithrix = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherBody.prefab").WaitForCompletion();

	private GameObject MithrixHurt = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherHurtBody.prefab").WaitForCompletion();

	private GameObject BrotherHaunt = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/BrotherHaunt/BrotherHauntBody.prefab").WaitForCompletion();

	private SpawnCard MithrixCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Brother/cscBrother.asset").WaitForCompletion();

	private SpawnCard MithrixGlassCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Junk/BrotherGlass/cscBrotherGlass.asset").WaitForCompletion();

	private static GameObject exploderProjectile = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarExploder/LunarExploderShardProjectile.prefab").WaitForCompletion();

	private static GameObject golemProjectile = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarGolem/LunarGolemTwinShotProjectile.prefab").WaitForCompletion();

	public void Awake()
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0025: Expected O, but got Unknown
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Expected O, but got Unknown
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0049: Expected O, but got Unknown
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Expected O, but got Unknown
		//IL_0063: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Expected O, but got Unknown
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_007f: Expected O, but got Unknown
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_0091: Expected O, but got Unknown
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Expected O, but got Unknown
		//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b5: Expected O, but got Unknown
		//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c7: Expected O, but got Unknown
		//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d9: Expected O, but got Unknown
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00eb: Expected O, but got Unknown
		//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fd: Expected O, but got Unknown
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0130: Expected O, but got Unknown
		//IL_0138: Unknown result type (might be due to invalid IL or missing references)
		//IL_0142: Expected O, but got Unknown
		//IL_014a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0154: Expected O, but got Unknown
		//IL_015c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0166: Expected O, but got Unknown
		//IL_016e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Expected O, but got Unknown
		//IL_010e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0113: Unknown result type (might be due to invalid IL or missing references)
		//IL_0119: Expected O, but got Unknown
		//IL_0189: Unknown result type (might be due to invalid IL or missing references)
		//IL_018e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0194: Expected O, but got Unknown
		//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_01af: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b5: Expected O, but got Unknown
		//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d6: Expected O, but got Unknown
		//IL_0204: Unknown result type (might be due to invalid IL or missing references)
		//IL_020e: Expected O, but got Unknown
		//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f7: Expected O, but got Unknown
		//IL_021f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0224: Unknown result type (might be due to invalid IL or missing references)
		//IL_022a: Expected O, but got Unknown
		//IL_0240: Unknown result type (might be due to invalid IL or missing references)
		//IL_0245: Unknown result type (might be due to invalid IL or missing references)
		//IL_024b: Expected O, but got Unknown
		//IL_0261: Unknown result type (might be due to invalid IL or missing references)
		//IL_0266: Unknown result type (might be due to invalid IL or missing references)
		//IL_026c: Expected O, but got Unknown
		//IL_029a: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a4: Expected O, but got Unknown
		//IL_0282: Unknown result type (might be due to invalid IL or missing references)
		//IL_0287: Unknown result type (might be due to invalid IL or missing references)
		//IL_028d: Expected O, but got Unknown
		ModConfig.InitConfig(((BaseUnityPlugin)this).Config);
		AddContent();
		Run.Start += new hook_Start(OnRunStart);
		CharacterMaster.OnBodyStart += new hook_OnBodyStart(CharacterMasterOnBodyStart);
		BrotherEncounterPhaseBaseState.OnEnter += new hook_OnEnter(BrotherEncounterPhaseBaseStateOnEnter);
		Phase1.OnEnter += new hook_OnEnter(Phase1OnEnter);
		Phase2.OnEnter += new hook_OnEnter(Phase2OnEnter);
		Phase3.OnEnter += new hook_OnEnter(Phase3OnEnter);
		Phase4.OnEnter += new hook_OnEnter(Phase4OnEnter);
		FrozenState.OnEnter += new hook_OnEnter(FrozenStateOnEnter);
		CharacterBody.AddTimedBuff_BuffDef_float += new hook_AddTimedBuff_BuffDef_float(AddTimedBuff_BuffDef_float);
		SkyLeapDeathState.OnEnter += new hook_OnEnter(SkyLeapDeathStateOnEnter);
		SlideIntroState.OnEnter += new hook_OnEnter(SlideIntroStateOnEnter);
		SprintBash.OnEnter += new hook_OnEnter(SprintBashOnEnter);
		WeaponSlam.OnEnter += new hook_OnEnter(WeaponSlamOnEnter);
		object obj = <>O.<0>__CleanupPillar;
		if (obj == null)
		{
			hook_OnEnter val = CleanupPillar;
			<>O.<0>__CleanupPillar = val;
			obj = (object)val;
		}
		WeaponSlam.OnEnter += (hook_OnEnter)obj;
		WeaponSlam.FixedUpdate += new hook_FixedUpdate(WeaponSlamFixedUpdate);
		FireLunarShards.OnEnter += new hook_OnEnter(FireLunarShardsOnEnter);
		UltEnterState.OnEnter += new hook_OnEnter(UltEnterStateOnEnter);
		UltExitState.OnEnter += new hook_OnEnter(UltExitStateOnEnter);
		UltChannelState.FireWave += new hook_FireWave(UltChannelStateFireWave);
		object obj2 = <>O.<1>__FistSlamOnEnter;
		if (obj2 == null)
		{
			hook_OnEnter val2 = FistSlamOnEnter;
			<>O.<1>__FistSlamOnEnter = val2;
			obj2 = (object)val2;
		}
		FistSlam.OnEnter += (hook_OnEnter)obj2;
		object obj3 = <>O.<2>__FistSlamFixedUpdate;
		if (obj3 == null)
		{
			hook_FixedUpdate val3 = FistSlamFixedUpdate;
			<>O.<2>__FistSlamFixedUpdate = val3;
			obj3 = (object)val3;
		}
		FistSlam.FixedUpdate += (hook_FixedUpdate)obj3;
		object obj4 = <>O.<3>__SpellChannelEnterStateOnEnter;
		if (obj4 == null)
		{
			hook_OnEnter val4 = SpellChannelEnterStateOnEnter;
			<>O.<3>__SpellChannelEnterStateOnEnter = val4;
			obj4 = (object)val4;
		}
		SpellChannelEnterState.OnEnter += (hook_OnEnter)obj4;
		object obj5 = <>O.<4>__SpellChannelStateOnEnter;
		if (obj5 == null)
		{
			hook_OnEnter val5 = SpellChannelStateOnEnter;
			<>O.<4>__SpellChannelStateOnEnter = val5;
			obj5 = (object)val5;
		}
		SpellChannelState.OnEnter += (hook_OnEnter)obj5;
		SpellChannelState.OnExit += new hook_OnExit(SpellChannelStateOnExit);
		object obj6 = <>O.<5>__SpellChannelExitStateOnEnter;
		if (obj6 == null)
		{
			hook_OnEnter val6 = SpellChannelExitStateOnEnter;
			<>O.<5>__SpellChannelExitStateOnEnter = val6;
			obj6 = (object)val6;
		}
		SpellChannelExitState.OnEnter += (hook_OnEnter)obj6;
		object obj7 = <>O.<6>__StaggerEnterOnEnter;
		if (obj7 == null)
		{
			hook_OnEnter val7 = StaggerEnterOnEnter;
			<>O.<6>__StaggerEnterOnEnter = val7;
			obj7 = (object)val7;
		}
		StaggerEnter.OnEnter += (hook_OnEnter)obj7;
		object obj8 = <>O.<7>__StaggerExitOnEnter;
		if (obj8 == null)
		{
			hook_OnEnter val8 = StaggerExitOnEnter;
			<>O.<7>__StaggerExitOnEnter = val8;
			obj8 = (object)val8;
		}
		StaggerExit.OnEnter += (hook_OnEnter)obj8;
		object obj9 = <>O.<8>__StaggerLoopOnEnter;
		if (obj9 == null)
		{
			hook_OnEnter val9 = StaggerLoopOnEnter;
			<>O.<8>__StaggerLoopOnEnter = val9;
			obj9 = (object)val9;
		}
		StaggerLoop.OnEnter += (hook_OnEnter)obj9;
		TrueDeathState.OnEnter += new hook_OnEnter(TrueDeathStateOnEnter);
	}

	private void AdjustBaseStats()
	{
		((BaseUnityPlugin)this).Logger.LogMessage((object)"Adjusting Phase 1 Stats");
		int count = PlayerCharacterMasterController.instances.Count;
		float num;
		float num2;
		if (Run.instance.loopClearCount == 1)
		{
			num = ModConfig.phase1BaseHPScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase1PlayerHPScaling.Value * (float)count;
			num2 = ModConfig.phase1BaseMobilityScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase1PlayerMobilityScaling.Value * (float)count;
		}
		else
		{
			num = ModConfig.phase1LoopHPScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase1PlayerHPScaling.Value * (float)count;
			num2 = ModConfig.phase1LoopMobilityScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase1PlayerMobilityScaling.Value * (float)count;
		}
		CharacterBody component = Mithrix.GetComponent<CharacterBody>();
		CharacterDirection component2 = Mithrix.GetComponent<CharacterDirection>();
		CharacterMotor component3 = Mithrix.GetComponent<CharacterMotor>();
		((Object)component).name = "MithrixBody";
		component3.mass = ModConfig.mass.Value;
		component3.airControl = ModConfig.aircontrol.Value;
		component.baseMaxHealth = ModConfig.basehealth.Value + ModConfig.basehealth.Value * num;
		component.levelMaxHealth = ModConfig.levelhealth.Value + ModConfig.levelhealth.Value * num;
		component.baseDamage = ModConfig.basedamage.Value;
		component.levelDamage = ModConfig.leveldamage.Value;
		component.baseAttackSpeed = ModConfig.baseattackspeed.Value;
		component.baseMoveSpeed = ModConfig.basespeed.Value + ModConfig.basespeed.Value * num2;
		component.baseAcceleration = ModConfig.acceleration.Value + ModConfig.acceleration.Value * num2;
		component.baseJumpPower = ModConfig.jumpingpower.Value + ModConfig.jumpingpower.Value * num2;
		component2.turnSpeed = ModConfig.turningspeed.Value + ModConfig.turningspeed.Value * num2;
		component.baseArmor = ModConfig.basearmor.Value;
		ProjectileSteerTowardTarget component4 = FireLunarShards.projectilePrefab.GetComponent<ProjectileSteerTowardTarget>();
		component4.rotationSpeed = ModConfig.ShardHoming.Value;
		ProjectileDirectionalTargetFinder component5 = FireLunarShards.projectilePrefab.GetComponent<ProjectileDirectionalTargetFinder>();
		component5.lookRange = ModConfig.ShardRange.Value;
		component5.lookCone = ModConfig.ShardCone.Value;
		component5.allowTargetLoss = true;
		WeaponSlam.duration = 3.5f / ModConfig.baseattackspeed.Value;
		HoldSkyLeap.duration = ModConfig.JumpPause.Value;
		ExitSkyLeap.waveProjectileCount = ModConfig.JumpWaveCount.Value;
		ExitSkyLeap.recastChance = ModConfig.JumpRecast.Value;
		UltChannelState.waveProjectileCount = ModConfig.UltimateWaves.Value;
		UltChannelState.maxDuration = ModConfig.UltimateDuration.Value;
		UltChannelState.totalWaves = ModConfig.UltimateCount.Value;
	}

	private void AdjustBaseSkills()
	{
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = Mithrix.GetComponent<SkillLocator>();
		SkillFamily skillFamily = component.primary.skillFamily;
		SkillDef skillDef = skillFamily.variants[0].skillDef;
		skillDef.baseRechargeInterval = ModConfig.PrimCD.Value;
		skillDef.baseMaxStock = ModConfig.PrimStocks.Value;
		SkillFamily skillFamily2 = component.secondary.skillFamily;
		SkillDef skillDef2 = skillFamily2.variants[0].skillDef;
		skillDef2.baseRechargeInterval = ModConfig.SecCD.Value;
		skillDef2.baseMaxStock = ModConfig.SecStocks.Value;
		SkillFamily skillFamily3 = component.utility.skillFamily;
		SkillDef skillDef3 = skillFamily3.variants[0].skillDef;
		skillDef3.baseRechargeInterval = ModConfig.UtilCD.Value;
		skillDef3.baseMaxStock = ModConfig.UtilStocks.Value;
		SkillFamily skillFamily4 = component.special.skillFamily;
		SkillDef skillDef4 = skillFamily4.variants[0].skillDef;
		skillDef4.baseRechargeInterval = ModConfig.SpecialCD.Value;
		skillDef4.activationState = new SerializableEntityStateType(typeof(EnterCrushingLeap));
	}

	private void AdjustPhase2Stats()
	{
		((BaseUnityPlugin)this).Logger.LogMessage((object)"Adjusting Phase 2 Stats");
		int count = PlayerCharacterMasterController.instances.Count;
		float num;
		float num2;
		if (Run.instance.loopClearCount == 1)
		{
			num = ModConfig.phase2BaseHPScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase2PlayerHPScaling.Value * (float)count;
			num2 = ModConfig.phase2BaseMobilityScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase2PlayerMobilityScaling.Value * (float)count;
		}
		else
		{
			num = ModConfig.phase2LoopHPScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase2PlayerHPScaling.Value * (float)count;
			num2 = ModConfig.phase2LoopMobilityScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase2PlayerMobilityScaling.Value * (float)count;
		}
		CharacterBody component = Mithrix.GetComponent<CharacterBody>();
		CharacterDirection component2 = Mithrix.GetComponent<CharacterDirection>();
		component.baseMaxHealth = (ModConfig.basehealth.Value + ModConfig.basehealth.Value * num) * 5f;
		component.levelMaxHealth = (ModConfig.levelhealth.Value + ModConfig.levelhealth.Value * num) * 5f;
		component.baseMoveSpeed = ModConfig.basespeed.Value + ModConfig.basespeed.Value * num2;
		component.baseAcceleration = ModConfig.acceleration.Value + ModConfig.acceleration.Value * num2;
		component.baseJumpPower = ModConfig.jumpingpower.Value + ModConfig.jumpingpower.Value * num2;
		component2.turnSpeed = ModConfig.turningspeed.Value + ModConfig.turningspeed.Value * num2;
		WeaponSlam.duration = 3.5f / ModConfig.baseattackspeed.Value;
	}

	private void AdjustPhase3Stats()
	{
		((BaseUnityPlugin)this).Logger.LogMessage((object)"Adjusting Phase 3 Stats");
		int count = PlayerCharacterMasterController.instances.Count;
		float num;
		float num2;
		if (Run.instance.loopClearCount == 1)
		{
			num = ModConfig.phase3BaseHPScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase3PlayerHPScaling.Value * (float)count;
			num2 = ModConfig.phase3BaseMobilityScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase3PlayerMobilityScaling.Value * (float)count;
		}
		else
		{
			num = ModConfig.phase3LoopHPScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase3PlayerHPScaling.Value * (float)count;
			num2 = ModConfig.phase3LoopMobilityScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase3PlayerMobilityScaling.Value * (float)count;
		}
		CharacterBody component = Mithrix.GetComponent<CharacterBody>();
		CharacterDirection component2 = Mithrix.GetComponent<CharacterDirection>();
		component.baseMaxHealth = ModConfig.basehealth.Value + ModConfig.basehealth.Value * num;
		component.levelMaxHealth = ModConfig.levelhealth.Value + ModConfig.levelhealth.Value * num;
		component.baseMoveSpeed = ModConfig.basespeed.Value + ModConfig.basespeed.Value * num2;
		component.baseAcceleration = ModConfig.acceleration.Value + ModConfig.acceleration.Value * num2;
		component.baseJumpPower = ModConfig.jumpingpower.Value + ModConfig.jumpingpower.Value * num2;
		component2.turnSpeed = ModConfig.turningspeed.Value + ModConfig.turningspeed.Value * num2;
		WeaponSlam.duration = 3.5f / ModConfig.baseattackspeed.Value;
	}

	private void AdjustPhase4Stats()
	{
		((BaseUnityPlugin)this).Logger.LogMessage((object)"Adjusting Phase 4 Stats");
		int count = PlayerCharacterMasterController.instances.Count;
		float num = ((Run.instance.loopClearCount != 1) ? (ModConfig.phase4LoopHPScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase4PlayerHPScaling.Value * (float)count) : (ModConfig.phase4BaseHPScaling.Value * (float)Run.instance.loopClearCount + ModConfig.phase4PlayerHPScaling.Value * (float)count));
		CharacterBody component = MithrixHurt.GetComponent<CharacterBody>();
		component.baseMaxHealth = ModConfig.basehealth.Value + 400f + ModConfig.basehealth.Value * num;
		component.levelMaxHealth = ModConfig.levelhealth.Value + 120f + ModConfig.levelhealth.Value * num;
		component.baseArmor = ModConfig.basearmor.Value;
		SkillLocator component2 = MithrixHurt.GetComponent<SkillLocator>();
		SkillFamily skillFamily = component2.primary.skillFamily;
		SkillDef skillDef = skillFamily.variants[0].skillDef;
		skillDef.baseRechargeInterval = ModConfig.SuperShardCD.Value;
		skillDef.baseMaxStock = ModConfig.SuperShardCount.Value;
	}

	private void OnRunStart(orig_Start orig, Run self)
	{
		((BaseUnityPlugin)this).Logger.LogMessage((object)"Accursing the King of Nothing");
		AdjustBaseSkills();
		AdjustBaseStats();
		orig.Invoke(self);
	}

	private void AddContent()
	{
		//IL_0003: 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_0013: Unknown result type (might be due to invalid IL or missing references)
		bool flag = default(bool);
		ContentAddition.AddEntityState<EnterCrushingLeap>(ref flag);
		ContentAddition.AddEntityState<AimCrushingLeap>(ref flag);
		ContentAddition.AddEntityState<ExitCrushingLeap>(ref flag);
	}

	private void FrozenStateOnEnter(orig_OnEnter orig, FrozenState self)
	{
		if ((!(((Object)((EntityState)self).characterBody).name == "MithrixBody(Clone)") && !(((Object)((EntityState)self).characterBody).name == "BrotherHurtBody(Clone)")) || (Run.instance.loopClearCount < 2 && !ModConfig.debuffResistance.Value))
		{
			orig.Invoke(self);
		}
	}

	private void AddTimedBuff_BuffDef_float(orig_AddTimedBuff_BuffDef_float orig, CharacterBody self, BuffDef buffDef, float duration)
	{
		if ((!(((Object)self).name == "MithrixBody(Clone)") && !(((Object)self).name == "BrotherHurtBody(Clone)")) || !((Object)(object)buffDef == (Object)(object)Buffs.Nullified) || (Run.instance.loopClearCount < 2 && !ModConfig.debuffResistance.Value))
		{
			orig.Invoke(self, buffDef, duration);
		}
	}

	private void CharacterMasterOnBodyStart(orig_OnBodyStart orig, CharacterMaster self, CharacterBody body)
	{
		orig.Invoke(self, body);
		if (Object.op_Implicit((Object)(object)PhaseCounter.instance) && (PhaseCounter.instance.phase == 2 || PhaseCounter.instance.phase == 3) && (((Object)body).name == "LunarGolemBody(Clone)" || ((Object)body).name == "LunarExploderBody(Clone)" || ((Object)body).name == "LunarWispBody(Clone)"))
		{
			body.healthComponent.Suicide((GameObject)null, (GameObject)null, (DamageType)0);
		}
		if (((Object)body).name == "MithrixBody(Clone)" && phaseCounter != 0)
		{
			self.inventory.GiveEquipmentString(((Object)Equipment.Cleanse).name);
			self.inventory.GiveItemString(((Object)Items.AutoCastEquipment).name);
		}
		if (((Object)self).name == "BrotherHurtMaster(Clone)")
		{
			body.AddBuff(Buffs.Immune);
			Task.Delay(3000).ContinueWith(delegate
			{
				body.RemoveBuff(Buffs.Immune);
			});
		}
	}

	private void BrotherEncounterPhaseBaseStateOnEnter(orig_OnEnter orig, BrotherEncounterPhaseBaseState self)
	{
		//IL_016c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0177: Unknown result type (might be due to invalid IL or missing references)
		//IL_017c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0211: Unknown result type (might be due to invalid IL or missing references)
		//IL_0227: Unknown result type (might be due to invalid IL or missing references)
		//IL_0241: Unknown result type (might be due to invalid IL or missing references)
		//IL_025d: Unknown result type (might be due to invalid IL or missing references)
		//IL_025f: Unknown result type (might be due to invalid IL or missing references)
		//IL_026f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0271: Unknown result type (might be due to invalid IL or missing references)
		phaseCounter++;
		((BrotherEncounterBaseState)self).childLocator = ((EntityState)self).GetComponent<ChildLocator>();
		Transform val = ((BrotherEncounterBaseState)self).childLocator.FindChild("ArenaWalls");
		Transform val2 = ((BrotherEncounterBaseState)self).childLocator.FindChild("ArenaNodes");
		if (Object.op_Implicit((Object)(object)val))
		{
			((Component)val).gameObject.SetActive(((BrotherEncounterBaseState)self).shouldEnableArenaWalls);
		}
		if (!Object.op_Implicit((Object)(object)val2))
		{
			return;
		}
		((Component)val2).gameObject.SetActive(((BrotherEncounterBaseState)self).shouldEnableArenaNodes);
		if (Object.op_Implicit((Object)(object)PhaseCounter.instance))
		{
			phaseCounter = PhaseCounter.instance.phase;
			PhaseCounter.instance.GoToNextPhase();
		}
		if (Object.op_Implicit((Object)(object)((BrotherEncounterBaseState)self).childLocator))
		{
			self.phaseControllerObject = ((Component)((BrotherEncounterBaseState)self).childLocator.FindChild(self.phaseControllerChildString)).gameObject;
			if (Object.op_Implicit((Object)(object)self.phaseControllerObject))
			{
				self.phaseScriptedCombatEncounter = self.phaseControllerObject.GetComponent<ScriptedCombatEncounter>();
				self.phaseBossGroup = self.phaseControllerObject.GetComponent<BossGroup>();
				self.phaseControllerSubObjectContainer = ((Component)self.phaseControllerObject.transform.Find("PhaseObjects")).gameObject;
				self.phaseControllerSubObjectContainer.SetActive(true);
			}
			GameObject gameObject = ((Component)((BrotherEncounterBaseState)self).childLocator.FindChild("AllPhases")).gameObject;
			if (Object.op_Implicit((Object)(object)gameObject))
			{
				gameObject.SetActive(true);
			}
		}
		self.healthBarShowTime = FixedTimeStamp.now + self.healthBarShowDelay;
		if (Object.op_Implicit((Object)(object)DirectorCore.instance))
		{
			CombatDirector[] components = ((Component)DirectorCore.instance).GetComponents<CombatDirector>();
			for (int i = 0; i < components.Length; i++)
			{
				Behaviour val3 = (Behaviour)(object)components[i];
				val3.enabled = false;
			}
		}
		if (NetworkServer.active && !((Object)(object)self.phaseScriptedCombatEncounter == (Object)null))
		{
			if (phaseCounter == 1)
			{
				Mithrix.transform.position = new Vector3(-88.5f, 491.5f, -0.3f);
				Mithrix.transform.rotation = Quaternion.identity;
				Transform transform = Mithrix.transform;
				SpawnInfo val4 = default(SpawnInfo);
				val4.explicitSpawnPosition = transform;
				val4.spawnCard = MithrixCard;
				SpawnInfo val5 = val4;
				self.phaseScriptedCombatEncounter.spawns = (SpawnInfo[])(object)new SpawnInfo[1] { val5 };
			}
			self.phaseScriptedCombatEncounter.combatSquad.onMemberAddedServer += self.OnMemberAddedServer;
		}
	}

	private void SkyLeapDeathStateOnEnter(orig_OnEnter orig, SkyLeapDeathState self)
	{
		if (((Object)((EntityState)self).characterBody).name == "BrotherGlassBody(Clone)")
		{
			((GenericCharacterDeath)self).DestroyModel();
			if (NetworkServer.active)
			{
				((GenericCharacterDeath)self).DestroyBodyAsapServer();
			}
		}
		else
		{
			orig.Invoke(self);
		}
	}

	private void Phase1OnEnter(orig_OnEnter orig, Phase1 self)
	{
		AdjustBaseStats();
		orig.Invoke(self);
	}

	private void Phase2OnEnter(orig_OnEnter orig, Phase2 self)
	{
		((BrotherEncounterBaseState)self).KillAllMonsters();
		AdjustPhase2Stats();
		orig.Invoke(self);
	}

	private void Phase3OnEnter(orig_OnEnter orig, Phase3 self)
	{
		((BrotherEncounterBaseState)self).KillAllMonsters();
		AdjustPhase3Stats();
		orig.Invoke(self);
	}

	private void Phase4OnEnter(orig_OnEnter orig, Phase4 self)
	{
		AdjustPhase4Stats();
		orig.Invoke(self);
	}

	private void SlideIntroStateOnEnter(orig_OnEnter orig, SlideIntroState self)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0039: Expected O, but got Unknown
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_007e: Expected O, but got Unknown
		//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0103: Unknown result type (might be due to invalid IL or missing references)
		//IL_0108: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: 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_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_0139: Unknown result type (might be due to invalid IL or missing references)
		//IL_013e: 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_0145: Unknown result type (might be due to invalid IL or missing references)
		//IL_0153: Unknown result type (might be due to invalid IL or missing references)
		//IL_0158: Unknown result type (might be due to invalid IL or missing references)
		//IL_015a: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
		Ray aimRay = ((BaseState)self).GetAimRay();
		if (((EntityState)self).isAuthority)
		{
			if (((Object)((EntityState)self).characterBody).name == "MithrixBody(Clone)")
			{
				DirectorPlacementRule val = new DirectorPlacementRule();
				val.placementMode = (PlacementMode)1;
				val.minDistance = 3f;
				val.maxDistance = 20f;
				val.spawnOnTarget = ((EntityState)self).gameObject.transform;
				Xoroshiro128Plus rng = RoR2Application.rng;
				DirectorSpawnRequest val2 = new DirectorSpawnRequest(MithrixGlassCard, val, rng);
				val2.summonerBodyObject = ((EntityState)self).gameObject;
				val2.onSpawnedServer = (Action<SpawnResult>)Delegate.Combine(val2.onSpawnedServer, (Action<SpawnResult>)delegate(SpawnResult spawnResult)
				{
					//IL_0000: Unknown result type (might be due to invalid IL or missing references)
					spawnResult.spawnedInstance.GetComponent<Inventory>().GiveItem(Items.HealthDecay, 1);
				});
				DirectorCore.instance.TrySpawnObject(val2);
			}
			if (ModConfig.DashProjectileCount.Value > 0)
			{
				int num = 360 / ModConfig.DashProjectileCount.Value;
				Vector3 val3 = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.up);
				for (int i = 0; i < ModConfig.DashProjectileCount.Value; i++)
				{
					Util.PlaySound(((GenericProjectileBaseState)new FireExploderShards()).attackSoundString, ((EntityState)self).gameObject);
					Vector3 val4 = Quaternion.AngleAxis((float)(num * i), Vector3.forward) * val3;
					ProjectileManager.instance.FireProjectile(exploderProjectile, ((Ray)(ref aimRay)).origin, Quaternion.LookRotation(val4), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FistSlam.waveProjectileDamageCoefficient / 10f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
					ProjectileManager.instance.FireProjectile(golemProjectile, ((Ray)(ref aimRay)).origin, Quaternion.LookRotation(val4), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FistSlam.waveProjectileDamageCoefficient / 4f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
				}
			}
		}
		orig.Invoke(self);
	}

	private void SprintBashOnEnter(orig_OnEnter orig, SprintBash self)
	{
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: 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_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_010c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0111: 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_0129: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Unknown result type (might be due to invalid IL or missing references)
		//IL_012d: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_021b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0222: Unknown result type (might be due to invalid IL or missing references)
		//IL_0227: Unknown result type (might be due to invalid IL or missing references)
		//IL_022c: Unknown result type (might be due to invalid IL or missing references)
		//IL_022e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0233: Unknown result type (might be due to invalid IL or missing references)
		//IL_0286: Unknown result type (might be due to invalid IL or missing references)
		//IL_028d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0292: Unknown result type (might be due to invalid IL or missing references)
		//IL_0297: Unknown result type (might be due to invalid IL or missing references)
		//IL_0299: Unknown result type (might be due to invalid IL or missing references)
		//IL_029e: Unknown result type (might be due to invalid IL or missing references)
		if (((EntityState)self).isAuthority)
		{
			Util.PlaySound(FireTwinShots.attackSoundString, ((EntityState)self).gameObject);
			Ray aimRay = ((BaseState)self).GetAimRay();
			Util.PlaySound(FireLunarShards.fireSound, ((EntityState)self).gameObject);
			for (int i = 0; i < ModConfig.SuperShardWeight.Value; i++)
			{
				ProjectileManager.instance.FireProjectile(FireLunarShards.projectilePrefab, ((Ray)(ref aimRay)).origin, Quaternion.LookRotation(((Ray)(ref aimRay)).direction), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 0.1f / 12f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
			}
			if (Object.op_Implicit((Object)(object)PhaseCounter.instance))
			{
				Vector3 val = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.up);
				Vector3 footPosition = ((EntityState)self).characterBody.footPosition;
				if (PhaseCounter.instance.phase != 1)
				{
					Vector3 val2 = Quaternion.AngleAxis(0f, Vector3.up) * val;
					ProjectileManager.instance.FireProjectile(WeaponSlam.waveProjectilePrefab, footPosition, Util.QuaternionSafeLookRotation(val2), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * WeaponSlam.waveProjectileDamageCoefficient, WeaponSlam.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
				}
				if (PhaseCounter.instance.phase == 3 && ((Object)((EntityState)self).characterBody).name != "BrotherGlassBody(Clone)")
				{
					ProjectileManager.instance.FireProjectile(FireRandomProjectiles.projectilePrefab, footPosition, Util.QuaternionSafeLookRotation(Quaternion.AngleAxis(-30f, Vector3.up) * val), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FireRandomProjectiles.damageCoefficient, UltChannelState.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
					ProjectileManager.instance.FireProjectile(FireRandomProjectiles.projectilePrefab, footPosition, Util.QuaternionSafeLookRotation(Quaternion.AngleAxis(0f, Vector3.up) * val), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FireRandomProjectiles.damageCoefficient, UltChannelState.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
					ProjectileManager.instance.FireProjectile(FireRandomProjectiles.projectilePrefab, footPosition, Util.QuaternionSafeLookRotation(Quaternion.AngleAxis(30f, Vector3.up) * val), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FireRandomProjectiles.damageCoefficient, UltChannelState.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
				}
			}
		}
		orig.Invoke(self);
	}

	private void WeaponSlamOnEnter(orig_OnEnter orig, WeaponSlam self)
	{
		//IL_001c: 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)
		GameObject pillarProjectilePrefab = WeaponSlam.pillarProjectilePrefab;
		pillarProjectilePrefab.transform.localScale = new Vector3(3f, 3f, 3f);
		pillarProjectilePrefab.GetComponent<ProjectileController>().ghostPrefab.transform.localScale = new Vector3(3f, 3f, 3f);
		hasfired = false;
		orig.Invoke(self);
	}

	private void WeaponSlamFixedUpdate(orig_FixedUpdate orig, WeaponSlam self)
	{
		//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_00db: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0108: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_011b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0120: Unknown result type (might be due to invalid IL or missing references)
		//IL_0125: 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)
		//IL_0138: Unknown result type (might be due to invalid IL or missing references)
		//IL_013a: Unknown result type (might be due to invalid IL or missing references)
		//IL_013c: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01da: Unknown result type (might be due to invalid IL or missing references)
		//IL_01df: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_028a: Unknown result type (might be due to invalid IL or missing references)
		//IL_028f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0294: Unknown result type (might be due to invalid IL or missing references)
		//IL_0296: Unknown result type (might be due to invalid IL or missing references)
		//IL_029b: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a9: 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)
		if (((EntityState)self).isAuthority && self.hasDoneBlastAttack)
		{
			((BaseUnityPlugin)this).Logger.LogDebug((object)"blast attack done");
			if (Object.op_Implicit((Object)(object)self.modelTransform) && !hasfired)
			{
				hasfired = true;
				((BaseUnityPlugin)this).Logger.LogDebug((object)"modeltransformed");
				if (Object.op_Implicit((Object)(object)PhaseCounter.instance))
				{
					int value = ModConfig.SlamOrbProjectileCount.Value;
					int value2 = ModConfig.SlamShardCount.Value;
					int num = ((PhaseCounter.instance.phase == 2) ? 8 : 10);
					float num2 = 360f / (float)value;
					float num3 = 360f / (float)value2;
					float num4 = 360f / (float)num;
					Vector3 val = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.up);
					Vector3 val2 = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.forward);
					Transform val3 = ((BaseState)self).FindModelChild(WeaponSlam.muzzleString);
					Vector3 position = val3.position;
					for (int i = 0; i < value; i++)
					{
						Vector3 val4 = Quaternion.AngleAxis(num2 * (float)i, Vector3.up) * val;
						ProjectileManager.instance.FireProjectile(FistSlam.waveProjectilePrefab, position, Util.QuaternionSafeLookRotation(val4), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FistSlam.waveProjectileDamageCoefficient, FistSlam.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
					}
					for (int j = 0; j < value2; j++)
					{
						Ray aimRay = ((BaseState)self).GetAimRay();
						for (int k = 0; k < ModConfig.SuperShardWeight.Value; k++)
						{
							Vector3 val5 = Quaternion.AngleAxis(num3 * (float)k, Vector3.up) * val;
							ProjectileManager.instance.FireProjectile(FireLunarShards.projectilePrefab, ((Ray)(ref aimRay)).origin, Quaternion.LookRotation(val5), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 0.1f / 12f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
						}
					}
					if (PhaseCounter.instance.phase != 1)
					{
						for (int l = 0; l < num; l++)
						{
							Vector3 val6 = Quaternion.AngleAxis(num4 * (float)l, Vector3.up) * val;
							ProjectileManager.instance.FireProjectile(FireRandomProjectiles.projectilePrefab, position, Util.QuaternionSafeLookRotation(val6), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FireRandomProjectiles.damageCoefficient, UltChannelState.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
						}
					}
				}
			}
		}
		orig.Invoke(self);
	}

	private void FireLunarShardsOnEnter(orig_OnEnter orig, FireLunarShards self)
	{
		//IL_0033: 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_0224: Unknown result type (might be due to invalid IL or missing references)
		//IL_0229: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: Unknown result type (might be due to invalid IL or missing references)
		//IL_0089: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0258: Unknown result type (might be due to invalid IL or missing references)
		//IL_0262: Unknown result type (might be due to invalid IL or missing references)
		//IL_0267: Unknown result type (might be due to invalid IL or missing references)
		//IL_0270: Unknown result type (might be due to invalid IL or missing references)
		//IL_0275: Unknown result type (might be due to invalid IL or missing references)
		//IL_027a: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_024a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0124: Unknown result type (might be due to invalid IL or missing references)
		//IL_015a: Unknown result type (might be due to invalid IL or missing references)
		//IL_030a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0316: Unknown result type (might be due to invalid IL or missing references)
		//IL_036c: Unknown result type (might be due to invalid IL or missing references)
		//IL_037b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0380: Unknown result type (might be due to invalid IL or missing references)
		//IL_0385: Unknown result type (might be due to invalid IL or missing references)
		if (self is FireLunarShardsHurt)
		{
			self.duration = FireLunarShards.baseDuration / ((BaseState)self).attackSpeedStat;
			if (((EntityState)self).isAuthority)
			{
				Ray aimRay = ((BaseState)self).GetAimRay();
				Transform val = ((BaseState)self).FindModelChild(FireLunarShards.muzzleString);
				if (Object.op_Implicit((Object)(object)val))
				{
					((Ray)(ref aimRay)).origin = val.position;
				}
				((Ray)(ref aimRay)).direction = Util.ApplySpread(((Ray)(ref aimRay)).direction, 0f, self.maxSpread, self.spreadYawScale, self.spreadPitchScale, 0f, 0f);
				for (int i = 0; i < 12; i++)
				{
					int num = (int)Util.PlaySound(FireLunarShards.fireSound, ((EntityState)self).gameObject);
					ProjectileManager.instance.FireProjectile(new FireProjectileInfo
					{
						position = ((Ray)(ref aimRay)).origin,
						rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction),
						crit = ((EntityState)self).characterBody.RollCrit(),
						damage = ((EntityState)self).characterBody.damage * self.damageCoefficient,
						damageColorIndex = (DamageColorIndex)0,
						owner = ((EntityState)self).gameObject,
						procChainMask = default(ProcChainMask),
						force = 0f,
						useFuseOverride = false,
						useSpeedOverride = false,
						target = null,
						projectilePrefab = FireLunarShards.projectilePrefab
					});
				}
			}
			((EntityState)self).PlayAnimation("Gesture, Additive", "FireLunarShards");
			((EntityState)self).PlayAnimation("Gesture, Override", "FireLunarShards");
			((BaseState)self).AddRecoil(-0.4f * FireLunarShards.recoilAmplitude, -0.8f * FireLunarShards.recoilAmplitude, -0.3f * FireLunarShards.recoilAmplitude, 0.3f * FireLunarShards.recoilAmplitude);
			((EntityState)self).characterBody.AddSpreadBloom(FireLunarShards.spreadBloomValue);
			EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)self).gameObject, FireLunarShards.muzzleString, false);
			return;
		}
		if (!(self is FireLunarShardsHurt) && ((EntityState)self).isAuthority)
		{
			Ray aimRay2 = ((BaseState)self).GetAimRay();
			Transform val2 = ((BaseState)self).FindModelChild(FireLunarShards.muzzleString);
			if (Object.op_Implicit((Object)(object)val2))
			{
				((Ray)(ref aimRay2)).origin = val2.position;
			}
			FireProjectileInfo val3 = default(FireProjectileInfo);
			val3.position = ((Ray)(ref aimRay2)).origin;
			val3.rotation = Quaternion.LookRotation(((Ray)(ref aimRay2)).direction);
			val3.crit = ((EntityState)self).characterBody.RollCrit();
			val3.damage = ((EntityState)self).characterBody.damage * self.damageCoefficient;
			val3.damageColorIndex = (DamageColorIndex)0;
			val3.owner = ((EntityState)self).gameObject;
			val3.procChainMask = default(ProcChainMask);
			val3.force = 0f;
			val3.useFuseOverride = false;
			val3.useSpeedOverride = false;
			val3.target = null;
			val3.projectilePrefab = FireLunarShards.projectilePrefab;
			for (int j = 0; j < ModConfig.LunarShardAdd.Value; j++)
			{
				ProjectileManager.instance.FireProjectile(val3);
				((Ray)(ref aimRay2)).direction = Util.ApplySpread(((Ray)(ref aimRay2)).direction, 0f, self.maxSpread * (1f + 0.45f * (float)j), self.spreadYawScale * (1f + 0.45f * (float)j), self.spreadPitchScale * (1f + 0.45f * (float)j), 0f, 0f);
				val3.rotation = Quaternion.LookRotation(((Ray)(ref aimRay2)).direction);
			}
		}
		orig.Invoke(self);
	}

	private void UltEnterStateOnEnter(orig_OnEnter orig, UltEnterState self)
	{
		//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)
		orig.Invoke(self);
		if (Object.op_Implicit((Object)(object)PhaseCounter.instance) && PhaseCounter.instance.phase == 3)
		{
			((EntityState)self).characterBody.AddBuff(Buffs.Immune);
			ProjectileManager.instance.FireProjectile(WeaponSlam.pillarProjectilePrefab, ((EntityState)self).characterBody.footPosition, Quaternion.identity, ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * WeaponSlam.pillarDamageCoefficient, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
		}
	}

	private void UltExitStateOnEnter(orig_OnEnter orig, UltExitState self)
	{
		if (Object.op_Implicit((Object)(object)PhaseCounter.instance) && PhaseCounter.instance.phase == 3)
		{
			((EntityState)self).characterBody.RemoveBuff(Buffs.Immune);
		}
		orig.Invoke(self);
	}

	private void UltChannelStateFireWave(orig_FireWave orig, UltChannelState self)
	{
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_005a: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dc: 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_010e: Unknown result type (might be due to invalid IL or missing references)
		//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_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0130: Unknown result type (might be due to invalid IL or missing references)
		//IL_0132: Unknown result type (might be due to invalid IL or missing references)
		//IL_0137: 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_0142: Unknown result type (might be due to invalid IL or missing references)
		//IL_0144: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)PhaseCounter.instance) && PhaseCounter.instance.phase == 3)
		{
			UltChannelState.waveProjectileCount = 0;
			int count = PlayerCharacterMasterController.instances.Count;
			int num = ModConfig.UltimateWaves.Value + 2;
			float num2 = 360f / (float)num;
			Vector3 val = Vector3.ProjectOnPlane(Random.onUnitSphere, Vector3.up);
			Vector3 normalized = ((Vector3)(ref val)).normalized;
			GameObject val2 = UltChannelState.waveProjectileLeftPrefab;
			if ((double)Random.value <= 0.5)
			{
				val2 = UltChannelState.waveProjectileRightPrefab;
			}
			Random random = new Random();
			int index = random.Next(0, count - 1);
			PlayerCharacterMasterController val3 = PlayerCharacterMasterController.instances[index];
			Vector3 val4 = new Vector3(val3.body.footPosition.x, ((EntityState)self).characterBody.footPosition.y, val3.body.footPosition.z) + new Vector3(Random.Range(-50f, 50f), 0f, Random.Range(-50f, 50f));
			for (int i = 0; i < num; i++)
			{
				Vector3 val5 = Quaternion.AngleAxis(num2 * (float)i, Vector3.up) * normalized;
				ProjectileManager.instance.FireProjectile(val2, val4, Util.QuaternionSafeLookRotation(val5), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * UltChannelState.waveProjectileDamageCoefficient, UltChannelState.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
			}
		}
		orig.Invoke(self);
	}

	private static void FistSlamOnEnter(orig_OnEnter orig, FistSlam self)
	{
		FistSlam.waveProjectileDamageCoefficient = 2.3f;
		FistSlam.healthCostFraction = 0f;
		FistSlam.waveProjectileCount = 20;
		FistSlam.baseDuration = 3.5f;
		orig.Invoke(self);
	}

	private static void FistSlamFixedUpdate(orig_FixedUpdate orig, FistSlam self)
	{
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_0075: 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_008a: Unknown result type (might be due to invalid IL or missing references)
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_009f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bc: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0119: Unknown result type (might be due to invalid IL or missing references)
		//IL_011b: Unknown result type (might be due to invalid IL or missing references)
		//IL_011d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_017f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0184: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)self.modelAnimator) && (double)self.modelAnimator.GetFloat("fist.hitBoxActive") > 0.5 && !self.hasAttacked && ((EntityState)self).isAuthority)
		{
			Ray aimRay = ((BaseState)self).GetAimRay();
			float num = 360f / (float)FistSlam.waveProjectileCount;
			Vector3 val = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.up);
			Vector3 footPosition = ((EntityState)self).characterBody.footPosition;
			Vector3 corePosition = ((EntityState)self).characterBody.corePosition;
			for (int i = 0; i < FistSlam.waveProjectileCount; i++)
			{
				Vector3 val2 = Quaternion.AngleAxis(num * (float)i, Vector3.up) * val;
				ProjectileManager.instance.FireProjectile(golemProjectile, corePosition, Util.QuaternionSafeLookRotation(val2), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FistSlam.waveProjectileDamageCoefficient / 4f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
				ProjectileManager.instance.FireProjectile(exploderProjectile, corePosition, Util.QuaternionSafeLookRotation(val2), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FistSlam.waveProjectileDamageCoefficient / 10f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
				ProjectileManager.instance.FireProjectile(FireLunarShards.projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 0.1f / 12f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
			}
		}
		orig.Invoke(self);
	}

	private static void SpellChannelEnterStateOnEnter(orig_OnEnter orig, SpellChannelEnterState self)
	{
		SpellChannelEnterState.duration = 3f;
		orig.Invoke(self);
	}

	private static void SpellChannelStateOnEnter(orig_OnEnter orig, SpellChannelState self)
	{
		SpellChannelState.stealInterval = 0.1f;
		SpellChannelState.delayBeforeBeginningSteal = 0f;
		SpellChannelState.maxDuration = 15f;
		orig.Invoke(self);
	}

	private void SpellChannelStateOnExit(orig_OnExit orig, SpellChannelState self)
	{
		orig.Invoke(self);
		GameObject val = Object.Instantiate<GameObject>(BrotherHaunt);
		val.GetComponent<TeamComponent>().teamIndex = (TeamIndex)2;
		NetworkServer.Spawn(val);
	}

	private static void SpellChannelExitStateOnEnter(orig_OnEnter orig, SpellChannelExitState self)
	{
		SpellChannelExitState.lendInterval = 0.04f;
		SpellChannelExitState.duration = 2.5f;
		orig.Invoke(self);
	}

	private static void StaggerEnterOnEnter(orig_OnEnter orig, StaggerEnter self)
	{
		((StaggerBaseState)self).duration = 0f;
		orig.Invoke(self);
	}

	private static void StaggerExitOnEnter(orig_OnEnter orig, StaggerExit self)
	{
		((StaggerBaseState)self).duration = 0f;
		orig.Invoke(self);
	}

	private static void StaggerLoopOnEnter(orig_OnEnter orig, StaggerLoop self)
	{
		((StaggerBaseState)self).duration = 0f;
		orig.Invoke(self);
	}

	private void TrueDeathStateOnEnter(orig_OnEnter orig, TrueDeathState self)
	{
		TrueDeathState.dissolveDuration = 3f;
		GameObject.Find("BrotherHauntBody(Clone)").GetComponent<HealthComponent>().Suicide((GameObject)null, (GameObject)null, (DamageType)0);
		orig.Invoke(self);
	}

	private static void CleanupPillar(orig_OnEnter orig, WeaponSlam self)
	{
		//IL_001c: 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)
		GameObject pillarProjectilePrefab = WeaponSlam.pillarProjectilePrefab;
		pillarProjectilePrefab.transform.localScale = new Vector3(1f, 1f, 1f);
		pillarProjectilePrefab.GetComponent<ProjectileController>().ghostPrefab.transform.localScale = new Vector3(1f, 1f, 1f);
		orig.Invoke(self);
	}
}
internal class ModConfig
{
	public static ConfigEntry<bool> debuffResistance;

	public static ConfigEntry<float> phase1BaseHPScaling;

	public static ConfigEntry<float> phase2BaseHPScaling;

	public static ConfigEntry<float> phase3BaseHPScaling;

	public static ConfigEntry<float> phase4BaseHPScaling;

	public static ConfigEntry<float> phase1BaseMobilityScaling;

	public static ConfigEntry<float> phase2BaseMobilityScaling;

	public static ConfigEntry<float> phase3BaseMobilityScaling;

	public static ConfigEntry<float> phase1LoopHPScaling;

	public static ConfigEntry<float> phase2LoopHPScaling;

	public static ConfigEntry<float> phase3LoopHPScaling;

	public static ConfigEntry<float> phase4LoopHPScaling;

	public static ConfigEntry<float> phase1LoopMobilityScaling;

	public static ConfigEntry<float> phase2LoopMobilityScaling;

	public static ConfigEntry<float> phase3LoopMobilityScaling;

	public static ConfigEntry<float> phase1PlayerHPScaling;

	public static ConfigEntry<float> phase1PlayerMobilityScaling;

	public static ConfigEntry<float> phase2PlayerHPScaling;

	public static ConfigEntry<float> phase2PlayerMobilityScaling;

	public static ConfigEntry<float> phase3PlayerHPScaling;

	public static ConfigEntry<float> phase3PlayerMobilityScaling;

	public static ConfigEntry<float> phase4PlayerHPScaling;

	public static ConfigEntry<float> basehealth;

	public static ConfigEntry<float> levelhealth;

	public static ConfigEntry<float> basedamage;

	public static ConfigEntry<float> leveldamage;

	public static ConfigEntry<float> basearmor;

	public static ConfigEntry<float> baseattackspeed;

	public static ConfigEntry<float> basespeed;

	public static ConfigEntry<float> mass;

	public static ConfigEntry<float> turningspeed;

	public static ConfigEntry<float> jumpingpower;

	public static ConfigEntry<float> acceleration;

	public static ConfigEntry<float> aircontrol;

	public static ConfigEntry<int> PrimStocks;

	public static ConfigEntry<int> SecStocks;

	public static ConfigEntry<int> UtilStocks;

	public static ConfigEntry<float> PrimCD;

	public static ConfigEntry<float> SecCD;

	public static ConfigEntry<float> UtilCD;

	public static ConfigEntry<float> SpecialCD;

	public static ConfigEntry<float> CrushingLeap;

	public static ConfigEntry<float> P2SuperShardInterval;

	public static ConfigEntry<int> SuperShardWeight;

	public static ConfigEntry<int> P2UltCount;

	public static ConfigEntry<int> P2UltOrbCount;

	public static ConfigEntry<float> P2UltDuration;

	public static ConfigEntry<int> SuperShardCount;

	public static ConfigEntry<float> SuperShardCD;

	public static ConfigEntry<int> SlamOrbProjectileCount;

	public static ConfigEntry<int> SlamShardCount;

	public static ConfigEntry<int> DashProjectileCount;

	public static ConfigEntry<int> LunarShardAdd;

	public static ConfigEntry<int> UltimateWaves;

	public static ConfigEntry<int> UltimateCount;

	public static ConfigEntry<float> UltimateDuration;

	public static ConfigEntry<float> JumpRecast;

	public static ConfigEntry<float> JumpPause;

	public static ConfigEntry<int> JumpWaveCount;

	public static ConfigEntry<float> ShardHoming;

	public static ConfigEntry<float> ShardRange;

	public static ConfigEntry<float> ShardCone;

	public static void InitConfig(ConfigFile config)
	{
		//IL_074e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0758: Expected O, but got Unknown
		//IL_075e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0763: Unknown result type (might be due to invalid IL or missing references)
		//IL_076e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0779: Unknown result type (might be due to invalid IL or missing references)
		//IL_0789: Expected O, but got Unknown
		//IL_0784: Unknown result type (might be due to invalid IL or missing references)
		//IL_078e: Expected O, but got Unknown
		//IL_0794: Unknown result type (might be due to invalid IL or missing references)
		//IL_0799: Unknown result type (might be due to invalid IL or missing references)
		//IL_07a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_07af: Unknown result type (might be due to invalid IL or missing references)
		//IL_07bf: Expected O, but got Unknown
		//IL_07ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_07c4: Expected O, but got Unknown
		//IL_07ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_07cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_07da: Unknown result type (might be due to invalid IL or missing references)
		//IL_07e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_07f5: Expected O, but got Unknown
		//IL_07f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_07fa: Expected O, but got Unknown
		//IL_0800: Unknown result type (might be due to invalid IL or missing references)
		//IL_0805: Unknown result type (might be due to invalid IL or missing references)
		//IL_0810: Unknown result type (might be due to invalid IL or missing references)
		//IL_081b: Unknown result type (might be due to invalid IL or missing references)
		//IL_082b: Expected O, but got Unknown
		//IL_0826: Unknown result type (might be due to invalid IL or missing references)
		//IL_0830: Expected O, but got Unknown
		//IL_0836: Unknown result type (might be due to invalid IL or missing references)
		//IL_083b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0846: Unknown result type (might be due to invalid IL or missing references)
		//IL_0851: Unknown result type (might be due to invalid IL or missing references)
		//IL_0861: Expected O, but got Unknown
		//IL_085c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0866: Expected O, but got Unknown
		//IL_086c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0871: Unknown result type (might be due to invalid IL or missing references)
		//IL_087c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0887: Unknown result type (might be due to invalid IL or missing references)
		//IL_0897: Expected O, but got Unknown
		//IL_0892: Unknown result type (might be due to invalid IL or missing references)
		//IL_089c: Expected O, but got Unknown
		//IL_08a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_08a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_08b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_08bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_08cd: Expected O, but got Unknown
		//IL_08c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_08d2: Expected O, but got Unknown
		//IL_08d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_08dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_08e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_08f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0903: Expected O, but got Unknown
		//IL_08fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0908: Expected O, but got Unknown
		//IL_090e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0913: Unknown result type (might be due to invalid IL or missing references)
		//IL_091e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0929: Unknown result type (might be due to invalid IL or missing references)
		//IL_0939: Expected O, but got Unknown
		//IL_0934: Unknown result type (might be due to invalid IL or missing references)
		//IL_093e: Expected O, but got Unknown
		//IL_0944: Unknown result type (might be due to invalid IL or missing references)
		//IL_0949: Unknown result type (might be due to invalid IL or missing references)
		//IL_0954: Unknown result type (might be due to invalid IL or missing references)
		//IL_095f: Unknown result type (might be due to invalid IL or missing references)
		//IL_096f: Expected O, but got Unknown
		//IL_096a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0974: Expected O, but got Unknown
		//IL_097a: Unknown result type (might be due to invalid IL or missing references)
		//IL_097f: Unknown result type (might be due to invalid IL or missing references)
		//IL_098a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0995: Unknown result type (might be due to invalid IL or missing references)
		//IL_09a5: Expected O, but got Unknown
		//IL_09a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_09aa: Expected O, but got Unknown
		//IL_09b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_09b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_09c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_09cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_09db: Expected O, but got Unknown
		//IL_09d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_09e0: Expected O, but got Unknown
		//IL_09e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_09eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_09f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a01: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a11: Expected O, but got Unknown
		//IL_0a0c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a16: Expected O, but got Unknown
		//IL_0a1c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a21: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a2c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a37: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a47: Expected O, but got Unknown
		//IL_0a42: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a4c: Expected O, but got Unknown
		//IL_0a52: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a57: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a62: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a6d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a7d: Expected O, but got Unknown
		//IL_0a78: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a82: Expected O, but got Unknown
		//IL_0a88: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a8d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a98: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aa3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ab3: Expected O, but got Unknown
		//IL_0aae: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ab8: Expected O, but got Unknown
		//IL_0abe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ac3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ace: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ad9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ae9: Expected O, but got Unknown
		//IL_0ae4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aee: Expected O, but got Unknown
		//IL_0af4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0af9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b04: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b0f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b1f: Expected O, but got Unknown
		//IL_0b1a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b24: Expected O, but got Unknown
		//IL_0b2a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b2f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b3a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b45: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b55: Expected O, but got Unknown
		//IL_0b50: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b5a: Expected O, but got Unknown
		//IL_0b60: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b65: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b70: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b7b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b8b: Expected O, but got Unknown
		//IL_0b86: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b90: Expected O, but got Unknown
		//IL_0b96: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b9b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ba6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bb1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bc1: Expected O, but got Unknown
		//IL_0bbc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bc6: Expected O, but got Unknown
		//IL_0bcc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bd1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bdc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0be7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bf7: Expected O, but got Unknown
		//IL_0bf2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bfc: Expected O, but got Unknown
		//IL_0c02: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c07: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c12: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c1d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c2d: Expected O, but got Unknown
		//IL_0c28: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c32: Expected O, but got Unknown
		//IL_0c38: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c3d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c48: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c53: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c63: Expected O, but got Unknown
		//IL_0c5e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c68: Expected O, but got Unknown
		//IL_0c6e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c73: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c7e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c89: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c99: Expected O, but got Unknown
		//IL_0c94: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c9e: Expected O, but got Unknown
		//IL_0ca4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ca9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cb4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cbf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ccf: Expected O, but got Unknown
		//IL_0cca: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cd4: Expected O, but got Unknown
		//IL_0cda: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cdf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cea: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cf5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d05: Expected O, but got Unknown
		//IL_0d00: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d0a: Expected O, but got Unknown
		//IL_0d10: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d15: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d20: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d2b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d3b: Expected O, but got Unknown
		//IL_0d36: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d40: Expected O, but got Unknown
		//IL_0d46: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d4b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d56: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d61: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d71: Expected O, but got Unknown
		//IL_0d6c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d76: Expected O, but got Unknown
		//IL_0d7c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d81: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d8c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d97: Unknown result type (might be due to invalid IL or missing references)
		//IL_0da7: Expected O, but got Unknown
		//IL_0da2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0dac: Expected O, but got Unknown
		//IL_0db2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0db7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0dc2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0dcd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ddd: Expected O, but got Unknown
		//IL_0dd8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0de2: Expected O, but got Unknown
		//IL_0de8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ded: Unknown result type (might be due to invalid IL or missing references)
		//IL_0df8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e03: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e13: Expected O, but got Unknown
		//IL_0e0e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e18: Expected O, but got Unknown
		//IL_0e1e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e23: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e2e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e39: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e49: Expected O, but got Unknown
		//IL_0e44: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e4e: Expected O, but got Unknown
		//IL_0e54: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e59: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e60: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e6c: Expected O, but got Unknown
		//IL_0e67: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e71: Expected O, but got Unknown
		//IL_0e77: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e7c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e83: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e8f: Expected O, but got Unknown
		//IL_0e8a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e94: Expected O, but got Unknown
		//IL_0e9a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e9f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ea6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0eb2: Expected O, but got Unknown
		//IL_0ead: Unknown result type (might be due to invalid IL or missing references)
		//IL_0eb7: Expected O, but got Unknown
		//IL_0ebd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ec2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ecd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ed8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ee8: Expected O, but got Unknown
		//IL_0ee3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0eed: Expected O, but got Unknown
		//IL_0ef3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ef8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f03: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f0e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f1e: Expected O, but got Unknown
		//IL_0f19: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f23: Expected O, but got Unknown
		//IL_0f29: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f2e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f39: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f44: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f54: Expected O, but got Unknown
		//IL_0f4f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f59: Expected O, but got Unknown
		//IL_0f5f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f64: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f6f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f7a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f8a: Expected O, but got Unknown
		//IL_0f85: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f8f: Expected O, but got Unknown
		//IL_0f95: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f9a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fa5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fb0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fc0: Expected O, but got Unknown
		//IL_0fbb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fc5: Expected O, but got Unknown
		//IL_0fcb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fd0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fd7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fe4: Expected O, but got Unknown
		//IL_0fdf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fe9: Expected O, but got Unknown
		//IL_0fef: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ff4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ffb: Unknown result type (might be due to invalid IL or missing references)
		//IL_1008: Expected O, but got Unknown
		//IL_1003: Unknown result type (might be due to invalid IL or missing references)
		//IL_100d: Expected O, but got Unknown
		//IL_1013: Unknown result type (might be due to invalid IL or missing references)
		//IL_1018: Unknown result type (might be due to invalid IL or missing references)
		//IL_1023: Unknown result type (might be due to invalid IL or missing references)
		//IL_102e: Unknown result type (might be due to invalid IL or missing references)
		//IL_103e: Expected O, but got Unknown
		//IL_1039: Unknown result type (might be due to invalid IL or missing references)
		//IL_1043: Expected O, but got Unknown
		//IL_1049: Unknown result type (might be due to invalid IL or missing references)
		//IL_104e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1055: Unknown result type (might be due to invalid IL or missing references)
		//IL_1062: Expected O, but got Unknown
		//IL_105d: Unknown result type (might be due to invalid IL or missing references)
		//IL_1067: Expected O, but got Unknown
		//IL_106d: Unknown result type (might be due to invalid IL or missing references)
		//IL_1072: Unknown result type (might be due to invalid IL or missing references)
		//IL_1079: Unknown result type (might be due to invalid IL or missing references)
		//IL_1086: Expected O, but got Unknown
		//IL_1081: Unknown result type (might be due to invalid IL or missing references)
		//IL_108b: Expected O, but got Unknown
		//IL_1091: Unknown result type (might be due to invalid IL or missing references)
		//IL_1096: Unknown result type (might be due to invalid IL or missing references)
		//IL_109d: Unknown result type (might be due to invalid IL or missing references)
		//IL_10aa: Expected O, but got Unknown
		//IL_10a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_10af: Expected O, but got Unknown
		//IL_10b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_10ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_10c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_10cd: Expected O, but got Unknown
		//IL_10c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_10d2: Expected O, but got Unknown
		//IL_10d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_10dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_10e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_10f1: Expected O, but got Unknown
		//IL_10ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_10f6: Expected O, but got Unknown
		//IL_10fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_1101: Unknown result type (might be due to invalid IL or missing references)
		//IL_110c: Unknown result type (might be due to invalid IL or missing references)
		//IL_1117: Unknown result type (might be due to invalid IL or missing references)
		//IL_1127: Expected O, but got Unknown
		//IL_1122: Unknown result type (might be due to invalid IL or missing references)
		//IL_112c: Expected O, but got Unknown
		//IL_1132: Unknown result type (might be due to invalid IL or missing references)
		//IL_1137: Unknown result type (might be due to invalid IL or missing references)
		//IL_1142: Unknown result type (might be due to invalid IL or missing references)
		//IL_114d: Unknown result type (might be due to invalid IL or missing references)
		//IL_115d: Expected O, but got Unknown
		//IL_1158: Unknown result type (might be due to invalid IL or missing references)
		//IL_1162: Expected O, but got Unknown
		//IL_1168: Unknown result type (might be due to invalid IL or missing references)
		//IL_116d: Unknown result type (might be due to invalid IL or missing references)
		//IL_1178: Unknown result type (might be due to invalid IL or missing references)
		//IL_1183: Unknown result type (might be due to invalid IL or missing references)
		//IL_1193: Expected O, but got Unknown
		//IL_118e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1198: Expected O, but got Unknown
		//IL_119e: Unknown result type (might be due to invalid IL or missing references)
		//IL_11a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_11ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_11b8: Expected O, but got Unknown
		//IL_11b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_11bd: Expected O, but got Unknown
		//IL_11c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_11c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_11d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_11de: Unknown result type (might be due to invalid IL or missing references)
		//IL_11ee: Expected O, but got Unknown
		//IL_11e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_11f3: Expected O, but got Unknown
		//IL_11f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_11fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_1209: Unknown result type (might be due to invalid IL or missing references)
		//IL_1214: Unknown result type (might be due to invalid IL or missing references)
		//IL_1224: Expected O, but got Unknown
		//IL_121f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1229: Expected O, but got Unknown
		//IL_122f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1234: Unknown result type (might be due to invalid IL or missing references)
		//IL_123f: Unknown result type (might be due to invalid IL or missing references)
		//IL_124a: Unknown result type (might be due to invalid IL or missing references)
		//IL_125a: Expected O, but got Unknown
		//IL_1255: Unknown result type (might be due to invalid IL or missing references)
		//IL_125f: Expected O, but got Unknown
		debuffResistance = config.Bind<bool>("General", "Freeze/Nullify Immune", false, "Toggle the debuff resistance for loop 1, will not turn off for loops 2 and up");
		phase1BaseHPScaling = config.Bind<float>("Scaling First Loop", "P1 HP", 0f, "HP boost percentage for Phase 1 FIRST LOOP (5 stages)");
		phase2BaseHPScaling = config.Bind<float>("Scaling First Loop", "P2 HP", 0f, "HP boost percentage for Phase 2 FIRST LOOP");
		phase3BaseHPScaling = config.Bind<float>("Scaling First Loop", "P3 HP", 0f, "HP boost percentage for Phase 3 FIRST LOOP");
		phase4BaseHPScaling = config.Bind<float>("Scaling First Loop", "P4 HP", 0f, "HP boost percentage for Phase 4 FIRST LOOP");
		phase1BaseMobilityScaling = config.Bind<float>("Scaling First Loop", "P1 Mobility", 0f, "Mobility boost percentage for Phase 1 FIRST LOOP");
		phase2BaseMobilityScaling = config.Bind<float>("Scaling First Loop", "P2 Mobility", 0f, "Mobility boost percentage for Phase 2 FIRST LOOP");
		phase3BaseMobilityScaling = config.Bind<float>("Scaling First Loop", "P3 Mobility", 0f, "Mobility boost percentage for Phase 3 FIRST LOOP");
		phase1LoopHPScaling = config.Bind<float>("Scaling Per Loop", "P1 Loop HP", 0.2f, "HP boost percentage for Phase 1 PER LOOP (every 5 stages)");
		phase2LoopHPScaling = config.Bind<float>("Scaling Per Loop", "P2 Loop HP", 0.3f, "HP boost percentage for Phase 2 PER LOOP");
		phase3LoopHPScaling = config.Bind<float>("Scaling Per Loop", "P3 Loop HP", 0.4f, "HP boost percentage for Phase 3 PER LOOP");
		phase4LoopHPScaling = config.Bind<float>("Scaling Per Loop", "P4 Loop HP", 0.5f, "HP boost percentage for Phase 4 PER LOOP");
		phase1LoopMobilityScaling = config.Bind<float>("Scaling Per Loop", "P1 Loop Mobility", 0.15f, "Mobility (movementspd, acceleration, turningspd) boost percentage for Phase 1 PER LOOP");
		phase2LoopMobilityScaling = config.Bind<float>("Scaling Per Loop", "P2 Loop Mobility", 0.25f, "Mobility boost percentage for Phase 2 PER LOOP");
		phase3LoopMobilityScaling = config.Bind<float>("Scaling Per Loop", "P3 Loop Mobility", 0.35f, "Mobility boost percentage for Phase 3 PER LOOP");
		phase1PlayerHPScaling = config.Bind<float>("Player Scaling", "P1 HP Scaling", 0.0125f, "HP boost percentage for Phase 1 PER PLAYER");
		phase2PlayerHPScaling = config.Bind<float>("Player Scaling", "P2 HP Scaling", 0.025f, "HP boost percentage for Phase 2 PER PLAYER");
		phase3PlayerHPScaling = config.Bind<float>("Player Scaling", "P3 HP Scaling", 0.05f, "HP boost percentage for Phase 3 PER PLAYER");
		phase4PlayerHPScaling = config.Bind<float>("Player Scaling", "P4 HP Scaling", 0.075f, "HP boost percentage for Phase 4 PER PLAYER");
		phase1PlayerMobilityScaling = config.Bind<float>("Player Scaling", "P1 Mobility Scaling", 0.0125f, "Mobility boost percentage for Phase 1 PER PLAYER");
		phase2PlayerMobilityScaling = config.Bind<float>("Player Scaling", "P2 Mobility Scaling", 0.025f, "Mobility boost percentage for Phase 2 PER PLAYER");
		phase3PlayerMobilityScaling = config.Bind<float>("Player Scaling", "P3 Mobility Scaling", 0.05f, "Mobility boost percentage for Phase 3 PER PLAYER");
		basehealth = config.Bind<float>("Stats", "Base Health", 1100f, "Vanilla: 1000");
		levelhealth = config.Bind<float>("Stats", "Level Health", 350f, "Health gained per level. Vanilla: 300");
		basedamage = config.Bind<float>("Stats", "Base Damage", 15f, "Vanilla: 16");
		leveldamage = config.Bind<float>("Stats", "Level Damage", 2.75f, "Damage gained per level. Vanilla: 3.2");
		basearmor = config.Bind<float>("Stats", "Base Armor", 30f, "Vanilla: 20");
		baseattackspeed = config.Bind<float>("Stats", "Base Attack Speed", 1.25f, "Vanilla: 1");
		basespeed = config.Bind<float>("Movement", "Base Move Speed", 16f, "Vanilla: 15");
		mass = config.Bind<float>("Movement", "Mass", 5000f, "Recommended to increase if you increase his movement speed. Vanilla: 900");
		turningspeed = config.Bind<float>("Movement", "Turn Speed", 540f, "Vanilla: 270");
		jumpingpower = config.Bind<float>("Movement", "Moon Shoes", 75f, "How high Mithrix jumps. Vanilla: 25");
		acceleration = config.Bind<float>("Movement", "Acceleration", 350f, "Vanilla: 45");
		aircontrol = config.Bind<float>("Movement", "Air Control", 1.5f, "Vanilla: 0.25");
		PrimStocks = config.Bind<int>("Skills", "Primary Stocks", 1, "Max Stocks for Mithrix's Weapon Slam. Vanilla: 1");
		SecStocks = config.Bind<int>("Skills", "Secondary Stocks", 1, "Max Stocks for Mithrix's Dash Attack. Vanilla: 1");
		UtilStocks = config.Bind<int>("Skills", "Util Stocks", 2, "Max Stocks for Mithrix's Dash. Vanilla: 2");
		PrimCD = config.Bind<float>("Skills", "Primary Cooldown", 4f, "Cooldown for Mithrix's Weapon Slam. Vanilla: 4");
		SecCD = config.Bind<float>("Skills", "Secondary Cooldown", 4.5f, "Cooldown for Mithrix's Dash Attack. Vanilla: 5");
		UtilCD = config.Bind<float>("Skills", "Util Cooldown", 2.5f, "Cooldown for Mithrix's Dash. Vanilla: 3");
		SpecialCD = config.Bind<float>("Skills", "Special Cooldown", 30f, "Cooldown for Mithrix's Jump Attack. Vanilla: 30");
		CrushingLeap = config.Bind<float>("New Skills", "Crushing Leap", 2f, "How long Mithrix stays in the air during the crushing leap. Vanilla: N/A");
		P2SuperShardInterval = config.Bind<float>("New Skills", "P2 Ult Super Shards", 0.6f, "Interval at which super shards are fired in P2 Ult in seconds. Vanilla: N/A");
		SuperShardWeight = config.Bind<int>("New Skills", "Super Shards", 6, "How many shards are in 1 super shard. Vanilla: N/A");
		P2UltCount = config.Bind<int>("New Skills", "P2 Ult Bursts", 4, "Total times the shrapnel waves fire in phase 2 ultimate. Vanilla: N/A");
		P2UltOrbCount = config.Bind<int>("New Skills", "P2 Ult Waves", 8, "Total shrapnel waves and golem projectiles fired in a circle in phase 2 ultimate. Vanilla: N/A");
		P2UltDuration = config.Bind<float>("New Skills", "P2 Ult Duration", 6f, "How long phase 2 ultimate lasts. Vanilla: N/A");
		SuperShardCount = config.Bind<int>("New Skills", "Super Shard Stocks", 3, "How many super shards Mithrix can fire before CD. Vanilla: N/A");
		SuperShardCD = config.Bind<float>("New Skills", "Super Shard CD", 5f, "How long it takes for Mithrix to fire super shards again. Vanilla: N/A");
		SlamOrbProjectileCount = config.Bind<int>("Skill Mods", "Orb Projectile Count", 6, "Orbs fired by weapon slam in a circle. Vanilla: N/A");
		SlamShardCount = config.Bind<int>("Skill Mods", "Slam Shard Count", 4, "Super Shards fired by weapon slam in a circle. Vanilla: N/A");
		DashProjectileCount = config.Bind<int>("Skill Mods", "Dash Projectile Count", 3, "Projectiles (Golem, Exploder, Shards) fired by dash in a cone. Vanilla: N/A");
		LunarShardAdd = config.Bind<int>("Skill Mods", "Shard Add Count", 5, "Bonus shards added to each shot of lunar shards. Vanilla: N/A");
		UltimateWaves = config.Bind<int>("Skill Mods", "P3 Ult Lines", 12, "Total lines in ultimate per burst. Vanilla: 4");
		UltimateCount = config.Bind<int>("Skill Mods", "P3 Ult Bursts", 8, "Total times the ultimate fires. Vanilla: 4");
		UltimateDuration = config.Bind<float>("Skill Mods", "P3 Ult Duration", 8f, "How long ultimate lasts. Vanilla: 8");
		JumpRecast = config.Bind<float>("Skill Mods", "Recast Chance", 0f, "Chance Mithrix has to recast his jump skill. USE WITH CAUTION. Vanilla: 0");
		JumpPause = config.Bind<float>("Skill Mods", "Jump Delay", 0.3f, "How long Mithrix spends in the air when using his jump special. Vanilla: 3");
		JumpWaveCount = config.Bind<int>("Skill Mods", "Jump Wave Count", 16, "Shockwave count when Mithrix lands after a jump. Vanilla: 12");
		ShardHoming = config.Bind<float>("Skill Mods", "Shard Homing", 25f, "How strongly lunar shards home in to targets. Vanilla: 20");
		ShardRange = config.Bind<float>("Skill Mods", "Shard Range", 100f, "Range (distance) in which shards look for targets. Vanilla: 80");
		ShardCone = config.Bind<float>("Skill Mods", "Shard Cone", 120f, "Cone (Angle) in which shards look for targets. Vanilla: 90");
		ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(debuffResistance));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase1BaseHPScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase2BaseHPScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase3BaseHPScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase4BaseHPScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase1BaseMobilityScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase2BaseMobilityScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase3BaseMobilityScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase1LoopHPScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase2LoopHPScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase3LoopHPScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase4LoopHPScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.025f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase1LoopMobilityScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.05f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase2LoopMobilityScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.05f
		}));
		ModSettingsManager.AddOption((BaseOption)new StepSliderOption(phase3LoopMobilityScaling, new StepSliderConfig
		{
			min = 0f,
			max = 1f,
			increment = 0.05f
		}));
		ModSettingsManager.AddOption((Bas