Decompiled source of FentoKill v2.5.216

FentoKill.dll

Decompiled 6 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using CustomRay;
using HarmonyLib;
using PluginConfig.API;
using PluginConfig.API.Decorators;
using PluginConfig.API.Fields;
using TMPro;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("FentoKill")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FentoKill")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("d24676a8-4da0-4d43-a77a-48484b462e3c")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace FentoKill;

public static class Fento_Utils
{
	public enum DetectebleEnemies
	{
		Flith,
		Stray,
		Schism,
		Soldier,
		Stalker,
		Sisyphus,
		Ferryman,
		Cerberus,
		CerberusStatue,
		CerberusStatueWhite,
		Mannequin,
		MannequinPoserWithEnemy,
		MaliciousFace,
		HideousMass,
		Idol,
		Puppet,
		Swordsmachine,
		SwordsMachineNonboss,
		Swordsmachine_Agony,
		Swordsmachine_Tundra,
		Guttertank,
		BombEnemySpawnerGuttertank,
		Gutterman,
		BombEnemySpawnerGutterman,
		Streetcleaner,
		Turret,
		Mindflayer,
		CentaurTower,
		CentaurMortar,
		CentaurRocketLauncher,
		CentaurRocketLauncherStand,
		Drone,
		DroneFlesh,
		DroneSkull_Variant,
		DroneFleshCamera_Variant,
		DroneGhostFromCorpse,
		Virtue,
		Big_Johninator,
		Flesh_Prison,
		Flesh_Panopticon,
		Mandalore
	}

	public class AddresableObject<TObject>
	{
		[CompilerGenerated]
		private sealed class <Long_Load>d__5 : IEnumerator<object>, IDisposable, IEnumerator
		{
			private int <>1__state;

			private object <>2__current;

			public AddresableObject<TObject> <>4__this;

			private AsyncOperationHandle<TObject> <handle>5__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <Long_Load>d__5(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				<handle>5__2 = default(AsyncOperationHandle<TObject>);
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0053: Unknown result type (might be due to invalid IL or missing references)
				//IL_0058: Unknown result type (might be due to invalid IL or missing references)
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Invalid comparison between Unknown and I4
				int num = <>1__state;
				AddresableObject<TObject> addresableObject = <>4__this;
				switch (num)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					if (addresableObject.obj != null)
					{
						Fento_Loader._Logger.LogWarning((object)("[Long_Load] - " + addresableObject.path + " Already Loaded - !!!"));
						return false;
					}
					<handle>5__2 = Addressables.LoadAssetAsync<TObject>((object)addresableObject.path);
					<>2__current = <handle>5__2;
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					if ((int)<handle>5__2.Status == 1)
					{
						addresableObject.fast_load = false;
						addresableObject.obj = <handle>5__2.Result;
						Fento_Loader._Logger.LogInfo((object)("[Long_Load] - " + addresableObject.path + " Loaded Without Errors"));
					}
					else
					{
						Fento_Loader._Logger.LogError((object)("[Long_Load] - Failed to load asset at path: " + addresableObject.path));
					}
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		public bool fast_load;

		public string path;

		public TObject obj;

		public TObject Object
		{
			get
			{
				//IL_0035: 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)
				if (obj == null)
				{
					Fento_Loader._Logger.LogInfo((object)("[Fast_Load] - Loading " + path));
					fast_load = true;
					obj = Addressables.LoadAssetAsync<TObject>((object)path).WaitForCompletion();
				}
				return obj;
			}
		}

		public Transform[] childs => GetAllChilds(transform);

		public Transform transform
		{
			get
			{
				if ((Object)(object)gameObject != (Object)null)
				{
					return gameObject.transform;
				}
				return null;
			}
		}

		public GameObject gameObject
		{
			get
			{
				object obj = Object;
				return (GameObject)((obj is GameObject) ? obj : null);
			}
		}

		[IteratorStateMachine(typeof(AddresableObject<>.<Long_Load>d__5))]
		public IEnumerator Long_Load()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <Long_Load>d__5(0)
			{
				<>4__this = this
			};
		}

		public T GetComponent<T>()
		{
			if ((Object)(object)gameObject != (Object)null)
			{
				return gameObject.GetComponent<T>();
			}
			return default(T);
		}

		public Transform GetChild(int id)
		{
			if ((Object)(object)transform != (Object)null)
			{
				return transform.GetChild(id);
			}
			return null;
		}

		public AddresableObject(string path)
		{
			this.path = path;
			fast_load = false;
		}

		public static implicit operator AddresableObject<TObject>(string path)
		{
			return new AddresableObject<TObject>(path);
		}

		public override string ToString()
		{
			return path;
		}
	}

	public struct PathObject
	{
		public string path;

		public GameObject obj;

		public GameObject Object
		{
			get
			{
				if ((Object)(object)obj == (Object)null)
				{
					obj = FindObjectByPath(path);
				}
				return obj;
			}
		}

		public Transform[] childs => GetAllChilds(transform);

		public Transform transform
		{
			get
			{
				if ((Object)(object)Object != (Object)null)
				{
					return Object.transform;
				}
				return null;
			}
		}

		public GameObject gameObject => Object;

		public T GetComponent<T>()
		{
			if ((Object)(object)Object != (Object)null)
			{
				return Object.GetComponent<T>();
			}
			return default(T);
		}

		public Transform _GetChild(int id)
		{
			if ((Object)(object)transform != (Object)null)
			{
				return transform.GetChild(id);
			}
			return null;
		}

		public PathObject(string path)
		{
			this.path = path;
			obj = null;
		}

		public static implicit operator PathObject(string path)
		{
			return new PathObject(path);
		}

		public override string ToString()
		{
			return path;
		}
	}

	[CompilerGenerated]
	private sealed class <Delay_Coroutine>d__4 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public float time;

		public Action action;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <Delay_Coroutine>d__4(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<>2__current = (object)new WaitForSeconds(time);
				<>1__state = 1;
				return true;
			case 1:
				<>1__state = -1;
				try
				{
					action?.Invoke();
				}
				catch
				{
					Fento_Loader._Logger.LogError((object)"Delay_Coroutine - Error Detected");
				}
				return false;
			}
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	[CompilerGenerated]
	private sealed class <Next_FrameCoroutine>d__3 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public Action action;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <Next_FrameCoroutine>d__3(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<>2__current = (object)new WaitForEndOfFrame();
				<>1__state = 1;
				return true;
			case 1:
				<>1__state = -1;
				try
				{
					action?.Invoke();
				}
				catch
				{
					Fento_Loader._Logger.LogError((object)"Next_FrameCoroutine - Error Detected");
				}
				return false;
			}
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	public static Dictionary<DetectebleEnemies, AddresableObject<GameObject>> AllEnemies = new Dictionary<DetectebleEnemies, AddresableObject<GameObject>>
	{
		[DetectebleEnemies.Flith] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Zombie.prefab"),
		[DetectebleEnemies.Stray] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Projectile Zombie.prefab"),
		[DetectebleEnemies.Schism] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Super Projectile Zombie.prefab"),
		[DetectebleEnemies.Soldier] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/ShotgunHusk.prefab"),
		[DetectebleEnemies.Stalker] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Stalker.prefab"),
		[DetectebleEnemies.Sisyphus] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Sisyphus.prefab"),
		[DetectebleEnemies.Ferryman] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Ferryman.prefab"),
		[DetectebleEnemies.Cerberus] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Cerberus.prefab"),
		[DetectebleEnemies.CerberusStatue] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/CerberusStatue.prefab"),
		[DetectebleEnemies.CerberusStatueWhite] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/CerberusStatueWhite.prefab"),
		[DetectebleEnemies.Mannequin] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Mannequin.prefab"),
		[DetectebleEnemies.MannequinPoserWithEnemy] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/MannequinPoserWithEnemy.prefab"),
		[DetectebleEnemies.MaliciousFace] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Spider.prefab"),
		[DetectebleEnemies.HideousMass] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Mass.prefab"),
		[DetectebleEnemies.Idol] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Idol.prefab"),
		[DetectebleEnemies.Puppet] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Puppet.prefab"),
		[DetectebleEnemies.SwordsMachineNonboss] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/SwordsMachineNonboss.prefab"),
		[DetectebleEnemies.Swordsmachine_Agony] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/SwordsMachine Agony.prefab"),
		[DetectebleEnemies.Swordsmachine_Tundra] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/SwordsMachine Tundra.prefab"),
		[DetectebleEnemies.Gutterman] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Gutterman.prefab"),
		[DetectebleEnemies.BombEnemySpawnerGutterman] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Spawners/BombEnemySpawnerGutterman Variant.prefab"),
		[DetectebleEnemies.Guttertank] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Guttertank.prefab"),
		[DetectebleEnemies.BombEnemySpawnerGuttertank] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Spawners/BombEnemySpawnerGuttertank Variant.prefab"),
		[DetectebleEnemies.Streetcleaner] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Streetcleaner.prefab"),
		[DetectebleEnemies.Turret] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Turret.prefab"),
		[DetectebleEnemies.Mindflayer] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Mindflayer.prefab"),
		[DetectebleEnemies.CentaurTower] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/CentaurTower.prefab"),
		[DetectebleEnemies.CentaurMortar] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/CentaurMortar.prefab"),
		[DetectebleEnemies.CentaurRocketLauncher] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/CentaurRocketLauncher.prefab"),
		[DetectebleEnemies.CentaurRocketLauncherStand] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/CentaurRocketLauncherStand.prefab"),
		[DetectebleEnemies.Drone] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Drone.prefab"),
		[DetectebleEnemies.DroneFlesh] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/DroneFlesh.prefab"),
		[DetectebleEnemies.DroneSkull_Variant] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/DroneSkull Variant.prefab"),
		[DetectebleEnemies.DroneFleshCamera_Variant] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/DroneFleshCamera Variant.prefab"),
		[DetectebleEnemies.DroneGhostFromCorpse] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/DroneGhostFromCorpse.prefab"),
		[DetectebleEnemies.Virtue] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Virtue.prefab"),
		[DetectebleEnemies.Big_Johninator] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Big Johninator.prefab"),
		[DetectebleEnemies.Flesh_Prison] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Flesh Prison.prefab"),
		[DetectebleEnemies.Flesh_Panopticon] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Flesh Prison 2.prefab"),
		[DetectebleEnemies.Mandalore] = new AddresableObject<GameObject>("Assets/Prefabs/Enemies/Mandalore.prefab")
	};

	public static BindingFlags allBindingFlags = BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.InvokeMethod | BindingFlags.CreateInstance | BindingFlags.GetField | BindingFlags.SetField | BindingFlags.GetProperty | BindingFlags.SetProperty | BindingFlags.PutDispProperty | BindingFlags.PutRefDispProperty | BindingFlags.ExactBinding | BindingFlags.SuppressChangeType | BindingFlags.OptionalParamBinding | BindingFlags.IgnoreReturn;

	public static void Activate_WithDelay(float time, GameObject activate, bool state = true)
	{
		//IL_0019: 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)
		//IL_002b: Expected O, but got Unknown
		//IL_0030: Expected O, but got Unknown
		GameObject val = new GameObject("Wait And LOader");
		Object.Destroy((Object)val, time + 1f);
		((MonoBehaviour)GameObjectExtensions.GetOrAddComponent<Waiter>(val)).StartCoroutine(Delay_Coroutine(time, delegate
		{
			activate.SetActive(state);
		}));
	}

	public static void Invoke_NextFrame(Action action)
	{
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0015: Expected O, but got Unknown
		//IL_001a: Expected O, but got Unknown
		GameObject val = new GameObject("Wait And LOader");
		Object.Destroy((Object)val, 1f);
		((MonoBehaviour)GameObjectExtensions.GetOrAddComponent<Waiter>(val)).StartCoroutine(Next_FrameCoroutine(action));
	}

