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 AllDecorAlways v1.1.0
AllDecorAlways.dll
Decompiled 2 years agousing System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; 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: AssemblyTitle("AllDecorAlways")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AllDecorAlways")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("2fe88052-1b99-41b3-85bc-6fea62ae8851")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace AllDecorAlways { [BepInPlugin("stormytuna.AllDecorAlways", "AllDecorAlways", "1.1.0")] public class AllDecorAlwaysBase : BaseUnityPlugin { public const string ModGUID = "stormytuna.AllDecorAlways"; public const string ModName = "AllDecorAlways"; public const string ModVersion = "1.1.0"; public static ManualLogSource Log = Logger.CreateLogSource("stormytuna.AllDecorAlways"); public static AllDecorAlwaysBase Instance; private readonly Harmony harmony = new Harmony("stormytuna.AllDecorAlways"); public static ConfigEntry<bool> UnlockAllDecor; private void Awake() { if (Instance == null) { Instance = this; } Log.LogInfo((object)"All Decor Always has awoken!"); LoadConfigs(); harmony.PatchAll(); } private void LoadConfigs() { UnlockAllDecor = ((BaseUnityPlugin)this).Config.Bind<bool>("Cheats", "UnlockAllDecor", false, "Whether or not all decor should be unlocked immediately rather than having to be bought"); } } } namespace AllDecorAlways.Patches { [HarmonyPatch(typeof(StartOfRound))] public class StartOfRoundPatch { [HarmonyPrefix] [HarmonyPatch("LoadUnlockables")] public static void UnlockAllDecor(UnlockablesList ___unlockablesList) { if (!AllDecorAlwaysBase.UnlockAllDecor.Value) { return; } for (int i = 0; i < ___unlockablesList.unlockables.Count; i++) { UnlockableItem val = ___unlockablesList.unlockables[i]; if (!val.hasBeenUnlockedByPlayer && !val.alreadyUnlocked && !((Object)(object)val.shopSelectionNode == (Object)null) && !val.alwaysInStock) { AllDecorAlwaysBase.Log.LogInfo((object)("Unlocking " + val.unlockableName + "!")); val.hasBeenUnlockedByPlayer = true; if (val.unlockableType == 0) { MethodInfo method = typeof(StartOfRound).GetMethod("SpawnUnlockable", BindingFlags.Instance | BindingFlags.NonPublic); method.Invoke(StartOfRound.Instance, new object[1] { i }); } else { val.inStorage = true; } } } } } [HarmonyPatch(typeof(Terminal))] public class TerminalPatch { [HarmonyPrefix] [HarmonyPatch("RotateShipDecorSelection")] public static bool AddAllShipDecor(Terminal __instance) { IEnumerable<TerminalNode> enumerable = from u in StartOfRound.Instance.unlockablesList.unlockables where (Object)(object)u.shopSelectionNode != (Object)null && !u.alwaysInStock && !u.hasBeenUnlockedByPlayer && !u.alreadyUnlocked select u.shopSelectionNode; foreach (TerminalNode item in enumerable) { AllDecorAlwaysBase.Log.LogInfo((object)("Thing is " + ((Object)item).name)); } __instance.ShipDecorSelection = enumerable.ToList(); AllDecorAlwaysBase.Log.LogInfo((object)"Decor for everyone!"); return false; } [HarmonyPostfix] [HarmonyPatch("Awake")] public static void ChangeDecorHeading(Terminal __instance) { TerminalNode specialKeywordResult = __instance.terminalNodes.allKeywords.First((TerminalKeyword kw) => ((Object)kw).name == "Store").specialKeywordResult; List<string> list = specialKeywordResult.displayText.Split(new char[1] { '\n' }).ToList(); int num = list.IndexOf("[unlockablesSelectionList]"); if (num < 0) { AllDecorAlwaysBase.Log.LogError((object)"Failed to find decor start index in store node display text!"); return; } list[num - 2] = "The Company appreciates your hard work, all ship decor is available:"; specialKeywordResult.displayText = string.Join("\n", list); } } }