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 MineshaftRescaler v1.1.1
Tomatobird.MineshaftRescaler.dll
Decompiled a month agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using DunGen; using HarmonyLib; using Microsoft.CodeAnalysis; using MineshaftRescaler.Patches; 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 = ".NET Standard 2.1")] [assembly: AssemblyCompany("Tomatobird.MineshaftRescaler")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.1.1.0")] [assembly: AssemblyInformationalVersion("1.1.1+b5b14e2ea6c5fc2d24a7a667ec34d931031de979")] [assembly: AssemblyProduct("MineshaftRescaler")] [assembly: AssemblyTitle("Tomatobird.MineshaftRescaler")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.1.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] 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; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace MineshaftRescaler { [BepInPlugin("Tomatobird.MineshaftRescaler", "MineshaftRescaler", "1.1.1")] public class MineshaftRescaler : BaseUnityPlugin { public static bool applyMineshaftSizeChanges; public static int minLength; public static int maxLength; public static float mainLength; public static float cavesLength; public static float fireLength; public static bool changeMineshaftLootBonus; public static int lootAmountBonus; public static MineshaftRescaler Instance { get; private set; } internal static ManualLogSource Logger { get; private set; } internal static Harmony? Harmony { get; set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; applyMineshaftSizeChanges = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "ApplyMineshaftSizeChanges", true, "Applies the mineshaft size changes listed below.").Value; minLength = ((BaseUnityPlugin)this).Config.Bind<int>("General", "MinLength", 14, "Minimum generation length").Value; maxLength = ((BaseUnityPlugin)this).Config.Bind<int>("General", "MaxLength", 18, "Maximum generation length").Value; mainLength = ((BaseUnityPlugin)this).Config.Bind<float>("General", "MainLength", 0.25f, "Relative length of the Main side section.").Value; cavesLength = ((BaseUnityPlugin)this).Config.Bind<float>("General", "CavesLength", 0.6f, "Relative length of the caves section.").Value; fireLength = ((BaseUnityPlugin)this).Config.Bind<float>("General", "FireLength", 0.15f, "Relative length of the Fire side section.").Value; changeMineshaftLootBonus = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "ChangeMineshaftLootBonus", false, "Change the bonus amount of loot to spawn in the mineshaft interior.").Value; lootAmountBonus = ((BaseUnityPlugin)this).Config.Bind<int>("General", "LootAmountBonus", 6, "Amount of extra loot to spawn in mineshaft.").Value; Patch(); Logger.LogInfo((object)"Tomatobird.MineshaftRescaler v1.1.1 has loaded!"); } internal static void Patch() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown if (Harmony == null) { Harmony = new Harmony("Tomatobird.MineshaftRescaler"); } if (applyMineshaftSizeChanges) { Logger.LogDebug((object)"Patching... PreGenerateDungeonPatch"); Harmony.PatchAll(typeof(PreGenerateDungeonPatch)); } if (changeMineshaftLootBonus) { Logger.LogDebug((object)"Patching... RoundManager"); Harmony.PatchAll(typeof(RoundManagerPatch)); } Logger.LogDebug((object)"Finished patching!"); } internal static void Unpatch() { Logger.LogDebug((object)"Unpatching..."); Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } Logger.LogDebug((object)"Finished unpatching!"); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "Tomatobird.MineshaftRescaler"; public const string PLUGIN_NAME = "MineshaftRescaler"; public const string PLUGIN_VERSION = "1.1.1"; } } namespace MineshaftRescaler.Patches { [HarmonyPatch(typeof(Dungeon))] public class PreGenerateDungeonPatch { [HarmonyPatch("PreGenerateDungeon")] [HarmonyPostfix] private static void PreGenerateDungeonPostfix(Dungeon __instance) { if (((Object)__instance.DungeonFlow).name == "Level3Flow") { MineshaftRescaler.Logger.LogDebug((object)"Level3Flow detected, applying dungeon generation changes."); __instance.DungeonFlow.Length.Min = MineshaftRescaler.minLength; __instance.DungeonFlow.Length.Max = MineshaftRescaler.maxLength; float num = MineshaftRescaler.mainLength + MineshaftRescaler.cavesLength + MineshaftRescaler.fireLength; float num2 = MineshaftRescaler.mainLength / num; float num3 = MineshaftRescaler.cavesLength / num; float length = MineshaftRescaler.fireLength / num; __instance.DungeonFlow.Lines[0].Length = num2; __instance.DungeonFlow.Lines[1].Position = num2; __instance.DungeonFlow.Lines[1].Length = num3; __instance.DungeonFlow.Lines[2].Position = num2 + num3; __instance.DungeonFlow.Lines[2].Length = length; } } } [HarmonyPatch(typeof(RoundManager))] internal class RoundManagerPatch { [HarmonyPatch("SpawnScrapInLevel")] [HarmonyTranspiler] internal static IEnumerable<CodeInstruction> ChangeMinshaftLootBonus(IEnumerable<CodeInstruction> instructions) { int num = -1; List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 10; i < list.Count; i++) { if (list[i - 2].opcode == OpCodes.Ldloc_1 && list[i - 1].opcode == OpCodes.Ldc_I4_6 && list[i].opcode == OpCodes.Add) { num = i - 1; break; } } if (num > -1) { list[num].opcode = OpCodes.Ldc_I4_S; list[num].operand = (sbyte)MineshaftRescaler.lootAmountBonus; MineshaftRescaler.Logger.LogDebug((object)"Successfully injected new loot bonus count."); } else { MineshaftRescaler.Logger.LogError((object)"Failed to inject new mineshaft loot bonus amount. ldcloc.1 -> ldc.i4.6 -> add not found in RoundManager.SpawnScrapInLevel."); } return list; } } }