Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of AntiTumble Cooldown v1.1.0
Anti-Tumble_Cooldown1.dll
Decompiled 4 months agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; 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("Anti-Tumble_Cooldown")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Anti-Tumble_Cooldown")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("c536bce9-c9aa-4a63-a8af-0418e7a44775")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] [BepInPlugin("com.yourname.antitumble", "Anti-Tumble Cooldown", "1.1.1")] public class AntiTumblePlugin : BaseUnityPlugin { private FieldInfo tumbleOverrideField; private FieldInfo tumbleInputDisableTimerField; private FieldInfo canExitField; private FieldInfo tumblingField; private bool lastTumbleState; private void Awake() { Assembly assembly = typeof(PlayerController).Assembly; Type type = assembly.GetType("PlayerTumble"); Type typeFromHandle = typeof(PlayerController); tumbleOverrideField = type.GetField("tumbleOverride", BindingFlags.Instance | BindingFlags.NonPublic); tumblingField = type.GetField("tumbling", BindingFlags.Instance | BindingFlags.NonPublic); tumbleInputDisableTimerField = typeFromHandle.GetField("tumbleInputDisableTimer", BindingFlags.Instance | BindingFlags.NonPublic); canExitField = typeof(TumbleUI).GetField("canExit", BindingFlags.Instance | BindingFlags.NonPublic); } private void Update() { PlayerController instance = PlayerController.instance; if ((Object)(object)instance == (Object)null || (Object)(object)LevelGenerator.Instance == (Object)null || !LevelGenerator.Instance.Generated) { return; } PlayerAvatar playerAvatarScript = instance.playerAvatarScript; if ((Object)(object)playerAvatarScript == (Object)null) { return; } PlayerTumble tumble = playerAvatarScript.tumble; if ((Object)(object)tumble == (Object)null) { return; } tumbleOverrideField?.SetValue(tumble, false); tumbleInputDisableTimerField?.SetValue(instance, 0f); bool flag = tumblingField != null && (bool)tumblingField.GetValue(tumble); if ((Object)(object)TumbleUI.instance != (Object)null) { canExitField?.SetValue(TumbleUI.instance, true); if (flag != lastTumbleState) { ((Component)TumbleUI.instance).gameObject.SetActive(flag); lastTumbleState = flag; } } } }