	public static void Invoke_WithDelay(float time, Action action)
	{
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected O, but got Unknown
		//IL_001c: Expected O, but got Unknown
		GameObject val = new GameObject("Wait And LOader");
		Object.Destroy((Object)val, time + 1f);
		((MonoBehaviour)GameObjectExtensions.GetOrAddComponent<Waiter>(val)).StartCoroutine(Delay_Coroutine(time, action));
	}

	[IteratorStateMachine(typeof(<Next_FrameCoroutine>d__3))]
	public static IEnumerator Next_FrameCoroutine(Action action)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <Next_FrameCoroutine>d__3(0)
		{
			action = action
		};
	}

	[IteratorStateMachine(typeof(<Delay_Coroutine>d__4))]
	public static IEnumerator Delay_Coroutine(float time, Action action)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <Delay_Coroutine>d__4(0)
		{
			time = time,
			action = action
		};
	}

	public static void Forse_Clear()
	{
		//IL_0014: 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_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		ActivateArena[] array = Resources.FindObjectsOfTypeAll<ActivateArena>();
		foreach (ActivateArena val in array)
		{
			Scene scene = ((Component)val).gameObject.scene;
			if (((Scene)(ref scene)).IsValid())
			{
				scene = ((Component)val).gameObject.scene;
				if (((Scene)(ref scene)).isLoaded)
				{
					Fento_Loader._Logger.LogInfo((object)("Forse_Clear - " + ((Object)((Component)val).transform).name + " ActivateArena Cleared From Nulls"));
					val.enemies = val.enemies.RemoveDestroyed().ToArray();
				}
			}
		}
	}

	public static void Set_HudMessage(this HudMessage hudMessage, string message, string message2 = "", InputActionReference actionReference = null)
	{
		if ((Object)(object)hudMessage == (Object)null)
		{
			Fento_Loader._Logger.LogError((object)"Set_HudMessage - hudMessage is null");
			return;
		}
		hudMessage.message = message;
		hudMessage.message2 = message2;
		hudMessage.actionReference = actionReference;
	}

	public static void For_InStack(Transform GetFrom, Action<Transform> action)
	{
		Transform[] allChilds = GetAllChilds(GetFrom);
		foreach (Transform obj in allChilds)
		{
			action?.Invoke(obj);
		}
	}

	public static void Enemy_InStack(Transform GetFrom, Action<EnemyIdentifier> action, bool Hard_Mode_Only = false)
	{
		if (Hard_Mode_Only && Difficulty_Options.Issue_Disable_Most_Buffs)
		{
			return;
		}
		Transform[] allChilds = GetAllChilds(GetFrom);
		if (allChilds == null)
		{
			return;
		}
		Transform[] array = allChilds;
		for (int i = 0; i < array.Length; i++)
		{
			EnemyIdentifier component = ((Component)array[i]).GetComponent<EnemyIdentifier>();
			if ((Object)(object)component != (Object)null)
			{
				action?.Invoke(component);
			}
		}
	}

	public static void Make_List_MachineSymbiote(List<Machine> machines)
	{
		if (machines == null || machines.Count < 2)
		{
			Fento_Loader._Logger.LogWarning((object)"Make_List_MachineSymbiote - Need More Machines To Make Symbiotes");
			return;
		}
		for (int i = 0; i < machines.Count; i++)
		{
			Machine toMake = machines[i];
			Machine symbiote = machines[(i + 1) % machines.Count];
			Make_MachineSymbiote(toMake, symbiote);
		}
	}

	public static void Make_MachineSymbiote(Machine toMake, Machine symbiote)
	{
		if ((Object)(object)toMake == (Object)null)
		{
			Fento_Loader._Logger.LogWarning((object)"Make_MachineSymbiote - No toMake");
			return;
		}
		if ((Object)(object)symbiote == (Object)null)
		{
			Fento_Loader._Logger.LogWarning((object)"Make_MachineSymbiote - No symbiote");
			return;
		}
		if (Difficulty_Options.Mech_Disable_Custom_Symbiotes)
		{
			Fento_Loader._Logger.LogInfo((object)$"Make_MachineSymbiote - {toMake} + {symbiote} Disabled From - Difficulty_Options.Disable_Custom_Symbiotes");
			return;
		}
		toMake.symbiote = symbiote;
		Fento_Loader._Logger.LogInfo((object)$"Make_MachineSymbiote - New Symbiot Pair: {toMake} + {symbiote}");
	}

	public static void Clear_AreaFromClones(Transform ToClear)
	{
		Enemy_InStack(ToClear, delegate(EnemyIdentifier enemy)
		{
			if (!Object.op_Implicit((Object)(object)((Component)enemy).GetComponent<Fento_DontLoop_Tag>()))
			{
				Object.Destroy((Object)(object)((Component)enemy).gameObject);
			}
		});
	}

	public static void Update_ActivateNextWave(ActivateNextWave activateNextWave, Transform GetFrom = null)
	{
		if ((Object)(object)GetFrom == (Object)null)
		{
			GetFrom = ((Component)activateNextWave).transform;
		}
		List<GameObject> list = new List<GameObject>();
		for (int i = 0; i < GetFrom.childCount; i++)
		{
			Transform child = GetFrom.GetChild(i);
			if (Object.op_Implicit((Object)(object)((Component)child).GetComponent<EnemyIdentifier>()))
			{
				list.Add(((Component)child).gameObject);
			}
		}
		activateNextWave.toActivate = list.ToArray();
	}

	public static void Update_ActivateArena(ActivateArena activateArena, Transform GetFrom = null)
	{
		if ((Object)(object)GetFrom == (Object)null)
		{
			GetFrom = ((Component)activateArena).transform;
		}
		List<GameObject> list = new List<GameObject>();
		for (int i = 0; i < GetFrom.childCount; i++)
		{
			Transform child = GetFrom.GetChild(i);
			if (Object.op_Implicit((Object)(object)((Component)child).GetComponent<EnemyIdentifier>()) || Object.op_Implicit((Object)(object)((Component)child).GetComponent<Fento_DontLoop_Tag>()))
			{
				list.Add(((Component)child).gameObject);
			}
		}
		activateArena.enemies = list.ToArray();
	}

	public static EnemyIdentifier Custom_ReplaceEnemy(DetectebleEnemies enemy, Transform toReplace, Vector3 Pos = default(Vector3), Quaternion Quart = default(Quaternion), bool active = false, bool DestroyOnReplace = true)
	{
		//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)
		if (Object.op_Implicit((Object)(object)((Component)toReplace).GetComponent<Fento_DontLoop_Tag>()))
		{
			return null;
		}
		EnemyIdentifier result = Integrate_Enemy(enemy, toReplace.parent, active, Pos, Quart);
		if (DestroyOnReplace)
		{
			Object.Destroy((Object)(object)((Component)toReplace).gameObject);
		}
		return result;
	}

	public static EnemyIdentifier Base_ReplaceEnemy(DetectebleEnemies enemy, Transform toReplace, Vector3 extraPos = default(Vector3), bool DestroyOnReplace = true)
	{
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0027: 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: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)((Component)toReplace).GetComponent<Fento_DontLoop_Tag>()))
		{
			return null;
		}
		EnemyIdentifier result = Integrate_Enemy(enemy, toReplace.parent, ((Component)toReplace).gameObject.activeSelf, toReplace.position + extraPos, toReplace.rotation);
		if (DestroyOnReplace)
		{
			Object.Destroy((Object)(object)((Component)toReplace).gameObject);
		}
		return result;
	}

	public static EnemyIdentifier Integrate_Enemy(DetectebleEnemies enemy, Transform Parent, bool active, Vector3 Pos = default(Vector3), Quaternion Quart = default(Quaternion))
	{
		//IL_002a: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		EnemyIdentifier val = FindEnemyByType(enemy);
		GameObject val2 = null;
		val2 = ((enemy == DetectebleEnemies.CentaurRocketLauncher) ? ((Component)Object.Instantiate<EnemyIdentifier>(val, Pos, Quart)).gameObject : ((Component)Object.Instantiate<Transform>(((Component)val).transform.root, Pos, Quart)).gameObject);
		if (enemy == DetectebleEnemies.BombEnemySpawnerGutterman)
		{
			((Component)val2.transform.GetChild(2)).gameObject.SetActive(true);
		}
		val2.transform.root.parent = Parent;
		val2.transform.position = Pos;
		val2.transform.rotation = Quart;
		val2.SetActive(active);
		GameObjectExtensions.GetOrAddComponent<Fento_DontLoop_Tag>(val2).eid = val;
		KeepInBounds component = val2.GetComponent<KeepInBounds>();
		if (Object.op_Implicit((Object)(object)component))
		{
			Object.Destroy((Object)(object)component);
		}
		NavMeshAgent component2 = val2.GetComponent<NavMeshAgent>();
		if (Object.op_Implicit((Object)(object)component2))
		{
			((Behaviour)component2).enabled = true;
		}
		return val2.GetComponentInChildren<EnemyIdentifier>(true);
	}

	public static Vector3 GetRandomNavMeshPoint(Vector3 origin, float radius)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: 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)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		NavMeshHit val = default(NavMeshHit);
		if (NavMesh.SamplePosition(origin + Random.insideUnitSphere * radius, ref val, radius, -1))
		{
			return ((NavMeshHit)(ref val)).position;
		}
		return Vector3.zero;
	}

	public static Vector3 DeepSearchNavMeshPoint(Vector3 origin, float radius)
	{
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: 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_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_0039: 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_0044: 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_0048: 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_0054: Unknown result type (might be due to invalid IL or missing references)
		for (int i = 1; i <= 35; i++)
		{
			float num = 10f * (float)i;
			float radius2 = radius + 50f * (float)i;
			Vector3 insideUnitSphere = Random.insideUnitSphere;
			Vector3 val = ((Vector3)(ref insideUnitSphere)).normalized * num * Random.value;
			Vector3 randomNavMeshPoint = GetRandomNavMeshPoint(origin + val, radius2);
			if (randomNavMeshPoint != Vector3.zero)
			{
				return randomNavMeshPoint;
			}
		}
		return Vector3.zero;
	}

	public static ActivateArena Create_ActivateArena(this GameObject obj, bool activated, GameObject[] enemies, Door[] doors)
	{
		ActivateArena obj2 = obj.gameObject.AddComponent<ActivateArena>();
		obj2.activated = activated;
		obj2.enemies = enemies;
		obj2.doors = doors;
		return obj2;
	}

	public static ActivateNextWave Create_ActivateNextWave(this GameObject obj, int enemyCount, bool activated, bool lastWave, GameObject[] toActivate, GameObject[] nextEnemies, Door[] doors)
	{
		ActivateNextWave obj2 = obj.gameObject.AddComponent<ActivateNextWave>();
		obj2.activated = activated;
		obj2.lastWave = lastWave;
		obj2.enemyCount = enemyCount;
		obj2.toActivate = toActivate;
		obj2.nextEnemies = nextEnemies;
		obj2.doors = doors;
		obj2.doorForward = doors.FirstOrDefault();
		return obj2;
	}

	public static string ParseRealName(string input)
	{
		return input?.Replace('_', ' ');
	}

	public static EnemyIdentifier FindEnemyByType(DetectebleEnemies enemy)
	{
		if (AllEnemies.TryGetValue(enemy, out var value))
		{
			EnemyIdentifier component = value.GetComponent<EnemyIdentifier>();
			if ((Object)(object)component != (Object)null)
			{
				return component;
			}
			component = value.gameObject.GetComponentInChildren<EnemyIdentifier>(true);
			if ((Object)(object)component != (Object)null)
			{
				return component;
			}
			component = value.gameObject.GetComponentInParent<EnemyIdentifier>(true);
			if ((Object)(object)component != (Object)null)
			{
				return component;
			}
		}
		return null;
	}

	public static GameObject FindEnemyByName(string name)
	{
		return Fento_Core.AllObjs.Where((GameObject o) => (Object)(object)o != (Object)null && ((Object)o).name == name && o.scene != Fento_Core.CurrentScene && Object.op_Implicit((Object)(object)o.GetComponent<EnemyIdentifier>())).FirstOrDefault();
	}

	public static GameObject FindObjectByPath(string path)
	{
		string[] array = path.Split(new char[1] { '/' });
		if (array.Length == 0)
		{
			return null;
		}
		GameObject val = FindObjectByDirectPath(path);
		if ((Object)(object)val != (Object)null)
		{
			return val;
		}
		return FindObjectByStepwisePath(array);
	}

	public static string GetFullRootPath(Transform transform)
	{
		string text = ((Object)transform).name;
		while ((Object)(object)transform.parent != (Object)null)
		{
			transform = transform.parent;
			text = ((Object)transform).name + "/" + text;
		}
		return text;
	}

	[Obsolete]
	private static GameObject FindObjectByDirectPath(string path)
	{
		GameObject obj = GameObject.Find(path);
		if ((Object)(object)obj == (Object)null)
		{
			Fento_Loader._Logger.LogWarning((object)("Direct Search - Object not found with path: " + path));
		}
		return obj;
	}

	[Obsolete]
	private static GameObject FindObjectByStepwisePath(string[] pathParts)
	{
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: Unknown result type (might be due to invalid IL or missing references)
		GameObject val = null;
		GameObject[] allObjs = Fento_Core.AllObjs;
		foreach (GameObject val2 in allObjs)
		{
			if ((Object)(object)val2 == (Object)null || (Object)(object)val2.transform.root != (Object)(object)val2.transform)
			{
				continue;
			}
			Scene scene = val2.scene;
			if (((Scene)(ref scene)).IsValid())
			{
				scene = val2.scene;
				if (((Scene)(ref scene)).isLoaded && ((Object)val2).name == pathParts[0])
				{
					val = val2;
					break;
				}
			}
		}
		if ((Object)(object)val == (Object)null)
		{
			Fento_Loader._Logger.LogWarning((object)("FindObjectByStepwisePath - Root not found: " + pathParts[0]));
			return null;
		}
		return FindObjectByPathInHierarchy(val, pathParts, 1);
	}

	[Obsolete]
	private static GameObject FindObjectByPathInHierarchy(GameObject parent, string[] pathParts, int index)
	{
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Expected O, but got Unknown
		if (index >= pathParts.Length)
		{
			return parent;
		}
		foreach (Transform item in parent.transform)
		{
			Transform val = item;
			if (((Object)val).name == pathParts[index])
			{
				GameObject val2 = FindObjectByPathInHierarchy(((Component)val).gameObject, pathParts, index + 1);
				if ((Object)(object)val2 != (Object)null)
				{
					return val2;
				}
			}
		}
		return null;
	}

	public static void DissableColliders(this Transform trf, Transform trc, bool ignore = true)
	{
		Collider2D[] componentsInChildren = ((Component)trf).GetComponentsInChildren<Collider2D>();
		Collider2D[] componentsInChildren2 = ((Component)trc).GetComponentsInChildren<Collider2D>();
		Collider2D[] array = componentsInChildren;
		foreach (Collider2D val in array)
		{
			Collider2D[] array2 = componentsInChildren2;
			foreach (Collider2D val2 in array2)
			{
				Physics2D.IgnoreCollision(val, val2, ignore);
			}
		}
	}

	public static void Make_Colored(Transform to_change, Color color, bool keep_a = true, float mult = 0.55f)
	{
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0128: Unknown result type (might be due to invalid IL or missing references)
		//IL_012d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0049: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_014b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00db: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
		Renderer[] componentsInChildren = ((Component)to_change).GetComponentsInChildren<Renderer>(true);
		foreach (Renderer val in componentsInChildren)
		{
			if ((Object)(object)val == (Object)null)
			{
				continue;
			}
			Material[] materials = val.materials;
			foreach (Material val2 in materials)
			{
				if (val2.HasProperty("_Color"))
				{
					Color val3 = Color.Lerp(val2.GetColor("_Color"), color, mult);
					if (keep_a)
					{
						float a = val2.GetColor("_Color").a;
						val3.a = a;
					}
					val2.SetColor("_Color", val3);
				}
				if (val2.HasProperty("_BaseColor"))
				{
					Color val4 = Color.Lerp(val2.GetColor("_BaseColor"), color, mult);
					if (keep_a)
					{
						float a2 = val2.GetColor("_BaseColor").a;
						val4.a = a2;
					}
					val2.SetColor("_BaseColor", Color.Lerp(val2.GetColor("_BaseColor"), color, mult));
				}
			}
		}
		Light[] componentsInChildren2 = ((Component)to_change).GetComponentsInChildren<Light>(true);
		foreach (Light val5 in componentsInChildren2)
		{
			if (!((Object)(object)val5 == (Object)null))
			{
				Color color2 = Color.Lerp(val5.color, color, mult);
				if (keep_a)
				{
					float a3 = val5.color.a;
					color2.a = a3;
				}
				val5.color = color2;
			}
		}
	}

	public static Transform[] GetAllChilds(Transform GetFrom)
	{
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Expected O, but got Unknown
		if ((Object)(object)GetFrom == (Object)null)
		{
			return null;
		}
		List<Transform> list = new List<Transform>();
		foreach (Transform item2 in GetFrom)
		{
			Transform item = item2;
			list.Add(item);
		}
		return list.ToArray();
	}

	public static void AddCount(this ref int i, bool[] toCount)
	{
		for (int j = 0; j < toCount.Length; j++)
		{
			if (toCount[j])
			{
				i++;
			}
		}
	}

	public static T[] Append<T>(this T[] array, T item)
	{
		if (array == null)
		{
			return new T[1] { item };
		}
		T[] array2 = new T[array.Length + 1];
		array.CopyTo(array2, 0);
		array2[array.Length] = item;
		return array2;
	}

	public static IEnumerable<GameObject> RemoveDestroyed(this IEnumerable<GameObject> array)
	{
		List<GameObject> list = array.ToList();
		list.RemoveAll(delegate(GameObject obj)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: 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_001f: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)obj == (Object)null))
			{
				Scene scene = obj.scene;
				if (((Scene)(ref scene)).IsValid())
				{
					scene = obj.scene;
					return !((Scene)(ref scene)).isLoaded;
				}
			}
			return true;
		});
		return list;
	}

	public static IEnumerable<T> RemoveNulls<T>(this IEnumerable<T> array)
	{
		List<T> list = array.ToList();
		list.RemoveAll((T l) => l == null);
		return list;
	}

	public static bool Try_GetFrom_Config(BoolField boolField, bool regular = false)
	{
		if (boolField != null)
		{
			return boolField.value;
		}
		return regular;
	}

	public static float Try_GetFrom_Config(FloatField floatField, float regular = 1f)
	{
		if (floatField != null)
		{
			return floatField.value;
		}
		return regular;
	}

	public static void SetField(this object obj, string nameField, object value)
	{
		Type type = obj.GetType();
		IEnumerable<FieldInfo> source = from field in type.GetFields(allBindingFlags)
			where field.Name == nameField
			select field;
		if (source.Count() > 0)
		{
			source.FirstOrDefault().SetValue(obj, value);
			return;
		}
		IEnumerable<MethodInfo> source2 = from method in type.GetMethods(allBindingFlags)
			where method.Name == "set_" + nameField
			select method;
		if (source2.Count() > 0)
		{
			source2.FirstOrDefault().Invoke(obj, new object[1] { value });
		}
	}

	public static object GetField(this object obj, string nameField)
	{
		Type type = obj.GetType();
		IEnumerable<FieldInfo> source = from field in type.GetFields(allBindingFlags)
			where field.Name == nameField
			select field;
		if (source.Count() > 0)
		{
			return source.FirstOrDefault().GetValue(obj);
		}
		IEnumerable<MethodInfo> source2 = from method in type.GetMethods(allBindingFlags)
			where method.Name == "get_" + nameField
			select method;
		if (source2.Count() > 0)
		{
			return source2.FirstOrDefault().Invoke(obj, Array.Empty<object>());
		}
		return null;
	}

	public static T GetField<T>(this object obj, string nameField)
	{
		return (T)obj.GetField(nameField);
	}

	public static object InvokeMethod(this object obj, string nameMethod, params object[] args)
	{
		return obj.GetType().GetMethod(nameMethod, allBindingFlags).Invoke(obj, args);
	}
}
[BepInPlugin("com.enragedone.fentokill", "FentoKill", "2.5.216")]
public class Fento_Loader : BaseUnityPlugin
{
	public const string GUID = "com.enragedone.fentokill";

