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 The Enchiridion v0.0.6
The_Enchiridion/Joes_Enchiridion_Mod.dll
Decompiled a year agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using Additional.Utils; using BepInEx; using BepInEx.Logging; using HarmonyLib; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("Joes_Enchiridion_Mod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Joes_Enchiridion_Mod")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("89d4d2a8-cc26-44ed-adbb-bfd7feeb647b")] [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 Joes_Enchiridion_Mod { public static class InternalInfo { public const string Plugin_Name = "The Enchiridion"; public const string Plugin_Ver = "0.0.6.0"; public const string Plugin_UI = "thecooljoe.Enchiridion"; } [BepInPlugin("thecooljoe.Enchiridion", "The Enchiridion", "0.0.6.0")] public class Enchiridion : BaseUnityPlugin { public static Enchiridion Instance; public static ManualLogSource mls; private readonly Harmony harmony = new Harmony("thecooljoe.Enchiridion"); public static Texture2D Decals; public static AssetBundle DecalBundle; public static List<AudioClip> SoundFX; public static List<AudioClip> IntroFX; public static bool IntroPlayed; private void Awake() { mls = ((BaseUnityPlugin)this).Logger; if ((Object)(object)Instance == (Object)null) { Instance = this; } mls.LogInfo((object)"A WARNING:\nThe Enchiridion is the most dangerous mod in the Multiverse. Exercise EXTREME caution while using it."); harmony.PatchAll(); SetupMenuAudio(); SetupMenuImage(); } public void SetupMenuAudio() { string location = ((BaseUnityPlugin)Instance).Info.Location; location = location.TrimEnd("Joes_Enchiridion_Mod.dll".ToCharArray()); AssetBundle val = AssetBundle.LoadFromFile(location + "menumusicfiles"); AssetBundle val2 = AssetBundle.LoadFromFile(location + "menuintros"); if ((Object)(object)val2 != (Object)null) { IntroFX = val2.LoadAllAssets<AudioClip>().ToList(); } else { mls.LogWarning((object)"Main Menu Intro Theme failed to load..."); } if ((Object)(object)val != (Object)null) { SoundFX = val.LoadAllAssets<AudioClip>().ToList(); } else { mls.LogWarning((object)"Main Menu Theme failed to load..."); } } public void SetupMenuImage() { string location = ((BaseUnityPlugin)Instance).Info.Location; location = location.TrimEnd("Joes_Enchiridion_Mod.dll".ToCharArray()); AssetBundle val = AssetBundle.LoadFromFile(location + "menudecals"); if ((Object)(object)val != (Object)null) { Decals = val.LoadPersistentAsset<Texture2D>("EELogo.png"); } else { mls.LogWarning((object)"Main Menu Logo failed to load..."); } } } } namespace Joes_Enchiridion_Mod.Patches { [HarmonyPatch(typeof(MenuManager), "Awake")] internal class MainMenuPatch { [CompilerGenerated] private sealed class <PlayMusicDelayed>d__1 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public MenuManager __instance; private Random <rng>5__1; private int <rand1>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <PlayMusicDelayed>d__1(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <rng>5__1 = null; <>1__state = -2; } private bool MoveNext() { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; if (!Enchiridion.IntroPlayed) { <>2__current = (object)new WaitForSeconds(__instance.menuMusic.length); <>1__state = 1; return true; } break; case 1: <>1__state = -1; Enchiridion.IntroPlayed = true; break; } <rng>5__1 = new Random(); <rand1>5__2 = <rng>5__1.Next(12); __instance.menuMusic = Enchiridion.SoundFX[<rand1>5__2]; __instance.MenuAudio.clip = __instance.menuMusic; __instance.MenuAudio.loop = true; __instance.MenuAudio.Play(); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [HarmonyPatch("Start")] [HarmonyPostfix] public static void NewMusic(MenuManager __instance) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) if (__instance.isInitScene) { return; } if ((Object)(object)Enchiridion.Decals != (Object)null) { Sprite sprite = Sprite.Create(Enchiridion.Decals, new Rect(0f, 0f, (float)((Texture)Enchiridion.Decals).width, (float)((Texture)Enchiridion.Decals).height), new Vector2(0.5f, 0.5f)); GameObject gameObject = ((Component)((Component)__instance).transform.parent).gameObject; Transform val = gameObject.transform.Find("MenuContainer/MainButtons/HeaderImage"); if ((Object)(object)val != (Object)null) { val.localScale = new Vector3(6.15f, 5.06f, 6.15f); ((Component)val).gameObject.GetComponent<Image>().sprite = sprite; } Transform val2 = gameObject.transform.Find("MenuContainer/LoadingScreen"); if ((Object)(object)val2 != (Object)null) { val2.localScale = new Vector3(1.02f, 1.06f, 1.02f); Transform val3 = val2.Find("Image"); if ((Object)(object)val3 != (Object)null) { ((Component)val3).GetComponent<Image>().sprite = sprite; } } } if (Enchiridion.SoundFX != null && Enchiridion.IntroFX != null) { if (!Enchiridion.IntroPlayed) { Random random = new Random(); AudioSource menuAudio = __instance.MenuAudio; int index = random.Next(5); menuAudio.Stop(); menuAudio.loop = false; __instance.menuMusic = Enchiridion.IntroFX[index]; menuAudio.Play(); } ((MonoBehaviour)__instance).StartCoroutine(PlayMusicDelayed(__instance)); } } [IteratorStateMachine(typeof(<PlayMusicDelayed>d__1))] [HarmonyPatch] public static IEnumerator PlayMusicDelayed(MenuManager __instance) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <PlayMusicDelayed>d__1(0) { __instance = __instance }; } } } namespace Additional.Utils { public class BundleUtilities { public static byte[] GetResourceBytes(string filename, Assembly assembly) { string[] manifestResourceNames = assembly.GetManifestResourceNames(); foreach (string text in manifestResourceNames) { if (!text.Contains(filename)) { continue; } using Stream stream = assembly.GetManifestResourceStream(text); if (stream == null) { return null; } byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); return array; } return null; } public static AssetBundle LoadBundleFromInternalAssembly(string filename, Assembly assembly) { return AssetBundle.LoadFromMemory(GetResourceBytes(filename, assembly)); } } public static class AssetBundleExtension { public static T LoadPersistentAsset<T>(this AssetBundle bundle, string name) where T : Object { Object val = bundle.LoadAsset(name); if (val != (Object)null) { val.hideFlags = (HideFlags)32; return (T)(object)val; } return default(T); } } }