The BepInEx console will not appear when launching like it does for other games on Thunderstore (you can turn it back on in your BepInEx.cfg file). If your PEAK crashes on startup, add -dx12 to your launch parameters.
Decompiled source of InstantRestoreStamina v1.0.0
InstantRestoreStamina.dll
Decompiled 3 weeks agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; 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("InstantRestoreStamina")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("InstantRestoreStamina")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("fe8851ca-746a-411a-b889-605e2e2ab95a")] [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 InstantRestoreStamina { [BepInPlugin("nexor.InstantRestoreStamina", "InstantRestoreStamina", "1.0.0")] public class InstantRestoreStamina : BaseUnityPlugin { private const string modGUID = "nexor.InstantRestoreStamina"; private const string modName = "InstantRestoreStamina"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("nexor.InstantRestoreStamina"); public static InstantRestoreStamina Instance; internal static ConfigEntry<float> BaseMultiplier; internal static ConfigEntry<bool> EnableTemperatureScaling; internal const float BaseThreshold = 0.1f; internal const float AfflictionFullValue = 600f; internal const bool VerboseLog = false; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } BaseMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("General", "BaseMultiplier", 10f, "基础体力恢复倍率(默认10)"); EnableTemperatureScaling = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableTemperatureScaling", true, "是否让恢复倍率受异常温度影响"); harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)string.Format("{0} {1} loaded. BaseMultiplier={2}, EnableTemperatureScaling={3}", "InstantRestoreStamina", "1.0.0", BaseMultiplier.Value, EnableTemperatureScaling.Value)); } } } namespace InstantRestoreStamina.Patches { [HarmonyPatch(typeof(StaminaBar))] internal static class StaminaBarTap { internal static readonly Dictionary<STATUSTYPE, float> AffRaw = new Dictionary<STATUSTYPE, float>(); private static float lastLogTime; [HarmonyPatch("Update")] [HarmonyPostfix] private static void PostUpdate(StaminaBar __instance) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (__instance?.afflictions == null) { return; } BarAffliction[] afflictions = __instance.afflictions; foreach (BarAffliction val in afflictions) { if (!((Object)(object)val == (Object)null)) { STATUSTYPE afflictionType = val.afflictionType; AffRaw[afflictionType] = val.size; } } bool flag = false; } internal static float GetRaw(STATUSTYPE t) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) float value; return AffRaw.TryGetValue(t, out value) ? value : 0f; } internal static float GetNorm(STATUSTYPE t) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return GetRaw(t) / 600f; } } [HarmonyPatch(typeof(Character))] internal class CharacterPatch { [HarmonyPatch("AddStamina")] [HarmonyPrefix] private static void AddStaminaPrefix(ref float add) { float value = InstantRestoreStamina.BaseMultiplier.Value; float num = value; if (InstantRestoreStamina.EnableTemperatureScaling.Value) { float norm = StaminaBarTap.GetNorm((STATUSTYPE)2); float norm2 = StaminaBarTap.GetNorm((STATUSTYPE)8); float num2 = Mathf.Max(0.1f - (norm + norm2), 0f) / 0.1f; num = Mathf.Max((value - 1f) * num2 + 1f, 1f); bool flag = false; } add *= num; } } }