	public const string Name = "FentoKill";

	public const string Version = "2.5.216";

	private Harmony _Harmony = new Harmony("com.enragedone.fentokill.levelpatches");

	public static ManualLogSource _Logger;

	public static Fento_Loader _Instance;

	public const string Set_Guid = "com.enragedone.fentokill.settings";

	public PluginConfigurator config;

	public bool Confing_Loaded;

	public void Awake()
	{
		//IL_0096: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0102: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0110: Unknown result type (might be due to invalid IL or missing references)
		//IL_012c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0142: Unknown result type (might be due to invalid IL or missing references)
		//IL_0147: Unknown result type (might be due to invalid IL or missing references)
		//IL_0167: Unknown result type (might be due to invalid IL or missing references)
		//IL_0171: Expected O, but got Unknown
		//IL_0187: Unknown result type (might be due to invalid IL or missing references)
		//IL_0191: Expected O, but got Unknown
		//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01be: Unknown result type (might be due to invalid IL or missing references)
		//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ef: Expected O, but got Unknown
		//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_0200: Unknown result type (might be due to invalid IL or missing references)
		//IL_0205: Unknown result type (might be due to invalid IL or missing references)
		//IL_020f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0220: Expected O, but got Unknown
		//IL_021b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0225: Expected O, but got Unknown
		//IL_0225: Unknown result type (might be due to invalid IL or missing references)
		//IL_0236: Expected O, but got Unknown
		//IL_0231: Unknown result type (might be due to invalid IL or missing references)
		//IL_023b: Expected O, but got Unknown
		//IL_023b: Unknown result type (might be due to invalid IL or missing references)
		//IL_024c: Expected O, but got Unknown
		//IL_0247: Unknown result type (might be due to invalid IL or missing references)
		//IL_0251: Expected O, but got Unknown
		//IL_0251: Unknown result type (might be due to invalid IL or missing references)
		//IL_0266: Expected O, but got Unknown
		//IL_0261: Unknown result type (might be due to invalid IL or missing references)
		//IL_026b: Expected O, but got Unknown
		//IL_026b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0280: Expected O, but got Unknown
		//IL_027b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0285: Expected O, but got Unknown
		//IL_0299: Expected O, but got Unknown
		//IL_0294: Unknown result type (might be due to invalid IL or missing references)
		//IL_029e: Expected O, but got Unknown
		//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f8: Expected O, but got Unknown
		//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0305: Unknown result type (might be due to invalid IL or missing references)
		//IL_030a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0314: Unknown result type (might be due to invalid IL or missing references)
		//IL_0325: Expected O, but got Unknown
		//IL_0320: Unknown result type (might be due to invalid IL or missing references)
		//IL_032a: Expected O, but got Unknown
		//IL_032a: Unknown result type (might be due to invalid IL or missing references)
		//IL_033b: Expected O, but got Unknown
		//IL_0336: Unknown result type (might be due to invalid IL or missing references)
		//IL_0340: Expected O, but got Unknown
		//IL_0350: Expected O, but got Unknown
		//IL_034b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0355: Expected O, but got Unknown
		//IL_0367: Unknown result type (might be due to invalid IL or missing references)
		//IL_037c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0381: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b2: Expected O, but got Unknown
		//IL_03ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e2: Expected O, but got Unknown
		//IL_03dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e7: Expected O, but got Unknown
		//IL_03f7: Expected O, but got Unknown
		//IL_03f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_03fc: Expected O, but got Unknown
		//IL_040e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0421: Unknown result type (might be due to invalid IL or missing references)
		//IL_0426: Unknown result type (might be due to invalid IL or missing references)
		//IL_0445: Unknown result type (might be due to invalid IL or missing references)
		//IL_044a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0457: Expected O, but got Unknown
		//IL_0452: Unknown result type (might be due to invalid IL or missing references)
		//IL_0465: Unknown result type (might be due to invalid IL or missing references)
		//IL_046a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0474: Unknown result type (might be due to invalid IL or missing references)
		//IL_0489: Expected O, but got Unknown
		//IL_0484: Unknown result type (might be due to invalid IL or missing references)
		//IL_048e: Expected O, but got Unknown
		//IL_048e: Unknown result type (might be due to invalid IL or missing references)
		//IL_04a3: Expected O, but got Unknown
		//IL_049e: Unknown result type (might be due to invalid IL or missing references)
		//IL_04a8: Expected O, but got Unknown
		//IL_04bc: Expected O, but got Unknown
		//IL_04b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c1: Expected O, but got Unknown
		//IL_04d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_04e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_04eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_050a: Unknown result type (might be due to invalid IL or missing references)
		//IL_050f: Unknown result type (might be due to invalid IL or missing references)
		//IL_051c: Expected O, but got Unknown
		//IL_0517: Unknown result type (might be due to invalid IL or missing references)
		//IL_052a: Unknown result type (might be due to invalid IL or missing references)
		//IL_052f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0539: Unknown result type (might be due to invalid IL or missing references)
		//IL_054a: Expected O, but got Unknown
		//IL_0545: Unknown result type (might be due to invalid IL or missing references)
		//IL_054f: Expected O, but got Unknown
		//IL_054f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0560: Expected O, but got Unknown
		//IL_055b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0565: Expected O, but got Unknown
		//IL_0565: Unknown result type (might be due to invalid IL or missing references)
		//IL_057a: Expected O, but got Unknown
		//IL_0575: Unknown result type (might be due to invalid IL or missing references)
		//IL_057f: Expected O, but got Unknown
		//IL_057f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0594: Expected O, but got Unknown
		//IL_058f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0599: Expected O, but got Unknown
		//IL_0599: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ae: Expected O, but got Unknown
		//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b3: Expected O, but got Unknown
		//IL_05b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_05c0: Expected O, but got Unknown
		//IL_05bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_05d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_05dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ee: Expected O, but got Unknown
		//IL_05e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_05f3: Expected O, but got Unknown
		//IL_05f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0604: Expected O, but got Unknown
		//IL_05ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0609: Expected O, but got Unknown
		//IL_0609: Unknown result type (might be due to invalid IL or missing references)
		//IL_061a: Expected O, but got Unknown
		//IL_0615: Unknown result type (might be due to invalid IL or missing references)
		//IL_061f: Expected O, but got Unknown
		//IL_061f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0630: Expected O, but got Unknown
		//IL_062b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0635: Expected O, but got Unknown
		//IL_0635: Unknown result type (might be due to invalid IL or missing references)
		//IL_0646: Expected O, but got Unknown
		//IL_0641: Unknown result type (might be due to invalid IL or missing references)
		//IL_064b: Expected O, but got Unknown
		//IL_064b: Unknown result type (might be due to invalid IL or missing references)
		//IL_065c: Expected O, but got Unknown
		//IL_0657: Unknown result type (might be due to invalid IL or missing references)
		//IL_0661: Expected O, but got Unknown
		//IL_0671: Expected O, but got Unknown
		//IL_066c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0676: Expected O, but got Unknown
		_Instance = this;
		_Logger = ((BaseUnityPlugin)this).Logger;
		_Logger.LogInfo((object)"Fento_Loader v2.5.216 has started.");
		try
		{
			config = PluginConfigurator.Create("FENTOKILL", "com.enragedone.fentokill.settings");
			string text = Path.Combine(Path.GetDirectoryName(typeof(Fento_Loader).Assembly.Location), "icon.png");
			_Logger.LogInfo((object)$"Fento Icon Path {text}");
			config.SetIconWithURL("file://" + text);
			new ConfigHeader(config.rootPanel, "SOME CHANGES REQUIRE LEVEL RESTART", 24).textColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue));
			new ConfigHeader(config.rootPanel, "They will be marked with <color=#FF0000>+</color>", 24).textColor = Color32.op_Implicit(new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue));
			new ConfigHeader(config.rootPanel, "     ", 24).textColor = Color32.op_Implicit(new Color32((byte)0, (byte)0, (byte)0, (byte)0));
			new ConfigHeader(config.rootPanel, "Main / Global Settings", 24).textColor = Color32.op_Implicit(new Color32((byte)105, (byte)172, byte.MaxValue, byte.MaxValue));
			Difficulty_Options.B__Global_Enable_Modify_Everyone = new BoolField(config.rootPanel, "Modify Every Enemy With Changes Below", "com.enragedone.fentokill.settings.B__Global_Enable_Modify_Everyone", false);
			Difficulty_Options.B__Global_Disable_Level_Changes = new BoolField(config.rootPanel, "Disable Level Changes<color=#FF0000>+</color>", "com.enragedone.fentokill.settings.B__Global_Disable_Level_Changes", false);
			new ConfigHeader(config.rootPanel, "Extra Respected Difficulty Options", 24).textColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)158, (byte)105, byte.MaxValue));
			ConfigPanel val = new ConfigPanel(config.rootPanel, "Edit", "com.enragedone.fentokill.settings.extra_change");
			new ConfigHeader(val, "Extra Respected Difficulty Options", 24).textColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)158, (byte)105, byte.MaxValue));
			Difficulty_Options.B__Buff_Forse_All_ImmuneFriendly = new BoolField(val, "Make Friendly Fire Weaker", "com.enragedone.fentokill.settings.B__Buff_Forse_All_ImmuneFriendly", false);
			Difficulty_Options.B__Buff_Forse_All_PreSanded = new BoolField(val, "Make Every Enemy Pre Sanded", "com.enragedone.fentokill.settings.B__Buff_Forse_All_PreSanded", false);
			Difficulty_Options.B__Buff_Forse_All_Radiance = new BoolField(val, "Make Every Enemy Radiant", "com.enragedone.fentokill.settings.B__Buff_Forse_All_Radiance", false);
			Difficulty_Options.V__Varb_Multiply_HardDamage = new FloatField(val, "Change Hard Damage Multiplier", "com.enragedone.fentokill.settings.V__Varb_Multiply_HardDamage", 1f);
			Difficulty_Options.V__Varb_Multiply_Radiance_Tier = new FloatField(val, "Change Radiance Tier Multiplier", "com.enragedone.fentokill.settings.V__Varb_Multiply_Radiance_Tier", 1f);
			Difficulty_Options.V__Varb_Add_Radiance_Tier = new FloatField(val, "Add Extra Radiance Tiers", "com.enragedone.fentokill.settings.V__Varb_Add_Radiance_Tier", 0f);
			new ConfigHeader(config.rootPanel, "Skill Issue Options", 24).textColor = Color32.op_Implicit(new Color32((byte)61, (byte)204, (byte)0, byte.MaxValue));
			ConfigPanel val2 = new ConfigPanel(config.rootPanel, "Edit", "com.enragedone.fentokill.settings.extra_change");
			new ConfigHeader(val2, "Skill Issue Options", 24).textColor = Color32.op_Implicit(new Color32((byte)61, (byte)204, (byte)0, byte.MaxValue));
			Difficulty_Options.B__Issue_Disable_Most_Buffs = new BoolField(val2, "Disable Most Fento Buffs<color=#FF0000>+</color>", "com.enragedone.fentokill.settings.B__Issue_Disable_Most_Buffs", false);
			Difficulty_Options.B__Issue_Disable_PreSanded = new BoolField(val2, "Disable Pre Sanded Buff", "com.enragedone.fentokill.settings.B__Issue_Disable_PreSanded", false);
			Difficulty_Options.B__Issue_Disable_Radiance = new BoolField(val2, "Disable Radiance Buff", "com.enragedone.fentokill.settings.B__Issue_Disable_Radiance", false);
			new ConfigHeader(config.rootPanel, "Fento Custom Mechanics Options", 24).textColor = Color32.op_Implicit(new Color32((byte)0, (byte)204, (byte)132, byte.MaxValue));
			ConfigPanel val3 = new ConfigPanel(config.rootPanel, "Edit", "com.enragedone.fentokill.settings.extra_change");
			new ConfigHeader(val3, "Fento Custom Mechanics Options", 24).textColor = Color32.op_Implicit(new Color32((byte)0, (byte)204, (byte)132, byte.MaxValue));
			Difficulty_Options.B__Mech_Disable_RadIdols_Buff = new BoolField(val3, "Disable Rad Idols <color=#89FFFF>INCREASE RADIANCE</color>", "com.enragedone.fentokill.settings.B__Mech_Disable_RadIdols_Buff", false);
			Difficulty_Options.B__Mech_Disable_Custom_Symbiotes = new BoolField(val3, "Disable <color=#89FFFF>UNIQUE SYMBIOTIC PAIRS</color><color=#FF0000>+</color>", "com.enragedone.fentokill.settings.B__Mech_Disable_Custom_Symbiotes", false);
			new ConfigHeader(config.rootPanel, "Extra Radiance Options", 24).textColor = Color32.op_Implicit(new Color32((byte)93, (byte)74, (byte)186, byte.MaxValue));
			ConfigPanel val4 = new ConfigPanel(config.rootPanel, "Edit", "com.enragedone.fentokill.settings.extra_change");
			new ConfigHeader(val4, "Extra Radiance Options", 24).textColor = Color32.op_Implicit(new Color32((byte)93, (byte)74, (byte)186, byte.MaxValue));
			Difficulty_Options.V__Varb_Radiance_Health_Mult = new FloatField(val4, "Change Radiance Health Multiplier", "com.enragedone.fentokill.settings.V__Varb_Extra_Rad_Health_Mult", 1f);
			Difficulty_Options.V__Varb_Radiance_Damage_Mult = new FloatField(val4, "Change Radiance Damage Multiplier", "com.enragedone.fentokill.settings.V__Varb_Extra_Rad_Damage_Mult", 1f);
			Difficulty_Options.V__Varb_Radiance_Speed_Mult = new FloatField(val4, "Change Radiance Speed Multiplier", "com.enragedone.fentokill.settings.V__Varb_Extra_Rad_Speed_Mult", 1f);
			new ConfigHeader(config.rootPanel, "[7-4 ...LIKE ANTENNAS TO HEAVEN] Options", 24).textColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)28, (byte)62, byte.MaxValue));
			ConfigPanel val5 = new ConfigPanel(config.rootPanel, "Edit", "com.enragedone.fentokill.settings.extra_change");
			new ConfigHeader(val5, "[7-4 ...LIKE ANTENNAS TO HEAVEN] Options", 24).textColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)28, (byte)62, byte.MaxValue));
			Difficulty_Options.B__7_4_Disable_Defence = new BoolField(val5, "Disable Self Defence<color=#FF0000>+-</color>", "com.enragedone.fentokill.settings.B__7_4_Disable_Defence", false);
			Difficulty_Options.B__7_4_Disable_OverHeat = new BoolField(val5, "Disable OverHeat<color=#FF0000>+-</color>", "com.enragedone.fentokill.settings.B__7_4_Disable_OverHeat", false);
			Difficulty_Options.V__Varb_7_4_Fire_Rate = new FloatField(val5, "Change Fire Rate Mult", "com.enragedone.fentokill.settings.V__Varb_7_4_Fire_Rate", 1f);
			Difficulty_Options.V__Varb_7_4_Gently_WaitTime = new FloatField(val5, "Change Gently Wait Time", "com.enragedone.fentokill.settings.V__Varb_7_4_Gently_WaitTime", 5f);
			Difficulty_Options.V__Varb_7_4_CoolDown_Time = new FloatField(val5, "Change Cooldown Time", "com.enragedone.fentokill.settings.V__Varb_7_4_CoolDown_Time", 21f);
			new ConfigHeader(val5, "Individual Weapons", 24).textColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)28, (byte)62, byte.MaxValue));
			Difficulty_Options.B__7_4_Disable_OBLITERATION_BEAM_CANNON = new BoolField(val5, "Disable OBLIT-N BEAM CANNON", "com.enragedone.fentokill.settings.B__7_4_Disable_OBLITERATION_BEAM_CANNON", false);
			Difficulty_Options.B__7_4_Disable_DRONE_SWARM_PROTOCOL = new BoolField(val5, "Disable DRONE SWARM PROTOCOL", "com.enragedone.fentokill.settings.B__7_4_Disable_DRONE_SWARM_PROTOCOL", false);
			Difficulty_Options.B__7_4_Disable_SUPPORT_DROP_FORCES = new BoolField(val5, "Disable SUPPORT DROP FORCES", "com.enragedone.fentokill.settings.B__7_4_Disable_SUPPORT_DROP_FORCES", false);
			Difficulty_Options.B__7_4_Disable_NUCLEAR_THUNDERBOLT_EMITTER = new BoolField(val5, "Disable NUCLEAR THUNDERBOLT EMITTER", "com.enragedone.fentokill.settings.B__7_4_Disable_NUCLEAR_THUNDERBOLT_EMITTER", false);
			Difficulty_Options.B__7_4_Disable_CARPET_BOMBING_BATTERY = new BoolField(val5, "Disable CARPET BOMBING BATTERY", "com.enragedone.fentokill.settings.B__7_4_Disable_CARPET_BOMBING_BATTERY", false);
			Difficulty_Options.B__7_4_Disable_LASER_GRID = new BoolField(val5, "Disable LASER GRID", "com.enragedone.fentokill.settings.B__7_4_Disable_LASER_GRID", false);
			Difficulty_Options.B__7_4_Disable_EMP_CHARGE_SERVICES = new BoolField(val5, "Disable E.M.P. CHARGE SERVICES", "com.enragedone.fentokill.settings.B__7_4_Disable_EMP_CHARGE_SERVICES", false);
			_Logger.LogInfo((object)"Config v2.5.216 loaded successfully");
			Confing_Loaded = true;
		}
		catch
		{
			_Logger.LogError((object)"Fento_Loader v2.5.216 !!!---!!! ERROR With PluginConfigurator Init");
		}
		Fento_Core.Boot_Core();
		_Harmony.PatchAll(typeof(Enemy_Patches));
		_Harmony.PatchAll(typeof(Other_Patches));
		_Harmony.PatchAll(typeof(Issue_Patches));
		_Logger.LogInfo((object)"Fento_Loader v2.5.216 loaded successfully without error.");
	}
}
public static class Difficulty_Options
{
	public static BoolField B__Global_Disable_Level_Changes;

