diff --git a/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix.csproj b/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix.csproj
new file mode 100644
index 0000000..e269c73
--- /dev/null
+++ b/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix.csproj
@@ -0,0 +1,37 @@
+
+
+
+ net35
+ BepInEx5Plugins.Ash.Alisa.ControlsMenuFix
+ ControlsMenuFix
+ 1.0.0
+ true
+ 9.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\lib\SteamRelease\Assembly-CSharp.dll
+ false
+
+
+ ..\lib\UnityEngine\UnityEngine.UI.dll
+ false
+
+
+
+
+
+
+
diff --git a/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/HarmonyPatches/ControlsMenuType_Update.cs b/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/HarmonyPatches/ControlsMenuType_Update.cs
new file mode 100644
index 0000000..cf2df54
--- /dev/null
+++ b/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/HarmonyPatches/ControlsMenuType_Update.cs
@@ -0,0 +1,203 @@
+using HarmonyLib;
+using System;
+using System.Reflection;
+using UnityEngine;
+using UnityEngine.EventSystems;
+
+namespace BepInEx5Plugins.Ash.Alisa.ControlsMenuFix.HarmonyPatches
+{
+ [HarmonyPatch(typeof(ControlsMenuType), "Update")]
+ public class ControlsMenuType_Update
+ {
+ private static FieldInfo MainMenu_audioSource;
+
+ private static FieldInfo PauseMenu_audioSource;
+
+ public static bool Prepare(MethodBase original)
+ {
+ if (original is null)
+ {
+ try
+ {
+ MainMenu_audioSource = typeof(MainMenu).GetField("audioSource", BindingFlags.NonPublic | BindingFlags.Instance);
+ PauseMenu_audioSource = typeof(PauseMenu).GetField("audioSource", BindingFlags.NonPublic | BindingFlags.Instance);
+ }
+ catch (Exception exception)
+ {
+ Console.WriteLine(exception);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ // Check if audioSource is null before referencing it,
+ // automatically assign it to an appopriate value if necessary.
+ public static bool Prefix(ControlsMenuType __instance
+ , ref Settings ___settings
+ , ref bool ___buttonPressed
+ )
+ {
+ if (!__instance.audioSource)
+ {
+ Console.WriteLine("<" + __instance.name + ">" + "ControlsMenuType_Update.Prefix: audioSource is null! Auto fixing...");
+
+ if (__instance.mainMenu)
+ {
+ __instance.audioSource = (AudioSource)MainMenu_audioSource.GetValue(__instance.mainMenu);
+ }
+ else if (__instance.pauseMenu)
+ {
+ __instance.audioSource = (AudioSource)PauseMenu_audioSource.GetValue(__instance.pauseMenu);
+ }
+ else
+ {
+ Console.WriteLine("<" + __instance.name + ">" + "ControlsMenuType_Update.Prefix: Both main and pause menu references are null!");
+ }
+ }
+
+ if (!(EventSystem.current.currentSelectedGameObject == __instance.gameObject))
+ {
+ return false;
+ }
+
+ if (!___buttonPressed)
+ {
+ if (Input.GetAxis("Horizontal") != 0f
+ || Input.GetAxis(___settings.customHorizontalAxis) != 0f)
+ {
+ if (!__instance.xboxControllerType)
+ {
+ if (__instance.mainMenu)
+ {
+ __instance.mainMenu.ButtonTypeSwitch();
+ }
+ else if (__instance.pauseMenu)
+ {
+ __instance.pauseMenu.ButtonTypeSwitch();
+ }
+
+ if (__instance.audioSource)
+ {
+ __instance.audioSource.PlayOneShot(__instance.moveSelected, 1f);
+ }
+ }
+ else
+ {
+ if (__instance.mainMenu)
+ {
+ __instance.mainMenu.XboxControlTypeSwitch();
+ }
+ else if (__instance.pauseMenu)
+ {
+ __instance.pauseMenu.XboxControlTypeSwitch();
+ }
+
+ if (__instance.audioSource)
+ {
+ __instance.audioSource.PlayOneShot(__instance.moveSelected, 1f);
+ }
+ }
+
+ ___buttonPressed = true;
+ }
+
+ if (___settings.keyboardAlt > 0)
+ {
+ if (Input.GetAxis("Horizontal_WASD") == 0f)
+ {
+ return false;
+ }
+
+ if (!__instance.xboxControllerType)
+ {
+ if (__instance.mainMenu)
+ {
+ __instance.mainMenu.ButtonTypeSwitch();
+ }
+ else if (__instance.pauseMenu)
+ {
+ __instance.pauseMenu.ButtonTypeSwitch();
+ }
+
+ if (__instance.audioSource)
+ {
+ __instance.audioSource.PlayOneShot(__instance.moveSelected, 1f);
+ }
+ }
+ else
+ {
+ if (__instance.mainMenu)
+ {
+ __instance.mainMenu.XboxControlTypeSwitch();
+ }
+ else if (__instance.pauseMenu)
+ {
+ __instance.pauseMenu.XboxControlTypeSwitch();
+ }
+
+ if (__instance.audioSource)
+ {
+ __instance.audioSource.PlayOneShot(__instance.moveSelected, 1f);
+ }
+ }
+
+ ___buttonPressed = true;
+ }
+ else
+ {
+ if (___settings.keyboardAlt >= 0
+ || Input.GetAxis("Horizontal_ZQSD") == 0f)
+ {
+ return false;
+ }
+
+ if (!__instance.xboxControllerType)
+ {
+ if (__instance.mainMenu)
+ {
+ __instance.mainMenu.ButtonTypeSwitch();
+ }
+ else if (__instance.pauseMenu)
+ {
+ __instance.pauseMenu.ButtonTypeSwitch();
+ }
+
+ if (__instance.audioSource)
+ {
+ __instance.audioSource.PlayOneShot(__instance.moveSelected, 1f);
+ }
+ }
+ else
+ {
+ if (__instance.mainMenu)
+ {
+ __instance.mainMenu.XboxControlTypeSwitch();
+ }
+ else if (__instance.pauseMenu)
+ {
+ __instance.pauseMenu.XboxControlTypeSwitch();
+ }
+
+ if (__instance.audioSource)
+ {
+ __instance.audioSource.PlayOneShot(__instance.moveSelected, 1f);
+ }
+ }
+
+ ___buttonPressed = true;
+ }
+ }
+ else if (Input.GetAxis("Horizontal") == 0f
+ && Input.GetAxis(___settings.customHorizontalAxis) == 0f
+ && Input.GetAxis("Horizontal_WASD") == 0f
+ && Input.GetAxis("Horizontal_ZQSD") == 0f)
+ {
+ ___buttonPressed = false;
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/NuGet.Config b/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/NuGet.Config
new file mode 100644
index 0000000..1864ded
--- /dev/null
+++ b/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/NuGet.Config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/Plugin.cs b/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/Plugin.cs
new file mode 100644
index 0000000..f0bd075
--- /dev/null
+++ b/BepInEx5Plugins.Ash.Alisa.ControlsMenuFix/Plugin.cs
@@ -0,0 +1,26 @@
+using BepInEx;
+using HarmonyLib;
+using System;
+
+namespace BepInEx5Plugins.Ash.Alisa.ControlsMenuFix
+{
+ [BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
+ public class Plugin : BaseUnityPlugin
+ {
+ private void Awake()
+ {
+ try
+ {
+ Logger.LogInfo($"Plugin {PluginInfo.PLUGIN_GUID} is loaded!");
+
+ var harmony = new Harmony(Info.Metadata.GUID);
+
+ harmony.PatchAll();
+ }
+ catch (Exception exception)
+ {
+ Console.WriteLine(exception);
+ }
+ }
+ }
+}