Decompiled source of RoundTimeIncreaser v1.0.0

BGTimerMod.dll

Decompiled 6 hours 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 UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("BGTimerMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BGTimerMod")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b4b684ca-cd7c-4050-83c8-341de28ea82b")]
[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 BGTimerMod;

[BepInPlugin("com.zombusa.bgtimermod", "BG Timer Mod", "1.2.1")]
public class TimerCheatPlugin : BaseUnityPlugin
{
	public const string PluginGuid = "com.zombusa.bgtimermod";

	public const string PluginName = "BG Timer Mod";

	public const string PluginVersion = "1.2.1";

	private string _popupText = "";

	private float _popupUntil;

	private GUIStyle _popupStyle;

	private void Awake()
	{
		((BaseUnityPlugin)this).Logger.LogInfo((object)"BG Timer Mod loaded. Press F8 to add 5 minutes.");
	}

	private void Update()
	{
		if (IsF8Pressed())
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)"F8 detected.");
			if (TryAddFiveMinutes(out var result))
			{
				((BaseUnityPlugin)this).Logger.LogInfo((object)result);
				ShowPopup("Added 5 minutes");
			}
			else
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)result);
				ShowPopup("Failed to add time");
			}
		}
	}

	private bool IsF8Pressed()
	{
		try
		{
			Type type = Type.GetType("UnityEngine.InputSystem.Keyboard, Unity.InputSystem");
			if (type != null)
			{
				object obj = type.GetProperty("current", BindingFlags.Static | BindingFlags.Public)?.GetValue(null);
				if (obj != null)
				{
					object obj2 = type.GetProperty("f8Key", BindingFlags.Instance | BindingFlags.Public)?.GetValue(obj);
					if (obj2 != null)
					{
						PropertyInfo property = obj2.GetType().GetProperty("wasPressedThisFrame", BindingFlags.Instance | BindingFlags.Public);
						if (property != null)
						{
							return (bool)property.GetValue(obj2);
						}
					}
				}
			}
		}
		catch
		{
		}
		try
		{
			Type type2 = Type.GetType("UnityEngine.Input, UnityEngine.InputLegacyModule");
			if (type2 != null)
			{
				MethodInfo method = type2.GetMethod("GetKeyDown", new Type[1] { typeof(KeyCode) });
				if (method != null && method.Invoke(null, new object[1] { (object)(KeyCode)289 }) is bool result)
				{
					return result;
				}
			}
		}
		catch
		{
		}
		return false;
	}

	private bool TryAddFiveMinutes(out string result)
	{
		result = "";
		try
		{
			Type type = AccessTools.TypeByName("GameProgressionManager");
			if (type == null)
			{
				result = "Could not find type: GameProgressionManager";
				return false;
			}
			object obj = null;
			PropertyInfo propertyInfo = AccessTools.Property(type, "Instance");
			if (propertyInfo != null)
			{
				obj = propertyInfo.GetValue(null);
			}
			if (obj == null)
			{
				Object[] array = Object.FindObjectsByType(type, (FindObjectsInactive)1, (FindObjectsSortMode)0);
				if (array != null && array.Length != 0)
				{
					obj = array[0];
				}
			}
			if (obj == null)
			{
				result = "GameProgressionManager instance not found (are you in a match?)";
				return false;
			}
			PropertyInfo propertyInfo2 = type.GetProperty("IsServer", BindingFlags.Instance | BindingFlags.Public) ?? obj.GetType().BaseType?.GetProperty("IsServer", BindingFlags.Instance | BindingFlags.Public);
			if (propertyInfo2 != null && !(bool)propertyInfo2.GetValue(obj))
			{
				result = "You are not host/server. Timer is server-authoritative.";
				return false;
			}
			MethodInfo methodInfo = AccessTools.Method(type, "AddGameTime", new Type[1] { typeof(float) }, (Type[])null);
			if (methodInfo == null)
			{
				result = "Could not find method GameProgressionManager.AddGameTime(float)";
				return false;
			}
			PropertyInfo propertyInfo3 = AccessTools.Property(type, "GameTimeInMinutes");
			float num = -1f;
			float num2 = -1f;
			if (propertyInfo3 != null && propertyInfo3.CanRead)
			{
				num = Convert.ToSingle(propertyInfo3.GetValue(obj));
			}
			methodInfo.Invoke(obj, new object[1] { -5f });
			if (propertyInfo3 != null && propertyInfo3.CanRead)
			{
				num2 = Convert.ToSingle(propertyInfo3.GetValue(obj));
			}
			result = $"Added 5 minutes via AddGameTime(). GameTimeInMinutes: {num} -> {num2}";
			return true;
		}
		catch (Exception ex)
		{
			result = "Exception: " + ex.GetType().Name + ": " + ex.Message;
			return false;
		}
	}

	private void ShowPopup(string text)
	{
		_popupText = text;
		_popupUntil = Time.unscaledTime + 2f;
	}

	private void OnGUI()
	{
		//IL_008d: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Expected O, but got Unknown
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		if (!(Time.unscaledTime > _popupUntil) && !string.IsNullOrEmpty(_popupText))
		{
			if (_popupStyle == null)
			{
				_popupStyle = new GUIStyle(GUI.skin.label);
				_popupStyle.fontSize = 22;
				_popupStyle.fontStyle = (FontStyle)1;
				_popupStyle.alignment = (TextAnchor)2;
				_popupStyle.normal.textColor = Color.white;
			}
			GUI.Label(new Rect((float)(Screen.width - 420), 20f, 400f, 40f), _popupText, _popupStyle);
		}
	}
}