diff --git a/Content.Server/GameObjects/Components/Stack/StackComponent.cs b/Content.Server/GameObjects/Components/Stack/StackComponent.cs index 50d529998d..9aaa605f1c 100644 --- a/Content.Server/GameObjects/Components/Stack/StackComponent.cs +++ b/Content.Server/GameObjects/Components/Stack/StackComponent.cs @@ -26,6 +26,7 @@ namespace Content.Server.GameObjects.Components.Stack private const string SerializationCache = "stack"; private int _count = 50; private int _maxCount = 50; + private bool _throwIndividually = false; [ViewVariables(VVAccess.ReadWrite)] public int Count @@ -53,6 +54,17 @@ namespace Content.Server.GameObjects.Components.Stack } } + [ViewVariables(VVAccess.ReadWrite)] + public bool ThrowIndividually + { + get => _throwIndividually; + private set + { + _throwIndividually = value; + Dirty(); + } + } + [ViewVariables] public int AvailableSpace => MaxCount - Count; diff --git a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs index 47687fc712..3c21da0487 100644 --- a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs @@ -175,8 +175,8 @@ namespace Content.Server.GameObjects.EntitySystems if (!handsComp.ThrowItem()) return false; - // pop off an item, or throw the single item in hand. - if (!throwEnt.TryGetComponent(out StackComponent stackComp) || stackComp.Count < 2) + // throw the item, split off from a stack if it's meant to be thrown individually + if (!throwEnt.TryGetComponent(out StackComponent stackComp) || stackComp.Count < 2 || !stackComp.ThrowIndividually) { handsComp.Drop(handsComp.ActiveIndex); }