Please disclose if your mod was created primarily 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 HornMoan v2.1.0
HornMoan.dll
Decompiled 6 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("HornMoan")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("HornMoan")] [assembly: AssemblyTitle("HornMoan")] [assembly: AssemblyVersion("1.0.0.0")] 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; } } } namespace HornMoan { [BepInPlugin("MetalPipeSFX.HornMoan", "HornMoan", "2.1.0")] public class HornMoanBase : BaseUnityPlugin { private const string modGUID = "MetalPipeSFX.HornMoan"; private const string modName = "HornMoan"; private const string modVersion = "2.1.0"; private static HornMoanBase Instance; private readonly Harmony harmony = new Harmony("MetalPipeSFX.HornMoan"); internal ManualLogSource mls = null; public void Awake() { mls = Logger.CreateLogSource("MetalPipeSFX.HornMoan"); mls.LogInfo((object)"The Moaning is Loading"); if ((Object)(object)Instance == (Object)null) { Instance = this; } harmony.PatchAll(); mls.LogInfo((object)"Loaded The Moaning Successfully"); } } [HarmonyPatch(typeof(GrabbableObject))] internal class PipePatch { private static List<string> audios = new List<string> { "Moaning1.mp3", "MoaningFar.mp3" }; private static List<AudioClip> clips = new List<AudioClip>(); private static string uPath = Path.Combine(Paths.PluginPath + "\\MetalPipeSFX-HornMoan\\"); [HarmonyPatch("Start")] [HarmonyPostfix] private static void AudioPatch(GrabbableObject __instance) { ManualLogSource val = Logger.CreateLogSource("MetalPipeSFX.HornMoan"); for (int i = 0; i < audios.Count; i++) { LoadAudioClip(uPath + audios[i]); } if ((Object)(object)__instance != (Object)null && (Object)(object)((Component)__instance).GetComponent<NoisemakerProp>() != (Object)null && ((Object)__instance.itemProperties).name == "Airhorn") { val.LogMessage((object)"We found an Airhorn!!"); ((Component)__instance).GetComponent<NoisemakerProp>().noiseSFX[0] = clips[0]; ((Component)__instance).GetComponent<NoisemakerProp>().noiseSFXFar[0] = clips[1]; val.LogMessage((object)((Object)((Component)__instance).GetComponent<NoisemakerProp>().noiseSFX[0]).name); val.LogMessage((object)((Object)((Component)__instance).GetComponent<NoisemakerProp>().noiseSFXFar[0]).name); } } private static void LoadAudioClip(string filepath) { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Invalid comparison between Unknown and I4 ManualLogSource val = Logger.CreateLogSource("MetalPipeSFX.HornMoan"); UnityWebRequest audioClip = UnityWebRequestMultimedia.GetAudioClip(filepath, (AudioType)13); audioClip.SendWebRequest(); while (!audioClip.isDone) { } if (audioClip.error != null) { val.LogError((object)("Error loading sounds: " + filepath + "\n" + audioClip.error)); } AudioClip content = DownloadHandlerAudioClip.GetContent(audioClip); if (Object.op_Implicit((Object)(object)content) && (int)content.loadState == 2) { val.LogInfo((object)("Loaded " + filepath)); ((Object)content).name = Path.GetFileName(filepath); clips.Add(content); } } } }