From 798336f409be5b39a66b2b3bbbbde4bf12205693 Mon Sep 17 00:00:00 2001 From: NotAKid <37721153+NotAKidoS@users.noreply.github.com> Date: Sun, 15 Mar 2026 19:40:17 -0500 Subject: [PATCH 1/4] [ESCBothMenus] Initial release --- ESCBothMenus/ESCBothMenus.csproj | 2 + ESCBothMenus/Main.cs | 52 +++++++++++++++++++++++++ ESCBothMenus/Properties/AssemblyInfo.cs | 32 +++++++++++++++ ESCBothMenus/format.json | 23 +++++++++++ 4 files changed, 109 insertions(+) create mode 100644 ESCBothMenus/ESCBothMenus.csproj create mode 100644 ESCBothMenus/Main.cs create mode 100644 ESCBothMenus/Properties/AssemblyInfo.cs create mode 100644 ESCBothMenus/format.json diff --git a/ESCBothMenus/ESCBothMenus.csproj b/ESCBothMenus/ESCBothMenus.csproj new file mode 100644 index 0000000..e94f9dc --- /dev/null +++ b/ESCBothMenus/ESCBothMenus.csproj @@ -0,0 +1,2 @@ + + diff --git a/ESCBothMenus/Main.cs b/ESCBothMenus/Main.cs new file mode 100644 index 0000000..926127d --- /dev/null +++ b/ESCBothMenus/Main.cs @@ -0,0 +1,52 @@ +using System.Reflection; +using ABI_RC.Core.InteractionSystem; +using ABI_RC.Systems.InputManagement; +using ABI_RC.Systems.Movement; +using HarmonyLib; +using MelonLoader; +using UnityEngine; + +namespace NAK.ESCBothMenus; + +public class ESCBothMenusMod : MelonMod +{ + public override void OnInitializeMelon() + { + HarmonyInstance.Patch( + typeof(ViewManager).GetMethod(nameof(ViewManager.Update), + BindingFlags.NonPublic | BindingFlags.Instance), + prefix: new HarmonyMethod(typeof(ESCBothMenusMod).GetMethod(nameof(OnPreViewManagerUpdate), + BindingFlags.NonPublic | BindingFlags.Static)) + ); + } + + private static float _timer = -1f; + private static bool _main; + + private static void OnPreViewManagerUpdate() + { + if (CVRInputManager.Instance.mainMenuButton + && !BetterBetterCharacterController.Instance.IsSittingOnControlSeat()) + { + if (_timer < 0f) _timer = 0.2f; + else _main = true; + } + + if (_timer >= 0f && (_timer -= Time.deltaTime) <= 0f) + { + var vm = ViewManager.Instance; + var qm = CVR_MenuManager.Instance; + + if (vm.IsViewShown) vm.UiStateToggle(false); + else if (qm.IsViewShown) qm.ToggleQuickMenu(false); + else if (_main) vm.UiStateToggle(true); + else qm.ToggleQuickMenu(true); + + _timer = -1f; + _main = false; + } + + // consume so original logic doesn't fire + CVRInputManager.Instance.mainMenuButton = false; + } +} \ No newline at end of file diff --git a/ESCBothMenus/Properties/AssemblyInfo.cs b/ESCBothMenus/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..03242e7 --- /dev/null +++ b/ESCBothMenus/Properties/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using MelonLoader; +using NAK.ESCBothMenus.Properties; +using System.Reflection; + +[assembly: AssemblyVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyTitle(nameof(NAK.ESCBothMenus))] +[assembly: AssemblyCompany(AssemblyInfoParams.Author)] +[assembly: AssemblyProduct(nameof(NAK.ESCBothMenus))] + +[assembly: MelonInfo( + typeof(NAK.ESCBothMenus.ESCBothMenusMod), + nameof(NAK.ESCBothMenus), + AssemblyInfoParams.Version, + AssemblyInfoParams.Author, + downloadLink: "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/ESCBothMenus" +)] + +[assembly: MelonGame("ChilloutVR", "ChilloutVR")] +[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] +[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)] +[assembly: MelonColor(255, 246, 25, 99)] // red-pink +[assembly: MelonAuthorColor(255, 158, 21, 32)] // red +[assembly: HarmonyDontPatchAll] + +namespace NAK.ESCBothMenus.Properties; +internal static class AssemblyInfoParams +{ + public const string Version = "1.0.0"; + public const string Author = "NotAKidoS"; +} \ No newline at end of file diff --git a/ESCBothMenus/format.json b/ESCBothMenus/format.json new file mode 100644 index 0000000..4dfdc9d --- /dev/null +++ b/ESCBothMenus/format.json @@ -0,0 +1,23 @@ +{ + "_id": 219, + "name": "ScrollFlight", + "modversion": "1.0.5", + "gameversion": "2025r181", + "loaderversion": "0.7.2", + "modtype": "Mod", + "author": "NotAKidoS", + "description": "Scroll-wheel to adjust flight speed in Desktop. Stole idea from Luc.", + "searchtags": [ + "flight", + "scroll", + "speed", + "modifier" + ], + "requirements": [ + "None" + ], + "downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/ScrollFlight.dll", + "sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/ScrollFlight/", + "changelog": "- Rebuilt for CVR 2025r181", + "embedcolor": "#f61963" +} \ No newline at end of file From e54198a26377234265af9c45e3dcdb9dd85d714c Mon Sep 17 00:00:00 2001 From: NotAKid <37721153+NotAKidoS@users.noreply.github.com> Date: Sun, 15 Mar 2026 19:41:01 -0500 Subject: [PATCH 2/4] only run in vr --- ESCBothMenus/Main.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ESCBothMenus/Main.cs b/ESCBothMenus/Main.cs index 926127d..8e9641e 100644 --- a/ESCBothMenus/Main.cs +++ b/ESCBothMenus/Main.cs @@ -1,5 +1,6 @@ using System.Reflection; using ABI_RC.Core.InteractionSystem; +using ABI_RC.Core.Savior; using ABI_RC.Systems.InputManagement; using ABI_RC.Systems.Movement; using HarmonyLib; @@ -25,6 +26,8 @@ public class ESCBothMenusMod : MelonMod private static void OnPreViewManagerUpdate() { + if (MetaPort.Instance.isUsingVr) return; + if (CVRInputManager.Instance.mainMenuButton && !BetterBetterCharacterController.Instance.IsSittingOnControlSeat()) { From b4421a2149883dafa885f738499a2de60ac8770c Mon Sep 17 00:00:00 2001 From: NotAKid <37721153+NotAKidoS@users.noreply.github.com> Date: Sun, 15 Mar 2026 19:46:59 -0500 Subject: [PATCH 3/4] [ESCBothMenus] Added README --- ESCBothMenus/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 ESCBothMenus/README.md diff --git a/ESCBothMenus/README.md b/ESCBothMenus/README.md new file mode 100644 index 0000000..d7027bc --- /dev/null +++ b/ESCBothMenus/README.md @@ -0,0 +1,14 @@ +# ESCBothMenus + +Makes the Quick Menu appear when pressing ESC in Desktop. Pressing twice will open straight to Main Menu. + +--- + +Here is the block of text where I tell you this mod is not affiliated or endorsed by ABI. +https://documentation.abinteractive.net/official/legal/tos/#7-modding-our-games +~~~~ +> This mod is an independent creation and is not affiliated with, supported by or approved by Alpha Blend Interactive. + +> Use of this mod is done so at the user's own risk and the creator cannot be held responsible for any issues arising from its use. + +> To the best of my knowledge, I have adhered to the Modding Guidelines established by Alpha Blend Interactive. From 41d582146c2eeed5def58605b417a73e42145825 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Mar 2026 00:47:24 +0000 Subject: [PATCH 4/4] [NAK_CVR_Mods] Update mod list in README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d317016..73175b8 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ | [CustomSpawnPoint](CustomSpawnPoint/README.md) | Replaces the unused Images button in the World Details page with a button to set a custom spawn point. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/CustomSpawnPoint.dll) | | [DesktopInteractions](DesktopInteractions/README.md) | Adds IK-driven hand gestures to your avatar in Desktop: earpiece grab (GMOD-style) when typing in ChatBox, and binocular cupping when zooming. Both gestures are toggleable in settings. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/DesktopInteractions.dll) | | [DoubleTapJumpToExitSeat](DoubleTapJumpToExitSeat/README.md) | Replaces seat exit controls with a double-tap of the jump button, avoiding accidental exits from joystick drift or opening the menu. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/DoubleTapJumpToExitSeat.dll) | +| [ESCBothMenus](ESCBothMenus/README.md) | Makes the Quick Menu appear when pressing ESC in Desktop. Pressing twice will open straight to Main Menu. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/ESCBothMenus.dll) | | [FuckToes](FuckToes/README.md) | Prevents VRIK from autodetecting toes in Halfbody or Fullbody. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/FuckToes.dll) | | [PlapPlapForAll](PlapPlapForAll/README.md) | Penetrator SFX mod which adds Noach's PlapPlap prefab to any detected DPS setup on avatars that do not already have it. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/PlapPlapForAll.dll) | | [PropLoadingHexagon](PropLoadingHexagon/README.md) | https://github.com/NotAKidoS/NAK_CVR_Mods/assets/37721153/a892c765-71c1-47f3-a781-bdb9b60ba117 | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/PropLoadingHexagon.dll) |