Decompiled source of FindTheGaster v0.0.3

FindTheGaster.dll

Decompiled a week ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using HarmonyLib;
using RepoCaos;
using UltrakillStupid.Classes;
using UltrakillStupid.Scripts.Triggers;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("RepoCaosMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("ReviOS 11 24.12")]
[assembly: AssemblyProduct("RepoCaosMod")]
[assembly: AssemblyCopyright("Copyright © ReviOS 11 24.12 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b62091cf-1bc7-4d0e-be7b-011b6b98bf30")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace RepoCaos
{
	[BepInPlugin("duviz.ultrakill.findthegaster", "Find the gaster", "0.0.3")]
	public class Plugin : BaseUnityPlugin
	{
		[CompilerGenerated]
		private sealed class <GetTextureFromURL>d__10 : IEnumerator<object>, IDisposable, IEnumerator
		{
			private int <>1__state;

			private object <>2__current;

			public string url;

			public Action<Texture2D> callback;

			private UnityWebRequest <uwr>5__2;

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

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

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

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				int num = <>1__state;
				if (num == -3 || num == 1)
				{
					try
					{
					}
					finally
					{
						<>m__Finally1();
					}
				}
				<uwr>5__2 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: Invalid comparison between Unknown and I4
				try
				{
					switch (<>1__state)
					{
					default:
						return false;
					case 0:
						<>1__state = -1;
						<uwr>5__2 = UnityWebRequestTexture.GetTexture(url);
						<>1__state = -3;
						<>2__current = <uwr>5__2.SendWebRequest();
						<>1__state = 1;
						return true;
					case 1:
						<>1__state = -3;
						if ((int)<uwr>5__2.result != 1)
						{
							Debug.LogError((object)("Failed to load texture: " + <uwr>5__2.error));
							callback?.Invoke(null);
						}
						else
						{
							Texture2D content = DownloadHandlerTexture.GetContent(<uwr>5__2);
							callback?.Invoke(content);
						}
						<>m__Finally1();
						<uwr>5__2 = null;
						return false;
					}
				}
				catch
				{
					//try-fault
					((IDisposable)this).Dispose();
					throw;
				}
			}

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

			private void <>m__Finally1()
			{
				<>1__state = -1;
				if (<uwr>5__2 != null)
				{
					((IDisposable)<uwr>5__2).Dispose();
				}
			}

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

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

			private object <>2__current;

			public string url;

			private UnityWebRequest <www>5__2;

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

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

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

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				int num = <>1__state;
				if (num == -3 || num == 1)
				{
					try
					{
					}
					finally
					{
						<>m__Finally1();
					}
				}
				<www>5__2 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0061: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: Invalid comparison between Unknown and I4
				try
				{
					switch (<>1__state)
					{
					default:
						return false;
					case 0:
						<>1__state = -1;
						<www>5__2 = UnityWebRequestMultimedia.GetAudioClip(url, (AudioType)14);
						<>1__state = -3;
						<>2__current = <www>5__2.SendWebRequest();
						<>1__state = 1;
						return true;
					case 1:
						<>1__state = -3;
						if ((int)<www>5__2.result != 1)
						{
							Debug.LogError((object)("Failed to load audio: " + <www>5__2.error));
						}
						else
						{
							AudioClip content = DownloadHandlerAudioClip.GetContent(<www>5__2);
							popupSfx.clip = content;
						}
						<>m__Finally1();
						<www>5__2 = null;
						return false;
					}
				}
				catch
				{
					//try-fault
					((IDisposable)this).Dispose();
					throw;
				}
			}

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

			private void <>m__Finally1()
			{
				<>1__state = -1;
				if (<www>5__2 != null)
				{
					((IDisposable)<www>5__2).Dispose();
				}
			}

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

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

			private object <>2__current;

			public string url;

			public GameObject obj;

			private UnityWebRequest <uwr>5__2;

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

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

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

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				int num = <>1__state;
				if (num == -3 || num == 1)
				{
					try
					{
					}
					finally
					{
						<>m__Finally1();
					}
				}
				<uwr>5__2 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: Invalid comparison between Unknown and I4
				//IL_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_009f: Expected O, but got Unknown
				try
				{
					switch (<>1__state)
					{
					default:
						return false;
					case 0:
						<>1__state = -1;
						<uwr>5__2 = UnityWebRequestTexture.GetTexture(url);
						<>1__state = -3;
						<>2__current = <uwr>5__2.SendWebRequest();
						<>1__state = 1;
						return true;
					case 1:
						<>1__state = -3;
						if ((int)<uwr>5__2.result != 1)
						{
							Debug.LogError((object)("Failed to load texture: " + <uwr>5__2.error));
						}
						else
						{
							Texture2D content = DownloadHandlerTexture.GetContent(<uwr>5__2);
							Material val = new Material(Shader.Find("Unlit/Texture"));
							val.mainTexture = (Texture)(object)content;
							obj.GetComponent<Renderer>().material = val;
						}
						<>m__Finally1();
						<uwr>5__2 = null;
						return false;
					}
				}
				catch
				{
					//try-fault
					((IDisposable)this).Dispose();
					throw;
				}
			}

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

			private void <>m__Finally1()
			{
				<>1__state = -1;
				if (<uwr>5__2 != null)
				{
					((IDisposable)<uwr>5__2).Dispose();
				}
			}

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

		private List<Gaster> gasters = new List<Gaster>();

		private Texture popupTex;

		public static AudioSource popupSfx = null;

		private string[] customLevelMod = new string[1] { "com.eternalUnion.angryLevelLoader" };

		public static float gasterPopupX = 0f;

		public static int gasterPopupStage = 0;

		public static float gasterPopupAlpha = 1f;

		public string overrideText = "";

		public float gastersListX = Screen.width;

		public void Awake()
		{
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
			((Object)ThreadingHelper.Instance).hideFlags = (HideFlags)61;
			((ConfigEntry<bool>)AccessTools.Field(typeof(Chainloader), "ConfigHideBepInExGOs").GetValue(null)).Value = true;
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Hello, the Instagram community!");
			new Harmony("duviz.ultrakill.findthegaster").PatchAll();
		}

		public void Start()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_021f: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_02db: Unknown result type (might be due to invalid IL or missing references)
			//IL_030a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: Unknown result type (might be due to invalid IL or missing references)
			//IL_0368: Unknown result type (might be due to invalid IL or missing references)
			//IL_0397: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0424: Unknown result type (might be due to invalid IL or missing references)
			//IL_0453: Unknown result type (might be due to invalid IL or missing references)
			//IL_0482: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_050f: Unknown result type (might be due to invalid IL or missing references)
			//IL_053e: Unknown result type (might be due to invalid IL or missing references)
			//IL_056d: Unknown result type (might be due to invalid IL or missing references)
			//IL_059c: Unknown result type (might be due to invalid IL or missing references)
			//IL_05cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0629: Unknown result type (might be due to invalid IL or missing references)
			//IL_0658: Unknown result type (might be due to invalid IL or missing references)
			//IL_0687: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0714: Unknown result type (might be due to invalid IL or missing references)
			//IL_0799: Unknown result type (might be due to invalid IL or missing references)
			//IL_0761: Unknown result type (might be due to invalid IL or missing references)
			gasters.Add(new Gaster("Level 0-1", new Vector3(38.25f, 228f, 589.25f)));
			gasters.Add(new Gaster("Level 0-2", new Vector3(0f, 12.5f, 100f)));
			gasters.Add(new Gaster("Level 0-3", new Vector3(-130f, -11.5f, 431.85f)));
			gasters.Add(new Gaster("Level 0-4", new Vector3(5.5f, -0.5f, 249f)));
			gasters.Add(new Gaster("Level 0-5", new Vector3(-3.695781f, -4.5f, 362.5f)));
			gasters.Add(new Gaster("Level 1-1", new Vector3(16.5f, 24.5f, 397.5f)));
			gasters.Add(new Gaster("Level 1-2", new Vector3(0f, 7.5f, 302.5f)));
			gasters.Add(new Gaster("Level 1-3", new Vector3(44.19f, -7f, 363.75f)));
			gasters.Add(new Gaster("Level 1-4", new Vector3(0f, -30f, 423f)));
			gasters.Add(new Gaster("Level 2-1", new Vector3(22.63671f, 617.2075f, 431.9131f)));
			gasters.Add(new Gaster("Level 2-2", new Vector3(-126.2621f, 180.8f, 443.2578f)));
			gasters.Add(new Gaster("Level 2-3", new Vector3(-91.49994f, 27.78268f, 355.5f)));
			gasters.Add(new Gaster("Level 2-4", new Vector3(40.5f, -18.5f, 375.1033f)));
			gasters.Add(new Gaster("Level 3-1", new Vector3(0f, 19.5f, 350.4589f)));
			gasters.Add(new Gaster("Level 3-2", new Vector3(0f, 88.45461f, 650.3849f)));
			gasters.Add(new Gaster("Level 4-1", new Vector3(-293.1348f, 84.9838f, 1143.948f)));
			gasters.Add(new Gaster("Level 4-2", new Vector3(342.0074f, 211.133f, 470.0753f)));
			gasters.Add(new Gaster("Level 4-3", new Vector3(67.1669f, 17.5f, 373.6403f)));
			gasters.Add(new Gaster("Level 4-4", new Vector3(1123.369f, 262.4195f, 83.11234f)));
			gasters.Add(new Gaster("Level 5-1", new Vector3(270.3769f, -19.30468f, 231.6668f)));
			gasters.Add(new Gaster("Level 5-2", new Vector3(34.9902f, 991.1714f, -35.20284f)));
			gasters.Add(new Gaster("Level 5-3", new Vector3(-13.99754f, -8.5f, 317.6335f)));
			gasters.Add(new Gaster("Level 5-4", new Vector3(-1.144732f, 139.274f, 346.438f)));
			gasters.Add(new Gaster("Level 6-1", new Vector3(176.8103f, -142.6342f, -509.1721f)));
			gasters.Add(new Gaster("Level 6-2", new Vector3(-0.9887404f, 95.90947f, 324.8259f)));
			gasters.Add(new Gaster("Level 7-1", new Vector3(17.51437f, 64.5f, 487.5963f)));
			gasters.Add(new Gaster("Level 7-2", new Vector3(-114.5412f, 387.4886f, 421.2605f)));
			gasters.Add(new Gaster("Level 7-3", new Vector3(-223f, 26.5f, 483.7091f)));
			gasters.Add(new Gaster("Level 7-4", new Vector3(104.0811f, -4.4107f, 847.1364f)));
			gasters.Add(new Gaster("Level P-1", new Vector3(-109.195f, -49.34299f, 70.04394f)));
			gasters.Add(new Gaster("Level P-2", new Vector3(69.5f, 49.2824f, 237.6205f)));
			gasters.Add(new Gaster("Level 0-S", new Vector3(72.26433f, -14.5f, 165.4999f)));
			gasters.Add(new Gaster("Level 1-S", new Vector3(0f, -5.699751f, 134.8803f)));
			gasters.Add(new Gaster("Level 4-S", new Vector3(418.9155f, 89.5f, 154.9458f)));
			gasters.Add(new Gaster("Level 5-S", new Vector3(132.7276f, 85.49998f, -258.1491f)));
			gasters.Add(new Gaster("Level 7-S", new Vector3(-56.85102f, -12.68f, 149.4567f)));
			gasters.Add(new Gaster("Endless", new Vector3(0f, -30f, 65f), allowCheats: false, "Cybergrind"));
			gasters.Add(new Gaster("uk_construct", new Vector3(-951.3815f, 62.86881f, 584.1725f), allowCheats: true, "Sandbox"));
			gasters.Add(new Gaster("CreditsMuseum2", new Vector3(538.25f, 53.26952f, 713.1586f), allowCheats: false, "Credits"));
			if (customLevelMod.Any(Chainloader.PluginInfos.ContainsKey))
			{
				gasters.Add(new Gaster("pixelpower.layer.i1", new Vector3(32f, -25.49999f, 303.5f), allowCheats: false, "IN-1"));
			}
			((MonoBehaviour)this).StartCoroutine(GetTextureFromURL("https://duviz.xyz/static/img/mod/gasterIcon.png", delegate(Texture2D tex)
			{
				if ((Object)(object)tex != (Object)null)
				{
					popupTex = (Texture)(object)tex;
				}
			}));
			popupSfx = new GameObject("Audio").AddComponent<AudioSource>();
			((MonoBehaviour)this).StartCoroutine(LoadAudioFromURL("https://duviz.xyz/static/audio/alert.ogg"));
			Object.DontDestroyOnLoad((Object)(object)popupSfx);
		}

		public void Update()
		{
			//IL_003c: 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)
			foreach (Gaster gaster in gasters)
			{
				if ((Object)(object)gaster.instance == (Object)null && gaster.level == SceneHelper.CurrentScene)
				{
					gaster.instance = NewGaster(gaster.position, gaster);
				}
				if ((Object)(object)gaster.instance != (Object)null)
				{
					gaster.instance.transform.LookAt(((Component)Camera.main).transform);
					if ((MonoSingleton<CheatsController>.Instance.cheatsEnabled || MonoSingleton<StatsManager>.Instance.majorUsed) && !gaster.allowCheats)
					{
						gaster.instance.transform.position = new Vector3(0f, 2000f, 0f);
					}
				}
			}
		}

		public void LateUpdate()
		{
		}

		public GameObject NewGaster(Vector3 pos, Gaster gaster, bool gasterTrigger = true, bool endLevelTrigger = false)
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = GameObject.CreatePrimitive((PrimitiveType)3);
			((Object)val).name = "Gaster";
			val.transform.position = pos;
			val.transform.localScale = new Vector3(1.2f, 3f, 0.01f);
			((Collider)val.GetComponent<BoxCollider>()).isTrigger = true;
			if (endLevelTrigger)
			{
				val.AddComponent<EndLevelTrigger>();
			}
			if (gasterTrigger)
			{
				val.AddComponent<GasterTrigger>();
				val.GetComponent<GasterTrigger>().gaster = gaster;
			}
			((MonoBehaviour)this).StartCoroutine(SetTextureToObject(val));
			return val;
		}

		[IteratorStateMachine(typeof(<SetTextureToObject>d__9))]
		private IEnumerator SetTextureToObject(GameObject obj, string url = "https://duviz.xyz/static/img/mod/gaster.png")
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <SetTextureToObject>d__9(0)
			{
				obj = obj,
				url = url
			};
		}

		[IteratorStateMachine(typeof(<GetTextureFromURL>d__10))]
		public IEnumerator GetTextureFromURL(string url, Action<Texture2D> callback)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <GetTextureFromURL>d__10(0)
			{
				url = url,
				callback = callback
			};
		}

		[IteratorStateMachine(typeof(<LoadAudioFromURL>d__11))]
		private IEnumerator LoadAudioFromURL(string url)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <LoadAudioFromURL>d__11(0)
			{
				url = url
			};
		}

		public T Ass<T>(string path)
		{
			//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)
			return Addressables.LoadAssetAsync<T>((object)path).WaitForCompletion();
		}

		public void OnGUI()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			string text = overrideText;
			GUIStyle val = new GUIStyle(GUI.skin.label);
			val.alignment = (TextAnchor)4;
			val.fontSize = 24;
			float num = 1920f;
			float num2 = 100f;
			float num3 = ((float)Screen.width - num) / 2f;
			float num4 = (float)Screen.height - num2;
			GUI.Label(new Rect(num3, num4, num, num2), text, val);
			num = 300f;
			num2 = 300f;
			num3 = gasterPopupX - 300f;
			num4 = (float)Screen.height - num2;
			if (gasterPopupX > 0f && gasterPopupStage == 0)
			{
				gasterPopupX -= (301f - gasterPopupX) * Time.deltaTime;
			}
			if (gasterPopupX < 299.9f && gasterPopupStage == 1)
			{
				gasterPopupX -= (gasterPopupX - 300f) * Time.deltaTime * 5f;
			}
			else
			{
				gasterPopupStage = 0;
			}
			if ((Object)(object)popupTex != (Object)null)
			{
				GUI.color = new Color(1f, 1f, 1f, gasterPopupAlpha);
				GUI.DrawTexture(new Rect(num3, num4, num, num2), popupTex, (ScaleMode)2, true);
				int num5 = 0;
				foreach (Gaster gaster in gasters)
				{
					if (gaster.IsCollected())
					{
						num5++;
					}
				}
				val.alignment = (TextAnchor)4;
				val.fontSize = 30;
				GUI.Label(new Rect(num3, num4 - num2 / 2f + 50f, num, 100f), $"{num5}/{gasters.Count}", val);
			}
			if ((!((Object)(object)MonoSingleton<OptionsManager>.Instance != (Object)null) || MonoSingleton<OptionsManager>.Instance.paused) && Time.timeScale == 0f)
			{
				num3 = gastersListX;
				num4 = 0f;
				gastersListX -= (gastersListX - 0f) * Time.unscaledDeltaTime * 5f;
				{
					foreach (Gaster gaster2 in gasters)
					{
						float num6 = 60f;
						int fontSize = 14;
						if ((Object)(object)popupTex != (Object)null)
						{
							float num7 = (gaster2.allowCheats ? 0.5f : 1f);
							float num8 = (gaster2.allowCheats ? 0.5f : 1f);
							float num9 = (gaster2.allowCheats ? 1f : 1f);
							GUI.color = new Color(num7, num8, num9, gaster2.IsCollected() ? 1f : 0.5f);
							GUI.DrawTexture(new Rect(num3, num4, num6, num6), popupTex, (ScaleMode)2, true);
						}
						val.alignment = (TextAnchor)3;
						val.fontSize = fontSize;
						GUI.Label(new Rect(num3 + num6, num4, num6, num6), gaster2.displayName, val);
						num4 += num6;
						if (num4 > (float)Screen.height - num6)
						{
							num4 = 0f;
							num3 += num6 * 2f;
						}
					}
					return;
				}
			}
			gastersListX -= (gastersListX - (float)Screen.width) * Time.unscaledDeltaTime * 5f;
		}
	}
}
namespace UltrakillStupid.Scripts.Triggers
{
	public class EndLevelTrigger : MonoBehaviour
	{
		private void OnTriggerEnter(Collider other)
		{
			if (!(((Component)other).tag != "Player"))
			{
				SceneHelper.SpawnFinalPitAndFinish();
			}
		}
	}
	internal class GasterTrigger : MonoBehaviour
	{
		public Gaster gaster;

		private void OnTriggerEnter(Collider other)
		{
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			if (!(((Component)other).tag != "Player"))
			{
				Plugin.gasterPopupAlpha = (gaster.IsCollected() ? 0.5f : 1f);
				gaster.SetCollected();
				Plugin.gasterPopupStage = 1;
				Plugin.popupSfx.Play();
				((Component)this).transform.position = new Vector3(0f, 2000f, 0f);
				MonoSingleton<TimeController>.Instance.ParryFlash();
			}
		}
	}
}
namespace UltrakillStupid.Patches
{
	[HarmonyPatch(typeof(LeaderboardController))]
	[HarmonyPatch("SubmitLevelScore")]
	internal class LeaderboardControllerPatch
	{
		private static bool Prefix(string levelName, int difficulty, float seconds, int kills, int style, int restartCount, bool pRank = false)
		{
			return true;
		}
	}
}
namespace UltrakillStupid.Classes
{
	public class Gaster
	{
		public string level;

		public Vector3 position;

		public GameObject instance;

		public bool allowCheats;

		public string displayName = "";

		public Gaster(string lev, Vector3 pos, bool allowCheats = false, string displayName = "")
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			level = lev;
			position = pos;
			this.allowCheats = allowCheats;
			this.displayName = displayName;
			if (displayName == "")
			{
				this.displayName = level.Replace("Level ", "");
			}
		}

		public bool IsCollected()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			return PlayerPrefs.GetInt($"Gaster_Collected_{level}_{position}") == 1;
		}

		public void SetCollected(int collected = 1)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			PlayerPrefs.SetInt($"Gaster_Collected_{level}_{position}", collected);
		}
	}
}