Decompiled source of UkCheats v2.2.1

swish-UkCheats/UKCheats.dll

Decompiled 3 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using PluginConfig.API;
using PluginConfig.API.Decorators;
using PluginConfig.API.Fields;
using PluginConfig.API.Functionals;
using ULTRAKILL.Cheats;
using UnityEngine;
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("UKCheats")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("UKCheats")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("7f198f5e-62ec-42f4-85db-83f3276ea11f")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace UKCheats;

[BepInPlugin("swish.ultrakill.cheats", "UK Cheats", "2.2.1")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Main : BaseUnityPlugin
{
	private enum GameRanks
	{
		D,
		C,
		B,
		A,
		S,
		P
	}

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

		private object <>2__current;

		public Main <>4__this;

		private int <attempts>5__1;

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

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

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

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

		private bool MoveNext()
		{
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Expected O, but got Unknown
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<attempts>5__1 = 0;
				break;
			case 1:
				<>1__state = -1;
				<>4__this.movementController = Object.FindObjectOfType<NewMovement>();
				<>4__this.cheatsManager = Object.FindObjectOfType<CheatsManager>();
				<>4__this.assistController = Object.FindObjectOfType<AssistController>();
				if ((Object)(object)<>4__this.movementController != (Object)null && (Object)(object)<>4__this.cheatsManager != (Object)null && (Object)(object)<>4__this.assistController != (Object)null)
				{
					((BaseUnityPlugin)<>4__this).Logger.LogInfo((object)"[UKCheats] All game components found!");
					return false;
				}
				break;
			}
			if (<attempts>5__1 < 5)
			{
				<attempts>5__1++;
				<>2__current = (object)new WaitForSeconds(0.5f);
				<>1__state = 1;
				return true;
			}
			((BaseUnityPlugin)<>4__this).Logger.LogWarning((object)"[UKCheats] Failed to find some game components");
			return false;
		}

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

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

	public const string pluginGuid = "swish.ultrakill.cheats";

	public const string pluginName = "UK Cheats";

	public const string pluginVersion = "2.2.1";

	private NewMovement movementController;

	private CheatsManager cheatsManager;

	private AssistController assistController;

	private bool isInfHealth;

	private bool isInstantRecharge;

	private static readonly string modFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

	private string spritePath = Path.Combine(modFolder, "plugin_icon.png");

	private PluginConfigurator config;

	private ConfigPanel autoCompleteLevel;

	private EnumField<GameRanks> gameRanksField;

	private BoolField withDamage;

	private ButtonField completeLevelButton;

	private ConfigPanel generalPanel;

	private ConfigPanel movementPanel;

	private ConfigPanel weaponsPanel;

	private ConfigPanel enemiesPanel;

	private BoolField safeMod;

	private BoolField full_bright;

	private BoolField summonSandboxArmField;

	private BoolField _invincibility;

	private BoolField _noclip;

	private BoolField _flight;

	private BoolField infinite_wall_jumps;

	private BoolField infinite_stamina;

	private BoolField no_weapon_cooldown;

	private BoolField Infinite_power_ups;

	private BoolField blind_enemies;

	private BoolField enemies_attack_each_other;

	private BoolField enemy_ignore_player;

	private BoolField disable_enemy_spawns;

	private BoolField invincible_enemies;

	private ButtonField kill_all_enemies;

	private FullBright fullBright = new FullBright();

	private SummonSandboxArm summonSandboxArm = new SummonSandboxArm();

	private Invincibility invincibility = new Invincibility();

	private Noclip noclip = new Noclip();

	private Flight flight = new Flight();

	private InfiniteWallJumps infiniteWallJumps = new InfiniteWallJumps();

	private bool isInfDash;

	private NoWeaponCooldown noWeaponCooldown = new NoWeaponCooldown();

	private InfinitePowerUps InfinitePowerUps = new InfinitePowerUps();

	private BlindEnemies blindEnemies = new BlindEnemies();

	private EnemiesHateEnemies enemiesAttackEachOther = new EnemiesHateEnemies();

	private EnemyIgnorePlayer enemyIgnorePlayer = new EnemyIgnorePlayer();

	private DisableEnemySpawns disableEnemySpawns = new DisableEnemySpawns();

	private InvincibleEnemies invincibleEnemies = new InvincibleEnemies();

	private KillAllEnemies killAllEnemies = new KillAllEnemies();

	public void Awake()
	{
		//IL_0055: 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_007b: Expected O, but got Unknown
		//IL_0091: Unknown result type (might be due to invalid IL or missing references)
		//IL_009b: Expected O, but got Unknown
		//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bb: Expected O, but got Unknown
		//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00db: Expected O, but got Unknown
		//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fb: Expected O, but got Unknown
		//IL_0113: Unknown result type (might be due to invalid IL or missing references)
		//IL_011d: Expected O, but got Unknown
		//IL_014c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0156: Expected O, but got Unknown
		//IL_0167: Unknown result type (might be due to invalid IL or missing references)
		//IL_0171: Expected O, but got Unknown
		//IL_0183: Unknown result type (might be due to invalid IL or missing references)
		//IL_018d: Expected O, but got Unknown
		//IL_019f: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a9: Expected O, but got Unknown
		//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c5: Expected O, but got Unknown
		//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e1: Expected O, but got Unknown
		//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fd: Expected O, but got Unknown
		//IL_020f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0219: Expected O, but got Unknown
		//IL_022b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0235: Expected O, but got Unknown
		//IL_0247: Unknown result type (might be due to invalid IL or missing references)
		//IL_0251: Expected O, but got Unknown
		//IL_0263: Unknown result type (might be due to invalid IL or missing references)
		//IL_026d: Expected O, but got Unknown
		//IL_027f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0289: Expected O, but got Unknown
		//IL_029b: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a5: Expected O, but got Unknown
		//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c1: Expected O, but got Unknown
		//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02dd: Expected O, but got Unknown
		//IL_02ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f9: Expected O, but got Unknown
		//IL_030a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0314: Expected O, but got Unknown
		//IL_0321: Unknown result type (might be due to invalid IL or missing references)
		//IL_032b: Expected O, but got Unknown
		//IL_0339: Unknown result type (might be due to invalid IL or missing references)
		//IL_0343: Expected O, but got Unknown
		//IL_0351: Unknown result type (might be due to invalid IL or missing references)
		//IL_035b: Expected O, but got Unknown
		//IL_0369: Unknown result type (might be due to invalid IL or missing references)
		//IL_0373: Expected O, but got Unknown
		//IL_0381: Unknown result type (might be due to invalid IL or missing references)
		//IL_038b: Expected O, but got Unknown
		//IL_0399: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a3: Expected O, but got Unknown
		//IL_03b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03bb: Expected O, but got Unknown
		//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d3: Expected O, but got Unknown
		//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03eb: Expected O, but got Unknown
		//IL_03f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0403: Expected O, but got Unknown
		//IL_0411: Unknown result type (might be due to invalid IL or missing references)
		//IL_041b: Expected O, but got Unknown
		//IL_0429: Unknown result type (might be due to invalid IL or missing references)
		//IL_0433: Expected O, but got Unknown
		//IL_0441: Unknown result type (might be due to invalid IL or missing references)
		//IL_044b: Expected O, but got Unknown
		//IL_0459: Unknown result type (might be due to invalid IL or missing references)
		//IL_0463: Expected O, but got Unknown
		//IL_0471: Unknown result type (might be due to invalid IL or missing references)
		//IL_047b: Expected O, but got Unknown
		//IL_0489: Unknown result type (might be due to invalid IL or missing references)
		//IL_0493: Expected O, but got Unknown
		//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ab: Expected O, but got Unknown
		((BaseUnityPlugin)this).Logger.LogInfo((object)"[UKCheats] Mod initialized!");
		config = PluginConfigurator.Create("UK Cheats", "swish_ultrakill_cheats");
		config.SetIconWithURL("file://" + spritePath);
		new ConfigHeader(config.rootPanel, "Standart ULTRAKILL Cheats", 24);
		autoCompleteLevel = new ConfigPanel(config.rootPanel, "Auto-Complete Page", "auto_complete_page");
		generalPanel = new ConfigPanel(config.rootPanel, "General", "general_panel");
		movementPanel = new ConfigPanel(config.rootPanel, "Movement", "movement_panel");
		weaponsPanel = new ConfigPanel(config.rootPanel, "Weapons", "general_panel");
		enemiesPanel = new ConfigPanel(config.rootPanel, "Enemies", "general_panel");
		safeMod = new BoolField(config.rootPanel, "Safe Mod", "safe_mod", true, true);
		gameRanksField = new EnumField<GameRanks>(autoCompleteLevel, "Rank", "rank", GameRanks.P);
		withDamage = new BoolField(autoCompleteLevel, "Damaged", "damaged", false, false);
		completeLevelButton = new ButtonField(autoCompleteLevel, "Complete Level", "complete_level");
		full_bright = new BoolField(generalPanel, "Full Bright", "full_bright", false);
		summonSandboxArmField = new BoolField(generalPanel, "Spawner Arm", "summon_sandbox_arm", false);
		_invincibility = new BoolField(generalPanel, "Invincibility", "invincibility", false);
		_noclip = new BoolField(movementPanel, "Noclip", "noclip", false);
		_flight = new BoolField(movementPanel, "Flight", "flight", false);
		infinite_wall_jumps = new BoolField(movementPanel, "Infinite Wall Jumps", "infinite_wall_jumps", false);
		infinite_stamina = new BoolField(movementPanel, "Infinite Stamina", "infinite_stamina", false);
		no_weapon_cooldown = new BoolField(weaponsPanel, "No Weapon Cooldown", "no_weapon_cooldown", false);
		Infinite_power_ups = new BoolField(weaponsPanel, "Infinite Power-Ups", "Infinite_power_ups", false);
		blind_enemies = new BoolField(enemiesPanel, "Bling Enemies", "blind_enemies", false);
		enemies_attack_each_other = new BoolField(enemiesPanel, "Enemies Attach Each Other", "enemies_attack_each_other", false);
		enemy_ignore_player = new BoolField(enemiesPanel, "Enemy Ignore Player", "enemy_ignore_player", false);
		disable_enemy_spawns = new BoolField(enemiesPanel, "Disable Enemy Spawns", "disable_enemy_spawns", false);
		invincible_enemies = new BoolField(enemiesPanel, "Invicible Enemies", "invincible_enemies", false);
		kill_all_enemies = new ButtonField(enemiesPanel, "Kill All Enemies", "kill_all_enemies");
		safeMod.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			assistController.cheatsEnabled = e.value;
		};
		completeLevelButton.onClick += (OnClick)delegate
		{
			AutoCompleteCheat(gameRanksField.value, withDamage.value);
		};
		full_bright.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)fullBright, e.value, false);
		};
		summonSandboxArmField.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)summonSandboxArm, e.value, false);
		};
		_invincibility.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)invincibility, e.value, false);
		};
		_noclip.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)noclip, e.value, false);
		};
		_flight.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)flight, e.value, false);
		};
		infinite_wall_jumps.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)infiniteWallJumps, e.value, false);
		};
		infinite_stamina.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			isInfDash = e.value;
		};
		no_weapon_cooldown.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)noWeaponCooldown, e.value, false);
		};
		Infinite_power_ups.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)InfinitePowerUps, e.value, false);
		};
		blind_enemies.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)blindEnemies, e.value, false);
		};
		enemies_attack_each_other.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)enemiesAttackEachOther, e.value, false);
		};
		enemy_ignore_player.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)enemyIgnorePlayer, e.value, false);
		};
		disable_enemy_spawns.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)disableEnemySpawns, e.value, false);
		};
		invincible_enemies.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e)
		{
			cheatsManager.SetCheatActive((ICheat)(object)invincibleEnemies, e.value, false);
		};
		kill_all_enemies.onClick += (OnClick)delegate
		{
			killAllEnemies.Enable(cheatsManager);
		};
		ResetOptions();
		SceneManager.sceneLoaded += OnSceneLoaded;
	}

	private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
	{
		((BaseUnityPlugin)this).Logger.LogInfo((object)("[UKCheats] Scene loaded: " + ((Scene)(ref scene)).name));
		((MonoBehaviour)this).StartCoroutine(InitializeGameComponents());
		ResetOptions();
	}

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

	public void Update()
	{
		if (!((Object)(object)movementController == (Object)null) && !((Object)(object)cheatsManager == (Object)null) && !((Object)(object)assistController == (Object)null))
		{
			if (isInfHealth && (float)movementController.hp < 100f)
			{
				movementController.FullHeal(true);
				movementController.ForceAntiHP(0f, false, false, true, false);
			}
			if (isInfDash && movementController.boostCharge < 300f)
			{
				movementController.FullStamina();
			}
			if (assistController.cheatsEnabled != safeMod.value)
			{
				assistController.cheatsEnabled = safeMod.value;
			}
		}
	}

	private void AutoCompleteCheat(GameRanks gameRanks, bool WithDamage)
	{
		//IL_029a: Unknown result type (might be due to invalid IL or missing references)
		StatsManager val = Object.FindObjectOfType<StatsManager>();
		FinalRoom val2 = FindFinalRoom();
		if ((Object)(object)val == (Object)null || (Object)(object)val2 == (Object)null)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)"[UKCheats] Required components for Auto-Complete not found!");
			return;
		}
		val.StopTimer();
		if (gameRanks != GameRanks.P)
		{
			val.restarts = 1;
		}
		if (WithDamage)
		{
			val.tookDamage = true;
		}
		switch (gameRanks)
		{
		case GameRanks.P:
			val.seconds = Random.Range((float)val.timeRanks[3] - 60f, (float)val.timeRanks[3]);
			val.kills = val.killRanks[3];
			val.stylePoints = val.styleRanks[3];
			break;
		case GameRanks.S:
			val.seconds = Random.Range((float)val.timeRanks[3] - 60f, (float)val.timeRanks[3]);
			val.kills = val.killRanks[3];
			val.stylePoints = val.styleRanks[3];
			break;
		case GameRanks.A:
			val.seconds = Random.Range((float)val.timeRanks[2] - 25f, (float)val.timeRanks[2]);
			val.kills = val.killRanks[2];
			val.stylePoints = val.styleRanks[2];
			break;
		case GameRanks.B:
			val.seconds = Random.Range((float)val.timeRanks[1] - 20f, (float)val.timeRanks[1]);
			val.kills = val.killRanks[1];
			val.stylePoints = val.styleRanks[1];
			break;
		case GameRanks.C:
			val.seconds = Random.Range((float)val.timeRanks[0] - 15f, (float)val.timeRanks[0]);
			val.kills = val.killRanks[0];
			val.stylePoints = val.styleRanks[0];
			break;
		case GameRanks.D:
			val.seconds = Random.Range((float)val.timeRanks[0], (float)val.timeRanks[0] + 60f);
			val.kills = val.killRanks[0];
			val.stylePoints = val.styleRanks[0] - Random.Range(1500, 3500);
			break;
		}
		((Component)val2).transform.SetParent((Transform)null, true);
		((Component)val2).gameObject.SetActive(true);
		((Component)val2).GetComponentInChildren<FinalDoor>().OpenDoors();
		if ((Object)(object)movementController != (Object)null)
		{
			((Component)movementController).transform.position = val2.dropPoint.position;
		}
		((BaseUnityPlugin)this).Logger.LogInfo((object)"[UKCheats] Auto-Complete activated!");
	}

	private FinalRoom FindFinalRoom()
	{
		FinalRoom[] array = Resources.FindObjectsOfTypeAll<FinalRoom>();
		return (array.Length != 0) ? array[0] : null;
	}

	private void ResetOptions()
	{
		full_bright.value = full_bright.defaultValue;
		summonSandboxArmField.value = summonSandboxArmField.defaultValue;
		_invincibility.value = _invincibility.defaultValue;
		_noclip.value = _noclip.defaultValue;
		_flight.value = _flight.defaultValue;
		infinite_wall_jumps.value = infinite_wall_jumps.defaultValue;
		infinite_stamina.value = infinite_stamina.defaultValue;
		no_weapon_cooldown.value = no_weapon_cooldown.defaultValue;
		Infinite_power_ups.value = Infinite_power_ups.defaultValue;
		blind_enemies.value = blind_enemies.defaultValue;
		enemies_attack_each_other.value = enemies_attack_each_other.defaultValue;
		enemy_ignore_player.value = enemy_ignore_player.defaultValue;
		disable_enemy_spawns.value = disable_enemy_spawns.defaultValue;
		invincible_enemies.value = invincible_enemies.defaultValue;
	}
}