diff --git a/Dalamud/DalamudStartInfo.cs b/Dalamud/DalamudStartInfo.cs
index 767ee5000..1652bb817 100644
--- a/Dalamud/DalamudStartInfo.cs
+++ b/Dalamud/DalamudStartInfo.cs
@@ -39,7 +39,7 @@ namespace Dalamud
///
/// Gets the language of the game client.
///
- public ClientLanguage Language { get; init; }
+ public ClientLanguage Language { get; init; } = ClientLanguage.English;
///
/// Gets the current game version code.
diff --git a/Dalamud/Game/Internal/DalamudAtkTweaks.cs b/Dalamud/Game/Internal/DalamudAtkTweaks.cs
index 111d1364c..0fede34c9 100644
--- a/Dalamud/Game/Internal/DalamudAtkTweaks.cs
+++ b/Dalamud/Game/Internal/DalamudAtkTweaks.cs
@@ -9,6 +9,7 @@ using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Hooking;
+using Dalamud.Interface;
using Dalamud.Interface.Internal;
using Dalamud.Interface.Windowing;
using FFXIVClientStructs.FFXIV.Component.GUI;
@@ -90,8 +91,9 @@ namespace Dalamud.Game.Internal
{
var systemText = Service.Get().GetExcelSheet()!.GetRow(1059)!.Text.RawString; // "System"
var configuration = Service.Get();
+ var interfaceManager = Service.Get();
- if (args.Title == systemText && configuration.DoButtonsSystemMenu)
+ if (args.Title == systemText && configuration.DoButtonsSystemMenu && interfaceManager.IsDispatchingEvents)
{
var dalamudInterface = Service.Get();
@@ -131,8 +133,9 @@ namespace Dalamud.Game.Internal
}
var configuration = Service.Get();
+ var interfaceManager = Service.Get();
- if (!configuration.DoButtonsSystemMenu)
+ if (!configuration.DoButtonsSystemMenu || !interfaceManager.IsDispatchingEvents)
{
this.hookAgentHudOpenSystemMenu.Original(thisPtr, atkValueArgs, menuSize);
return;
diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs
index 4e2ecc6c6..3f676cd82 100644
--- a/Dalamud/Plugin/DalamudPluginInterface.cs
+++ b/Dalamud/Plugin/DalamudPluginInterface.cs
@@ -15,6 +15,7 @@ using Dalamud.Game.Text.Sanitizer;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface;
+using Dalamud.Interface.Internal;
using Dalamud.Plugin.Internal;
using Dalamud.Plugin.Ipc;
using Dalamud.Plugin.Ipc.Exceptions;
@@ -139,6 +140,11 @@ namespace Dalamud.Plugin
///
/// Gets a value indicating whether Dalamud is running in Debug mode or the /xldev menu is open. This can occur on release builds.
///
+ public bool IsDevMenuOpen => Service.GetNullable() is {IsDevMenuOpen: true}; // Can be null during boot
+
+ ///
+ /// Gets a value indicating whether a debugger is attached.
+ ///
public bool IsDebugging => Debugger.IsAttached;
///