Decompiled source of FentoKill v3.6.299

FentoKill.dll

Decompiled 2 weeks 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 Discord;
using HarmonyLib;
using PluginConfig.API;
using PluginConfig.API.Decorators;
using PluginConfig.API.Fields;
using Sandbox;
using TMPro;
using ULTRAKILL.Enemy;
using ULTRAKILL.Portal;
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,
		Providence,
		Power,
		MirrorReaper,
		DeathcatcherCase,
		DeathcatcherClosed,
		Deathcatcher
	}

	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;
					}
					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 Enemy mach;

		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()
		{
			mach = ((Component)this).GetComponent<Enemy>();
			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_00a2: 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_00b3: 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_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: 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_02c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cd: 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_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Unknown result type (might be due to invalid IL or missing references)
			//IL_024d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0258: Unknown result type (might be due to invalid IL or missing references)
			//IL_025d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: 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_0274: Unknown result type (might be due to invalid IL or missing references)
			//IL_0279: Unknown result type (might be due to invalid IL or missing references)
			//IL_0280: Unknown result type (might be due to invalid IL or missing references)
			//IL_0285: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: 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_0111: 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_0131: 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_03c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03df: Unknown result type (might be due to invalid IL or missing references)
			//IL_0303: Unknown result type (might be due to invalid IL or missing references)
			//IL_0308: Unknown result type (might be due to invalid IL or missing references)
			//IL_030d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			//IL_0319: Unknown result type (might be due to invalid IL or missing references)
			//IL_031e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0323: Unknown result type (might be due to invalid IL or missing references)
			//IL_0328: Unknown result type (might be due to invalid IL or missing references)
			//IL_032d: Unknown result type (might be due to invalid IL or missing references)
			//IL_032e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0333: Unknown result type (might be due to invalid IL or missing references)
			//IL_033e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0343: Unknown result type (might be due to invalid IL or missing references)
			//IL_0348: Unknown result type (might be due to invalid IL or missing references)
			//IL_0353: Unknown result type (might be due to invalid IL or missing references)
			//IL_040b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0410: Unknown result type (might be due to invalid IL or missing references)
			//IL_0414: Unknown result type (might be due to invalid IL or missing references)
			//IL_0424: Unknown result type (might be due to invalid IL or missing references)
			//IL_0429: Unknown result type (might be due to invalid IL or missing references)
			//IL_042e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0433: Unknown result type (might be due to invalid IL or missing references)
			//IL_0437: Unknown result type (might be due to invalid IL or missing references)
			//IL_0441: Unknown result type (might be due to invalid IL or missing references)
			//IL_0446: Unknown result type (might be due to invalid IL or missing references)
			//IL_045b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0460: 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_0473: Unknown result type (might be due to invalid IL or missing references)
			//IL_0478: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)zomb == (Object)null || !Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			JumpTimer += Time.fixedDeltaTime * 0.1f;
			Timer += Time.fixedDeltaTime;
			ExplodeTimer += Time.fixedDeltaTime;
			eid.target.GetTargetPosition(out var targetPosition);
			if (zomb.diving)
			{
				Vector3 val = targetPosition - ((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, false) + 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 (targetPosition.y > ((Component)this).transform.position.y + 4f && Vector3.Distance(targetPosition, ((Component)this).transform.position) > 10f)
			{
				if (!Physics.Raycast(((Component)this).transform.position + Vector3.up, targetPosition - (((Component)this).transform.position + Vector3.up), Vector3.Distance(targetPosition + 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 (!mach.grounded || !(Vector3.Distance(((Component)this).transform.position, eid.target.PredictTargetPosition(0.1f, false, 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_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: 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_018f: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null || (Object)(object)zomb == (Object)null || zomb.stationary || ((Behaviour)nma).enabled)
			{
				return;
			}
			Timer += Time.fixedDeltaTime;
			if (!(Timer > 0.25f))
			{
				return;
			}
			Timer = 0f;
			if (((Enemy)zmb).falling || (((Behaviour)nma).enabled && !nma.isOnNavMesh))
			{
				return;
			}
			eid.target.GetTargetPosition(out var targetPosition);
			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 (((Enemy)zmb).falling || (((Behaviour)nma).enabled && !nma.isOnNavMesh))
				{
					((Component)this).transform.position = ogPos;
				}
			});
			if (Vector3.Distance(((Component)this).transform.position, targetPosition) < 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_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Expected O, but got Unknown
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			if ((Object)(object)eid == (Object)null)
			{
				Object.Destroy((Object)(object)this);
				return;
			}
			EnemyIdentifier eid2 = ((Component)this).GetComponent<EnemyIdentifier>();
			eid2.onDeath.AddListener((UnityAction)delegate
			{
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Invalid comparison between Unknown and I4
				//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_0069: Unknown result type (might be due to invalid IL or missing references)
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0078: Unknown result type (might be due to invalid IL or missing references)
				//IL_007d: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00be: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)eid2) && (int)eid2.enemyType == 14 && eid2.target != null)
				{
					eid2.target.GetTargetPosition(out var targetPosition);
					Projectile component = Object.Instantiate<GameObject>(Fento_Assets.ProjectileExplosiveHH_BigYellow.gameObject, ((Component)eid2).transform.position + Vector3.up * 3f + Random.insideUnitSphere, Quaternion.identity).GetComponent<Projectile>();
					((Component)component).gameObject.Setup_GoreZone_Obj(eid2);
					((Component)component).transform.LookAt(targetPosition);
					component.ignoreExplosions = true;
					component.homingType = (HomingType)1;
					component.safeEnemyType = eid2.enemyType;
					component.targetHandle = GetTargetHandle(eid2.target);
					component.speed = Random.Range(5f, 10f);
				}
				if (Object.op_Implicit((Object)(object)this))
				{
					Object.Destroy((Object)(object)this);
				}
			});
		}

		public void FixedUpdate()
		{
			//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_0071: 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_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: 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_0091: 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_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: 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_00de: Invalid comparison between Unknown and I4
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Invalid comparison between Unknown and I4
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Invalid comparison between Unknown and I4
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Invalid comparison between Unknown and I4
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_0150: Invalid comparison between Unknown and I4
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			eid.target.GetTargetPosition(out var targetPosition);
			if (!eid.target.isPlayer || !(Vector3.Distance(((Component)this).transform.position, targetPosition) < 8f) || Physics.Raycast(((Component)this).transform.position + Vector3.up, targetPosition - (((Component)this).transform.position + Vector3.up), Vector3.Distance(targetPosition, ((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 (!Object.op_Implicit((Object)(object)val) || (Object)(object)val == (Object)(object)eid || val.dead || (int)val.enemyType == 21 || (int)val.enemyType == 10 || (int)val.enemyType == 8 || (int)val.enemyType == 22)
					{
						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();
							}
						}
					});
					break;
				}
				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_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Expected O, but got Unknown
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			anim = ((Component)this).GetComponent<Animator>();
			proj = ((Component)this).GetComponent<ZombieProjectiles>();
			if ((Object)(object)eid == (Object)null)
			{
				Object.Destroy((Object)(object)this);
				return;
			}
			((Component)this).GetComponent<EnemyIdentifier>();
			eid.onDeath.AddListener((UnityAction)delegate
			{
				if (Object.op_Implicit((Object)(object)this))
				{
					Object.Destroy((Object)(object)this);
				}
			});
		}

		public void FixedUpdate()
		{
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: 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_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: 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_0104: 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_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: 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)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01db: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ea: 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_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0208: 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;
			}
			Timer += Time.fixedDeltaTime;
			ExplodeTimer += Time.fixedDeltaTime;
			eid.target.GetTargetPosition(out var targetPosition);
			Vector3 val = targetPosition - ((Component)this).transform.position;
			if (ExplodeTimer > 2f && ((Vector3)(ref val)).magnitude < 3.5f)
			{
				ExplodeTimer = Random.value * 0.1f;
				((MonoBehaviour)this).StartCoroutine(EMP_Services());
			}
			if (Timer > 3f)
			{
				Timer = Random.value * 0.1f;
				bool num = ((Vector3)(ref val)).magnitude > 30f;
				bool flag = !Physics.Raycast(((Component)this).transform.position + Vector3.up, targetPosition - (((Component)this).transform.position + Vector3.up), Vector3.Distance(targetPosition, ((Component)this).transform.position + Vector3.up), LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1)));
				if (num && flag)
				{
					Timer = -3f;
					proj.MoveForward(25f);
					anim.SetFloat("AttackType", 1f);
				}
				if ((num || !flag) && !Physics.Raycast(eid.target.trackedTransform.TransformPoint(Vector3.up), eid.target.trackedTransform.TransformVector(Vector3.up), 110f, LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1))))
				{
					((Component)Object.Instantiate<GameObject>(Fento_Assets.EnemyRocket.gameObject, targetPosition + eid.target.trackedTransform.TransformVector(Vector3.up) * 110f, Quaternion.identity).GetComponent<Grenade>()).transform.LookAt(targetPosition);
				}
			}
		}

		[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_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: 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_00a6: 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)
			if (!Object.op_Implicit((Object)(object)eid) || 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_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: 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)
			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();
			}
			eid.target.GetTargetPosition(out var targetPosition);
			float num3 = Vector3.Distance(targetPosition, ((Component)this).transform.position + Vector3.up);
			if (num3 > 30f)
			{
				RangeTimer += Time.fixedDeltaTime;
				if (RangeTimer > 3f && !Physics.Raycast(((Component)this).transform.position + Vector3.up, targetPosition - (((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.SetProjTarget(eid.target);
				if (eid.totalDamageModifier != 1f)
				{
					val2.damage *= eid.totalDamageModifier;
				}
			}
		}

		public void ShootCannon()
		{
			//IL_005c: 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_008e: 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_00a9: 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)
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			eid.target.GetTargetPosition(out var pos);
			GameObject gameObject = Fento_Assets.V2UnParry.gameObject;
			Vector3 position = ((Component)this).transform.position;
			Vector3 val = pos - ((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(pos);
			Invoke_WithDelay(0.5f, delegate
			{
				//IL_0015: 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_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_0058: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0112: Unknown result type (might be due to invalid IL or missing references)
				//IL_0117: Unknown result type (might be due to invalid IL or missing references)
				//IL_0121: Unknown result type (might be due to invalid IL or missing references)
				//IL_0126: Unknown result type (might be due to invalid IL or missing references)
				//IL_0137: Unknown result type (might be due to invalid IL or missing references)
				//IL_0142: Unknown result type (might be due to invalid IL or missing references)
				//IL_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_01bc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01db: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
				//IL_0225: Unknown result type (might be due to invalid IL or missing references)
				//IL_022a: 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)
				GameObject gameObject2 = Fento_Assets.Railcannon_Fire.gameObject;
				Vector3 position2 = ((Component)this).transform.position;
				Vector3 val2 = pos - ((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, 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 = PredictTimeOld(position3, ((Vector3)(ref val2)).magnitude, eid.target);
					((Component)this).transform.LookAt(eid.target.PredictTargetPosition(num, false, false) + Vector3.up * 2f);
				}
			});
		}
	}

	public class MirrorReaper_Rage_IQ : MonoBehaviour
	{
		public EnemyIdentifier eid;

		public float Timer;

		public float TimerSlam;

		public void Start()
		{
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			if ((Object)(object)eid == (Object)null)
			{
				Object.Destroy((Object)(object)this);
			}
		}

		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_00e1: 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_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			Timer += Time.fixedDeltaTime;
			TimerSlam += Time.fixedDeltaTime;
			if (Timer > 5f)
			{
				Timer = Random.value;
				GameObject obj = Object.Instantiate<GameObject>(Fento_Assets.GoopCloud.gameObject, ((Component)this).transform.position, Quaternion.identity);
				obj.Setup_GoreZone_Obj(eid);
				HurtZone componentInChildren = obj.GetComponentInChildren<HurtZone>();
				if ((Object)(object)componentInChildren != (Object)null)
				{
					componentInChildren.ignoredEnemyTypes.Add((EnemyType)41);
					componentInChildren.enemyDamageOverride = 1E-05f;
				}
			}
			if (!(TimerSlam > 25f))
			{
				return;
			}
			TimerSlam = Random.value;
			GameObject obj2 = Object.Instantiate<GameObject>(Fento_Assets.V2UnParry.gameObject, new Vector3(((Component)this).transform.position.x, eid.target.position.y, ((Component)this).transform.position.z), Quaternion.identity);
			Transform transform = obj2.transform;
			transform.localScale *= 10f;
			obj2.transform.LookAt(eid.target.position);
			Invoke_WithDelay(1f, delegate
			{
				//IL_0037: 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_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_0083: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)eid) && !eid.dead && eid.target != null)
				{
					PhysicalShockwave component = Object.Instantiate<GameObject>(Fento_Assets.SlamExplosionShockwave.gameObject, new Vector3(((Component)this).transform.position.x, eid.target.position.y, ((Component)this).transform.position.z), Quaternion.identity).GetComponent<PhysicalShockwave>();
					component.enemy = true;
					component.enemyType = (EnemyType)41;
				}
			});
		}
	}

	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.GetRealHealth() + 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.GetRealHealth() + 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
	{
		private Idol Idol;

		private EnemyIdentifier Eid;

		public GameObject Beam;

		public EnemyIdentifier LastFound;

		public ContinuousBeam beam;

		private float Timer;

		public void OnEnable()
		{
			if (Fento_Difficulty_Options.Mech_Disable_RadIdols_Buff)
			{
				Object.Destroy((Object)(object)this);
				return;
			}
			Idol = ((Component)this).GetComponent<Idol>();
			Eid = ((Component)this).GetComponent<EnemyIdentifier>();
			Timer = Random.value * 25f;
		}

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

		public void FixedUpdate()
		{
			//IL_00d8: 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_01d5: 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_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)Idol == (Object)null || (Object)(object)Eid == (Object)null || Eid.dead || Eid.target == null)
			{
				return;
			}
			Timer += Time.fixedDeltaTime;
			if (Timer > 25f)
			{
				Timer = Random.value * 4f;
				SpawnInsignia();
			}
			if (!((Object)(object)Idol.target != (Object)null) || !((Object)(object)Idol.target != (Object)(object)LastFound))
			{
				return;
			}
			LastFound = Idol.target;
			if (Object.op_Implicit((Object)(object)beam))
			{
				Object.Destroy((Object)(object)beam);
			}
			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;
			beam.endPoint = ((Component)LastFound).transform;
			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));
			});
			Collider val = default(Collider);
			if (((Component)LastFound).TryGetComponent<Collider>(ref val))
			{
				Transform val2 = ((Component)LastFound).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 SpawnInsignia()
		{
			//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)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_009f: 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)(object)Eid != (Object)null && Eid.target != null)
			{
				GameObject val = Object.Instantiate<GameObject>(Fento_Assets.Insignia.gameObject, ((Component)MonoSingleton<NewMovement>.Instance).transform.position, Quaternion.identity);
				VirtueInsignia component = val.GetComponent<VirtueInsignia>();
				component.target = Eid.target;
				component.parentEnemy = ((Component)Eid).GetComponent<Enemy>();
				component.hadParent = (Object)(object)component.parentEnemy != (Object)null;
				component.explosionLength = 3.5f;
				if ((int)MonoSingleton<PlayerTracker>.Instance.playerType == 1)
				{
					Transform transform = val.transform;
					transform.localScale *= 0.75f;
					component.windUpSpeedMultiplier *= 0.875f;
				}
			}
		}
	}

	public class Manneq_Rage_IQ : MonoBehaviour
	{
		public Enemy mach;

		public Mannequin Manneq;

		public EnemyIdentifier eid;

		public NavMeshAgent nma;

		public float Timer;

		public void Start()
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Expected O, but got Unknown
			mach = ((Component)this).GetComponent<Enemy>();
			Manneq = ((Component)this).GetComponent<Mannequin>();
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			nma = ((Component)this).GetComponent<NavMeshAgent>();
			if (!Object.op_Implicit((Object)(object)eid))
			{
				return;
			}
			eid.onDeath.AddListener((UnityAction)delegate
			{
				//IL_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: Unknown result type (might be due to invalid IL or missing references)
				if (!eid.puppet)
				{
					Transform transform = ((Component)((Component)eid).GetComponentInParent<GoreZone>()).transform;
					DetectebleEnemies[] array = new DetectebleEnemies[3]
					{
						DetectebleEnemies.Stray,
						DetectebleEnemies.Schism,
						DetectebleEnemies.Soldier
					};
					EnemyIdentifier eid0 = Integrate_Enemy(array[Random.Range(0, array.Length)], transform, active: false, ((Component)this).transform.position, Quaternion.Euler(0f, Random.value * 360f, 0f));
					eid0.immuneToFriendlyFire = true;
					eid0.dontCountAsKills = true;
					eid0.Make_Puppet_OnStart();
					eid0.Make_UltraEnraged();
					Invoke_WithDelay(1f + Random.value, delegate
					{
						if (Object.op_Implicit((Object)(object)eid0))
						{
							((Component)eid0).gameObject.SetActive(true);
						}
					});
				}
			});
		}

		public void FixedUpdate()
		{
			//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_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null || !Object.op_Implicit((Object)(object)Manneq))
			{
				return;
			}
			Timer += Time.fixedDeltaTime;
			if (!(Timer > 2.5f))
			{
				return;
			}
			Timer = 0f;
			if (!Manneq.inAction && Object.op_Implicit((Object)(object)nma) && ((Behaviour)nma).enabled && nma.isOnNavMesh && Object.op_Implicit((Object)(object)mach) && Object.op_Implicit((Object)(object)mach.gc) && mach.gc.onGround)
			{
				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 Enemy enemy;

		public float Timer;

		public float TimerSim;

		public bool Add;

		public void Start()
		{
			eid = ((Component)this).GetComponent<EnemyIdentifier>();
			enemy = ((Component)this).GetComponent<Enemy>();
			swm = ((Component)this).GetComponent<SwordsMachine>();
			if (Object.op_Implicit((Object)(object)eid))
			{
				Add = eid.isBoss || Object.op_Implicit((Object)(object)((Component)eid).GetComponent<BossHealthBar>());
			}
		}

		public void FixedUpdate()
		{
			//IL_008a: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: 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_00d8: 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_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: 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_0104: 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_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ed: 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;
			}
			Timer += Time.fixedDeltaTime;
			TimerSim += Time.fixedDeltaTime;
			if (Timer > 1f)
			{
				Timer = 0f;
				eid.target.GetTargetPosition(out var targetPosition);
				if (!swm.inAction && targetPosition.y > ((Component)this).transform.position.y + 4f && Vector3.Distance(targetPosition, ((Component)this).transform.position) > 10f && !Physics.Raycast(((Component)this).transform.position + Vector3.up, targetPosition - (((Component)this).transform.position + Vector3.up), Vector3.Distance(targetPosition, ((Component)this).transform.position + Vector3.up), LayerMask.op_Implicit(LayerMaskDefaults.Get((LMD)1))))
				{
					((Component)((Component)eid).transform).SendMessage("SwordThrow", (SendMessageOptions)1);
					Timer = -10f;
				}
			}
			if (!(TimerSim > 1f))
			{
				return;
			}
			TimerSim = 0f;
			if (Add && Object.op_Implicit((Object)(object)enemy) && (Object)(object)enemy.symbiote == (Object)null && eid.Health < enemy.originalHealth * 0.5f)
			{
				Add = false;
				EnemyIdentifier obj = Integrate_Enemy(DetectebleEnemies.SwordsMachineNonboss, Object.op_Implicit((Object)(object)((Component)this).transform.parent) ? ((Component)this).transform.parent : ((Component)this).transform, active: true, ((Component)this).transform.position);
				obj.immuneToFriendlyFire = true;
				obj.Make_UltraEnraged();
				obj.Make_Puppet_OnStart();
				Enemy val = default(Enemy);
				if (((Component)obj).TryGetComponent<Enemy>(ref val))
				{
					enemy.symbiote = val;
					val.symbiote = enemy;
				}
			}
		}
	}

	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_025b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: 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_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0283: 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_00b2: 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_00c8: 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_00d9: 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_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: 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_029a: Unknown result type (might be due to invalid IL or missing references)
			//IL_029f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e0: 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_01f6: Expected O, but got Unknown
			if (!Object.op_Implicit((Object)(object)eid) || eid.dead || eid.target == null)
			{
				return;
			}
			eid.target.GetTargetPosition(out var targetPosition);
			if (Gasoline_Fire)
			{
				if (Gasoline_Charge >= 0.01f)
				{
					Vector3 val = targetPosition - ((Component)this).transform.position;
					Vector3 normalized = ((Vector3)(ref val)).normalized;
					if (Vector3.Distance(targetPosition, ((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(targetPosition + 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 (targetPosition.y > ((Component)this).transform.position.y + 4f && Vector3.Distance(targetPosition, ((Component)this).transform.position) > 20f && !Physics.Raycast(((Component)this).transform.position + Vector3.up, targetPosition - (((Component)this).transform.position + Vector3.up), Vector3.Distance(targetPosition, ((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_0082: 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, 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_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_0071: 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_007b: 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_0088: Unknown result type (might be due to invalid IL or missing references)
						//IL_008d: Unknown result type (might be due to invalid IL or missing references)
						//IL_0098: 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_0195: 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)
						if (!((Object)(object)eid == (Object)null) && !eid.dead && eid.target != null && Object.op_Implicit((Object)(object)Fento_Assets.MassSpearHook.gameObject))
						{
							eid.target.GetTargetPosition(out var targetPosition);
							GameObject gameObject3 = Fento_Assets.MassSpearHook.gameObject;
							Vector3 position3 = DisabledObj.transform.position;
							Vector3 val2 = targetPosition - ((Component)this).transform.position;
							GameObject val3 = Object.Instantiate<GameObject>(ga