diff --git a/Content.Shared/Wieldable/WieldableSystem.cs b/Content.Shared/Wieldable/WieldableSystem.cs index cb95c1d7e7..a0c9d04ff7 100644 --- a/Content.Shared/Wieldable/WieldableSystem.cs +++ b/Content.Shared/Wieldable/WieldableSystem.cs @@ -17,6 +17,7 @@ using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Systems; using Content.Shared.Wieldable.Components; using Robust.Shared.Audio.Systems; +using Robust.Shared.Network; using Robust.Shared.Timing; namespace Content.Shared.Wieldable; @@ -32,6 +33,7 @@ public sealed class WieldableSystem : EntitySystem [Dependency] private readonly UseDelaySystem _delay = default!; [Dependency] private readonly SharedGunSystem _gun = default!; [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly INetManager _netManager = default!; public override void Initialize() { @@ -213,21 +215,27 @@ public sealed class WieldableSystem : EntitySystem if (component.WieldSound != null) _audioSystem.PlayPredicted(component.WieldSound, used, user); - var virtuals = new List(); - for (var i = 0; i < component.FreeHandsRequired; i++) + //This section handles spawning the virtual item(s) to occupy the required additional hand(s). + //Since the client can't currently predict entity spawning, only do this if this is running serverside. + //Remove this check if TrySpawnVirtualItem in SharedVirtualItemSystem is allowed to complete clientside. + if (_netManager.IsServer) { - if (_virtualItemSystem.TrySpawnVirtualItemInHand(used, user, out var virtualItem, true)) + var virtuals = new List(); + for (var i = 0; i < component.FreeHandsRequired; i++) { - virtuals.Add(virtualItem.Value); - continue; - } + if (_virtualItemSystem.TrySpawnVirtualItemInHand(used, user, out var virtualItem, true)) + { + virtuals.Add(virtualItem.Value); + continue; + } - foreach (var existingVirtual in virtuals) - { - QueueDel(existingVirtual); - } + foreach (var existingVirtual in virtuals) + { + QueueDel(existingVirtual); + } - return false; + return false; + } } if (TryComp(used, out UseDelayComponent? useDelay)