Decompiled source of FentoKill v3.6.286

FentoKill.dll

Decompiled 3 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 HarmonyLib;
using PluginConfig.API;
using PluginConfig.API.Decorators;
using PluginConfig.API.Fields;
using Sandbox;
using TMPro;
using Unity.AI.Navigation;
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,
		Gabriel,
		Gabriel2ndVariant,
		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"));
					}
					else
					{
						Fento_Loader._Logger.LogError((object)("[Long_Load] - Failed load asset 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);
				}
				_ = (Object)(object)obj == (Object)null;
				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;
		}
	}

	public class Filth_Rage_IQ : MonoBehaviour
	{
		public ZombieMelee zomb;

		public EnemyIdentifier eid;

		public Animator anim;

		public Rigidbody rb;

		public NavMeshAgent nma;

		public float JumpTimer;

		public float Timer;

		public float ExplodeTimer = 1f;

		public void Start()
		{
			zomb = ((Component)this).GetComponent<ZombieMelee>();
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			anim = ((Component)this).GetComponent<Animator>();
			rb = ((Component)this).GetComponent<Rigidbody>();
			nma = ((Component)this).GetComponent<NavMeshAgent>();
			if (Object.op_Implicit((Object)(object)zomb))
			{
				zomb.SetField("defaultCoolDown", 0.5f);
			}
		}

		public void FixedUpdate()
		{
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: 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_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_021f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_0229: Unknown result type (might be due to invalid IL or missing references)
			//IL_0234: Unknown result type (might be due to invalid IL or missing references)
			//IL_0239: Unknown result type (might be due to invalid IL or missing references)
			//IL_023e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0242: Unknown result type (might be due to invalid IL or missing references)
			//IL_0247: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_0255: Unknown result type (might be due to invalid IL or missing references)
			//IL_025c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_0287: Unknown result type (might be due to invalid IL or missing references)
			//IL_028e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_0317: Unknown result type (might be due to invalid IL or missing references)
			//IL_0322: Unknown result type (might be due to invalid IL or missing references)
			//IL_0327: Unknown result type (might be due to invalid IL or missing references)
			//IL_032c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_0341: Unknown result type (might be due to invalid IL or missing references)
			//IL_0346: Unknown result type (might be due to invalid IL or missing references)
			//IL_034b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0356: Unknown result type (might be due to invalid IL or missing references)
			//IL_035b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0360: Unknown result type (might be due to invalid IL or missing references)
			//IL_036b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0427: Unknown result type (might be due to invalid IL or missing references)
			//IL_042c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0430: Unknown result type (might be due to invalid IL or missing references)
			//IL_0440: 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_044f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0453: Unknown result type (might be due to invalid IL or missing references)
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0462: Unknown result type (might be due to invalid IL or missing references)
			//IL_0477: Unknown result type (might be due to invalid IL or missing references)
			//IL_047c: Unknown result type (might be due to invalid IL or missing references)
			//IL_047e: Unknown result type (might be due to invalid IL or missing references)
			//IL_048f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0494: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)zomb == (Object)null || eid.target == null)
			{
				return;
			}
			JumpTimer += Time.fixedDeltaTime * 0.1f;
			Timer += Time.fixedDeltaTime;
			ExplodeTimer += Time.fixedDeltaTime;
			if (zomb.diving)
			{
				Vector3 val = eid.target.position - ((Component)this).transform.position;
				if (ExplodeTimer > 2f && rb.velocity.y > -5f && ((Vector3)(ref val)).magnitude < 3.5f)
				{
					ExplodeTimer = 0f;
					Explosion[] componentsInChildren = Object.Instantiate<GameObject>(Fento_Assets.ExplosionBig.gameObject, ((Component)this).transform.position + ((Vector3)(ref val)).normalized * Mathf.Clamp(((Vector3)(ref val)).magnitude, 0f, 4f), ((Component)this).transform.rotation).GetComponentsInChildren<Explosion>();
					foreach (Explosion obj in componentsInChildren)
					{
						obj.toIgnore.Add((EnemyType)3);
						obj.enemy = true;
						obj.damage = (int)((float)obj.damage / 1.3f);
					}
				}
			}
			if (!(Timer > 0.5f))
			{
				return;
			}
			Timer = 0f;
			Rigidbody obj2 = rb;
			Vector3 velocity = obj2.velocity;
			Vector3 val2 = rb.velocity;
			obj2.velocity = velocity + ((Vector3)(ref val2)).normalized * 5f;
			Rigidbody obj3 = rb;
			obj3.velocity += Vector3.up * -10f;
			if (zomb.diving && rb.velocity.y > 1f)
			{
				zomb.DamageStart();
				Vector3 val3 = eid.target.PredictTargetPosition(0.1f, true) + Vector3.up - ((Component)this).transform.position;
				Vector3 normalized = ((Vector3)(ref val3)).normalized;
				Rigidbody obj4 = rb;
				obj4.velocity += normalized * 30f;
				normalized.y *= 0.1f;
				Rigidbody obj5 = rb;
				obj5.velocity += normalized * 20f;
			}
			if (eid.target.position.y > ((Component)this).transform.position.y + 4f && Vector3.Distance(eid.target.position, ((Component)this).transform.position) > 10f)
			{
				if (!Physics.Raycast(((Component)this).transform.position + Vector3.up, eid.target.position - (((Component)this).transform.position + Vector3.up), Vector3.Distance(eid.target.position + Vector3.up, ((Component)this).transform.position + Vector3.up), LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1))))
				{
					if (zomb.diving)
					{
						zomb.JumpAttack();
					}
					else if (Random.value < 0.5f * Mathf.Clamp01(JumpTimer))
					{
						JumpTimer = 0f;
						zomb.JumpAttack();
					}
				}
			}
			else
			{
				if (!zomb.zmb.grounded || !(Vector3.Distance(((Component)this).transform.position, eid.target.PredictTargetPosition(0.1f, false)) > 7.5f))
				{
					return;
				}
				((Behaviour)nma).enabled = false;
				rb.isKinematic = false;
				val2 = Random.insideUnitSphere;
				val2 = ((Vector3)(ref val2)).normalized + ((Component)eid).transform.TransformDirection(Vector3.forward);
				Vector3 val4 = ((Vector3)(ref val2)).normalized * 100f;
				val4.y = 0f;
				Rigidbody obj6 = rb;
				obj6.velocity += val4;
				Vector3 ogPos = ((Component)this).transform.position;
				Invoke_WithDelay(0.05f, delegate
				{
					//IL_005f: Unknown result type (might be due to invalid IL or missing references)
					if (Object.op_Implicit((Object)(object)this))
					{
						((Behaviour)nma).enabled = true;
						rb.isKinematic = true;
					}
					if (((Behaviour)nma).enabled && !nma.isOnNavMesh)
					{
						((Component)this).transform.position = ogPos;
					}
				});
			}
		}
	}

	public class Husk_Shoot_Range_IQ : MonoBehaviour
	{
		public ZombieProjectiles zomb;

		public Zombie zmb;

		public EnemyIdentifier eid;

		public Animator anim;

		public Rigidbody rb;

		public NavMeshAgent nma;

		public float Timer;

		public void Start()
		{
			zomb = ((Component)this).GetComponent<ZombieProjectiles>();
			zmb = ((Component)this).GetComponent<Zombie>();
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			anim = ((Component)this).GetComponent<Animator>();
			rb = ((Component)this).GetComponent<Rigidbody>();
			nma = ((Component)this).GetComponent<NavMeshAgent>();
		}

		public void FixedUpdate()
		{
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: 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_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)zomb == (Object)null || zomb.stationary || eid.target == null || ((Behaviour)nma).enabled)
			{
				return;
			}
			Timer += Time.fixedDeltaTime;
			if (!(Timer > 0.25f))
			{
				return;
			}
			Timer = 0f;
			if (zmb.falling || (((Behaviour)nma).enabled && !nma.isOnNavMesh))
			{
				return;
			}
			Vector3 ogPos = ((Component)this).transform.position;
			Invoke_WithDelay(0.11f, delegate
			{
				//IL_0042: Unknown result type (might be due to invalid IL or missing references)
				if (zmb.falling || (((Behaviour)nma).enabled && !nma.isOnNavMesh))
				{
					((Component)this).transform.position = ogPos;
				}
			});
			if (Vector3.Distance(((Component)this).transform.position, eid.target.position) < 13f)
			{
				Timer = -1f;
				zomb.MoveForward(-5f / anim.speed / eid.totalSpeedModifier);
				((MonoBehaviour)zomb).Invoke("StopMoveForward", 0.1f);
				return;
			}
			((Behaviour)nma).enabled = false;
			rb.isKinematic = false;
			Vector3 insideUnitSphere = Random.insideUnitSphere;
			Vector3 velocity = ((Vector3)(ref insideUnitSphere)).normalized * 35f;
			velocity.y = 0f;
			rb.velocity = velocity;
			((MonoBehaviour)zomb).Invoke("StopMoveForward", 0.1f);
		}
	}

	public class Shoot_OneTime_Protect_IQ : MonoBehaviour
	{
		public EnemyIdentifier eid;

		public void Start()
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			eid.onDeath.AddListener((UnityAction)delegate
			{
				if (Object.op_Implicit((Object)(object)this))
				{
					Object.Destroy((Object)(object)this);
				}
			});
			if ((Object)(object)eid == (Object)null)
			{
				Object.Destroy((Object)(object)this);
			}
		}

		public void FixedUpdate()
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: 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_0089: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: 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_00e0: Invalid comparison between Unknown and I4
			//IL_0208: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Invalid comparison between Unknown and I4
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Invalid comparison between Unknown and I4
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Invalid comparison between Unknown and I4
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Invalid comparison between Unknown and I4
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			if (eid.target == null || !eid.target.isPlayer || !(Vector3.Distance(((Component)this).transform.position, eid.target.position) < 8f) || Physics.Raycast(((Component)this).transform.position + Vector3.up, eid.target.position - (((Component)this).transform.position + Vector3.up), Vector3.Distance(eid.target.position, ((Component)this).transform.position + Vector3.up), LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1))))
			{
				return;
			}
			Object.Destroy((Object)(object)this);
			if ((int)eid.enemyType == 14)
			{
				EnemyIdentifier[] array = Object.FindObjectsOfType<EnemyIdentifier>();
				foreach (EnemyIdentifier val in array)
				{
					if (val.dead || (int)val.enemyType == 21 || (int)val.enemyType == 10 || (int)val.enemyType == 8 || (int)val.enemyType == 22 || (Object)(object)val == (Object)(object)eid)
					{
						continue;
					}
					EnemyIdentifier idol = val.Make_IdolMerged(enableIdol: true);
					idol.idol.overrideTarget = eid;
					Transform transform = ((Component)idol).transform;
					transform.localScale *= 0.4f;
					idol.Make_Puppet_OnStart();
					ComponentExtensions.GetOrAddComponent<Ignore_UltraEnraged>((Component)(object)idol);
					Invoke_WithDelay(6f, delegate
					{
						if ((Object)(object)idol != (Object)null && (Object)(object)idol.idol != (Object)null)
						{
							idol.idol.Death();
							if (Object.op_Implicit((Object)(object)idol) && ((Component)idol).gameObject.activeSelf)
							{
								idol.idol.Death();
							}
						}
					});
					ComponentExtensions.GetOrAddComponent<AAD_Keep_Obj_Near_Enemy>((Component)(object)val).To_Keep = ((Component)idol).gameObject;
				}
				return;
			}
			EnemyIdentifier idol2 = eid.Make_IdolMerged(enableIdol: true);
			Transform transform2 = ((Component)idol2).transform;
			transform2.localScale *= 0.6f;
			idol2.Make_Puppet_OnStart();
			ComponentExtensions.GetOrAddComponent<Ignore_UltraEnraged>((Component)(object)idol2);
			Invoke_WithDelay(8f, delegate
			{
				if ((Object)(object)idol2 != (Object)null && (Object)(object)idol2.idol != (Object)null)
				{
					idol2.idol.Death();
					if (Object.op_Implicit((Object)(object)idol2) && ((Component)idol2).gameObject.activeSelf)
					{
						idol2.idol.Death();
					}
				}
			});
			ComponentExtensions.GetOrAddComponent<AAD_Keep_Obj_Near_Enemy>((Component)(object)eid).To_Keep = ((Component)idol2).gameObject;
		}
	}

	public class Soldier_AutoAir_IQ : MonoBehaviour
	{
		[CompilerGenerated]
		private sealed class <EMP_Services>d__7 : IEnumerator<object>, IDisposable, IEnumerator
		{
			private int <>1__state;

			private object <>2__current;

			public Soldier_AutoAir_IQ <>4__this;

			private NewMovement <newMovement>5__2;

			private bool <iframes>5__3;

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

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

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

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

			private bool MoveNext()
			{
				//IL_0056: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: Unknown result type (might be due to invalid IL or missing references)
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_036d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0377: Expected O, but got Unknown
				//IL_03ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_03c4: Expected O, but got Unknown
				//IL_0416: Unknown result type (might be due to invalid IL or missing references)
				//IL_041b: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
				//IL_0103: Unknown result type (might be due to invalid IL or missing references)
				//IL_011e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0146: 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_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_015f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0171: Unknown result type (might be due to invalid IL or missing references)
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0196: 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_01c3: 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_01d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
				//IL_020e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0236: Unknown result type (might be due to invalid IL or missing references)
				//IL_023b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0245: Unknown result type (might be due to invalid IL or missing references)
				//IL_024a: Unknown result type (might be due to invalid IL or missing references)
				//IL_024f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0261: Unknown result type (might be due to invalid IL or missing references)
				//IL_026b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0286: Unknown result type (might be due to invalid IL or missing references)
				//IL_030e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0318: Expected O, but got Unknown
				//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
				//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
				//IL_02bd: 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_02d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
				//IL_02fe: Unknown result type (might be due to invalid IL or missing references)
				int num = <>1__state;
				Soldier_AutoAir_IQ soldier_AutoAir_IQ = <>4__this;
				switch (num)
				{
				default:
					return false;
				case 0:
				{
					<>1__state = -1;
					GameObject val = MonoSingleton<DefaultReferenceManager>.Instance.unparryableFlash;
					if ((Object)(object)val != (Object)null)
					{
						val = Object.Instantiate<GameObject>(MonoSingleton<DefaultReferenceManager>.Instance.unparryableFlash, soldier_AutoAir_IQ.eid.target.position + Vector3.up * 5f, Quaternion.identity);
						Transform transform = val.transform;
						transform.localScale *= 15f;
						val.transform.LookAt(soldier_AutoAir_IQ.eid.target.position);
					}
					if ((Object)(object)val != (Object)null)
					{
						val = Object.Instantiate<GameObject>(MonoSingleton<DefaultReferenceManager>.Instance.unparryableFlash, soldier_AutoAir_IQ.eid.target.position + Vector3.down * 5f, Quaternion.identity);
						Transform transform2 = val.transform;
						transform2.localScale *= 15f;
						val.transform.LookAt(soldier_AutoAir_IQ.eid.target.position);
					}
					if ((Object)(object)val != (Object)null)
					{
						val = Object.Instantiate<GameObject>(MonoSingleton<DefaultReferenceManager>.Instance.unparryableFlash, soldier_AutoAir_IQ.eid.target.position + Vector3.right * 5f, Quaternion.identity);
						Transform transform3 = val.transform;
						transform3.localScale *= 15f;
						val.transform.LookAt(soldier_AutoAir_IQ.eid.target.position);
					}
					if ((Object)(object)val != (Object)null)
					{
						val = Object.Instantiate<GameObject>(MonoSingleton<DefaultReferenceManager>.Instance.unparryableFlash, soldier_AutoAir_IQ.eid.target.position + Vector3.left * 5f, Quaternion.identity);
						Transform transform4 = val.transform;
						transform4.localScale *= 15f;
						val.transform.LookAt(soldier_AutoAir_IQ.eid.target.position);
					}
					if ((Object)(object)val != (Object)null)
					{
						val = Object.Instantiate<GameObject>(MonoSingleton<DefaultReferenceManager>.Instance.unparryableFlash, soldier_AutoAir_IQ.eid.target.position + Vector3.forward * 5f, Quaternion.identity);
						Transform transform5 = val.transform;
						transform5.localScale *= 15f;
						val.transform.LookAt(soldier_AutoAir_IQ.eid.target.position);
					}
					if ((Object)(object)val != (Object)null)
					{
						val = Object.Instantiate<GameObject>(MonoSingleton<DefaultReferenceManager>.Instance.unparryableFlash, soldier_AutoAir_IQ.eid.target.position + Vector3.back * 5f, Quaternion.identity);
						Transform transform6 = val.transform;
						transform6.localScale *= 15f;
						val.transform.LookAt(soldier_AutoAir_IQ.eid.target.position);
					}
					<>2__current = (object)new WaitForSeconds(0.23f);
					<>1__state = 1;
					return true;
				}
				case 1:
					<>1__state = -1;
					<newMovement>5__2 = MonoSingleton<NewMovement>.Instance;
					<iframes>5__3 = false;
					if (soldier_AutoAir_IQ.eid.target.isPlayer && ((Component)<newMovement>5__2).gameObject.layer == 15)
					{
						<iframes>5__3 = true;
					}
					<>2__current = (object)new WaitForSeconds(0.06f);
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					if (soldier_AutoAir_IQ.eid.target.isPlayer && ((Component)<newMovement>5__2).gameObject.layer == 15)
					{
						<iframes>5__3 = true;
					}
					<>2__current = (object)new WaitForSeconds(0.06f);
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					if (soldier_AutoAir_IQ.eid.target.isPlayer && ((Component)<newMovement>5__2).gameObject.layer == 15)
					{
						<iframes>5__3 = true;
					}
					Object.Instantiate<GameObject>(MonoSingleton<DefaultReferenceManager>.Instance.zapImpactParticle, soldier_AutoAir_IQ.eid.target.position, Quaternion.identity);
					if (soldier_AutoAir_IQ.eid.target.isPlayer && !<iframes>5__3)
					{
						int num2 = 25;
						if (<newMovement>5__2.hp > num2)
						{
							<newMovement>5__2.GetHurt(num2, true, 1f, false, false, 1f, false);
						}
						else
						{
							<newMovement>5__2.GetHurt(<newMovement>5__2.hp - 1, true, 1f, false, false, 1f, false);
						}
						NewMovement obj = <newMovement>5__2;
						obj.boostCharge *= 0.25f;
						WeaponCharges instance = MonoSingleton<WeaponCharges>.Instance;
						instance.raicharge *= 0.25f;
					}
					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 EnemyIdentifier eid;

		public Animator anim;

		public ZombieProjectiles proj;

		public float Timer;

		public float ExplodeTimer = 1f;

		public void Start()
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Expected O, but got Unknown
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			anim = ((Component)this).GetComponent<Animator>();
			proj = ((Component)this).GetComponent<ZombieProjectiles>();
			eid.onDeath.AddListener((UnityAction)delegate
			{
				Object.Destroy((Object)(object)this);
			});
			if ((Object)(object)eid == (Object)null)
			{
				Object.Destroy((Object)(object)this);
			}
		}

		public void FixedUpdate()
		{
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			if (eid.dead)
			{
				return;
			}
			Timer += Time.fixedDeltaTime;
			ExplodeTimer += Time.fixedDeltaTime;
			Vector3 val = eid.target.position - ((Component)this).transform.position;
			if (ExplodeTimer > 2f && ((Vector3)(ref val)).magnitude < 3.5f)
			{
				ExplodeTimer = 0f;
				((MonoBehaviour)this).StartCoroutine(EMP_Services());
			}
			if (Timer > 2f)
			{
				Timer = 0f;
				if (eid.target != null && !(((Vector3)(ref val)).magnitude < 40f) && !Physics.Raycast(((Component)this).transform.position + Vector3.up, eid.target.position - (((Component)this).transform.position + Vector3.up), Vector3.Distance(eid.target.position, ((Component)this).transform.position + Vector3.up), LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1))))
				{
					Timer = -3f;
					proj.MoveForward(25f);
					anim.Play("RollShoot", -1, 0f);
				}
			}
		}

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

	public class Stalker_Rage_Passive : MonoBehaviour
	{
		public class AfterExplode : MonoBehaviour
		{
			public void OnDisable()
			{
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_003d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0047: Unknown result type (might be due to invalid IL or missing references)
				//IL_006d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0077: Expected O, but got Unknown
				GameObject megaBoom = Object.Instantiate<GameObject>(Fento_Assets.ExplosionSisyphusPrimeAnimation.gameObject, ((Component)this).transform.position, ((Component)this).transform.rotation);
				Transform transform = megaBoom.transform;
				transform.localScale *= 2f;
				megaBoom.GetComponent<ObjectActivator>().events.onActivate.AddListener((UnityAction)delegate
				{
					//IL_0015: Unknown result type (might be due to invalid IL or missing references)
					//IL_0025: Unknown result type (might be due to invalid IL or missing references)
					Explosion[] componentsInChildren = Object.Instantiate<GameObject>(Fento_Assets.ExplosionSisyphusPrime.gameObject, megaBoom.transform.position, megaBoom.transform.rotation).GetComponentsInChildren<Explosion>();
					foreach (Explosion obj in componentsInChildren)
					{
						obj.toIgnore.Add((EnemyType)12);
						obj.enemy = true;
						obj.enemyDamageMultiplier *= 0f;
					}
				});
			}
		}

		public EnemyIdentifier eid;

		public NavMeshAgent nm;

		public float Timer;

		public float AttackTimer;

		public void Start()
		{
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Expected O, but got Unknown
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			nm = ((Component)this).GetComponent<NavMeshAgent>();
			eid.onDeath.AddListener((UnityAction)delegate
			{
				//IL_0016: 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_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_005e: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0094: Expected O, but got Unknown
				GameObject obj = Object.Instantiate<GameObject>(Fento_Assets.ExplosionSisyphusPrimeAnimation.gameObject, ((Component)this).transform.position, ((Component)this).transform.rotation);
				Transform transform = obj.transform;
				transform.localScale *= 2f;
				_ = eid.target;
				Vector3 pos = ((Component)this).transform.position;
				Quaternion rot = ((Component)this).transform.rotation;
				obj.GetComponent<ObjectActivator>().events.onActivate.AddListener((UnityAction)delegate
				{
					//IL_000b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					//IL_0062: Unknown result type (might be due to invalid IL or missing references)
					//IL_0068: Unknown result type (might be due to invalid IL or missing references)
					//IL_007a: 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_0188: Unknown result type (might be due to invalid IL or missing references)
					//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
					//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
					Explosion[] componentsInChildren = Object.Instantiate<GameObject>(Fento_Assets.ExplosionSuper.gameObject, pos, rot).GetComponentsInChildren<Explosion>();
					foreach (Explosion obj2 in componentsInChildren)
					{
						obj2.toIgnore.Add((EnemyType)12);
						obj2.enemy = true;
						obj2.enemyDamageMultiplier *= 0f;
					}
					GameObject val = Object.Instantiate<GameObject>(Fento_Assets.BlackHole_Enemy.gameObject, pos, rot);
					Transform transform2 = val.transform;
					transform2.localScale *= 3f;
					GameObjectExtensions.GetOrAddComponent<AfterExplode>(val);
					GameObjectExtensions.GetOrAddComponent<Obj_Keep_Near_Player>(val);
					if ((Object)(object)Fento_Assets.RagePrefab.gameObject != (Object)null)
					{
						GameObject val2 = Object.Instantiate<GameObject>(Fento_Assets.RagePrefab.gameObject, val.transform);
						if ((Object)(object)val2 != (Object)null)
						{
							val2.transform.SetParent(val.transform);
							val2.transform.localPosition = Vector3.zero;
							val2.transform.localScale = Vector3.one;
							AudioSource[] components = val2.GetComponents<AudioSource>();
							if (components != null)
							{
								AudioSource val3 = components.Last();
								if ((Object)(object)val3 != (Object)null)
								{
									val3.pitch *= 0.75f;
								}
							}
						}
						AudioSource[] componentsInChildren2 = val2.GetComponentsInChildren<AudioSource>();
						foreach (AudioSource val4 in componentsInChildren2)
						{
							if ((Object)(object)val4 != (Object)null)
							{
								val4.spatialize = true;
							}
						}
					}
					BlackHoleProjectile component = val.GetComponent<BlackHoleProjectile>();
					component.target = EnemyTarget.TrackPlayer();
					component.speed *= 2.85f;
					component.safeType = (EnemyType)12;
					component.Activate();
					((MonoBehaviour)component).Invoke("Explode", 14f);
				});
			});
		}

		public void FixedUpdate()
		{
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			if (eid.dead || eid.target == null)
			{
				return;
			}
			Timer += Time.fixedDeltaTime;
			AttackTimer += Time.fixedDeltaTime;
			_ = AttackTimer;
			_ = 10f;
			if (!(Timer > 2f))
			{
				return;
			}
			Timer = 0f;
			Transform transform = Object.Instantiate<GameObject>(Fento_Assets.ExplosionSand.gameObject, ((Component)this).transform.position + Vector3.up, ((Component)this).transform.rotation).transform;
			transform.localScale *= 3.25f;
			Invoke_WithDelay(0.1f, delegate
			{
				if (Object.op_Implicit((Object)(object)nm))
				{
					NavMeshAgent obj = nm;
					obj.speed += 15f;
					NavMeshAgent obj2 = nm;
					obj2.acceleration += 15f;
					NavMeshAgent obj3 = nm;
					obj3.angularSpeed += 15f;
					NavMeshAgent obj4 = nm;
					obj4.speed *= 1.1f;
					NavMeshAgent obj5 = nm;
					obj5.acceleration *= 1.1f;
					NavMeshAgent obj6 = nm;
					obj6.angularSpeed *= 1.1f;
				}
			});
		}
	}

	public class Sisyphus_Rage_IQ : MonoBehaviour
	{
		public EnemyIdentifier eid;

		public float SpawnGasTimer;

		public void Start()
		{
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			SpawnGasTimer = 19f;
		}

		public void FixedUpdate()
		{
			if (Object.op_Implicit((Object)(object)eid) && !eid.dead && eid.target != null)
			{
				SpawnGasTimer += Time.fixedDeltaTime;
				if (SpawnGasTimer > 20f)
				{
					SpawnGasTimer = Random.value;
					SpawnGas();
				}
			}
		}

		public void SpawnGas()
		{
			//IL_0010: 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)
			//IL_0024: 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_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			GameObject obj = Object.Instantiate<GameObject>(Fento_Assets.GoopCloudLong.gameObject, ((Component)this).transform.TransformPoint(Vector3.up * 6.5f), Quaternion.identity, ((Component)this).transform);
			obj.transform.localScale = new Vector3(0.4f, 0.75f, 0.4f);
			Make_Colored(obj.transform, Color.yellow + Color.red);
			HurtZone componentInChildren = obj.GetComponentInChildren<HurtZone>();
			if ((Object)(object)componentInChildren != (Object)null)
			{
				componentInChildren.hurtCooldown *= 2f;
				componentInChildren.bounceForce = 200f;
				componentInChildren.enemyDamageOverride = 0.0001f;
				componentInChildren.ignoredEnemyTypes.Add((EnemyType)19);
			}
		}
	}

	public class Ferryman_Rage_IQ : MonoBehaviour
	{
		public EnemyIdentifier eid;

		public float StartHealth;

		public float BeamTimer;

		public float HolySwordsTimer;

		public float RangeTimer;

		public void Start()
		{
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			StartHealth = eid.health;
			BeamTimer = 20f;
			HolySwordsTimer = Random.value * 16f;
			RangeTimer = Random.value * 1f;
		}

		public void FixedUpdate()
		{
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: 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_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			bool num = eid.health < StartHealth * 0.5f;
			float num2 = (num ? 1.25f : 1f);
			HolySwordsTimer += Time.fixedDeltaTime * num2;
			if (num)
			{
				BeamTimer += Time.fixedDeltaTime * num2;
				if (BeamTimer > 20f)
				{
					BeamTimer = Random.value * 5f * num2;
					SpawnBeams();
				}
			}
			if (HolySwordsTimer > 16f)
			{
				HolySwordsTimer = Random.value * 5f * num2;
				SpawnSummonedSwords();
			}
			float num3 = Vector3.Distance(eid.target.position, ((Component)this).transform.position + Vector3.up);
			if (num3 > 30f)
			{
				RangeTimer += Time.fixedDeltaTime;
				if (RangeTimer > 3f && !Physics.Raycast(((Component)this).transform.position + Vector3.up, eid.target.position - (((Component)this).transform.position + Vector3.up), num3, LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1))))
				{
					RangeTimer = (0f - Random.value) * 2f;
					ShootCannon();
				}
			}
		}

		public void SpawnBeams()
		{
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			for (int i = 0; i < 8; i++)
			{
				if (Object.op_Implicit((Object)(object)this))
				{
					Invoke_WithDelay(0.65f + (float)i * 0.65f, delegate
					{
						CastBeam();
					});
				}
			}
		}

		public void CastBeam()
		{
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)eid) && !eid.dead && eid.target != null)
			{
				GameObject val = Object.Instantiate<GameObject>(Fento_Assets.Insignia.gameObject, eid.target.position, Quaternion.identity);
				val.Setup_GoreZone_Obj(eid);
				Vector2 val2 = Random.insideUnitCircle * 10f;
				Vector3 velocity = eid.target.GetVelocity();
				velocity.y = 0f;
				if (((Vector3)(ref velocity)).magnitude > 0f)
				{
					val.transform.LookAt(eid.target.position + velocity);
				}
				Transform transform = val.transform;
				transform.position += new Vector3(val2.x, 0f, val2.y);
				val.transform.localScale = new Vector3(1.15f, 1f, 1.15f);
				VirtueInsignia val3 = default(VirtueInsignia);
				if (val.TryGetComponent<VirtueInsignia>(ref val3))
				{
					val3.predictive = false;
					val3.noTracking = true;
					val3.otherParent = ((Component)this).transform;
					VirtueInsignia obj = val3;
					obj.windUpSpeedMultiplier *= 0.5f;
					val3.damage = 35;
					val3.target = eid.target;
					val3.predictiveVersion = null;
				}
			}
		}

		public void SpawnSummonedSwords()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			GameObject obj = Object.Instantiate<GameObject>(Fento_Assets.AroundGabrielSummonedSwords.gameObject, ((Component)this).transform.position, Quaternion.identity);
			obj.transform.SetParent(((Component)this).transform.parent, true);
			SummonedSwords val = default(SummonedSwords);
			if (obj.TryGetComponent<SummonedSwords>(ref val))
			{
				val.target = new EnemyTarget(((Component)this).transform);
				SummonedSwords obj2 = val;
				obj2.speed *= eid.totalSpeedModifier;
				val.targetEnemy = eid.target;
			}
			Projectile[] componentsInChildren = obj.GetComponentsInChildren<Projectile>();
			foreach (Projectile val2 in componentsInChildren)
			{
				val2.target = eid.target;
				if (eid.totalDamageModifier != 1f)
				{
					val2.damage *= eid.totalDamageModifier;
				}
			}
		}

		public void ShootCannon()
		{
			//IL_0038: 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_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_005d: 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_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			GameObject gameObject = Fento_Assets.V2UnParry.gameObject;
			Vector3 position = ((Component)this).transform.position;
			Vector3 val = eid.target.position - ((Component)this).transform.position;
			GameObject obj = Object.Instantiate<GameObject>(gameObject, position + ((Vector3)(ref val)).normalized * 3f, Quaternion.identity);
			Transform transform = obj.transform;
			transform.localScale *= 10f;
			obj.transform.LookAt(eid.target.position);
			Invoke_WithDelay(0.5f, delegate
			{
				//IL_0010: Unknown result type (might be due to invalid IL or missing references)
				//IL_0020: 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_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				//IL_0039: 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)
				//IL_0053: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a1: 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_00c3: 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_00d2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
				//IL_0107: Unknown result type (might be due to invalid IL or missing references)
				//IL_010c: Unknown result type (might be due to invalid IL or missing references)
				//IL_011d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0128: Unknown result type (might be due to invalid IL or missing references)
				//IL_0132: Unknown result type (might be due to invalid IL or missing references)
				//IL_0137: Unknown result type (might be due to invalid IL or missing references)
				//IL_0190: Unknown result type (might be due to invalid IL or missing references)
				//IL_019a: Unknown result type (might be due to invalid IL or missing references)
				//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
				GameObject gameObject2 = Fento_Assets.Railcannon_Fire.gameObject;
				Vector3 position2 = ((Component)this).transform.position;
				Vector3 val2 = eid.target.position - ((Component)this).transform.position;
				AudioSource val3 = default(AudioSource);
				if (Object.Instantiate<GameObject>(gameObject2, position2 + ((Vector3)(ref val2)).normalized * 2.5f, ((Component)this).transform.rotation).TryGetComponent<AudioSource>(ref val3))
				{
					val3.clip = Fento_Assets.RocketFire_Default.obj;
					val3.pitch = Random.Range(0.6f, 0.8f);
					val3.Play();
				}
				GameObject val4 = Object.Instantiate<GameObject>(Fento_Assets.Cannonball.gameObject, ((Component)this).transform.position, ((Component)this).transform.rotation);
				val4.transform.position = ((Component)this).transform.position + Vector3.up * 2f;
				val4.transform.LookAt(eid.target.PredictTargetPosition(0.1f, false) + Vector3.up * 2f);
				Transform transform2 = val4.transform;
				transform2.position += val4.transform.forward * 4f;
				val4.Setup_GoreZone_Obj(eid);
				((Component)this).transform.DissableColliders(val4.transform.root);
				Cannonball val5 = default(Cannonball);
				if (val4.TryGetComponent<Cannonball>(ref val5))
				{
					val5.sourceWeapon = ((Component)((Component)this).transform).gameObject;
				}
				Rigidbody val6 = default(Rigidbody);
				if (val4.TryGetComponent<Rigidbody>(ref val6))
				{
					val6.velocity = ((Component)val6).transform.forward * 200f;
					Vector3 position3 = ((Component)this).transform.position;
					val2 = val6.velocity;
					float num = PredictTime(position3, ((Vector3)(ref val2)).magnitude, eid.target);
					((Component)this).transform.LookAt(eid.target.PredictTargetPosition(num, false) + Vector3.up * 2f);
				}
			});
		}
	}

	public class MalFace_Rage_IQ : MonoBehaviour
	{
		public EnemyIdentifier eid;

		public SpiderBody spider;

		public BossHealthBar bossHealthBar;

		public float Timer;

		public float OgHealth = 10f;

		public void Start()
		{
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Expected O, but got Unknown
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			spider = ((Component)this).GetComponent<SpiderBody>();
			bossHealthBar = ((Component)this).GetComponent<BossHealthBar>();
			Timer = Random.value * 10f;
			OgHealth = eid.Health;
			Transform transform = ((Component)((Component)eid).transform.Find("MaliciousFace/Mouth")).transform;
			GameObject val = Object.Instantiate<GameObject>(Fento_Assets.CentaurBrainBeam.gameObject, transform.position, transform.rotation, transform);
			eid.destroyOnDeath.Add(val);
			Make_Colored(val.transform, Color.red + Color.yellow);
			val.GetComponent<ContinuousBeam>().ignoreInvincibility = false;
			GameObject val2 = new GameObject("Follower " + ((Object)((Component)this).transform).name);
			val2.transform.SetParent(((Component)eid).transform);
			val2.transform.position = ((Component)eid).transform.position + ((Component)eid).transform.forward * 10f;
			Obj_Follow_Eid_Target orAddComponent = ComponentExtensions.GetOrAddComponent<Obj_Follow_Eid_Target>((Component)(object)val2.transform);
			orAddComponent.eid = eid;
			orAddComponent.Speed = 10f;
			GameObjectExtensions.GetOrAddComponent<Obj_Always_Look_At>(val).Target = val2;
		}

		public void FixedUpdate()
		{
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || !(eid.health < OgHealth * 0.5f))
			{
				return;
			}
			EnemyIdentifier idole = eid.Make_IdolMerged(enableIdol: true);
			idole.BuffAll();
			idole.Make_Puppet_OnStart();
			ComponentExtensions.GetOrAddComponent<Ignore_UltraEnraged>((Component)(object)idole);
			ComponentExtensions.GetOrAddComponent<Idol_Buff_Radiance>((Component)(object)idole).TierToAdd *= 0.75f;
			Invoke_WithDelay(6f, delegate
			{
				if ((Object)(object)idole != (Object)null && (Object)(object)idole.idol != (Object)null)
				{
					idole.idol.Death();
					if (Object.op_Implicit((Object)(object)idole) && ((Component)idole).gameObject.activeSelf)
					{
						idole.idol.Death();
					}
				}
			});
			if (eid.isBoss || Object.op_Implicit((Object)(object)bossHealthBar))
			{
				OgHealth = eid.health * 0.9f;
			}
			else
			{
				Object.Destroy((Object)(object)this);
			}
		}
	}

	public class Statue_Rage_Buff_OnEnable : MonoBehaviour
	{
		[CompilerGenerated]
		private sealed class <Revive>d__2 : IEnumerator<object>, IDisposable, IEnumerator
		{
			private int <>1__state;

			private object <>2__current;

			public Transform gz;

			private NewMovement <newMovement>5__2;

			private Vector3 <newPos1>5__3;

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

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

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

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

			private bool MoveNext()
			{
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				//IL_0047: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				//IL_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_005e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0085: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Expected O, but got Unknown
				//IL_00ba: 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)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
				{
					<>1__state = -1;
					<newMovement>5__2 = MonoSingleton<NewMovement>.Instance;
					Vector3 position = ((Component)<newMovement>5__2).transform.position;
					<newPos1>5__3 = GetRandomNavMeshPoint(position, Random.Range(15f, 35f));
					break;
				}
				case 1:
					<>1__state = -1;
					break;
				}
				if (<newPos1>5__3 == Vector3.zero)
				{
					Vector3 position = ((Component)<newMovement>5__2).transform.position;
					<newPos1>5__3 = GetRandomNavMeshPoint(position, Random.Range(15f, 35f));
					<>2__current = (object)new WaitForSeconds(0.25f);
					<>1__state = 1;
					return true;
				}
				EnemyIdentifier obj = Integrate_Enemy(DetectebleEnemies.Cerberus, gz, active: true, <newPos1>5__3, Quaternion.Euler(0f, Random.value * 360f, 0f));
				obj.dontCountAsKills = true;
				obj.immuneToFriendlyFire = true;
				ComponentExtensions.GetOrAddComponent<Make_Puppet_OnStart>((Component)(object)obj);
				ComponentExtensions.GetOrAddComponent<Ignore_UltraEnraged>((Component)(object)obj);
				obj.Set_Health(obj.health + 15f);
				obj.BuffAll();
				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 float Dist = 50f;

		public void OnEnable()
		{
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Expected O, but got Unknown
			float num = 0.5f;
			foreach (KeyValuePair<Transform, UltraEnrage_Movement> item in UltraEnrage_Movement.Dictionary)
			{
				if ((Object)(object)item.Value != (Object)null && (Object)(object)item.Value.eid != (Object)null && !item.Value.eid.dead && (int)item.Value.eid.enemyType == 0)
				{
					num += 0.5f;
				}
			}
			float num2 = 1f;
			if (num > 1f)
			{
				num2 = num;
			}
			EnemyIdentifier[] array = Object.FindObjectsOfType<EnemyIdentifier>();
			foreach (EnemyIdentifier val in array)
			{
				if (((Component)val).gameObject.activeInHierarchy && !val.dead && !(Vector3.Distance(((Component)this).transform.position, ((Component)val).transform.position) > Dist))
				{
					val.Set_Health(val.health + 2.5f / num2);
					val.radianceTier += 0.75f / num2;
					val.BuffAll();
				}
			}
			EnemyIdentifier eid0 = ((Component)this).GetComponentInParent<EnemyIdentifier>();
			if (Object.op_Implicit((Object)(object)eid0) && (eid0.isBoss || Object.op_Implicit((Object)(object)((Component)eid0).GetComponent<BossHealthBar>())))
			{
				GoreZone gz = ((Component)eid0).GetComponentInParent<GoreZone>();
				eid0.onDeath.AddListener((UnityAction)delegate
				{
					((MonoBehaviour)gz).StartCoroutine(Revive(eid0, ((Component)gz).transform));
					((MonoBehaviour)gz).StartCoroutine(Revive(eid0, ((Component)gz).transform));
				});
			}
		}

		[IteratorStateMachine(typeof(<Revive>d__2))]
		public IEnumerator Revive(EnemyIdentifier eid0, Transform gz)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <Revive>d__2(0)
			{
				gz = gz
			};
		}
	}

	public class Idol_Rage_IQ : MonoBehaviour
	{
		public GameObject Beam;

		public EnemyIdentifier LastFound;

		private Idol Idol;

		public void OnEnable()
		{
			if (Fento_Difficulty_Options.Mech_Disable_RadIdols_Buff)
			{
				Object.Destroy((Object)(object)this);
			}
			else
			{
				Idol = ((Component)this).GetComponent<Idol>();
			}
		}

		public void FixedUpdate()
		{
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)Idol == (Object)null || !((Object)(object)Idol.target != (Object)null) || !((Object)(object)Idol.target != (Object)(object)LastFound))
			{
				return;
			}
			LastFound = Idol.target;
			ContinuousBeam beam = Object.Instantiate<GameObject>(Fento_Assets.ProjectileBeam.gameObject, ((Component)this).transform.position + Vector3.up, Quaternion.identity, ((Component)this).transform).GetComponent<ContinuousBeam>();
			beam.canHitEnemy = false;
			beam.cancelIfEndPointBlocked = false;
			Invoke_WithDelay(0.1f, delegate
			{
				//IL_000c: Unknown result type (might be due to invalid IL or missing references)
				beam.SetField("environmentMask", LayerMaskDefaults.Get((LMD)0));
			});
			beam.endPoint = ((Component)LastFound).transform;
			Collider val = default(Collider);
			if (((Component)Idol.target).TryGetComponent<Collider>(ref val))
			{
				Transform val2 = ((Component)this).transform.Find("Beam Offset Idol");
				if (!Object.op_Implicit((Object)(object)val2))
				{
					val2 = new GameObject("Beam Offset Idol").transform;
					Transform obj = val2;
					Bounds bounds = val.bounds;
					obj.localPosition = ((Bounds)(ref bounds)).center;
					val2.localRotation = Quaternion.identity;
					val2.localScale = Vector3.one;
					val2.SetParent(((Component)LastFound).transform, true);
				}
				beam.endPoint = val2;
			}
			Make_Colored(((Component)beam).transform, Color.yellow);
		}

		public void OnDisable()
		{
			if ((Object)(object)Beam != (Object)null)
			{
				Object.Destroy((Object)(object)Beam);
			}
		}
	}

	public class Manneq_Rage_IQ : MonoBehaviour
	{
		public Mannequin Manneq;

		public EnemyIdentifier eid;

		public NavMeshAgent nma;

		public Machine mach;

		public float Timer;

		public void Start()
		{
			Manneq = ((Component)this).GetComponent<Mannequin>();
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			nma = ((Component)this).GetComponent<NavMeshAgent>();
			mach = eid.machine;
		}

		public void FixedUpdate()
		{
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			Timer += Time.fixedDeltaTime;
			if (!(Timer > 2.5f))
			{
				return;
			}
			Timer = 0f;
			if (!Manneq.inAction && eid.target != null && ((Behaviour)nma).enabled && mach.gc.onGround && nma.isOnNavMesh)
			{
				if (Vector3.Distance(((Component)this).transform.position, eid.target.position) > 15f)
				{
					Manneq.behavior = (MannequinBehavior)2;
				}
				else
				{
					Manneq.behavior = (MannequinBehavior)0;
				}
			}
		}
	}

	public class SwordsMachine_Rage_IQ : MonoBehaviour
	{
		public SwordsMachine swm;

		public EnemyIdentifier eid;

		public float Timer;

		public void Start()
		{
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			swm = ((Component)this).GetComponent<SwordsMachine>();
		}

		public void FixedUpdate()
		{
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			Timer += Time.fixedDeltaTime;
			if (!(Timer < 1f))
			{
				Timer = 0f;
				if (!swm.inAction && !eid.dead && eid.target != null && eid.target.position.y > ((Component)this).transform.position.y + 4f && Vector3.Distance(eid.target.position, ((Component)this).transform.position) > 10f && !Physics.Raycast(((Component)this).transform.position + Vector3.up, eid.target.position - (((Component)this).transform.position + Vector3.up), Vector3.Distance(eid.target.position, ((Component)this).transform.position + Vector3.up), LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1))))
				{
					((Component)((Component)eid).transform).SendMessage("SwordThrow", (SendMessageOptions)1);
					Timer = -10f;
				}
			}
		}
	}

	public class Drone_Rage_IQ : MonoBehaviour
	{
		public class SiveUp : MonoBehaviour
		{
			public float Size;

			public AudioSource audioSource;

			public void Update()
			{
				//IL_0018: 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)
				Size += Time.deltaTime;
				((Component)this).transform.localScale = Vector3.one * Mathf.Clamp01(Size);
				if (Object.op_Implicit((Object)(object)audioSource))
				{
					audioSource.volume = Mathf.Clamp01(Size);
				}
				if (Size > 1f)
				{
					Object.Destroy((Object)(object)this);
				}
			}
		}

		public EnemyIdentifier eid;

		public Mandalore mandalore;

		public Drone drone;

		public Rigidbody rb;

		public float Timer;

		public bool SlowDown;

		public void Start()
		{
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			mandalore = ((Component)this).GetComponent<Mandalore>();
			drone = ((Component)this).GetComponent<Drone>();
			rb = ((Component)this).GetComponent<Rigidbody>();
			Timer = Random.value * 10f;
			if (Object.op_Implicit((Object)(object)mandalore))
			{
				Leviathan_Rage_Shoot orAddComponent = GameObjectExtensions.GetOrAddComponent<Leviathan_Rage_Shoot>(((Component)this).gameObject);
				orAddComponent.safeEnemyType = eid.enemyType;
				orAddComponent.shootPoint = ((Component)this).transform;
				orAddComponent.eid = eid;
			}
		}

		public void FixedUpdate()
		{
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: 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_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			if (SlowDown && !eid.dead && eid.target != null)
			{
				Rigidbody obj = rb;
				obj.velocity *= 0.25f;
			}
			Timer += Time.fixedDeltaTime * (float)((!Object.op_Implicit((Object)(object)mandalore)) ? 1 : 2);
			if (Timer < 10f)
			{
				return;
			}
			Timer = 0f;
			if (eid.dead || eid.target == null || Physics.Raycast(((Component)this).transform.position + Vector3.up, eid.target.position - (((Component)this).transform.position + Vector3.up), Vector3.Distance(eid.target.position, ((Component)this).transform.position + Vector3.up), LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1))))
			{
				return;
			}
			SlowDown = true;
			GameObject sound = Object.Instantiate<GameObject>(Fento_Assets.MaliciousChargeEffect.gameObject, ((Component)this).transform.position, ((Component)this).transform.rotation);
			sound.transform.position = ((Component)this).transform.position;
			Transform transform = sound.transform;
			transform.position += ((Component)this).gameObject.transform.forward;
			sound.transform.LookAt(eid.target.PredictTargetPosition(0.01f, false));
			SiveUp orAddComponent = GameObjectExtensions.GetOrAddComponent<SiveUp>(sound);
			AudioSource val = default(AudioSource);
			if (sound.TryGetComponent<AudioSource>(ref val))
			{
				val.pitch = 2f;
				orAddComponent.audioSource = val;
			}
			Invoke_WithDelay(1.5f * (Object.op_Implicit((Object)(object)mandalore) ? 0.75f : 1f), delegate
			{
				//IL_0064: Unknown result type (might be due to invalid IL or missing references)
				//IL_0079: Unknown result type (might be due to invalid IL or missing references)
				//IL_0089: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0093: Unknown result type (might be due to invalid IL or missing references)
				//IL_0096: 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_00b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)this) && Object.op_Implicit((Object)(object)eid) && eid.target != null && !eid.dead)
				{
					GameObject gameObject = Fento_Assets.V2UnParry.gameObject;
					Vector3 position = ((Component)this).transform.position;
					Vector3 val2 = eid.target.position - ((Component)this).transform.position;
					GameObject obj2 = Object.Instantiate<GameObject>(gameObject, position + ((Vector3)(ref val2)).normalized * 2.5f, ((Component)this).transform.rotation);
					Transform transform2 = obj2.transform;
					transform2.localScale *= 10f;
					obj2.transform.LookAt(eid.target.position);
				}
				Invoke_WithDelay(0.4f * (Object.op_Implicit((Object)(object)mandalore) ? 0.75f : 1f), delegate
				{
					//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
					//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
					//IL_00cc: 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_00fe: Unknown result type (might be due to invalid IL or missing references)
					//IL_0103: Unknown result type (might be due to invalid IL or missing references)
					//IL_0129: Unknown result type (might be due to invalid IL or missing references)
					//IL_013e: Unknown result type (might be due to invalid IL or missing references)
					if (Object.op_Implicit((Object)(object)sound))
					{
						Object.Destroy((Object)(object)sound);
					}
					Invoke_WithDelay(0.2f * (Object.op_Implicit((Object)(object)mandalore) ? 0.75f : 1f), delegate
					{
						if (Object.op_Implicit((Object)(object)this))
						{
							SlowDown = false;
						}
					});
					if (Object.op_Implicit((Object)(object)this) && Object.op_Implicit((Object)(object)eid) && eid.target != null && !eid.dead)
					{
						GameObject obj3 = Object.Instantiate<GameObject>(Fento_Assets.MaliciousBeam.gameObject, ((Component)this).transform.position, ((Component)this).transform.rotation);
						Transform transform3 = obj3.transform;
						transform3.position += ((Component)this).gameObject.transform.forward * (float)(Object.op_Implicit((Object)(object)mandalore) ? 10 : 3);
						obj3.transform.LookAt(eid.target.PredictTargetPosition(0.01f, false));
						RevolverBeam val3 = default(RevolverBeam);
						if (obj3.TryGetComponent<RevolverBeam>(ref val3))
						{
							val3.ignoreEnemyType = (EnemyType)1;
						}
					}
				});
			});
		}
	}

	public class StreetCleaner_Rage_Hook_IQ : MonoBehaviour
	{
		public GameObject DisabledObj;

		public EnemyIdentifier eid;

		public float Timer;

		public float Gasoline_Charge;

		public bool Gasoline_Fire;

		public void Start()
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Invalid comparison between Unknown and I4
			//IL_007a: 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_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			Timer = Random.value;
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			DisabledObj = new GameObject("DisabledObj");
			DisabledObj.SetActive(false);
			DisabledObj.transform.SetParent(((Component)this).transform);
			if ((int)eid.enemyType == 35)
			{
				DisabledObj.transform.localPosition = Vector3.zero;
			}
			else
			{
				DisabledObj.transform.localPosition = Vector3.forward * 1.5f + Vector3.up * 2.5f;
			}
			DisabledObj.transform.localScale = Vector3.one;
			DisabledObj.transform.localRotation = Quaternion.identity;
		}

		public void FixedUpdate()
		{
			//IL_027e: Unknown result type (might be due to invalid IL or missing references)
			//IL_028e: 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_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: 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_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: 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_02d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_0317: Unknown result type (might be due to invalid IL or missing references)
			//IL_0322: Unknown result type (might be due to invalid IL or missing references)
			//IL_0327: Unknown result type (might be due to invalid IL or missing references)
			//IL_032c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0337: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_020e: Expected O, but got Unknown
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			if (Gasoline_Fire)
			{
				if (Gasoline_Charge >= 0.01f)
				{
					Vector3 val = eid.target.position - ((Component)this).transform.position;
					Vector3 normalized = ((Vector3)(ref val)).normalized;
					if (Vector3.Distance(eid.target.position, ((Component)this).transform.position) > 9f)
					{
						Gasoline_Charge -= 0.01f;
						GameObject obj = Object.Instantiate<GameObject>(Fento_Assets.GasolineProjectile.gameObject, ((Component)this).transform.position + normalized * 5f, ((Component)this).transform.rotation);
						obj.transform.LookAt(eid.target.position + Random.insideUnitSphere * 6f);
						GameObjectExtensions.GetOrAddComponent<V2_Boss_Buff.V2_Fire_Gasoline>(obj);
						Rigidbody component = obj.GetComponent<Rigidbody>();
						component.velocity = ((Component)component).transform.forward * 200f;
					}
				}
				else
				{
					foreach (Flammable flammable in eid.flammables)
					{
						flammable.heat *= 0.01f;
						flammable.fuel *= 0.01f;
					}
					float num = 0f;
					foreach (Flammable flammable2 in eid.flammables)
					{
						num = Mathf.Max(num, flammable2.fuel);
					}
					Renderer[] componentsInChildren = ((Component)this).GetComponentsInChildren<Renderer>();
					foreach (Renderer val2 in componentsInChildren)
					{
						if (!eid.buffUnaffectedRenderers.Contains(val2) && !(val2 is ParticleSystemRenderer))
						{
							MaterialPropertyBlock val3 = new MaterialPropertyBlock();
							val2.GetPropertyBlock(val3);
							val3.SetFloat("_OiledAmount", num / 5f);
							val2.SetPropertyBlock(val3);
						}
					}
					Gasoline_Fire = false;
				}
			}
			Timer += Time.fixedDeltaTime;
			if (!(Timer < 1f))
			{
				Timer = 0f;
				if (eid.target.position.y > ((Component)this).transform.position.y + 4f && Vector3.Distance(eid.target.position, ((Component)this).transform.position) > 20f && !Physics.Raycast(((Component)this).transform.position + Vector3.up, eid.target.position - (((Component)this).transform.position + Vector3.up), Vector3.Distance(eid.target.position, ((Component)this).transform.position + Vector3.up), LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1))))
				{
					ShootSpear();
					Timer = -4f + Random.value;
				}
			}
		}

		public void ShootSpear()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: 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_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			GameObject obj = Object.Instantiate<GameObject>(Fento_Assets.MassWindup.gameObject, ((Component)this).transform.position, ((Component)this).transform.rotation);
			obj.transform.position = ((Component)this).transform.position + Vector3.up;
			Transform transform = obj.transform;
			transform.position += ((Component)this).gameObject.transform.forward;
			obj.transform.LookAt(eid.target.PredictTargetPosition(0.01f, false));
			Invoke_WithDelay(0.9f, delegate
			{
				//IL_0039: 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_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_005e: 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_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_007b: Unknown result type (might be due to invalid IL or missing references)
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0096: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00da: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0101: Unknown result type (might be due to invalid IL or missing references)
				//IL_0106: Unknown result type (might be due to invalid IL or missing references)
				//IL_0111: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: 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_0146: Unknown result type (might be due to invalid IL or missing references)
				if (!((Object)(object)eid == (Object)null) && !eid.dead && eid.target != null)
				{
					GameObject gameObject = Fento_Assets.V2UnParry.gameObject;
					Vector3 position = ((Component)this).transform.position;
					Vector3 val = eid.target.position - ((Component)this).transform.position;
					GameObject obj2 = Object.Instantiate<GameObject>(gameObject, position + ((Vector3)(ref val)).normalized * 2.5f, ((Component)this).transform.rotation);
					Transform transform2 = obj2.transform;
					transform2.localScale *= 10f;
					obj2.transform.LookAt(eid.target.position);
					GameObject gameObject2 = Fento_Assets.V2UnParry.gameObject;
					Vector3 position2 = eid.target.position;
					val = ((Component)this).transform.position - eid.target.position;
					GameObject obj3 = Object.Instantiate<GameObject>(gameObject2, position2 + ((Vector3)(ref val)).normalized * 2.5f, ((Component)this).transform.rotation);
					Transform transform3 = obj3.transform;
					transform3.localScale *= 10f;
					obj3.transform.LookAt(eid.target.position);
					Invoke_WithDelay(0.38f, delegate
					{
						//IL_0052: Unknown result type (might be due to invalid IL or missing references)
						//IL_0062: Unknown result type (might be due to invalid IL or missing references)
						//IL_006d: Unknown result type (might be due to invalid IL or missing references)
						//IL_0072: Unknown result type (might be due to invalid IL or missing references)
						//IL_0077: Unknown result type (might be due to invalid IL or missing references)
						//IL_007a: 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_0089: Unknown result type (might be due to invalid IL or missing references)
						//IL_0094: Unknown result type (might be due to invalid IL or missing references)
						//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
						//IL_0177: Unknown result type (might be due to invalid IL or missing references)
						//IL_017c: Unknown result type (might be due to invalid IL or missing references)
						//IL_0181: Unknown result type (might be due to invalid IL or missing references)
						//IL_018e: Unknown result type (might be due to invalid IL or missing references)
						//IL_0193: Unknown result type (might be due to invalid IL or missing references)
						//IL_0198: Unknown result type (might be due to invalid IL or missing references)
						//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
						if (!((Object)(object)eid == (Object)null) && !eid.dead && eid.target != null && Object.op_Implicit((Object)(object)Fento_Assets.MassSpearHook.gameObject))
						{
							GameObject gameObject3 = Fento_Assets.MassSpearHook.gameObject;
							Vector3 position3 = DisabledObj.transform.position;
							Vector3 val2 = eid.target.position - ((Component)this).transform.position;
							GameObject val3 = Object.Instantiate<GameObject>(gameObject3, position3 + ((Vector3)(ref val2)).normalized * 5f, ((Component)this).transform.rotation);
							val3.transform.LookAt(eid.target.position);
							val3.Setup_GoreZone_Obj(eid);
							val3.transform.DissableColliders(((Component)eid).transform);
							MassSpear val4 = default(MassSpear);
							if (val3.TryGetComponent<MassSpear>(ref val4))
							{
								val4.target = eid.target;
								val4.originPoint = DisabledObj.transform;
								MassSpear obj4 = val4;
								obj4.spearHealth *= 1.25f;
								float num = MonoSingleton<PrefsManager>.Instance.GetInt("difficulty", 0);
								float num2 = 100f;
								if (num == 1f)
								{
									num2 = 75f;
								}
								if (num == 2f)
								{
									num2 = 200f;
								}
								else if (num >= 3f)
								{
									num2 = 250f;
								}
								num2 *= val4.speedMultiplier;
								Vector2 val5 = Vector2.op_Implicit(((Component)this).transform.position);
								float num3 = Vector2.Distance(Vector2.op_Implicit(eid.target.position), val5) / num2;
								val3.transform.LookAt(eid.target.PredictTargetPosition(num3, false));
							}
							GameObjectExtensions.GetOrAddComponent<V2_Boss_Buff.V2_PullHook>(val3).eid = eid;
							eid.destroyOnDeath.Add(val3);
						}
					});
				}
			});
		}
	}

	public class Mindflayer_Rage_IQ : MonoBehaviour
	{
		[CompilerGenerated]
		private sealed class <ShootDeath>d__9 : IEnumerator<object>, IDisposable, IEnumerator
		{
			private int <>1__state;

			private object <>2__current;

			public Mindflayer_Rage_IQ <>4__this;

			private Vector3 <pos>5__2;

			private EnemyTarget <target>5__3;

			private GoreZone <gz>5__4;

			private int <i>5__5;

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

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

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

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<target>5__3 = null;
				<gz>5__4 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				//IL_007f: 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_0089: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_0133: Unknown result type (might be due to invalid IL or missing references)
				//IL_013d: Expected O, but got Unknown
				int num = <>1__state;
				Mindflayer_Rage_IQ mindflayer_Rage_IQ = <>4__this;
				switch (num)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<pos>5__2 = ((Component)mindflayer_Rage_IQ).transform.positio