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 DentysLCModPack v1.4.5
DentysLCModPack.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using DentysLCModPack.Features.Utilities; using DentysLCModPack.Patches; using GameNetcodeStuff; using HarmonyLib; using LethalLib.Modules; 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("BepInExTestMod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BepInExTestMod")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("32c2d4c4-e4e6-40cc-b491-bbea2dc9cd1d")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace DentysLCModPack { [BepInPlugin("Denty.DentysLCModPack", "DentysLCModPack", "1.4.4")] public class DentysLCModPack : BaseUnityPlugin { public static class ConfigSettings { public static ConfigEntry<bool> testBool; public static ConfigEntry<bool> customMenuMusic; public static ConfigEntry<bool> customMineDetonateAudio; public static ConfigEntry<bool> customMinePressAudio; public static ConfigEntry<bool> customFlowermanNecksnapAudio; public static void BindConfigSettings() { mls.LogInfo((object)"BindingConfigs"); testBool = ((BaseUnityPlugin)Instance).Config.Bind<bool>("Main Settings", "Test Bool", true, "Testing bool bla bla bla, this does nothing."); customMenuMusic = ((BaseUnityPlugin)Instance).Config.Bind<bool>("Main Settings", "Custom Main Menu Music", true, "Should the main menu music be replaced? (Includes easter-egg audio)"); customMineDetonateAudio = ((BaseUnityPlugin)Instance).Config.Bind<bool>("Main Settings", "Custom mine Detonate Audio", true, "Should the mine detonate audio be replaced?"); customMinePressAudio = ((BaseUnityPlugin)Instance).Config.Bind<bool>("Main Settings", "Custom Mine Press Audio", true, "Should the mine press audio be replaced?"); customFlowermanNecksnapAudio = ((BaseUnityPlugin)Instance).Config.Bind<bool>("Main Settings", "Custom Bracken Necksnap Audio", true, "Should the bracken necksnap audio be replaced? (Its tyler1 screaming for help)"); } } private const string modGUILD = "Denty.DentysLCModPack"; private const string modName = "DentysLCModPack"; private const string modVersion = "1.4.4"; private readonly Harmony harmony = new Harmony("Denty.DentysLCModPack"); public static DentysLCModPack Instance; public static string filePath; internal static ManualLogSource mls; public static AssetBundle DentyBundle; public static string MenuMusicPath = "Assets/DentysLCPackBundles/MainMenuAudio.mp3"; public static string SecretMenuMusicPath = "Assets/DentysLCPackBundles/SecretMainMenuAudio.mp3"; public static string MenuCustomImage = "Assets/DentysLCPackBundles/CustomBackground.png"; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } DentyBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "dentyslcpackbundles")); mls = Logger.CreateLogSource("Denty.DentysLCModPack"); mls.LogInfo((object)"DentysLCModPack has been loaded smile"); ConfigSettings.BindConfigSettings(); harmony.PatchAll(typeof(DentysLCModPack)); harmony.PatchAll(typeof(MinePatch)); harmony.PatchAll(typeof(FlowermanAIPatch)); harmony.PatchAll(typeof(MenuPatch)); LoadCustomAssets(); } private static void LoadCustomAssets() { LoadAndRegisterCustomItem("FryingPan", "Assets/DentysLCPackBundles/CustomItems/Scrap/FryingPanScrap/Pan.asset", 100, (LevelTypes)510, 0); } private static void LoadAndRegisterCustomItem(string itemName, string assetPath, int scrapValue, LevelTypes levelType, int shopItemPrice) { //IL_0058: Unknown result type (might be due to invalid IL or missing references) mls.LogInfo((object)("Trying to load custom " + itemName)); Item val = DentyBundle.LoadAsset<Item>(assetPath); if ((Object)(object)val != (Object)null) { mls.LogInfo((object)("Custom " + itemName + " loaded successfully.")); NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab); Items.RegisterScrap(val, scrapValue, levelType); if (shopItemPrice != 0) { Items.RegisterShopItem(val, shopItemPrice); } } else { mls.LogError((object)("Failed to load custom " + itemName + " from path: " + assetPath)); } } } } namespace DentysLCModPack.Patches { internal class FlowermanAIPatch { [HarmonyPatch(typeof(FlowermanAI), "Start")] [HarmonyPostfix] public static void FlowermanNeckSnapPatch(FlowermanAI __instance) { if (DentysLCModPack.ConfigSettings.customFlowermanNecksnapAudio.Value) { AudioClip crackNeckSFX = DentysLCModPack.DentyBundle.LoadAsset<AudioClip>("Assets/DentysLCPackBundles/FlowermanNecksnapAudio.mp3"); __instance.crackNeckSFX = crackNeckSFX; } } } public class MenuPatch { [HarmonyPatch(typeof(MenuManager), "Start")] [HarmonyPostfix] public static void MenuManagerMusicOverridePatch(MenuManager __instance) { if (!DentysLCModPack.ConfigSettings.customMenuMusic.Value) { return; } DentysLCModPack.mls.LogInfo((object)("Attempting to load AudioClip from path: " + DentysLCModPack.MenuMusicPath)); AudioClip val; if (EventProbabilityUtility.ShouldOccurWithProbability(10f)) { val = DentysLCModPack.DentyBundle.LoadAsset<AudioClip>(DentysLCModPack.SecretMenuMusicPath); if ((Object)(object)val != (Object)null) { __instance.menuMusic = val; __instance.MenuAudio.clip = val; __instance.MenuAudio.volume = 0.1f; DentysLCModPack.mls.LogInfo((object)("Secret song patch applied. AudioClip replaced using path: " + DentysLCModPack.SecretMenuMusicPath)); return; } DentysLCModPack.mls.LogInfo((object)("Failed to load secret song AudioClip from path: " + DentysLCModPack.SecretMenuMusicPath)); } val = DentysLCModPack.DentyBundle.LoadAsset<AudioClip>(DentysLCModPack.MenuMusicPath); if ((Object)(object)val != (Object)null) { __instance.menuMusic = val; __instance.MenuAudio.clip = val; __instance.MenuAudio.volume = 0.1f; DentysLCModPack.mls.LogInfo((object)("Menu music patch applied. AudioClip replaced using path: " + DentysLCModPack.MenuMusicPath)); } else { DentysLCModPack.mls.LogInfo((object)("Failed to load AudioClip from path: " + DentysLCModPack.MenuMusicPath)); } } } [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { [HarmonyPatch("Update")] [HarmonyPostfix] private static void InfSprintPatch(ref float ___sprintMeter) { ___sprintMeter = 1f; } } internal class MinePatch { [HarmonyPatch(typeof(Landmine), "Start")] [HarmonyPostfix] public static void MineAudio(Landmine __instance) { if (DentysLCModPack.ConfigSettings.customMineDetonateAudio.Value) { AudioClip mineDetonate = DentysLCModPack.DentyBundle.LoadAsset<AudioClip>("Assets/DentysLCPackBundles/LandMineDetonate.mp3"); __instance.mineDetonate = mineDetonate; } if (DentysLCModPack.ConfigSettings.customMinePressAudio.Value) { AudioClip minePress = DentysLCModPack.DentyBundle.LoadAsset<AudioClip>("Assets/DentysLCPackBundles/LandMinePress.mp3"); __instance.minePress = minePress; } } } } namespace DentysLCModPack.Features.Utilities { internal static class EventProbabilityUtility { public static bool ShouldOccurWithProbability(float percentage) { if (percentage < 0f || percentage > 100f) { throw new ArgumentException("Percentage must be between 0 and 100"); } float num = Random.Range(0f, 100f); return num <= percentage; } } public class BundleUtilities { public static byte[] GetResourceBytes(string filename) { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string[] manifestResourceNames = executingAssembly.GetManifestResourceNames(); string[] array = manifestResourceNames; foreach (string text in array) { if (text.Contains(filename)) { Stream manifestResourceStream = executingAssembly.GetManifestResourceStream(text); if (manifestResourceStream == null) { return null; } byte[] array2 = new byte[manifestResourceStream.Length]; manifestResourceStream.Read(array2, 0, array2.Length); return array2; } } return null; } public static AssetBundle LoadBundleFromInternalAssembly(string filename) { return AssetBundle.LoadFromMemory(GetResourceBytes(filename)); } } }