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