Due to update 2.4.3, some mods may no longer function. FixedConfig may be necessary.
Decompiled source of Disable Abilities Mod v1.0.1
plugins/DisableAbilities.dll
Decompiled 3 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; [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("DisableAbilities")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("DisableAbilities")] [assembly: AssemblyTitle("DisableAbilities")] [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 DisableAbilities { public class ClickHandler : MonoBehaviour, IPointerClickHandler, IEventSystemHandler { public int index; public AbilityGridEntry abilityGridEntry; public void OnPointerClick(PointerEventData eventData) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Invalid comparison between Unknown and I4 //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Invalid comparison between Unknown and I4 //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) AbilityGrid value = Traverse.Create((object)abilityGridEntry).Field<AbilityGrid>("abilityGrid").Value; AbilityGridEntry[] value2 = Traverse.Create((object)value).Field<AbilityGridEntry[]>("grid").Value; if ((int)eventData.button == 1) { if (index == 0) { if (Plugin.AbilityList.Count == 29) { Plugin.AbilityList.Clear(); return; } Plugin.AbilityList.Clear(); for (int i = 1; i < value2.Length; i++) { Plugin.AbilityList.Add(i); } } else if (Plugin.AbilityList.Contains(index)) { Plugin.AbilityList.Remove(index); Plugin.Log.LogInfo((object)$"Ability Enabled: {index}"); abilityGridEntry.SetColor(((Graphic)value.borderImage).color); } else { Plugin.AbilityList.Add(index); Plugin.Log.LogInfo((object)$"Ability Disabled: {index}"); abilityGridEntry.SetColor(Color.red); } } else if ((int)eventData.button == 0) { value.CloseGrid(); } } } [BepInPlugin("at.hofinga.bopl.disableabilities", "Disable Abilities", "1.0.0")] public class Plugin : BaseUnityPlugin { public static ManualLogSource Log; public static List<int> AbilityList = new List<int>(); private void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown Log = ((BaseUnityPlugin)this).Logger; Harmony val = new Harmony("at.hofinga.bopl.disableabilities"); val.PatchAll(); Log.LogInfo((object)"Disable Abilities Mod has been loaded!"); } } [HarmonyPatch(typeof(RandomAbility), "GetRandomAbilityPrefab")] [HarmonyPatch(new Type[] { typeof(NamedSpriteList), typeof(NamedSpriteList) })] internal class Patch_RandomAbility { [HarmonyPostfix] private static void Postfix(ref NamedSprite __result, NamedSpriteList abilityIcons) { //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) int count = abilityIcons.sprites.Count; count -= 2; int num; do { num = Updater.RandomInt(0, count) + 2; Plugin.Log.LogInfo((object)$"RandomAbility: index={num}"); if (Plugin.AbilityList.Count >= count) { Plugin.Log.LogInfo((object)"No ability could be chosen"); Plugin.Log.LogInfo((object)Plugin.AbilityList.Count.ToString()); Plugin.Log.LogInfo((object)count); break; } } while (Plugin.AbilityList.Contains(num - 1)); __result = abilityIcons.sprites[num]; } } } namespace DisableAbilities.Patches { [HarmonyPatch(typeof(AbilityGridEntry))] internal class AbilityGridEntryPatch { public static Color defaultColor; [HarmonyPrefix] [HarmonyPatch("Click")] private static bool Prefix(AbilityGridEntry __instance) { __instance.Select(); return false; } [HarmonyPostfix] [HarmonyPatch("Init")] private static void Postfix(AbilityGridEntry __instance, int index) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) ClickHandler clickHandler = ((Component)__instance).gameObject.AddComponent<ClickHandler>(); clickHandler.index = index; clickHandler.abilityGridEntry = __instance; defaultColor = __instance.GetColor(); } } [HarmonyPatch(typeof(AbilityGrid))] public class AbilityGridPatch { [HarmonyPostfix] [HarmonyPatch("Update")] public static void Postfix(AbilityGrid __instance) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) AbilityGridEntry[] value = Traverse.Create((object)__instance).Field<AbilityGridEntry[]>("grid").Value; for (int i = 1; i < value.Length; i++) { if (Plugin.AbilityList.Contains(i)) { value[i].SetColor(Color.red); } else { value[i].SetColor(((Graphic)__instance.borderImage).color); } } } } }