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 ClassicMoonsHQModule v1.0.2
Tomatobird.ClassicMoonsHQModule.dll
Decompiled 2 weeks agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Logging; using ClassicMoonsHQModule.Patches; using HarmonyLib; using LethalLevelLoader; using LethalLevelLoader.Tools; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.SceneManagement; [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.ClassicMoonsHQModule")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.2.0")] [assembly: AssemblyInformationalVersion("1.0.2+121d93db0d3c86c40e31cd2bafdf14454701c158")] [assembly: AssemblyProduct("ClassicMoonsHQModule")] [assembly: AssemblyTitle("Tomatobird.ClassicMoonsHQModule")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.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 ClassicMoonsHQModule { [BepInPlugin("Tomatobird.ClassicMoonsHQModule", "ClassicMoonsHQModule", "1.0.2")] public class ClassicMoonsHQModule : BaseUnityPlugin { internal static Dictionary<string, PluginInfo> pluginInfos = new Dictionary<string, PluginInfo>(); public static ClassicMoonsHQModule Instance { get; private set; } = null; internal static ManualLogSource Logger { get; private set; } = null; internal static Harmony? Harmony { get; set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; pluginInfos = Chainloader.PluginInfos; Patch(); SceneManager.sceneLoaded += OnSceneLoad; Logger.LogInfo((object)"Tomatobird.ClassicMoonsHQModule v1.0.2 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.ClassicMoonsHQModule"); } Logger.LogDebug((object)"Patching..."); Harmony.PatchAll(typeof(MenuManagerPatcher)); if (Chainloader.PluginInfos.TryGetValue("imabatby.lethallevelloader", out var value)) { if (value.Metadata.Version >= new Version(PackDefinition.v73Mods["imabatby.lethallevelloader"])) { Harmony.PatchAll(typeof(LLLConfigLoaderPatcher_v2)); } else { Harmony.PatchAll(typeof(LLLConfigLoaderPatcher_v1)); } } Logger.LogDebug((object)"Finished patching!"); } internal static void OnSceneLoad(Scene scene, LoadSceneMode mode) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) if (((Scene)(ref scene)).name == "TutorialMoonScene") { EditVerdanceScene(scene); } } internal static void EditVerdanceScene(Scene scene) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) Logger.LogInfo((object)"Editing Verdance Scene."); Transform val = ((Scene)(ref scene)).GetRootGameObjects()[2].transform.Find("ItemShipAnimContainer/ItemShip/ItemSpawnPositions/DropshipSpawn (1)"); val.position += new Vector3(0f, 0.15f, 0f); } } internal static class OtherPluginInfos { public const string HQFIXES_GUID = "chboo1.lethalcompany.hqfixes"; public const string WEATHERREGISTRY_GUID = "mrov.WeatherRegistry"; public const string LLL_GUID = "imabatby.lethallevelloader"; public const string JLL_GUID = "JacobG5.JLL"; public const string MROVLIB_GUID = "MrovLib"; public const string FREEMOONS_GUID = "SlushyRH.LethalCompany.FreeMoons"; public const string CULLFACTORY_GUID = "com.fumiko.CullFactory"; public const string LETHALLIB_GUID = "evaisa.lethallib"; public const string PATHFINDINGLIB_GUID = "Zaggy1024.PathfindingLib"; public const string PATHFINDINGLAGFIX_GUID = "Zaggy1024.PathfindingLagFix"; public const string STARLANCERAIFIX_GUID = "AudioKnight.StarlancerAIFix"; public const string STREAMOVERLAYS_GUID = "com.github.zehsteam.StreamOverlays"; public const string LOADSTONE_GUID = "com.adibtw.loadstone"; public const string VLOG_GUID = "OreoM.VLog"; public const string BLURANCEFIX_GUID = "Tomatobird.BluranceTerrainFix"; public const string DERELICTFIX_GUID = "Tomatobird.DerelictFix"; public const string LERTZFIX_GUID = "Tomatobird.LertzFix"; public const string TANDRAUSFIX_GUID = "Tomatobird.TandrausFix"; public const string DERELICT_MOON_PLUGIN_GUID = "DerelictMoonPlugin"; } internal class PackDefinition { internal static Dictionary<string, string> commonRequiredMods = new Dictionary<string, string> { { "Tomatobird.BluranceTerrainFix", "1.0.0" }, { "Tomatobird.LertzFix", "1.0.0" }, { "Tomatobird.TandrausFix", "1.1.0" } }; internal static Dictionary<string, string> commonOptionalMods = new Dictionary<string, string> { { "SlushyRH.LethalCompany.FreeMoons", "1.0.2" } }; internal static Dictionary<string, string> v56Mods = new Dictionary<string, string> { { "imabatby.lethallevelloader", "1.3.8" }, { "Zaggy1024.PathfindingLagFix", "1.2.2" }, { "AudioKnight.StarlancerAIFix", "3.8.0" }, { "evaisa.lethallib", "0.16.2" }, { "com.adibtw.loadstone", "0.1.18" }, { "com.fumiko.CullFactory", "1.7.0" }, { "DerelictMoonPlugin", "1.0.0" } }; internal static Dictionary<string, string> v62Mods = new Dictionary<string, string> { { "imabatby.lethallevelloader", "1.3.13" }, { "Zaggy1024.PathfindingLagFix", "2.1.1" }, { "Zaggy1024.PathfindingLib", "0.0.14" }, { "AudioKnight.StarlancerAIFix", "3.8.4" }, { "evaisa.lethallib", "1.0.1" }, { "com.adibtw.loadstone", "0.1.23" }, { "com.fumiko.CullFactory", "2.0.4" }, { "DerelictMoonPlugin", "1.2.0" } }; internal static Dictionary<string, string> v69Mods = new Dictionary<string, string> { { "imabatby.lethallevelloader", "1.4.11" }, { "Zaggy1024.PathfindingLagFix", "2.2.4" }, { "Zaggy1024.PathfindingLib", "2.3.2" }, { "AudioKnight.StarlancerAIFix", "3.9.0" }, { "evaisa.lethallib", "1.0.1" }, { "com.adibtw.loadstone", "0.1.23" }, { "com.fumiko.CullFactory", "2.0.4" }, { "DerelictMoonPlugin", "1.2.0" } }; internal static Dictionary<string, string> v72Mods = new Dictionary<string, string> { { "imabatby.lethallevelloader", "1.4.11" }, { "Zaggy1024.PathfindingLagFix", "2.2.4" }, { "Zaggy1024.PathfindingLib", "2.3.2" }, { "AudioKnight.StarlancerAIFix", "3.11.1" }, { "evaisa.lethallib", "1.1.1" }, { "com.adibtw.loadstone", "0.1.23" }, { "com.fumiko.CullFactory", "2.0.4" }, { "Tomatobird.DerelictFix", "1.0.0" }, { "DerelictMoonPlugin", "1.2.0" } }; internal static Dictionary<string, string> v73Mods = new Dictionary<string, string> { { "imabatby.lethallevelloader", "1.6.8" }, { "Zaggy1024.PathfindingLagFix", "2.2.5" }, { "Zaggy1024.PathfindingLib", "2.4.1" }, { "AudioKnight.StarlancerAIFix", "3.11.1" }, { "evaisa.lethallib", "1.1.1" }, { "com.adibtw.loadstone", "0.1.23" }, { "com.fumiko.CullFactory", "2.0.4" }, { "DerelictMoonPlugin", "1.2.1" } }; internal static Dictionary<string, string> v81Mods = new Dictionary<string, string> { { "imabatby.lethallevelloader", "1.6.9" }, { "AudioKnight.StarlancerAIFix", "3.12.0" }, { "evaisa.lethallib", "1.2.0" }, { "com.fumiko.CullFactory", "2.0.7" }, { "DerelictMoonPlugin", "1.2.1" } }; } public static class MyPluginInfo { public const string PLUGIN_GUID = "Tomatobird.ClassicMoonsHQModule"; public const string PLUGIN_NAME = "ClassicMoonsHQModule"; public const string PLUGIN_VERSION = "1.0.2"; } } namespace ClassicMoonsHQModule.Patches { [HarmonyPatch] internal class LLLConfigLoaderPatcher_v1 { private static readonly List<string> vanillaLevels = new List<string>(12) { "Adamance", "Offense", "Assurance", "Experimentation", "Liquidation", "Embrion", "Vow", "March", "Artifice", "Dine", "Titan", "Rend" }; [HarmonyPatch("LethalLevelLoader.Tools.ExtendedDungeonConfig, LethalLevelLoader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", "BindConfigs")] [HarmonyPrefix] public static void PatchDungeon(object[] __args) { object obj = __args[0]; Type type = obj.GetType(); PropertyInfo property = type.GetProperty("GenerateAutomaticConfigurationOptions", BindingFlags.Instance | BindingFlags.Public); property.SetValue(obj, false); } [HarmonyPatch("LethalLevelLoader.Tools.ExtendedLevelConfig, LethalLevelLoader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", "BindConfigs")] [HarmonyPrefix] public static void PatchMoon(object[] __args) { object obj = __args[0]; Type type = obj.GetType(); PropertyInfo property = type.GetProperty("GenerateAutomaticConfigurationOptions", BindingFlags.Instance | BindingFlags.Public); property.SetValue(obj, false); PropertyInfo property2 = type.GetProperty("NumberlessPlanetName", BindingFlags.Instance | BindingFlags.Public); if (vanillaLevels.Contains((string)property2.GetValue(obj))) { PropertyInfo property3 = type.GetProperty("IsRouteLocked", BindingFlags.Instance | BindingFlags.Public); PropertyInfo property4 = type.GetProperty("IsRouteHidden", BindingFlags.Instance | BindingFlags.Public); property3.SetValue(obj, true); property4.SetValue(obj, true); } } } [HarmonyPatch] internal class LLLConfigLoaderPatcher_v2 { private static readonly List<string> vanillaLevels = new List<string>(12) { "Adamance", "Offense", "Assurance", "Experimentation", "Liquidation", "Embrion", "Vow", "March", "Artifice", "Dine", "Titan", "Rend" }; [HarmonyPatch(typeof(ExtendedDungeonConfig), "BindConfigs")] [HarmonyPrefix] public static void PatchDungeon(ref ExtendedDungeonFlow extendedDungeonFlow) { extendedDungeonFlow.GenerateAutomaticConfigurationOptions = false; } [HarmonyPatch(typeof(ExtendedLevelConfig), "BindConfigs")] [HarmonyPrefix] public static void PatchMoon(ref ExtendedLevel extendedLevel) { extendedLevel.GenerateAutomaticConfigurationOptions = false; if (vanillaLevels.Contains(extendedLevel.NumberlessPlanetName)) { extendedLevel.IsRouteLocked = true; extendedLevel.IsRouteHidden = true; } } } [HarmonyPatch(typeof(MenuManager))] internal class MenuManagerPatcher { [HarmonyPatch("Start")] [HarmonyPostfix] internal static void Start_Postfix(MenuManager __instance) { string text = ""; int gameVersionNum = GameNetworkManager.Instance.gameVersionNum; text += CheckModValidity(PackDefinition.commonRequiredMods, required: true); text = gameVersionNum switch { 56 => text + CheckModValidity(PackDefinition.v56Mods, required: true), 62 => text + CheckModValidity(PackDefinition.v62Mods, required: true), 64 => text + CheckModValidity(PackDefinition.v69Mods, required: true), 69 => text + CheckModValidity(PackDefinition.v69Mods, required: true), 72 => text + CheckModValidity(PackDefinition.v72Mods, required: true), 73 => text + CheckModValidity(PackDefinition.v73Mods, required: true), 81 => text + CheckModValidity(PackDefinition.v81Mods, required: true), _ => text + "Unsupported game version", } + CheckModValidity(PackDefinition.commonOptionalMods, required: false); if (!ClassicMoonsHQModule.pluginInfos.ContainsKey("OreoM.VLog")) { text += "Vlog missing, "; } if (!Utility.IsNullOrWhiteSpace(text)) { text = text.TrimEnd(',', ' '); __instance.DisplayMenuNotification("WARNING! Modpack misconfiguration: " + text, "[ OK ]"); ClassicMoonsHQModule.Logger.LogWarning((object)("WARNING! Modpack misconfiguration: " + text)); } } internal static string CheckModValidity(Dictionary<string, string> dict, bool required) { string text = ""; foreach (KeyValuePair<string, string> item in dict) { if (!ClassicMoonsHQModule.pluginInfos.ContainsKey(item.Key)) { if (required) { text = text + item.Key + " v" + item.Value + " is misssing, "; } } else if (ClassicMoonsHQModule.pluginInfos[item.Key].Metadata.Version.ToString() != item.Value) { text = text + ClassicMoonsHQModule.pluginInfos[item.Key].Metadata.GUID + " v" + ClassicMoonsHQModule.pluginInfos[item.Key].Metadata.Version.ToString() + " didnt match required version v" + item.Value + ", "; } } return text; } } }