	public static BoolField B__Global_Enable_Modify_Everyone;

	public static BoolField B__Buff_Forse_All_ImmuneFriendly;

	public static BoolField B__Buff_Forse_All_PreSanded;

	public static BoolField B__Buff_Forse_All_Radiance;

	public static FloatField V__Varb_Multiply_HardDamage;

	public static FloatField V__Varb_Multiply_Radiance_Tier;

	public static FloatField V__Varb_Add_Radiance_Tier;

	public static BoolField B__Issue_Disable_Most_Buffs;

	public static BoolField B__Issue_Disable_PreSanded;

	public static BoolField B__Issue_Disable_Radiance;

	public static BoolField B__Mech_Disable_RadIdols_Buff;

	public static BoolField B__Mech_Disable_Custom_Symbiotes;

	public static FloatField V__Varb_Radiance_Health_Mult;

	public static FloatField V__Varb_Radiance_Damage_Mult;

	public static FloatField V__Varb_Radiance_Speed_Mult;

	public static BoolField B__7_4_Disable_Defence;

	public static BoolField B__7_4_Disable_OverHeat;

	public static FloatField V__Varb_7_4_Fire_Rate;

	public static FloatField V__Varb_7_4_Gently_WaitTime;

	public static FloatField V__Varb_7_4_CoolDown_Time;

	public static BoolField B__7_4_Disable_OBLITERATION_BEAM_CANNON;

	public static BoolField B__7_4_Disable_DRONE_SWARM_PROTOCOL;

	public static BoolField B__7_4_Disable_SUPPORT_DROP_FORCES;

	public static BoolField B__7_4_Disable_NUCLEAR_THUNDERBOLT_EMITTER;

	public static BoolField B__7_4_Disable_CARPET_BOMBING_BATTERY;

	public static BoolField B__7_4_Disable_LASER_GRID;

	public static BoolField B__7_4_Disable_EMP_CHARGE_SERVICES;

	public static int Count_Extra_Skill_Respect
	{
		get
		{
			int i = 0;
			i.AddCount(new bool[9]
			{
				Buff_Forse_All_ImmuneFriendly,
				Buff_Forse_All_PreSanded,
				Buff_Forse_All_Radiance,
				Varb_Multiply_HardDamage > 1f,
				Varb_Multiply_Radiance_Tier > 1f,
				Varb_Add_Radiance_Tier > 0f,
				Varb_Radiance_Health_Mult > 1f,
				Varb_Radiance_Damage_Mult > 1f,
				Varb_Radiance_Speed_Mult > 1f
			});
			return i;
		}
	}

	public static int Count_Issues_With_Skill
	{
		get
		{
			int i = 0;
			i.AddCount(new bool[11]
			{
				Issue_Disable_Most_Buffs,
				Issue_Disable_PreSanded,
				Issue_Disable_Radiance,
				Mech_Disable_RadIdols_Buff,
				Mech_Disable_Custom_Symbiotes,
				Varb_Multiply_HardDamage < 1f,
				Varb_Multiply_Radiance_Tier < 1f,
				Varb_Add_Radiance_Tier < 0f,
				Varb_Radiance_Health_Mult < 1f,
				Varb_Radiance_Damage_Mult < 1f,
				Varb_Radiance_Speed_Mult < 1f
			});
			return i;
		}
	}

	public static bool Extra_Skill_Respect => Count_Extra_Skill_Respect > 0;

	public static bool Skill_Issue => Count_Issues_With_Skill > 0;

	public static bool Global_Disable_Level_Changes => Fento_Utils.Try_GetFrom_Config(B__Global_Disable_Level_Changes);

	public static bool Global_Enable_Modify_Everyone => Fento_Utils.Try_GetFrom_Config(B__Global_Enable_Modify_Everyone);

	public static bool Buff_Forse_All_ImmuneFriendly => Fento_Utils.Try_GetFrom_Config(B__Buff_Forse_All_ImmuneFriendly);

	public static bool Buff_Forse_All_PreSanded => Fento_Utils.Try_GetFrom_Config(B__Buff_Forse_All_PreSanded);

	public static bool Buff_Forse_All_Radiance => Fento_Utils.Try_GetFrom_Config(B__Buff_Forse_All_Radiance);

	public static float Varb_Multiply_HardDamage => Fento_Utils.Try_GetFrom_Config(V__Varb_Multiply_HardDamage);

	public static float Varb_Multiply_Radiance_Tier => Fento_Utils.Try_GetFrom_Config(V__Varb_Multiply_Radiance_Tier);

	public static float Varb_Add_Radiance_Tier => Fento_Utils.Try_GetFrom_Config(V__Varb_Add_Radiance_Tier, 0f);

	public static bool Issue_Disable_Most_Buffs => Fento_Utils.Try_GetFrom_Config(B__Issue_Disable_Most_Buffs);

	public static bool Issue_Disable_PreSanded => Fento_Utils.Try_GetFrom_Config(B__Issue_Disable_PreSanded);

	public static bool Issue_Disable_Radiance => Fento_Utils.Try_GetFrom_Config(B__Issue_Disable_Radiance);

	public static bool Mech_Disable_RadIdols_Buff => Fento_Utils.Try_GetFrom_Config(B__Mech_Disable_RadIdols_Buff);

	public static bool Mech_Disable_Custom_Symbiotes => Fento_Utils.Try_GetFrom_Config(B__Mech_Disable_Custom_Symbiotes);

	public static float Varb_Radiance_Health_Mult => Fento_Utils.Try_GetFrom_Config(V__Varb_Radiance_Health_Mult);

	public static float Varb_Radiance_Damage_Mult => Fento_Utils.Try_GetFrom_Config(V__Varb_Radiance_Damage_Mult);

	public static float Varb_Radiance_Speed_Mult => Fento_Utils.Try_GetFrom_Config(V__Varb_Radiance_Speed_Mult);

	public static bool Issue_7_4_Disable_Defence => Fento_Utils.Try_GetFrom_Config(B__7_4_Disable_Defence);

	public static bool Buff_7_4_Disable_OverHeat => Fento_Utils.Try_GetFrom_Config(B__7_4_Disable_OverHeat);

	public static float Varb_7_4_Fire_Rate => Fento_Utils.Try_GetFrom_Config(V__Varb_7_4_Fire_Rate);

	public static float Varb_7_4_Gently_WaitTime => Fento_Utils.Try_GetFrom_Config(V__Varb_7_4_Gently_WaitTime, 5f);

	public static float Varb_7_4_CoolDown_Time => Fento_Utils.Try_GetFrom_Config(V__Varb_7_4_CoolDown_Time, 21f);

	public static bool Issue_7_4_Disable_OBLITERATION_BEAM_CANNON => Fento_Utils.Try_GetFrom_Config(B__7_4_Disable_OBLITERATION_BEAM_CANNON);

	public static bool Issue_7_4_Disable_DRONE_SWARM_PROTOCOL => Fento_Utils.Try_GetFrom_Config(B__7_4_Disable_DRONE_SWARM_PROTOCOL);

	public static bool Issue_7_4_Disable_SUPPORT_DROP_FORCES => Fento_Utils.Try_GetFrom_Config(B__7_4_Disable_SUPPORT_DROP_FORCES);

	public static bool Issue_7_4_Disable_NUCLEAR_THUNDERBOLT_EMITTER => Fento_Utils.Try_GetFrom_Config(B__7_4_Disable_NUCLEAR_THUNDERBOLT_EMITTER);

	public static bool Issue_7_4_Disable_CARPET_BOMBING_BATTERY => Fento_Utils.Try_GetFrom_Config(B__7_4_Disable_CARPET_BOMBING_BATTERY);

	public static bool Issue_7_4_Disable_LASER_GRID => Fento_Utils.Try_GetFrom_Config(B__7_4_Disable_LASER_GRID);

	public static bool Issue_7_4_Disable_EMP_CHARGE_SERVICES => Fento_Utils.Try_GetFrom_Config(B__7_4_Disable_EMP_CHARGE_SERVICES);
}
public static class Fento_Core
{
	public static TMP_FontAsset MainFont;

	public static GameObject[] AllObjs = null;

	public static Scene CurrentScene;

