Decompiled source of Interesting Units v1.1.0

IU.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 System.Security;
using System.Security.Permissions;
using BepInEx;
using BitCode.Debug.Commands;
using BitCode.Extensions;
using DM;
using FhpSLib;
using HarmonyLib;
using IU;
using Landfall.TABS;
using Landfall.TABS.AI;
using Landfall.TABS.AI.Components;
using Landfall.TABS.AI.Systems;
using Landfall.TABS.GameMode;
using Landfall.TABS.GameState;
using Landfall.TABS.UnitEditor;
using Landfall.TABS.UnitPlacement;
using Landfall.TABS.Workshop;
using SLMA;
using TFBGames;
using TMPro;
using Unity.Entities;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("IU")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("made in SFT by mimimi")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("3a45c3cf-230c-4310-952f-0887d4266a22")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[HarmonyPatch(typeof(Unit), "SetHighlight")]
internal class CustomOutlinePatch
{
	[HarmonyPostfix]
	public static void Postfix(Unit __instance, ref Color highlightColor)
	{
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0025: Expected O, but got Unknown
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)((Component)__instance).GetComponentInChildren<HighlightColor>() != (Object)null)
		{
			IHighlight val = (IHighlight)OtherLibrary.GetField<Unit>(__instance, "m_highlighter");
			val.BeginHighlight();
			val.SetHighlightColor(((Component)__instance).GetComponentInChildren<HighlightColor>().color);
		}
	}
}
public class Item : MonoBehaviour
{
	public enum kind
	{
		Weapon,
		Cloth,
		Skill,
		Unit,
		Projectile,
		Other
	}

	public string name;

	public kind Kind;
}
namespace I_U
{
	public class BundleProccesor : MonoBehaviour
	{
		public static void LoadBundleStuff(AssetBundle assetBundle)
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			GameObject[] array = assetBundle.LoadAllAssets<GameObject>();
			GameObject[] array2 = array;
			foreach (GameObject val in array2)
			{
				UPool.MyPool.AddObject(val.GetComponent<CharacterItem>().Entity.Name, val, false, (HideFlags)61, val.GetComponent<CharacterItem>().Entity.GetSpriteIcon(), val.GetComponent<CharacterItem>().Entity.GUID.m_ID, true);
			}
		}
	}
}
namespace IU
{
	public class AlwaysSethighlight : MonoBehaviour
	{
		public Color color;

		private void Update()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).GetComponent<Unit>().SetHighlight(color);
		}
	}
	public class ChangeFromDayToNight : MonoBehaviour
	{
		public bool flip;

		public Light SB;

		private void Awake()
		{
			SB = GameObject.Find("Directional light").GetComponent<Light>();
		}

		private void Update()
		{
			//IL_0051: 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_0016: 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_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			if (!flip)
			{
				Light sB = SB;
				sB.color -= new Color(0.003921569f * Time.deltaTime, 0.003921569f * Time.deltaTime, 0f);
			}
			else
			{
				Light sB2 = SB;
				sB2.color += new Color(0.003921569f * Time.deltaTime, 0.003921569f * Time.deltaTime, 0f);
			}
			if (SB.color == new Color(0f, 0f, 0f))
			{
				flip = true;
			}
			if (SB.color == new Color(1f, 1f, 1f, 1f))
			{
				flip = false;
			}
		}
	}
	public class CurseofBinding : MonoBehaviour
	{
		private Unit unit;

		private Transform[] childern;

		public int iterations;

		public bool alreadydead = false;

		private void Awake()
		{
			alreadydead = false;
			unit = ((Component)this).gameObject.GetComponent<Unit>();
			childern = ((Component)unit).gameObject.GetComponentsInChildren<Transform>();
			((MonoBehaviour)this).StartCoroutine(LaggyEvents());
		}

		private void Update()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Invalid comparison between Unknown and I4
			//IL_029d: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a3: Invalid comparison between Unknown and I4
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Invalid comparison between Unknown and I4
			//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f9: Invalid comparison between Unknown and I4
			((Component)unit.data.torso).GetComponent<Rigidbody>().AddForce(new Vector3(0f, -20f, 0f), (ForceMode)2);
			unit.data.muscleControl = 0f;
			unit.data.ragdollControl = 0f;
			if (iterations >= 0)
			{
				if (unit.data.health == float.PositiveInfinity && !Object.op_Implicit((Object)(object)((Component)unit).gameObject.GetComponentInChildren<Immortality>()))
				{
					unit.data.health = 9999999f;
				}
				unit.data.health = unit.data.health - unit.data.maxHealth / 10f * unit.unitBlueprint.healthMultiplier;
				iterations--;
			}
			if (!(unit.data.health <= 0f) || alreadydead)
			{
				return;
			}
			GameModeService service = ServiceLocator.GetService<GameModeService>();
			((Component)((Component)this).GetComponent<Unit>()).GetComponentInChildren<DataHandler>().Dead = true;
			alreadydead = true;
			service.CurrentGameMode.WinConditionPropagator.OnUnitDied(unit);
			TeamSystem orCreateManager = World.Active.GetOrCreateManager<TeamSystem>();
			if ((int)((Component)this).GetComponent<Unit>().Team == 0)
			{
				GooglyEye[] array = Object.FindObjectsOfType<GooglyEye>();
				foreach (GooglyEye val in array)
				{
					if ((Object)(object)((Component)((Component)val).transform.root).GetComponent<Unit>() != (Object)null && (int)((Component)((Component)val).transform.root).GetComponent<Unit>().Team == 0)
					{
						val.Die();
					}
				}
				int num = 0;
				foreach (Unit teamUnit in orCreateManager.GetTeamUnits((Team)0))
				{
					if (!teamUnit.data.Dead)
					{
						num++;
					}
				}
				if (num <= 1)
				{
					service.CurrentGameMode.OnWinnerDecided((Team)1, "Not Even Close");
					service.CurrentGameMode.DecideWinner((Team)1, "Not Even Close");
				}
			}
			if ((int)((Component)this).GetComponent<Unit>().Team == 1)
			{
				GooglyEye[] array2 = Object.FindObjectsOfType<GooglyEye>();
				foreach (GooglyEye val2 in array2)
				{
					if ((Object)(object)((Component)((Component)val2).transform.root).GetComponent<Unit>() != (Object)null && (int)((Component)((Component)val2).transform.root).GetComponent<Unit>().Team == 1)
					{
						val2.Die();
					}
				}
				int num2 = 0;
				foreach (Unit teamUnit2 in orCreateManager.GetTeamUnits((Team)1))
				{
					if (!teamUnit2.data.Dead)
					{
						num2++;
					}
				}
				if (num2 <= 1)
				{
					service.CurrentGameMode.OnWinnerDecided((Team)0, "Not Even Close");
					service.CurrentGameMode.DecideWinner((Team)0, "Not Even Close");
				}
			}
			alreadydead = true;
		}

		private IEnumerator LaggyEvents()
		{
			yield return (object)new WaitForSecondsRealtime(1f);
			SpecialAbility[] componentsInChildren = ((Component)unit).gameObject.GetComponentsInChildren<SpecialAbility>();
			foreach (SpecialAbility s in componentsInChildren)
			{
				Object.Destroy((Object)(object)s);
			}
			((MonoBehaviour)this).StartCoroutine(LaggyEvents());
		}
	}
	public class Move_DemonRage : MonoBehaviour
	{
		public GameObject sliceeffect;

		public GaryListner GaryHub;

		public bool IsEnraged;

		private void Awake()
		{
			sliceeffect = Loader.SliceEffect;
		}

		private IEnumerator loop()
		{
			yield return (object)new WaitForSeconds(9f);
			IsEnraged = true;
			yield return (object)new WaitForSeconds(2f);
			IsEnraged = false;
			((MonoBehaviour)this).StartCoroutine(loop());
		}

		private IEnumerator slowloop()
		{
			if (IsEnraged)
			{
				Unit[] array = Object.FindObjectsOfType<Unit>();
				foreach (Unit u in array)
				{
					if (u.Team != ((Component)this).gameObject.GetComponent<Unit>().Team)
					{
						PlayBlood(u.data.head, sliceeffect);
						PlayBlood(u.data.legRight, sliceeffect);
						PlayBlood(u.data.legLeft, sliceeffect);
						PlayBlood(u.data.leftHand, sliceeffect);
						PlayBlood(u.data.rightHand, sliceeffect);
						PlaySlice(u.data.head, sliceeffect);
						PlaySlice(u.data.legRight, sliceeffect);
						PlaySlice(u.data.legLeft, sliceeffect);
						PlaySlice(u.data.leftHand, sliceeffect);
						PlaySlice(u.data.rightHand, sliceeffect);
						Transform transform = ((Component)u.data.head).transform;
						transform.localScale *= 0f;
						Transform transform2 = ((Component)u.data.legRight).transform;
						transform2.localScale *= 0f;
						Transform transform3 = ((Component)u.data.legLeft).transform;
						transform3.localScale *= 0f;
						Transform transform4 = ((Component)u.data.leftHand).transform;
						transform4.localScale *= 0f;
						Transform transform5 = ((Component)u.data.rightHand).transform;
						transform5.localScale *= 0f;
						Transform transform6 = ((Component)u.data.footLeft).transform;
						transform6.localScale *= 0f;
						Transform transform7 = ((Component)u.data.footRight).transform;
						transform7.localScale *= 0f;
						Transform transform8 = ((Component)u.data.leftArm).transform;
						transform8.localScale *= 0f;
						Transform transform9 = ((Component)u.data.rightArm).transform;
						transform9.localScale *= 0f;
						if ((Object)(object)u.data.weaponHandler.rightWeapon != (Object)null)
						{
							Transform transform10 = ((Component)u.data.weaponHandler.rightWeapon).transform;
							transform10.localScale *= 0f;
						}
						if ((Object)(object)u.data.weaponHandler.leftWeapon != (Object)null)
						{
							Transform transform11 = ((Component)u.data.weaponHandler.leftWeapon).transform;
							transform11.localScale *= 0f;
						}
						u.holdingHandler.LetGoOfAll();
						u.data.ragdollControl = -1f;
						u.data.muscleControl = -1f;
						SpecialAbility[] componentsInChildren = ((Component)u).gameObject.GetComponentsInChildren<SpecialAbility>();
						foreach (SpecialAbility s in componentsInChildren)
						{
							Object.Destroy((Object)(object)((Component)s).gameObject);
						}
					}
				}
			}
			yield return (object)new WaitForSeconds(0.2f);
			((MonoBehaviour)this).StartCoroutine(slowloop());
		}

		public IEnumerator Startrage()
		{
			((MonoBehaviour)this).StartCoroutine(loop());
			((MonoBehaviour)this).StartCoroutine(slowloop());
			ShootParticle();
			yield return null;
		}

		private void Update()
		{
			if (!IsEnraged)
			{
			}
		}

		private void ShootParticle()
		{
			//IL_0022: 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_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Object.Instantiate<GameObject>(Loader.InfiniteParticle);
			val.transform.position = ((Component)this).GetComponent<Unit>().data.head.position;
			val.AddComponent<Rigidbody>().AddForce(0f, 7f, 0f, (ForceMode)2);
			val.GetComponent<Rigidbody>().useGravity = false;
			val.GetComponent<Rigidbody>().freezeRotation = true;
			((Renderer)val.GetComponent<MeshRenderer>()).material = GarySetups.Fastmat(Color.black);
			InfiniteParticle infiniteParticle = val.AddComponent<InfiniteParticle>();
			infiniteParticle.me = ((Component)this).GetComponent<Unit>();
			infiniteParticle.team = ((Component)this).GetComponent<Unit>().Team;
			val.AddComponent<DestroySelfWhenUnitDestroyed>();
			GaryHub.Infinite_Particle = infiniteParticle;
		}

		private void PlaySlice(Transform tr, GameObject sliceEffect)
		{
			//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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			GameObject val = Object.Instantiate<GameObject>(sliceEffect, (Transform)null);
			Transform transform = val.transform;
			transform.localScale *= 2f;
			val.transform.position = tr.position;
			val.transform.rotation = tr.rotation;
			Transform transform2 = val.transform;
			Vector3 one = Vector3.one;
			float num = Random.Range(0, 720);
			transform2.RotateAround(tr.position, one, num);
			CodeAnimation component = val.GetComponent<CodeAnimation>();
			if (component != null)
			{
				component.PlayIn();
			}
			val.AddComponent<RemoveAfterSeconds>().seconds = 0.5f;
		}

		private void PlayBlood(Transform tr, GameObject sliceEffect)
		{
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			int num = Random.Range(0, 5);
			if (num == 2)
			{
				GameObject val = Object.Instantiate<GameObject>(Loader.Blood, (Transform)null);
				val.transform.position = ((Component)tr).transform.position;
				val.AddComponent<RemoveAfterSeconds>().seconds = 1f;
			}
		}
	}
	public class DestroySelfWhenUnitDestroyed : GameStateListener
	{
		public Unit unit;

		private bool dostuff;

		private void Start()
		{
			if ((Object)(object)unit == (Object)null)
			{
				dostuff = true;
			}
		}

		private void Update()
		{
			if (!dostuff && (Object)(object)unit == (Object)null)
			{
				Object.Destroy((Object)(object)((Component)this).gameObject);
			}
		}

		public override void OnEnterBattleState()
		{
		}

		public override void OnEnterPlacementState()
		{
			Object.Destroy((Object)(object)((Component)this).gameObject);
		}
	}
	public class FlameThrower : MonoBehaviour
	{
		public enum Modes
		{
			Active,
			Stop
		}

		public RangeWeapon rangeWeapon;

		public bool STOP;

		public float More = 0f;

		public Modes CurrentMode;

		private void Awake()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Expected O, but got Unknown
			rangeWeapon = ((Component)this).GetComponent<RangeWeapon>();
			rangeWeapon.shootEvent.AddListener((UnityAction)delegate
			{
				Increase();
			});
			ParticleSystem[] componentsInChildren = ((Component)this).gameObject.GetComponentsInChildren<ParticleSystem>();
			foreach (ParticleSystem val in componentsInChildren)
			{
				if (((Object)((Component)val).gameObject).name == "Fire (1)")
				{
					val.emissionRate = 400f;
				}
			}
		}

		private void Increase()
		{
			More += 1f;
			if (More > 5f)
			{
				More = 5f;
			}
		}

		private void Update()
		{
			if (More >= 0f && CurrentMode == Modes.Stop)
			{
				SetActive();
				More -= Time.deltaTime;
				ParticleSystem[] componentsInChildren = ((Component)this).gameObject.GetComponentsInChildren<ParticleSystem>();
				foreach (ParticleSystem val in componentsInChildren)
				{
					if (((Object)((Component)val).gameObject).name == "Fire (1)")
					{
						val.Play();
					}
				}
			}
			else
			{
				Stop();
			}
		}

		private void SetActive()
		{
			CurrentMode = Modes.Active;
			ParticleSystem[] componentsInChildren = ((Component)this).gameObject.GetComponentsInChildren<ParticleSystem>();
			foreach (ParticleSystem val in componentsInChildren)
			{
				if (((Object)((Component)val).gameObject).name == "Fire (1)")
				{
					val.Play();
				}
			}
			DelayEvent[] componentsInChildren2 = ((Component)this).gameObject.GetComponentsInChildren<DelayEvent>();
			foreach (DelayEvent val2 in componentsInChildren2)
			{
				if (((Object)((Component)val2).gameObject).name == "SetActive")
				{
					val2.Go();
				}
			}
		}

		private void Stop()
		{
			CurrentMode = Modes.Stop;
			ParticleSystem[] componentsInChildren = ((Component)this).gameObject.GetComponentsInChildren<ParticleSystem>();
			foreach (ParticleSystem val in componentsInChildren)
			{
				if (((Object)((Component)val).gameObject).name == "Fire (1)")
				{
					val.Stop();
				}
			}
			DelayEvent[] componentsInChildren2 = ((Component)this).gameObject.GetComponentsInChildren<DelayEvent>();
			foreach (DelayEvent val2 in componentsInChildren2)
			{
				if (((Object)((Component)val2).gameObject).name == "Disable")
				{
					val2.Go();
				}
			}
		}
	}
	public class FollowPositionofOnlyPart : MonoBehaviour
	{
		public Transform follow;

		private void Awake()
		{
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			follow = ((Component)((Component)((Component)this).transform.root).GetComponentInChildren<Head>()).transform;
			((Component)this).gameObject.AddComponent<DestroySelfWhenUnitDestroyed>().unit = ((Component)((Component)this).transform.root).GetComponent<Unit>();
			((Component)this).transform.localScale = Help.devide(Vector3.one, ((Component)this).transform.lossyScale);
		}

		public void Update()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).transform.localPosition = Vector3.zero;
			((Component)this).transform.position = follow.position;
			((Component)this).transform.forward = ((Component)((Component)((Component)this).transform.root).GetComponent<Unit>().data.mainRig).transform.forward;
		}
	}
	public class GarySetups : MonoBehaviour
	{
		public static Material Fastmat(Color color, bool isParticle = false)
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Expected O, but got Unknown
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			Material val;
			if (!isParticle)
			{
				val = new Material(Shader.Find("Standard"));
			}
			else
			{
				try
				{
					val = new Material(Shader.Find("Particles/Standard Surface"));
				}
				catch (Exception)
				{
					val = new Material(Shader.Find("Particles/StandardSurface"));
				}
			}
			val.color = color;
			val.SetFloat("_Glossiness", 0f);
			return val;
		}

		public static void TurnParticleblack(ParticleSystemRenderer p)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			int num = 0;
			Material[] materials = ((Renderer)p).materials;
			foreach (Material val in materials)
			{
				((Renderer)p).materials[num] = Fastmat(Color.white);
				num++;
			}
		}

		public static IEnumerator GaryFlames(GameObject weaopon1)
		{
			yield return (object)new WaitForEndOfFrame();
			yield return (object)new WaitForEndOfFrame();
			yield return (object)new WaitForEndOfFrame();
			Transform ObjectTransform = weaopon1.transform.Find("ObjectTransform");
			Transform LongName = ObjectTransform.Find("p_Fireball_1 Prefabs_VB(Clone)");
			Transform Mid = LongName.Find("Mid");
			Transform Fire_Idle = Mid.Find("Fire_Idle");
			Transform Fire_Trail = Mid.Find("Fire_Trail");
			Transform Fire_Explo = Mid.Find("Fire_Explo");
			((Renderer)((Component)Fire_Idle).GetComponent<ParticleSystemRenderer>()).material = new Material(Shader.Find("Unlit/Color"));
			TurnParticleblack(((Component)Fire_Idle).GetComponent<ParticleSystemRenderer>());
			((Object)Fire_Idle).name = "Blck_fire_Idle";
			((Renderer)((Component)Fire_Trail).GetComponent<ParticleSystemRenderer>()).material = new Material(Shader.Find("Unlit/Color"));
			TurnParticleblack(((Component)Fire_Trail).GetComponent<ParticleSystemRenderer>());
			((Object)Fire_Trail).name = "Blck_fire_Trail";
			((Renderer)((Component)Fire_Explo).GetComponent<ParticleSystemRenderer>()).material = new Material(Shader.Find("Unlit/Color"));
			TurnParticleblack(((Component)Fire_Explo).GetComponent<ParticleSystemRenderer>());
			((Object)Fire_Explo).name = "Blck_fire_Explo";
		}

		public static void MakeNotWeapon(GameObject temp)
		{
			Object.Destroy((Object)(object)temp.GetComponentInChildren<GOSLMA>());
			Object.Destroy((Object)(object)temp.GetComponentInChildren<MeleeWeapon>());
			Object.Destroy((Object)(object)temp.GetComponentInChildren<Weapon>());
			Object.Destroy((Object)(object)temp.GetComponentInChildren<WeaponItem>());
			Object.Destroy((Object)(object)temp.GetComponentInChildren<WeaponForceAnimation>());
			Object.Destroy((Object)(object)temp.GetComponentInChildren<Cost>());
		}
	}
	public class GarySpawnRing : MonoBehaviour
	{
		private Unit unit;

		private void Awake()
		{
			if (Object.op_Implicit((Object)(object)((Component)((Component)this).transform.root).GetComponent<Unit>()))
			{
				unit = ((Component)((Component)this).transform.root).GetComponent<Unit>();
				((MonoBehaviour)this).StartCoroutine(loop());
			}
		}

		private IEnumerator loop()
		{
			yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)unit.data.targetData != (Object)null));
			yield return (object)new WaitForSeconds(5f);
			GameObject ring = Object.Instantiate<GameObject>(UPool.MyPool.GetObject("GaryRing"));
			ring.transform.position = (((Component)unit.data.targetData.footRight).transform.position + ((Component)unit.data.targetData.footLeft).transform.position) / 2f;
			Collider[] collider = Physics.OverlapSphere(ring.transform.position, 6f);
			for (int i = 0; i < collider.Length; i++)
			{
				if (Object.op_Implicit((Object)(object)((Component)((Component)collider[i]).transform.root).GetComponent<Unit>()) && ((Component)((Component)collider[i]).transform.root).GetComponent<Unit>().Team != unit.Team)
				{
					Help.FlipUnitTeam(((Component)((Component)collider[i]).transform.root).GetComponent<Unit>(), Color.black);
				}
			}
			((MonoBehaviour)this).StartCoroutine(loop());
		}
	}
	public class Gaurdian_Angel : GameStateListener
	{
		public Team TargetTeam;

		private void Start()
		{
			Debug.Log((object)"Gaurding cuz im a guard, duh");
			((Component)this).transform.parent = null;
			SceneManager.sceneLoaded += SceneManager_sceneLoaded;
		}

		private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1)
		{
			Stop();
		}

		public void Stop()
		{
			Object.Destroy((Object)(object)((Component)this).gameObject);
		}

		public override void OnEnterPlacementState()
		{
			Stop();
		}

		public override void OnEnterPlacementStateEarly()
		{
			Stop();
		}

		public override void OnEnterBattleState()
		{
		}

		public override void OnEnterNewScene()
		{
			Stop();
		}
	}
	public class GaryListner : GameStateListener
	{
		public InfiniteParticle Infinite_Particle;

		public Move_DemonRage Move_DemonRage;

		public override void OnEnterPlacementState()
		{
		}

		public override void OnEnterBattleState()
		{
			if ((Object)(object)Move_DemonRage != (Object)null)
			{
				Move_DemonRage.GaryHub = this;
				((MonoBehaviour)this).StartCoroutine(Move_DemonRage.Startrage());
				((MonoBehaviour)this).StartCoroutine(Infinite_Particle.StartShoot());
			}
		}
	}
	public static class Help
	{
		public static void SetField(object obj, string fieldName, object value)
		{
			obj.GetType().GetField(fieldName, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic).SetValue(obj, value);
		}

		public static void Kill(Unit unit)
		{
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Invalid comparison between Unknown and I4
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Invalid comparison between Unknown and I4
			GameModeService service = ServiceLocator.GetService<GameModeService>();
			((Component)unit).GetComponentInChildren<DataHandler>().Dead = true;
			string randomEnd = DontDie.GetRandomEnd();
			service.CurrentGameMode.WinConditionPropagator.OnUnitDied(unit);
			TeamSystem orCreateManager = World.Active.GetOrCreateManager<TeamSystem>();
			GooglyEye[] componentsInChildren = ((Component)unit).GetComponentsInChildren<GooglyEye>();
			foreach (GooglyEye val in componentsInChildren)
			{
				val.Die();
			}
			if ((int)unit.Team == 0)
			{
				int num = (from u in orCreateManager.GetTeamUnits((Team)0)
					where !u.data.Dead
					select u).Count();
				if (num <= 1)
				{
					service.CurrentGameMode.OnWinnerDecided((Team)1, randomEnd);
					service.CurrentGameMode.DecideWinner((Team)1, randomEnd);
				}
			}
			if ((int)unit.Team == 1)
			{
				int num2 = (from u in orCreateManager.GetTeamUnits((Team)1)
					where !u.data.Dead
					select u).Count();
				if (num2 <= 1)
				{
					service.CurrentGameMode.OnWinnerDecided((Team)0, randomEnd);
					service.CurrentGameMode.DecideWinner((Team)0, randomEnd);
				}
			}
		}

		public static Vector3 GetMeshSize(SkinnedMeshRenderer mesh)
		{
			//IL_0003: 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_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: 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_0097: 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)
			Vector3 result = default(Vector3);
			Bounds bounds = mesh.sharedMesh.bounds;
			result.x = Vector3.Scale(((Bounds)(ref bounds)).size, ((Component)mesh).transform.lossyScale).Highest();
			bounds = mesh.sharedMesh.bounds;
			result.y = Vector3.Scale(((Bounds)(ref bounds)).size, ((Component)mesh).transform.lossyScale).Highest();
			bounds = mesh.sharedMesh.bounds;
			result.z = Vector3.Scale(((Bounds)(ref bounds)).size, ((Component)mesh).transform.lossyScale).Highest();
			return result;
		}

		public static float Highest(this Vector3 vector3)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			float num = 0f;
			float[] array = new float[3] { vector3.x, vector3.y, vector3.z };
			float[] array2 = array;
			foreach (float num2 in array2)
			{
				if (num2 > num)
				{
					num = num2;
				}
			}
			return num;
		}

		public static Vector3 devide(Vector3 a, Vector3 b)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: 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_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: 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)
			return new Vector3(a.x / b.x, a.y / b.y, a.z / b.z);
		}

		public static Team reverse(this Team team)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0003: Invalid comparison between Unknown and I4
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			if ((int)team == 0)
			{
				return (Team)1;
			}
			return (Team)0;
		}

		public static void FlipUnitTeam(Unit unit, Color color)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: 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_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Expected I4, but got Unknown
			//IL_0069: 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_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: 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_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_0183: Unknown result type (might be due to invalid IL or missing references)
			Team team = unit.Team;
			unit.Team = team.reverse();
			unit.data.team = team.reverse();
			GameObjectEntity component = ((Component)((Component)unit).transform.root).GetComponent<GameObjectEntity>();
			component.EntityManager.RemoveComponent<Team>(component.Entity);
			component.EntityManager.AddSharedComponentData<Team>(component.Entity, new Team
			{
				Value = (int)team.reverse()
			});
			World.Active.GetOrCreateManager<TeamSystem>().RemoveEntity(component.Entity, team, unit);
			World.Active.GetOrCreateManager<TeamSystem>().AddUnit(component.Entity, ((Component)((Component)unit).transform.root).gameObject, ((Component)unit).transform.root, unit.data.mainRig, unit.data, team.reverse(), unit, true);
			if (Object.op_Implicit((Object)(object)((Component)((Component)unit).transform.root).GetComponentInChildren<TeamHolder>()))
			{
				return;
			}
			for (int i = 0; i < ((Component)((Component)unit).transform.root).GetComponentsInChildren<TeamHolder>().Length; i++)
			{
				((Component)((Component)unit).transform.root).GetComponentsInChildren<TeamHolder>()[i].team = ((Component)((Component)unit).transform.root).GetComponentsInChildren<TeamHolder>()[i].team.reverse();
			}
			Renderer[] componentsInChildren = ((Component)((Component)unit).transform.root).GetComponentsInChildren<Renderer>(true);
			for (int j = 0; j < componentsInChildren.Length; j++)
			{
				for (int k = 0; k < componentsInChildren[j].materials.Length; k++)
				{
					Material val = Object.Instantiate<Material>(componentsInChildren[k].materials[k]);
					val.color = color;
					componentsInChildren[k].materials[k] = val;
				}
			}
		}
	}
	public class HighlightColor : MonoBehaviour
	{
		public Color color;

		private void Awake()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).GetComponent<Unit>().SetHighlight(color);
		}
	}
	public class Immortality : GameStateListener
	{
		public bool CanBeDestroyed = true;

		public GameObject GaurdianAngel;

		private void Start()
		{
			if (Object.op_Implicit((Object)(object)((Component)((Component)this).transform.root).GetComponent<Unit>()))
			{
				GameModeService service = ServiceLocator.GetService<GameModeService>();
				((Component)((Component)this).transform.root).GetComponentInChildren<Unit>().data.maxHealth = float.PositiveInfinity;
				((Component)((Component)this).transform.root).GetComponentInChildren<Unit>().data.health = float.PositiveInfinity;
			}
		}

		public override void OnEnterBattleState()
		{
			//IL_0038: 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_0066: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)((Component)((Component)this).transform.root).GetComponent<Unit>()))
			{
				GameObject val = GameObject.CreatePrimitive((PrimitiveType)3);
				((Object)val).name = "Gaurdian";
				val.transform.localScale = Vector3.zero;
				Object.DontDestroyOnLoad((Object)(object)val);
				val.AddComponent<Gaurdian_Angel>().TargetTeam = ((Component)((Component)this).transform.root).GetComponentInChildren<Unit>(true).Team;
			}
		}

		public override void OnEnterPlacementState()
		{
		}

		public void OnDestroy()
		{
			if (((GameStateListener)this).GameStateManager != null)
			{
				((GameStateListener)this).GameStateManager.UnregisterListener((GameStateListener)(object)this);
			}
		}
	}
	public class InfiniteParticle : MonoBehaviour
	{
		private bool ismad = false;

		public LineRenderer LineRenderer;

		public Unit me;

		public Team team;

		public bool alreadydead;

		public Unit Target => gettarget();

		private Unit gettarget()
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: 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_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)me != (Object)null)
			{
				return me.data.targetData.unit;
			}
			Unit result = null;
			float num = 1E+11f;
			Unit[] array = Object.FindObjectsOfType<Unit>();
			for (int i = 0; i < array.Length; i++)
			{
				if (array[i].Team != team && !array[i].data.Dead && Vector3.Distance(array[i].data.mainRig.position, ((Component)this).transform.position) < num)
				{
					num = Vector3.Distance(array[i].data.mainRig.position, ((Component)this).transform.position);
					result = array[i];
				}
			}
			return result;
		}

		private void Awake()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_003e: 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_007a: Unknown result type (might be due to invalid IL or missing references)
			LineRenderer = ((Component)this).gameObject.AddComponent<LineRenderer>();
			((Renderer)LineRenderer).material = new Material(Shader.Find("Sprites/Default"));
			for (int i = 0; i < ((Renderer)LineRenderer).materials.Length; i++)
			{
				((Renderer)LineRenderer).materials[i] = GarySetups.Fastmat(Color.black);
			}
			LineRenderer.startColor = Color.black;
			LineRenderer.endColor = Color.black;
			LineRenderer.startWidth = 0f;
			LineRenderer.endWidth = 0.3f;
			LineRenderer.positionCount = 2;
		}

		public IEnumerator StartShoot()
		{
			((MonoBehaviour)this).StartCoroutine(loop());
			yield return null;
		}

		private IEnumerator loop()
		{
			yield return (object)new WaitForSeconds(0.05f);
			Rigidbody component = ((Component)this).GetComponent<Rigidbody>();
			component.velocity /= 25f;
			((MonoBehaviour)this).StartCoroutine(loop());
		}

		private void Update()
		{
			//IL_0036: 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_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)Target == (Object)null)
			{
				LineRenderer.SetPosition(1, ((Component)this).transform.position);
				return;
			}
			LineRenderer.GetPosition(0);
			if (true)
			{
				LineRenderer.SetPosition(0, ((Component)this).transform.position);
			}
			LineRenderer.GetPosition(1);
			if (true)
			{
				LineRenderer.SetPosition(1, Target.data.head.position);
			}
			if (Target.data.health == float.PositiveInfinity)
			{
				Target.data.health = 1000f;
				ismad = true;
			}
			DataHandler data = Target.data;
			data.health -= Target.data.maxHealth / 2f * 10f * Time.deltaTime;
			if (!(Target.data.health <= 0f))
			{
				return;
			}
			GameModeService service = ServiceLocator.GetService<GameModeService>();
			if (service != null)
			{
				BaseGameMode currentGameMode = service.CurrentGameMode;
				bool? obj;
				if (currentGameMode == null)
				{
					obj = null;
				}
				else
				{
					VerticalCurtainController curtainController = currentGameMode.CurtainController;
					obj = ((curtainController != null) ? new bool?(curtainController.AreCurtainsClosed) : null);
				}
				if (obj == false)
				{
					Help.Kill(Target);
				}
			}
		}
	}
	public class Jotaro : MonoBehaviour
	{
		public float Time = 7f;

		public float Time2 = 12f;

		public bool IstimeStoped = false;

		public List<Unit> DamageQue = new List<Unit>();

		public Unit me;

		public void awake()
		{
			((MonoBehaviour)this).StartCoroutine(SpawnStarPlatiunim());
			((MonoBehaviour)this).StartCoroutine(loop2());
		}

		private IEnumerator loop2()
		{
			yield return (object)new WaitForSeconds(Time2);
			((MonoBehaviour)this).StartCoroutine(StopTime());
			((MonoBehaviour)this).StartCoroutine(loop2());
		}

		private IEnumerator SpawnStarPlatiunim()
		{
			GameObject Starplatinum = Object.Instantiate<GameObject>(Loader.StarPlatinum);
			yield return (object)new WaitUntil((Func<bool>)(() => WaitTellMainrig(me.data)));
			Starplatinum.transform.position = ((Component)me.data.mainRig).transform.position + ((Component)me.data.mainRig).transform.forward * 1.5f;
			Starplatinum.transform.rotation = Quaternion.identity;
			Transform transform = Starplatinum.transform;
			transform.localScale *= 0.5f;
			Starplatinum.transform.Find("Scaler").rotation = Loader.offest;
			Transform obj = Starplatinum.transform.Find("Scaler");
			obj.localScale *= 1.3f;
			GoInfrontofUnitEnemy go = Starplatinum.AddComponent<GoInfrontofUnitEnemy>();
			go.Jotaro = me;
			Starplatinum.AddComponent<ContinuesPunchs>();
			Starplatinum.AddComponent<DestroySelfWhenUnitDestroyed>().unit = me;
			Object.Destroy((Object)(object)Starplatinum.GetComponent<RemoveAfterSeconds>());
			Transform[] bones = Starplatinum.GetComponentInChildren<SkinnedMeshRenderer>().bones;
			foreach (Transform t in bones)
			{
				CopyPositionRelativeTo a = ((Component)t).gameObject.AddComponent<CopyPositionRelativeTo>();
				Transform[] boneTransforms = ((Component)me).GetComponent<UnitRig>().boneTransforms;
				foreach (Transform t2 in boneTransforms)
				{
					if (((Object)t).name == ((Object)t2).name && ((Object)t).name != "M_Torso")
					{
						a.target = t2;
					}
				}
				a.relativeTarget = me.data.torso.Find("M_Torso");
				a.relativeTo = Starplatinum.transform.Find("Scaler").Find("Armature").Find("M_Torso");
			}
		}

		private bool WaitTellMainrig(DataHandler dataHandler)
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			bool flag = false;
			try
			{
				Transform transform = ((Component)dataHandler.mainRig).transform;
				transform.position += Vector3.zero;
				return true;
			}
			catch (SystemException)
			{
				return false;
			}
		}

		private IEnumerator StopTime()
		{
			float oldfloat = 1f;
			float oldfloat2 = 1f;
			IstimeStoped = true;
			Unit[] array = Object.FindObjectsOfType<Unit>();
			foreach (Unit u in array)
			{
				if ((Object)(object)u != (Object)(object)((Component)this).GetComponent<Unit>())
				{
					u.FreezeBody();
					try
					{
						oldfloat = ((Component)u).GetComponentInChildren<StepHandler>().multiplier;
						((Component)u).GetComponentInChildren<StepHandler>().multiplier = 0f;
						oldfloat2 = ((Component)u).GetComponentInChildren<AnimationHandler>().multiplier;
						((Component)u).GetComponentInChildren<AnimationHandler>().multiplier = 0f;
					}
					catch (Exception)
					{
					}
				}
			}
			yield return (object)new WaitForSeconds(6f);
			IstimeStoped = false;
			Unit[] array2 = Object.FindObjectsOfType<Unit>();
			foreach (Unit u2 in array2)
			{
				if ((Object)(object)u2 != (Object)(object)((Component)this).GetComponent<Unit>())
				{
					try
					{
						u2.UnfreezeBody();
						((Component)u2).GetComponentInChildren<AnimationHandler>().multiplier = oldfloat2;
						((Component)u2).GetComponentInChildren<StepHandler>().multiplier = oldfloat;
					}
					catch (Exception)
					{
					}
				}
			}
			foreach (Unit u3 in DamageQue)
			{
				if ((Object)(object)u3 != (Object)null)
				{
					((Damagable)u3.data.healthHandler).TakeDamage(5f, Vector3.zero, (Unit)null, (DamageType)0);
					u3.data.mainRig.AddForce(((Component)u3.data.mainRig).transform.forward * -30f, (ForceMode)1);
				}
			}
		}
	}
	public class GoInfrontofUnitEnemy : MonoBehaviour
	{
		public bool Attack = false;

		public Unit Jotaro;

		public Transform target;

		public float speed = 0.5f;

		public Vector3 posnoY = default(Vector3);

		public Quaternion offset = new Quaternion(0f, 0f, 0f, 0f);

		private void FixedUpdate()
		{
			//IL_021d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_0237: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: 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_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0269: 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_0289: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_0298: 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_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: 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_0172: 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_0190: 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)
			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: 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_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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: 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_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)Jotaro.data.targetMainRig != (Object)null)
			{
				if (Vector3.Distance(((Component)Jotaro.data.targetMainRig).transform.position, ((Component)Jotaro.data.mainRig).transform.position) < 7f)
				{
					((Component)this).GetComponent<ContinuesPunchs>().Stoppunchs = false;
					target = ((Component)Jotaro.data.targetMainRig).transform;
					Vector3 val = target.position + target.forward * 2.4f;
					((Component)this).transform.position = Vector3.MoveTowards(((Component)this).transform.position, val, speed);
					posnoY = new Vector3(target.position.x, ((Component)this).transform.position.y, target.position.z);
					((Component)this).transform.LookAt(posnoY);
				}
				else
				{
					((Component)this).GetComponent<ContinuesPunchs>().Stoppunchs = true;
					target = ((Component)Jotaro.data.mainRig).transform;
					Vector3 val2 = target.position + target.forward * -2f;
					((Component)this).transform.position = Vector3.MoveTowards(((Component)this).transform.position, val2, speed);
					posnoY = new Vector3(target.position.x, ((Component)this).transform.position.y, target.position.z);
					((Component)this).transform.LookAt(posnoY);
				}
			}
			else
			{
				((Component)this).GetComponent<ContinuesPunchs>().Stoppunchs = true;
				target = ((Component)Jotaro.data.mainRig).transform;
				Vector3 val3 = target.position + target.forward * -2f;
				((Component)this).transform.position = Vector3.MoveTowards(((Component)this).transform.position, val3, speed);
				posnoY = new Vector3(target.position.x, ((Component)this).transform.position.y, target.position.z);
				((Component)this).transform.LookAt(posnoY);
			}
		}
	}
	public class ContinuesPunchs : MonoBehaviour
	{
		public int Gridx = 5;

		public int Gridy = 5;

		public float Spacing = 6f;

		public bool Stoppunchs = true;

		public bool isplayingsound = false;

		private List<GameObject> allhands = new List<GameObject>();

		public bool IsStand = true;

		private IEnumerator loop()
		{
			if (!IsStand && ((Component)((Component)this).transform.root).GetComponent<Unit>().data.Dead)
			{
				Object.Destroy((Object)(object)this);
			}
			if (!Stoppunchs)
			{
				GameObject punch;
				if (IsStand)
				{
					punch = Object.Instantiate<GameObject>(Loader.SPPunch);
				}
				else
				{
					punch = Object.Instantiate<GameObject>(Loader.HumanPunch);
					Renderer msh = punch.GetComponentInChildren<Renderer>();
					for (int i = 0; i < ((Component)((Component)this).transform.root).GetComponentInChildren<Unit>().unitBlueprint.m_props.Length; i++)
					{
						GameObject item = ((Component)((Component)this).transform.root).GetComponentInChildren<Unit>().unitBlueprint.m_props[i];
						if ((int)((CharacterItem)item.GetComponent<PropItem>()).GearT == 5)
						{
							PropItemData data = ((Component)((Component)this).transform.root).GetComponentInChildren<Unit>().unitBlueprint.m_propData[i];
							GameObject obj = Object.Instantiate<GameObject>(item, punch.transform);
							((CharacterItem)obj.GetComponent<PropItem>()).Equip(((Component)((Component)this).transform.root).gameObject, data, new TransformCatalog(((Component)this).transform.root, (RigType)1, ""), ((Component)((Component)this).transform.root).GetComponent<Unit>().Team, false);
							obj.transform.parent = ((Component)msh).transform;
							obj.transform.position = ((Component)msh).transform.localPosition - ((Component)msh).transform.right * -0.25f;
							obj.transform.localRotation = Quaternion.Euler(0f, 0f, 180f);
							obj.transform.rotation = ((Component)msh).transform.rotation;
						}
					}
					if ((int)((Component)((Component)this).transform.root).GetComponent<Unit>().Team == 0)
					{
						punch.GetComponentInChildren<Renderer>().material = ((Component)((Component)this).transform.root).GetComponentInChildren<TeamColor>().redMaterial;
					}
					else
					{
						punch.GetComponentInChildren<Renderer>().material = ((Component)((Component)this).transform.root).GetComponentInChildren<TeamColor>().blueMaterial;
					}
				}
				punch.transform.position = ((Component)this).transform.position + ((Component)this).transform.forward;
				punch.transform.parent = ((Component)this).transform;
				punch.AddComponent<RemoveAfterSeconds>().seconds = 0.025f;
				if (IsStand)
				{
					punch.AddComponent<HitOnTrigger>().jotaro = ((Component)((Component)this).GetComponent<GoInfrontofUnitEnemy>().Jotaro).GetComponent<Jotaro>();
				}
				else
				{
					punch.AddComponent<HitOnTrigger>().IsStand = false;
					punch.GetComponent<HitOnTrigger>().unit = ((Component)((Component)this).transform.root).GetComponent<Unit>();
				}
				for (int x = 1; x < Gridx; x++)
				{
					for (int y = 1; y < Gridy; y++)
					{
						if (Stoppunchs || Random.Range(0, 5) == 0)
						{
							continue;
						}
						GameObject a = Object.Instantiate<GameObject>(punch, ((Component)this).transform);
						a.transform.localPosition = punch.transform.localPosition;
						Quaternion rot;
						if (IsStand)
						{
							rot = Quaternion.Euler(((Component)this).transform.forward);
						}
						else
						{
							Vector3 vector3 = ((Component)((Component)((Component)this).transform.root).GetComponent<Unit>().data.mainRig).transform.right;
							rot = Quaternion.Euler(vector3);
						}
						if (IsStand)
						{
							Transform transform = a.transform;
							transform.localPosition -= rot * Vector3.forward * -2.5f + Vector3.one * 2.5f * Random.Range(0f, 120f) / 80f;
						}
						else
						{
							Transform transform2 = a.transform;
							transform2.localPosition -= rot * Vector3.forward * -2.5f + Vector3.one * 2f * Random.Range(0f, 80f) / 100f;
						}
						if (IsStand)
						{
							if (x <= 0)
							{
								Transform transform3 = a.transform;
								transform3.localPosition -= rot * Vector3.right * ((float)x - 2.5f) * (Random.Range(30f, 120f) / 60f);
							}
							if (x >= 0)
							{
								Transform transform4 = a.transform;
								transform4.localPosition += rot * Vector3.right * ((float)x - 2.5f) * (Random.Range(30f, 120f) / 60f);
							}
							if (y <= 0)
							{
								Transform transform5 = a.transform;
								transform5.localPosition -= rot * Vector3.up * ((float)y - 2.5f) * (Random.Range(30f, 120f) / 60f);
							}
							if (y >= 0)
							{
								Transform transform6 = a.transform;
								transform6.localPosition += rot * Vector3.up * ((float)y - 2.5f) * (Random.Range(30f, 120f) / 40f);
							}
							allhands.Add(a);
						}
						else
						{
							if (x <= 0)
							{
								Transform transform7 = a.transform;
								transform7.localPosition -= rot * Vector3.right * ((float)x - Spacing) * (Random.Range(30f, 120f) / 60f);
							}
							if (x >= 0)
							{
								Transform transform8 = a.transform;
								transform8.localPosition += rot * Vector3.right * ((float)x - Spacing) * (Random.Range(30f, 120f) / 80f);
							}
							if (y <= 0)
							{
								Transform transform9 = a.transform;
								transform9.localPosition -= rot * Vector3.up * ((float)y - 2.5f) * (Random.Range(30f, 120f) / 80f);
							}
							if (y >= 0)
							{
								Transform transform10 = a.transform;
								transform10.localPosition += rot * Vector3.up * ((float)y - 2.5f) * (Random.Range(30f, 120f) / 80f);
							}
							allhands.Add(a);
						}
					}
				}
				if (IsStand)
				{
					punch.transform.rotation = Quaternion.Euler(((Component)this).transform.forward);
				}
				else
				{
					Vector3 vector4 = ((Component)((Component)((Component)this).transform.root).GetComponent<Unit>().data.mainRig).transform.right;
					Quaternion rot2 = Quaternion.Euler(vector4);
					punch.transform.rotation = rot2;
				}
				foreach (GameObject g in allhands)
				{
					Quaternion rotation2 = punch.transform.rotation;
					Vector3 rotation = -((Quaternion)(ref rotation2)).eulerAngles;
					rotation.z += 180f;
					g.transform.localRotation = Quaternion.Euler(rotation);
				}
				Object.Destroy((Object)(object)punch);
				allhands.Clear();
			}
			yield return (object)new WaitForSeconds(0.025f);
			((MonoBehaviour)this).StartCoroutine(loop());
		}

		private void Awake()
		{
			((MonoBehaviour)this).StartCoroutine(weiredStart());
		}

		private IEnumerator weiredStart()
		{
			yield return (object)new WaitForEndOfFrame();
			yield return (object)new WaitForEndOfFrame();
			yield return (object)new WaitForEndOfFrame();
			((MonoBehaviour)this).StartCoroutine(loop());
		}

		private void PlaySound()
		{
			if (IsStand)
			{
				((Component)this).gameObject.AddComponent<AudioSource>().clip = Loader.clip2;
				((Component)this).gameObject.GetComponent<AudioSource>().playOnAwake = false;
				((Component)this).gameObject.GetComponent<AudioSource>().loop = true;
				((Component)this).gameObject.GetComponent<AudioSource>().volume = 0.6f;
				((Component)this).gameObject.GetComponent<AudioSource>().Play();
			}
		}

		private void StopSound()
		{
			try
			{
				Object.Destroy((Object)(object)((Component)this).gameObject.GetComponent<AudioClip>());
			}
			catch (SystemException)
			{
			}
		}

		private void FixedUpdate()
		{
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			if (IsStand)
			{
				if (Stoppunchs && isplayingsound)
				{
					StopSound();
					isplayingsound = false;
				}
				if (!Stoppunchs && !isplayingsound)
				{
					PlaySound();
					isplayingsound = true;
				}
			}
			if (!Object.op_Implicit((Object)(object)((Component)((Component)this).transform.root).GetComponent<Unit>()) || !Object.op_Implicit((Object)(object)((Component)((Component)this).transform.root).GetComponent<Unit>().data.targetData))
			{
				return;
			}
			if (Vector3.Distance(((Component)((Component)this).transform.root).GetComponent<Unit>().data.mainRig.position, ((Component)((Component)this).transform.root).GetComponent<Unit>().data.targetMainRig.position) > 6f)
			{
				if (!Stoppunchs)
				{
					Stoppunchs = true;
				}
			}
			else if (Stoppunchs)
			{
				Stoppunchs = false;
			}
		}
	}
	public class HitOnTrigger : MonoBehaviour
	{
		public Jotaro jotaro;

		public Unit unit;

		public bool IsStand = true;

		private SoundPlayer soundPlayer;

		private void Awake()
		{
			soundPlayer = ServiceLocator.GetService<SoundPlayer>();
		}

		public void OnCollisionEnter(Collision collision)
		{
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: 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_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: 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: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			if (IsStand)
			{
				try
				{
					Unit component = ((Component)collision.transform.root).GetComponent<Unit>();
					if (!((Object)(object)component == (Object)(object)((Component)jotaro).GetComponent<Unit>()))
					{
						if (!jotaro.IstimeStoped)
						{
							((Damagable)component.data.healthHandler).TakeDamage(8f, ((Component)component.data.mainRig).transform.forward * -0.5f, (Unit)null, (DamageType)2);
							soundPlayer.PlaySoundEffect("Legacy Hits/Boxer", 0.6f, ((Component)this).transform.position, (MaterialType)0, (Transform)null, 1f);
						}
						else
						{
							jotaro.DamageQue.Add(component);
						}
						component.data.mainRig.AddForce(((Component)component.data.mainRig).transform.forward * -130f, (ForceMode)1);
					}
					return;
				}
				catch (Exception)
				{
					return;
				}
			}
			if (Object.op_Implicit((Object)(object)((Component)collision.transform.root).GetComponent<Unit>()))
			{
				Unit component2 = ((Component)collision.transform.root).GetComponent<Unit>();
				if (!((Object)(object)component2 == (Object)(object)unit))
				{
					((Damagable)component2.data.healthHandler).TakeDamage(8f, ((Component)component2.data.mainRig).transform.forward * -0.5f, (Unit)null, (DamageType)2);
					component2.data.mainRig.AddForce(((Component)component2.data.mainRig).transform.forward * -130f, (ForceMode)1);
					soundPlayer.PlaySoundEffect("Legacy Hits/Boxer", 0.6f, ((Component)this).transform.position, (MaterialType)0, (Transform)null, 1f);
				}
			}
		}
	}
	public class StopStarPlatinuim : MonoBehaviour
	{
		private void Awake()
		{
			((MonoBehaviour)this).StartCoroutine(StopStarplat());
		}

		private IEnumerator StopStarplat()
		{
			yield return (object)new WaitForSeconds(3f);
			((Component)this).GetComponent<ContinuesPunchs>().Stoppunchs = true;
			AudioSource[] componentsInChildren = ((Component)this).GetComponentsInChildren<AudioSource>();
			foreach (AudioSource AS in componentsInChildren)
			{
				AS.volume /= 4f;
			}
			AudioSource a = ((Component)this).gameObject.AddComponent<AudioSource>();
			a.clip = Loader.clip3;
			a.playOnAwake = false;
			a.Play();
			yield return (object)new WaitForSeconds(Loader.clip3.length);
			Object.Destroy((Object)(object)GameObject.Find("LastOra"));
			Object.Destroy((Object)(object)((Component)this).gameObject);
		}
	}
	public class CopyPositionRelativeTo : MonoBehaviour
	{
		public Transform target;

		public Transform relativeTarget;

		public Transform relativeTo;

		private void Update()
		{
			//IL_0100: 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_0147: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			if (!((Component)((Component)this).transform.root).GetComponent<ContinuesPunchs>().Stoppunchs)
			{
				if (((Object)((Component)this).transform).name == "M_Arm_Left" || ((Object)((Component)this).transform).name == "M_Elbow_Left" || ((Object)((Component)this).transform).name == "M_Elbow_Right" || ((Object)((Component)this).transform).name == "M_Arm_Right")
				{
					((Component)this).transform.localScale = Vector3.zero;
				}
				return;
			}
			if (((Object)((Component)this).transform).name == "M_Arm_Left" || ((Object)((Component)this).transform).name == "M_Elbow_Left" || ((Object)((Component)this).transform).name == "M_Elbow_Right" || ((Object)((Component)this).transform).name == "M_Arm_Right")
			{
				((Component)this).transform.localScale = Vector3.one;
			}
			if (!((Object)(object)target == (Object)null) && !((Object)(object)relativeTarget == (Object)null) && !((Object)(object)relativeTo == (Object)null))
			{
				Vector3 val = relativeTarget.position - target.position;
				((Component)this).transform.position = relativeTo.position - val;
				((Component)this).transform.rotation = target.rotation;
			}
		}
	}
	[BepInPlugin("IntreastingUnits", "IntreastingUnits", "1.1.0")]
	internal class Loader : BaseUnityPlugin
	{
		public static AssetBundle Bundle;

		public static AssetBundle Bundle2;

		public static AssetBundle Bundle3;

		public static AssetBundle Bundle4;

		public static GameObject GooglyEye;

		public static GameObject NexusSpray;

		public static GameObject UnitImortal;

		public static GameObject LightingEffect;

		public static GameObject Sentry;

		public static GameObject Storm;

		public static GameObject SliceEffect;

		public static GameObject Tree;

		public static GameObject Flamethrower;

		public static GameObject CleaNBase;

		public static MyModItems modItems;

		public static GameObject NexusUnlock;

		public static GameObject Blood;

		public static GameObject InfiniteParticle;

		public static GameObject SignOftheVoid;

		public static GameObject JKHat;

		public static GameObject JKVest;

		public static GameObject SPPunch;

		public static GameObject HumanPunch;

		public static GameObject StarPlatinum;

		public static GameObject StormHeraldEffect;

		public static GameObject otulinecube;

		public static GameObject UnAttackableglobal;

		public static GameObject Unkillable;

		public static GameObject UnlockGary;

		public static GameObject UnlockJotaroKujo;

		public static GameObject UnlockDeforester;

		public static GameObject UnlockChestDude;

		public static GameObject ChestProjectilleExplosion;

		public static GameObject GaryBase;

		public static ISaveLoaderService service;

		public static Sprite garyicon;

		public static Sprite flamethrowericon;

		public static Sprite Stiormicon;

		public static Sprite TreeGuyicon;

		public static Sprite ChestGuyicon;

		public static Sprite GiantChestGuyIcon;

		public static Sprite JotaroKujoIcon;

		public static Material GARYmat;

		public static VoiceBundle Jotarosounds;

		public static VoiceBundle Garysounds;

		public static AudioClip clip2;

		public static AudioClip clip3;

		public static AudioClip Garyclip1;

		public static AudioClip Garyclip2;

		public static AudioClip Garyclip3;

		public static AudioClip ProjectileExplo;

		public static MapAsset taigaMap;

		public static Quaternion offest = new Quaternion(1f, 0f, 0f, 7f);

		private void Awake()
		{
			((MonoBehaviour)this).StartCoroutine("call");
		}

		public static AssetBundle LoadBundle(string assetBundleName)
		{
			string[] manifestResourceNames = Assembly.GetExecutingAssembly().GetManifestResourceNames();
			foreach (string text in manifestResourceNames)
			{
				Debug.Log((object)text);
			}
			using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(assetBundleName);
			AssetBundle val = AssetBundle.LoadFromStream(stream);
			string[] allAssetNames = val.GetAllAssetNames();
			foreach (string text2 in allAssetNames)
			{
			}
			return val;
		}

		private IEnumerator call()
		{
			yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)Object.FindObjectOfType<ServiceLocator>() != (Object)null));
			yield return (object)new WaitUntil((Func<bool>)(() => ServiceLocator.GetService<ISaveLoaderService>() != null));
			yield return (object)new WaitForSecondsRealtime(0.3f);
			GameObject[] array2 = Resources.FindObjectsOfTypeAll<GameObject>();
			foreach (GameObject g in array2)
			{
				if (((Object)g.gameObject).name == "GooglyEye")
				{
					GooglyEye = g.gameObject;
				}
				if (((Object)g.gameObject).name == "E_Storm_Thor")
				{
					Storm = g.gameObject;
				}
				if (((Object)g.gameObject).name == "Snake_1 Prefabs_VB")
				{
					g.AddComponent<RiderHolder>();
				}
			}
			Bundle = LoadBundle("I_U.sds.s");
			Bundle2 = LoadBundle("I_U.tree");
			Bundle3 = LoadBundle("I_U.taiga");
			taigaMap = Bundle2.LoadAsset<MapAsset>("Assets/TAIGA/Taiga.asset");
			taigaMap.MapName = Bundle3.GetAllScenePaths()[0];
			JKHat = Bundle2.LoadAsset<GameObject>("Assets/CP_MiscJKHAT.prefab");
			JKVest = Bundle2.LoadAsset<GameObject>("Assets/Jotaro Kujo Vest.prefab");
			NexusUnlock = Bundle2.LoadAsset<GameObject>("Assets/NexusUnlock.prefab");
			UnitImortal = Bundle2.LoadAsset<GameObject>("Assets/GARY.prefab");
			InfiniteParticle = Bundle2.LoadAsset<GameObject>("Assets/InfiniteParticle.prefab");
			SignOftheVoid = Bundle2.LoadAsset<GameObject>("Assets/InfiniteParticle.prefab");
			garyicon = Bundle2.LoadAsset<Sprite>("Assets/GARYicon.png");
			flamethrowericon = Bundle2.LoadAsset<Sprite>("Assets/Flame Thrower.png");
			Stiormicon = Bundle2.LoadAsset<Sprite>("Assets/Storm Herald.png");
			TreeGuyicon = Bundle2.LoadAsset<Sprite>("Assets/tree.png");
			ChestGuyicon = Bundle2.LoadAsset<Sprite>("Assets/chest guy.png");
			GiantChestGuyIcon = Bundle2.LoadAsset<Sprite>("Assets/GiantChestDude.png");
			JotaroKujoIcon = Bundle2.LoadAsset<Sprite>("Assets/Jotaro Kujo Unit.png");
			GARYmat = Bundle2.LoadAsset<Material>("Assets/Void.mat");
			SPPunch = Bundle2.LoadAsset<GameObject>("Assets/Glove SPfbx.prefab");
			HumanPunch = Bundle2.LoadAsset<GameObject>("Assets/Hand.prefab");
			StarPlatinum = Bundle2.LoadAsset<GameObject>("Assets/Star Platinum.prefab");
			UnlockChestDude = Bundle2.LoadAsset<GameObject>("Assets/Chest Dude Unlock.prefab");
			UnlockDeforester = Bundle2.LoadAsset<GameObject>("Assets/Deforster Unlock.prefab");
			UnlockJotaroKujo = Bundle2.LoadAsset<GameObject>("Assets/Jotaro Unlock 4.prefab");
			UnlockGary = Bundle2.LoadAsset<GameObject>("Assets/GaryUnlock.prefab");
			StormHeraldEffect = Bundle2.LoadAsset<GameObject>("Assets/Storm herald Effects.prefab");
			clip2 = Bundle2.LoadAsset<AudioClip>("Assets/oraora.mp3");
			clip3 = Bundle2.LoadAsset<AudioClip>("Assets/finalora.mp3");
			Garyclip1 = Bundle2.LoadAsset<AudioClip>("Assets/GarySound1.mp3");
			ProjectileExplo = Bundle2.LoadAsset<AudioClip>("Assets/GoldCoin.mp3");
			otulinecube = Bundle2.LoadAsset<GameObject>("Assets/Outlined.prefab");
			ChestProjectilleExplosion = Bundle2.LoadAsset<GameObject>("Assets/Projectile Explosion.prefab");
			Garyclip2 = Bundle2.LoadAsset<AudioClip>("Assets/GarySound2.mp3");
			Garyclip3 = Bundle2.LoadAsset<AudioClip>("Assets/GarySound3.mp3");
			SliceEffect = Bundle2.LoadAsset<GameObject>("Assets/E_Slice.prefab");
			Blood = Bundle2.LoadAsset<GameObject>("Assets/Blood.prefab");
			LightingEffect = Bundle2.LoadAsset<GameObject>("Assets/ShockEffect.prefab");
			GaryBase = Bundle2.LoadAsset<GameObject>("Assets/GARY.prefab");
			Sentry = Bundle2.LoadAsset<GameObject>("Assets/FixedSentry.prefab");
			GameObject b = Bundle2.LoadAsset<GameObject>("Assets/ChestGuy.prefab");
			b.AddComponent<GOSLMA>();
			UPool.MyPool.AddObject("Chest Dude", b, false, (HideFlags)61, (Sprite)null, -94188721, true);
			GameObject c = Bundle2.LoadAsset<GameObject>("Assets/GiantChestGuy.prefab");
			c.AddComponent<GOSLMA>();
			UPool.MyPool.AddObject("Giant Chest Dude", c, false, (HideFlags)61, (Sprite)null, -94188720, true);
			SLMALoader.GetInstance();
			LandfallContentDatabase landfallContentDatabase = ContentDatabase.Instance().LandfallContentDatabase;
			UManager.Init(landfallContentDatabase);
			modItems = MyModItems.GetInstance();
			setupsettings();
			GameObject SecretUnlockSpawner = new GameObject("SecretUnlockSpawner");
			Object.DontDestroyOnLoad((Object)(object)SecretUnlockSpawner);
			SecretUnlockSpawner.AddComponent<SecretUnlockSpawnerComp>();
			new Harmony(UManager.modname).PatchAll();
			GOSLMA.EditWeapons = ((GOSLMA.EditWeapons == null) ? new Action<GameObject, Team, Unit, MeleeWeapon, RangeWeapon, LandfallContentDatabase>(UManager.EditWeapons) : ((Action<GameObject, Team, Unit, MeleeWeapon, RangeWeapon, LandfallContentDatabase>)Delegate.Combine(new Action<GameObject, Team, Unit, MeleeWeapon, RangeWeapon, LandfallContentDatabase>(UManager.EditWeapons), GOSLMA.EditWeapons)));
			GOSLMA.EditClothes = ((GOSLMA.EditClothes == null) ? new Action<GameObject, CharacterItem, PropItemData, Unit, int, LandfallContentDatabase>(UManager.EditClothes) : ((Action<GameObject, CharacterItem, PropItemData, Unit, int, LandfallContentDatabase>)Delegate.Combine(new Action<GameObject, CharacterItem, PropItemData, Unit, int, LandfallContentDatabase>(UManager.EditClothes), GOSLMA.EditClothes)));
			GOSLMA.EditCombatMoves = ((GOSLMA.EditCombatMoves == null) ? new Action<GameObject, int, Unit, LandfallContentDatabase>(UManager.EditCombatMoves) : ((Action<GameObject, int, Unit, LandfallContentDatabase>)Delegate.Combine(new Action<GameObject, int, Unit, LandfallContentDatabase>(UManager.EditCombatMoves), GOSLMA.EditCombatMoves)));
			GOSLMA.CodeAfterSpawn = ((GOSLMA.CodeAfterSpawn == null) ? new Action<Unit, LandfallContentDatabase>(UManager.CodeAfterSpawn) : ((Action<Unit, LandfallContentDatabase>)Delegate.Combine(new Action<Unit, LandfallContentDatabase>(UManager.CodeAfterSpawn), GOSLMA.CodeAfterSpawn)));
			GOSLMA.EditProjectiles = ((GOSLMA.EditProjectiles == null) ? new Action<GameObject, ProjectileHit, Unit, LandfallContentDatabase>(UManager.EditProjectiles) : ((Action<GameObject, ProjectileHit, Unit, LandfallContentDatabase>)Delegate.Combine(new Action<GameObject, ProjectileHit, Unit, LandfallContentDatabase>(UManager.EditProjectiles), GOSLMA.EditProjectiles)));
			UnitBlueprint[] array = Resources.FindObjectsOfTypeAll<UnitBlueprint>();
			for (int i2 = 0; i2 < array.Length; i2++)
			{
				UManager.EditBlueprint(array[i2], landfallContentDatabase);
			}
			Dictionary<int, UnitBlueprint> fac = new Dictionary<int, UnitBlueprint>();
			int i = 1;
			foreach (UnitBlueprint u in UManager.ls)
			{
				try
				{
					UnitBlueprint obj = fac[(int)u.GetUnitCost(true)];
					obj.sizeMultiplier *= 1f;
					fac.Add((int)u.GetUnitCost(true) + i, u);
					i++;
				}
				catch (Exception)
				{
					fac.Add((int)u.GetUnitCost(true), u);
				}
			}
			MakeAbShowinUCAsProp(JKHat, ContentDatabase.Instance().LandfallContentDatabase);
			MakeAbShowinUCAsProp(JKVest, ContentDatabase.Instance().LandfallContentDatabase);
			MakeAbShowinUCAsProp(Bundle2.LoadAsset<GameObject>("Assets/FullArms.prefab"), ContentDatabase.Instance().LandfallContentDatabase);
			IOrderedEnumerable<KeyValuePair<int, UnitBlueprint>> sortedDict = fac.OrderBy(delegate(KeyValuePair<int, UnitBlueprint> entry)
			{
				KeyValuePair<int, UnitBlueprint> keyValuePair = entry;
				return keyValuePair.Key;
			});
			List<UnitBlueprint> units = new List<UnitBlueprint>();
			foreach (KeyValuePair<int, UnitBlueprint> item in sortedDict)
			{
				units.Add(item.Value);
			}
			((Faction)SLMALoader.SDic["factions"]["Secret"]).Units = units.ToArray();
			Debug.Log((object)("Loaded " + UManager.modname + " Successfully"));
			Debug.Log((object)(UManager.modname + "is made in SFT by FhpSlime"));
			Debug.Log((object)(UManager.modder + "wished you a pleasant trip"));
		}

		public static void SetupAbs()
		{
		}

		public static void setupsettings()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Expected O, but got Unknown
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Expected O, but got Unknown
			//IL_0169: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Expected O, but got Unknown
			//IL_0172: 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_01ac: 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_01ee: 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_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_0209: Unknown result type (might be due to invalid IL or missing references)
			//IL_0226: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Expected O, but got Unknown
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a3: Expected O, but got Unknown
			//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c9: Expected O, but got Unknown
			//IL_02eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f2: Expected O, but got Unknown
			//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_032c: Unknown result type (might be due to invalid IL or missing references)
			//IL_032e: Unknown result type (might be due to invalid IL or missing references)
			//IL_034a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_0386: Unknown result type (might be due to invalid IL or missing references)
			//IL_038b: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03af: Expected O, but got Unknown
			//IL_03b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0415: Unknown result type (might be due to invalid IL or missing references)
			//IL_041f: Expected O, but got Unknown
			//IL_043e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0445: Expected O, but got Unknown
			GlobalSettingsHandler obj = ServiceLocator.GetService<GlobalSettingsHandler>();
			SettingsInstance val = new SettingsInstance();
			val.settingsType = (SettingsType)0;
			val.settingName = "Matches Dont End";
			val.m_settingsKey = "Matches Dont End";
			val.toolTip = "";
			val.m_hideSetting = false;
			val.options = new string[2] { "Disabled", "Enabled" };
			SettingsInstance[] source = (SettingsInstance[])typeof(GlobalSettingsHandler).GetField("m_bugsSettings", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(obj);
			List<SettingsInstance> list = source.ToList();
			list.Add(val);
			typeof(GlobalSettingsHandler).GetField("m_bugsSettings", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(obj, list.ToArray());
			Dictionary<string, SettingsInstance> dictionary = (Dictionary<string, SettingsInstance>)typeof(GlobalSettingsHandler).GetField("m_settingsDict", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(obj);
			dictionary.Add(val.m_settingsKey, val);
			typeof(GlobalSettingsHandler).GetField("m_settingsDict", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(obj, dictionary);
			SoundPlayer val2 = ServiceLocator.GetService<SoundPlayer>();
			SoundBank soundBank = val2.soundBank;
			SoundBankCategory[] categories = soundBank.Categories;
			SoundBankCategory val3 = new SoundBankCategory();
			val3.categoryName = "Intreasting Units";
			val3.maxDistanceMultiplier = 1f;
			val3.minDistanceMultiplier = 1f;
			val3.volumeMultiplier = 0.4f;
			val3.pitchMultiplier = 1f;
			val3.categoryMixerGroup = categories[1].categoryMixerGroup;
			SoundEffectInstance val4 = new SoundEffectInstance();
			SoundBackSettings category = default(SoundBackSettings);
			category.maxDistanceMultiplier = 1f;
			category.minDistanceMultiplier = 1f;
			category.volumeMultiplier = 1f;
			category.pitchMultiplier = 1f;
			val4.category = category;
			val4.cooldown = 0.2f;
			val4.lengthInMeasures = 0;
			val4.maxInstanceBehaviour = (MaxInstanceBehaviour)0;
			val4.maxInstances = 10;
			val4.minDistance = 1f;
			val4.pitch = new Vector2(1f, 1f);
			val4.volume = new Vector2(1f, 1f);
			val4.priority = 128;
			val4.soundRef = "Jotaro Kujo";
			SoundEffectVariations val5 = new SoundEffectVariations();
			val5.materialType = (MaterialType)1;
			val5.clips = (AudioClip[])(object)new AudioClip[1] { Bundle2.LoadAsset<AudioClip>("Assets/JKS1.mp3") };
			val4.clipTypes = (SoundEffectVariations[])(object)new SoundEffectVariations[1] { val5 };
			val3.soundEffects = (SoundEffectInstance[])(object)new SoundEffectInstance[1] { val4 };
			List<SoundBankCategory> list2 = categories.ToList();
			list2.Add(val3);
			soundBank.Categories = list2.ToArray();
			Jotarosounds = new VoiceBundle();
			Jotarosounds.DeathRef = "";
			Jotarosounds.VocalRef = "Intreasting Units/Jotaro Kujo";
			DatabaseEntity val6 = new DatabaseEntity((WorkshopContentType)5);
			val6.GenerateNewID();
			val6.Name = "Jotaro Sound";
			Jotarosounds.Entity = val6;
			SoundEffectInstance val7 = new SoundEffectInstance();
			SoundBackSettings category2 = default(SoundBackSettings);
			category2.maxDistanceMultiplier = 1f;
			category2.minDistanceMultiplier = 1f;
			category2.volumeMultiplier = 0.3f;
			category2.pitchMultiplier = 1f;
			val7.category = category2;
			val7.cooldown = 0.2f;
			val7.lengthInMeasures = 0;
			val7.maxInstanceBehaviour = (MaxInstanceBehaviour)0;
			val7.maxInstances = 10;
			val7.minDistance = 1f;
			val7.pitch = new Vector2(1f, 1f);
			val7.volume = new Vector2(1f, 1f);
			val7.priority = 128;
			val7.soundRef = "Gary";
			SoundEffectVariations val8 = new SoundEffectVariations();
			val8.materialType = (MaterialType)1;
			val8.clips = (AudioClip[])(object)new AudioClip[2] { Garyclip1, Garyclip2 };
			val7.clipTypes = (SoundEffectVariations[])(object)new SoundEffectVariations[1] { val8 };
			val3.soundEffects = (SoundEffectInstance[])(object)new SoundEffectInstance[2] { val4, val7 };
			list2.Add(val3);
			soundBank.Categories = list2.ToArray();
			Garysounds = new VoiceBundle();
			Garysounds.DeathRef = "";
			Garysounds.VocalRef = "Intreasting Units/Gary";
			DatabaseEntity val9 = new DatabaseEntity((WorkshopContentType)5);
			val9.GenerateNewID();
			val9.Name = "Gary Sound";
			Garysounds.Entity = val9;
			SetupAbs();
		}

		public static GameObject CreateNewAb(GearType gt, string name, DatabaseID id)
		{
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: 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_00ab: 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)
			GameObject val;
			try
			{
				val = Object.Instantiate<GameObject>(Bundle.LoadAsset<GameObject>(name));
			}
			catch
			{
				val = Object.Instantiate<GameObject>(Bundle2.LoadAsset<GameObject>(name));
			}
			Object.Destroy((Object)(object)val.GetComponent<BoxCollider>());
			Object.Destroy((Object)(object)val.GetComponent<MeshFilter>());
			((Object)val).hideFlags = (HideFlags)61;
			((Object)val).name = name;
			CharacterItem component = val.GetComponent<CharacterItem>();
			typeof(CharacterItem).GetField("m_gearType", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(component, gt);
			component.Entity.Name = name;
			component.Entity.GUID = id;
			component.tags = new List<Tag>
			{
				new Tag
				{
					tagType = (TagType)0,
					value = "Interesting Units"
				}
			};
			return val;
		}

		public static void MakeAbShowinUCAsAbb(GameObject move, LandfallContentDatabase landfallContentDatabase)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			Dictionary<DatabaseID, GameObject> dictionary = (Dictionary<DatabaseID, GameObject>)typeof(LandfallContentDatabase).GetField("m_combatMoves", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(landfallContentDatabase);
			dictionary.Add(move.GetComponent<CharacterItem>().Entity.GUID, move);
			typeof(LandfallContentDatabase).GetField("m_combatMoves", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(landfallContentDatabase, dictionary);
		}

		public static void MakeAbShowinUCAsProp(GameObject prop, LandfallContentDatabase landfallContentDatabase)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			Dictionary<DatabaseID, GameObject> dictionary = (Dictionary<DatabaseID, GameObject>)typeof(LandfallContentDatabase).GetField("m_characterProps", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(landfallContentDatabase);
			dictionary.Add(prop.GetComponent<CharacterItem>().Entity.GUID, prop);
			typeof(LandfallContentDatabase).GetField("m_characterProps", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(landfallContentDatabase, dictionary);
		}

		public static void MakeAbShowinUCAsWeapon(GameObject prop, LandfallContentDatabase landfallContentDatabase)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			Dictionary<DatabaseID, GameObject> dictionary = (Dictionary<DatabaseID, GameObject>)typeof(LandfallContentDatabase).GetField("m_weapons", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(landfallContentDatabase);
			dictionary.Add(prop.GetComponent<CharacterItem>().Entity.GUID, prop);
			typeof(LandfallContentDatabase).GetField("m_weapons", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(landfallContentDatabase, dictionary);
		}

		public static void MakeAbShowinUCAsWCopyWeapon(GameObject prop, string name, int ID, int modid, LandfallContentDatabase landfallContentDatabase)
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			//IL_0070: 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)
			Object.Destroy((Object)(object)prop.GetComponent<WeaponItem>());
			WeaponItem val = prop.AddComponent<WeaponItem>();
			typeof(CharacterItem).GetField("m_entity", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(val, (object?)new DatabaseEntity((WorkshopContentType)5));
			typeof(CharacterItem).GetField("m_gearType", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(val, (object)(GearType)10);
			((CharacterItem)val).Entity.Name = name;
			((CharacterItem)val).Entity.GUID = new DatabaseID(ID, modid);
			Dictionary<DatabaseID, GameObject> dictionary = (Dictionary<DatabaseID, GameObject>)typeof(LandfallContentDatabase).GetField("m_weapons", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(landfallContentDatabase);
			dictionary.Add(prop.GetComponent<CharacterItem>().Entity.GUID, prop);
			typeof(LandfallContentDatabase).GetField("m_weapons", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(landfallContentDatabase, dictionary);
		}

		public void Update()
		{
			if (Input.GetKeyDown((KeyCode)284))
			{
				Bundle2.Unload(true);
				Bundle3.Unload(true);
				Bundle2 = AssetBundle.LoadFromFile(Path.Combine("D:\\Yahoi\\Assets\\AssetBundler", "tree"));
				Bundle3 = AssetBundle.LoadFromFile(Path.Combine("D:\\Yahoi\\Assets\\AssetBundler", "taiga"));
				taigaMap = Bundle2.LoadAsset<MapAsset>("Assets/TAIGA/Taiga.asset");
				taigaMap.MapName = Bundle3.GetAllScenePaths()[0];
			}
			if (Input.GetKeyDown((KeyCode)285))
			{
				TABSSceneManager.LoadMainMenu(true);
			}
		}
	}
	public class MakeGaryRemovableByCursor : MonoBehaviour
	{
		public GameObject Gary;

		public Unit unit;

		public PlacementCursor PC;

		private void Awake()
		{
			Gary = ((Component)this).gameObject;
			PC = GameObject.Find("Cursor").GetComponent<PlacementCursor>();
		}

		private void Update()
		{
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			if (Input.GetMouseButtonDown(1) && typeof(PlacementCursor).GetField("m_hoveredGameObject", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(PC) != null && typeof(PlacementCursor).GetField("m_hoveredGameObject", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(PC) == Gary)
			{
				World.Active.GetOrCreateManager<TeamSystem>().RemoveEntity(((Component)unit).GetComponent<GameObjectEntity>().Entity, unit.Team, unit);
				ServiceLocator.GetService<GameModeService>().CurrentGameMode.OnUnitRemoved(unit, unit.Team);
			}
		}
	}
	[HarmonyPatch(typeof(HealthHandler), "Die", new Type[] { typeof(Unit) })]
	public class MakeUnitNoDie1
	{
		private static bool Prefix(HealthHandler __instance, Unit damager, ref bool __result)
		{
			if (Object.op_Implicit((Object)(object)((Component)((Component)__instance).transform.root).gameObject.GetComponentInChildren<Immortality>()))
			{
				__result = true;
				return false;
			}
			__result = true;
			return true;
		}
	}
	[HarmonyPatch(typeof(GameObject), "SetActive", new Type[] { typeof(bool) })]
	internal class DontSetActiveNo
	{
		private static bool Prefix(GameObject __instance)
		{
			if (Object.op_Implicit((Object)(object)((Component)__instance.transform.root).GetComponentInChildren<Immortality>()))
			{
				return false;
			}
			return true;
		}
	}
	[HarmonyPatch(typeof(VerticalCurtainController), "PeekCurtains", new Type[] { })]
	public static class DontDie
	{
		public static string GetRandomEnd()
		{
			string[] array = new string[30]
			{
				"bananas", "ez", "ts <#ff0000>aint<#ffffff> tuff\ud83d\udc94", "skibdi", "ohio \ud83e\udd23", "erm, what the <#ff0000>sigma", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "<#00bbbb>altercreature", "CASA", "sigma",
				"je n'aime pas ce", "fdgjoiseddfoijzefjoi", "daàodikaàçrier", "rectangle", "square", "shoutout to justmeleetabs", "shoutout to zayed gamer", "shoutout to mohammed rx", "oilsnatcher, more like: not sigma", "<#000000>gary<#ffffff> was actually named shmuh popo when he was born 5 years ago until he legaly changed his name to <#000000>gary<#ffffff>, also <#000000>gary<#ffffff> was born 4 years ago",
				"Not Close", "<#000000>random <#ffffff>text", "me when i have to type random text for 10 minutes", "sigma, no i already said that", "unban from TME pls", "<#ff0000>p<#00ff00>o<#0000ff>t<#ffff00>a<#ff00ff>t<#00ffff>o<#ff0000>e<#00ff00>s", "return strings[UnityEngine.Random.Range(0, strings.Length)];", "<#ff0000> Red Colored Text", "<#0000ff> Blue Colored Text", "<#00ff00> Green Colored Text"
			};
			return array[Random.Range(0, array.Length)];
		}

		private static bool Prefix(VerticalCurtainController __instance)
		{
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Expected O, but got Unknown
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Invalid comparison between Unknown and I4
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Invalid comparison between Unknown and I4
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Expected O, but got Unknown
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Expected O, but got Unknown
			int currentValue = ServiceLocator.GetService<GlobalSettingsHandler>().GetSettingsInstance("Matches Dont End").currentValue;
			if (currentValue == 1)
			{
				GameObject val = new GameObject();
				val.AddComponent<StartTimeScaleForTime>();
				return false;
			}
			object value = typeof(VerticalCurtainController).GetField("m_topText", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(__instance);
			object value2 = typeof(VerticalCurtainController).GetField("m_topSubText", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(__instance);
			LocalizeText val2 = (LocalizeText)value;
			TMP_Text val3 = (TMP_Text)value2;
			Gaurdian_Angel[] array = Object.FindObjectsOfType<Gaurdian_Angel>();
			foreach (Gaurdian_Angel gaurdian_Angel in array)
			{
				if (val2.LocaleID == "LABEL_RED_VICTORY")
				{
					if ((int)gaurdian_Angel.TargetTeam == 1)
					{
						if ((Object)(object)Object.FindObjectOfType<StartTimeScaleForTime>() == (Object)null)
						{
							GameObject val4 = new GameObject();
							val4.AddComponent<StartTimeScaleForTime>();
						}
						return false;
					}
					gaurdian_Angel.Stop();
				}
				if (!(val2.LocaleID == "LABEL_BLUE_VICTORY"))
				{
					continue;
				}
				if ((int)gaurdian_Angel.TargetTeam == 0)
				{
					if ((Object)(object)Object.FindObjectOfType<StartTimeScaleForTime>() == (Object)null)
					{
						GameObject val5 = new GameObject();
						val5.AddComponent<StartTimeScaleForTime>();
					}
					return false;
				}
				gaurdian_Angel.Stop();
			}
			return true;
		}
	}
	public class MyModItems : MonoBehaviour
	{
		public static Dictionary<string, Item> items = new Dictionary<string, Item>();

		private static MyModItems instance { get; set; }

		public static MyModItems GetInstance()
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)instance == (Object)null)
			{
				instance = new GameObject("MyModItems").AddComponent<MyModItems>();
				Object.DontDestroyOnLoad((Object)(object)instance);
			}
			return instance;
		}

		public void AddItem(Item item)
		{
			items.Add(item.name, item);
		}

		public Item GetItem(string name, Item.kind k)
		{
			Item value = new Item
			{
				name = name,
				Kind = k
			};
			items.TryGetValue(name, out value);
			return value;
		}

		public void SetupAllItems()
		{
			int num = 0;
			foreach (Item value in items.Values)
			{
				if (value.Kind == Item.kind.Skill)
				{
				}
				num++;
			}
		}
	}
	public class OnEquipWorky : MonoBehaviour
	{
		public LandfallContentDatabase landfallContentDatabase;

		private void Awake()
		{
			LandfallContentDatabase val = ContentDatabase.Instance().LandfallContentDatabase;
			if (Object.op_Implicit((Object)(object)((Component)((Component)this).transform.root).GetComponent<Unit>()) && val != null)
			{
				GameObject[] array = val.GetCombatMoves().ToArray();
				Object.Instantiate<GameObject>(array[Random.Range(0, array.Length)], ((Component)this).transform.root);
			}
		}
	}
	public class OffsetTransform : MonoBehaviour
	{
		public Transform target;

		public Vector3 offset;

		private void Awake()
		{
			if (Object.op_Implicit((Object)(object)((Component)((Component)this).transform.root).GetComponent<Unit>()))
			{
				target = ((Component)((Component)((Component)this).transform.root).GetComponent<Unit>().data.mainRig).transform;
			}
		}

		public void Update()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).transform.position = target.position + offset;
		}
	}
	public class SealingCube : MonoBehaviour
	{
		private bool IsFlying = false;

		private GameObject collisionGameObj;

		private int i = 0;

		private void OnCollisionEnter(Collision collision)
		{
			//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)
			if (!IsFlying && (Object)(object)collision.gameObject.transform.root != (Object)null && Object.op_Implicit((Object)(object)((Component)collision.gameObject.transform.root).GetComponent<Unit>()))
			{
				((Component)collision.gameObject.transform.root).GetComponent<Unit>().FreezeBody();
				collisionGameObj = ((Component)collision.gameObject.transform.root).gameObject;
				Object.Destroy((Object)(object)((Component)this).GetComponent<Rotate>());
				Object.Destroy((Object)(object)((Component)this).GetComponentInChildren<BoxCollider>());
				Object.Destroy((Object)(object)((Component)this).GetComponent<SlowProjectile>());
				if (Object.op_Implicit((Object)(object)collisionGameObj.GetComponentInChildren<GravityHandler>()))
				{
					Object.Destroy((Object)(object)collisionGameObj.GetComponentInChildren<GravityHandler>());
				}
				collisionGameObj.GetComponent<UnitAPI>().SetIsDead();
				collisionGameObj.AddComponent<StopAttacks>().StopAttacksFor(float.PositiveInfinity);
				if (Object.op_Implicit((Object)(object)((Component)((Component)this).transform.parent).GetComponent<SpawnObject>()))
				{
					((Component)((Component)this).transform.parent).GetComponent<SpawnObject>().Spawn(((Component)this).transform.parent.position, Vector3.one);
				}
				IsFlying = true;
			}
		}

		private void Update()
		{
			//IL_001f: 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_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			if (IsFlying)
			{
				Transform transform = collisionGameObj.transform;
				transform.position += new Vector3(0f, 32f * Time.deltaTime, 0f);
				((Component)this).transform.position = collisionGameObj.GetComponent<Unit>().data.mainRig.position;
				i++;
				if (i == 200)
				{
					Help.Kill(collisionGameObj.GetComponent<Unit>());
				}
			}
		}
	}
	public class SecretUnlockSpawnerComp : GameStateListener
	{
		public override void OnEnterNewScene()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: 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_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: 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_00d1: 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_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0205: Expected O, but got Unknown
			//IL_0223: Unknown result type (might be due to invalid IL or missing references)
			Scene activeScene = SceneManager.GetActiveScene();
			if (((Scene)(ref activeScene)).name == "02_Lvl2_Farmer_VC")
			{
				GameObject val = Object.Instantiate<GameObject>(Loader.UnlockDeforester);
				val.transform.position = new Vector3(-11f, 1.8f, 23f);
				Transform transform = val.transform;
				transform.localScale *= 0.5f;
			}
			activeScene = SceneManager.GetActiveScene();
			if (((Scene)(ref activeScene)).name == "03_Lvl2_Ancient_VC")
			{
				GameObject val2 = Object.Instantiate<GameObject>(Loader.UnlockChestDude);
				val2.transform.position = new Vector3(5.05f, 13.95f, 27.95f);
				Transform transform2 = val2.transform;
				transform2.localScale /= 4f;
			}
			activeScene = SceneManager.GetActiveScene();
			if (((Scene)(ref activeScene)).name == "05_Sandbox_Medieval_VC")
			{
				GameObject val3 = Object.Instantiate<GameObject>(Loader.UnlockJotaroKujo);
				val3.transform.position = new Vector3(33.4197f, 62.4325f, 137.4187f);
				val3.transform.localScale = new Vector3(6f, 6f, 6f);
				((Component)this).transform.localRotation = new Quaternion(0.4323f, -0.5602f, -0.5572f, -0.4346f);
			}
			activeScene = SceneManager.GetActiveScene();
			if (((Scene)(ref activeScene)).name == "00_Lvl2_Halloween_VC")
			{
				GameObject val4 = Object.Instantiate<GameObject>(Loader.UnlockGary);
				((Renderer)val4.GetComponentInChildren<ParticleSystemRenderer>()).material = GarySetups.Fastmat(Color.white);
				val4.transform.position = new Vector3(6.1375f, -2.05f, 30.4f);
			}
			activeScene = SceneManager.GetActiveScene();
			if (!(((Scene)(ref activeScene)).name == "01_Taiga_VC"))
			{
				return;
			}
			foreach (Transform item in ((Component)ServiceLocator.GetService<Load