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 WesleysMoonsHQModule v1.0.0
Tomatobird.WesleysMoonsHQModule.dll
Decompiled 4 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; 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 HarmonyLib; using JLL.Components; using JLL.Components.Filters; using LethalLevelLoader; using LethalLevelLoader.Tools; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.SceneManagement; using WesleyMoonScripts; using WesleyMoonScripts.Components; using WesleysMoonsHQModule.Patches; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: IgnoresAccessChecksTo("LethalLevelLoader")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Tomatobird.WesleysMoonsHQModule")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+6c3eb00a343062e0de18dfe50be1428f801fcfe3")] [assembly: AssemblyProduct("WesleysMoonsHQModule")] [assembly: AssemblyTitle("Tomatobird.WesleysMoonsHQModule")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.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 WesleysMoonsHQModule { 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 JLL_WMS_GUID = "JacobG5.WesleyMoonScripts"; 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"; } internal class PackDefinition { internal static Dictionary<string, string> commonRequiredMods = new Dictionary<string, string> { { "com.adibtw.loadstone", "0.1.23" } }; internal static Dictionary<string, string> commonOptionalMods = new Dictionary<string, string> { { "SlushyRH.LethalCompany.FreeMoons", "1.0.2" }, { "com.fumiko.CullFactory", "2.0.4" } }; 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" } }; 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" } }; internal static Dictionary<string, string> v73Mods = new Dictionary<string, string> { { "imabatby.lethallevelloader", "1.6.8" }, { "mrov.WeatherRegistry", "0.7.5" }, { "MrovLib", "0.4.2" }, { "Zaggy1024.PathfindingLagFix", "2.2.5" }, { "Zaggy1024.PathfindingLib", "2.4.1" }, { "AudioKnight.StarlancerAIFix", "3.11.1" }, { "evaisa.lethallib", "1.1.1" } }; } [BepInPlugin("Tomatobird.WesleysMoonsHQModule", "WesleysMoonsHQModule", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class WesleysMoonsHQModule : BaseUnityPlugin { internal static List<string> allowedItemNames = new List<string>(2) { "Bury the child videotape", "Teach the disloyal videotape" }; internal static List<string> scenesToSkip = new List<string>(3) { "MainMenu", "InitScene", "InitSceneLaunchOptions" }; internal static Dictionary<string, PluginInfo> pluginInfos = new Dictionary<string, PluginInfo>(); public static WesleysMoonsHQModule 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)("Pack launched in " + (WesleyScripts.LockMoons.Value ? "High Quota" : "Single Moon High Quota") + " mode!")); Logger.LogInfo((object)"Tomatobird.WesleysMoonsHQModule v1.0.0 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.WesleysMoonsHQModule"); } Logger.LogDebug((object)"Patching..."); Harmony.PatchAll(typeof(StartOfRoundPatcher)); 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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) if (!scenesToSkip.Contains(((Scene)(ref scene)).name)) { RemoveAprilFools(scene); if (((Scene)(ref scene)).name == "MusemaScene") { EditMusemaScene(scene); } if (((Scene)(ref scene)).name == "Asteroid14Scene" && WesleyScripts.LockMoons.Value) { EditHyveScene(scene); } if (((Scene)(ref scene)).name == "CalistScene") { EditCalistScene(scene); } } } internal static GameObject GetRootGameObject(Scene scene, string name) { string name2 = name; return ((IEnumerable<GameObject>)((Scene)(ref scene)).GetRootGameObjects()).FirstOrDefault((Func<GameObject, bool>)((GameObject g) => ((Object)g).name == name2)); } internal static void EditMusemaScene(Scene scene) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) Logger.LogInfo((object)"Editing Galetry Scene."); GameObject rootGameObject = GetRootGameObject(scene, "Environment"); ItemShop[] componentsInChildren = ((Component)rootGameObject.transform.Find("Giftshop/Itemshop")).GetComponentsInChildren<ItemShop>(); foreach (ItemShop val in componentsInChildren) { if (!((Object)(object)val == (Object)null) && val.Catalogue[0].ItemName == "Mortar hammer") { val.Catalogue = val.Catalogue.Where((WeightedItemRefrence item) => allowedItemNames.Contains(item.ItemName)).ToArray(); break; } } } internal static void EditHyveScene(Scene scene) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown Logger.LogInfo((object)"Editing Galetry Scene."); GameObject rootGameObject = GetRootGameObject(scene, "Environment"); WeightedEnemyRefrence item = new WeightedEnemyRefrence { rarity = 99 }; EnemySpawner[] componentsInChildren = rootGameObject.GetComponentsInChildren<EnemySpawner>(); foreach (EnemySpawner val in componentsInChildren) { if (!(((Object)val).name != "Spawner")) { val.randomPool = new List<WeightedEnemyRefrence>(1) { item }; } } } internal static void EditCalistScene(Scene scene) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) Logger.LogInfo((object)"Editing Calist Scene."); Transform transform = GetRootGameObject(scene, "Environment").transform; Transform val = transform.Find("Lighting/BrightDay/Sun"); Transform[] array = (Transform[])(object)new Transform[3] { ((Component)val).transform.Find("SunAnimContainer/GameObject"), ((Component)val).transform.Find("SunAnimContainer/AsteroidsPAck"), ((Component)val).transform.Find("SunAnimContainer/Sphere") }; Transform[] array2 = array; foreach (Transform val2 in array2) { val2.SetParent(((Component)val).transform); } } internal static void RemoveAprilFools(Scene scene) { DateFilter[] array = Object.FindObjectsOfType<DateFilter>(); DateFilter[] array2 = array; foreach (DateFilter val in array2) { if (((Object)((Component)val).gameObject).name != "randomAprilEffect") { break; } Logger.LogInfo((object)"Removing randomAprilEffect..."); Object.Destroy((Object)(object)((Component)val).gameObject); } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "Tomatobird.WesleysMoonsHQModule"; public const string PLUGIN_NAME = "WesleysMoonsHQModule"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace WesleysMoonsHQModule.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) { WesleysMoonsHQModule.Logger.LogDebug((object)"Running LLLConfigLoaderPatcher.PatchDungeon()"); extendedDungeonFlow.GenerateAutomaticConfigurationOptions = false; } [HarmonyPatch(typeof(ExtendedLevelConfig), "BindConfigs")] [HarmonyPrefix] public static void PatchMoon(ref ExtendedLevel extendedLevel) { WesleysMoonsHQModule.Logger.LogDebug((object)"Running LLLConfigLoaderPatcher.PatchMoon()"); 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); switch (gameVersionNum) { case 69: text += CheckModValidity(PackDefinition.v69Mods, required: true); break; case 72: text += CheckModValidity(PackDefinition.v72Mods, required: true); break; case 73: text += CheckModValidity(PackDefinition.v73Mods, required: true); break; } text += CheckModValidity(PackDefinition.commonOptionalMods, required: false); if (WesleysMoonsHQModule.pluginInfos.ContainsKey("SlushyRH.LethalCompany.FreeMoons") && WesleyScripts.LockMoons.Value) { text += "Freemoons installed in non-SMHQ mode, "; } else if (!WesleysMoonsHQModule.pluginInfos.ContainsKey("SlushyRH.LethalCompany.FreeMoons") && !WesleyScripts.LockMoons.Value) { text += "Freemoons missing in SMHQ mode, "; } if (!WesleysMoonsHQModule.pluginInfos.ContainsKey("OreoM.VLog")) { text += "Vlog missing, "; } if (!Utility.IsNullOrWhiteSpace(text)) { text = text.TrimEnd(',', ' '); __instance.DisplayMenuNotification("WARNING! Modpack misconfiguration: " + text, "[ OK ]"); WesleysMoonsHQModule.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 (!WesleysMoonsHQModule.pluginInfos.ContainsKey(item.Key)) { if (required) { text = text + item.Key + " v" + item.Value + " is misssing, "; } } else if (WesleysMoonsHQModule.pluginInfos[item.Key].Metadata.Version.ToString() != item.Value) { text = text + WesleysMoonsHQModule.pluginInfos[item.Key].Metadata.GUID + " v" + WesleysMoonsHQModule.pluginInfos[item.Key].Metadata.Version.ToString() + " didnt match required version v" + item.Value + ", "; } } return text; } } [HarmonyPatch(typeof(StartOfRound))] internal class StartOfRoundPatcher { [HarmonyPatch("Start")] [HarmonyPostfix] internal static void Start_Postfix(StartOfRound __instance) { if (WesleyScripts.LockMoons.Value) { LungProp[] array = Resources.FindObjectsOfTypeAll<LungProp>(); LungProp[] array2 = array; foreach (LungProp val in array2) { if (((Object)val).name == "CosmicLungApparatus" || ((Object)val).name == "CosmicLungApparatusDisabled") { ((GrabbableObject)val).scrapValue = 214; } } } SelectableLevel[] levels = __instance.levels; foreach (SelectableLevel val2 in levels) { val2.DaySpeedMultiplier = Mathf.Max(val2.DaySpeedMultiplier, 1f); if (((Object)val2).name == "CosmocosLevel") { val2.DaySpeedMultiplier = 0.959f; if (WesleyScripts.LockMoons.Value) { val2.maxScrap = 55; } } if (((Object)val2).name == "EmpraLevel") { val2.DaySpeedMultiplier = 0.875f; } } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }