]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix quick-swap stacks of items (#32560)
authorPlykiya <58439124+Plykiya@users.noreply.github.com>
Wed, 2 Oct 2024 05:27:01 +0000 (22:27 -0700)
committerGitHub <noreply@github.com>
Wed, 2 Oct 2024 05:27:01 +0000 (15:27 +1000)
* remove picking up stack on quick swap

* better

Content.Shared/Interaction/SmartEquipSystem.cs

index 4feb0445f8f9e31407aefcfe9aa1028b3f383ba4..746bc994ee16c05d440551900f997031c6d050c0 100644 (file)
@@ -5,6 +5,7 @@ using Content.Shared.Hands.EntitySystems;
 using Content.Shared.Input;
 using Content.Shared.Inventory;
 using Content.Shared.Popups;
+using Content.Shared.Stacks;
 using Content.Shared.Storage;
 using Content.Shared.Storage.EntitySystems;
 using Content.Shared.Whitelist;
@@ -151,8 +152,13 @@ public sealed class SmartEquipSystem : EntitySystem
             _hands.TryDrop(uid, hands.ActiveHand, handsComp: hands);
             _storage.Insert(slotItem, handItem.Value, out var stacked, out _);
 
-            if (stacked != null)
-                _hands.TryPickup(uid, stacked.Value, handsComp: hands);
+            // if the hand item stacked with the things in inventory, but there's no more space left for the rest
+            // of the stack, place the stack back in hand rather than dropping it on the floor
+            if (stacked != null && !_storage.CanInsert(slotItem, handItem.Value, out _))
+            {
+                if (TryComp<StackComponent>(handItem.Value, out var handStack) && handStack.Count > 0)
+                    _hands.TryPickup(uid, handItem.Value, handsComp: hands);
+            }
 
             return;
         }