	public static int History = 0;

	public static int ActiveHistory = 0;

	public static EnemyClass Example_Class = (EnemyClass)0;

	public static EnemyType Example_Type = (EnemyType)34;

	public static void Boot_Core()
	{
		SceneManager.sceneLoaded += OnSceneLoaded;
		Fento_Loader._Logger.LogInfo((object)"Fento_Core v2.5.216 - Boot_Core successfully.");
	}

	public static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		History = 0;
		ActiveHistory = 0;
		CurrentScene = scene;
		Fento_Loader._Logger.LogInfo((object)((Scene)(ref scene)).name);
		string currentScene = SceneHelper.CurrentScene;
		Fento_Loader._Logger.LogInfo((object)currentScene);
		AllObjs = Resources.FindObjectsOfTypeAll<GameObject>();
		if ((Object)(object)MainFont == (Object)null)
		{
			MainFont = (from e in Resources.FindObjectsOfTypeAll<TMP_FontAsset>()
				where (Object)(object)e != (Object)null && ((Object)e).name == "VCR_OSD_MONO_1"
				select e).FirstOrDefault();
		}
		Setup_Levels(currentScene);
	}

	public static void Setup_Levels(string levelName)
	{
		if (levelName == "Main Menu")
		{
			Invoke_Load_FentoLevel(levelName, Fento_LevelLoaders.Main_Menu.SetupFentoLevel);
			Fento_Utils.Invoke_WithDelay(0.75f, delegate
			{
				if ((Object)(object)Fento_Assets.Guttertank.obj == (Object)null || (Object)(object)Fento_Assets.Gutterman.obj == (Object)null || (Object)(object)Fento_Assets.RagePrefab.obj == (Object)null || (Object)(object)Fento_Assets.Insignia.obj == (Object)null)
				{
					((MonoBehaviour)Fento_Loader._Instance).StartCoroutine(Fento_Assets.Fento_LoadAllAssets_Gradually());
				}
			});
			return;
		}
		Fento_Utils.Invoke_NextFrame(delegate
		{
			if ((Object)(object)MonoSingleton<FinalRank>.Instance != (Object)null && MonoSingleton<FinalRank>.Instance.toAppear.Length != 0 && (Object)(object)MonoSingleton<FinalRank>.Instance.toAppear[0] != (Object)null && (Object)(object)MonoSingleton<FinalRank>.Instance.toAppear[0].transform.GetChild(1) != (Object)null)
			{
				ComponentExtensions.GetOrAddComponent<Add_Fento_Marked>((Component)(object)MonoSingleton<FinalRank>.Instance.toAppear[0].transform.GetChild(1)).Real_Level = false;
				GameObjectExtensions.GetOrAddComponent<Add_Fento_Skill_Marked>(((Component)MonoSingleton<FinalRank>.Instance.extraInfo).gameObject).Real_Level = false;
			}
		});
		if (!Difficulty_Options.Global_Disable_Level_Changes)
		{
			if (levelName == "Level 0-1")
			{
				Invoke_Load_FentoLevel(levelName, Fento_LevelLoaders.Prelude_0_1.SetupFentoLevel);
			}
			else if (levelName == "Level 7-4")
			{
				Invoke_Load_FentoLevel(levelName, Fento_LevelLoaders.VIOLENCE_7_4.SetupFentoLevel);
			}
		}
	}

	public static void Invoke_Load_FentoLevel(string levelName, Action levelCaster)
	{
		if (levelName != "Level 4-4")
		{
			Fento_Utils.Invoke_NextFrame(delegate
			{
				if ((Object)(object)MonoSingleton<FinalRank>.Instance != (Object)null && MonoSingleton<FinalRank>.Instance.toAppear.Length != 0 && (Object)(object)MonoSingleton<FinalRank>.Instance.toAppear[0] != (Object)null && (Object)(object)MonoSingleton<FinalRank>.Instance.toAppear[0].transform.GetChild(1) != (Object)null)
				{
					ComponentExtensions.GetOrAddComponent<Add_Fento_Marked>((Component)(object)MonoSingleton<FinalRank>.Instance.toAppear[0].transform.GetChild(1)).Real_Level = true;
					GameObjectExtensions.GetOrAddComponent<Add_Fento_Skill_Marked>(((Component)MonoSingleton<FinalRank>.Instance.extraInfo).gameObject).Real_Level = true;
				}
			});
		}
		if (levelCaster != null)
		{
			Fento_Loader._Logger.LogInfo((object)("!!!---!!! Start Fento LOADER " + levelName + " !!!---!!!"));
			Fento_Loader._Logger.LogWarning((object)("!!!---!!! Start Fento LOADER " + levelName + " !!!---!!!"));
			Fento_Loader._Logger.LogInfo((object)("!!!---!!! Start Fento LOADER " + levelName + " !!!---!!!"));
			levelCaster();
			StatsManager instance = MonoSingleton<StatsManager>.Instance;
			if ((Object)(object)instance != (Object)null && Fento_LevelLoaders.Level_Mults.TryGetValue(levelName, out (float, float, float) value))
			{
				for (int i = 0; i < instance.timeRanks.Length; i++)
				{
					instance.timeRanks[i] = (int)((float)instance.timeRanks[i] * value.Item1);
				}
				for (int j = 0; j < instance.styleRanks.Length; j++)
				{
					instance.styleRanks[j] = (int)((float)instance.styleRanks[j] * value.Item2);
				}
				for (int k = 0; k < instance.killRanks.Length; k++)
				{
					instance.killRanks[k] = (int)((float)instance.killRanks[k] * value.Item3);
				}
			}
			Fento_Utils.Invoke_NextFrame(delegate
			{
				Fento_Utils.Invoke_WithDelay(0.5f, Fento_Utils.Forse_Clear);
			});
			Fento_Loader._Logger.LogInfo((object)("!!!---!!! End Fento LOADER " + levelName + " !!!---!!!"));
			Fento_Loader._Logger.LogWarning((object)("!!!---!!! End Fento LOADER " + levelName + " !!!---!!!"));
			Fento_Loader._Logger.LogInfo((object)("!!!---!!! End Fento LOADER " + levelName + " !!!---!!!"));
		}
		else
		{
			Fento_Loader._Logger.LogWarning((object)("!!!---!!! MISSING Fento Level Loader " + levelName + " !!!---!!!"));
			Fento_Loader._Logger.LogWarning((object)("!!!---!!! MISSING Fento Level Loader " + levelName + " !!!---!!!"));
			Fento_Loader._Logger.LogWarning((object)("!!!---!!! MISSING Fento Level Loader " + levelName + " !!!---!!!"));
			Fento_Loader._Logger.LogWarning((object)("!!!---!!! MISSING Fento Level Loader " + levelName + " !!!---!!!"));
			Fento_Loader._Logger.LogWarning((object)("!!!---!!! MISSING Fento Level Loader " + levelName + " !!!---!!!"));
		}
	}
}
public static class Fento_Assets
{
	[CompilerGenerated]
	private sealed class <Fento_LoadAllAssets_Gradually>d__23 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		private Type <type>5__2;

		private FieldInfo[] <>7__wrap2;

		private int <>7__wrap3;

		private Dictionary<Fento_Utils.DetectebleEnemies, Fento_Utils.AddresableObject<GameObject>>.Enumerator <>7__wrap4;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <Fento_LoadAllAssets_Gradually>d__23(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			int num = <>1__state;
			if (num == -3 || (uint)(num - 5) <= 1u)
			{
				try
				{
				}
				finally
				{
					<>m__Finally1();
				}
			}
			<type>5__2 = null;
			<>7__wrap2 = null;
			<>7__wrap4 = default(Dictionary<Fento_Utils.DetectebleEnemies, Fento_Utils.AddresableObject<GameObject>>.Enumerator);
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Expected O, but got Unknown
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Expected O, but got Unknown
			//IL_01df: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e9: Expected O, but got Unknown
			try
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
				{
					<>1__state = -1;
					Fento_Loader._Logger.LogInfo((object)"[Loader] Loading Assets");
					<type>5__2 = typeof(Fento_Assets);
					FieldInfo[] fields = <type>5__2.GetFields(BindingFlags.Static | BindingFlags.Public);
					<>7__wrap2 = fields;
					<>7__wrap3 = 0;
					goto IL_0164;
				}
				case 1:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(0.01f);
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					goto IL_0156;
				case 3:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(0.01f);
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					goto IL_0156;
				case 5:
					<>1__state = -3;
					<>2__current = (object)new WaitForSeconds(0.01f);
					<>1__state = 6;
					return true;
				case 6:
					{
						<>1__state = -3;
						break;
					}
					IL_0164:
					if (<>7__wrap3 < <>7__wrap2.Length)
					{
						object value = <>7__wrap2[<>7__wrap3].GetValue(<type>5__2);
						if (value is Fento_Utils.AddresableObject<GameObject> addresableObject)
						{
							Fento_Loader._Logger.LogInfo((object)"-------------------------------------------------------");
							<>2__current = addresableObject.Long_Load();
							<>1__state = 1;
							return true;
						}
						if (value is Fento_Utils.AddresableObject<AudioClip> addresableObject2)
						{
							Fento_Loader._Logger.LogInfo((object)"-------------------------------------------------------");
							<>2__current = addresableObject2.Long_Load();
							<>1__state = 3;
							return true;
						}
						goto IL_0156;
					}
					<>7__wrap2 = null;
					<>7__wrap4 = Fento_Utils.AllEnemies.GetEnumerator();
					<>1__state = -3;
					break;
					IL_0156:
					<>7__wrap3++;
					goto IL_0164;
				}
				if (<>7__wrap4.MoveNext())
				{
					KeyValuePair<Fento_Utils.DetectebleEnemies, Fento_Utils.AddresableObject<GameObject>> current = <>7__wrap4.Current;
					Fento_Loader._Logger.LogInfo((object)"-------------------------------------------------------");
					<>2__current = current.Value.Long_Load();
					<>1__state = 5;
					return true;
				}
				<>m__Finally1();
				<>7__wrap4 = default(Dictionary<Fento_Utils.DetectebleEnemies, Fento_Utils.AddresableObject<GameObject>>.Enumerator);
				Fento_Loader._Logger.LogInfo((object)"All Fento assets loaded.");
				return false;
			}
			catch
			{
				//try-fault
				((IDisposable)this).Dispose();
				throw;
			}
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		private void <>m__Finally1()
		{
			<>1__state = -1;
			((IDisposable)<>7__wrap4).Dispose();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	public static Fento_Utils.AddresableObject<GameObject> Explosion = "Assets/Prefabs/Attacks and Projectiles/Explosions/Explosion.prefab";

	public static Fento_Utils.AddresableObject<GameObject> V2UnParry = "Assets/Particles/Flashes/V2FlashUnparriable.prefab";

	public static Fento_Utils.AddresableObject<GameObject> RocketLauncher = "Assets/Prefabs/Weapons/Rocket Launcher Cannonball.prefab";

	public static Fento_Utils.AddresableObject<GameObject> Cannonball = "Assets/Prefabs/Attacks and Projectiles/Cannonball.prefab";

	public static Fento_Utils.AddresableObject<GameObject> Railcannon_Beam = "Assets/Prefabs/Attacks and Projectiles/Hitscan Beams/Railcannon Beam.prefab";

	public static Fento_Utils.AddresableObject<GameObject> Railcannon_Fire = "Assets/Particles/SoundBubbles/RailcannonFire.prefab";

	public static Fento_Utils.AddresableObject<GameObject> Railcannon_Charge = "Assets/Particles/SoundBubbles/RailcannonFullCharge.prefab";

	public static Fento_Utils.AddresableObject<GameObject> NailAltFodder = "Assets/Prefabs/Attacks and Projectiles/NailAltFodder.prefab";

	public static Fento_Utils.AddresableObject<AudioClip> Punch_heavy = "Assets/Sounds/Weapons/punch_heavy.wav";

	public static Fento_Utils.AddresableObject<AudioClip> RocketFire_Default = "Assets/Sounds/Weapons/RocketFire5.wav";

	public static Fento_Utils.AddresableObject<GameObject> LavaBox = "Assets/Prefabs/Sandbox/Lava.prefab";

	public static Fento_Utils.AddresableObject<AudioClip> Vase_Break = "Assets/Sounds/Environment/VaseBreak.wav";

	public static Fento_Utils.AddresableObject<AudioClip> bigRock_Break = "Assets/Sounds/Environment/bigRockBreak.wav";

	public static Fento_Utils.AddresableObject<AudioClip> P2_OST = "Assets/Music/P-2.wav";

	public static Fento_Utils.AddresableObject<AudioClip> E_1_Jazz_OST = "Assets/Music/Encores/1-E Jazz.wav";

	public static Fento_Utils.AddresableObject<AudioClip> E_1_Ambiance_OST = "Assets/Music/Encores/1-E Ambiance.wav";

	public static Fento_Utils.AddresableObject<GameObject> Guttertank = "Assets/Prefabs/Enemies/Spawners/BombEnemySpawnerGuttertank Variant.prefab";

	public static Fento_Utils.AddresableObject<GameObject> Gutterman = "Assets/Prefabs/Enemies/Spawners/BombEnemySpawnerGutterman Variant.prefab";

	public static Fento_Utils.AddresableObject<GameObject> RagePrefab = "Assets/Particles/Enemies/RageEffect.prefab";

	public static Fento_Utils.AddresableObject<GameObject> Insignia = "Virtue Insignia";

	public static Fento_Utils.AddresableObject<GameObject> Bolt = "Assets/Particles/Environment/LightningBoltWindupFollow Variant.prefab";

	public static Fento_Utils.AddresableObject<GameObject> BoltExplosion = "Assets/Prefabs/Attacks and Projectiles/Explosions/Lightning Strike Explosive.prefab";

	public static Fento_Utils.AddresableObject<GameObject> EnemyRocket = "Assets/Prefabs/Attacks and Projectiles/RocketEnemy.prefab";

	[IteratorStateMachine(typeof(<Fento_LoadAllAssets_Gradually>d__23))]
	public static IEnumerator Fento_LoadAllAssets_Gradually()
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <Fento_LoadAllAssets_Gradually>d__23(0);
	}
}
public static class Fento_LevelLoaders
{
	public static class Main_Menu
	{
		public static Fento_Utils.PathObject ExtraText_1 = "Canvas/Main Menu (1)/LeftSide/Text (3)";

		public static Fento_Utils.PathObject ExtraText_2 = "Canvas/Main Menu (1)/LeftSide/Text (3)/Text";

		public static Fento_Utils.PathObject ExtraText_Christmas = "Canvas/Main Menu (1)/LeftSide/Holiday Greetings/Text (Christmas)";

		public static Fento_Utils.PathObject ExtraText_Halloween = "Canvas/Main Menu (1)/LeftSide/Holiday Greetings/Text (Halloween)";

		public static Fento_Utils.PathObject ExtraText_Easter = "Canvas/Main Menu (1)/LeftSide/Holiday Greetings/Text (Easter)";

		public static TextMeshProUGUI Text_1;

		public static TextMeshProUGUI Text_2;

		public static TextMeshProUGUI Text_Christmas;

		public static TextMeshProUGUI Text_Halloween;

		public static TextMeshProUGUI Text_Easter;

		public static void SetupFentoLevel()
		{
			if ((Object)(object)ExtraText_1.gameObject != (Object)null)
			{
				Text_1 = ExtraText_1.GetComponent<TextMeshProUGUI>();
				TryAddFento(Text_1);
			}
			if ((Object)(object)ExtraText_2.gameObject != (Object)null)
			{
				Text_2 = ExtraText_2.GetComponent<TextMeshProUGUI>();
				TryAddFento(Text_2);
			}
			if ((Object)(object)ExtraText_Christmas.gameObject != (Object)null)
			{
				Text_Christmas = ExtraText_Christmas.GetComponent<TextMeshProUGUI>();
				TryAddFento(Text_Christmas);
			}
			if ((Object)(object)ExtraText_Halloween.gameObject != (Object)null)
			{
				Text_Halloween = ExtraText_Halloween.GetComponent<TextMeshProUGUI>();
				TryAddFento(Text_Halloween);
			}
			if ((Object)(object)ExtraText_Easter.gameObject != (Object)null)
			{
				Text_Easter = ExtraText_Easter.GetComponent<TextMeshProUGUI>();
				TryAddFento(Text_Easter);
			}
			LevelSelectPanel[] array = Resources.FindObjectsOfTypeAll<LevelSelectPanel>().Where(delegate(LevelSelectPanel L)
			{
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				//IL_000b: Unknown result type (might be due to invalid IL or missing references)
				Scene scene = ((Component)L).gameObject.scene;
				return ((Scene)(ref scene)).isLoaded && Changed_Levels.Contains(L.levelNumber);
			}).ToArray();
			foreach (LevelSelectPanel val in array)
			{
				if ((Object)(object)val != (Object)null && (Object)(object)((Component)val).transform.GetChild(0) != (Object)null)
				{
					GameObjectExtensions.GetOrAddComponent<Add_Fento_Marked>(((Component)((Component)val).transform.GetChild(0)).gameObject).Real_Level = true;
				}
			}
		}

		public static void TryAddFento(TextMeshProUGUI toAdd)
		{
			if (!((Object)(object)toAdd == (Object)null) && !((TMP_Text)toAdd).text.Contains("Fento Modfied"))
			{
				((TMP_Text)toAdd).text = ((TMP_Text)toAdd).text + "<color=#FF0000> + Fento</color> <color=#FF3F00>2.5.216</color> <color=#FF6A00>Modified</color>";
			}
		}
	}

	public static class Prelude_0_1
	{
		public static Fento_Utils.PathObject UTRAKILL = "Canvas/HurtScreen/Title Sound/Image";

		public static Fento_Utils.PathObject FentoTitle = "Canvas/HurtScreen/Title Sound";

		public static TextMeshProUGUI Text;

		public static Fento_Utils.PathObject A_Wave_1 = "3 - Gun Room/Enemies/Wave 1";

		public static Fento_Utils.PathObject A_Wave_2 = "3 - Gun Room/Enemies/Wave 2";

		public static Fento_Utils.PathObject A_Trigger_1 = "3 - Gun Room/Enemies/Trigger";

		public static ActivateArena A_ActivateArena_1;

		public static ActivateNextWave A_ActivateNextWave_1;

		public static Fento_Utils.PathObject B_Wave_1 = "4 - Hallway/4 Stuff/Enemy/Wave 1";

		public static Fento_Utils.PathObject B_Trigger_1 = "4 - Hallway/4 Stuff/Enemy/Trigger 1";

		public static Fento_Utils.PathObject B_Wave_2 = "4 - Hallway/4 Stuff/Enemy/Wave 2";

		public static Fento_Utils.PathObject B_Trigger_2 = "4 - Hallway/4 Stuff/Enemy/Trigger 2";

		public static ActivateArena B_ActivateArena_1;

		public static ActivateArena B_ActivateArena_2;

		public static Fento_Utils.PathObject C_Wave_1 = "6 - Glass Hallway/6 Content/Enemies";

		public static Fento_Utils.PathObject C_Trigger_1 = "6 - Glass Hallway/6 Content/Enemies/Trigger";

		public static ActivateArena C_ActivateArena_1;

		public static Fento_Utils.PathObject D_Wave_1 = "7 - Fan Room/7 Content/Enemies";

		public static Fento_Utils.PathObject D_Trigger_1 = "7 - Fan Room/7 Content/Enemies/Cube";

		public static Transform[] D_childs_1;

		public static ActivateArena D_ActivateArena_1;

		public static Fento_Utils.PathObject D_Wave_1_Clone = "7 - Fan Room/7 Content(Clone)/Enemies";

		public static Fento_Utils.PathObject E_Wave_1 = "9 - Projectile Arena/9 Content/Enemies/Projectile Wave";

		public static Fento_Utils.PathObject E_Wave_2 = "9 - Projectile Arena/9 Content/Enemies/New Wave";

		public static Fento_Utils.PathObject E_Trigger_1 = "9 - Projectile Arena/9 Content/Enemies/Cube";

		public static ActivateArena E_ActivateArena_1;

		public static ActivateNextWave E_ActivateNextWave_1;

		public static ActivateNextWave E_ActivateNextWave_2;

		public static Fento_Utils.PathObject E_Wave_1_Clone = "9 - Projectile Arena/9 Content(Clone)/Enemies/Projectile Wave";

		public static Fento_Utils.PathObject E_Wave_2_Clone = "9 - Projectile Arena/9 Content(Clone)/Enemies/New Wave";

		public static Fento_Utils.PathObject F_Wave_1 = "10 - Combo Hallway/10 Content/Enemies/Wave 1";

		public static Fento_Utils.PathObject F_Wave_2 = "10 - Combo Hallway/10 Content/Enemies/Wave 2";

		public static Fento_Utils.PathObject F_Trigger_1 = "10 - Combo Hallway/10 Content/Enemies/Trigger 1";

		public static Fento_Utils.PathObject F_Trigger_2 = "10 - Combo Hallway/10 Content/Enemies/Trigger 2";

		public static ActivateArena F_ActivateArena_1;

		public static ActivateArena F_ActivateArena_2;

		public static Fento_Utils.PathObject F_Wave_1_Clone = "10 - Combo Hallway/10 Content(Clone)/Enemies/Wave 1";

		public static Fento_Utils.PathObject F_Wave_2_Clone = "10 - Combo Hallway/10 Content(Clone)/Enemies/Wave 2";

		public static Fento_Utils.PathObject G_Wave_1 = "11 - Projectile Zombies Room/11 Content/Enemies/Wave 1";

		public static Fento_Utils.PathObject G_Wave_2 = "11 - Projectile Zombies Room/11 Content/Enemies/Wave 1/Filth";

		public static Fento_Utils.PathObject G_Trigger_1A = "11 - Projectile Zombies Room/11 Content/Enemies/Trigger 1A";

		public static Fento_Utils.PathObject G_Trigger_1B = "11 - Projectile Zombies Room/11 Content/Enemies/Trigger 1B";

		public static Fento_Utils.PathObject G_Trigger_2 = "11 - Projectile Zombies Room/11 Content/Enemies/Trigger 2";

		public static ActivateArena G_ActivateArena_1A;

		public static ActivateArena G_ActivateArena_1B;

		public static ActivateArena G_ActivateArena_2;

		public static Fento_Utils.PathObject G_Wave_1_Clone = "11 - Projectile Zombies Room/11 Content(Clone)/Enemies/Wave 1";

		public static Fento_Utils.PathObject G_Wave_2_Clone = "11 - Projectile Zombies Room/11 Content(Clone)/Enemies/Wave 1/Filth";

		public static Fento_Utils.PathObject H_Wave_1 = "12 - Boss Hallway/12 Content/Enemies";

		public static Fento_Utils.PathObject H_Trigger_1 = "12 - Boss Hallway/12 Content/Enemies/Cube";

		public static Transform[] H_childs_1;

		public static ActivateArena H_ActivateArena_1;

		public static Fento_Utils.PathObject H_Wave_1_Clone = "12 - Boss Hallway/12 Content(Clone)/Enemies";

		public static Fento_Utils.PathObject H_Secret_Wave_1 = "12 - Boss Hallway/12 Content/Secret Area";

		public static EnemyIdentifier I_Boss_MaliciousFace;

		public static List<Idol> I_Idols = new List<Idol>();

		public static Fento_Utils.PathObject I_Boss = "13 - Malicious Face Arena/13 Content/Boss/Spider";

		public static Fento_Utils.PathObject I_Wave_1 = "13 - Malicious Face Arena/13 Content/Boss";

		public static Fento_Utils.PathObject I_Trigger_1 = "13 - Malicious Face Arena/13 Content/Trigger";

		public static ObjectActivator I_ObjectActivator_1;

		public static ActivateNextWave I_ActivateNextWave_1;

		public static ActivateArena I_ActivateArena_1;

		public static Fento_Utils.PathObject I_Wave_1_Clone = "13 - Malicious Face Arena/13 Content(Clone)/Boss";

		public static List<Machine> A_3_Machines_1 = new List<Machine>();

		public static List<Machine> E_9_Machines_2 = new List<Machine>();

		public static List<Machine> F_10_Machines_3 = new List<Machine>();

		public static List<Machine> G_11_Machines_4 = new List<Machine>();

		public static List<Machine> H_12_Machines_5 = new List<Machine>();

		public static Fento_Utils.PathObject Hint_1 = "5 - Glass Intro/5 Nonstuff/Cube (2)";

		public static HudMessage Message_1;

		public const string Text_1 = "<color=orange>ENVIRONMENT</color> and <color=orange>TACTICS</color> can be very <color=#89FFFF>USEFUL</color> \n<color=#FF0000>YOU KNOW THE DRIL</color>";

		public static Fento_Utils.PathObject Hint_2 = "10 - Combo Hallway/10 Nonstuff/Hint";

		public static HudMessage Message_2;

		public const string Text_2 = "Upon death <color=orange>Radiance Idols</color> now can <color=#89FFFF>INCREASE RADIANCE TIER</color> \n<color=#FF0000>IT'S NOT GONNA HURT</color>";

		public static Fento_Utils.PathObject Hint_3 = "11 - Projectile Zombies Room/11 Nonstuff/Hint";

		public static HudMessage Message_3;

		public const string Text_3 = "<color=#FF6A00>SOME ENEMIES</color> now form <color=#89FFFF>UNIQUE SYMBIOTIC PAIRS</color> \n<color=#FF0000>DON'T BE SURPRISED</color>";

		public static Fento_Utils.PathObject Hint_4 = "12 - Boss Hallway/12 Nonstuff/Hint";

		public static HudMessage Message_4;

		public const string Text_4 = "<color=#FF0000>GOOD LUCK</color>";

		public static void SetupFentoLevel()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: 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_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_015a: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_071e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0732: Unknown result type (might be due to invalid IL or missing references)
			//IL_0757: Unknown result type (might be due to invalid IL or missing references)
			//IL_076b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0790: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0802: Unknown result type (might be due to invalid IL or missing references)
			//IL_0816: Unknown result type (might be due to invalid IL or missing references)
			//IL_083b: Unknown result type (might be due to invalid IL or missing references)
			//IL_084f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0874: Unknown result type (might be due to invalid IL or missing references)
			//IL_0888: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d50: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dda: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dee: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e12: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e26: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e4b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e5f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e84: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e98: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ebc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ed0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ef5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f09: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fd1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fe5: Unknown result type (might be due to invalid IL or missing references)
			//IL_100b: Unknown result type (might be due to invalid IL or missing references)
			//IL_101f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1046: Unknown result type (might be due to invalid IL or missing references)
			//IL_105a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1081: Unknown result type (might be due to invalid IL or missing references)
			//IL_1095: Unknown result type (might be due to invalid IL or missing references)
			//IL_10bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_10d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_10f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_110b: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)UTRAKILL.transform != (Object)null)
			{
				UTRAKILL.transform.localScale = Vector3.zero;
				UTRAKILL.gameObject.SetActive(false);
			}
			if ((Object)(object)FentoTitle.transform != (Object)null)
			{
				Text = GameObjectExtensions.GetOrAddComponent<TextMeshProUGUI>(FentoTitle.gameObject);
				if ((Object)(object)Text != (Object)null && ((TMP_Text)Text).text != (Difficulty_Options.Skill_Issue ? "SKILLISSUE" : "FENTOKILL"))
				{
					((TMP_Text)Text).font = Fento_Core.MainFont;
					((Graphic)Text).color = new Color(1f, 1f, 1f);
					if (Difficulty_Options.Skill_Issue)
					{
						((TMP_Text)Text).fontSize = 190f;
						((TMP_Text)Text).text = "SKILLISSUE";
						((TMP_Text)Text).colorGradient = new VertexGradient(new Color(0.3f, 1f, 0.3f, 1f), new Color(0.1f, 0.95f, 0.1f, 1f), new Color(0f, 0.5f, 0f, 1f), new Color(0f, 0.15f, 0f, 1f));
					}
					else
					{
						((TMP_Text)Text).colorGradient = new VertexGradient(new Color(1f, 0.3f, 0.3f, 1f), new Color(0.95f, 0.1f, 0.1f, 1f), new Color(0.5f, 0f, 0f, 1f), new Color(0.15f, 0f, 0f, 1f));
						if (Difficulty_Options.Extra_Skill_Respect)
						{
							((TMP_Text)Text).fontSize = 190f;
							((TMP_Text)Text).text = "FENTOKILL+";
						}
						else
						{
							((TMP_Text)Text).fontSize = 200f;
							((TMP_Text)Text).text = "FENTOKILL";
						}
					}
					((TMP_Text)Text).fontStyle = (FontStyles)1;
					((TMP_Text)Text).enableVertexGradient = true;
					((TMP_Text)Text).alignment = (TextAlignmentOptions)514;
				}
			}
			A_3_Machines_1.Clear();
			E_9_Machines_2.Clear();
			F_10_Machines_3.Clear();
			G_11_Machines_4.Clear();
			H_12_Machines_5.Clear();
			I_Idols.Clear();
			I_Boss_MaliciousFace = null;
			Message_1 = Hint_1.GetComponent<HudMessage>();
			Message_1.Set_HudMessage("<color=orange>ENVIRONMENT</color> and <color=orange>TACTICS</color> can be very <color=#89FFFF>USEFUL</color> \n<color=#FF0000>YOU KNOW THE DRIL</color>");
			Message_2 = Hint_2.GetComponent<HudMessage>();
			Message_2.Set_HudMessage("Upon death <color=orange>Radiance Idols</color> now can <color=#89FFFF>INCREASE RADIANCE TIER</color> \n<color=#FF0000>IT'S NOT GONNA HURT</color>");
			Message_3 = Hint_3.GetComponent<HudMessage>();
			Message_3.Set_HudMessage("<color=#FF6A00>SOME ENEMIES</color> now form <color=#89FFFF>UNIQUE SYMBIOTIC PAIRS</color> \n<color=#FF0000>DON'T BE SURPRISED</color>");
			Message_4 = Hint_4.GetComponent<HudMessage>();
			Message_4.Set_HudMessage("<color=#FF0000>GOOD LUCK</color>");
			A_ActivateArena_1 = A_Trigger_1.GetComponent<ActivateArena>();
			A_ActivateNextWave_1 = A_Wave_1.GetComponent<ActivateNextWave>();
			B_ActivateArena_1 = B_Trigger_1.GetComponent<ActivateArena>();
			B_ActivateArena_2 = B_Trigger_2.GetComponent<ActivateArena>();
			C_ActivateArena_1 = C_Trigger_1.GetComponent<ActivateArena>();
			D_childs_1 = D_Wave_1.childs;
			D_ActivateArena_1 = D_Trigger_1.GetComponent<ActivateArena>();
			E_ActivateArena_1 = E_Trigger_1.GetComponent<ActivateArena>();
			E_ActivateNextWave_1 = E_Wave_1.GetComponent<ActivateNextWave>();
			E_ActivateNextWave_2 = E_Wave_2.GetComponent<ActivateNextWave>();
			F_ActivateArena_1 = F_Trigger_1.GetComponent<ActivateArena>();
			F_ActivateArena_2 = F_Trigger_2.GetComponent<ActivateArena>();
			G_ActivateArena_1A = G_Trigger_1A.GetComponent<ActivateArena>();
			G_ActivateArena_1B = G_Trigger_1B.GetComponent<ActivateArena>();
			G_ActivateArena_2 = G_Trigger_2.GetComponent<ActivateArena>();
			H_childs_1 = H_Wave_1.childs;
			H_ActivateArena_1 = H_Trigger_1.GetComponent<ActivateArena>();
			I_ObjectActivator_1 = I_Trigger_1.GetComponent<ObjectActivator>();
			I_ActivateNextWave_1 = I_Wave_1.GetComponent<ActivateNextWave>();
			I_ActivateArena_1 = I_Trigger_1.GetComponent<ActivateArena>();
			Fento_Utils.Enemy_InStack(A_Wave_1.transform, delegate(EnemyIdentifier enemy)
			{
				//IL_0008: 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)
				Fento_Utils.Base_ReplaceEnemy(Fento_Utils.DetectebleEnemies.Mindflayer, ((Component)enemy).transform, Vector3.up * (5f + Random.value * 15f));
			});
			Fento_Utils.Enemy_InStack(A_Wave_1.transform, delegate(EnemyIdentifier enemy)
			{
				enemy.Sandify(false);
			}, Hard_Mode_Only: true);
			Fento_Utils.Update_ActivateArena(A_ActivateArena_1, A_Wave_1.transform);
			bool mini = false;
			Fento_Utils.Enemy_InStack(A_Wave_2.transform, delegate(EnemyIdentifier enemy)
			{
				//IL_003e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_001f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0029: Unknown result type (might be due to invalid IL or missing references)
				mini = !mini;
				if (!mini)
				{
					Fento_Utils.Base_ReplaceEnemy(Fento_Utils.DetectebleEnemies.SwordsMachineNonboss, ((Component)enemy).transform, Vector3.up * 0.1f);
				}
				else
				{
					Fento_Utils.Base_ReplaceEnemy(Fento_Utils.DetectebleEnemies.Drone, ((Component)enemy).transform, Vector3.up * (16f + Random.value * 6f));
				}
			});
			Fento_Utils.Enemy_InStack(A_Wave_2.transform, delegate(EnemyIdentifier enemy)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Invalid comparison between Unknown and I4
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_002c: Invalid comparison between Unknown and I4
				if ((int)enemy.enemyType == 7)
				{
					Machine component10 = ((Component)enemy).GetComponent<Machine>();
					if ((Object)(object)component10 != (Object)null)
					{
						A_3_Machines_1.Add(component10);
					}
				}
				else if ((int)enemy.enemyType == 1)
				{
					GameObjectExtensions.GetOrAddComponent<Drone_AntiSoftLock>(((Component)enemy).gameObject);
				}
			});
			Fento_Utils.Enemy_InStack(A_Wave_2.transform, delegate(EnemyIdentifier enemy)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Invalid comparison between Unknown and I4
				enemy.immuneToFriendlyFire = true;
				if ((int)enemy.enemyType == 1)
				{
					enemy.radianceTier += 1.1f;
					enemy.healthBuffModifier += 1.1f;
					enemy.BuffAll();
				}
			}, Hard_Mode_Only: true);
			Fento_Utils.Make_List_MachineSymbiote(A_3_Machines_1);
			Fento_Utils.Update_ActivateNextWave(A_ActivateNextWave_1, A_Wave_2.transform);
			Fento_Utils.Enemy_InStack(B_Wave_1.transform, delegate(EnemyIdentifier enemy)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Invalid comparison between Unknown and I4
				if ((int)enemy.enemyType != 21)
				{
					enemy.Sandify(false);
					enemy.radianceTier += 2f;
					enemy.healthBuffModifier += 2