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 briishduck v1.0.5
angryduck.dll
Decompiled a year agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using AngryDuck.Patches; using BepInEx; using BepInEx.Logging; 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("angryduck")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("angryduck")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("177ce422-ce2b-4a69-838c-55bec10d7e7f")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] [BepInPlugin("atomiclabs.ANGRYDUCK", "Angry Duck", "1.0.0")] public class AngryDuckMod : BaseUnityPlugin { public const string modGUID = "atomiclabs.ANGRYDUCK"; public const string modName = "Angry Duck"; public const string modVersion = "1.0.0"; public static AngryDuckMod instance; public static List<AudioClip> sounds; public static readonly Random random = new Random(); private Harmony harmony; private AssetBundle bundle; internal ManualLogSource logger; public AudioClip attackLoopClip; public AudioClip stunClip; public AudioClip stunStopClip; public AudioClip transformClip; public AudioClip deathClip; public AudioClip noticeClip; private void Awake() { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown logger = ((BaseUnityPlugin)this).Logger; logger.LogInfo((object)"Loading Angry Duck mod..."); if ((Object)(object)instance == (Object)null) { instance = this; harmony = new Harmony("atomiclabs.ANGRYDUCK"); harmony.PatchAll(typeof(EnemyDuckAnimPatch)); sounds = new List<AudioClip>(); string location = ((BaseUnityPlugin)this).Info.Location; location = location.TrimEnd("AngryDuck.dll".ToCharArray()); bundle = AssetBundle.LoadFromFile(location + "angryducksounds"); if ((Object)(object)bundle == (Object)null) { logger.LogError((object)"Failed to load asset bundle!"); return; } sounds = bundle.LoadAllAssets<AudioClip>().ToList(); if (sounds.Count == 0) { logger.LogError((object)"No sounds found in the asset bundle!"); return; } logger.LogInfo((object)$"Loaded {sounds.Count} sounds from asset bundle! First sound: {((Object)sounds[0]).name}"); logger.LogInfo((object)"Successfully started Angry Duck mod!"); attackLoopClip = bundle.LoadAsset<AudioClip>("attackloopsound"); stunClip = bundle.LoadAsset<AudioClip>("stunsound"); stunStopClip = bundle.LoadAsset<AudioClip>("stunstopsound"); transformClip = bundle.LoadAsset<AudioClip>("transformsound"); deathClip = bundle.LoadAsset<AudioClip>("deathsound"); noticeClip = bundle.LoadAsset<AudioClip>("noticesound"); if ((Object)(object)attackLoopClip == (Object)null || (Object)(object)stunClip == (Object)null || (Object)(object)stunStopClip == (Object)null || (Object)(object)transformClip == (Object)null || (Object)(object)deathClip == (Object)null || (Object)(object)noticeClip == (Object)null) { logger.LogError((object)"Failed to load one or more sounds from asset bundle!"); } } else { Object.Destroy((Object)(object)this); } } public AudioClip GetRandomSound() { if (sounds == null || sounds.Count == 0) { logger.LogError((object)"Sounds list is empty or null."); return null; } return sounds[random.Next(sounds.Count)]; } } namespace AngryDuck.Patches; [HarmonyPatch(typeof(EnemyDuckAnim))] internal class EnemyDuckAnimPatch { [HarmonyPatch("Awake")] [HarmonyPostfix] private static void ReplaceAudio(EnemyDuckAnim __instance) { AudioClip randomSound = AngryDuckMod.instance.GetRandomSound(); if ((Object)(object)randomSound != (Object)null) { __instance.quackSound.Sounds = (AudioClip[])(object)new AudioClip[1] { randomSound }; AngryDuckMod.instance.logger.LogInfo((object)("Replaced quack sound with " + ((Object)randomSound).name)); } else { AngryDuckMod.instance.logger.LogError((object)"Failed to get a random quack sound."); } if ((Object)(object)AngryDuckMod.instance.attackLoopClip != (Object)null) { __instance.attackLoopSound.Sounds = (AudioClip[])(object)new AudioClip[1] { AngryDuckMod.instance.attackLoopClip }; AngryDuckMod.instance.logger.LogInfo((object)("Replaced attackLoop sound with " + ((Object)AngryDuckMod.instance.attackLoopClip).name)); } if ((Object)(object)AngryDuckMod.instance.stunClip != (Object)null) { __instance.stunSound.Sounds = (AudioClip[])(object)new AudioClip[1] { AngryDuckMod.instance.stunClip }; AngryDuckMod.instance.logger.LogInfo((object)("Replaced stun sound with " + ((Object)AngryDuckMod.instance.stunClip).name)); } if ((Object)(object)AngryDuckMod.instance.stunStopClip != (Object)null) { __instance.stunStopSound.Sounds = (AudioClip[])(object)new AudioClip[1] { AngryDuckMod.instance.stunStopClip }; AngryDuckMod.instance.logger.LogInfo((object)("Replaced stunStop sound with " + ((Object)AngryDuckMod.instance.stunStopClip).name)); } if ((Object)(object)AngryDuckMod.instance.transformClip != (Object)null) { __instance.transformSound.Sounds = (AudioClip[])(object)new AudioClip[1] { AngryDuckMod.instance.transformClip }; AngryDuckMod.instance.logger.LogInfo((object)("Replaced transform sound with " + ((Object)AngryDuckMod.instance.transformClip).name)); } if ((Object)(object)AngryDuckMod.instance.deathClip != (Object)null) { __instance.deathSound.Sounds = (AudioClip[])(object)new AudioClip[1] { AngryDuckMod.instance.deathClip }; AngryDuckMod.instance.logger.LogInfo((object)("Replaced death sound with " + ((Object)AngryDuckMod.instance.deathClip).name)); } if ((Object)(object)AngryDuckMod.instance.noticeClip != (Object)null) { __instance.noticeSound.Sounds = (AudioClip[])(object)new AudioClip[1] { AngryDuckMod.instance.noticeClip }; AngryDuckMod.instance.logger.LogInfo((object)("Replaced notice sound with " + ((Object)AngryDuckMod.instance.noticeClip).name)); } } }