Decompiled source of PRank Eligibility v1.1.1

BepInEx/plugins/P-Rank Eligible.dll

Decompiled 2 months ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using TMPro;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("prank eligible")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("prank eligible")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("ce686b6d-3b66-40bc-82e1-2c2a92a0d664")]
[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 P_RankEligible;

[BepInPlugin("com.ultrakill.prankeligible.temporary", "P-Rank Eligible", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
	public static Plugin plugin;

	public static void Log(string msg)
	{
		((BaseUnityPlugin)plugin).Logger.LogMessage((object)msg);
	}

	public void Awake()
	{
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Expected O, but got Unknown
		plugin = this;
		((BaseUnityPlugin)this).Logger.LogMessage((object)"P-Rank Eligible loaded!");
		Harmony val = new Harmony("com.ultrakill.prankeligible.temporary");
		val.PatchAll();
	}

	public void OnGUI()
	{
		GUILayout.Label(string.Format("FPS: {1}", 1f / Time.deltaTime), Array.Empty<GUILayoutOption>());
	}
}
public static class PluginInfo
{
	public const string PluginGUID = "com.ultrakill.prankeligible.temporary";

	public const string PluginName = "P-Rank Eligible";

	public const string PluginVersion = "1.0.0";
}
[HarmonyPatch(typeof(LevelStats), "CheckStats")]
public class LevelStats_CheckStats_Patch
{
	private struct RankEligibility
	{
		public bool obtained;

		public bool lost;

		public bool permaLose;

		public bool died;
	}

	private static bool wasTimeP = true;

	private static void Postfix(LevelStats __instance)
	{
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Expected O, but got Unknown
		FieldInfo field = typeof(LevelStats).GetField("majorAssists", BindingFlags.Instance | BindingFlags.Public);
		object? value = field.GetValue(__instance);
		TMP_Text val = (TMP_Text)((value is TMP_Text) ? value : null);
		if ((Object)(object)val == (Object)null)
		{
			return;
		}
		Transform parent = val.transform.parent.parent;
		if ((Object)(object)parent != (Object)null)
		{
			foreach (Transform item in parent)
			{
				Transform val2 = item;
				TMP_Text component = ((Component)val2).GetComponent<TMP_Text>();
				if ((Object)(object)component != (Object)null && (Object)(object)component != (Object)(object)val && component.text.ToUpper().Contains("MAJOR"))
				{
					component.text = "P-RANKABLE";
					break;
				}
			}
		}
		RankEligibility rankEligibility = IsPRankEligible();
		if (rankEligibility.obtained)
		{
			val.text = "<color=#FFAF00>YES</color>";
		}
		else if (rankEligibility.permaLose)
		{
			val.text = "<color=#FF6A00>RIP</color>";
		}
		else if (rankEligibility.lost)
		{
			val.text = "<color=#636363>LOST</color>";
		}
		else if (rankEligibility.died)
		{
			val.text = "<color=#FF6A00>DEAD</color>";
		}
		else
		{
			val.text = "NO";
		}
	}

	private static RankEligibility IsPRankEligible()
	{
		StatsManager instance = MonoSingleton<StatsManager>.Instance;
		AssistController instance2 = MonoSingleton<AssistController>.Instance;
		if ((Object)(object)instance == (Object)null || (Object)(object)instance2 == (Object)null)
		{
			return default(RankEligibility);
		}
		RankEligibility result;
		if (instance2.cheatsEnabled || instance.majorUsed)
		{
			result = default(RankEligibility);
			result.obtained = false;
			result.lost = false;
			result.permaLose = false;
			return result;
		}
		if (instance.seconds < 1f)
		{
			wasTimeP = true;
		}
		bool flag = CalcRankScore(instance.timeRanks, instance.seconds, reverse: true) == 4;
		bool flag2 = CalcRankScore(instance.killRanks, instance.kills, reverse: false) == 4;
		bool flag3 = CalcRankScore(instance.styleRanks, instance.stylePoints, reverse: false) == 4;
		if (!flag && wasTimeP)
		{
			wasTimeP = false;
		}
		int num = 0;
		num += CalcRankScore(instance.timeRanks, instance.seconds, reverse: true);
		num += CalcRankScore(instance.killRanks, instance.kills, reverse: false);
		num += CalcRankScore(instance.styleRanks, instance.stylePoints, reverse: false);
		if (num < 0)
		{
			num = 0;
		}
		bool permaLose = !flag && flag2 && flag3;
		result = default(RankEligibility);
		result.obtained = num == 12;
		result.lost = !flag && !wasTimeP;
		result.permaLose = permaLose;
		result.died = instance.restarts > 0;
		return result;
	}

	private static int CalcRankScore(int[] ranksToCheck, float value, bool reverse)
	{
		int num = 0;
		while (true)
		{
			if (num >= ranksToCheck.Length)
			{
				return 4;
			}
			if ((!reverse || !(value <= (float)ranksToCheck[num])) && (reverse || !(value >= (float)ranksToCheck[num])))
			{
				break;
			}
			num++;
		}
		return num;
	}
}

plugins/P-Rank Eligible.dll

Decompiled 2 months ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using TMPro;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("prank eligible")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("prank eligible")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("ce686b6d-3b66-40bc-82e1-2c2a92a0d664")]
[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 P_RankEligible;

[BepInPlugin("com.ultrakill.prankeligible.temporary", "P-Rank Eligible", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
	public static Plugin plugin;

	public static void Log(string msg)
	{
		((BaseUnityPlugin)plugin).Logger.LogMessage((object)msg);
	}

	public void Awake()
	{
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Expected O, but got Unknown
		plugin = this;
		((BaseUnityPlugin)this).Logger.LogMessage((object)"P-Rank Eligible loaded!");
		Harmony val = new Harmony("com.ultrakill.prankeligible.temporary");
		val.PatchAll();
	}

	public void OnGUI()
	{
		GUILayout.Label(string.Format("FPS: {1}", 1f / Time.deltaTime), Array.Empty<GUILayoutOption>());
	}
}
public static class PluginInfo
{
	public const string PluginGUID = "com.ultrakill.prankeligible.temporary";

	public const string PluginName = "P-Rank Eligible";

	public const string PluginVersion = "1.0.0";
}
[HarmonyPatch(typeof(LevelStats), "CheckStats")]
public class LevelStats_CheckStats_Patch
{
	private struct RankEligibility
	{
		public bool obtained;

		public bool lost;

		public bool permaLose;

		public bool died;
	}

	private static bool wasTimeP = true;

	private static void Postfix(LevelStats __instance)
	{
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Expected O, but got Unknown
		FieldInfo field = typeof(LevelStats).GetField("majorAssists", BindingFlags.Instance | BindingFlags.Public);
		object? value = field.GetValue(__instance);
		TMP_Text val = (TMP_Text)((value is TMP_Text) ? value : null);
		if ((Object)(object)val == (Object)null)
		{
			return;
		}
		Transform parent = val.transform.parent.parent;
		if ((Object)(object)parent != (Object)null)
		{
			foreach (Transform item in parent)
			{
				Transform val2 = item;
				TMP_Text component = ((Component)val2).GetComponent<TMP_Text>();
				if ((Object)(object)component != (Object)null && (Object)(object)component != (Object)(object)val && component.text.ToUpper().Contains("MAJOR"))
				{
					component.text = "P-RANKABLE";
					break;
				}
			}
		}
		RankEligibility rankEligibility = IsPRankEligible();
		if (rankEligibility.obtained)
		{
			val.text = "<color=#FFAF00>YES</color>";
		}
		else if (rankEligibility.permaLose)
		{
			val.text = "<color=#FF6A00>RIP</color>";
		}
		else if (rankEligibility.lost)
		{
			val.text = "<color=#636363>LOST</color>";
		}
		else if (rankEligibility.died)
		{
			val.text = "<color=#FF6A00>DEAD</color>";
		}
		else
		{
			val.text = "NO";
		}
	}

	private static RankEligibility IsPRankEligible()
	{
		StatsManager instance = MonoSingleton<StatsManager>.Instance;
		AssistController instance2 = MonoSingleton<AssistController>.Instance;
		if ((Object)(object)instance == (Object)null || (Object)(object)instance2 == (Object)null)
		{
			return default(RankEligibility);
		}
		RankEligibility result;
		if (instance2.cheatsEnabled || instance.majorUsed)
		{
			result = default(RankEligibility);
			result.obtained = false;
			result.lost = false;
			result.permaLose = false;
			return result;
		}
		if (instance.seconds < 1f)
		{
			wasTimeP = true;
		}
		bool flag = CalcRankScore(instance.timeRanks, instance.seconds, reverse: true) == 4;
		bool flag2 = CalcRankScore(instance.killRanks, instance.kills, reverse: false) == 4;
		bool flag3 = CalcRankScore(instance.styleRanks, instance.stylePoints, reverse: false) == 4;
		if (!flag && wasTimeP)
		{
			wasTimeP = false;
		}
		int num = 0;
		num += CalcRankScore(instance.timeRanks, instance.seconds, reverse: true);
		num += CalcRankScore(instance.killRanks, instance.kills, reverse: false);
		num += CalcRankScore(instance.styleRanks, instance.stylePoints, reverse: false);
		if (num < 0)
		{
			num = 0;
		}
		bool permaLose = !flag && flag2 && flag3;
		result = default(RankEligibility);
		result.obtained = num == 12;
		result.lost = !flag && !wasTimeP;
		result.permaLose = permaLose;
		result.died = instance.restarts > 0;
		return result;
	}

	private static int CalcRankScore(int[] ranksToCheck, float value, bool reverse)
	{
		int num = 0;
		while (true)
		{
			if (num >= ranksToCheck.Length)
			{
				return 4;
			}
			if ((!reverse || !(value <= (float)ranksToCheck[num])) && (reverse || !(value >= (float)ranksToCheck[num])))
			{
				break;
			}
			num++;
		}
		return num;
	}
}