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 BarbedWireUnlocker v1.0.0
BarbedWireUnlocker.dll
Decompiled 7 months agousing System; 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.Configuration; using BepInEx.Logging; using GlobalSettings; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("BarbedWireUnlocker")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+d79dd39ac9cf6e683e9680f800e22b23dca4ca0e")] [assembly: AssemblyProduct("BarbedWireUnlocker")] [assembly: AssemblyTitle("BarbedWireUnlocker")] [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 BarbedWireUnlocker { public class BarbedWireModifier { private readonly ManualLogSource logger; private readonly BarbedWireUnlocker barbedWireUnlocker; public BarbedWireModifier(ManualLogSource logger, BarbedWireUnlocker barbedWireUnlocker) { this.logger = logger; this.barbedWireUnlocker = barbedWireUnlocker; } public void SetDamageDealtModifier() { if (barbedWireUnlocker.configUI.debugMode.Value) { logger.LogInfo((object)("barbedWireDamageDealtMultiplier before: " + Gameplay.Get().barbedWireDamageDealtMultiplier)); } Gameplay.Get().barbedWireDamageDealtMultiplier = barbedWireUnlocker.configUI.damageDealtMultipler.Value; if (barbedWireUnlocker.configUI.debugMode.Value) { logger.LogInfo((object)("barbedWireDamageDealtMultiplier after: " + Gameplay.Get().barbedWireDamageDealtMultiplier)); } } public void SetDamageDealtModifier(int value) { if (barbedWireUnlocker.configUI.debugMode.Value) { logger.LogInfo((object)("barbedWireDamageDealtMultiplier before: " + Gameplay.Get().barbedWireDamageDealtMultiplier)); } Gameplay.Get().barbedWireDamageDealtMultiplier = value; if (barbedWireUnlocker.configUI.debugMode.Value) { logger.LogInfo((object)("barbedWireDamageDealtMultiplier after: " + Gameplay.Get().barbedWireDamageDealtMultiplier)); } } public void SetDamageTakenModifier() { if (barbedWireUnlocker.configUI.debugMode.Value) { logger.LogInfo((object)("barbedWireDamageTakenMultiplier before: " + Gameplay.Get().barbedWireDamageTakenMultiplier)); } Gameplay.Get().barbedWireDamageTakenMultiplier = barbedWireUnlocker.configUI.damageTakenMultipler.Value; if (barbedWireUnlocker.configUI.debugMode.Value) { logger.LogInfo((object)("barbedWireDamageTakenMultiplier after: " + Gameplay.Get().barbedWireDamageTakenMultiplier)); } } public void SetDamageTakenModifier(int value) { if (barbedWireUnlocker.configUI.debugMode.Value) { logger.LogInfo((object)("barbedWireDamageTakenMultiplier before: " + Gameplay.Get().barbedWireDamageTakenMultiplier)); } Gameplay.Get().barbedWireDamageTakenMultiplier = value; if (barbedWireUnlocker.configUI.debugMode.Value) { logger.LogInfo((object)("barbedWireDamageTakenMultiplier after: " + Gameplay.Get().barbedWireDamageTakenMultiplier)); } } } [HarmonyPatch] public class BarbedWirePatches { [HarmonyPatch] internal static class HeroController_Start_Patch { private static MethodBase TargetMethod() { Type type = AccessTools.TypeByName("HeroController"); if (type == null) { throw new Exception("Could not find type HeroController"); } return AccessTools.Method(type, "Start", (Type[])null, (Type[])null); } private static void Postfix(object __instance) { ManualLogSource? logger = BarbedWirePatches.logger; if (logger != null) { logger.LogInfo((object)"\ud83d\udd0d HeroController.Start patch triggered!"); } BarbedWireUnlocker instance = BarbedWireUnlocker.Instance; if (instance.configUI.unlockBarbedWireAtStart.Value) { instance.configUI.unlockBarbedWire.Value = true; instance.UnlockBarbedWireTool(); ManualLogSource? logger2 = BarbedWirePatches.logger; if (logger2 != null) { logger2.LogInfo((object)"Barbed wire tool unlocked at start"); } } if (instance.configUI.equipBarbedWireAtStart.Value) { instance.EquipBarbedWireToolAtStart(); ManualLogSource? logger3 = BarbedWirePatches.logger; if (logger3 != null) { logger3.LogInfo((object)"Barbed wire tool equipped at start"); } } instance.barbedWireModifier.SetDamageDealtModifier(); instance.barbedWireModifier.SetDamageTakenModifier(); } } private static ManualLogSource? logger; private static bool hasAttemptedUnlock; public static void SetLogger(ManualLogSource logSource) { logger = logSource; } public static void ResetUnlockAttempt() { hasAttemptedUnlock = false; ManualLogSource? obj = logger; if (obj != null) { obj.LogInfo((object)"Reset unlock attempt flag - next unlock attempt will be allowed"); } } } [BepInPlugin("BarbedWireUnlocker", "BarbedWireUnlocker", "1.0.0")] public class BarbedWireUnlocker : BaseUnityPlugin { private Harmony harmony; public ConfigUI configUI; public BarbedWireModifier barbedWireModifier; public ManualLogSource Logger => ((BaseUnityPlugin)this).Logger; public static BarbedWireUnlocker Instance { get; private set; } private void Awake() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown try { Logger.LogInfo((object)"=== BarbedWireUnlocker v1.0.0 Starting ==="); Logger.LogInfo((object)"Plugin GUID: BarbedWireUnlocker"); harmony = new Harmony("BarbedWireUnlocker"); harmony.PatchAll(); Logger.LogInfo((object)"Harmony patches applied successfully!"); Instance = this; configUI = new ConfigUI(Logger, this); barbedWireModifier = new BarbedWireModifier(Logger, this); configUI.InitializeConfigUI(((BaseUnityPlugin)this).Config); BarbedWirePatches.SetLogger(Logger); if (configUI.debugMode.Value) { Logger.LogInfo((object)("Config file location: " + ((BaseUnityPlugin)this).Config.ConfigFilePath)); } Logger.LogInfo((object)"=== BarbedWireUnlocker initialization COMPLETED ==="); } catch (Exception ex) { Logger.LogError((object)("❌ ERROR during BarbedWireUnlocker initialization: " + ex.Message)); Logger.LogError((object)("Stack trace: " + ex.StackTrace)); } } private void OnDestroy() { Harmony obj = harmony; if (obj != null) { obj.UnpatchSelf(); } } public void UnlockBarbedWireTool() { Logger.LogInfo((object)"Manual unlock requested for barbedWire tool..."); try { ToolItem barbedWireTool = Gameplay.BarbedWireTool; if ((Object)(object)barbedWireTool != (Object)null) { if (configUI.debugMode.Value) { Logger.LogInfo((object)"Found barbedWire tool, unlocking and equipping..."); } barbedWireTool.Unlock((Action)null, (PopupFlags)3); Logger.LogInfo((object)"BarbedWire tool unlocked successfully!"); } else { Logger.LogWarning((object)"Could not find barbedWire tool item"); } } catch (Exception ex) { Logger.LogError((object)("Error unlocking/equipping barbedWire tool: " + ex.Message)); } } public void LockBarbedWire() { Logger.LogInfo((object)"Manual unlock requested for barbedWire tool..."); try { ToolItem barbedWireTool = Gameplay.BarbedWireTool; if ((Object)(object)barbedWireTool != (Object)null && barbedWireTool.IsUnlocked) { if (configUI.debugMode.Value) { Logger.LogInfo((object)"Found barbedWire tool, unlocking and equipping..."); } barbedWireTool.Lock(); Logger.LogInfo((object)"BarbedWire tool unlocked successfully!"); } else { Logger.LogWarning((object)"Could not find barbedWire tool item"); } } catch (Exception ex) { Logger.LogError((object)("Error unlocking/equipping barbedWire tool: " + ex.Message)); } } public void ResetUnlockAttempt() { BarbedWirePatches.ResetUnlockAttempt(); } public void EquipBarbedWireTool() { try { ToolItem barbedWireTool = Gameplay.BarbedWireTool; if ((Object)(object)barbedWireTool != (Object)null) { if (!configUI.unlockBarbedWire.Value) { configUI.unlockBarbedWire.Value = true; } if (!barbedWireTool.IsUnlockedNotHidden) { if (configUI.debugMode.Value) { Logger.LogInfo((object)(barbedWireTool.name + " is not unlocked! Unlocking now...")); } UnlockBarbedWireTool(); if (configUI.debugMode.Value) { Logger.LogInfo((object)(barbedWireTool.name + " is now unlocked.")); } } ToolItemManager.SetExtraEquippedTool("0", barbedWireTool); ToolItemManager.SendEquippedChangedEvent(false); Logger.LogInfo((object)"BarbedWire tool equipped successfully!"); } else { Logger.LogWarning((object)"Could not find barbedWire tool item"); } } catch (Exception ex) { Logger.LogError((object)("Error equipping barbedWire tool: " + ex.Message)); } } public void EquipBarbedWireToolAtStart() { try { ToolItem barbedWireTool = Gameplay.BarbedWireTool; if ((Object)(object)barbedWireTool != (Object)null) { if (!configUI.unlockBarbedWireAtStart.Value) { configUI.unlockBarbedWireAtStart.Value = true; } if (!barbedWireTool.IsUnlockedNotHidden) { if (configUI.debugMode.Value) { Logger.LogInfo((object)(barbedWireTool.name + " is not unlocked! Unlocking now...")); } UnlockBarbedWireTool(); if (configUI.debugMode.Value) { Logger.LogInfo((object)(barbedWireTool.name + " is now unlocked.")); } } ToolItemManager.AutoEquip(barbedWireTool); ToolItemManager.SendEquippedChangedEvent(false); Logger.LogInfo((object)"BarbedWire tool equipped successfully!"); } else { Logger.LogWarning((object)"Could not find barbedWire tool item"); } } catch (Exception ex) { Logger.LogError((object)("Error equipping barbedWire tool: " + ex.Message)); } } public void UnequipBarbedWireTool() { try { ToolItem barbedWireTool = Gameplay.BarbedWireTool; if ((Object)(object)barbedWireTool != (Object)null) { if (barbedWireTool.IsUnlockedNotHidden) { ToolItemManager.UnequipTool(barbedWireTool); Logger.LogInfo((object)"BarbedWire tool unequipped successfully!"); ToolItemManager.SendEquippedChangedEvent(false); } else { Logger.LogInfo((object)"BarbedWire tool is not equiped!"); } } else { Logger.LogWarning((object)"Could not find barbedWire tool item"); } } catch (Exception ex) { Logger.LogError((object)("Error equipping barbedWire tool: " + ex.Message)); } } public void ReadtoolItems() { foreach (ToolItem allTool in ToolItemManager.GetAllTools()) { Logger.LogInfo((object)("ToolItem: " + allTool.name)); } } } public class ConfigUI { private readonly ManualLogSource logger; private readonly BarbedWireUnlocker barbedWireUnlocker; public ConfigEntry<bool> debugMode; public ConfigEntry<bool> unlockBarbedWire; public ConfigEntry<bool> unlockBarbedWireAtStart; public ConfigEntry<bool> equipBarbedWire; public ConfigEntry<bool> equipBarbedWireAtStart; public ConfigEntry<float> damageDealtMultipler; public ConfigEntry<float> damageTakenMultipler; public ConfigEntry<bool> readAllTools; public ConfigUI(ManualLogSource logger, BarbedWireUnlocker barbedWireUnlocker) { this.logger = logger; this.barbedWireUnlocker = barbedWireUnlocker; } public void InitializeConfigUI(ConfigFile config) { //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_00d7: Expected O, but got Unknown debugMode = config.Bind<bool>("Debug", "DebugMode", false, (ConfigDescription)null); unlockBarbedWireAtStart = config.Bind<bool>("Unlock", "Unlock Barbed Wire At Start", false, (ConfigDescription)null); unlockBarbedWire = config.Bind<bool>("Unlock", "Unlock Barbed Wire", false, (ConfigDescription)null); equipBarbedWireAtStart = config.Bind<bool>("Equip", "Equip Barbed Wire At Start", false, (ConfigDescription)null); equipBarbedWire = config.Bind<bool>("Equip", "Equip Barbed Wire", false, (ConfigDescription)null); damageDealtMultipler = config.Bind<float>("Modifier", "Modifies Damage Dealt Multiplaer", 1.5f, (ConfigDescription)null); damageTakenMultipler = config.Bind<float>("Modifier", "Modifies Damage Taken Multiplaer", 2f, (ConfigDescription)null); readAllTools = config.Bind<bool>(new ConfigDefinition("Barbed Wire Unlocker", "Read All Tools"), false, new ConfigDescription("Click to read all tools", (AcceptableValueBase)null, Array.Empty<object>())); readAllTools.SettingChanged += delegate { if (readAllTools.Value) { logger.LogInfo((object)"Read All Tools button clicked!"); barbedWireUnlocker.ReadtoolItems(); readAllTools.Value = false; } }; unlockBarbedWire.SettingChanged += delegate { if (unlockBarbedWire.Value) { barbedWireUnlocker.UnlockBarbedWireTool(); } else { barbedWireUnlocker.LockBarbedWire(); } }; equipBarbedWire.SettingChanged += delegate { if (equipBarbedWire.Value) { barbedWireUnlocker.EquipBarbedWireTool(); } else { barbedWireUnlocker.UnequipBarbedWireTool(); } }; damageDealtMultipler.SettingChanged += delegate { barbedWireUnlocker.barbedWireModifier.SetDamageDealtModifier(); }; damageTakenMultipler.SettingChanged += delegate { barbedWireUnlocker.barbedWireModifier.SetDamageTakenModifier(); }; } } public class OnStartManager { private readonly ManualLogSource logger; public OnStartManager(ManualLogSource logger) { this.logger = logger; } } public static class PluginInfo { public const string PLUGIN_GUID = "BarbedWireUnlocker"; public const string PLUGIN_NAME = "BarbedWireUnlocker"; public const string PLUGIN_VERSION = "1.0.0"; } }