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 HubertsToolkit v1.0.3
plugins/HubertsToolkit.dll
Decompiled a day agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Fake Game Developers")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyCopyright("Copyright (c) 2026 Fake Game Developers")] [assembly: AssemblyDescription("Infinite sprint and a flashlight battery that does not drain.")] [assembly: AssemblyFileVersion("1.0.3.0")] [assembly: AssemblyInformationalVersion("1.0.3+d50a4d3a2f92f92a7f30d11a84b0f9f6ea56d7e6")] [assembly: AssemblyProduct("HubertsToolkit")] [assembly: AssemblyTitle("Hubert's Toolkit")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.3.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BepInEx { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class BepInAutoPluginAttribute : Attribute { public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace BepInEx.Preloader.Core.Patching { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class PatcherAutoPluginAttribute : Attribute { public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace HubertsToolkit { [HarmonyPatch(typeof(FlashlightItem), "Update")] internal static class InfiniteFlashlightPatch { [HarmonyPostfix] private static void Postfix(FlashlightItem __instance) { if (!Plugin.InfiniteFlashlight.Value || (Object)(object)__instance == (Object)null || !((NetworkBehaviour)__instance).IsOwner || !((GrabbableObject)__instance).isBeingUsed) { return; } Item itemProperties = ((GrabbableObject)__instance).itemProperties; if (!((Object)(object)itemProperties == (Object)null) && itemProperties.requiresBattery && !itemProperties.itemIsTrigger && !(itemProperties.batteryUsage <= 0f)) { Battery insertedBattery = ((GrabbableObject)__instance).insertedBattery; if (insertedBattery != null && !(insertedBattery.charge <= 0f)) { insertedBattery.charge += Time.deltaTime / itemProperties.batteryUsage; } } } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] internal static class InfiniteSprintPatch { [HarmonyPostfix] private static void Postfix(ref float ___sprintMeter) { if (Plugin.InfiniteSprint.Value) { ___sprintMeter = 1f; } } } [BepInPlugin("Huberts.Toolkit", "Hubert's Toolkit", "1.0.3")] public class Plugin : BaseUnityPlugin { public const string Id = "Huberts.Toolkit"; internal static ManualLogSource Log { get; private set; } internal static ConfigEntry<bool> InfiniteSprint { get; private set; } internal static ConfigEntry<bool> InfiniteFlashlight { get; private set; } public static string Name => "Hubert's Toolkit"; public static string Version => "1.0.3"; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; InfiniteSprint = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "InfiniteSprint", true, "Keep the sprint meter full."); InfiniteFlashlight = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "InfiniteFlashlight", true, "Refill a flashlight battery while you are using it."); Log.LogMessage((object)"Huberts.Toolkit has loaded successfully."); Harmony.CreateAndPatchAll(typeof(InfiniteSprintPatch), (string)null); Harmony.CreateAndPatchAll(typeof(InfiniteFlashlightPatch), (string)null); } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }