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 ResetCommands v1.0.1
ResetCommands.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using JetBrains.Annotations; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: AssemblyFileVersion("1.0.0")] [assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")] [assembly: ComVisible(false)] [assembly: AssemblyTrademark("")] [assembly: AssemblyCopyright("Copyright © 2022")] [assembly: AssemblyProduct("ResetCommands")] [assembly: AssemblyCompany("RustyMods")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyDescription("")] [assembly: AssemblyTitle("ResetCommands")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] 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; } } [Microsoft.CodeAnalysis.Embedded] [CompilerGenerated] [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; } } } namespace ResetCommands { [BepInPlugin("RustyMods.ResetCommands", "ResetCommands", "1.0.0")] public class ResetCommandsPlugin : BaseUnityPlugin { public enum Toggle { On = 1, Off = 0 } private class ConfigurationManagerAttributes { [UsedImplicitly] public int? Order = null; [UsedImplicitly] public bool? Browsable = null; [UsedImplicitly] public string? Category = null; [UsedImplicitly] public Action<ConfigEntryBase>? CustomDrawer = null; } internal const string ModName = "ResetCommands"; internal const string ModVersion = "1.0.0"; internal const string Author = "RustyMods"; private const string ModGUID = "RustyMods.ResetCommands"; private static string ConfigFileName = "RustyMods.ResetCommands.cfg"; private static string ConfigFileFullPath; internal static string ConnectionError; private readonly Harmony _harmony = new Harmony("RustyMods.ResetCommands"); public static readonly ManualLogSource ResetCommandsLogger; public void Awake() { Assembly executingAssembly = Assembly.GetExecutingAssembly(); _harmony.PatchAll(executingAssembly); SetupWatcher(); } private void OnDestroy() { ((BaseUnityPlugin)this).Config.Save(); } private void SetupWatcher() { FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(Paths.ConfigPath, ConfigFileName); fileSystemWatcher.Changed += ReadConfigValues; fileSystemWatcher.Created += ReadConfigValues; fileSystemWatcher.Renamed += ReadConfigValues; fileSystemWatcher.IncludeSubdirectories = true; fileSystemWatcher.SynchronizingObject = ThreadingHelper.SynchronizingObject; fileSystemWatcher.EnableRaisingEvents = true; } private void ReadConfigValues(object sender, FileSystemEventArgs e) { if (!File.Exists(ConfigFileFullPath)) { return; } try { ResetCommandsLogger.LogDebug((object)"ReadConfigValues called"); ((BaseUnityPlugin)this).Config.Reload(); } catch { ResetCommandsLogger.LogError((object)("There was an issue loading your " + ConfigFileName)); ResetCommandsLogger.LogError((object)"Please check your config entries for spelling and format!"); } } private ConfigEntry<T> config<T>(string group, string name, T value, ConfigDescription description, bool synchronizedSetting = true) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown ConfigDescription val = new ConfigDescription(description.Description + (synchronizedSetting ? " [Synced with Server]" : " [Not Synced with Server]"), description.AcceptableValues, description.Tags); return ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, val); } private ConfigEntry<T> config<T>(string group, string name, T value, string description, bool synchronizedSetting = true) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()), synchronizedSetting); } static ResetCommandsPlugin() { string configPath = Paths.ConfigPath; char directorySeparatorChar = Path.DirectorySeparatorChar; ConfigFileFullPath = configPath + directorySeparatorChar + ConfigFileName; ConnectionError = ""; ResetCommandsLogger = Logger.CreateLogSource("ResetCommands"); } } } namespace ResetCommands.Commands { public static class ResetBossStones { [HarmonyPatch(typeof(ItemStand), "Interact")] private static class BossTrophyInteractPatch { private static bool Prefix(ItemStand __instance, Humanoid user, bool hold, bool alt) { //IL_0066: Unknown result type (might be due to invalid IL or missing references) if (hold) { return false; } if (!__instance.HaveAttachment()) { return true; } if (__instance.m_canBeRemoved) { return true; } if (!Terminal.m_cheat) { return true; } if (!alt) { return true; } __instance.m_nview.InvokeRPC("DropItem", Array.Empty<object>()); user.DoInteractAnimation(((Component)__instance).transform.position); return false; } } [HarmonyPatch(typeof(ItemStand), "RPC_DropItem")] private static class RPC_DropItemPatch { private static bool Prefix(ItemStand __instance) { if (__instance.m_canBeRemoved) { return true; } if (!Terminal.m_cheat) { return true; } __instance.DropItem(); return false; } } [HarmonyPatch(typeof(ItemStand), "GetHoverText")] private static class BossTrophyGetHoverTextPatch { private static void Postfix(ItemStand __instance, ref string __result) { if (__instance.HaveAttachment() && !__instance.m_canBeRemoved && Terminal.m_cheat) { __result += Localization.instance.Localize("\n [<color=yellow><b>L.Shift + $KEY_Use</b></color>] Remove trophy"); } } } } public static class TerminalCommands { [HarmonyPatch(typeof(Terminal), "InitTerminal")] private static class TerminalAddCommands { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ConsoleEventFailable <>9__0_0; public static ConsoleOptionsFetcher <>9__0_1; public static ConsoleEventFailable <>9__0_2; public static ConsoleOptionsFetcher <>9__0_3; internal object <Postfix>b__0_0(ConsoleEventArgs args) { if (args.Length < 2) { return false; } switch (args[1]) { case "compendium": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownTexts.Count + " known texts from compendium")); Player.m_localPlayer.m_knownTexts.Clear(); break; case "recipes": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownRecipes.Count + " known recipes from player")); Player.m_localPlayer.m_knownRecipes.Clear(); break; case "stations": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownStations.Count + " known stations from player")); Player.m_localPlayer.m_knownStations.Clear(); break; case "materials": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownMaterial.Count + " known materials from player")); Player.m_localPlayer.m_knownMaterial.Clear(); break; case "tutorials": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_shownTutorials.Count + " known tutorials from player")); Player.m_localPlayer.m_shownTutorials.Clear(); break; case "keys": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_uniques.Count + " known keys from player")); Player.m_localPlayer.m_uniques.Clear(); break; case "trophies": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_trophies.Count + " known trophies from player")); Player.m_localPlayer.m_trophies.Clear(); break; case "biomes": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownBiome.Count + " known biomes from player")); Player.m_localPlayer.m_knownBiome.Clear(); break; } return true; } internal List<string> <Postfix>b__0_1() { return new List<string> { "compendium", "recipes", "stations", "materials", "tutorials", "keys", "trophies", "biomes" }; } internal object <Postfix>b__0_2(ConsoleEventArgs args) { //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_0385: Unknown result type (might be due to invalid IL or missing references) if (args.Length < 2) { return false; } switch (args[1]) { case "compendium": foreach (KeyValuePair<string, string> knownText in Player.m_localPlayer.m_knownTexts) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)Localization.instance.Localize(knownText.Key)); } break; case "recipes": foreach (string knownRecipe in Player.m_localPlayer.m_knownRecipes) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)Localization.instance.Localize(knownRecipe)); } break; case "stations": foreach (KeyValuePair<string, int> knownStation in Player.m_localPlayer.m_knownStations) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)Localization.instance.Localize(knownStation.Key)); } break; case "materials": foreach (string item in Player.m_localPlayer.m_knownMaterial) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)Localization.instance.Localize(item)); } break; case "tutorials": foreach (string shownTutorial in Player.m_localPlayer.m_shownTutorials) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)shownTutorial); } break; case "keys": foreach (string unique in Player.m_localPlayer.m_uniques) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)unique); } break; case "trophies": foreach (string trophy in Player.m_localPlayer.m_trophies) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)trophy); } break; case "biomes": foreach (Biome item2 in Player.m_localPlayer.m_knownBiome) { Biome current = item2; ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)((object)(Biome)(ref current)).ToString()); } break; } return true; } internal List<string> <Postfix>b__0_3() { return new List<string> { "compendium", "recipes", "stations", "materials", "tutorials", "keys", "trophies", "biomes" }; } } private static void Postfix() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Expected O, but got Unknown //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown object obj = <>c.<>9__0_0; if (obj == null) { ConsoleEventFailable val = delegate(ConsoleEventArgs args) { if (args.Length < 2) { return false; } switch (args[1]) { case "compendium": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownTexts.Count + " known texts from compendium")); Player.m_localPlayer.m_knownTexts.Clear(); break; case "recipes": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownRecipes.Count + " known recipes from player")); Player.m_localPlayer.m_knownRecipes.Clear(); break; case "stations": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownStations.Count + " known stations from player")); Player.m_localPlayer.m_knownStations.Clear(); break; case "materials": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownMaterial.Count + " known materials from player")); Player.m_localPlayer.m_knownMaterial.Clear(); break; case "tutorials": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_shownTutorials.Count + " known tutorials from player")); Player.m_localPlayer.m_shownTutorials.Clear(); break; case "keys": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_uniques.Count + " known keys from player")); Player.m_localPlayer.m_uniques.Clear(); break; case "trophies": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_trophies.Count + " known trophies from player")); Player.m_localPlayer.m_trophies.Clear(); break; case "biomes": ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)("Cleaning up " + Player.m_localPlayer.m_knownBiome.Count + " known biomes from player")); Player.m_localPlayer.m_knownBiome.Clear(); break; } return true; }; <>c.<>9__0_0 = val; obj = (object)val; } object obj2 = <>c.<>9__0_1; if (obj2 == null) { ConsoleOptionsFetcher val2 = () => new List<string> { "compendium", "recipes", "stations", "materials", "tutorials", "keys", "trophies", "biomes" }; <>c.<>9__0_1 = val2; obj2 = (object)val2; } ConsoleCommand val3 = new ConsoleCommand("clean", "Removes all known objects from player save", (ConsoleEventFailable)obj, false, false, false, false, false, (ConsoleOptionsFetcher)obj2, false, false, false); object obj3 = <>c.<>9__0_2; if (obj3 == null) { ConsoleEventFailable val4 = delegate(ConsoleEventArgs args) { //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_0385: Unknown result type (might be due to invalid IL or missing references) if (args.Length < 2) { return false; } switch (args[1]) { case "compendium": foreach (KeyValuePair<string, string> knownText in Player.m_localPlayer.m_knownTexts) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)Localization.instance.Localize(knownText.Key)); } break; case "recipes": foreach (string knownRecipe in Player.m_localPlayer.m_knownRecipes) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)Localization.instance.Localize(knownRecipe)); } break; case "stations": foreach (KeyValuePair<string, int> knownStation in Player.m_localPlayer.m_knownStations) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)Localization.instance.Localize(knownStation.Key)); } break; case "materials": foreach (string item in Player.m_localPlayer.m_knownMaterial) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)Localization.instance.Localize(item)); } break; case "tutorials": foreach (string shownTutorial in Player.m_localPlayer.m_shownTutorials) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)shownTutorial); } break; case "keys": foreach (string unique in Player.m_localPlayer.m_uniques) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)unique); } break; case "trophies": foreach (string trophy in Player.m_localPlayer.m_trophies) { ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)trophy); } break; case "biomes": foreach (Biome item2 in Player.m_localPlayer.m_knownBiome) { Biome current = item2; ResetCommandsPlugin.ResetCommandsLogger.LogInfo((object)((object)(Biome)(ref current)).ToString()); } break; } return true; }; <>c.<>9__0_2 = val4; obj3 = (object)val4; } object obj4 = <>c.<>9__0_3; if (obj4 == null) { ConsoleOptionsFetcher val5 = () => new List<string> { "compendium", "recipes", "stations", "materials", "tutorials", "keys", "trophies", "biomes" }; <>c.<>9__0_3 = val5; obj4 = (object)val5; } ConsoleCommand val6 = new ConsoleCommand("print", "Prints all known objects from player save", (ConsoleEventFailable)obj3, false, false, false, false, false, (ConsoleOptionsFetcher)obj4, false, false, false); } } } }