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 PeakCringe TomScream v0.1.0
plugins/com.github.baphometcrafts.PeakCringe.TomScream.dll
Decompiled 2 months agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; 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("com.github.baphometcrafts.PeakCringe.TomScream")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.1.0.0")] [assembly: AssemblyInformationalVersion("0.1.0")] [assembly: AssemblyProduct("com.github.baphometcrafts.PeakCringe.TomScream")] [assembly: AssemblyTitle("PeakCringe Tom Scream")] [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 PeakCringe { [BepInPlugin("com.github.baphometcrafts.PeakCringe.TomScream", "PeakCringe Tom Scream", "0.1.0")] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Log; internal static AssetBundle assets; internal static SFX_Instance tomScreamSFX = (SFX_Instance)ScriptableObject.CreateInstance("SFX_Instance"); public const string Id = "com.github.baphometcrafts.PeakCringe.TomScream"; public static string Name => "PeakCringe Tom Scream"; public static string Version => "0.1.0"; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; Log.LogInfo((object)("Plugin " + Name + " is loaded!")); LoadAudioClips(); Harmony.CreateAndPatchAll(typeof(Patcher), (string)null); } private void LoadAudioClips() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); assets = AssetBundle.LoadFromFile(Path.Combine(directoryName, "tomscream")); if ((Object)(object)assets == (Object)null) { Log.LogError((object)"Failed to load custom assets."); return; } assets.LoadAllAssets(); LoadClip(tomScreamSFX, "assets/audioclip/Tom_Scream_Ow.mp3", 1000); } private void LoadClip(SFX_Instance reference, string path, int range) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown AudioClip val = assets.LoadAsset<AudioClip>(path); reference.settings = new SFX_Settings(); reference.settings.range = range; reference.settings.volume = 1f; reference.settings.pitch_Variation = 0.5f; reference.settings.spatialBlend = 0.7f; AudioClip[] clips = (AudioClip[])(object)new AudioClip[1] { val }; reference.clips = clips; } } public static class Patcher { [HarmonyPostfix] [HarmonyPatch(typeof(Character), "Awake")] public static void AwakePatch(Character __instance) { ((Component)__instance).gameObject.AddComponent<SlideManager>(); Plugin.Log.LogInfo((object)("Added Component to character: " + __instance.characterName)); } } public class SlideManager : MonoBehaviour { private int slideCooldown = 10; private DateTime lastSlideTime; private int slideTimeBeforeScream = 1; private DateTime timeStartedSliding; private bool isSliding; internal static ManualLogSource Log { get; private set; } private void Awake() { } private void Update() { SlideAndScream(); } private void SlideAndScream() { //IL_008b: Unknown result type (might be due to invalid IL or missing references) Character component = ((Component)this).GetComponent<Character>(); if (component.IsSliding()) { if (!isSliding) { timeStartedSliding = DateTime.Now; } isSliding = true; if (DateTime.Compare(lastSlideTime.AddSeconds(slideCooldown), DateTime.Now) <= 0 && DateTime.Compare(timeStartedSliding.AddSeconds(slideTimeBeforeScream), DateTime.Now) < 0) { Plugin.Log.LogInfo((object)(component.characterName + " is screaming!!!")); Plugin.tomScreamSFX.Play(component.Center); lastSlideTime = DateTime.Now; } } else { isSliding = false; } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }