using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [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("DisableItemsInShop")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("DisableItemsInShop")] [assembly: AssemblyTitle("DisableItemsInShop")] [assembly: AssemblyVersion("1.0.0.0")] 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; } } } namespace DisableItemsInShop { [BepInPlugin("ozoka.disableitemsinshop", "DisableItemsInShop", "1.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Log; internal static Plugin Instance; internal static ConfigEntry ShopDisableExplosives; internal static ConfigEntry ShopDisableCartWeapons; internal static ConfigEntry ShopDisableGuns; internal static ConfigEntry ShopDisableMelees; internal static ConfigEntry ShopDisableDrones; internal static ConfigEntry ShopDisableOrbs; internal static ConfigEntry ShopDisableRubberDuck; internal static ConfigEntry ShopDisableStaffZeroGravity; internal static ConfigEntry ShopDisableStaffVoid; internal static ConfigEntry ShopDisableStaffTorque; internal static ConfigEntry LobbyDisableExplosives; internal static ConfigEntry LobbyDisableCartWeapons; internal static ConfigEntry LobbyDisableGuns; internal static ConfigEntry LobbyDisableMelees; internal static ConfigEntry LobbyDisableDrones; internal static ConfigEntry LobbyDisableOrbs; internal static ConfigEntry LobbyDisableRubberDuck; internal static ConfigEntry LobbyDisableStaffZeroGravity; internal static ConfigEntry LobbyDisableStaffVoid; internal static ConfigEntry LobbyDisableStaffTorque; private readonly Harmony _harmony = new Harmony("ozoka.disableitemsinshop"); private void Awake() { Instance = this; Log = ((BaseUnityPlugin)this).Logger; ShopDisableExplosives = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Explosives", true, "Disables grenades and mines in the shop."); ShopDisableCartWeapons = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Cart Weapons", true, "Disables cart cannons and cart lasers in the shop."); ShopDisableGuns = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Guns", false, "Disables guns in the shop."); ShopDisableMelees = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Melees", false, "Disables melee weapons in the shop."); ShopDisableDrones = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Drones", false, "Disables drones in the shop."); ShopDisableOrbs = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Orbs", false, "Disables orbs in the shop."); ShopDisableRubberDuck = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Rubber Duck", false, "Disables the rubber duck in the shop."); ShopDisableStaffZeroGravity = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Zero Gravity Staff", false, "Disables the Zero Gravity Staff in the shop."); ShopDisableStaffVoid = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Void Staff", false, "Disables the Void Staff in the shop."); ShopDisableStaffTorque = ((BaseUnityPlugin)this).Config.Bind("Shop", "Disable Roll Staff", false, "Disables the Roll Staff in the shop."); LobbyDisableExplosives = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Explosives", true, "Disables grenades and mines in the lobby."); LobbyDisableCartWeapons = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Cart Weapons", true, "Disables cart cannons and cart lasers in the lobby."); LobbyDisableGuns = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Guns", false, "Disables guns in the lobby."); LobbyDisableMelees = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Melees", false, "Disables melee weapons in the lobby."); LobbyDisableDrones = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Drones", false, "Disables drones in the lobby."); LobbyDisableOrbs = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Orbs", false, "Disables orbs in the lobby."); LobbyDisableRubberDuck = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Rubber Duck", false, "Disables the rubber duck in the lobby."); LobbyDisableStaffZeroGravity = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Zero Gravity Staff", false, "Disables the Zero Gravity Staff in the lobby."); LobbyDisableStaffVoid = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Void Staff", false, "Disables the Void Staff in the lobby."); LobbyDisableStaffTorque = ((BaseUnityPlugin)this).Config.Bind("Lobby", "Disable Roll Staff", false, "Disables the Roll Staff in the lobby."); Log.LogInfo((object)"DisableItemsInShop 1.1.0 geladen!"); _harmony.PatchAll(); } internal static bool ShouldDisable(string itemName) { bool flag = SemiFunc.RunIsShop(); bool flag2 = SemiFunc.RunIsLobby(); if (!flag && !flag2) { return false; } bool flag3 = (flag ? ShopDisableExplosives.Value : LobbyDisableExplosives.Value); bool flag4 = (flag ? ShopDisableCartWeapons.Value : LobbyDisableCartWeapons.Value); bool flag5 = (flag ? ShopDisableGuns.Value : LobbyDisableGuns.Value); bool flag6 = (flag ? ShopDisableMelees.Value : LobbyDisableMelees.Value); bool flag7 = (flag ? ShopDisableDrones.Value : LobbyDisableDrones.Value); bool flag8 = (flag ? ShopDisableOrbs.Value : LobbyDisableOrbs.Value); bool flag9 = (flag ? ShopDisableRubberDuck.Value : LobbyDisableRubberDuck.Value); bool flag10 = (flag ? ShopDisableStaffZeroGravity.Value : LobbyDisableStaffZeroGravity.Value); bool flag11 = (flag ? ShopDisableStaffVoid.Value : LobbyDisableStaffVoid.Value); bool flag12 = (flag ? ShopDisableStaffTorque.Value : LobbyDisableStaffTorque.Value); if (flag3 && (itemName.StartsWith("Item Grenade") || itemName.StartsWith("Item Mine"))) { return true; } if (flag4 && (itemName.StartsWith("Item Cart Cannon") || itemName.StartsWith("Item Cart Laser"))) { return true; } if (flag5 && itemName.StartsWith("Item Gun")) { return true; } if (flag7 && itemName.StartsWith("Item Drone")) { return true; } if (flag8 && itemName.StartsWith("Item Orb")) { return true; } if (flag9 && itemName.StartsWith("Item Rubber Duck")) { return true; } if (flag10 && itemName.StartsWith("Item Staff Zero Gravity")) { return true; } if (flag11 && itemName.StartsWith("Item Staff Void")) { return true; } if (flag12 && itemName.StartsWith("Item Staff Torque")) { return true; } return false; } internal static bool ShouldDisableStaff(string itemName) { bool flag = SemiFunc.RunIsShop(); bool flag2 = SemiFunc.RunIsLobby(); if (!flag && !flag2) { return false; } if (itemName.StartsWith("Item Staff Zero Gravity")) { return flag ? ShopDisableStaffZeroGravity.Value : LobbyDisableStaffZeroGravity.Value; } if (itemName.StartsWith("Item Staff Void")) { return flag ? ShopDisableStaffVoid.Value : LobbyDisableStaffVoid.Value; } if (itemName.StartsWith("Item Staff Torque")) { return flag ? ShopDisableStaffTorque.Value : LobbyDisableStaffTorque.Value; } return false; } } [HarmonyPatch(typeof(ItemToggle))] internal class ItemTogglePatch { [HarmonyPatch("Start")] [HarmonyPostfix] internal static void StartPatch(ItemToggle __instance) { string name = ((Object)__instance).name; if (Plugin.ShouldDisable(name)) { __instance.ToggleDisable(true); Plugin.Log.LogInfo((object)("[DisableItemsInShop] Deaktiviert: " + name)); } } } [HarmonyPatch(typeof(ItemGun))] internal class ItemGunPatch { [HarmonyPatch("Misfire")] [HarmonyPrefix] internal static bool MisfirePatch(ItemGun __instance) { bool flag = SemiFunc.RunIsShop(); bool flag2 = SemiFunc.RunIsLobby(); if (!flag && !flag2) { return true; } bool flag3 = (flag ? Plugin.ShopDisableGuns.Value : Plugin.LobbyDisableGuns.Value); return !flag3; } } [HarmonyPatch(typeof(ItemMelee))] internal class ItemMeleePatch { [HarmonyPatch("Update")] [HarmonyPrefix] internal static bool UpdatePatch(ItemMelee __instance) { bool flag = SemiFunc.RunIsShop(); bool flag2 = SemiFunc.RunIsLobby(); if (!flag && !flag2) { return true; } bool flag3 = (flag ? Plugin.ShopDisableMelees.Value : Plugin.LobbyDisableMelees.Value); return !flag3; } } [HarmonyPatch(typeof(ItemRubberDuck))] internal class ItemRubberDuckPatch { [HarmonyPatch("Quack")] [HarmonyPrefix] internal static bool QuackPatch(ItemRubberDuck __instance) { bool flag = SemiFunc.RunIsShop(); bool flag2 = SemiFunc.RunIsLobby(); if (!flag && !flag2) { return true; } bool flag3 = (flag ? Plugin.ShopDisableRubberDuck.Value : Plugin.LobbyDisableRubberDuck.Value); return !flag3; } } [HarmonyPatch(typeof(ItemStaffZeroGravity))] internal class ItemStaffZeroGravityPatch { [HarmonyPatch("CastSpell")] [HarmonyPrefix] internal static bool CastSpellPatch(ItemStaffZeroGravity __instance) { string name = ((Object)__instance).name; return !Plugin.ShouldDisableStaff(name); } } [HarmonyPatch(typeof(ItemStaffVoid))] internal class ItemStaffVoidPatch { [HarmonyPatch("CastSpell")] [HarmonyPrefix] internal static bool CastSpellPatch(ItemStaffVoid __instance) { string name = ((Object)__instance).name; return !Plugin.ShouldDisableStaff(name); } } [HarmonyPatch(typeof(ItemStaffTorque))] internal class ItemStaffTorquePatch { [HarmonyPatch("CastSpell")] [HarmonyPrefix] internal static bool CastSpellPatch(ItemStaffTorque __instance) { string name = ((Object)__instance).name; return !Plugin.ShouldDisableStaff(name); } } }