Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of StopStealingMyMouse v1.3.0
StopStealingMyMouse/StopStealingMyMouse.dll
Decompiled a year 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 Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using MonoMod.RuntimeDetour; using RoR2; using RoR2.UI; 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("StopStealingMyMouse")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+c9f696a934bbebf924129c3af4d48501c236063e")] [assembly: AssemblyProduct("StopStealingMyMouse")] [assembly: AssemblyTitle("StopStealingMyMouse")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [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 StopStealingMyMouse { [BepInPlugin("com.rune580.stopstealingmymouse", "Stop stealing my mouse!", "1.3.0")] public sealed class StopStealingMyMousePlugin : BaseUnityPlugin { private const string ModName = "Stop stealing my mouse!"; private const string Author = "rune580"; private const string Guid = "com.rune580.stopstealingmymouse"; private const string Version = "1.3.0"; private static bool _arrestRoR2 = true; private ILHook _mpEventSystemManagerHook; private Hook _hgButtonHook; private void Awake() { ArrestRoR2(); } private void ArrestRoR2() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Expected O, but got Unknown MethodInfo method = typeof(MPEventSystemManager).GetMethod("Update", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); _mpEventSystemManagerHook = new ILHook((MethodBase)method, new Manipulator(MPEventSystemManagerOnUpdate)); method = typeof(HGButton).GetMethod("OnClickCustom", BindingFlags.Instance | BindingFlags.Public); MethodInfo method2 = ((object)this).GetType().GetMethod("HGButtonOnOnClickCustom", BindingFlags.Instance | BindingFlags.NonPublic); _hgButtonHook = new Hook((MethodBase)method, method2, (object)this); } private void ReleaseRoR2() { _mpEventSystemManagerHook.Undo(); _hgButtonHook.Undo(); } private void MPEventSystemManagerOnUpdate(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il).Goto(0, (MoveType)0, false); ILLabel val3 = default(ILLabel); ILLabel val2 = default(ILLabel); if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[6] { (Instruction i) => ILPatternMatchingExt.MatchCall<Application>(i, "get_isBatchMode"), (Instruction i) => ILPatternMatchingExt.MatchBrtrue(i, ref val3), (Instruction i) => ILPatternMatchingExt.MatchCall<MPEventSystemManager>(i, "get_kbmEventSystem"), (Instruction i) => ILPatternMatchingExt.MatchLdnull(i), (Instruction i) => ILPatternMatchingExt.MatchCall<Object>(i, "op_Inequality"), (Instruction i) => ILPatternMatchingExt.MatchBrfalse(i, ref val2) })) { val.Emit(OpCodes.Call, (MethodBase)typeof(StopStealingMyMousePlugin).GetMethod("PreventTheft", BindingFlags.Static | BindingFlags.NonPublic)); val.Emit(OpCodes.Ret); } } private static void PreventTheft() { if (_arrestRoR2) { Cursor.lockState = (CursorLockMode)0; Cursor.visible = false; } } private void HGButtonOnOnClickCustom(Action<HGButton> orig, HGButton self) { if (_arrestRoR2) { ReleaseRoR2(); } orig(self); } private void OnApplicationFocus(bool hasFocus) { if (_arrestRoR2 && RoR2Application.loadFinished && hasFocus) { _arrestRoR2 = false; Cursor.lockState = (CursorLockMode)2; Cursor.visible = false; } } } }