diff --git a/Content.Client/CombatMode/CombatModeComponent.cs b/Content.Client/CombatMode/CombatModeComponent.cs index df65be2fc7..c1874dae04 100644 --- a/Content.Client/CombatMode/CombatModeComponent.cs +++ b/Content.Client/CombatMode/CombatModeComponent.cs @@ -1,4 +1,5 @@ using Content.Client.HUD; +using Content.Client.Verbs; using Content.Shared.CombatMode; using Content.Shared.Targeting; using Robust.Client.GameObjects; @@ -50,6 +51,8 @@ namespace Content.Client.CombatMode return; } + var verbs = IoCManager.Resolve().GetEntitySystem(); + verbs.CloseAllMenus(); _gameHud.TargetingZone = ActiveZone; } } diff --git a/Content.Client/Verbs/UI/VerbMenuPresenter.cs b/Content.Client/Verbs/UI/VerbMenuPresenter.cs index 15f83a208c..bcad3019fd 100644 --- a/Content.Client/Verbs/UI/VerbMenuPresenter.cs +++ b/Content.Client/Verbs/UI/VerbMenuPresenter.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Content.Client.CombatMode; using Content.Client.ContextMenu.UI; using Content.Shared.Input; using Content.Shared.Verbs; @@ -28,14 +29,16 @@ namespace Content.Client.Verbs.UI [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!; + private readonly CombatModeSystem _combatMode; private readonly VerbSystem _verbSystem; public EntityUid CurrentTarget; public SortedSet CurrentVerbs = new(); - public VerbMenuPresenter(VerbSystem verbSystem) + public VerbMenuPresenter(CombatModeSystem combatMode, VerbSystem verbSystem) { IoCManager.InjectDependencies(this); + _combatMode = combatMode; _verbSystem = verbSystem; } @@ -46,7 +49,8 @@ namespace Content.Client.Verbs.UI /// Used to force showing all verbs (mostly for admins). public void OpenVerbMenu(EntityUid target, bool force = false) { - if (_playerManager.LocalPlayer?.ControlledEntity is not {Valid: true} user) + if (_playerManager.LocalPlayer?.ControlledEntity is not {Valid: true} user || + _combatMode.IsInCombatMode(user)) return; Close(); diff --git a/Content.Client/Verbs/VerbSystem.cs b/Content.Client/Verbs/VerbSystem.cs index d14f3ab76f..a1b9e3b277 100644 --- a/Content.Client/Verbs/VerbSystem.cs +++ b/Content.Client/Verbs/VerbSystem.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; +using Content.Client.CombatMode; using Content.Client.ContextMenu.UI; using Content.Client.Examine; using Content.Client.Gameplay; @@ -28,6 +29,7 @@ namespace Content.Client.Verbs [UsedImplicitly] public sealed class VerbSystem : SharedVerbSystem { + [Dependency] private readonly CombatModeSystem _combatMode = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly ExamineSystem _examineSystem = default!; [Dependency] private readonly TagSystem _tagSystem = default!; @@ -60,7 +62,7 @@ namespace Content.Client.Verbs SubscribeNetworkEvent(HandleVerbResponse); EntityMenu = new(this); - VerbMenu = new(this); + VerbMenu = new(_combatMode, this); } public void Reset(RoundRestartCleanupEvent ev) diff --git a/Content.Shared/CombatMode/SharedCombatModeComponent.cs b/Content.Shared/CombatMode/SharedCombatModeComponent.cs index a68560b055..62e3ab53fb 100644 --- a/Content.Shared/CombatMode/SharedCombatModeComponent.cs +++ b/Content.Shared/CombatMode/SharedCombatModeComponent.cs @@ -1,6 +1,7 @@ using Content.Shared.Actions; using Content.Shared.Actions.ActionTypes; using Content.Shared.Targeting; +using Content.Shared.Verbs; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Serialization; @@ -51,6 +52,7 @@ namespace Content.Shared.CombatMode _isInCombatMode = value; if (CombatToggleAction != null) EntitySystem.Get().SetToggled(CombatToggleAction, _isInCombatMode); + Dirty(); } }