Decompiled source of ZetTweaks v1.2.0

plugins/ZetTweaks/ZetTweaks.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.Missions.Arena.NullWard;
using EntityStates.NewtMonster;
using IL.EntityStates.Missions.Arena.NullWard;
using IL.RoR2;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates.Missions.Arena.NullWard;
using On.EntityStates.NewtMonster;
using On.RoR2;
using On.RoR2.UI.LogBook;
using On.RoR2.UI.MainMenu;
using RoR2;
using RoR2.CharacterAI;
using RoR2.Items;
using RoR2.Navigation;
using RoR2.UI.MainMenu;
using UnityEngine;
using UnityEngine.Networking;

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

public static class GameplayModule
{
	[CompilerGenerated]
	private sealed class <>c__DisplayClass289_0
	{
		public ILLabel jumpTo;

		internal bool <SelfCrowbarHook>b__3(Instruction x)
		{
			return ILPatternMatchingExt.MatchBle(x, ref jumpTo);
		}
	}

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

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

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

		public static Func<HealthComponent, CharacterBody, bool> <>9__289_4;

		public static Manipulator <>9__289_0;

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

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

		public static Func<HealthComponent, CharacterBody, bool> <>9__290_4;

		public static Manipulator <>9__290_0;

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

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

		public static Func<HealthComponent, CharacterBody, bool> <>9__291_4;

		public static Manipulator <>9__291_0;

		public static hook_PlaceTeleporter <>9__292_0;

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

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

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

		public static Manipulator <>9__293_0;

		public static hook_FixedUpdate <>9__294_0;

		public static hook_BeginRound <>9__295_0;

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

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

		public static Manipulator <>9__300_0;

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

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

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

		public static Func<uint, uint> <>9__301_4;

		public static Manipulator <>9__301_0;

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

		public static Func<uint, ShrineBloodBehavior, uint> <>9__302_2;

		public static Manipulator <>9__302_0;

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

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

		public static Func<float, BossGroup, int, int, float> <>9__303_3;

		public static Manipulator <>9__303_0;

		public static hook_OnEnable <>9__304_0;

		public static hook_OnDisable <>9__304_1;

		public static hook_FixedUpdate <>9__304_2;

		public static hook_OnEnter <>9__308_0;

		public static hook_OnExit <>9__308_1;

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

		public static Func<float> <>9__309_1;

		public static hook_Awake <>9__310_0;

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

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

		public static Func<PickupDef, PickupDef> <>9__312_4;

		public static Manipulator <>9__312_0;

		public static hook_GetOptionsFromPickupIndex <>9__314_0;

		public static hook_TryZoneStart <>9__317_0;

		public static Action<CharacterBody, CharacterMaster> <>9__324_1;

		public static Manipulator <>9__324_0;

		public static hook_Awake <>9__327_0;

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

		public static Func<float> <>9__328_2;

		public static Manipulator <>9__328_0;

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

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

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

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

		public static Func<ShrineChanceBehavior, Interactor, PickupIndex> <>9__329_5;

		public static Func<PickupIndex, bool> <>9__329_6;

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

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

		public static Manipulator <>9__329_0;

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

		public static Func<Color, ShrineChanceBehavior, PickupIndex, Color> <>9__330_2;

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

		public static Func<Color, ShrineChanceBehavior, PickupIndex, Color> <>9__330_4;

		public static Manipulator <>9__330_0;

