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 AscentLab v0.2.0
plugins/com.github.Shorts71.AscentLab.dll
Decompiled a month 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 HarmonyLib; using Microsoft.CodeAnalysis; [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("com.github.Shorts71.AscentLab")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.1.0.0")] [assembly: AssemblyInformationalVersion("0.1.0")] [assembly: AssemblyProduct("com.github.Shorts71.AscentLab")] [assembly: AssemblyTitle("AscentLab")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.1.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.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] [Microsoft.CodeAnalysis.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] [Microsoft.CodeAnalysis.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 AscentLab { [BepInPlugin("com.Shorts.AscentLab", "Ascent Lab", "0.1.0")] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Logger; public static ConfigEntry<int> ascentNumber; public static ConfigEntry<bool> hungerAfflictionToggle; private void Awake() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown ascentNumber = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Ascent #", 6, new ConfigDescription("Sets the Ascent # when playing on the modded Tenderfoot difficulty.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 7), Array.Empty<object>())); hungerAfflictionToggle = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "Hunger Affliction Toggle", true, new ConfigDescription("Determines if hunger builds up during your expedition.", (AcceptableValueBase)null, Array.Empty<object>())); Logger = ((BaseUnityPlugin)this).Logger; Harmony val = new Harmony("com.Shorts.AscentLab"); val.PatchAll(); Logger.LogInfo((object)"Ascent Lab mod loaded!"); } } } namespace AscentLab.AscentModifiers { [HarmonyPatch(/*Could not decode attribute arguments.*/)] public static class climbStaminaChange { private static bool Prefix(ref float __result) { if (Plugin.ascentNumber.Value >= 6 && Ascents.currentAscent == -1) { __result = 1.4f; Plugin.Logger.LogInfo((object)$"[StatChange] climbStaminaMultiplier overridden, value is now {__result}"); } else if (Ascents.currentAscent >= 6) { __result = 1.4f; Plugin.Logger.LogInfo((object)$"[StatChange] climbStaminaMultiplier overridden, value is now {__result}"); } else { __result = 1f; Plugin.Logger.LogInfo((object)$"[StatChange] climbStaminaMultiplier overridden, value is now {__result}"); } Plugin.Logger.LogInfo((object)$"[StatChange] climbStaminaMultiplier overridden, value is now {__result}"); return false; } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] public static class fallDamageChange { private static bool Prefix(ref float __result) { if (Plugin.ascentNumber.Value < 1 && Ascents.currentAscent == -1) { __result = 1f; Plugin.Logger.LogInfo((object)$"[StatChange] fallDamageMultiplier overridden, value is now {__result}"); } else if (Ascents.currentAscent == 0) { __result = 1f; Plugin.Logger.LogInfo((object)$"[StatChange] fallDamageMultiplier overridden, value is now {__result}"); } else if (Ascents.currentAscent >= 1) { __result = 2f; Plugin.Logger.LogInfo((object)$"[StatChange] fallDamageMultiplier overridden, value is now {__result}"); } else { __result = 2f; Plugin.Logger.LogInfo((object)$"[StatChange] fallDamageMultiplier overridden, value is now {__result}"); } Plugin.Logger.LogInfo((object)$"[StatChange] fallDamageMultiplier overridden, value is now {__result}"); return false; } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] public static class hungerRateChange { private static bool Prefix(ref float __result) { if (!Plugin.hungerAfflictionToggle.Value && Ascents.currentAscent == -1) { __result = 0f; Plugin.Logger.LogInfo((object)$"[StatChange] hungerRateMultiplier overridden, value is now {__result}"); } else if (Plugin.ascentNumber.Value >= 2 && Ascents.currentAscent == -1) { __result = 1.6f; Plugin.Logger.LogInfo((object)$"[StatChange] hungerRateMultiplier overridden, value is now {__result}"); } else if (Ascents.currentAscent < 2) { __result = 1f; Plugin.Logger.LogInfo((object)$"[StatChange] hungerRateMultiplier overridden, value is now {__result}"); } else { __result = 1.6f; Plugin.Logger.LogInfo((object)$"[StatChange] hungerRateMultiplier overridden, value is now {__result}"); } Plugin.Logger.LogInfo((object)$"[StatChange] hungerRateMultiplier overridden, value is now {__result}"); return false; } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] public static class itemWeightModifierPatch { private static bool Prefix(ref int __result) { if (Plugin.ascentNumber.Value >= 3 && Ascents.currentAscent == -1) { __result = 1; Plugin.Logger.LogInfo((object)$"[StatChange] itemWeightModifier overridden, value is now {__result}"); } else if (Ascents.currentAscent >= 3) { __result = 1; Plugin.Logger.LogInfo((object)$"[StatChange] itemWeightModifier overridden, value is now {__result}"); } else { __result = 0; Plugin.Logger.LogInfo((object)$"[StatChange] itemWeightModifier overridden, value is now {__result}"); } Plugin.Logger.LogInfo((object)$"[StatChange] itemWeightModifier overridden, value is now {__result}"); return false; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }