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 Joe Joblin Bracken v1.2.0
BepInEx/plugins/BrackenRandomizer.dll
Decompiled 2 years 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.Configuration; 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: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("BrackenRandomizer")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("BrackenRandomizer")] [assembly: AssemblyTitle("BrackenRandomizer")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace BrackenRandomizer { public class configValues { public static int value0; public static int value1; public static int value2; public static int value3; public static int value4; public static int value5; public static int value6; public static int defaultRarity; public static int hutchersonRarity; public static int dekuRarity; public static int gokuRarity; public static int mondayRarity; public static int bttbRarity; public static int pipeRarity; } [BepInPlugin("BrackenRandomizer", "BrackenRandomizer", "1.2.2")] public class Plugin : BaseUnityPlugin { public Harmony harmonymain; public static AssetBundle LoadedBundle; public static ConfigEntry<int> defaultBrackenRarity; public static ConfigEntry<int> joshHutchersonRarity; public static ConfigEntry<int> dekuRarity; public static ConfigEntry<int> gokuRarity; public static ConfigEntry<int> mondayRarity; public static ConfigEntry<int> badToTheBoneRarity; public static ConfigEntry<int> metalPipeRarity; public static ConfigEntry<bool> shouldDefaultBrackenSpawn; public static ConfigEntry<bool> shouldJoshHutchersonSpawn; public static ConfigEntry<bool> shouldDekuSpawn; public static ConfigEntry<bool> shouldGokuSpawn; public static ConfigEntry<bool> shouldMondaySpawn; public static ConfigEntry<bool> shouldBadToTheBoneSpawn; public static ConfigEntry<bool> shouldMetalPipeSpawn; private void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown harmonymain = new Harmony("BrackenRandomizer"); harmonymain.PatchAll(); shouldDefaultBrackenSpawn = ((BaseUnityPlugin)this).Config.Bind<bool>("Variations.Toggles", "shouldDefaultBrackenSpawn?", true, (ConfigDescription)null); shouldJoshHutchersonSpawn = ((BaseUnityPlugin)this).Config.Bind<bool>("Variations.Toggles", "shouldJoshHutchersonSpawn?", true, (ConfigDescription)null); shouldDekuSpawn = ((BaseUnityPlugin)this).Config.Bind<bool>("Variations.Toggles", "shouldDekuSpawn?", true, (ConfigDescription)null); shouldGokuSpawn = ((BaseUnityPlugin)this).Config.Bind<bool>("Variations.Toggles", "shouldGokuSpawn?", true, (ConfigDescription)null); shouldMondaySpawn = ((BaseUnityPlugin)this).Config.Bind<bool>("Variations.Toggles", "shouldMondayLeftMeBrokenSpawn?", true, (ConfigDescription)null); shouldBadToTheBoneSpawn = ((BaseUnityPlugin)this).Config.Bind<bool>("Variations.Toggles", "shouldBadToTheBoneSpawn?", true, (ConfigDescription)null); shouldMetalPipeSpawn = ((BaseUnityPlugin)this).Config.Bind<bool>("Variations.Toggles", "shouldMetalPipeSpawn?", true, (ConfigDescription)null); defaultBrackenRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Variations", "NormalBrackenRarity", 25, "Standard Bracken Spawnrate, all Variation values should add up to 100"); joshHutchersonRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Variations", "JoshHutchersonRarity", 20, "Josh Hutcherson Variation Spawnrate, all Variation values should add up to 100"); dekuRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Variations", "DekuRarity", 15, "Deku Variation Spawnrate (Default 25), all values should add up to 100"); gokuRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Variations", "GokuRarity", 15, "Goku Variation Spawnrate, all Variation values should add up to 100"); mondayRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Variations", "MondayLeftMeBrokenRarity", 10, "Monday left me Broken Variation Spawnrate, all Variation values should add up to 100"); badToTheBoneRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Variations", "BadToTheBoneRarity", 10, "Bad to the Bone Variation Spawnrate, all Variation values should add up to 100"); metalPipeRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Variations", "MetalPipeRarity", 5, "Metal Pipe Variation Spawnrate, all Variation values should add up to 100"); configValues.defaultRarity = (configValues.hutchersonRarity = (configValues.dekuRarity = (configValues.gokuRarity = (configValues.mondayRarity = (configValues.bttbRarity = (configValues.pipeRarity = 0)))))); if (shouldDefaultBrackenSpawn.Value) { configValues.defaultRarity = defaultBrackenRarity.Value; } if (shouldJoshHutchersonSpawn.Value) { configValues.hutchersonRarity = joshHutchersonRarity.Value; } if (shouldDekuSpawn.Value) { configValues.dekuRarity = dekuRarity.Value; } if (shouldGokuSpawn.Value) { configValues.gokuRarity = gokuRarity.Value; } if (shouldMondaySpawn.Value) { configValues.mondayRarity = mondayRarity.Value; } if (shouldBadToTheBoneSpawn.Value) { configValues.bttbRarity = badToTheBoneRarity.Value; } if (shouldMetalPipeSpawn.Value) { configValues.pipeRarity = metalPipeRarity.Value; } configValues.value0 = configValues.defaultRarity; configValues.value1 = configValues.value0 + configValues.hutchersonRarity; configValues.value2 = configValues.value1 + configValues.dekuRarity; configValues.value3 = configValues.value2 + configValues.gokuRarity; configValues.value4 = configValues.value3 + configValues.mondayRarity; configValues.value5 = configValues.value4 + configValues.bttbRarity; configValues.value6 = configValues.value5 + configValues.pipeRarity; string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "brackenrandomizer"); AssetBundle val = AssetBundle.LoadFromFile(text); if ((Object)(object)val == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load BrackenRandomizer AssetBundle! (Bundle should be located in the same folder as mod!)"); return; } ((BaseUnityPlugin)this).Logger.LogInfo((object)"Successfully loaded BrackenRandomizer AssetBundle!"); LoadedBundle = val; ((BaseUnityPlugin)this).Logger.LogInfo((object)"BrackenRandomizer loaded."); ((BaseUnityPlugin)this).Logger.LogInfo((object)$"Config Info: {defaultBrackenRarity.Value}% {shouldDefaultBrackenSpawn.Value}, {joshHutchersonRarity.Value}% {shouldJoshHutchersonSpawn.Value}, {dekuRarity.Value}% {shouldDekuSpawn.Value}, {gokuRarity.Value}% {shouldGokuSpawn.Value}, {mondayRarity.Value}% {shouldMondaySpawn.Value}, {badToTheBoneRarity.Value}% {shouldBadToTheBoneSpawn.Value}, {metalPipeRarity.Value}% {shouldMetalPipeSpawn.Value}"); ((BaseUnityPlugin)this).Logger.LogInfo((object)$"Config Values: {configValues.value0}, {configValues.value1}, {configValues.value2}, {configValues.value3}, {configValues.value4}, {configValues.value5}, {configValues.value6}"); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "BrackenRandomizer"; public const string PLUGIN_NAME = "BrackenRandomizer"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace BrackenRandomizer.Patches { [HarmonyPatch] internal class EnemyTypes { [HarmonyPatch(typeof(FlowermanAI), "Start")] [HarmonyPostfix] public static void SummonRBracken(FlowermanAI __instance) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Expected O, but got Unknown //IL_0354: Unknown result type (might be due to invalid IL or missing references) ManualLogSource val = new ManualLogSource("BrackenRandomizer"); Logger.Sources.Add((ILogSource)(object)val); string text = "null"; string text2 = "null"; string text3 = "null"; string text4 = "null"; string text5 = "null"; string arg = "null"; int num = -1; val.LogInfo((object)"Rolling..."); int num2 = new Random().Next(1, configValues.value6); val.LogInfo((object)$"Rolled {num2}!"); int num3 = num2; int num4 = num3; if (num4 < configValues.value0 && num4 >= 0) { val.LogInfo((object)$"Summoned Normal Bracken at {configValues.defaultRarity} chance"); return; } int num5 = num4; if (num5 < configValues.value1 + configValues.defaultRarity && num5 >= configValues.value0) { text = "assets/hutcherson/whistlefull.mp3"; text2 = "assets/hutcherson/whistle.mp3"; text5 = "assets/hutcherson/JoshHutcherson.prefab"; arg = "Josh Hutcherson"; num = configValues.hutchersonRarity; } else { int num6 = num4; if (num6 < configValues.value2 + configValues.defaultRarity && num6 >= configValues.value1) { text = "assets/deku/deku_chase_alt.mp3"; text2 = "assets/deku/deku_necksnap.mp3"; text3 = "assets/deku/deku_growl.mp3"; text5 = "assets/deku/Deku.prefab"; arg = "Deku"; num = configValues.dekuRarity; } else { int num7 = num4; if (num7 < configValues.value3 && num7 >= configValues.value2) { text = "assets/goku/ultra.mp3"; text2 = "assets/goku/mods.mp3"; text5 = "assets/goku/Gok.prefab"; arg = "Goku"; num = configValues.gokuRarity; } else { int num8 = num4; if (num8 < configValues.value4 && num8 >= configValues.value3) { text = "assets/mond/monday.mp3"; text2 = "assets/mond/monday.mp3"; text5 = "assets/mond/Monday.prefab"; arg = "Monday left me Broken"; num = configValues.mondayRarity; } else { int num9 = num4; if (num9 < configValues.value5 && num9 >= configValues.value4) { text = "assets/bttb/bttb_full.mp3"; text2 = "assets/bttb/bttb.mp3"; text3 = "assets/bttb/bttb.mp3"; text5 = "assets/bttb/BadToTheBone.prefab"; arg = "Bone to the Bone"; num = configValues.bttbRarity; } else { int num10 = num4; if (num10 < configValues.value6 && num10 >= configValues.value5) { text = "assets/pipe/pipe_full.mp3"; text2 = "assets/pipe/pipe.mp3"; text5 = "assets/pipe//Pipe.prefab"; arg = "Metal Pipe"; num = configValues.pipeRarity; } } } } } } PlayAudioAnimationEvent component = ((Component)((Component)__instance).gameObject.transform.Find("FlowermanModel").Find("AnimContainer")).GetComponent<PlayAudioAnimationEvent>(); Object.Destroy((Object)((Component)((Component)__instance).gameObject.transform.Find("FlowermanModel").Find("LOD1")).gameObject.GetComponent<SkinnedMeshRenderer>()); __instance.creatureAngerVoice.clip = Plugin.LoadedBundle.LoadAsset<AudioClip>(text ?? ""); __instance.crackNeckSFX = Plugin.LoadedBundle.LoadAsset<AudioClip>(text2 ?? ""); __instance.crackNeckAudio.clip = Plugin.LoadedBundle.LoadAsset<AudioClip>(text2 ?? ""); if (text3 != "null") { component.audioClip = Plugin.LoadedBundle.LoadAsset<AudioClip>(text3 ?? ""); } GameObject val2 = Object.Instantiate<GameObject>(Plugin.LoadedBundle.LoadAsset<GameObject>(text5 ?? ""), ((Component)__instance).gameObject.transform); val2.transform.localPosition = new Vector3(0f, 1.5f, 0f); val.LogInfo((object)$"Summoned {arg} at {num} chance"); } } }