using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using HarmonyLib;
using HowardSpeedrun;
using Il2CppRUMBLE.Environment.Howard;
using Il2CppTMPro;
using MelonLoader;
using RumbleModdingAPI;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: MelonInfo(typeof(main), "HowardSpeedrun", "2.0.1", "UlvakSkillz", null)]
[assembly: MelonGame("Buckethead Entertainment", "RUMBLE")]
[assembly: MelonColor(255, 195, 0, 255)]
[assembly: MelonAuthorColor(255, 195, 0, 255)]
[assembly: VerifyLoaderVersion(0, 6, 2, true)]
[assembly: AssemblyTitle("HowardSpeedrun")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HowardSpeedrun")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("95dd4b44-114b-446b-b143-721c49169f52")]
[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 HowardSpeedrun;
public class main : MelonMod
{
[HarmonyPatch(typeof(Howard), "OnActivationLeverChanged")]
public static class Patch0
{
private static void Postfix(int step)
{
switch (step)
{
case 0:
howardActive = true;
howard.currentHp = howard.CurrentSelectedLogic.maxHealth;
howard.UpdateHealthBarPercentage(100f, false);
timer.Restart();
break;
case 1:
howardActive = false;
timer.Stop();
((TMP_Text)timerTimeComponent).text = timer.Elapsed.ToString();
break;
}
}
}
[HarmonyPatch(typeof(Howard), "DealDamage")]
public static class Patch1
{
private static void Postfix()
{
if (howard.currentHp <= 0f)
{
howard.OnActivationLeverChanged(1);
}
}
}
private string currentScene = "Loader";
private bool sceneChanged = false;
private bool loaded = false;
private GameObject timerGameObject;
private GameObject timerTextStatic;
private GameObject timerTime;
private static TextMeshPro timerTextComponent;
private static TextMeshPro timerTimeComponent;
private static Howard howard;
private static bool howardActive = false;
private static Stopwatch timer = new Stopwatch();
public override void OnSceneWasLoaded(int buildIndex, string sceneName)
{
currentScene = sceneName;
sceneChanged = true;
howardActive = false;
}
public override void OnFixedUpdate()
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Expected O, but got Unknown
//IL_00db: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
//IL_0210: Unknown result type (might be due to invalid IL or missing references)
//IL_0235: Unknown result type (might be due to invalid IL or missing references)
if (currentScene != "Gym")
{
return;
}
if (sceneChanged)
{
try
{
howard = HowardRoot.GetGameObject().GetComponent<Howard>();
timerGameObject = new GameObject();
((Object)timerGameObject).name = "HowardTimer";
timerTextStatic = Object.Instantiate<GameObject>(Nr.GetGameObject());
timerTextStatic.transform.parent = timerGameObject.transform;
((Object)timerTextStatic).name = "TimerText";
timerTextComponent = timerTextStatic.GetComponent<TextMeshPro>();
((TMP_Text)timerTextComponent).text = "Time: ";
((TMP_Text)timerTextComponent).fontSize = 5f;
((TMP_Text)timerTextComponent).color = new Color(0f, 0f, 0f, 1f);
((TMP_Text)timerTextComponent).outlineColor = Color32.op_Implicit(new Color(0f, 0f, 0f, 0.5f));
((TMP_Text)timerTextComponent).alignment = (TextAlignmentOptions)513;
((TMP_Text)timerTextComponent).enableWordWrapping = false;
((TMP_Text)timerTextComponent).outlineWidth = 0.1f;
timerTime = Object.Instantiate<GameObject>(timerTextStatic);
timerTime.transform.parent = timerGameObject.transform;
((Object)timerTime).name = "TimerTime";
timerTimeComponent = timerTime.GetComponent<TextMeshPro>();
((TMP_Text)timerTimeComponent).text = timer.Elapsed.ToString();
timerTextStatic.transform.position = new Vector3(-2f, 1f, 0f);
timerTime.transform.position = new Vector3(-1f, 1f, 0f);
timerGameObject.transform.position = new Vector3(10.5091f, -0.9382f, -22.3673f);
timerGameObject.transform.rotation = Quaternion.Euler(0f, 133.5728f, 0f);
loaded = true;
sceneChanged = false;
}
catch
{
return;
}
}
if (loaded && howardActive)
{
((TMP_Text)timerTimeComponent).text = timer.Elapsed.ToString();
}
}
}