		internal void <SelfCrowbarHook>b__289_0(ILContext il)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			<>c__DisplayClass289_0 CS$<>8__locals0 = new <>c__DisplayClass289_0();
			ILCursor val = new ILCursor(il);
			CS$<>8__locals0.jumpTo = null;
			if (val.TryGotoNext(new Func<Instruction, bool>[3]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 22),
				(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 0),
				(Instruction x) => ILPatternMatchingExt.MatchBle(x, ref CS$<>8__locals0.jumpTo)
			}))
			{
				val.Index += 3;
				val.Emit(OpCodes.Ldarg, 0);
				val.Emit(OpCodes.Ldloc, 1);
				val.EmitDelegate<Func<HealthComponent, CharacterBody, bool>>((Func<HealthComponent, CharacterBody, bool>)((HealthComponent healthComponent, CharacterBody atkBody) => ((Object)(object)healthComponent.body == (Object)(object)atkBody) ? true : false));
				val.Emit(OpCodes.Brtrue, (object)CS$<>8__locals0.jumpTo);
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - SelfCrowbarHook Failed!");
			}
		}

		internal bool <SelfCrowbarHook>b__289_1(Instruction x)
		{
			return ILPatternMatchingExt.MatchLdloc(x, 22);
		}

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

		internal bool <SelfCrowbarHook>b__289_4(HealthComponent healthComponent, CharacterBody atkBody)
		{
			if ((Object)(object)healthComponent.body == (Object)(object)atkBody)
			{
				return true;
			}
			return false;
		}

		internal void <SelfFocusHook>b__290_0(ILContext il)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			<>c__DisplayClass290_0 CS$<>8__locals0 = new <>c__DisplayClass290_0();
			ILCursor val = new ILCursor(il);
			CS$<>8__locals0.jumpTo = null;
			if (val.TryGotoNext(new Func<Instruction, bool>[3]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 27),
				(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 0),
				(Instruction x) => ILPatternMatchingExt.MatchBle(x, ref CS$<>8__locals0.jumpTo)
			}))
			{
				val.Index += 3;
				val.Emit(OpCodes.Ldarg, 0);
				val.Emit(OpCodes.Ldloc, 1);
				val.EmitDelegate<Func<HealthComponent, CharacterBody, bool>>((Func<HealthComponent, CharacterBody, bool>)((HealthComponent healthComponent, CharacterBody atkBody) => ((Object)(object)healthComponent.body == (Object)(object)atkBody) ? true : false));
				val.Emit(OpCodes.Brtrue, (object)CS$<>8__locals0.jumpTo);
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - SelfFocusHook Failed!");
			}
		}

		internal bool <SelfFocusHook>b__290_1(Instruction x)
		{
			return ILPatternMatchingExt.MatchLdloc(x, 27);
		}

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

		internal bool <SelfFocusHook>b__290_4(HealthComponent healthComponent, CharacterBody atkBody)
		{
			if ((Object)(object)healthComponent.body == (Object)(object)atkBody)
			{
				return true;
			}
			return false;
		}

		internal void <SelfWatchHook>b__291_0(ILContext il)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			<>c__DisplayClass291_0 CS$<>8__locals0 = new <>c__DisplayClass291_0();
			ILCursor val = new ILCursor(il);
			CS$<>8__locals0.jumpTo = null;
			if (val.TryGotoNext(new Func<Instruction, bool>[3]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 28),
				(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 0),
				(Instruction x) => ILPatternMatchingExt.MatchBle(x, ref CS$<>8__locals0.jumpTo)
			}))
			{
				val.Index += 3;
				val.Emit(OpCodes.Ldarg, 0);
				val.Emit(OpCodes.Ldloc, 1);
				val.EmitDelegate<Func<HealthComponent, CharacterBody, bool>>((Func<HealthComponent, CharacterBody, bool>)((HealthComponent healthComponent, CharacterBody atkBody) => ((Object)(object)healthComponent.body == (Object)(object)atkBody) ? true : false));
				val.Emit(OpCodes.Brtrue, (object)CS$<>8__locals0.jumpTo);
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - SelfWatchHook Failed!");
			}
		}

		internal bool <SelfWatchHook>b__291_1(Instruction x)
		{
			return ILPatternMatchingExt.MatchLdloc(x, 28);
		}

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

		internal bool <SelfWatchHook>b__291_4(HealthComponent healthComponent, CharacterBody atkBody)
		{
			if ((Object)(object)healthComponent.body == (Object)(object)atkBody)
			{
				return true;
			}
			return false;
		}

		internal void <PlaceTeleporterHook>b__292_0(orig_PlaceTeleporter orig, SceneDirector self)
		{
			if ((Object)(object)self.teleporterSpawnCard != (Object)null)
			{
				string text = ((Run.instance.NetworkstageClearCount >= Run.stagesPerLoop - 1) ? "iscLunarTeleporter" : "iscTeleporter");
				SpawnCard val = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/" + text);
				if (Object.op_Implicit((Object)(object)val))
				{
					self.teleporterSpawnCard = val;
				}
				else
				{
					Debug.LogWarning((object)("ZetTweaks - interactablespawncard/" + text + " could not be found!"));
				}
			}
			orig.Invoke(self);
		}

		internal void <BazaarGestureHook>b__293_0(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext(new Func<Instruction, bool>[2]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Items).GetField("AutoCastEquipment")),
				(Instruction x) => ILPatternMatchingExt.MatchCall<Inventory>(x, "GetItemCount")
			}))
			{
				val.Index += 2;
				val.EmitDelegate<Func<int, int>>((Func<int, int>)((int count) => (!(SceneInfo.instance.sceneDef.nameToken == "MAP_BAZAAR_TITLE")) ? count : 0));
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - BazaarGestureHook Failed!");
			}
		}

		internal bool <BazaarGestureHook>b__293_1(Instruction x)
		{
			return ILPatternMatchingExt.MatchLdsfld(x, typeof(Items).GetField("AutoCastEquipment"));
		}

		internal bool <BazaarGestureHook>b__293_2(Instruction x)
		{
			return ILPatternMatchingExt.MatchCall<Inventory>(x, "GetItemCount");
		}

		internal int <BazaarGestureHook>b__293_3(int count)
		{
			if (SceneInfo.instance.sceneDef.nameToken == "MAP_BAZAAR_TITLE")
			{
				return 0;
			}
			return count;
		}

		internal void <BazaarPreventKickoutHook>b__294_0(orig_FixedUpdate orig, KickFromShop self)
		{
			((EntityState)self).outer.SetNextStateToMain();
		}

		internal void <VoidRecoveryHook>b__295_0(orig_BeginRound orig, ArenaMissionController self)
		{
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			if (!NetworkServer.active)
			{
				return;
			}
			float value = VoidHealthRecoveryCfg.Value;
			float value2 = VoidShieldRecoveryCfg.Value;
			if (!(value > 0f) && !(value2 > 0f))
			{
				return;
			}
			for (int i = 0; i < CharacterMaster.readOnlyInstancesList.Count; i++)
			{
				CharacterBody body = CharacterMaster.readOnlyInstancesList[i].GetBody();
				if (Object.op_Implicit((Object)(object)body))
				{
					HealthComponent healthComponent = body.healthComponent;
					if (!Compat.DisableVoidHealthHeal && value > 0f)
					{
						healthComponent.Heal(healthComponent.fullHealth * value, default(ProcChainMask), true);
					}
					if (value2 > 0f)
					{
						healthComponent.RechargeShield(healthComponent.fullShield * value2);
					}
				}
			}
		}

		internal void <DirectorMoneyHook>b__300_0(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext(new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchStfld(x, "RoR2.CombatDirector/DirectorMoneyWave", "multiplier")
			}))
			{
				val.EmitDelegate<Func<float, float>>((Func<float, float>)delegate(float value)
				{
					Run instance = Run.instance;
					if (Object.op_Implicit((Object)(object)instance) && instance.stageClearCount < DirectorStageLimitCfg.Value)
					{
						value *= DirectorMoneyCfg.Value;
					}
					return value;
				});
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - DirectorMoneyHook Failed!");
			}
		}

		internal bool <DirectorMoneyHook>b__300_1(Instruction x)
		{
			return ILPatternMatchingExt.MatchStfld(x, "RoR2.CombatDirector/DirectorMoneyWave", "multiplier");
		}

		internal float <DirectorMoneyHook>b__300_2(float value)
		{
			Run instance = Run.instance;
			if (Object.op_Implicit((Object)(object)instance) && instance.stageClearCount < DirectorStageLimitCfg.Value)
			{
				value *= DirectorMoneyCfg.Value;
			}
			return value;
		}

		internal void <GoldFromKillHook>b__301_0(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext(new Func<Instruction, bool>[3]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
				(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<DeathRewards>(x, "get_goldReward"),
				(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 2)
			}))
			{
				val.Index += 3;
				val.Emit(OpCodes.Ldloc, 2);
				val.EmitDelegate<Func<uint, uint>>((Func<uint, uint>)delegate(uint reward)
				{
					int participatingPlayerCount = Run.instance.participatingPlayerCount;
					int count = PlayerCharacterMasterController.instances.Count;
					if (participatingPlayerCount != count)
					{
						int num = participatingPlayerCount / count;
						float num2 = Mathf.Max(1f, (float)num - 1f);
						int num3 = num + 2;
						int stageClearCount = Run.instance.stageClearCount;
						float num4 = 0.5f + 0.5f / num2 * Math.Min(num2, count - 1);
						num4 *= (float)Math.Max(0, num3 - stageClearCount) / (float)num3;
						uint num5 = (uint)((float)reward * (num2 * num4 + 1f));
						if (num5 > reward)
						{
							return num5;
						}
					}
					return reward;
				});
				val.Emit(OpCodes.Stloc, 2);
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - GoldFromKillHook Failed!");
			}
		}

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

		internal bool <GoldFromKillHook>b__301_2(Instruction x)
		{
			return ILPatternMatchingExt.MatchCallOrCallvirt<DeathRewards>(x, "get_goldReward");
		}

		internal bool <GoldFromKillHook>b__301_3(Instruction x)
		{
			return ILPatternMatchingExt.MatchStloc(x, 2);
		}

		internal uint <GoldFromKillHook>b__301_4(uint reward)
		{
			int participatingPlayerCount = Run.instance.participatingPlayerCount;
			int count = PlayerCharacterMasterController.instances.Count;
			if (participatingPlayerCount != count)
			{
				int num = participatingPlayerCount / count;
				float num2 = Mathf.Max(1f, (float)num - 1f);
				int num3 = num + 2;
				int stageClearCount = Run.instance.stageClearCount;
				float num4 = 0.5f + 0.5f / num2 * Math.Min(num2, count - 1);
				num4 *= (float)Math.Max(0, num3 - stageClearCount) / (float)num3;
				uint num5 = (uint)((float)reward * (num2 * num4 + 1f));
				if (num5 > reward)
				{
					return num5;
				}
			}
			return reward;
		}

		internal void <ModifyBloodShrineReward>b__302_0(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext(new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 1)
			}))
			{
				val.Emit(OpCodes.Ldarg, 0);
				val.EmitDelegate<Func<uint, ShrineBloodBehavior, uint>>((Func<uint, ShrineBloodBehavior, uint>)delegate(uint money, ShrineBloodBehavior shrine)
				{
					if (Object.op_Implicit((Object)(object)Run.instance))
					{
						uint num = (uint)((float)Run.instance.GetDifficultyScaledCost(25) * ((float)shrine.purchaseInteraction.cost / 100f) * BloodShrineScaleCfg.Value);
						if (num > money)
						{
							return num;
						}
					}
					return money;
				});
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - ModifyBloodShrineReward Failed!");
			}
		}

		internal bool <ModifyBloodShrineReward>b__302_1(Instruction x)
		{
			return ILPatternMatchingExt.MatchStloc(x, 1);
		}

		internal uint <ModifyBloodShrineReward>b__302_2(uint money, ShrineBloodBehavior shrine)
		{
			if (Object.op_Implicit((Object)(object)Run.instance))
			{
				uint num = (uint)((float)Run.instance.GetDifficultyScaledCost(25) * ((float)shrine.purchaseInteraction.cost / 100f) * BloodShrineScaleCfg.Value);
				if (num > money)
				{
					return num;
				}
			}
			return money;
		}

		internal void <BossRewardChanceHook>b__303_0(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext(new Func<Instruction, bool>[2]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
				(Instruction x) => ILPatternMatchingExt.MatchLdfld<BossGroup>(x, "bossDropChance")
			}))
			{
				val.Emit(OpCodes.Ldarg, 0);
				val.Emit(OpCodes.Ldloc, 8);
				val.Emit(OpCodes.Ldloc, 2);
				val.EmitDelegate<Func<float, BossGroup, int, int, float>>((Func<float, BossGroup, int, int, float>)delegate(float rng, BossGroup bossGroup, int i, int count)
				{
					if (bossGroup.forceTier3Reward)
					{
						return rng;
					}
					float num = ((float)i + 1f) / (float)count;
					int num2 = count - i;
					float num3 = 0f;
					if (num > 0.39f)
					{
						num3 = 0.05f;
					}
					if (num > 0.59f)
					{
						num3 = 0.1f;
					}
					if (num > 0.79f)
					{
						num3 = 0.2f;
					}
					if (num2 <= 4)
					{
						num3 = Mathf.Max(0.15f, num3);
					}
					if (num2 <= 2)
					{
						num3 = Mathf.Max(0.25f, num3);
					}
					Debug.LogWarning((object)("Drop Reward - " + i + " (" + (i + 1) + " of " + count + ") progress: " + num + " rng: " + rng + " chance: " + num3 + " - " + (rng <= num3)));
					return (rng <= num3) ? 0f : 1f;
				});
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - BossRewardChanceHook Failed!");
			}
		}

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

		internal bool <BossRewardChanceHook>b__303_2(Instruction x)
		{
			return ILPatternMatchingExt.MatchLdfld<BossGroup>(x, "bossDropChance");
		}

		internal float <BossRewardChanceHook>b__303_3(float rng, BossGroup bossGroup, int i, int count)
		{
			if (bossGroup.forceTier3Reward)
			{
				return rng;
			}
			float num = ((float)i + 1f) / (float)count;
			int num2 = count - i;
			float num3 = 0f;
			if (num > 0.39f)
			{
				num3 = 0.05f;
			}
			if (num > 0.59f)
			{
				num3 = 0.1f;
			}
			if (num > 0.79f)
			{
				num3 = 0.2f;
			}
			if (num2 <= 4)
			{
				num3 = Mathf.Max(0.15f, num3);
			}
			if (num2 <= 2)
			{
				num3 = Mathf.Max(0.25f, num3);
			}
			Debug.LogWarning((object)("Drop Reward - " + i + " (" + (i + 1) + " of " + count + ") progress: " + num + " rng: " + rng + " chance: " + num3 + " - " + (rng <= num3)));
			if (rng <= num3)
			{
				return 0f;
			}
			return 1f;
		}

		internal void <UnlockInteractablesHook>b__304_0(orig_OnEnable orig, OutsideInteractableLocker self)
		{
		}

		internal void <UnlockInteractablesHook>b__304_1(orig_OnDisable orig, OutsideInteractableLocker self)
		{
		}

		internal void <UnlockInteractablesHook>b__304_2(orig_FixedUpdate orig, OutsideInteractableLocker self)
		{
		}

		internal void <VoidCellHook>b__308_0(orig_OnEnter orig, NullWardBaseState self)
		{
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Invalid comparison between Unknown and I4
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Invalid comparison between Unknown and I4
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			float num = (ModifyHoldoutValueCfg.Value ? VoidRadiusCfg.Value : NullWardBaseState.wardRadiusOn);
			if (Object.op_Implicit((Object)(object)Run.instance) && EclipseHoldoutLimitCfg.Value)
			{
				bool flag = (int)Run.instance.selectedDifficulty >= 4;
				if ((int)ZetTweaksPlugin.EclipseArtifact != -1 && RunArtifactManager.instance.IsArtifactEnabled(ZetTweaksPlugin.EclipseArtifact))
				{
					flag = true;
				}
				if (flag)
				{
					if (num <= 20f)
					{
						num *= 2f;
					}
					else if (num < 40f)
					{
						num = 40f;
					}
				}
			}
			NullWardBaseState.wardRadiusOn = num;
			orig.Invoke(self);
		}

		internal void <VoidCellHook>b__308_1(orig_OnExit orig, Active self)
		{
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			HoldoutZoneController holdoutZoneController = self.holdoutZoneController;
			if (Object.op_Implicit((Object)(object)holdoutZoneController))
			{
				VoidCellExitRadius = holdoutZoneController.currentRadius;
				ChildLocator childLocator = ((NullWardBaseState)self).childLocator;
				if (Object.op_Implicit((Object)(object)childLocator))
				{
					Transform val = ((NullWardBaseState)self).childLocator.FindChild("CompleteEffect");
					if (Object.op_Implicit((Object)(object)val))
					{
						float num = VoidCellExitRadius * 0.933f;
						val.localScale = new Vector3(num, num, num);
					}
				}
			}
			orig.Invoke(self);
		}

		internal bool <ReplaceWardRadius>b__309_0(Instruction x)
		{
			return ILPatternMatchingExt.MatchLdsfld(x, typeof(NullWardBaseState).GetField("wardRadiusOn"));
		}

		internal float <ReplaceWardRadius>b__309_1()
		{
			return Mathf.Max(10f, VoidCellExitRadius);
		}

		internal void <HoldoutZoneHook>b__310_0(orig_Awake orig, HoldoutZoneController self)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Invalid comparison between Unknown and I4
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Invalid comparison between Unknown and I4
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			if (ModifyHoldoutValueCfg.Value)
			{
				ModifyHoldoutValues(self);
			}
			if (EclipseHoldoutLimitCfg.Value)
			{
				bool flag = (int)Run.instance.selectedDifficulty >= 4;
				if ((int)ZetTweaksPlugin.EclipseArtifact != -1 && RunArtifactManager.instance.IsArtifactEnabled(ZetTweaksPlugin.EclipseArtifact))
				{
					flag = true;
				}
				if (flag)
				{
					if (self.baseRadius <= 20f)
					{
						self.baseRadius *= 2f;
					}
					else if (self.baseRadius < 40f)
					{
						self.baseRadius = 40f;
					}
				}
			}
			orig.Invoke(self);
		}

		internal void <CommandDropletFix>b__312_0(ILContext il)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			<>c__DisplayClass312_0 CS$<>8__locals0 = new <>c__DisplayClass312_0();
			ILCursor val = new ILCursor(il);
			CS$<>8__locals0.methodInfo = typeof(PickupCatalog).GetMethod("GetPickupDef");
			int num2 = default(int);
			int num = default(int);
			if (val.TryGotoNext(new Func<Instruction, bool>[3]
			{
				(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)CS$<>8__locals0.methodInfo),
				(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref num2),
				(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num)
			}))
			{
				val.Index += 3;
				val.EmitDelegate<Func<PickupDef, PickupDef>>((Func<PickupDef, PickupDef>)delegate(PickupDef pickupDef)
				{
					//IL_001e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0024: Invalid comparison between Unknown and I4
					//IL_0071: Unknown result type (might be due to invalid IL or missing references)
					//IL_0077: Invalid comparison between Unknown and I4
					//IL_0053: Unknown result type (might be due to invalid IL or missing references)
					//IL_003a: Unknown result type (might be due to invalid IL or missing references)
					//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
					//IL_008d: Unknown result type (might be due to invalid IL or missing references)
					if (Compat.ZetAspects && !AspectsResolved)
					{
						ResolveAspects();
					}
					if ((int)pickupDef.itemIndex != -1 && (!Compat.ZetAspects || !AspectCommandGroupItems || !aspectItemIndexes.Contains(pickupDef.itemIndex)))
					{
						ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex);
						if (itemDef.ContainsTag((ItemTag)9))
						{
							return null;
						}
					}
					if ((int)pickupDef.equipmentIndex != -1 && (!Compat.ZetAspects || !AspectCommandGroupEquip || !aspectEquipIndexes.Contains(pickupDef.equipmentIndex)))
					{
						EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(pickupDef.equipmentIndex);
						if (!equipmentDef.canDrop)
						{
							return null;
						}
					}
					return pickupDef;
				});
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - CommandDropletFix Failed!");
			}
		}

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

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

		internal PickupDef <CommandDropletFix>b__312_4(PickupDef pickupDef)
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Invalid comparison between Unknown and I4
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Invalid comparison between Unknown and I4
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			if (Compat.ZetAspects && !AspectsResolved)
			{
				ResolveAspects();
			}
			if ((int)pickupDef.itemIndex != -1 && (!Compat.ZetAspects || !AspectCommandGroupItems || !aspectItemIndexes.Contains(pickupDef.itemIndex)))
			{
				ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex);
				if (itemDef.ContainsTag((ItemTag)9))
				{
					return null;
				}
			}
			if ((int)pickupDef.equipmentIndex != -1 && (!Compat.ZetAspects || !AspectCommandGroupEquip || !aspectEquipIndexes.Contains(pickupDef.equipmentIndex)))
			{
				EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(pickupDef.equipmentIndex);
				if (!equipmentDef.canDrop)
				{
					return null;
				}
			}
			return pickupDef;
		}

		internal Option[] <CleanPickerOptionsHook>b__314_0(orig_GetOptionsFromPickupIndex orig, PickupIndex pickupIndex)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			Option[] options = orig.Invoke(pickupIndex);
			return CleanupOptions(options);
		}

		internal void <PickupTeleportHook>b__317_0(orig_TryZoneStart orig, MapZone self, Collider collider)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Invalid comparison between Unknown and I4
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			if ((int)self.zoneType == 0 && ColliderPickup(collider))
			{
				SpawnCard val = ScriptableObject.CreateInstance<SpawnCard>();
				val.hullSize = (HullClassification)0;
				val.nodeGraphType = (GraphType)0;
				val.prefab = LegacyResourcesAPI.Load<GameObject>("SpawnCards/HelperPrefab");
				DirectorPlacementRule val2 = new DirectorPlacementRule
				{
					placementMode = (PlacementMode)3,
					position = ((Component)collider).transform.position
				};
				GameObject val3 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, val2, RoR2Application.rng));
				if (Object.op_Implicit((Object)(object)val3))
				{
					Debug.Log((object)"tp item back");
					TeleportHelper.TeleportGameObject(((Component)collider).gameObject, val3.transform.position);
					Object.Destroy((Object)(object)val3);
				}
				Object.Destroy((Object)(object)val);
			}
			orig.Invoke(self, collider);
		}

		internal void <HandleDroneDeathHook>b__324_0(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			val.Index = 0;
			val.Emit(OpCodes.Ldarg, 1);
			val.Emit(OpCodes.Ldarg, 0);
			val.EmitDelegate<Action<CharacterBody, CharacterMaster>>((Action<CharacterBody, CharacterMaster>)delegate(CharacterBody body, CharacterMaster master)
			{
				OnDroneBodyDeath(master, body);
			});
		}

		internal void <HandleDroneDeathHook>b__324_1(CharacterBody body, CharacterMaster master)
		{
			OnDroneBodyDeath(master, body);
		}

		internal void <ChanceShrineAwakeHook>b__327_0(orig_Awake orig, ShrineChanceBehavior self)
		{
			bool flag = self.failureChance >= 0.945f;
			if (!flag)
			{
				self.maxPurchaseCount = ChanceShrineCountCfg.Value;
				self.costMultiplierPerPurchase = ChanceShrineCostMultCfg.Value;
				self.refreshTimer = ChanceShrineTimerCfg.Value;
			}
			orig.Invoke(self);
			if (!flag)
			{
				PurchaseInteraction purchaseInteraction = self.purchaseInteraction;
				if (Object.op_Implicit((Object)(object)purchaseInteraction))
				{
					purchaseInteraction.cost = ChanceShrineCostCfg.Value;
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - ChanceShrineAwakeHook : Could not set base cost!");
				}
			}
		}

		internal void <ChanceShrineTimerHook>b__328_0(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext(new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchStfld<ShrineChanceBehavior>(x, "refreshTimer")
			}))
			{
				val.Emit(OpCodes.Pop);
				val.EmitDelegate<Func<float>>((Func<float>)(() => ChanceShrineTimerCfg.Value));
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - ChanceShrineTimerHook Failed!");
			}
		}

		internal bool <ChanceShrineTimerHook>b__328_1(Instruction x)
		{
			return ILPatternMatchingExt.MatchStfld<ShrineChanceBehavior>(x, "refreshTimer");
		}

		internal float <ChanceShrineTimerHook>b__328_2()
		{
			return ChanceShrineTimerCfg.Value;
		}

		internal void <ChanceShrineDropHook>b__329_0(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: 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)
			ILCursor val = new ILCursor(il);
			MethodReference val3 = default(MethodReference);
			if (val.TryGotoNext(new Func<Instruction, bool>[4]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 0),
				(Instruction x) => ILPatternMatchingExt.MatchLdsfld<PickupIndex>(x, "none"),
				(Instruction x) => ILPatternMatchingExt.MatchCall(x, ref val3),
				(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 3)
			}))
			{
				val.Index += 4;
				ILLabel val2 = val.MarkLabel();
				val.Emit(OpCodes.Ldarg, 0);
				val.Emit(OpCodes.Ldarg, 1);
				val.EmitDelegate<Func<ShrineChanceBehavior, Interactor, PickupIndex>>((Func<ShrineChanceBehavior, Interactor, PickupIndex>)((ShrineChanceBehavior self, Interactor interactor) => GenerateDrop(self, interactor)));
				val.Emit(OpCodes.Stloc, 0);
				val.Emit(OpCodes.Ldloc, 0);
				val.EmitDelegate<Func<PickupIndex, bool>>((Func<PickupIndex, bool>)((PickupIndex pickupIndex) => pickupIndex == PickupIndex.none));
				val.Emit(OpCodes.Stloc, 3);
				val.Index = 0;
				if (val.TryGotoNext(new Func<Instruction, bool>[2]
				{
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Component>(x, "GetComponent"),
					(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 1)
				}))
				{
					if (val2 != null)
					{
						val.Index += 2;
						val.Emit(OpCodes.Br, val2.Target);
					}
					else
					{
						Debug.LogWarning((object)"ZetTweaks - ChanceShrineDropHook:Illabel is null!");
					}
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - ChanceShrineDropHook:Bypass Failed!");
				}
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - ChanceShrineDropHook:BypassSetup Failed!");
			}
		}

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

		internal bool <ChanceShrineDropHook>b__329_2(Instruction x)
		{
			return ILPatternMatchingExt.MatchLdsfld<PickupIndex>(x, "none");
		}

		internal bool <ChanceShrineDropHook>b__329_3(Instruction x)
		{
			MethodReference val = default(MethodReference);
			return ILPatternMatchingExt.MatchCall(x, ref val);
		}

		internal bool <ChanceShrineDropHook>b__329_4(Instruction x)
		{
			return ILPatternMatchingExt.MatchStloc(x, 3);
		}

		internal PickupIndex <ChanceShrineDropHook>b__329_5(ShrineChanceBehavior self, Interactor interactor)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: 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)
			return GenerateDrop(self, interactor);
		}

		internal bool <ChanceShrineDropHook>b__329_6(PickupIndex pickupIndex)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			return pickupIndex == PickupIndex.none;
		}

		internal bool <ChanceShrineDropHook>b__329_7(Instruction x)
		{
			return ILPatternMatchingExt.MatchCallOrCallvirt<Component>(x, "GetComponent");
		}

		internal bool <ChanceShrineDropHook>b__329_8(Instruction x)
		{
			return ILPatternMatchingExt.MatchStloc(x, 1);
		}

		internal void <ChanceShrineColorHook>b__330_0(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_004d: 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_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			if (val.TryGotoNext(new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdfld<ShrineChanceBehavior>(x, "colorShrineRewardJackpot")
			}))
			{
				val.Index += 1;
				val.Emit(OpCodes.Ldarg, 0);
				val.Emit(OpCodes.Ldloc, 0);
				val.EmitDelegate<Func<Color, ShrineChanceBehavior, PickupIndex, Color>>((Func<Color, ShrineChanceBehavior, PickupIndex, Color>)((Color color, ShrineChanceBehavior self, PickupIndex pickupIndex) => (self.failureChance >= 0.945f) ? color : GetPickupColor(pickupIndex)));
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - ChanceShrineColorHook:Jackpot Failed!");
			}
			val.Index = 0;
			if (val.TryGotoNext(new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdfld<ShrineChanceBehavior>(x, "colorShrineRewardNormal")
			}))
			{
				val.Index += 1;
				val.Emit(OpCodes.Ldarg, 0);
				val.Emit(OpCodes.Ldloc, 0);
				val.EmitDelegate<Func<Color, ShrineChanceBehavior, PickupIndex, Color>>((Func<Color, ShrineChanceBehavior, PickupIndex, Color>)((Color color, ShrineChanceBehavior self, PickupIndex pickupIndex) => (self.failureChance >= 0.945f) ? color : GetPickupColor(pickupIndex)));
			}
			else
			{
				Debug.LogWarning((object)"ZetTweaks - ChanceShrineColorHook:Normal Failed!");
			}
		}

		internal bool <ChanceShrineColorHook>b__330_1(Instruction x)
		{
			return ILPatternMatchingExt.MatchLdfld<ShrineChanceBehavior>(x, "colorShrineRewardJackpot");
		}

		internal Color <ChanceShrineColorHook>b__330_2(Color color, ShrineChanceBehavior self, PickupIndex pickupIndex)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			if (self.failureChance >= 0.945f)
			{
				return color;
			}
			return GetPickupColor(pickupIndex);
		}

		internal bool <ChanceShrineColorHook>b__330_3(Instruction x)
		{
			return ILPatternMatchingExt.MatchLdfld<ShrineChanceBehavior>(x, "colorShrineRewardNormal");
		}

		internal Color <ChanceShrineColorHook>b__330_4(Color color, ShrineChanceBehavior self, PickupIndex pickupIndex)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			if (self.failureChance >= 0.945f)
			{
				return color;
			}
			return GetPickupColor(pickupIndex);
		}

		internal GameObject <.cctor>b__335_0()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/DroneBackupMaster");
		}

		internal GameObject <.cctor>b__335_1()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/Drone1Master");
		}

		internal GameObject <.cctor>b__335_2()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/FlameDroneMaster");
		}

		internal GameObject <.cctor>b__335_3()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/DroneMissileMaster");
		}

		internal GameObject <.cctor>b__335_4()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/Turret1Master");
		}

		internal GameObject <.cctor>b__335_5()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/MegaDroneMaster");
		}

		internal GameObject <.cctor>b__335_6()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/EquipmentDroneMaster");
		}

		internal GameObject <.cctor>b__335_7()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/EngiTurretMaster");
		}

		internal GameObject <.cctor>b__335_8()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/EngiWalkerTurretMaster");
		}

		internal GameObject <.cctor>b__335_9()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/EngiBeamTurretMaster");
		}

		internal GameObject <.cctor>b__335_10()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/BeetleGuardAllyMaster");
		}

		internal GameObject <.cctor>b__335_11()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/roboBallGreenBuddyMaster");
		}

		internal GameObject <.cctor>b__335_12()
		{
			return LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/roboBallRedBuddyMaster");
		}

		internal SpawnCard <.cctor>b__335_13()
		{
			return (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenTurret1");
		}

		internal SpawnCard <.cctor>b__335_14()
		{
			return (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenMegaDrone");
		}

		internal SpawnCard <.cctor>b__335_15()
		{
			return (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenEquipmentDrone");
		}
	}

	[CompilerGenerated]
	private sealed class <>c__DisplayClass290_0
	{
		public ILLabel jumpTo;

		internal bool <SelfFocusHook>b__3(Instruction x)
		{
			return ILPatternMatchingExt.MatchBle(x, ref jumpTo);
		}
	}

	[CompilerGenerated]
	private sealed class <>c__DisplayClass291_0
	{
		public ILLabel jumpTo;

		internal bool <SelfWatchHook>b__3(Instruction x)
		{
			return ILPatternMatchingExt.MatchBle(x, ref jumpTo);
		}
	}

	[CompilerGenerated]
	private sealed class <>c__DisplayClass312_0
	{
		public MethodInfo methodInfo;

		internal bool <CommandDropletFix>b__1(Instruction x)
		{
			return ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)methodInfo);
		}
	}

	private static readonly Lazy<GameObject> _backupDroneMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/DroneBackupMaster")));

	private static readonly Lazy<GameObject> _drone1Master = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/Drone1Master")));

	private static readonly Lazy<GameObject> _flameDroneMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/FlameDroneMaster")));

	private static readonly Lazy<GameObject> _missileDroneMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/DroneMissileMaster")));

	private static readonly Lazy<GameObject> _turret1Master = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/Turret1Master")));

	private static readonly Lazy<GameObject> _megaDroneMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/MegaDroneMaster")));

	private static readonly Lazy<GameObject> _equipmentDroneMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/EquipmentDroneMaster")));

	private static readonly Lazy<GameObject> _engiTurretMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/EngiTurretMaster")));

	private static readonly Lazy<GameObject> _engiWalkerTurretMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/EngiWalkerTurretMaster")));

	private static readonly Lazy<GameObject> _engiBeamTurretMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/EngiBeamTurretMaster")));

	private static readonly Lazy<GameObject> _beetleGuardAllyMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/BeetleGuardAllyMaster")));

	private static readonly Lazy<GameObject> _roboBallGreenBuddyMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/roboBallGreenBuddyMaster")));

	private static readonly Lazy<GameObject> _roboBallRedBuddyMaster = new Lazy<GameObject>((Func<GameObject>)(() => LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/roboBallRedBuddyMaster")));

	private static readonly Lazy<SpawnCard> _turret1SpawnCard = new Lazy<SpawnCard>((Func<SpawnCard>)(() => (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenTurret1")));

	private static readonly Lazy<SpawnCard> _megaDroneSpawnCard = new Lazy<SpawnCard>((Func<SpawnCard>)(() => (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenMegaDrone")));

	private static readonly Lazy<SpawnCard> _equipDroneSpawnCard = new Lazy<SpawnCard>((Func<SpawnCard>)(() => (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/iscBrokenEquipmentDrone")));

	internal static GameObject LunarEquipmentDropletPrefab;

	private static bool AspectsResolved = false;

	internal static bool AspectCommandGroupItems = false;

	internal static bool AspectCommandGroupEquip = false;

	internal static List<ItemIndex> aspectItemIndexes = new List<ItemIndex>();

	internal static List<EquipmentIndex> aspectEquipIndexes = new List<EquipmentIndex>();

	private static float VoidCellExitRadius = 15f;

	public static ConfigEntry<bool> EnableModuleCfg { get; set; }

	public static ConfigEntry<bool> FixSelfDamageCfg { get; set; }

	public static ConfigEntry<bool> FixMeanderTeleporterCfg { get; set; }

	public static ConfigEntry<bool> BazaarGestureCfg { get; set; }

	public static ConfigEntry<bool> BazaarPreventKickoutCfg { get; set; }

	public static ConfigEntry<float> VoidHealthRecoveryCfg { get; set; }

	public static ConfigEntry<float> VoidShieldRecoveryCfg { get; set; }

	public static ConfigEntry<int> RecolorLunarEquipmentCfg { get; set; }

	public static ConfigEntry<float> MoneyChestGivenCfg { get; set; }

	public static ConfigEntry<int> MoneyStageLimitCfg { get; set; }

	public static ConfigEntry<float> BloodShrineScaleCfg { get; set; }

	public static ConfigEntry<float> DirectorMoneyCfg { get; set; }

	public static ConfigEntry<int> DirectorStageLimitCfg { get; set; }

	public static ConfigEntry<bool> MultitudeMoneyCfg { get; set; }

	public static ConfigEntry<bool> BossDropTweakCfg { get; set; }

	public static ConfigEntry<bool> UnlockInteractablesCfg { get; set; }

	public static ConfigEntry<bool> EclipseHoldoutLimitCfg { get; set; }

	public static ConfigEntry<bool> ModifyHoldoutValueCfg { get; set; }

	public static ConfigEntry<float> TeleRadiusCfg { get; set; }

	public static ConfigEntry<float> TeleTimeCfg { get; set; }

	public static ConfigEntry<float> VoidRadiusCfg { get; set; }

	public static ConfigEntry<float> VoidTimeCfg { get; set; }

	public static ConfigEntry<float> VoidBossRadiusCfg { get; set; }

	public static ConfigEntry<float> VoidBossTimeCfg { get; set; }

	public static ConfigEntry<float> MassRadiusCfg { get; set; }

	public static ConfigEntry<float> MassTimeCfg { get; set; }

	public static ConfigEntry<float> ShipRadiusCfg { get; set; }

	public static ConfigEntry<float> ShipTimeCfg { get; set; }

	public static ConfigEntry<int> MoonHoldoutZonesCfg { get; set; }

	public static ConfigEntry<int> VoidBossHoldoutZonesCfg { get; set; }

	public static ConfigEntry<bool> CommandDropletFixCfg { get; set; }

	public static ConfigEntry<bool> CleanPickerOptionsCfg { get; set; }

	public static ConfigEntry<bool> TeleportLostDropletCfg { get; set; }

	public static ConfigEntry<bool> DroneFriendlyFireFixCfg { get; set; }

	public static ConfigEntry<float> DroneEquipmentDropCfg { get; set; }

	public static ConfigEntry<bool> DroneTC280AnywhereCfg { get; set; }

	public static ConfigEntry<bool> DroneEquipmentAnywhereCfg { get; set; }

	public static ConfigEntry<bool> DroneTC280RepurchasableCfg { get; set; }

	public static ConfigEntry<bool> DroneTurretRepurchasableCfg { get; set; }

	public static ConfigEntry<bool> ModifyChanceShrineCfg { get; set; }

	public static ConfigEntry<int> ChanceShrineCountCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineTimerCfg { get; set; }

	public static ConfigEntry<int> ChanceShrineCostCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineCostMultCfg { get; set; }

	public static ConfigEntry<int> ChanceShrineMaxFailCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineFailureCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineFailureMultCfg { get; set; }

	public static ConfigEntry<bool> ChanceShrineHackedLockCfg { get; set; }

	public static ConfigEntry<bool> ChanceShrineBypassDropTableCfg { get; set; }

	public static ConfigEntry<bool> ChanceShrineLunarConversionCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineEquipmentCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineEquipmentMultCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineCommonCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineCommonMultCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineUncommonCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineUncommonMultCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineLegendaryCfg { get; set; }

	public static ConfigEntry<float> ChanceShrineLegendaryMultCfg { get; set; }

	internal static GameObject BackupDroneMaster => _backupDroneMaster.Value;

	internal static GameObject Drone1Master => _drone1Master.Value;

	internal static GameObject FlameDroneMaster => _flameDroneMaster.Value;

	internal static GameObject MissileDroneMaster => _missileDroneMaster.Value;

	internal static GameObject Turret1Master => _turret1Master.Value;

	internal static GameObject MegaDroneMaster => _megaDroneMaster.Value;

	internal static GameObject EquipmentDroneMaster => _equipmentDroneMaster.Value;

	internal static GameObject EngiTurretMaster => _engiTurretMaster.Value;

	internal static GameObject EngiWalkerTurretMaster => _engiWalkerTurretMaster.Value;

	internal static GameObject EngiBeamTurretMaster => _engiBeamTurretMaster.Value;

	internal static GameObject BeetleGuardAllyMaster => _beetleGuardAllyMaster.Value;

	internal static GameObject RoboBallGreenBuddyMaster => _roboBallGreenBuddyMaster.Value;

	internal static GameObject RoboBallRedBuddyMaster => _roboBallRedBuddyMaster.Value;

	internal static SpawnCard Turret1SpawnCard => _turret1SpawnCard.Value;

	internal static SpawnCard MegaDroneSpawnCard => _megaDroneSpawnCard.Value;

	internal static SpawnCard EquipDroneSpawnCard => _equipDroneSpawnCard.Value;

	internal static void SetupConfig()
	{
		ConfigFile configFile = ZetTweaksPlugin.ConfigFile;
		EnableModuleCfg = configFile.Bind<bool>("2a-Gameplay - Enable", "enableGameplayModule", true, "Enable Gameplay Module.");
		FixSelfDamageCfg = configFile.Bind<bool>("2b-Gameplay - Fixes", "fixSelfDamage", true, "Prevent Focus Crystal, Crowbar and DelicateWatch from increasing self damage.");
		FixMeanderTeleporterCfg = configFile.Bind<bool>("2b-Gameplay - Fixes", "endloopTeleporter", true, "Always spawn Primordial Teleporter after it first appears.");
		BazaarGestureCfg = configFile.Bind<bool>("2b-Gameplay - QOL", "disableBazaarGesture", true, "Prevent Gesture from firing equipment in Bazaar.");
		BazaarPreventKickoutCfg = configFile.Bind<bool>("2b-Gameplay - QOL", "disableBazaarKickout", true, "Prevent damaging the Newt from kicking players from the Bazaar.");
		VoidHealthRecoveryCfg = configFile.Bind<float>("2b-Gameplay - QOL", "voidHealthRecovery", 0.5f, "Recover health fraction when a voidcell is activated. 0 to disable.");
		VoidShieldRecoveryCfg = configFile.Bind<float>("2b-Gameplay - QOL", "voidShieldRecovery", 0.5f, "Recover shield fraction when a voidcell is activated. 0 to disable.");
		RecolorLunarEquipmentCfg = configFile.Bind<int>("2b-Gameplay - Tweak", "recolorLunarEquipment", 1, "Change the color of lunar equipment droplets. 0 = Disabled, 1 = AutoCompat, 2 = Force Enabled");
		MoneyChestGivenCfg = configFile.Bind<float>("2c-Gameplay - Economy", "startingMoney", 1.25f, "Money given at stage start (measured in chests).");
		MoneyStageLimitCfg = configFile.Bind<int>("2c-Gameplay - Economy", "stageMoneyLimit", 5, "Last stage to give start money. 0 to disable.");
		BloodShrineScaleCfg = configFile.Bind<float>("2c-Gameplay - Economy", "bloodShrineScale", 2f, "Minimum money given (measured in chests) when blood shrine takes 100% health. 0 to disable.");
		DirectorMoneyCfg = configFile.Bind<float>("2c-Gameplay - Economy", "directorMoney", 1.1f, "Combat director money wave amount multiplier.");
		DirectorStageLimitCfg = configFile.Bind<int>("2c-Gameplay - Economy", "stageDirectorLimit", 5, "Last stage to modify combat director money. 0 to disable.");
		MultitudeMoneyCfg = configFile.Bind<bool>("2c-Gameplay - Economy", "multitudeMoneyBoost", true, "Decaying boost to money from kills when multitudes is enabled.");
		BossDropTweakCfg = configFile.Bind<bool>("2d-Gameplay - TeleporterBoss", "tweakBossDropRewards", true, "Adjust Teleporter boss drop chance when creating ring of drops - reduced at start and increased near end.");
		UnlockInteractablesCfg = configFile.Bind<bool>("2d-Gameplay - TeleporterBoss", "bossUnlockInteractable", true, "Prevent Teleporter from locking outside interactables.");
		EclipseHoldoutLimitCfg = configFile.Bind<bool>("2e-Gameplay - HoldoutZone", "eclipseHoldoutLimiter", true, "Prevent Eclipse from shrinking small holdout zones.");
		ModifyHoldoutValueCfg = configFile.Bind<bool>("2e-Gameplay - HoldoutZone", "modifyHoldoutValues", true, "Enable or disable changing radius and charge times of holdout zones except eclipse limiter.");
		TeleRadiusCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "teleHoldoutRadius", 90f, "Base radius of teleporter holdout zone. Vanilla is 60");
		TeleTimeCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "teleHoldoutTime", 90f, "Base duration of teleporter holdout zone. Vanilla is 90");
		VoidRadiusCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "voidHoldoutRadius", 20f, "Base radius of void field holdout zone. Vanilla is 15");
		VoidTimeCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "voidHoldoutTime", 45f, "Base duration of void field holdout zone. Vanilla is 60");
		VoidBossRadiusCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "voidBossHoldoutRadius", 30f, "Base radius of deep void holdout zone. Vanilla is 20");
		VoidBossTimeCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "voidBossHoldoutTime", 45f, "Base duration of deep void holdout zone. Vanilla is 60");
		MassRadiusCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "massHoldoutRadius", 30f, "Base radius of pillar of mass holdout zone. Vanilla is 20");
		MassTimeCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "massHoldoutTime", 45f, "Base duration of pillar of mass holdout zone. Vanilla is 60");
		ShipRadiusCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "shipHoldoutRadius", 60f, "Base radius of rescue ship holdout zone. Vanilla is 40");
		ShipTimeCfg = configFile.Bind<float>("2e-Gameplay - HoldoutZone", "shipHoldoutTime", 45f, "Base duration of rescue ship holdout zone. Vanilla is 60");
		MoonHoldoutZonesCfg = configFile.Bind<int>("2e-Gameplay - HoldoutZone", "moonHoldoutZones", 3, "Pillars required to fight Mithrix. Range : 1 - 4");
		VoidBossHoldoutZonesCfg = configFile.Bind<int>("2e-Gameplay - HoldoutZone", "voidBossHoldoutZones", 3, "Pillars required to fight Voidling. Range : 1 - 4");
		CommandDropletFixCfg = configFile.Bind<bool>("2f-Gameplay - Droplet", "commandDropletFix", true, "No command droplet for items that don't give choices.");
		CleanPickerOptionsCfg = configFile.Bind<bool>("2f-Gameplay - Droplet", "cleanPickerOptions", true, "Remove disabled-unobtainable items from command options.");
		TeleportLostDropletCfg = configFile.Bind<bool>("2f-Gameplay - Droplet", "teleportLostDroplet", true, "Teleport pickup droplets that go out of bounds.");
		DroneFriendlyFireFixCfg = configFile.Bind<bool>("2H-Gameplay - Drone", "droneFriendlyFireFix", true, "Prevent most drones from targeting allies.");
		DroneEquipmentDropCfg = configFile.Bind<float>("2H-Gameplay - Drone", "droneEquipmentDrop", 0.25f, "Chance for equipment drones to drop their equipment. 1 = 100% chance");
		DroneTC280RepurchasableCfg = configFile.Bind<bool>("2H-Gameplay - Drone", "droneTC280Repurchasable", true, "Make the TC280 repurchasable after it is destroyed.");
		DroneTurretRepurchasableCfg = configFile.Bind<bool>("2H-Gameplay - Drone", "droneTurretRepurchasable", true, "Make the Gunner Turret repurchasable after it is destroyed.");
		DroneTC280AnywhereCfg = configFile.Bind<bool>("2H-Gameplay - Drone", "droneTC280Anywhere", true, "Allow the TC-280 to spawn anywhere regular drones spawn.");
		DroneEquipmentAnywhereCfg = configFile.Bind<bool>("2H-Gameplay - Drone", "droneEquipmentAnywhere", true, "Allow Equipment Drones to spawn anywhere regular drones spawn.");
		ModifyChanceShrineCfg = configFile.Bind<bool>("2i-Gameplay - Shrine", "modifyChanceShrine", true, "Modify chance shrine behavior.");
		ChanceShrineCountCfg = configFile.Bind<int>("2i-Gameplay - Shrine", "chanceShrineCount", 2, "Maximum successful purchases from a chance shrine.");
		ChanceShrineTimerCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineTimer", 1f, "Time between chance shrine uses. Vanilla is 2");
		ChanceShrineCostCfg = configFile.Bind<int>("2i-Gameplay - Shrine", "chanceShrineCost", 17, "Base cost of chance shrine. Vanilla is 17");
		ChanceShrineCostMultCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineCostMult", 1.4f, "Cost multiplier every time chance shrine is used. Vanilla is 1.4");
		ChanceShrineMaxFailCfg = configFile.Bind<int>("2i-Gameplay - Shrine", "chanceShrineMaxFail", 5, "Consecutive failure effects dont scale past this amount.");
		ChanceShrineFailureCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineFailure", 0.45f, "Base fail chance of chance shrine. Vanilla is 0.45 = 45%");
		ChanceShrineFailureMultCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineFailureMult", 0.9f, "Fail chance multiplier for each consecutive chance shrine failure.");
		ChanceShrineHackedLockCfg = configFile.Bind<bool>("2i-Gameplay - Shrine", "chanceShrineHackedLock", true, "Lock consecutive failure count if price is zero.");
		ChanceShrineBypassDropTableCfg = configFile.Bind<bool>("2i-Gameplay - Shrine", "chanceShrineBypassDropTable", true, "Use custom item tier weights to roll items instead of the default drop table.");
		ChanceShrineLunarConversionCfg = configFile.Bind<bool>("2i-Gameplay - Shrine", "chanceShrineLunarConversion", true, "Allow Eulogy Zero to convert rewards to lunar when using custom weights.");
		ChanceShrineEquipmentCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineEquipment", 9f, "Base equipment drop weight from shrine reward. vanilla is 9");
		ChanceShrineEquipmentMultCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineEquipmentMult", 0.75f, "Equipment drop weight multiplier for each consecutive chance shrine failure.");
		ChanceShrineCommonCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineCommon", 36f, "Base common drop weight from shrine reward. vanilla is 36");
		ChanceShrineCommonMultCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineCommonMult", 0.75f, "Common drop weight multiplier for each consecutive chance shrine failure.");
		ChanceShrineUncommonCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineUncommon", 9f, "Base uncommon drop weight from shrine reward. vanilla is 9");
		ChanceShrineUncommonMultCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineUncommonMult", 1.5f, "Uncommon drop weight multiplier for each consecutive chance shrine failure.");
		ChanceShrineLegendaryCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineLegendary", 1f, "Base legendary drop weight from shrine reward. vanilla is 1");
		ChanceShrineLegendaryMultCfg = configFile.Bind<float>("2i-Gameplay - Shrine", "chanceShrineLegendaryMult", 2f, "Legendary drop weight multiplier for each consecutive chance shrine failure.");
	}

	internal static void Init()
	{
		//IL_0071: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Expected O, but got Unknown
		if (EnableModuleCfg.Value)
		{
			if (FixMeanderTeleporterCfg.Value)
			{
				PlaceTeleporterHook();
			}
			VoidRecoveryHook();
			if (DirectorStageLimitCfg.Value > 0)
			{
				DirectorMoneyHook();
			}
			if (MultitudeMoneyCfg.Value)
			{
				GoldFromKillHook();
			}
			MoonBatteryMissionController.onInstanceChangedGlobal += ChangeRequiredBatteries;
			VoidStageMissionController.Start += new hook_Start(ChangeRequiredDeepVoidCells);
			if (DroneTC280AnywhereCfg.Value || DroneEquipmentAnywhereCfg.Value)
			{
				SceneDirector.onGenerateInteractableCardSelection += AddMissingDroneSpawnCards;
			}
		}
	}

	internal static void LateInit()
	{
		if (!EnableModuleCfg.Value)
		{
			return;
		}
		if (FixSelfDamageCfg.Value && !Compat.DisableSelfDamageFix)
		{
			SelfCrowbarHook();
			if (!Compat.Risky)
			{
				SelfFocusHook();
			}
			SelfWatchHook();
		}
		if (BazaarGestureCfg.Value && !Compat.DisableBazaarGesture)
		{
			BazaarGestureHook();
		}
		if (BazaarPreventKickoutCfg.Value && !Compat.DisableBazaarPreventKickout)
		{
			BazaarPreventKickoutHook();
		}
		if (RecolorLunarEquipmentCfg.Value == 2 || (RecolorLunarEquipmentCfg.Value == 1 && !Compat.WolfoQol))
		{
			RecolorLunarEquipment();
		}
		if (MoneyStageLimitCfg.Value > 0 && !Compat.DisableStarterMoney)
		{
			SceneDirector.onPostPopulateSceneServer += GiveMoney;
		}
		if (BloodShrineScaleCfg.Value > 0f && !Compat.DisableBloodShrineScale)
		{
			ModifyBloodShrineReward();
		}
		if (BossDropTweakCfg.Value && !Compat.DisableBossDropTweak)
		{
			BossRewardChanceHook();
		}
		if (UnlockInteractablesCfg.Value || Compat.UnlockInteractables)
		{
			UnlockInteractablesHook();
		}
		if (ModifyHoldoutValueCfg.Value || EclipseHoldoutLimitCfg.Value)
		{
			VoidCellHook();
			HoldoutZoneHook();
		}
		if (CommandDropletFixCfg.Value && !Compat.DisableCommandDropletFix)
		{
			CommandDropletFix();
		}
		if (CleanPickerOptionsCfg.Value)
		{
			CleanPickerOptionsHook();
		}
		if (TeleportLostDropletCfg.Value && !Compat.DisableTeleportLostDroplet)
		{
			PickupBackgroundCollision();
			PickupTeleportHook();
		}
		if (!Compat.ChenGradius)
		{
			if (DroneFriendlyFireFixCfg.Value)
			{
				Debug.LogWarning((object)"ZetTweaks - Modifying Drone AI");
				ModifyDroneAI();
			}
			HandleDroneDeathHook();
		}
		if (!Compat.DisableChanceShrine && ModifyChanceShrineCfg.Value)
		{
			ChanceShrineAwakeHook();
			ChanceShrineTimerHook();
			ChanceShrineDropHook();
			ChanceShrineColorHook();
		}
	}

	private static void SelfCrowbarHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__289_0;
		if (obj == null)
		{
			Manipulator val = delegate(ILContext il)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Expected O, but got Unknown
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0098: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val2 = new ILCursor(il);
				ILLabel jumpTo = null;
				if (val2.TryGotoNext(new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 22),
					(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchBle(x, ref jumpTo)
				}))
				{
					val2.Index += 3;
					val2.Emit(OpCodes.Ldarg, 0);
					val2.Emit(OpCodes.Ldloc, 1);
					val2.EmitDelegate<Func<HealthComponent, CharacterBody, bool>>((Func<HealthComponent, CharacterBody, bool>)((HealthComponent healthComponent, CharacterBody atkBody) => ((Object)(object)healthComponent.body == (Object)(object)atkBody) ? true : false));
					val2.Emit(OpCodes.Brtrue, (object)jumpTo);
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - SelfCrowbarHook Failed!");
				}
			};
			<>c.<>9__289_0 = val;
			obj = (object)val;
		}
		HealthComponent.TakeDamageProcess += (Manipulator)obj;
	}

	private static void SelfFocusHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__290_0;
		if (obj == null)
		{
			Manipulator val = delegate(ILContext il)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Expected O, but got Unknown
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0098: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val2 = new ILCursor(il);
				ILLabel jumpTo = null;
				if (val2.TryGotoNext(new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 27),
					(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchBle(x, ref jumpTo)
				}))
				{
					val2.Index += 3;
					val2.Emit(OpCodes.Ldarg, 0);
					val2.Emit(OpCodes.Ldloc, 1);
					val2.EmitDelegate<Func<HealthComponent, CharacterBody, bool>>((Func<HealthComponent, CharacterBody, bool>)((HealthComponent healthComponent, CharacterBody atkBody) => ((Object)(object)healthComponent.body == (Object)(object)atkBody) ? true : false));
					val2.Emit(OpCodes.Brtrue, (object)jumpTo);
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - SelfFocusHook Failed!");
				}
			};
			<>c.<>9__290_0 = val;
			obj = (object)val;
		}
		HealthComponent.TakeDamageProcess += (Manipulator)obj;
	}

	private static void SelfWatchHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__291_0;
		if (obj == null)
		{
			Manipulator val = delegate(ILContext il)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Expected O, but got Unknown
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0098: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val2 = new ILCursor(il);
				ILLabel jumpTo = null;
				if (val2.TryGotoNext(new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 28),
					(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchBle(x, ref jumpTo)
				}))
				{
					val2.Index += 3;
					val2.Emit(OpCodes.Ldarg, 0);
					val2.Emit(OpCodes.Ldloc, 1);
					val2.EmitDelegate<Func<HealthComponent, CharacterBody, bool>>((Func<HealthComponent, CharacterBody, bool>)((HealthComponent healthComponent, CharacterBody atkBody) => ((Object)(object)healthComponent.body == (Object)(object)atkBody) ? true : false));
					val2.Emit(OpCodes.Brtrue, (object)jumpTo);
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - SelfWatchHook Failed!");
				}
			};
			<>c.<>9__291_0 = val;
			obj = (object)val;
		}
		HealthComponent.TakeDamageProcess += (Manipulator)obj;
	}

	private static void PlaceTeleporterHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__292_0;
		if (obj == null)
		{
			hook_PlaceTeleporter val = delegate(orig_PlaceTeleporter orig, SceneDirector self)
			{
				if ((Object)(object)self.teleporterSpawnCard != (Object)null)
				{
					string text = ((Run.instance.NetworkstageClearCount >= Run.stagesPerLoop - 1) ? "iscLunarTeleporter" : "iscTeleporter");
					SpawnCard val2 = (SpawnCard)(object)LegacyResourcesAPI.Load<InteractableSpawnCard>("spawncards/interactablespawncard/" + text);
					if (Object.op_Implicit((Object)(object)val2))
					{
						self.teleporterSpawnCard = val2;
					}
					else
					{
						Debug.LogWarning((object)("ZetTweaks - interactablespawncard/" + text + " could not be found!"));
					}
				}
				orig.Invoke(self);
			};
			<>c.<>9__292_0 = val;
			obj = (object)val;
		}
		SceneDirector.PlaceTeleporter += (hook_PlaceTeleporter)obj;
	}

	private static void BazaarGestureHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__293_0;
		if (obj == null)
		{
			Manipulator val = delegate(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				ILCursor val2 = new ILCursor(il);
				if (val2.TryGotoNext(new Func<Instruction, bool>[2]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Items).GetField("AutoCastEquipment")),
					(Instruction x) => ILPatternMatchingExt.MatchCall<Inventory>(x, "GetItemCount")
				}))
				{
					val2.Index += 2;
					val2.EmitDelegate<Func<int, int>>((Func<int, int>)((int count) => (!(SceneInfo.instance.sceneDef.nameToken == "MAP_BAZAAR_TITLE")) ? count : 0));
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - BazaarGestureHook Failed!");
				}
			};
			<>c.<>9__293_0 = val;
			obj = (object)val;
		}
		EquipmentSlot.MyFixedUpdate += (Manipulator)obj;
	}

	private static void BazaarPreventKickoutHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__294_0;
		if (obj == null)
		{
			hook_FixedUpdate val = delegate(orig_FixedUpdate orig, KickFromShop self)
			{
				((EntityState)self).outer.SetNextStateToMain();
			};
			<>c.<>9__294_0 = val;
			obj = (object)val;
		}
		KickFromShop.FixedUpdate += (hook_FixedUpdate)obj;
	}

	private static void VoidRecoveryHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__295_0;
		if (obj == null)
		{
			hook_BeginRound val = delegate(orig_BeginRound orig, ArenaMissionController self)
			{
				//IL_009f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
				orig.Invoke(self);
				if (NetworkServer.active)
				{
					float value = VoidHealthRecoveryCfg.Value;
					float value2 = VoidShieldRecoveryCfg.Value;
					if (value > 0f || value2 > 0f)
					{
						for (int i = 0; i < CharacterMaster.readOnlyInstancesList.Count; i++)
						{
							CharacterBody body = CharacterMaster.readOnlyInstancesList[i].GetBody();
							if (Object.op_Implicit((Object)(object)body))
							{
								HealthComponent healthComponent = body.healthComponent;
								if (!Compat.DisableVoidHealthHeal && value > 0f)
								{
									healthComponent.Heal(healthComponent.fullHealth * value, default(ProcChainMask), true);
								}
								if (value2 > 0f)
								{
									healthComponent.RechargeShield(healthComponent.fullShield * value2);
								}
							}
						}
					}
				}
			};
			<>c.<>9__295_0 = val;
			obj = (object)val;
		}
		ArenaMissionController.BeginRound += (hook_BeginRound)obj;
	}

	private static void RecolorLunarEquipment()
	{
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		CreateLunarEquipmentPrefab();
		foreach (EquipmentIndex equipment in EquipmentCatalog.equipmentList)
		{
			EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(equipment);
			if (Object.op_Implicit((Object)(object)equipmentDef) && equipmentDef.isLunar && (!Compat.ZetAspects || !((Object)(object)equipmentDef == (Object)(object)Equipment.AffixLunar)))
			{
				ColorEquipmentDroplet(equipmentDef);
			}
		}
	}

	private static void CreateLunarEquipmentPrefab()
	{
		//IL_003f: 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)
		LunarEquipmentDropletPrefab = ZetTweaksPlugin.ClonePrefab(LegacyResourcesAPI.Load<GameObject>("Prefabs/itempickups/LunarOrb"), "ZT_LunarEquipmentOrb");
		TrailRenderer componentInChildren = ((Component)LunarEquipmentDropletPrefab.transform).GetComponentInChildren<TrailRenderer>();
		componentInChildren.startColor = new Color(0.3f, 0.45f, 0.9f, 0f);
		componentInChildren.endColor = new Color(0.2f, 0.3f, 0.9f);
	}

	private static void ColorEquipmentDroplet(EquipmentDef equipDef)
	{
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0060: Unknown result type (might be due to invalid IL or missing references)
		//IL_0065: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)equipDef))
		{
			PickupDef pickupDef = PickupCatalog.GetPickupDef(PickupCatalog.FindPickupIndex(equipDef.equipmentIndex));
			if (Object.op_Implicit((Object)(object)LunarEquipmentDropletPrefab))
			{
				pickupDef.dropletDisplayPrefab = LunarEquipmentDropletPrefab;
			}
			pickupDef.baseColor = new Color(0.45f, 0.6f, 0.9f);
			pickupDef.darkColor = new Color(0.45f, 0.6f, 0.9f);
		}
	}

	private static void GiveMoney(SceneDirector director)
	{
		if (!Object.op_Implicit((Object)(object)Run.instance) || Run.instance.stageClearCount >= MoneyStageLimitCfg.Value)
		{
			return;
		}
		int difficultyScaledCost = Run.instance.GetDifficultyScaledCost(25);
		uint num = 1 + (uint)Mathf.Round((float)difficultyScaledCost * MoneyChestGivenCfg.Value);
		if (ShareSuiteCompat.Enabled && ShareSuiteCompat.moneyMethodFound)
		{
			ShareSuiteCompat.AddMoneyShareSuite((int)num);
			return;
		}
		foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
		{
			instance.master.GiveMoney(num);
		}
	}

	private static void DirectorMoneyHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__300_0;
		if (obj == null)
		{
			Manipulator val = delegate(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				ILCursor val2 = new ILCursor(il);
				if (val2.TryGotoNext(new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchStfld(x, "RoR2.CombatDirector/DirectorMoneyWave", "multiplier")
				}))
				{
					val2.EmitDelegate<Func<float, float>>((Func<float, float>)delegate(float value)
					{
						Run instance = Run.instance;
						if (Object.op_Implicit((Object)(object)instance) && instance.stageClearCount < DirectorStageLimitCfg.Value)
						{
							value *= DirectorMoneyCfg.Value;
						}
						return value;
					});
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - DirectorMoneyHook Failed!");
				}
			};
			<>c.<>9__300_0 = val;
			obj = (object)val;
		}
		CombatDirector.Awake += (Manipulator)obj;
	}

	private static void GoldFromKillHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__301_0;
		if (obj == null)
		{
			Manipulator val = delegate(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				//IL_0091: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val2 = new ILCursor(il);
				if (val2.TryGotoNext(new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<DeathRewards>(x, "get_goldReward"),
					(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 2)
				}))
				{
					val2.Index += 3;
					val2.Emit(OpCodes.Ldloc, 2);
					val2.EmitDelegate<Func<uint, uint>>((Func<uint, uint>)delegate(uint reward)
					{
						int participatingPlayerCount = Run.instance.participatingPlayerCount;
						int count = PlayerCharacterMasterController.instances.Count;
						if (participatingPlayerCount != count)
						{
							int num = participatingPlayerCount / count;
							float num2 = Mathf.Max(1f, (float)num - 1f);
							int num3 = num + 2;
							int stageClearCount = Run.instance.stageClearCount;
							float num4 = 0.5f + 0.5f / num2 * Math.Min(num2, count - 1);
							num4 *= (float)Math.Max(0, num3 - stageClearCount) / (float)num3;
							uint num5 = (uint)((float)reward * (num2 * num4 + 1f));
							if (num5 > reward)
							{
								return num5;
							}
						}
						return reward;
					});
					val2.Emit(OpCodes.Stloc, 2);
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - GoldFromKillHook Failed!");
				}
			};
			<>c.<>9__301_0 = val;
			obj = (object)val;
		}
		DeathRewards.OnKilledServer += (Manipulator)obj;
	}

	private static void ModifyBloodShrineReward()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__302_0;
		if (obj == null)
		{
			Manipulator val = delegate(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				//IL_003e: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val2 = new ILCursor(il);
				if (val2.TryGotoNext(new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 1)
				}))
				{
					val2.Emit(OpCodes.Ldarg, 0);
					val2.EmitDelegate<Func<uint, ShrineBloodBehavior, uint>>((Func<uint, ShrineBloodBehavior, uint>)delegate(uint money, ShrineBloodBehavior shrine)
					{
						if (Object.op_Implicit((Object)(object)Run.instance))
						{
							uint num = (uint)((float)Run.instance.GetDifficultyScaledCost(25) * ((float)shrine.purchaseInteraction.cost / 100f) * BloodShrineScaleCfg.Value);
							if (num > money)
							{
								return num;
							}
						}
						return money;
					});
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - ModifyBloodShrineReward Failed!");
				}
			};
			<>c.<>9__302_0 = val;
			obj = (object)val;
		}
		ShrineBloodBehavior.AddShrineStack += (Manipulator)obj;
	}

	private static void BossRewardChanceHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__303_0;
		if (obj == null)
		{
			Manipulator val = delegate(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_006d: Unknown result type (might be due to invalid IL or missing references)
				//IL_007a: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val2 = new ILCursor(il);
				if (val2.TryGotoNext(new Func<Instruction, bool>[2]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
					(Instruction x) => ILPatternMatchingExt.MatchLdfld<BossGroup>(x, "bossDropChance")
				}))
				{
					val2.Emit(OpCodes.Ldarg, 0);
					val2.Emit(OpCodes.Ldloc, 8);
					val2.Emit(OpCodes.Ldloc, 2);
					val2.EmitDelegate<Func<float, BossGroup, int, int, float>>((Func<float, BossGroup, int, int, float>)delegate(float rng, BossGroup bossGroup, int i, int count)
					{
						if (bossGroup.forceTier3Reward)
						{
							return rng;
						}
						float num = ((float)i + 1f) / (float)count;
						int num2 = count - i;
						float num3 = 0f;
						if (num > 0.39f)
						{
							num3 = 0.05f;
						}
						if (num > 0.59f)
						{
							num3 = 0.1f;
						}
						if (num > 0.79f)
						{
							num3 = 0.2f;
						}
						if (num2 <= 4)
						{
							num3 = Mathf.Max(0.15f, num3);
						}
						if (num2 <= 2)
						{
							num3 = Mathf.Max(0.25f, num3);
						}
						Debug.LogWarning((object)("Drop Reward - " + i + " (" + (i + 1) + " of " + count + ") progress: " + num + " rng: " + rng + " chance: " + num3 + " - " + (rng <= num3)));
						return (rng <= num3) ? 0f : 1f;
					});
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - BossRewardChanceHook Failed!");
				}
			};
			<>c.<>9__303_0 = val;
			obj = (object)val;
		}
		BossGroup.DropRewards += (Manipulator)obj;
	}

	private static void UnlockInteractablesHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		//IL_003a: Unknown result type (might be due to invalid IL or missing references)
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Expected O, but got Unknown
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0064: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Expected O, but got Unknown
		object obj = <>c.<>9__304_0;
		if (obj == null)
		{
			hook_OnEnable val = delegate
			{
			};
			<>c.<>9__304_0 = val;
			obj = (object)val;
		}
		OutsideInteractableLocker.OnEnable += (hook_OnEnable)obj;
		object obj2 = <>c.<>9__304_1;
		if (obj2 == null)
		{
			hook_OnDisable val2 = delegate
			{
			};
			<>c.<>9__304_1 = val2;
			obj2 = (object)val2;
		}
		OutsideInteractableLocker.OnDisable += (hook_OnDisable)obj2;
		object obj3 = <>c.<>9__304_2;
		if (obj3 == null)
		{
			hook_FixedUpdate val3 = delegate
			{
			};
			<>c.<>9__304_2 = val3;
			obj3 = (object)val3;
		}
		OutsideInteractableLocker.FixedUpdate += (hook_FixedUpdate)obj3;
	}

	private static void ChangeRequiredBatteries()
	{
		if (Object.op_Implicit((Object)(object)MoonBatteryMissionController.instance))
		{
			MoonBatteryMissionController.instance._numRequiredBatteries = Mathf.Clamp(MoonHoldoutZonesCfg.Value, 1, 4);
		}
	}

	private static void ChangeRequiredDeepVoidCells(orig_Start orig, VoidStageMissionController self)
	{
		if (Object.op_Implicit((Object)(object)self) && NetworkServer.active)
		{
			self.batteryCount = Mathf.Clamp(VoidBossHoldoutZonesCfg.Value, 1, 4);
		}
		orig.Invoke(self);
	}

	private static void VoidCellHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Expected O, but got Unknown
		//IL_0064: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Expected O, but got Unknown
		//IL_003a: Unknown result type (might be due to invalid IL or missing references)
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Expected O, but got Unknown
		object obj = <>c.<>9__308_0;
		if (obj == null)
		{
			hook_OnEnter val = delegate(orig_OnEnter orig, NullWardBaseState self)
			{
				//IL_0042: Unknown result type (might be due to invalid IL or missing references)
				//IL_0048: Invalid comparison between Unknown and I4
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0054: Invalid comparison between Unknown and I4
				//IL_005b: Unknown result type (might be due to invalid IL or missing references)
				float num2 = (ModifyHoldoutValueCfg.Value ? VoidRadiusCfg.Value : NullWardBaseState.wardRadiusOn);
				if (Object.op_Implicit((Object)(object)Run.instance) && EclipseHoldoutLimitCfg.Value)
				{
					bool flag = (int)Run.instance.selectedDifficulty >= 4;
					if ((int)ZetTweaksPlugin.EclipseArtifact != -1 && RunArtifactManager.instance.IsArtifactEnabled(ZetTweaksPlugin.EclipseArtifact))
					{
						flag = true;
					}
					if (flag)
					{
						if (num2 <= 20f)
						{
							num2 *= 2f;
						}
						else if (num2 < 40f)
						{
							num2 = 40f;
						}
					}
				}
				NullWardBaseState.wardRadiusOn = num2;
				orig.Invoke(self);
			};
			<>c.<>9__308_0 = val;
			obj = (object)val;
		}
		NullWardBaseState.OnEnter += (hook_OnEnter)obj;
		object obj2 = <>c.<>9__308_1;
		if (obj2 == null)
		{
			hook_OnExit val2 = delegate(orig_OnExit orig, Active self)
			{
				//IL_0065: Unknown result type (might be due to invalid IL or missing references)
				HoldoutZoneController holdoutZoneController = self.holdoutZoneController;
				if (Object.op_Implicit((Object)(object)holdoutZoneController))
				{
					VoidCellExitRadius = holdoutZoneController.currentRadius;
					ChildLocator childLocator = ((NullWardBaseState)self).childLocator;
					if (Object.op_Implicit((Object)(object)childLocator))
					{
						Transform val3 = ((NullWardBaseState)self).childLocator.FindChild("CompleteEffect");
						if (Object.op_Implicit((Object)(object)val3))
						{
							float num = VoidCellExitRadius * 0.933f;
							val3.localScale = new Vector3(num, num, num);
						}
					}
				}
				orig.Invoke(self);
			};
			<>c.<>9__308_1 = val2;
			obj2 = (object)val2;
		}
		Active.OnExit += (hook_OnExit)obj2;
		Complete.OnEnter += new Manipulator(ReplaceWardRadius);
		Complete.FixedUpdate += new Manipulator(ReplaceWardRadius);
	}

	private static void ReplaceWardRadius(ILContext il)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Expected O, but got Unknown
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		ILCursor val = new ILCursor(il);
		if (val.TryGotoNext(new Func<Instruction, bool>[1]
		{
			(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(NullWardBaseState).GetField("wardRadiusOn"))
		}))
		{
			val.Index += 1;
			val.Emit(OpCodes.Pop);
			val.EmitDelegate<Func<float>>((Func<float>)(() => Mathf.Max(10f, VoidCellExitRadius)));
		}
	}

	private static void HoldoutZoneHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__310_0;
		if (obj == null)
		{
			hook_Awake val = delegate(orig_Awake orig, HoldoutZoneController self)
			{
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0033: Invalid comparison between Unknown and I4
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_003f: Invalid comparison between Unknown and I4
				//IL_0046: Unknown result type (might be due to invalid IL or missing references)
				if (ModifyHoldoutValueCfg.Value)
				{
					ModifyHoldoutValues(self);
				}
				if (EclipseHoldoutLimitCfg.Value)
				{
					bool flag = (int)Run.instance.selectedDifficulty >= 4;
					if ((int)ZetTweaksPlugin.EclipseArtifact != -1 && RunArtifactManager.instance.IsArtifactEnabled(ZetTweaksPlugin.EclipseArtifact))
					{
						flag = true;
					}
					if (flag)
					{
						if (self.baseRadius <= 20f)
						{
							self.baseRadius *= 2f;
						}
						else if (self.baseRadius < 40f)
						{
							self.baseRadius = 40f;
						}
					}
				}
				orig.Invoke(self);
			};
			<>c.<>9__310_0 = val;
			obj = (object)val;
		}
		HoldoutZoneController.Awake += (hook_Awake)obj;
	}

	private static void ModifyHoldoutValues(HoldoutZoneController self)
	{
		SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
		switch (Object.op_Implicit((Object)(object)sceneDefForCurrentScene) ? sceneDefForCurrentScene.baseSceneName : "")
		{
		case "arena":
			if (self.baseRadius == 15f && self.baseChargeDuration == 60f)
			{
				self.baseRadius = VoidRadiusCfg.Value;
				self.baseChargeDuration = VoidTimeCfg.Value;
			}
			break;
		case "voidstage":
			if (self.baseRadius == 20f && self.baseChargeDuration == 60f)
			{
				self.baseRadius = VoidBossRadiusCfg.Value;
				self.baseChargeDuration = VoidBossTimeCfg.Value;
			}
			break;
		case "moon2":
			if (self.baseRadius == 40f && self.baseChargeDuration == 60f)
			{
				self.baseRadius = ShipRadiusCfg.Value;
				self.baseChargeDuration = ShipTimeCfg.Value;
			}
			else if (self.baseRadius == 20f && self.baseChargeDuration == 60f)
			{
				self.baseRadius = MassRadiusCfg.Value;
				self.baseChargeDuration = MassTimeCfg.Value;
			}
			break;
		default:
			if (self.baseRadius == 60f && self.baseChargeDuration == 90f && !Compat.ReallyBigTeleporter)
			{
				self.baseRadius = TeleRadiusCfg.Value;
				self.baseChargeDuration = TeleTimeCfg.Value;
			}
			break;
		}
	}

	private static void CommandDropletFix()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__312_0;
		if (obj == null)
		{
			Manipulator val = delegate(ILContext il)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Expected O, but got Unknown
				ILCursor val2 = new ILCursor(il);
				MethodInfo methodInfo = typeof(PickupCatalog).GetMethod("GetPickupDef");
				int num2 = default(int);
				int num = default(int);
				if (val2.TryGotoNext(new Func<Instruction, bool>[3]
				{
					(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)methodInfo),
					(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref num2),
					(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num)
				}))
				{
					val2.Index += 3;
					val2.EmitDelegate<Func<PickupDef, PickupDef>>((Func<PickupDef, PickupDef>)delegate(PickupDef pickupDef)
					{
						//IL_001e: Unknown result type (might be due to invalid IL or missing references)
						//IL_0024: Invalid comparison between Unknown and I4
						//IL_0071: Unknown result type (might be due to invalid IL or missing references)
						//IL_0077: Invalid comparison between Unknown and I4
						//IL_0053: Unknown result type (might be due to invalid IL or missing references)
						//IL_003a: Unknown result type (might be due to invalid IL or missing references)
						//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
						//IL_008d: Unknown result type (might be due to invalid IL or missing references)
						if (Compat.ZetAspects && !AspectsResolved)
						{
							ResolveAspects();
						}
						if ((int)pickupDef.itemIndex != -1 && (!Compat.ZetAspects || !AspectCommandGroupItems || !aspectItemIndexes.Contains(pickupDef.itemIndex)))
						{
							ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex);
							if (itemDef.ContainsTag((ItemTag)9))
							{
								return null;
							}
						}
						if ((int)pickupDef.equipmentIndex != -1 && (!Compat.ZetAspects || !AspectCommandGroupEquip || !aspectEquipIndexes.Contains(pickupDef.equipmentIndex)))
						{
							EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(pickupDef.equipmentIndex);
							if (!equipmentDef.canDrop)
							{
								return null;
							}
						}
						return pickupDef;
					});
				}
				else
				{
					Debug.LogWarning((object)"ZetTweaks - CommandDropletFix Failed!");
				}
			};
			<>c.<>9__312_0 = val;
			obj = (object)val;
		}
		PickupDropletController.CreatePickup += (Manipulator)obj;
	}

	private static void ResolveAspects()
	{
		BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
		BaseUnityPlugin instance = Chainloader.PluginInfos["com.TPDespair.ZetAspects"].Instance;
		Assembly assembly = Assembly.GetAssembly(((object)instance).GetType());
		Type type = Type.GetType("TPDespair.ZetAspects.Configuration, " + assembly.FullName, throwOnError: false);
		if (type != null)
		{
			MethodInfo method = type.GetMethod("get_AspectCommandGroupItems", bindingAttr);
			if (method != null)
			{
				try
				{
					ConfigEntry<bool> val = (ConfigEntry<bool>)method.Invoke(null, null);
					AspectCommandGroupItems = val.Value;
				}
				catch (Exception ex)
				{
					Debug.LogError((object)ex);
				}
			}
			else
			{
				Debug.LogWarning((object)"[ZetTweaks - ResolveAspects] - Could Not Find Method : Configuration.get_AspectCommandGroupItems");
			}
			method = type.GetMethod("get_AspectCommandGroupEquip", bindingAttr);
			if (method != null)
			{
				try
				{
					ConfigEntry<bool> val2 = (ConfigEntry<bool>)method.Invoke(null, null);
					AspectCommandGroupEquip = val2.Value;
				}
				catch (Exception ex2)
				{
					Debug.LogError((object)ex2);
				}
			}
			else
			{
				Debug.LogWarning((object)"[ZetTweaks - ResolveAspects] - Could Not Find Method : Configuration.get_AspectCommandGroupEquip");
			}
		}
		else
		{
			Debug.LogWarning((object)"[ZetTweaks - ResolveAspects] Could Not Find Type : TPDespair.ZetAspects.Configuration");
		}
		if (AspectCommandGroupItems || AspectCommandGroupEquip)
		{
			type = Type.GetType("TPDespair.ZetAspects.Catalog, " + assembly.FullName, throwOnError: false);
			if (type != null)
			{
				if (AspectCommandGroupItems)
				{
					FieldInfo field = type.GetField("aspectItemIndexes", bindingAttr);
					if (field != null)
					{
						try
						{
							aspectItemIndexes = (List<ItemIndex>)field.GetValue(null);
						}
						catch (Exception ex3)
						{
							Debug.LogError((object)ex3);
						}
					}
					else
					{
						Debug.LogWarning((object)"[ZetTweaks - ResolveAspects] - Could Not Find Field : Catalog.aspectItemIndexes");
					}
				}
				if (AspectCommandGroupEquip)
				{
					FieldInfo field2 = type.GetField("aspectEquipIndexes", bindingAttr);
					if (field2 != null)
					{
						try
						{
							aspectEquipIndexes = (List<EquipmentIndex>)field2.GetValue(null);
						}
						catch (Exception ex4)
						{
							Debug.LogError((object)ex4);
						}
					}
					else
					{
						Debug.LogWarning((object)"[ZetTweaks - ResolveAspects] - Could Not Find Field : Catalog.aspectEquipIndexes");
					}
				}
			}
			else
			{
				Debug.LogWarning((object)"[ZetTweaks - ResolveAspects] Could Not Find Type : TPDespair.ZetAspects.Catalog");
			}
		}
		AspectsResolved = true;
	}

	private static void CleanPickerOptionsHook()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		object obj = <>c.<>9__314_0;
		if (obj == null)
		{
			hook_GetOptionsFromPickupIndex val = delegate(orig_GetOptionsFromPickupIndex orig, PickupIndex pickupIndex)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				Option[] options = orig.Invoke(pickupIndex);
				return CleanupOptions(options);
			};
			<>c.<>9__314_0 = val;
			obj = (object)val;
		}
		PickupPickerController.GetOptionsFromPickupIndex += (hook_GetOptionsFromPickupIndex)obj;
	}

	private static Option[] CleanupOptions(Option[] options)
	{
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0071: Invalid comparison between Unknown and I4
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Invalid comparison between Unknown and I4
		//IL_007f: 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)
		List<Option> list = new List<Option>();
		for (int i = 0; i < options.Length; i++)
		{
			bool flag = true;
			Option val = options[i];
			PickupDef pickupDef = PickupCatalog.GetPickupDef(val.pickupIndex);
			if ((int)pickupDef.itemIndex != -1)
			{
				ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex);
				if ((int)itemDef.tier == 5 && itemDef.ContainsTag((ItemTag)9))
				{
					flag =