diff --git a/Content.Server/Wieldable/WieldableSystem.cs b/Content.Server/Wieldable/WieldableSystem.cs index 3b322cc12d..1aaa9c8fca 100644 --- a/Content.Server/Wieldable/WieldableSystem.cs +++ b/Content.Server/Wieldable/WieldableSystem.cs @@ -51,6 +51,9 @@ namespace Content.Server.Wieldable if (args.Hands == null || !args.CanAccess || !args.CanInteract) return; + if (!_handsSystem.IsHolding(args.User, uid, out _, args.Hands)) + return; + // TODO VERB TOOLTIPS Make CanWield or some other function return string, set as verb tooltip and disable // verb. Or just don't add it to the list if the action is not executable. @@ -82,7 +85,7 @@ namespace Content.Server.Wieldable if (!EntityManager.TryGetComponent(user, out var hands)) { if(!quiet) - _popupSystem.PopupEntity(Loc.GetString("wieldable-component-no-hands"), user, Filter.Pvs(user)); + _popupSystem.PopupEntity(Loc.GetString("wieldable-component-no-hands"), user, Filter.Entities(user)); return false; } @@ -90,7 +93,7 @@ namespace Content.Server.Wieldable if (!_handsSystem.IsHolding(user, uid, out _, hands)) { if (!quiet) - _popupSystem.PopupEntity(Loc.GetString("wieldable-component-not-in-hands", ("item", uid)), user, Filter.Pvs(user)); + _popupSystem.PopupEntity(Loc.GetString("wieldable-component-not-in-hands", ("item", uid)), user, Filter.Entities(user)); return false; } @@ -100,7 +103,7 @@ namespace Content.Server.Wieldable { var message = Loc.GetString("wieldable-component-not-enough-free-hands", ("number", component.FreeHandsRequired), ("item", uid)); - _popupSystem.PopupEntity(message, user, Filter.Pvs(user)); + _popupSystem.PopupEntity(message, user, Filter.Entities(user)); } return false; } @@ -145,7 +148,7 @@ namespace Content.Server.Wieldable public void AttemptUnwield(EntityUid used, WieldableComponent component, EntityUid user) { var ev = new BeforeUnwieldEvent(); - RaiseLocalEvent(used, ev, false); + RaiseLocalEvent(used, ev); if (ev.Cancelled) return; @@ -153,8 +156,8 @@ namespace Content.Server.Wieldable var targEv = new ItemUnwieldedEvent(user); var userEv = new UnwieldedItemEvent(used); - RaiseLocalEvent(used, targEv, false); - RaiseLocalEvent(user, userEv, false); + RaiseLocalEvent(used, targEv); + RaiseLocalEvent(user, userEv); } private void OnItemWielded(EntityUid uid, WieldableComponent component, ItemWieldedEvent args) @@ -184,7 +187,9 @@ namespace Content.Server.Wieldable } _popupSystem.PopupEntity(Loc.GetString("wieldable-component-successful-wield", - ("item", uid)), args.User.Value, Filter.Pvs(args.User.Value)); + ("item", uid)), args.User.Value, Filter.Entities(args.User.Value)); + _popupSystem.PopupEntity(Loc.GetString("wieldable-component-successful-wield-other", + ("user", args.User.Value),("item", uid)), args.User.Value, Filter.PvsExcept(args.User.Value)); } private void OnItemUnwielded(EntityUid uid, WieldableComponent component, ItemUnwieldedEvent args) @@ -206,8 +211,10 @@ namespace Content.Server.Wieldable if (component.UnwieldSound != null) _audioSystem.PlayPvs(component.UnwieldSound, uid); - var message = Loc.GetString("wieldable-component-failed-wield", ("item", uid)); - _popupSystem.PopupEntity(message, args.User.Value, Filter.Pvs(args.User.Value)); + _popupSystem.PopupEntity(Loc.GetString("wieldable-component-failed-wield", + ("item", uid)), args.User.Value, Filter.Entities(args.User.Value)); + _popupSystem.PopupEntity(Loc.GetString("wieldable-component-failed-wield-other", + ("user", args.User.Value), ("item", uid)), args.User.Value, Filter.PvsExcept(args.User.Value)); } _virtualItemSystem.DeleteInHandsMatching(args.User.Value, uid); diff --git a/Resources/Locale/en-US/wieldable/wieldable-component.ftl b/Resources/Locale/en-US/wieldable/wieldable-component.ftl index 7abffaf6a7..30f81f5ca9 100644 --- a/Resources/Locale/en-US/wieldable/wieldable-component.ftl +++ b/Resources/Locale/en-US/wieldable/wieldable-component.ftl @@ -5,6 +5,9 @@ wieldable-verb-text-unwield = Unwield wieldable-component-successful-wield = You wield { THE($item) }. wieldable-component-failed-wield = You unwield { THE($item) }. +wieldable-component-successful-wield-other = { THE($user) } wields { THE($item) }. +wieldable-component-failed-wield-other = { THE($user) } unwields { THE($item) }. + wieldable-component-no-hands = You don't have enough hands! wieldable-component-not-enough-free-hands = {$number -> [one] You need a free hand to wield { THE($item) }.