]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Storage Standardization [Take 2] (#21270)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Tue, 31 Oct 2023 03:55:55 +0000 (23:55 -0400)
committerGitHub <noreply@github.com>
Tue, 31 Oct 2023 03:55:55 +0000 (20:55 -0700)
240 files changed:
Content.Client/Storage/UI/StorageWindow.cs
Content.IntegrationTests/Tests/HumanInventoryUniformSlotsTest.cs
Content.IntegrationTests/Tests/StackTest.cs [deleted file]
Content.IntegrationTests/Tests/StorageTest.cs
Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs
Content.Server/Nutrition/EntitySystems/FoodSystem.cs
Content.Server/Storage/Components/SecretStashComponent.cs
Content.Server/Storage/EntitySystems/StorageFillVisualizerSystem.cs
Content.Server/Storage/EntitySystems/StorageSystem.Fill.cs
Content.Server/UserInterface/StatValuesCommand.cs
Content.Server/Weapons/Melee/EnergySword/EnergySwordSystem.cs
Content.Shared/Inventory/InventorySystem.Equip.cs
Content.Shared/Item/ItemComponent.cs
Content.Shared/Item/ItemToggleComponent.cs
Content.Shared/Item/SharedItemSystem.cs
Content.Shared/Storage/EntitySystems/MagnetPickupSystem.cs
Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs
Content.Shared/Storage/StorageComponent.cs
Resources/Locale/en-US/commands/stat-values-command.ftl
Resources/Locale/en-US/components/storage-component.ftl
Resources/Locale/en-US/items/components/item-component.ftl
Resources/Maps/Shuttles/striker.yml
Resources/Maps/core.yml
Resources/Maps/europa.yml
Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml
Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml
Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml
Resources/Prototypes/Catalog/Fills/Boxes/general.yml
Resources/Prototypes/Catalog/Fills/Boxes/medical.yml
Resources/Prototypes/Catalog/Fills/Boxes/security.yml
Resources/Prototypes/Catalog/Fills/Crates/fun.yml
Resources/Prototypes/Catalog/Fills/Items/belt.yml
Resources/Prototypes/Catalog/Fills/Items/briefcases.yml
Resources/Prototypes/Catalog/Fills/Items/firstaidkits.yml
Resources/Prototypes/Catalog/Fills/Items/toolboxes.yml
Resources/Prototypes/Entities/Clothing/Back/backpacks.yml
Resources/Prototypes/Entities/Clothing/Back/duffel.yml
Resources/Prototypes/Entities/Clothing/Back/satchel.yml
Resources/Prototypes/Entities/Clothing/Back/specific.yml
Resources/Prototypes/Entities/Clothing/Belt/base_clothingbelt.yml
Resources/Prototypes/Entities/Clothing/Belt/belts.yml
Resources/Prototypes/Entities/Clothing/Belt/quiver.yml
Resources/Prototypes/Entities/Clothing/Belt/waist_bags.yml
Resources/Prototypes/Entities/Clothing/Ears/headsets.yml
Resources/Prototypes/Entities/Clothing/Eyes/base_clothingeyes.yml
Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml
Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml
Resources/Prototypes/Entities/Clothing/Head/hats.yml
Resources/Prototypes/Entities/Clothing/Masks/base_clothingmask.yml
Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml
Resources/Prototypes/Entities/Clothing/Neck/pins.yml
Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml
Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml
Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml
Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml
Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml
Resources/Prototypes/Entities/Clothing/Shoes/specific.yml
Resources/Prototypes/Entities/Clothing/base_clothing.yml
Resources/Prototypes/Entities/Debugging/debug_sweps.yml
Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donut.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/misc.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/egg.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/cartons.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/cigarette.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/packs.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/rolling_paper.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigars/case.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigars/cigar.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml
Resources/Prototypes/Entities/Objects/Decoration/jackolantern.yml
Resources/Prototypes/Entities/Objects/Decoration/lidsalami.yml
Resources/Prototypes/Entities/Objects/Decoration/present.yml
Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml
Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/chimp_upgrade_kit.yml
Resources/Prototypes/Entities/Objects/Devices/forensic_scanner.yml
Resources/Prototypes/Entities/Objects/Devices/pda.yml
Resources/Prototypes/Entities/Objects/Fun/Instruments/base_instruments.yml
Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_brass.yml
Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml
Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml
Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml
Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml
Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml
Resources/Prototypes/Entities/Objects/Fun/crayons.yml
Resources/Prototypes/Entities/Objects/Fun/darts.yml
Resources/Prototypes/Entities/Objects/Fun/dice.yml
Resources/Prototypes/Entities/Objects/Fun/dice_bag.yml
Resources/Prototypes/Entities/Objects/Fun/puppet.yml
Resources/Prototypes/Entities/Objects/Fun/toys.yml
Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml
Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml
Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml
Resources/Prototypes/Entities/Objects/Materials/ingots.yml
Resources/Prototypes/Entities/Objects/Materials/materials.yml
Resources/Prototypes/Entities/Objects/Materials/ore.yml
Resources/Prototypes/Entities/Objects/Materials/parts.yml
Resources/Prototypes/Entities/Objects/Materials/shards.yml
Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml
Resources/Prototypes/Entities/Objects/Misc/box.yml
Resources/Prototypes/Entities/Objects/Misc/briefcases.yml
Resources/Prototypes/Entities/Objects/Misc/eggspider.yml
Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml
Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml
Resources/Prototypes/Entities/Objects/Misc/handcuffs.yml
Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml
Resources/Prototypes/Entities/Objects/Misc/implanters.yml
Resources/Prototypes/Entities/Objects/Misc/improvised_gun_parts.yml
Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml
Resources/Prototypes/Entities/Objects/Misc/medalcase.yml
Resources/Prototypes/Entities/Objects/Misc/monkeycube.yml
Resources/Prototypes/Entities/Objects/Misc/paper.yml
Resources/Prototypes/Entities/Objects/Misc/potatoai_chip.yml
Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml
Resources/Prototypes/Entities/Objects/Misc/tiles.yml
Resources/Prototypes/Entities/Objects/Power/antimatter_jar.yml
Resources/Prototypes/Entities/Objects/Power/antimatter_part.yml
Resources/Prototypes/Entities/Objects/Power/powersink.yml
Resources/Prototypes/Entities/Objects/Power/solar_parts.yml
Resources/Prototypes/Entities/Objects/Shields/shields.yml
Resources/Prototypes/Entities/Objects/Specific/Chapel/bibles.yml
Resources/Prototypes/Entities/Objects/Specific/Chemistry/chem_bag.yml
Resources/Prototypes/Entities/Objects/Specific/Forensics/forensics.yml
Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml
Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml
Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml
Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml
Resources/Prototypes/Entities/Objects/Specific/Janitorial/trashbag.yml
Resources/Prototypes/Entities/Objects/Specific/Kitchen/foodcarts.yml
Resources/Prototypes/Entities/Objects/Specific/Librarian/books_bag.yml
Resources/Prototypes/Entities/Objects/Specific/Mech/mech_construction.yml
Resources/Prototypes/Entities/Objects/Specific/Mech/mecha_equipment.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/disease.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/medkits.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml
Resources/Prototypes/Entities/Objects/Specific/Research/rped.yml
Resources/Prototypes/Entities/Objects/Specific/Salvage/ore_bag.yml
Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml
Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_artifacts.yml
Resources/Prototypes/Entities/Objects/Specific/chemical-containers.yml
Resources/Prototypes/Entities/Objects/Specific/chemistry-bottles.yml
Resources/Prototypes/Entities/Objects/Specific/chemistry.yml
Resources/Prototypes/Entities/Objects/Specific/syndicate.yml
Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml
Resources/Prototypes/Entities/Objects/Tools/bucket.yml
Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml
Resources/Prototypes/Entities/Objects/Tools/cowtools.yml
Resources/Prototypes/Entities/Objects/Tools/fulton.yml
Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml
Resources/Prototypes/Entities/Objects/Tools/inflatable_wall.yml
Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml
Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml
Resources/Prototypes/Entities/Objects/Tools/lighters.yml
Resources/Prototypes/Entities/Objects/Tools/matches.yml
Resources/Prototypes/Entities/Objects/Tools/toolbox.yml
Resources/Prototypes/Entities/Objects/Tools/tools.yml
Resources/Prototypes/Entities/Objects/Tools/welders.yml
Resources/Prototypes/Entities/Objects/Vehicles/keys.yml
Resources/Prototypes/Entities/Objects/Weapons/Bombs/funny.yml
Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml
Resources/Prototypes/Entities/Objects/Weapons/Bombs/spider.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimateriel.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/base_cartridge.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/heavy_rifle.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_pka.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_staff.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_wand.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/spraynozzle.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/HMGs/hmgs.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/needle.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/weapon_toolbox.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml
Resources/Prototypes/Entities/Objects/Weapons/Throwable/bola.yml
Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml
Resources/Prototypes/Entities/Objects/Weapons/security.yml
Resources/Prototypes/Entities/Objects/base_item.yml
Resources/Prototypes/Entities/Structures/Furniture/bookshelf.yml
Resources/Prototypes/Entities/Structures/Furniture/chairs.yml
Resources/Prototypes/Entities/Structures/Furniture/dresser.yml
Resources/Prototypes/Entities/Structures/Furniture/rollerbeds.yml
Resources/Prototypes/Entities/Structures/Piping/Atmospherics/pipes.yml
Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml
Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml
Resources/Prototypes/Entities/Structures/Storage/ore_box.yml
Resources/Prototypes/XenoArch/Effects/utility_effects.yml

index 1af50cb147d504e5747a3ddd32a1e720e32d566f..5c985779176329c55efec007b064c4734e1789e2 100644 (file)
@@ -1,16 +1,15 @@
 using System.Numerics;
-using Robust.Client.GameObjects;
+using Content.Client.Message;
 using Robust.Client.Graphics;
 using Robust.Client.UserInterface.Controls;
-using Robust.Client.UserInterface.CustomControls;
 using Content.Client.Stylesheets;
 using Content.Client.UserInterface.Controls;
 using Content.Shared.IdentityManagement;
 using Content.Shared.Item;
 using Content.Shared.Stacks;
 using Content.Shared.Storage;
+using Content.Shared.Storage.EntitySystems;
 using Robust.Client.UserInterface;
-using Robust.Shared.Containers;
 using static Robust.Client.UserInterface.Controls.BoxContainer;
 using Direction = Robust.Shared.Maths.Direction;
 
@@ -23,7 +22,9 @@ namespace Content.Client.Storage.UI
     {
         private readonly IEntityManager _entityManager;
 
-        private readonly Label _information;
+        private readonly SharedStorageSystem _storage;
+
+        private readonly RichTextLabel _information;
         public readonly ContainerButton StorageContainerButton;
         public readonly ListContainer EntityList;
         private readonly StyleBoxFlat _hoveredBox = new() { BackgroundColor = Color.Black.WithAlpha(0.35f) };
@@ -32,6 +33,7 @@ namespace Content.Client.Storage.UI
         public StorageWindow(IEntityManager entityManager)
         {
             _entityManager = entityManager;
+            _storage = _entityManager.System<SharedStorageSystem>();
             SetSize = new Vector2(240, 320);
             Title = Loc.GetString("comp-storage-window-title");
             RectClipContent = true;
@@ -60,11 +62,13 @@ namespace Content.Client.Storage.UI
 
             StorageContainerButton.AddChild(vBox);
 
-            _information = new Label
+            _information = new RichTextLabel
             {
-                Text = Loc.GetString("comp-storage-window-volume", ("itemCount", 0), ("usedVolume", 0), ("maxVolume", 0)),
                 VerticalAlignment = VAlignment.Center
             };
+            _information.SetMessage(Loc.GetString("comp-storage-window-weight",
+                ("percent", 0),
+                ("size", SharedItemSystem.GetItemSizeLocale(ItemSize.Normal))));
 
             vBox.AddChild(_information);
 
@@ -101,15 +105,25 @@ namespace Content.Client.Storage.UI
 
             EntityList.PopulateList(list);
 
-            // Sets information about entire storage container current capacity
-            if (component.StorageCapacityMax != 0)
+            SetStorageInformation((entity, component));
+        }
+
+        private void SetStorageInformation(Entity<StorageComponent> uid)
+        {
+            //todo: text is the straight agenda. What about anything else?
+            if (uid.Comp.MaxSlots == null)
             {
-                _information.Text = Loc.GetString("comp-storage-window-volume", ("itemCount", storedCount),
-                    ("usedVolume", component.StorageUsed), ("maxVolume", component.StorageCapacityMax));
+                _information.SetMarkup(Loc.GetString("comp-storage-window-weight",
+                    ("weight", _storage.GetCumulativeItemSizes(uid, uid.Comp)),
+                    ("maxWeight", uid.Comp.MaxTotalWeight),
+                    ("size", SharedItemSystem.GetItemSizeLocale(_storage.GetMaxItemSize((uid, uid.Comp))))));
             }
             else
             {
-                _information.Text = Loc.GetString("comp-storage-window-volume-unlimited", ("itemCount", storedCount));
+                _information.SetMarkup(Loc.GetString("comp-storage-window-slots",
+                    ("itemCount", uid.Comp.Container.ContainedEntities.Count),
+                    ("maxCount", uid.Comp.MaxSlots),
+                    ("size", SharedItemSystem.GetItemSizeLocale(_storage.GetMaxItemSize((uid, uid.Comp))))));
             }
         }
 
@@ -122,10 +136,9 @@ namespace Content.Client.Storage.UI
                 || !_entityManager.EntityExists(entity))
                 return;
 
-            _entityManager.TryGetComponent(entity, out ItemComponent? item);
             _entityManager.TryGetComponent(entity, out StackComponent? stack);
+            _entityManager.TryGetComponent(entity, out ItemComponent? item);
             var count = stack?.Count ?? 1;
-            var size = item?.Size;
 
             var spriteView = new SpriteView
             {
@@ -147,12 +160,14 @@ namespace Content.Client.Storage.UI
                             HorizontalExpand = true,
                             ClipText = true,
                             Text = _entityManager.GetComponent<MetaDataComponent>(Identity.Entity(entity, _entityManager)).EntityName +
-                                   (count > 1 ? $" x {count}" : string.Empty),
+                                   (count > 1 ? $" x {count}" : string.Empty)
                         },
                         new Label
                         {
                             Align = Label.AlignMode.Right,
-                            Text = size.ToString() ?? Loc.GetString("comp-storage-no-item-size"),
+                            Text = item?.Size != null
+                                ? $"{SharedItemSystem.GetItemSizeWeight(item.Size)}"
+                                : Loc.GetString("comp-storage-no-item-size")
                         }
                     }
             });
index 3ea3dd7916b17c3fd78b85a2f2695db3b859cfd2..4bba605f0ae43a58687cd9591d7acd15ae35c3d7 100644 (file)
@@ -26,7 +26,7 @@ namespace Content.IntegrationTests.Tests
   - type: Clothing
     slots: [innerclothing]
   - type: Item
-    size: 5
+    size: Tiny
 
 - type: entity
   name: IDCardDummy
@@ -36,7 +36,7 @@ namespace Content.IntegrationTests.Tests
     slots:
     - idcard
   - type: Item
-    size: 5
+    size: Tiny
   - type: IdCard
 
 - type: entity
@@ -44,14 +44,14 @@ namespace Content.IntegrationTests.Tests
   id: FlashlightDummy
   components:
   - type: Item
-    size: 5
+    size: Tiny
 
 - type: entity
   name: ToolboxDummy
   id: ToolboxDummy
   components:
   - type: Item
-    size: 9999
+    size: Huge
 ";
         [Test]
         public async Task Test()
diff --git a/Content.IntegrationTests/Tests/StackTest.cs b/Content.IntegrationTests/Tests/StackTest.cs
deleted file mode 100644 (file)
index a34dd7e..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-using Content.Shared.Item;
-using Content.Shared.Stacks;
-using Robust.Shared.GameObjects;
-using Robust.Shared.Prototypes;
-
-namespace Content.IntegrationTests.Tests;
-
-[TestFixture]
-public sealed class StackTest
-{
-    [Test]
-    public async Task StackCorrectItemSize()
-    {
-        await using var pair = await PoolManager.GetServerClient();
-        var server = pair.Server;
-
-        var protoManager = server.ResolveDependency<IPrototypeManager>();
-        var compFact = server.ResolveDependency<IComponentFactory>();
-
-        Assert.Multiple(() =>
-        {
-            foreach (var entity in PoolManager.GetPrototypesWithComponent<StackComponent>(server))
-            {
-                if (!entity.TryGetComponent<StackComponent>(out var stackComponent, compFact) ||
-                    !entity.TryGetComponent<ItemComponent>(out var itemComponent, compFact))
-                    continue;
-
-                if (!protoManager.TryIndex<StackPrototype>(stackComponent.StackTypeId, out var stackProto) ||
-                    stackProto.ItemSize == null)
-                    continue;
-
-                var expectedSize = stackProto.ItemSize * stackComponent.Count;
-                Assert.That(itemComponent.Size, Is.EqualTo(expectedSize), $"Prototype id: {entity.ID} has an item size of {itemComponent.Size} but expected size of {expectedSize}.");
-            }
-        });
-
-        await pair.CleanReturnAsync();
-    }
-}
index ea7f3f5866d25474c6ee3ed6abdd103ee85489b4..e9781ef47a2856a841c43c083d2395916443c6b1 100644 (file)
@@ -3,11 +3,12 @@ using System.Collections.Generic;
 using System.Linq;
 using Content.Server.Storage.Components;
 using Content.Shared.Item;
+using Content.Shared.Prototypes;
 using Content.Shared.Storage;
 using Content.Shared.Storage.Components;
+using Content.Shared.Storage.EntitySystems;
 using Robust.Shared.GameObjects;
 using Robust.Shared.Prototypes;
-using Robust.UnitTesting;
 
 namespace Content.IntegrationTests.Tests
 {
@@ -32,9 +33,11 @@ namespace Content.IntegrationTests.Tests
                 {
                     if (!proto.TryGetComponent<StorageComponent>("Storage", out var storage) ||
                         storage.Whitelist != null ||
-                        !proto.TryGetComponent<ItemComponent>("Item", out var item)) continue;
+                        storage.MaxItemSize == null ||
+                        !proto.TryGetComponent<ItemComponent>("Item", out var item))
+                        continue;
 
-                    Assert.That(storage.StorageCapacityMax, Is.LessThanOrEqualTo(item.Size), $"Found storage arbitrage on {proto.ID}");
+                    Assert.That(storage.MaxItemSize.Value, Is.LessThanOrEqualTo(item.Size), $"Found storage arbitrage on {proto.ID}");
                 }
             });
             await pair.CleanReturnAsync();
@@ -82,69 +85,122 @@ namespace Content.IntegrationTests.Tests
             {
                 foreach (var proto in PoolManager.GetPrototypesWithComponent<StorageFillComponent>(server))
                 {
-                    int capacity;
-                    var isEntStorage = false;
+                    if (proto.HasComponent<EntityStorageComponent>(compFact))
+                        continue;
 
-                    if (proto.TryGetComponent<StorageComponent>("Storage", out var storage))
+                    if (!proto.TryGetComponent<StorageComponent>("Storage", out var storage))
                     {
-                        capacity = storage.StorageCapacityMax;
+                        Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
+                        continue;
                     }
-                    else if (proto.TryGetComponent<EntityStorageComponent>("EntityStorage", out var entStorage))
+
+                    proto.TryGetComponent<ItemComponent>("Item", out var item);
+
+                    var fill = (StorageFillComponent) proto.Components[id].Component;
+                    var size = GetFillSize(fill, false, protoMan);
+                    var maxSize = storage.MaxItemSize ??
+                                  (item?.Size == null
+                                      ? SharedStorageSystem.DefaultStorageMaxItemSize
+                                      : (ItemSize) Math.Max(0, (int) item.Size - 1));
+                    if (storage.MaxSlots != null)
                     {
-                        capacity = entStorage.Capacity;
-                        isEntStorage = true;
+                        Assert.That(GetFillSize(fill, true, protoMan), Is.LessThanOrEqualTo(storage.MaxSlots),
+                            $"{proto.ID} storage fill has too many items.");
                     }
                     else
                     {
-                        Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
-                        continue;
+                        Assert.That(size, Is.LessThanOrEqualTo(storage.MaxTotalWeight), $"{proto.ID} storage fill is too large.");
                     }
 
-                    var fill = (StorageFillComponent) proto.Components[id].Component;
-                    var size = GetFillSize(fill, isEntStorage);
-                    Assert.That(size, Is.LessThanOrEqualTo(capacity), $"{proto.ID} storage fill is too large.");
+                    foreach (var entry in fill.Contents)
+                    {
+                        if (entry.PrototypeId == null)
+                            continue;
+
+                        if (!protoMan.TryIndex<EntityPrototype>(entry.PrototypeId, out var fillItem))
+                            continue;
+
+                        if (!fillItem.TryGetComponent<ItemComponent>("Item", out var entryItem))
+                            continue;
+
+                        Assert.That(entryItem.Size, Is.LessThanOrEqualTo(maxSize),
+                            $"Entity {proto.ID} has storage-fill item, {entry.PrototypeId}, that is too large");
+                    }
                 }
             });
 
-            int GetEntrySize(EntitySpawnEntry entry, bool isEntStorage)
-            {
-                if (entry.PrototypeId == null)
-                    return 0;
+            await pair.CleanReturnAsync();
+
+        }
 
-                if (!protoMan.TryIndex<EntityPrototype>(entry.PrototypeId, out var proto))
+        [Test]
+        public async Task TestSufficientSpaceForEntityStorageFill()
+        {
+            await using var pair = await PoolManager.GetServerClient();
+            var server = pair.Server;
+
+            var protoMan = server.ResolveDependency<IPrototypeManager>();
+            var compFact = server.ResolveDependency<IComponentFactory>();
+            var id = compFact.GetComponentName(typeof(StorageFillComponent));
+
+            Assert.Multiple(() =>
+            {
+                foreach (var proto in PoolManager.GetPrototypesWithComponent<StorageFillComponent>(server))
                 {
-                    Assert.Fail($"Unknown prototype: {entry.PrototypeId}");
-                    return 0;
-                }
+                    if (proto.HasComponent<StorageComponent>(compFact))
+                        continue;
 
-                if (isEntStorage)
-                    return entry.Amount;
+                    if (!proto.TryGetComponent<EntityStorageComponent>("EntityStorage", out var entStorage))
+                    {
+                        Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
+                        continue;
+                    }
 
-                if (proto.TryGetComponent<ItemComponent>("Item", out var item))
-                    return item.Size * entry.Amount;
+                    var fill = (StorageFillComponent) proto.Components[id].Component;
+                    var size = GetFillSize(fill, true, protoMan);
+                    Assert.That(size, Is.LessThanOrEqualTo(entStorage.Capacity),
+                        $"{proto.ID} storage fill is too large.");
+                }
+            });
+            await pair.CleanReturnAsync();
+        }
 
-                Assert.Fail($"Prototype is missing item comp: {entry.PrototypeId}");
+        private int GetEntrySize(EntitySpawnEntry entry, bool getCount, IPrototypeManager protoMan)
+        {
+            if (entry.PrototypeId == null)
                 return 0;
-            }
 
-            int GetFillSize(StorageFillComponent fill, bool isEntStorage)
+            if (!protoMan.TryIndex<EntityPrototype>(entry.PrototypeId, out var proto))
             {
-                var totalSize = 0;
-                var groups = new Dictionary<string, int>();
-                foreach (var entry in fill.Contents)
-                {
-                    var size = GetEntrySize(entry, isEntStorage);
+                Assert.Fail($"Unknown prototype: {entry.PrototypeId}");
+                return 0;
+            }
 
-                    if (entry.GroupId == null)
-                        totalSize += size;
-                    else
-                        groups[entry.GroupId] = Math.Max(size, groups.GetValueOrDefault(entry.GroupId));
-                }
+            if (getCount)
+                return entry.Amount;
 
-                return totalSize + groups.Values.Sum();
+            if (proto.TryGetComponent<ItemComponent>("Item", out var item))
+                return SharedItemSystem.GetItemSizeWeight(item.Size) * entry.Amount;
+
+            Assert.Fail($"Prototype is missing item comp: {entry.PrototypeId}");
+            return 0;
+        }
+
+        private int GetFillSize(StorageFillComponent fill, bool getCount, IPrototypeManager protoMan)
+        {
+            var totalSize = 0;
+            var groups = new Dictionary<string, int>();
+            foreach (var entry in fill.Contents)
+            {
+                var size = GetEntrySize(entry, getCount, protoMan);
+
+                if (entry.GroupId == null)
+                    totalSize += size;
+                else
+                    groups[entry.GroupId] = Math.Max(size, groups.GetValueOrDefault(entry.GroupId));
             }
 
-            await pair.CleanReturnAsync();
+            return totalSize + groups.Values.Sum();
         }
     }
 }
index a831165e688eecea6c26bd77b9d9b7b147c4e8a9..5e4ba355cf1bb5443e092be61f5079809b216b2d 100644 (file)
@@ -180,14 +180,13 @@ namespace Content.Server.Chemistry.EntitySystems
             var user = message.Session.AttachedEntity;
             var maybeContainer = _itemSlotsSystem.GetItemOrNull(chemMaster, SharedChemMaster.OutputSlotName);
             if (maybeContainer is not { Valid: true } container
-                || !TryComp(container, out StorageComponent? storage)
-                || storage.Container is null)
+                || !TryComp(container, out StorageComponent? storage))
             {
                 return; // output can't fit pills
             }
 
             // Ensure the number is valid.
-            if (message.Number == 0 || message.Number > storage.StorageCapacityMax - storage.StorageUsed)
+            if (message.Number == 0 || !_storageSystem.HasSpace((container, storage)))
                 return;
 
             // Ensure the amount is valid.
@@ -348,17 +347,14 @@ namespace Content.Server.Chemistry.EntitySystems
             if (!TryComp(container, out StorageComponent? storage))
                 return null;
 
-            var pills = storage.Container?.ContainedEntities.Select((Func<EntityUid, (string, FixedPoint2 quantity)>) (pill =>
+            var pills = storage.Container.ContainedEntities.Select((Func<EntityUid, (string, FixedPoint2 quantity)>) (pill =>
             {
                 _solutionContainerSystem.TryGetSolution(pill, SharedChemMaster.PillSolutionName, out var solution);
                 var quantity = solution?.Volume ?? FixedPoint2.Zero;
                 return (Name(pill), quantity);
             })).ToList();
 
-            if (pills == null)
-                return null;
-
-            return new ContainerInfo(name, storage.StorageUsed, storage.StorageCapacityMax)
+            return new ContainerInfo(name, _storageSystem.GetCumulativeItemSizes(container.Value, storage), storage.MaxTotalWeight)
             {
                 Entities = pills
             };
index ff4ec41dd99ceeec2fdbc88ebdb108b22f24b975..758d42356e45942c081e43744c85413686037426 100644 (file)
@@ -1,3 +1,4 @@
+using System.Linq;
 using Content.Server.Body.Components;
 using Content.Server.Body.Systems;
 using Content.Server.Inventory;
@@ -122,7 +123,7 @@ public sealed class FoodSystem : EntitySystem
             return (false, false);
 
         // Check for used storage on the food item
-        if (TryComp<StorageComponent>(food, out var storageState) && storageState.StorageUsed != 0)
+        if (TryComp<StorageComponent>(food, out var storageState) && storageState.Container.ContainedEntities.Any())
         {
             _popup.PopupEntity(Loc.GetString("food-has-used-storage", ("food", food)), user, user);
             return (false, true);
index 60d0c829e90b52c50dbe5074ccb91f01260a5a1d..6c7095617c2ec22730b9479643a5cf6c6a29da3b 100644 (file)
@@ -19,7 +19,7 @@ namespace Content.Server.Storage.Components
         ///     Max item size that can be fitted into secret stash.
         /// </summary>
         [DataField("maxItemSize")]
-        public int MaxItemSize = (int) ReferenceSizes.Pocket;
+        public ItemSize MaxItemSize = ItemSize.Small;
 
         /// <summary>
         ///     IC secret stash name. For example "the toilet cistern".
index ed48de2e4501da33b9542aba87be7ed77f0560db..01ed9a13dce454b40da4d30e515c4aa62fe10714 100644 (file)
@@ -1,7 +1,6 @@
 using Content.Shared.Rounding;
 using Content.Shared.Storage;
 using Content.Shared.Storage.Components;
-using Robust.Server.GameObjects;
 using Robust.Shared.Containers;
 
 namespace Content.Server.Storage.EntitySystems;
@@ -13,12 +12,12 @@ public sealed class StorageFillVisualizerSystem : EntitySystem
     public override void Initialize()
     {
         base.Initialize();
-        SubscribeLocalEvent<StorageFillVisualizerComponent, ComponentInit>(OnInit);
+        SubscribeLocalEvent<StorageFillVisualizerComponent, ComponentStartup>(OnStartup);
         SubscribeLocalEvent<StorageFillVisualizerComponent, EntInsertedIntoContainerMessage>(OnInserted);
         SubscribeLocalEvent<StorageFillVisualizerComponent, EntRemovedFromContainerMessage>(OnRemoved);
     }
 
-    private void OnInit(EntityUid uid, StorageFillVisualizerComponent component, ComponentInit args)
+    private void OnStartup(EntityUid uid, StorageFillVisualizerComponent component, ComponentStartup args)
     {
         UpdateAppearance(uid, component: component);
     }
@@ -42,7 +41,13 @@ public sealed class StorageFillVisualizerSystem : EntitySystem
         if (component.MaxFillLevels < 1)
             return;
 
-        var level = ContentHelpers.RoundToEqualLevels(storage.StorageUsed, storage.StorageCapacityMax, component.MaxFillLevels);
+        if (!_appearance.TryGetData<int>(uid, StorageVisuals.StorageUsed, out var used, appearance))
+            return;
+
+        if (!_appearance.TryGetData<int>(uid, StorageVisuals.Capacity, out var capacity, appearance))
+            return;
+
+        var level = ContentHelpers.RoundToEqualLevels(used, capacity, component.MaxFillLevels);
         _appearance.SetData(uid, StorageFillVisuals.FillLevel, level, appearance);
     }
 }
index 902ab471f18d89ac9b073cdbdb2bfdd9e6fff3ca..500a3fb100c291f2706d659e324761287ac8b86e 100644 (file)
@@ -38,10 +38,11 @@ public sealed partial class StorageSystem
             if (entityStorageComp != null && EntityStorage.Insert(ent, uid, entityStorageComp))
                 continue;
 
-            if (storageComp != null && Insert(uid, ent, out _, storageComp: storageComp, playSound: false))
+            var reason = string.Empty;
+            if (storageComp != null && Insert(uid, ent, out _, out reason, storageComp: storageComp, playSound: false))
                 continue;
 
-            Log.Error($"Tried to StorageFill {item} inside {ToPrettyString(uid)} but can't.");
+            Log.Error($"Tried to StorageFill {item} inside {ToPrettyString(uid)} but can't. Reason: {Loc.GetString(reason ?? "no reason.")}");
             EntityManager.DeleteEntity(ent);
         }
     }
index fe2ee380feaebf95ab4d0f9ae00b5dd48ef241bf..3021233a1c9a95db41f3a843c60007ff6bcaabe6 100644 (file)
@@ -3,7 +3,9 @@ using System.Linq;
 using Content.Server.Administration;
 using Content.Server.Cargo.Systems;
 using Content.Server.EUI;
+using Content.Server.Item;
 using Content.Shared.Administration;
+using Content.Shared.Item;
 using Content.Shared.Materials;
 using Content.Shared.Research.Prototypes;
 using Content.Shared.UserInterface;
@@ -23,7 +25,7 @@ public sealed class StatValuesCommand : IConsoleCommand
 
     public string Command => "showvalues";
     public string Description => Loc.GetString("stat-values-desc");
-    public string Help => $"{Command} <cargosell / lathesell / melee>";
+    public string Help => $"{Command} <cargosell / lathesell / melee / itemsize>";
     public void Execute(IConsoleShell shell, string argStr, string[] args)
     {
         if (shell.Player is not { } pSession)
@@ -51,6 +53,9 @@ public sealed class StatValuesCommand : IConsoleCommand
             case "melee":
                 message = GetMelee();
                 break;
+            case "itemsize":
+                message = GetItem();
+                break;
             default:
                 shell.WriteError(Loc.GetString("stat-values-invalid", ("arg", args[0])));
                 return;
@@ -119,6 +124,49 @@ public sealed class StatValuesCommand : IConsoleCommand
         return state;
     }
 
+    private StatValuesEuiMessage GetItem()
+    {
+        var values = new List<string[]>();
+        var metaQuery = _entManager.GetEntityQuery<MetaDataComponent>();
+        var itemQuery = _entManager.GetEntityQuery<ItemComponent>();
+        var items = new HashSet<string>(1024);
+        var ents = _entManager.GetEntities().ToArray();
+
+        foreach (var entity in ents)
+        {
+            if (!metaQuery.TryGetComponent(entity, out var meta))
+                continue;
+
+            var id = meta.EntityPrototype?.ID;
+
+            // We'll add it even if we don't have it so we don't have to raise the event again because this is probably faster.
+            if (id == null || !items.Add(id))
+                continue;
+
+            if (!itemQuery.TryGetComponent(entity, out var itemComp))
+                continue;
+
+            values.Add(new[]
+            {
+                id,
+                $"{SharedItemSystem.GetItemSizeLocale(itemComp.Size)}",
+            });
+        }
+
+        var state = new StatValuesEuiMessage
+        {
+            Title = Loc.GetString("stat-item-values"),
+            Headers = new List<string>
+            {
+                Loc.GetString("stat-item-id"),
+                Loc.GetString("stat-item-price"),
+            },
+            Values = values,
+        };
+
+        return state;
+    }
+
     private StatValuesEuiMessage GetMelee()
     {
         var values = new List<string[]>();
index fcd42f5a2884a4ea90a5c92b396e8bfdc8067211..80316d64f9ae47b0a51ef71b82538839c04bacf1 100644 (file)
@@ -98,7 +98,7 @@ public sealed class EnergySwordSystem : EntitySystem
     {
         if (TryComp(uid, out ItemComponent? item))
         {
-            _item.SetSize(uid, 5, item);
+            _item.SetSize(uid, ItemSize.Small, item);
         }
 
         if (TryComp<DisarmMalusComponent>(uid, out var malus))
@@ -125,7 +125,7 @@ public sealed class EnergySwordSystem : EntitySystem
     {
         if (TryComp(uid, out ItemComponent? item))
         {
-            _item.SetSize(uid, 9999, item);
+            _item.SetSize(uid, ItemSize.Huge, item);
         }
 
         if (comp.IsSharp)
index 90c9f0e1e0fddfa06c89412caf979a6b972cf8a2..23c0fbd0a2d29ade27b942c399d9208882f4ecba 100644 (file)
@@ -264,7 +264,7 @@ public abstract partial class InventorySystem
         if (slotDefinition.DependsOn != null && !TryGetSlotEntity(target, slotDefinition.DependsOn, out _, inventory))
             return false;
 
-        var fittingInPocket = slotDefinition.SlotFlags.HasFlag(SlotFlags.POCKET) && item is { Size: <= (int) ReferenceSizes.Pocket };
+        var fittingInPocket = slotDefinition.SlotFlags.HasFlag(SlotFlags.POCKET) && item is { Size: <= ItemSize.Small };
         if (clothing == null && !fittingInPocket
             || clothing != null && !clothing.Slots.HasFlag(slotDefinition.SlotFlags) && !fittingInPocket)
         {
index 7516f4faca37045614b13146492ed4b3f921b790..a14561d76606aa54da20fcc25945fe29aac0972c 100644 (file)
@@ -13,18 +13,17 @@ namespace Content.Shared.Item;
 [Access(typeof(SharedItemSystem))]
 public sealed partial class ItemComponent : Component
 {
-    [ViewVariables(VVAccess.ReadWrite)]
-    [DataField("size")]
-    [Access(typeof(SharedItemSystem), Other = AccessPermissions.ReadExecute)]
-    public int Size = 5;
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    [Access(typeof(SharedItemSystem))]
+    public ItemSize Size = ItemSize.Small;
 
     [Access(typeof(SharedItemSystem))]
-    [DataField("inhandVisuals")]
+    [DataField]
     public Dictionary<HandLocation, List<PrototypeLayerData>> InhandVisuals = new();
 
     [Access(typeof(SharedItemSystem))]
     [ViewVariables(VVAccess.ReadWrite)]
-    [DataField("heldPrefix")]
+    [DataField]
     public string? HeldPrefix;
 
     /// <summary>
@@ -39,10 +38,10 @@ public sealed partial class ItemComponent : Component
 [Serializable, NetSerializable]
 public sealed class ItemComponentState : ComponentState
 {
-    public int Size { get; }
+    public ItemSize Size { get; }
     public string? HeldPrefix { get; }
 
-    public ItemComponentState(int size, string? heldPrefix)
+    public ItemComponentState(ItemSize size, string? heldPrefix)
     {
         Size = size;
         HeldPrefix = heldPrefix;
@@ -67,15 +66,38 @@ public sealed class VisualsChangedEvent : EntityEventArgs
 }
 
 /// <summary>
-///     Reference sizes for common containers and items.
+/// Abstracted sizes for items.
+/// Used to determine what can fit into inventories.
 /// </summary>
-public enum ReferenceSizes
+public enum ItemSize
 {
-    Wallet = 4,
-    Pocket = 12,
-    Box = 24,
-    Belt = 30,
-    Toolbox = 60,
-    Backpack = 100,
-    NoStoring = 9999
+    /// <summary>
+    /// Items that can be held completely in one's hand.
+    /// </summary>
+    Tiny = 1,
+
+    /// <summary>
+    /// Items that can fit inside of a standard pocket.
+    /// </summary>
+    Small = 2,
+
+    /// <summary>
+    /// Items that can fit inside of a standard bag.
+    /// </summary>
+    Normal = 4,
+
+    /// <summary>
+    /// Items that are too large to fit inside of standard bags, but can worn in exterior slots or placed in custom containers.
+    /// </summary>
+    Large = 16,
+
+    /// <summary>
+    /// Items that are too large to place inside of any kind of container.
+    /// </summary>
+    Huge = 24,
+
+    /// <summary>
+    /// Picture furry gf
+    /// </summary>
+    Ginormous = 48
 }
index fda4d0904a643a98103564b6f58e3dcb5ec9a83b..250306f8c72fce8569396557561bc5d58b60670d 100644 (file)
@@ -1,3 +1,4 @@
+using Content.Shared.Item;
 using Robust.Shared.Audio;
 using Robust.Shared.GameStates;
 
@@ -20,11 +21,11 @@ public sealed partial class ItemToggleComponent : Component
 
     [ViewVariables(VVAccess.ReadWrite)]
     [DataField("offSize")]
-    public int OffSize = 1;
+    public ItemSize OffSize = ItemSize.Small;
 
     [ViewVariables(VVAccess.ReadWrite)]
     [DataField("onSize")]
-    public int OnSize = 9999;
+    public ItemSize OnSize = ItemSize.Huge;
 }
 
 [ByRefEvent]
index 5f890af99fdb41b5dd481b994dd2d4baa4aed181..4317a2307f40ac490fec9236960cf72eb3652a9d 100644 (file)
@@ -1,21 +1,18 @@
-using Content.Shared.CombatMode;
 using Content.Shared.Hands.EntitySystems;
 using Content.Shared.Interaction;
 using Content.Shared.Stacks;
 using Content.Shared.Verbs;
 using Content.Shared.Examine;
+using JetBrains.Annotations;
 using Robust.Shared.Containers;
 using Robust.Shared.GameStates;
-using Robust.Shared.Prototypes;
 using Robust.Shared.Utility;
 
 namespace Content.Shared.Item;
 
 public abstract class SharedItemSystem : EntitySystem
 {
-    [Dependency] private readonly IPrototypeManager _prototype = default!;
     [Dependency] private   readonly SharedHandsSystem _handsSystem = default!;
-    [Dependency] private   readonly SharedCombatModeSystem _combatMode = default!;
     [Dependency] protected readonly SharedContainerSystem Container = default!;
 
     public override void Initialize()
@@ -33,13 +30,13 @@ public abstract class SharedItemSystem : EntitySystem
 
     #region Public API
 
-    public void SetSize(EntityUid uid, int size, ItemComponent? component = null)
+    public void SetSize(EntityUid uid, ItemSize size, ItemComponent? component = null)
     {
         if (!Resolve(uid, ref component, false))
             return;
 
         component.Size = size;
-        Dirty(component);
+        Dirty(uid, component);
     }
 
     public void SetHeldPrefix(EntityUid uid, string? heldPrefix, ItemComponent? component = null)
@@ -51,7 +48,7 @@ public abstract class SharedItemSystem : EntitySystem
             return;
 
         component.HeldPrefix = heldPrefix;
-        Dirty(component);
+        Dirty(uid, component);
         VisualsChanged(uid);
     }
 
@@ -67,7 +64,7 @@ public abstract class SharedItemSystem : EntitySystem
         item.InhandVisuals = otherItem.InhandVisuals;
         item.HeldPrefix = otherItem.HeldPrefix;
 
-        Dirty(item);
+        Dirty(uid, item);
         VisualsChanged(uid);
     }
 
@@ -83,14 +80,7 @@ public abstract class SharedItemSystem : EntitySystem
 
     protected virtual void OnStackCountChanged(EntityUid uid, ItemComponent component, StackCountChangedEvent args)
     {
-        if (!TryComp<StackComponent>(uid, out var stack))
-            return;
-
-        if (!_prototype.TryIndex<StackPrototype>(stack.StackTypeId, out var stackProto) ||
-            stackProto.ItemSize is not { } size)
-            return;
 
-        SetSize(uid, args.NewCount * size, component);
     }
 
     private void OnHandleState(EntityUid uid, ItemComponent component, ref ComponentHandleState args)
@@ -135,7 +125,7 @@ public abstract class SharedItemSystem : EntitySystem
     private void OnExamine(EntityUid uid, ItemComponent component, ExaminedEvent args)
     {
         args.PushMarkup(Loc.GetString("item-component-on-examine-size",
-            ("size", component.Size)));
+            ("size", GetItemSizeLocale(component.Size))));
     }
 
     /// <summary>
@@ -148,4 +138,16 @@ public abstract class SharedItemSystem : EntitySystem
     public virtual void VisualsChanged(EntityUid owner)
     {
     }
+
+    [PublicAPI]
+    public static string GetItemSizeLocale(ItemSize size)
+    {
+        return Robust.Shared.Localization.Loc.GetString($"item-component-size-{size.ToString()}");
+    }
+
+    [PublicAPI]
+    public static int GetItemSizeWeight(ItemSize size)
+    {
+        return (int) size;
+    }
 }
index 16657bdae4af7b094e5da033fbd42c7847b97a46..c7505ab3c0c459e576bf9b39ff83fb30a256dca8 100644 (file)
@@ -1,10 +1,7 @@
 using Content.Server.Storage.Components;
-using Content.Shared.Hands;
 using Content.Shared.Inventory;
-using Content.Shared.Stacks;
 using Robust.Shared.Map;
 using Robust.Shared.Physics.Components;
-using Robust.Shared.Player;
 using Robust.Shared.Timing;
 
 namespace Content.Shared.Storage.EntitySystems;
@@ -56,7 +53,7 @@ public sealed class MagnetPickupSystem : EntitySystem
             comp.NextScan += ScanDelay;
 
             // No space
-            if (storage.StorageUsed >= storage.StorageCapacityMax)
+            if (!_storage.HasSpace((uid, storage)))
                 continue;
 
             if (!_inventory.TryGetContainingSlot(uid, out var slotDef))
index 5faec99fd5b7a9d339163f88d12456f9bda62afc..05030edb82074f1bf1ded974728b77bfd46176ce 100644 (file)
@@ -1,10 +1,11 @@
+using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using Content.Shared.ActionBlocker;
 using Content.Shared.CombatMode;
 using Content.Shared.Containers.ItemSlots;
 using Content.Shared.Destructible;
 using Content.Shared.DoAfter;
-using Content.Shared.Hands;
+using Content.Shared.FixedPoint;
 using Content.Shared.Hands.Components;
 using Content.Shared.Hands.EntitySystems;
 using Content.Shared.Implants.Components;
@@ -46,6 +47,8 @@ public abstract class SharedStorageSystem : EntitySystem
     private EntityQuery<StackComponent> _stackQuery;
     private EntityQuery<TransformComponent> _xformQuery;
 
+    public const ItemSize DefaultStorageMaxItemSize = ItemSize.Normal;
+
     /// <inheritdoc />
     public override void Initialize()
     {
@@ -89,6 +92,7 @@ public abstract class SharedStorageSystem : EntitySystem
     {
         // TODO: I had this.
         // We can get states being applied before the container is ready.
+        // ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
         if (component.Container == default)
             return;
 
@@ -229,7 +233,7 @@ public abstract class SharedStorageSystem : EntitySystem
                 return;
             }
 
-            if (TryComp<TransformComponent>(uid, out var transformOwner) && TryComp<TransformComponent>(target, out var transformEnt))
+            if (_xformQuery.TryGetComponent(uid, out var transformOwner) && TryComp<TransformComponent>(target, out var transformEnt))
             {
                 var parent = transformOwner.ParentUid;
 
@@ -239,7 +243,7 @@ public abstract class SharedStorageSystem : EntitySystem
                     _transform
                 );
 
-                if (PlayerInsertEntityInWorld(uid, args.User, target, storageComp))
+                if (PlayerInsertEntityInWorld((uid, storageComp), args.User, target))
                 {
                     RaiseNetworkEvent(new AnimateInsertingEntitiesEvent(GetNetEntity(uid),
                         new List<NetEntity> { GetNetEntity(target) },
@@ -285,7 +289,7 @@ public abstract class SharedStorageSystem : EntitySystem
 
             var angle = targetXform.LocalRotation;
 
-            if (PlayerInsertEntityInWorld(uid, args.Args.User, entity, component))
+            if (PlayerInsertEntityInWorld((uid, component), args.Args.User, entity))
             {
                 successfullyInserted.Add(entity);
                 successfullyInsertedPositions.Add(position);
@@ -322,7 +326,7 @@ public abstract class SharedStorageSystem : EntitySystem
     /// </summary>
     private void OnInteractWithItem(EntityUid uid, StorageComponent storageComp, StorageInteractWithItemEvent args)
     {
-        if (args.Session.AttachedEntity is not EntityUid player)
+        if (args.Session.AttachedEntity is not { } player)
             return;
 
         var entity = GetEntity(args.InteractedItemUID);
@@ -396,27 +400,16 @@ public abstract class SharedStorageSystem : EntitySystem
 
     public void RecalculateStorageUsed(EntityUid uid, StorageComponent storageComp)
     {
-        storageComp.StorageUsed = 0;
-
-        foreach (var entity in storageComp.Container.ContainedEntities)
+        if (storageComp.MaxSlots == null)
         {
-            if (!_itemQuery.TryGetComponent(entity, out var itemComp))
-                continue;
-
-            var size = itemComp.Size;
-            storageComp.StorageUsed += size;
+            _appearance.SetData(uid, StorageVisuals.StorageUsed, GetCumulativeItemSizes(uid, storageComp));
+            _appearance.SetData(uid, StorageVisuals.Capacity, storageComp.MaxTotalWeight);
+        }
+        else
+        {
+            _appearance.SetData(uid, StorageVisuals.StorageUsed, storageComp.Container.ContainedEntities.Count);
+            _appearance.SetData(uid, StorageVisuals.Capacity, storageComp.MaxSlots.Value);
         }
-
-        _appearance.SetData(uid, StorageVisuals.StorageUsed, storageComp.StorageUsed);
-        _appearance.SetData(uid, StorageVisuals.Capacity, storageComp.StorageCapacityMax);
-    }
-
-    public int GetAvailableSpace(EntityUid uid, StorageComponent? component = null)
-    {
-        if (!Resolve(uid, ref component))
-            return 0;
-
-        return component.StorageCapacityMax - component.StorageUsed;
     }
 
     /// <summary>
@@ -449,17 +442,20 @@ public abstract class SharedStorageSystem : EntitySystem
     ///     Verifies if an entity can be stored and if it fits
     /// </summary>
     /// <param name="uid">The entity to check</param>
+    /// <param name="insertEnt"></param>
     /// <param name="reason">If returning false, the reason displayed to the player</param>
+    /// <param name="storageComp"></param>
+    /// <param name="item"></param>
     /// <returns>true if it can be inserted, false otherwise</returns>
-    public bool CanInsert(EntityUid uid, EntityUid insertEnt, out string? reason, StorageComponent? storageComp = null)
+    public bool CanInsert(EntityUid uid, EntityUid insertEnt, out string? reason, StorageComponent? storageComp = null, ItemComponent? item = null)
     {
-        if (!Resolve(uid, ref storageComp))
+        if (!Resolve(uid, ref storageComp) || !Resolve(insertEnt, ref item))
         {
             reason = null;
             return false;
         }
 
-        if (TryComp(insertEnt, out TransformComponent? transformComp) && transformComp.Anchored)
+        if (Transform(insertEnt).Anchored)
         {
             reason = "comp-storage-anchored-failure";
             return false;
@@ -477,15 +473,28 @@ public abstract class SharedStorageSystem : EntitySystem
             return false;
         }
 
-        if (TryComp(insertEnt, out StorageComponent? storage) &&
-            storage.StorageCapacityMax >= storageComp.StorageCapacityMax)
+        if (item.Size > GetMaxItemSize((uid, storageComp)))
         {
-            reason = "comp-storage-insufficient-capacity";
+            reason = "comp-storage-too-big";
+            return false;
+        }
+
+        if (TryComp<StorageComponent>(insertEnt, out var insertStorage)
+            && GetMaxItemSize((insertEnt, insertStorage)) >= GetMaxItemSize((uid, storageComp)))
+        {
+            reason = "comp-storage-too-big";
             return false;
         }
 
-        if (TryComp(insertEnt, out ItemComponent? itemComp) &&
-            itemComp.Size > storageComp.StorageCapacityMax - storageComp.StorageUsed)
+        if (storageComp.MaxSlots != null)
+        {
+            if (storageComp.Container.ContainedEntities.Count >= storageComp.MaxSlots)
+            {
+                reason = "comp-storage-insufficient-capacity";
+                return false;
+            }
+        }
+        else if (SharedItemSystem.GetItemSizeWeight(item.Size) + GetCumulativeItemSizes(uid, storageComp) > storageComp.MaxTotalWeight)
         {
             reason = "comp-storage-insufficient-capacity";
             return false;
@@ -499,11 +508,34 @@ public abstract class SharedStorageSystem : EntitySystem
     ///     Inserts into the storage container
     /// </summary>
     /// <returns>true if the entity was inserted, false otherwise</returns>
-    public bool Insert(EntityUid uid, EntityUid insertEnt, out EntityUid? stackedEntity, EntityUid? user = null, StorageComponent? storageComp = null, bool playSound = true)
+    public bool Insert(
+        EntityUid uid,
+        EntityUid insertEnt,
+        out EntityUid? stackedEntity,
+        EntityUid? user = null,
+        StorageComponent? storageComp = null,
+        bool playSound = true)
+    {
+        return Insert(uid, insertEnt, out stackedEntity, out _, user: user, storageComp: storageComp, playSound: playSound);
+    }
+
+    /// <summary>
+    ///     Inserts into the storage container
+    /// </summary>
+    /// <returns>true if the entity was inserted, false otherwise</returns>
+    public bool Insert(
+        EntityUid uid,
+        EntityUid insertEnt,
+        out EntityUid? stackedEntity,
+        out string? reason,
+        EntityUid? user = null,
+        StorageComponent? storageComp = null,
+        bool playSound = true)
     {
         stackedEntity = null;
+        reason = null;
 
-        if (!Resolve(uid, ref storageComp) || !CanInsert(uid, insertEnt, out _, storageComp))
+        if (!Resolve(uid, ref storageComp) || !CanInsert(uid, insertEnt, out reason, storageComp))
             return false;
 
         /*
@@ -542,8 +574,7 @@ public abstract class SharedStorageSystem : EntitySystem
             if (insertStack.Count > 0)
             {
                 // Try to insert it as a new stack.
-                if (TryComp(insertEnt, out ItemComponent? itemComp) &&
-                    itemComp.Size > storageComp.StorageCapacityMax - storageComp.StorageUsed ||
+                if (!CanInsert(uid, insertEnt, out _, storageComp) ||
                     !storageComp.Container.Insert(insertEnt))
                 {
                     // If we also didn't do any stack fills above then just end
@@ -568,7 +599,9 @@ public abstract class SharedStorageSystem : EntitySystem
     /// <summary>
     ///     Inserts an entity into storage from the player's active hand
     /// </summary>
+    /// <param name="uid"></param>
     /// <param name="player">The player to insert an entity from</param>
+    /// <param name="storageComp"></param>
     /// <returns>true if inserted, false otherwise</returns>
     public bool PlayerInsertHeldEntity(EntityUid uid, EntityUid player, StorageComponent? storageComp = null)
     {
@@ -589,21 +622,23 @@ public abstract class SharedStorageSystem : EntitySystem
             return false;
         }
 
-        return PlayerInsertEntityInWorld(uid, player, toInsert.Value, storageComp);
+        return PlayerInsertEntityInWorld((uid, storageComp), player, toInsert.Value);
     }
 
     /// <summary>
     ///     Inserts an Entity (<paramref name="toInsert"/>) in the world into storage, informing <paramref name="player"/> if it fails.
-    ///     <paramref name="toInsert"/> is *NOT* held, see <see cref="PlayerInsertHeldEntity(Robust.Shared.GameObjects.EntityUid)"/>.
+    ///     <paramref name="toInsert"/> is *NOT* held, see <see cref="PlayerInsertHeldEntity(EntityUid,EntityUid,StorageComponent)"/>.
     /// </summary>
+    /// <param name="uid"></param>
     /// <param name="player">The player to insert an entity with</param>
+    /// <param name="toInsert"></param>
     /// <returns>true if inserted, false otherwise</returns>
-    public bool PlayerInsertEntityInWorld(EntityUid uid, EntityUid player, EntityUid toInsert, StorageComponent? storageComp = null)
+    public bool PlayerInsertEntityInWorld(Entity<StorageComponent?> uid, EntityUid player, EntityUid toInsert)
     {
-        if (!Resolve(uid, ref storageComp) || !_sharedInteractionSystem.InRangeUnobstructed(player, uid))
+        if (!Resolve(uid, ref uid.Comp) || !_sharedInteractionSystem.InRangeUnobstructed(player, uid))
             return false;
 
-        if (!Insert(uid, toInsert, out _, user: player, storageComp))
+        if (!Insert(uid, toInsert, out _, user: player, uid.Comp))
         {
             _popupSystem.PopupClient(Loc.GetString("comp-storage-cant-insert"), uid, player);
             return false;
@@ -611,6 +646,71 @@ public abstract class SharedStorageSystem : EntitySystem
         return true;
     }
 
+    /// <summary>
+    /// Returns true if there is enough space to theoretically fit another item.
+    /// </summary>
+    public bool HasSpace(Entity<StorageComponent?> uid)
+    {
+        if (!Resolve(uid, ref uid.Comp))
+            return false;
+
+        //todo maybe this shouldn't be authoritative over weight? idk.
+        if (uid.Comp.MaxSlots != null)
+        {
+            return uid.Comp.Container.ContainedEntities.Count < uid.Comp.MaxSlots;
+
+        }
+
+        return GetCumulativeItemSizes(uid, uid.Comp) < uid.Comp.MaxTotalWeight;
+    }
+
+    /// <summary>
+    /// Returns the sum of all the ItemSizes of the items inside of a storage.
+    /// </summary>
+    public int GetCumulativeItemSizes(EntityUid uid, StorageComponent? component = null)
+    {
+        if (!Resolve(uid, ref component))
+            return 0;
+
+        var sum = 0;
+        foreach (var item in component.Container.ContainedEntities)
+        {
+            if (!_itemQuery.TryGetComponent(item, out var itemComp))
+                continue;
+            sum += SharedItemSystem.GetItemSizeWeight(itemComp.Size);
+        }
+
+        return sum;
+    }
+
+    public ItemSize GetMaxItemSize(Entity<StorageComponent?> uid)
+    {
+        if (!Resolve(uid, ref uid.Comp))
+            return DefaultStorageMaxItemSize;
+
+        // If we specify a max item size, use that
+        if (uid.Comp.MaxItemSize != null)
+            return uid.Comp.MaxItemSize.Value;
+
+        if (!_itemQuery.TryGetComponent(uid, out var item))
+            return DefaultStorageMaxItemSize;
+
+        // if there is no max item size specified, the value used
+        // is one below the item size of the storage entity, clamped at ItemSize.Tiny
+        return (ItemSize) Math.Max((int) item.Size - 1, 1);
+    }
+
+    public FixedPoint2 GetStorageFillPercentage(Entity<StorageComponent?> uid)
+    {
+        if (!Resolve(uid, ref uid.Comp))
+            return 0;
+
+        var slotPercent = FixedPoint2.New(uid.Comp.Container.ContainedEntities.Count) / uid.Comp.MaxSlots ?? FixedPoint2.Zero;
+        var weightPercent = FixedPoint2.New(GetCumulativeItemSizes(uid)) / uid.Comp.MaxTotalWeight;
+
+        return FixedPoint2.Max(slotPercent, weightPercent);
+    }
+
     /// <summary>
     /// Plays a clientside pickup animation for the specified uid.
     /// </summary>
index fdcf06bf5d5f11b72ccffe2ed73959a2ed076e04..2c05cb4eed6fd8d4580db06594379080f891a961 100644 (file)
@@ -1,3 +1,5 @@
+using Content.Shared.Item;
+using Content.Shared.Storage.EntitySystems;
 using Content.Shared.Whitelist;
 using Robust.Shared.Audio;
 using Robust.Shared.Containers;
@@ -20,6 +22,26 @@ namespace Content.Shared.Storage
         [ViewVariables]
         public Container Container = default!;
 
+        /// <summary>
+        /// A limit for the cumulative ItemSize weights that can be inserted in this storage.
+        /// If MaxSlots is not null, then this is ignored.
+        /// </summary>
+        [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
+        public int MaxTotalWeight;
+
+        /// <summary>
+        /// The maximum size item that can be inserted into this storage,
+        /// </summary>
+        [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
+        [Access(typeof(SharedStorageSystem))]
+        public ItemSize? MaxItemSize;
+
+        /// <summary>
+        /// The max number of entities that can be inserted into this storage.
+        /// </summary>
+        [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
+        public int? MaxSlots;
+
         // TODO: Make area insert its own component.
         [DataField("quickInsert")]
         public bool QuickInsert; // Can insert storables by "attacking" them with the storage entity
@@ -45,18 +67,6 @@ namespace Content.Shared.Storage
         [DataField("blacklist")]
         public EntityWhitelist? Blacklist;
 
-        /// <summary>
-        /// How much storage is currently being used by contained entities.
-        /// </summary>
-        [ViewVariables, DataField("storageUsed"), AutoNetworkedField]
-        public int StorageUsed;
-
-        /// <summary>
-        /// Maximum capacity for storage.
-        /// </summary>
-        [DataField("capacity"), AutoNetworkedField]
-        public int StorageCapacityMax = 10000;
-
         /// <summary>
         /// Sound played whenever an entity is inserted into storage.
         /// </summary>
index 66fa5d98b94aa0f83943bd5ce9c3d636d6b22432..99c6bd194e3c27631dfd4b5d8a985c5b09c0f70d 100644 (file)
@@ -13,3 +13,8 @@ stat-lathe-values = Lathe sell prices
 stat-lathe-id = ID
 stat-lathe-cost = Cost
 stat-lathe-sell = Sell price
+
+# Item Sizes
+stat-item-values = Item sizes
+stat-item-id = ID
+stat-item-price = Size
index a6d542e4fb41763f7ec2d7018442a7da4926157e..29c858891af12150c415e39a9ffe7102697b6389 100644 (file)
@@ -1,9 +1,10 @@
 comp-storage-no-item-size = N/A
 comp-storage-cant-insert = Can't insert.
-comp-storage-insufficient-capacity = Insufficient capacity.
+comp-storage-too-big = Too big!
+comp-storage-insufficient-capacity = No room!
 comp-storage-invalid-container = This doesn't go in there!
 comp-storage-anchored-failure = Can't insert an anchored item.
 comp-storage-cant-drop = You can't let go of { THE($entity) }!
 comp-storage-window-title = Storage Item
-comp-storage-window-volume = Items: { $itemCount }, Stored: { $usedVolume }/{ $maxVolume }
-comp-storage-window-volume-unlimited = Items: { $itemCount }
+comp-storage-window-weight = { $weight }/{ $maxWeight }, Max Size: {$size}
+comp-storage-window-slots = Slots: { $itemCount }/{ $maxCount }, Max Size: {$size}
index f9750a55fac71e254237faff63dda30c47a79bb1..8ebde5251e7e18c72530b157f6add51c91eaf257 100644 (file)
@@ -7,3 +7,10 @@ pick-up-verb-get-data-text = Pick Up
 pick-up-verb-get-data-text-inventory = Put in hand
 
 item-component-on-examine-size = Size: {$size}
+
+item-component-size-Tiny = tiny
+item-component-size-Small = small
+item-component-size-Normal = normal
+item-component-size-Large = large
+item-component-size-Huge = huge
+item-component-size-Ginormous = ginormous
index 1b71e29725a126679d4fd158e3528210d8cb48db..2601c78160a2c30d04e4db6d3d37c6cdeb9c8f57 100644 (file)
@@ -874,36 +874,6 @@ entities:
       pos: -0.5,0.5
       parent: 325
       type: Transform
-- proto: ClothingBeltSyndieHolster
-  entities:
-  - uid: 317
-    components:
-    - flags: InContainer
-      type: MetaData
-    - parent: 177
-      type: Transform
-    - canCollide: False
-      type: Physics
-- proto: ClothingHandsGlovesCombat
-  entities:
-  - uid: 316
-    components:
-    - flags: InContainer
-      type: MetaData
-    - parent: 177
-      type: Transform
-    - canCollide: False
-      type: Physics
-- proto: ClothingMaskGasSyndicate
-  entities:
-  - uid: 318
-    components:
-    - flags: InContainer
-      type: MetaData
-    - parent: 177
-      type: Transform
-    - canCollide: False
-      type: Physics
 - proto: ComputerIFFSyndicate
   entities:
   - uid: 40
@@ -926,16 +896,6 @@ entities:
           ents:
           - 245
       type: ContainerContainer
-- proto: Crowbar
-  entities:
-  - uid: 313
-    components:
-    - flags: InContainer
-      type: MetaData
-    - parent: 177
-      type: Transform
-    - canCollide: False
-      type: Physics
 - proto: CyberPen
   entities:
   - uid: 77
@@ -1672,16 +1632,6 @@ entities:
       pos: -2.5,-3.5
       parent: 325
       type: Transform
-- proto: Multitool
-  entities:
-  - uid: 314
-    components:
-    - flags: InContainer
-      type: MetaData
-    - parent: 177
-      type: Transform
-    - canCollide: False
-      type: Physics
 - proto: NitrogenTankFilled
   entities:
   - uid: 105
@@ -1880,20 +1830,6 @@ entities:
       type: Transform
     - canCollide: False
       type: Physics
-- proto: Screwdriver
-  entities:
-  - uid: 310
-    components:
-    - flags: InContainer
-      type: MetaData
-    - parent: 177
-      type: Transform
-    - selected:
-        enum.DamageStateVisualLayers.Base:
-          screwdriver: '#1861D5FF'
-      type: RandomSprite
-    - canCollide: False
-      type: Physics
 - proto: SheetGlass1
   entities:
   - uid: 244
@@ -2382,21 +2318,6 @@ entities:
     - pos: 1.5699697,-0.44908836
       parent: 325
       type: Transform
-    - containers:
-        storagebase: !type:Container
-          showEnts: False
-          occludes: True
-          ents:
-          - 310
-          - 311
-          - 312
-          - 313
-          - 314
-          - 315
-          - 316
-          - 317
-          - 318
-      type: ContainerContainer
     - canCollide: False
       type: Physics
 - proto: ToyFigurineNukie
@@ -2656,16 +2577,6 @@ entities:
     - pos: -2.5,2.5
       parent: 325
       type: Transform
-- proto: Welder
-  entities:
-  - uid: 312
-    components:
-    - flags: InContainer
-      type: MetaData
-    - parent: 177
-      type: Transform
-    - canCollide: False
-      type: Physics
 - proto: WindoorSecure
   entities:
   - uid: 166
@@ -2687,30 +2598,6 @@ entities:
           ents:
           - 346
       type: ContainerContainer
-- proto: Wirecutter
-  entities:
-  - uid: 315
-    components:
-    - flags: InContainer
-      type: MetaData
-    - parent: 177
-      type: Transform
-    - selected:
-        enum.DamageStateVisualLayers.Base:
-          cutters: '#D58C18FF'
-      type: RandomSprite
-    - canCollide: False
-      type: Physics
-- proto: Wrench
-  entities:
-  - uid: 311
-    components:
-    - flags: InContainer
-      type: MetaData
-    - parent: 177
-      type: Transform
-    - canCollide: False
-      type: Physics
 - proto: YellowOxygenTankFilled
   entities:
   - uid: 167
index 328400cd0b00cbf6d3938740006182b18fd6fd93..d31189c43b2da059fce6cea378e9494f736096ba 100644 (file)
@@ -102471,8 +102471,6 @@ entities:
       type: Transform
     - count: 15
       type: Stack
-    - size: 15
-      type: Item
 - proto: SheetPlasma
   entities:
   - uid: 12944
@@ -102564,8 +102562,6 @@ entities:
       type: Transform
     - count: 20
       type: Stack
-    - size: 20
-      type: Item
 - proto: Shovel
   entities:
   - uid: 12955
index ddba1100f2b969a6be7ef9410f87076fc5efbcc2..98a2c5807d64c213e2072ae6cfcd0f0046e0e891 100644 (file)
@@ -78331,8 +78331,6 @@ entities:
       type: Transform
     - count: 15
       type: Stack
-    - size: 30
-      type: Item
 - proto: StoolBar
   entities:
   - uid: 921
index 0f7553196594757e515b81ecdb5f223f7acb6ec0..3921843612321a5de8ec01f5761c0450667c2a58 100644 (file)
         - id: trayScanner
         - id: RCD
         - id: RCDAmmo
-        - id: RCDAmmo
-        - id: RCDAmmo
+          amount: 2
         - id: CableMVStack
         - id: CableHVStack
         - id: CableApcStack
index c97082e35114357f86f91d0dbc29b844ae387a10..f9abc596b212caf504f5b7bcb3215ccf4e81b902 100644 (file)
@@ -4,31 +4,31 @@
   name: surgical duffel bag
   description: "A large duffel bag for holding extra medical supplies - this one seems to be designed for holding surgical tools."
   components:
-    - type: StorageFill
-      contents:
-        - id: Hemostat
-        - id: Saw
-        - id: Drill
-        - id: Cautery
-        - id: Retractor
-        - id: Scalpel
+  - type: StorageFill
+    contents:
+      - id: Hemostat
+      - id: Saw
+      - id: Drill
+      - id: Cautery
+      - id: Retractor
+      - id: Scalpel
 
 - type: entity
   id: ClothingBackpackDuffelCBURNFilled
   parent: ClothingBackpackDuffelCBURN
   suffix: Filled
   components:
-    - type: StorageFill
-      contents:
-        - id: BoxSurvivalEngineering
-        - id: WeaponShotgunDoubleBarreled
-        - id: BoxShotgunIncendiary
-          amount: 2
-        - id: GrenadeFlashBang
-          amount: 2
-        - id: PillAmbuzolPlus
-        - id: PillAmbuzol
-          amount: 4
+  - type: StorageFill
+    contents:
+    - id: BoxSurvivalEngineering
+    - id: WeaponShotgunDoubleBarreled
+    - id: BoxShotgunIncendiary
+      amount: 2
+    - id: GrenadeFlashBang
+      amount: 2
+    - id: PillAmbuzolPlus
+    - id: PillAmbuzol
+      amount: 4
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateMedicalBundle
   name: syndicate surgical duffel bag
   description: A large duffel bag containing a full suite of surgical tools.
   components:
-    - type: StorageFill
-      contents:
-        - id: Hemostat
-        - id: SawAdvanced
-        - id: Drill
-        - id: Cautery
-        - id: Retractor
-        - id: ScalpelAdvanced
+  - type: StorageFill
+    contents:
+      - id: Hemostat
+      - id: SawAdvanced
+      - id: Drill
+      - id: Cautery
+      - id: Retractor
+      - id: ScalpelAdvanced
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: Bulldog bundle
   description: "Lean and mean: Contains the popular Bulldog Shotgun, a 12g beanbag drum and 3 12g buckshot drums." #, and a pair of Thermal Imaging Goggles.
   components:
-    - type: StorageFill
-      contents:
-        - id: WeaponShotgunBulldog
-        - id: MagazineShotgun
-        - id: MagazineShotgun
-        - id: MagazineShotgunBeanbag
+  - type: StorageFill
+    contents:
+      - id: WeaponShotgunBulldog
+      - id: MagazineShotgun
+      - id: MagazineShotgun
+      - id: MagazineShotgunBeanbag
 #     - id: ThermalImagingGoggles
 
 - type: entity
   name: C-20r bundle
   description: "Old faithful: The classic C-20r Submachine Gun, bundled with three magazines." #, and a Suppressor.
   components:
-    - type: StorageFill
-      contents:
-        - id: WeaponSubMachineGunC20r
-        - id: MagazinePistolSubMachineGun
-          amount: 2
+  - type: StorageFill
+    contents:
+      - id: WeaponSubMachineGunC20r
+      - id: MagazinePistolSubMachineGun
+        amount: 2
 #     - id: SMGSuppressor
 
 - type: entity
   name: Python bundle
   description: "Go loud and proud with a fully loaded Magnum Python, bundled with two speed loaders."
   components:
-    - type: StorageFill
-      contents:
-        - id: WeaponRevolverPythonAP
-        - id: SpeedLoaderMagnumAP
-          amount: 2
+  - type: StorageFill
+    contents:
+      - id: WeaponRevolverPythonAP
+      - id: SpeedLoaderMagnumAP
+        amount: 2
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: L6 Saw bundle
   description: "More dakka: The iconic L6 lightmachinegun, bundled with 2 box magazines."
   components:
-    - type: StorageFill
-      contents:
-        - id: WeaponLightMachineGunL6
-        - id: MagazineLightRifleBox
+  - type: StorageFill
+    contents:
+      - id: WeaponLightMachineGunL6
+      - id: MagazineLightRifleBox
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: China-Lake bundle
   description: "An old China-Lake grenade launcher bundled with 11 rounds of various destruction capability."
   components:
-    - type: StorageFill
-      contents:
-        - id: WeaponLauncherChinaLake
-        - id: GrenadeBlast
-          amount: 4
-        - id: GrenadeFrag
-          amount: 4
+  - type: StorageFill
+    contents:
+      - id: WeaponLauncherChinaLake
+      - id: GrenadeBlast
+        amount: 4
+      - id: GrenadeFrag
+        amount: 4
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: M-90gl bundle
   description: "A versatile battle rifle with an attached grenade launcher, bundled with 3 magazines and 6 grenades of various capabilities."
   components:
-    - type: StorageFill
-      contents:
-        - id: WeaponRifleM90GrenadeLauncher
-        - id: MagazineRifle
-          amount: 2
-        - id: GrenadeBlast
-          amount: 2
-        - id: GrenadeFlash
-          amount: 2
-        - id: GrenadeFrag
-          amount: 2
+  - type: StorageFill
+    contents:
+      - id: WeaponRifleM90GrenadeLauncher
+      - id: MagazineRifle
+        amount: 2
+      - id: GrenadeBlast
+        amount: 2
+      - id: GrenadeFlash
+        amount: 2
+      - id: GrenadeFrag
+        amount: 2
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateAmmo
   name: ammo bundle
   description: "Reloading! Contains 4 magazines for the C-20r, 4 drums for the Bulldog, and 2 ammo boxes for the L6 SAW."
   components:
-    - type: StorageFill
-      contents:
-        - id: MagazinePistolSubMachineGun
-          amount: 4
-        - id: MagazineShotgun
-          amount: 4
-        - id: MagazineLightRifleBox
-          amount: 2
+  - type: StorageFill
+    contents:
+      - id: MagazinePistolSubMachineGun
+        amount: 4
+      - id: MagazineShotgun
+        amount: 4
+      - id: MagazineLightRifleBox
+        amount: 2
 
 - type: entity
   parent: ClothingBackpackDuffel
   description: "Contains a full CentCom Official uniform set, headset and clipboard included. Encryption keys and ID access are not included."
   suffix: DO NOT MAP
   components:
-    - type: Tag
-      tags: [] # ignore "WhitelistChameleon" tag
-    - type: StorageFill
-      contents:
-        - id: ClothingHeadHatCentcom
-        - id: ClothingEyesGlassesSunglasses
-        - id: ClothingUniformJumpsuitCentcomOfficial
-        - id: ClothingShoesBootsJack
-        - id: ClothingHandsGlovesColorBlack
-        - id: ClothingHeadsetAltCentComFake
-        - id: ClothingOuterArmorBasic
-        - id: Paper
-        - id: Pen
-        - id: CentcomPDAFake
+  - type: Tag
+    tags: [] # ignore "WhitelistChameleon" tag
+  - type: StorageFill
+    contents:
+      - id: ClothingHeadHatCentcom
+      - id: ClothingEyesGlassesSunglasses
+      - id: ClothingUniformJumpsuitCentcomOfficial
+      - id: ClothingShoesBootsJack
+      - id: ClothingHandsGlovesColorBlack
+      - id: ClothingHeadsetAltCentComFake
+      - id: ClothingOuterArmorBasic
+      - id: Paper
+      - id: Pen
+      - id: CentcomPDAFake
 
 - type: entity
   parent: ClothingBackpackDuffelClown
   id: ClothingBackpackDuffelSyndicateCostumeClown
   suffix: syndicate
   components:
-    - type: Tag
-      tags: [] # ignore "WhitelistChameleon" tag
-    - type: StorageFill
-      contents:
-        - id: ClothingUniformJumpsuitClown
-        - id: ClothingShoesClown
-        - id: ClothingMaskClown
-        - id: BikeHorn
-        - id: ClownPDA
-        - id: ClothingHeadsetService
+  - type: Tag
+    tags: [] # ignore "WhitelistChameleon" tag
+  - type: StorageFill
+    contents:
+      - id: ClothingUniformJumpsuitClown
+      - id: ClothingShoesClown
+      - id: ClothingMaskClown
+      - id: BikeHorn
+      - id: ClownPDA
+      - id: ClothingHeadsetService
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: carp suit duffel bag
   description: Contains a carp suit and some friends to play with.
   components:
-    - type: StorageFill
-      contents:
-        - id: ClothingOuterSuitCarp
-        - id: PlushieCarp
-          amount: 6
+  - type: StorageFill
+    contents:
+    - id: ClothingOuterSuitCarp
+    - id: PlushieCarp
+      amount: 6
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: syndicate pyjama duffel bag
   description: Contains 3 pairs of syndicate pyjamas and 3 plushies for the ultimate sleepover.
   components:
-    - type: StorageFill
-      contents:
-        - id: ClothingUniformJumpsuitPyjamaSyndicateRed
-        - id: ClothingUniformJumpsuitPyjamaSyndicateBlack
-        - id: ClothingUniformJumpsuitPyjamaSyndicatePink
-        - id: ClothingHeadPyjamaSyndicateRed
-        - id: ClothingHeadPyjamaSyndicateBlack
-        - id: ClothingHeadPyjamaSyndicatePink
-        - id: ClothingShoesSlippers
-          amount: 3
-        - id: BedsheetSyndie
-          amount: 3
-        - id: PlushieCarp
-        - id: PlushieNuke
-        - id: PlushieLizard
-        - id: PlushieSharkBlue
+  - type: Storage
+    maxTotalWeight: 44
+  - type: StorageFill
+    contents:
+      - id: ClothingUniformJumpsuitPyjamaSyndicateRed
+      - id: ClothingUniformJumpsuitPyjamaSyndicateBlack
+      - id: ClothingUniformJumpsuitPyjamaSyndicatePink
+      - id: ClothingHeadPyjamaSyndicateRed
+      - id: ClothingHeadPyjamaSyndicateBlack
+      - id: ClothingHeadPyjamaSyndicatePink
+      - id: ClothingShoesSlippers
+        amount: 3
+      - id: BedsheetSyndie
+        amount: 3
+      - id: PlushieCarp
+      - id: PlushieNuke
+      - id: PlushieLizard
+      - id: PlushieSharkBlue
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: syndicate EVA bundle
   description: "Contains the Syndicate approved EVA suit."
   components:
-    - type: StorageFill
-      contents:
-        - id: ClothingHeadHelmetSyndicate
-        - id: ClothingOuterHardsuitSyndicate
-        - id: ClothingMaskGasSyndicate
-        - id: DoubleEmergencyOxygenTankFilled
+  - type: StorageFill
+    contents:
+      - id: ClothingHeadHelmetSyndicate
+      - id: ClothingOuterHardsuitSyndicate
+      - id: ClothingMaskGasSyndicate
+      - id: DoubleEmergencyOxygenTankFilled
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: syndicate hardsuit bundle
   description: "Contains the Syndicate's signature blood red hardsuit."
   components:
-    - type: StorageFill
-      contents:
-        - id: ClothingOuterHardsuitSyndie
-        - id: ClothingMaskGasSyndicate
-        - id: ClothingHandsGlovesCombat
+  - type: Storage
+    maxItemSize: Huge
+    whitelist: #to snub 'dem metagamers
+      components:
+      - Clothing
+  - type: StorageFill
+    contents:
+      - id: ClothingOuterHardsuitSyndie
+      - id: ClothingMaskGasSyndicate
+      - id: ClothingHandsGlovesCombat
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: syndicate zombie bundle
   description: "An all-in-one kit for unleashing the undead upon a station."
   components:
-    - type: StorageFill
-      contents:
-        - id: SyringeRomerol
-        - id: WeaponRevolverPython
-        - id: MagazineBoxMagnumIncendiary
-        - id: PillAmbuzolPlus
-        - id: PillAmbuzol
-          amount: 3
+  - type: StorageFill
+    contents:
+      - id: SyringeRomerol
+      - id: WeaponRevolverPython
+      - id: MagazineBoxMagnumIncendiary
+      - id: PillAmbuzolPlus
+      - id: PillAmbuzol
+        amount: 3
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   id: ClothingBackpackDuffelSyndicateOperative
   name: operative duffelbag
   components:
-    - type: StorageFill
-      contents:
-        - id: BoxSurvivalSyndicate
-        - id: WeaponPistolViper
-        - id: PinpointerNuclear
-        - id: MicroBombImplanter
+  - type: StorageFill
+    contents:
+      - id: BoxSurvivalSyndicate
+      - id: WeaponPistolViper
+      - id: PinpointerNuclear
+      - id: MicroBombImplanter
 
 
 - type: entity
   name: operative medic duffelbag
   description: A large duffel bag for holding extra medical supplies.
   components:
-    - type: StorageFill
-      contents:
-        - id: BoxSurvivalSyndicate
-        - id: SawAdvanced
-        - id: Cautery
-        - id: CombatKnife
-        - id: WeaponPistolViper
-        - id: PinpointerNuclear
-        - id: HandheldHealthAnalyzer
-        - id: CombatMedipen
-        - id: MicroBombImplanter
-        - id: SyndiHypo
+  - type: StorageFill
+    contents:
+      - id: BoxSurvivalSyndicate
+      - id: SawAdvanced
+      - id: Cautery
+      - id: CombatKnife
+      - id: WeaponPistolViper
+      - id: PinpointerNuclear
+      - id: HandheldHealthAnalyzer
+      - id: CombatMedipen
+      - id: MicroBombImplanter
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateMedicalBundle
   name: medical bundle
   description: "All you need to get your comrades back in the fight."
   components:
-    - type: StorageFill
-      contents:
-        - id: MedkitCombatFilled
-        - id: Defibrillator
-        - id: CombatMedipen
-          amount: 3
-        - id: ClothingHandsGlovesLatex
-        - id: SyringeTranexamicAcid
-        - id: SyringeHyronalin
+  - type: StorageFill
+    contents:
+      - id: MedkitCombatFilled
+      - id: Defibrillator
+      - id: CombatMedipen
+        amount: 3
+      - id: ClothingHandsGlovesLatex
+      - id: SyringeTranexamicAcid
+      - id: SyringeHyronalin
index 20e291494f76e4ada7d2e5a6a552159bb7bcf76f..7fc62984a052e0abc5b5cb8dc9896b97051896e5 100644 (file)
     containers:
       ballistic-ammo: !type:Container
   - type: Item
-    size: 30
+    size: Normal
   - type: Sprite
     sprite: Objects/Storage/boxes.rsi
 
index d05dfbb4ede0bbec3c54f985780d11c8e7066639..6d30dac57a50f6f1fc108e3b76b8f51a1606bfe2 100644 (file)
@@ -37,7 +37,7 @@
       - state: box
       - state: light
   - type: Storage
-    capacity: 60
+    maxTotalWeight: 24
     whitelist:
       components:
       - LightBulb
@@ -60,7 +60,7 @@
       - state: box
       - state: lighttube
   - type: Storage
-    capacity: 60
+    maxTotalWeight: 24
     whitelist:
       components:
       - LightBulb
@@ -85,7 +85,7 @@
       - state: box
       - state: lightmixed
   - type: Storage
-    capacity: 60
+    maxTotalWeight: 24
     whitelist:
       components:
       - LightBulb
     layers:
       - state: box
       - state: pda
-  - type: Storage
-    capacity: 60
-    whitelist:
-      components:
-      - Pda
 
 - type: entity
   name: ID card box
     layers:
       - state: box
       - state: pda
-  - type: Storage
-    capacity: 60
-    whitelist:
-      components:
-      - IdCard
 
 - type: entity
   name: headset box
     layers:
       - state: box
       - state: headset
-  - type: Storage
-    capacity: 60
-    whitelist:
-      components:
-      - Headset
 
 - type: entity
   name: meson box
   id: BoxHugHealing
   description: A special box for sensitive people.
   components:
-  - type: Storage
-    capacity: 30
   - type: Sprite
     layers:
       - state: box_hug
   id: BoxPerformer
   description: Happy Hatsune Miku Day!
   components:
+  - type: Storage
+    maxItemSize: Normal
+    whitelist:
+      components:
+      - Clothing
+      - Food
   - type: StorageFill
     contents:
       - id: ClothingShoesBootsPerformer
       - id: TrashBag
         amount: 6
   - type: Storage
-    capacity: 800
+    maxTotalWeight: 24
+    maxItemSize: Normal
     whitelist:
       tags:
         - TrashBag
       - state: box
       - state: encryptokey
   - type: Storage
-    capacity: 30
     whitelist:
       components:
       - EncryptionKey
   description: Two syndicate encryption keys for the price of one. Miniaturized for ease of use.
   components:
   - type: Item
-    size: 15
+    size: Normal
   - type: StorageFill
     contents:
       - id: EncryptionKeySyndie
         amount: 2
   - type: Storage
-    capacity: 15
 
 - type: entity
   name: deathrattle implant box
   description: Six deathrattle implants and handheld GPS devices for the whole squad.
   components:
   - type: Item
-    size: 60
+    size: Normal
   - type: StorageFill
     contents:
       - id: DeathRattleImplanter
       - id: HandheldGPSBasic
         amount: 6
   - type: Storage
-    capacity: 60
+    maxTotalWeight: 24
   - type: Sprite
     layers:
       - state: box
   description: This box filled with colorful darts.
   components:
   - type: Item
-    size: 40
+    size: Normal
   - type: StorageFill
     contents:
       - id: Dart
-        amount: 5
+        amount: 3
       - id: DartBlue
-        amount: 5
+        amount: 3
       - id: DartPurple
-        amount: 5
+        amount: 3
       - id: DartYellow
-        amount: 5
+        amount: 3
   - type: Storage
-    capacity: 40
+    maxTotalWeight: 24
   - type: Sprite
     layers:
       - state: box
-      - state: darts
\ No newline at end of file
+      - state: darts
index 41ee064ce03774f1a9fe5a7389427e0f38102d6d..02f4905693a083bb33d318a90968ce4df7b203f6 100644 (file)
   parent: BoxCardboard
   id: BoxMouthSwab
   components:
+  - type: Storage
+    maxTotalWeight: 20
   - type: StorageFill
     contents:
       - id: DiseaseSwab
-        amount: 30
+        amount: 10
   - type: Sprite
     layers:
       - state: box
index 027aaf19f629ec6ceb5d555919f32233e3465524..527194d104217a32f6a1cfc1831d92f2f9f894b7 100644 (file)
   id: BoxZiptie
   description: A box full of zipties.
   components:
+  - type: Storage
+    maxTotalWeight: 20
+    whitelist:
+      components:
+      - Handcuff
   - type: StorageFill
     contents:
       - id: Zipties
@@ -64,6 +69,8 @@
   id: BoxForensicPad
   description: A box of forensic pads.
   components:
+  - type: Storage
+    maxTotalWeight: 20
   - type: StorageFill
     contents:
       - id: ForensicPad
index 48877fd88961adafcfb4fd0b11736b11f1df6a1e..1526cf0f6304e02e0cd171d56a7196228df9eafa 100644 (file)
       - id: TargetDarts
         amount: 1
       - id: BoxDarts
-        amount: 1
+        amount: 2
       - id: BoxDarts
         amount: 1
         prob: 0.05
-  
+
index f784768925115c5670125612e8fed63d92bf022a..683162f9d47bcb457e79680801ffafaa05e7aea4 100644 (file)
   - type: StorageFill
     contents:
       - id: Brutepack
-        amount: 1
       - id: Ointment
-        amount: 1
       - id: Bloodpack
-        amount: 1
       - id: Gauze
       - id: EmergencyMedipen #You never know what people are going to latejoin into
-        amount: 6
+        amount: 3
 
 - type: entity
   id: ClothingBeltPlantFilled
   name: grenadier chest rig
   suffix: Filled
   components:
+  - type: Item
+    size: Large
+  - type: Storage
+    maxSlots: 8
   - type: StorageFill
     contents:
       - id: ExGrenade
index c487909a4b1242695a26dd4ccfe9f04954d685b2..714148a64d5c48e2352f9c51711b0ce7be6660d2 100644 (file)
   parent: BriefcaseSyndie
   suffix: SniperBundle
   components:
+  - type: Item
+    size: Huge
+  - type: Storage
+    maxItemSize: Large
   - type: StorageFill
     contents:
       - id: WeaponSniperHristov
index 8cc7d6b6d4d2617f305e5920244f1cb2dc4ad7b0..832d357d83def3517824658d6d3d90ae0aa8f6be 100644 (file)
@@ -12,8 +12,7 @@
       - id: Ointment
         amount: 2
       - id: Gauze
-      - id: PillTricordrazine
-        amount: 5
+      - id: PillCanisterTricordrazine
       # see https://github.com/tgstation/blob/master/code/game/objects/items/storage/firstaid.dm for example contents
 
 - type: entity
       - id: Ointment
         amount: 2
       - id: SyringeSigynate
-      - id: PillKelotane
-        amount: 5
-      - id: PillDermaline
-        amount: 5
+      - id: PillCanisterKelotane
+      - id: PillCanisterDermaline
 
 - type: entity
   id: MedkitBruteFilled
       - id: Gauze
       - id: Bloodpack
       - id: SyringeTranexamicAcid
-      - id: PillIron
-        amount: 5
-      - id: PillBicaridine
-        amount: 5
+      - id: PillCanisterIron
+      - id: PillCanisterBicaridine
 
 - type: entity
   id: MedkitToxinFilled
       - id: SyringeIpecac
       - id: SyringeEthylredoxrazine
       - id: AntiPoisonMedipen
-      - id: PillDylovene
-        amount: 5
-      - id: PillCharcoal
-        amount: 3
+      - id: PillCanisterDylovene
+      - id: PillCanisterCharcoal
 
 - type: entity
   id: MedkitOxygenFilled
@@ -76,8 +69,7 @@
       - id: EmergencyOxygenTankFilled
       - id: EmergencyMedipen
       - id: SyringeInaprovaline
-      - id: PillDexalin
-        amount: 7
+      - id: PillCanisterDexalin
 
 - type: entity
   id: MedkitRadiationFilled
@@ -92,8 +84,7 @@
         amount: 1
       - id: EmergencyMedipen
         amount: 1
-      - id: PillHyronalin
-        amount: 5
+      - id: PillCanisterHyronalin
 
 - type: entity
   id: MedkitAdvancedFilled
       - id: MedicatedSuture
       - id: RegenerativeMesh
       - id: SyringeEphedrine
-      - id: SyringeSaline
       - id: BruteAutoInjector
       - id: BurnAutoInjector
       - id: EmergencyMedipen
-      - id: Bloodpack
 
 - type: entity
   id: StimkitFilled
index 234481af8d4c85289e4225512bc3051d138ec3d8..bc9485d7f042a22cbf78f687bda82e8f82dc7a10 100644 (file)
   suffix: Filled
   parent: ToolboxSyndicate
   components:
+  - type: Storage
+    maxSlots: 8
   - type: StorageFill
     contents:
-      - id: ClothingBeltUtilityEngineering
+      - id: Crowbar
+      - id: Wrench
+      - id: Screwdriver
+      - id: Wirecutter
+      - id: Welder
+      - id: Multitool
       - id: ClothingHandsGlovesCombat
       - id: ClothingMaskGasSyndicate
 
index 7277ebb10a82d8c4780755a35b1a3542faf35e2c..12532523906fc62c004430289516eec1f935e472 100644 (file)
@@ -8,13 +8,14 @@
     sprite: Clothing/Back/Backpacks/backpack.rsi
     state: icon
   - type: Item
-    size: 9999
+    size: Large
   - type: Clothing
     quickEquip: false
     slots:
     - back
   - type: Storage
-    capacity: 100
+    maxItemSize: Large
+    maxTotalWeight: 28
   - type: ContainerContainer
     containers:
       storagebase: !type:Container
   - type: Sprite
     sprite: Clothing/Back/Backpacks/ertleader.rsi
   - type: Storage
-    capacity: 250
+    maxTotalWeight: 44
 
 - type: entity
   parent: ClothingBackpackERTLeader
       shader: unshaded
   - type: Clothing
     equippedPrefix: holding
+  - type: Item
+    size: Ginormous
   - type: Storage
-    capacity: 9999
+    maxItemSize: Large
+    maxTotalWeight: 56 #14 normal-sized items.
 
 - type: entity
   parent: ClothingBackpackClown
index c89158486b7c1eeb4a408a93ac61596657228ee5..8d2850172a3eed46f945c536ac84741ef2855416 100644 (file)
@@ -4,13 +4,14 @@
   name: duffel bag
   description: A large duffel bag for holding extra things.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/duffel.rsi
-    - type: Storage
-      capacity: 120
-    - type: ClothingSpeedModifier
-      walkModifier: 1
-      sprintModifier: 0.9
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/duffel.rsi
+  - type: Storage
+    maxItemSize: Large
+    maxTotalWeight: 40
+  - type: ClothingSpeedModifier
+    walkModifier: 1
+    sprintModifier: 0.9
 
 - type: entity
   parent: ClothingBackpackDuffel
@@ -18,8 +19,8 @@
   name: engineering duffel bag
   description: A large duffel bag for holding extra tools and supplies.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/engineering.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/engineering.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
@@ -27,8 +28,8 @@
   name: atmospherics duffel bag
   description: A large duffel bag made of fire resistant fibers. Smells like plasma.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/atmospherics.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/atmospherics.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
@@ -36,8 +37,8 @@
   name: medical duffel bag
   description: A large duffel bag for holding extra medical supplies.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/medical.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/medical.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
@@ -45,8 +46,8 @@
   name: captain's duffel bag
   description: A large duffel bag for holding extra captainly goods.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/captain.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/captain.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
   name: clown duffel bag
   description: A large duffel bag for holding extra honk goods.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/clown.rsi
-    - type: Storage
-      storageOpenSound:
-        collection: BikeHorn
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/clown.rsi
+  - type: Storage
+    storageOpenSound:
+      collection: BikeHorn
 
 - type: entity
   parent: ClothingBackpackDuffel
@@ -66,8 +67,8 @@
   name: security duffel bag
   description: A large duffel bag for holding extra security related goods.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/security.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/security.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
@@ -75,8 +76,8 @@
   name: brigmedic duffel bag
   description: A large duffel bag for holding extra medical related goods.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/brigmedic.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/brigmedic.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
@@ -84,8 +85,8 @@
   name: chemistry duffel bag
   description: A large duffel bag for holding extra beakers and test tubes.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/chemistry.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/chemistry.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
@@ -93,8 +94,8 @@
   name: virology duffel bag
   description: A large duffel bag made of hypo-allergenic fibers. It's designed to help prevent the spread of disease. Smells like monkey.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/virology.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/virology.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
   name: genetics duffel bag
   description: A large duffel bag for holding extra genetic mutations.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/genetics.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/genetics.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
   name: mime duffel bag
   description: A large duffel bag for holding... mime... stuff.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/mime.rsi
-      storageOpenSound:
-        collection: null
-      storageInsertSound:
-        collection: null
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/mime.rsi
+    storageOpenSound:
+      collection: null
+    storageInsertSound:
+      collection: null
 
 - type: entity
   parent: ClothingBackpackDuffel
   name: science duffel bag
   description: A large duffel bag for holding extra science related goods.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/science.rsi
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/science.rsi
 
 - type: entity
   parent: ClothingBackpackDuffel
   name: syndicate duffel bag
   description: A large duffel bag for holding various traitor goods.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/syndicate.rsi
-    - type: Storage
-      capacity: 131
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/syndicate.rsi
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicate
   id: ClothingBackpackDuffelSyndicateBundle
   abstract: true
   components:
-    - type: Tag
-      tags: [] # ignore "WhitelistChameleon" tag
+  - type: Tag
+    tags: [] # ignore "WhitelistChameleon" tag
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicate
   id: ClothingBackpackDuffelSyndicateAmmo
   name: syndicate duffel bag
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/syndicate.rsi
-      state: icon-ammo
-    - type: Item
-      heldPrefix: ammo
-    - type: Clothing
-      equippedPrefix: ammo
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/syndicate.rsi
+    state: icon-ammo
+  - type: Item
+    heldPrefix: ammo
+  - type: Clothing
+    equippedPrefix: ammo
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateAmmo
   id: ClothingBackpackDuffelSyndicateMedical
   name: syndicate duffel bag
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/syndicate.rsi
-      state: icon-med
-    - type: Item
-      heldPrefix: med
-    - type: Clothing
-      equippedPrefix: med
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/syndicate.rsi
+    state: icon-med
+  - type: Item
+    heldPrefix: med
+  - type: Clothing
+    equippedPrefix: med
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateMedical
   name: duffelbag of holding
   description: A duffelbag that opens into a localized pocket of bluespace.
   components:
-    - type: Sprite
-      sprite: Clothing/Back/Duffels/holding.rsi
-      state: icon
-      layers:
-        - state: icon
-        - state: icon-unlit
-          shader: unshaded
-    - type: Storage
-      capacity: 9999
-    - type: ClothingSpeedModifier
-      sprintModifier: 1 # makes its stats identical to other variants of bag of holding
+  - type: Sprite
+    sprite: Clothing/Back/Duffels/holding.rsi
+    state: icon
+    layers:
+    - state: icon
+    - state: icon-unlit
+      shader: unshaded
+  - type: Item
+    size: Ginormous
+  - type: Storage
+    maxItemSize: Large
+    maxTotalWeight: 56 #14 normal-sized items.
+  - type: ClothingSpeedModifier
+    sprintModifier: 1 # makes its stats identical to other variants of bag of holding
 
 - type: entity
   parent: ClothingBackpackDuffel
   name: CBURN duffel bag
   description: A duffel bag containing a variety of biological containment equipment.
   components:
-    - type: Storage
-      capacity: 150
-    - type: ClothingSpeedModifier
-      walkModifier: 1
-      sprintModifier: 1
+  - type: Storage
+    maxItemSize: Large
+    maxTotalWeight: 40
+  - type: ClothingSpeedModifier
+    walkModifier: 1
+    sprintModifier: 1
index e80b0d6f8b22472854c6128f593d8b7f6aca7985..245c9f9fa8cf8534cd422dd6317390ee300d3295 100644 (file)
     - state: icon
     - state: icon-unlit
       shader: unshaded
+  - type: Item
+    size: Ginormous
   - type: Storage
-    capacity: 9999
+    maxItemSize: Large
+    maxTotalWeight: 56 #14 normal-sized items.
index 5964007356401cf3bb78a3ff7f9cf967cab73d46..c36ddde03b56f350dff7215696af433b021e821d 100644 (file)
@@ -33,7 +33,7 @@
     sprite: Clothing/Back/Backpacks/waterbackpack.rsi
     state: icon
   - type: Item
-    size: 200
+    size: Huge
   - type: Clothing
     slots: BACK
     sprite: Clothing/Back/Backpacks/waterbackpack.rsi
index b37d3fd9745f23643f81a519adb6a9640d9740ef..ec6b48bf8947833ee5dce45ee3fa040356616f36 100644 (file)
@@ -6,7 +6,7 @@
   - type: Sprite
     state: icon
   - type: Item
-    size: 50
+    size: Normal
   - type: Clothing
     slots: [belt]
     quickEquip: false
   id: ClothingBeltStorageBase
   components:
   - type: Storage
-    capacity: 40
+    maxSlots: 7
+    maxItemSize: Normal
+  - type: Item
+    size: Huge
   - type: ContainerContainer
     containers:
       storagebase: !type:Container
index fa1a5e951faa1284d9ee06d11b8cdc1fdb7395dc..28f8ed0dcad550f8a2a3b0f0e1e272d85005bcc5 100644 (file)
@@ -11,7 +11,7 @@
   - type: Clothing
     sprite: Clothing/Belt/utility.rsi
   - type: Storage
-    capacity: 45
+    maxItemSize: Normal
     # TODO: Fill this out more.
     whitelist:
       tags:
@@ -83,7 +83,6 @@
   - type: Clothing
     sprite: Clothing/Belt/ce.rsi
   - type: Storage
-    capacity: 105
     # TODO: Fill this out more.
     whitelist:
       tags:
   - type: Clothing
     sprite: Clothing/Belt/medical.rsi
   - type: Storage
-    capacity: 60
     whitelist:
       tags:
         - Wrench
   - type: Clothing
     sprite: Clothing/Belt/sheath.rsi
   - type: Storage
-    capacity: 15
+    maxSlots: 1
     whitelist:
       tags:
         - CaptainSabre
   - type: Clothing
     sprite: Clothing/Belt/bandolier.rsi
   - type: Item
-    size: 60
+    size: Large
   - type: Storage
-    capacity: 60
     whitelist:
       tags:
         - ShellShotgun
   - type: Clothing
     sprite: Clothing/Belt/holster.rsi
   - type: Storage
-    capacity: 20
+    maxSlots: 3
 
 - type: entity
   parent: ClothingBeltStorageBase
   - type: Clothing
     sprite: Clothing/Belt/syndieholster.rsi
   - type: Item
-    size: 60
+    size: Large
   - type: Storage
-    capacity: 60
     whitelist:
       components:
         - Gun
   - type: Clothing
     sprite: Clothing/Belt/militarywebbingmed.rsi
   - type: Item
-    size: 70
-  - type: Storage
-    capacity: 70
+    size: Large
 
 - type: entity
   parent: ClothingBeltBase
   - type: Clothing
     sprite: Clothing/Belt/wand.rsi
   - type: Storage
-    capacity: 120
+    maxSlots: 8
     whitelist:
       tags:
       - WizardWand
index 10332e46aa47fb2368e7e8a1a301db514bd985bb..e6685eb47a771d78558e2391c95a8bb6a6f5db22 100644 (file)
@@ -12,7 +12,8 @@
       visible: false
   - type: Clothing
   - type: Storage
-    capacity: 150
+    maxSlots: 15
+    maxItemSize: Small
     whitelist:
       tags:
       - Arrow
index 6d47010efc6e3c9ba14c0cbee72c3f8efae52f31..b439bb6d60f81852a0a5e237e32f1f7792b23a89 100644 (file)
@@ -9,8 +9,8 @@
   - type: Clothing
     sprite: Clothing/Belt/waistbag_leather.rsi
   - type: Storage
-    capacity: 20
-        
+    maxItemSize: Small
+
 #Colorization on worn items doesn't work. If this ever gets fixed, you can duplicate this entry and change the color on the sprite to add color variants.
 #- type: entity
 #  parent: ClothingBeltStorageWaistbag
@@ -29,4 +29,4 @@
 #    layers:
 #    - state: "equipped-BELT"
 #      color: "#bf1313"
-#    - state: "equipped-trinkets"
\ No newline at end of file
+#    - state: "equipped-trinkets"
index cae6a0ea17101bde9230dc794687c116c16eb504..858ec6f0db6001daadde8b5b35903de6e742bf89 100644 (file)
@@ -17,6 +17,8 @@
     keySlots: 4
   - type: Sprite
     state: icon
+  - type: Item
+    size: Small
   - type: Clothing
     slots:
     - ears
index dc37811fb809be779e74234fad9235a962585947..a0c41120b84cee1b050dfb50d1f9ff1b2528e9f2 100644 (file)
@@ -7,3 +7,5 @@
     state: icon
   - type: Clothing
     slots: [eyes]
+  - type: Item
+    size: Small
index e7d8bec69ffd228bfea2a3d3e78a0f121b58a647..5cf7fd645baa4c401cfdbc0a584990550061bb4f 100644 (file)
@@ -9,6 +9,8 @@
     slots: [gloves]
   - type: Food
     requiresSpecialDigestion: true
+  - type: Item
+    size: Small
   - type: SolutionContainerManager
     solutions:
       food:
index ce1767b1bbf30f98b1df96004bda706786fe72d5..88b58c9c8c885783e4f0f600827f1b80c8e17cb0 100644 (file)
@@ -8,6 +8,8 @@
     - HEAD
   - type: Sprite
     state: icon
+  - type: Item
+    size: Small
   - type: Food
     requiresSpecialDigestion: true
   - type: SolutionContainerManager
@@ -69,6 +71,7 @@
     equippedPrefix: off
   - type: Item
     heldPrefix: off
+    size: Normal
   - type: ToggleableLightVisuals
   - type: PointLight
     enabled: false
   name: base space helmet
   components:
   - type: Item
-    size: 10
+    size: Normal
   - type: PressureProtection
     highPressureMultiplier: 0.6
     lowPressureMultiplier: 1000
   - type: GroupExamine
   - type: Tag
     tags:
-    - HidesHair
\ No newline at end of file
+    - HidesHair
index d5d13fbdd0365ae1761862b5f095ffa2c0a46190..731513d31ed665e9ff750e0fba49ec5062ba3de2 100644 (file)
   - type: Clothing
     sprite: Clothing/Head/Hats/chefhat.rsi
   - type: Storage
-    capacity: 5
+    maxSlots: 1
   - type: UserInterface
     interfaces:
       - key: enum.StorageUiKey.Key
         offset: "0, 0.12"
     sprite: Clothing/Head/Hats/magician.rsi
   - type: Item
-    size: 10
+    size: Small
     sprite: Clothing/Head/Hats/magician.rsi
   - type: Storage
-    capacity: 10
+    maxSlots: 1
   - type: UserInterface
     interfaces:
       - key: enum.StorageUiKey.Key
index b79d76aa1707b463baceeecd682e899a868aef40..d57065ba79ad92ead65ce2b3d01c71e303ef82de 100644 (file)
@@ -5,6 +5,8 @@
   components:
   - type: Sprite
     state: icon
+  - type: Item
+    size: Small
   - type: Clothing
     slots: [mask]
 
index 06ec393c78defc4449a3a00345b0cd33adc57dc8..1bccb4c92a3e9ea155485b0ff5eb144ab47e9e63 100644 (file)
@@ -4,7 +4,7 @@
   id: ClothingNeckBase
   components:
   - type: Item
-    size: 10
+    size: Small
   - type: Clothing
     quickEquip: true
     slots:
index fe72fd12e954a966292fef05a140a9af02528572..0d22a653dbf5660ad229a07335b5b3787b831ea1 100644 (file)
@@ -6,7 +6,7 @@
   description: be nothing do crime
   components:
   - type: Item
-    size: 1
+    size: Tiny
 
 - type: entity
   parent: ClothingNeckPinBase
index f92592f65efc583f1c5a7cbbb0d0fe6c3223df11..63c8ac86ef7d9f5f0f2f73d303b5a56e23c4c646 100644 (file)
@@ -15,7 +15,7 @@
   id: ClothingOuterBaseLarge
   components:
   - type: Item
-    size: 80
+    size: Large
   - type: Clothing
     slots:
     - outerClothing
   parent: ClothingOuterBase
   id: ClothingOuterStorageBase
   components:
-  - type: Item
-    size: 10
   - type: Storage
-    capacity: 10
+    maxTotalWeight: 6
   - type: ContainerContainer
     containers:
       storagebase: !type:Container
@@ -72,7 +70,7 @@
     walkModifier: 0.4
     sprintModifier: 0.6
   - type: Item
-    size: 121
+    size: Huge
   - type: Armor
     modifiers:
       coefficients:
     walkModifier: 0.8
     sprintModifier: 0.8
   - type: Item
-    size: 80
+    size: Large
 
 - type: entity
   parent: ClothingOuterBase
   id: ClothingOuterBaseMedium
   components:
   - type: Item
-    size: 30
+    size: Large
   - type: Clothing
     slots:
     - outerClothing
index d05d9ce8f81f466e3ceeb0246cee5246efc9f75e..384aceaf59137df02cf27e2d6ec9964faf425ea2 100644 (file)
     walkModifier: 0.75
     sprintModifier: 0.75
   - type: Item
-    size: 50
+    size: Normal
   - type: Tag
     tags:
     - WhitelistChameleon
index 16bef8c7b2668a749ab3c9c2a30cb082a839179b..f0aa96f613d390262304a810eeca309b27fcee12 100644 (file)
   - type: Sprite
     sprite: Clothing/OuterClothing/Suits/iansuit.rsi
   - type: Item
-    size: 30
+    size: Normal
   - type: Clothing
     sprite: Clothing/OuterClothing/Suits/iansuit.rsi
   - type: ToggleableClothing
   - type: Sprite
     sprite: Clothing/OuterClothing/Suits/carpsuit.rsi
   - type: Item
-    size: 30
+    size: Normal
   - type: Clothing
     sprite: Clothing/OuterClothing/Suits/carpsuit.rsi
   - type: ToggleableClothing
index 9bc3d25fc49f6bef019610a9340f1b52f4e47105..d15e114857a17d651294d91fbf0f9e528c5632ef 100644 (file)
@@ -11,7 +11,7 @@
   - type: TemperatureProtection\r
     coefficient: 0.1\r
   - type: Item\r
-    size: 10\r
+    size: Small\r
   - type: Armor\r
     modifiers:\r
       coefficients:\r
index c829dc5d44cb67efb7cadb6d2e7a860976a512df..c7152b23d92521ee0e6f378e081123c8b197a41f 100644 (file)
@@ -8,6 +8,8 @@
     - FEET
   - type: Sprite
     state: icon
+  - type: Item
+    size: Normal
   - type: Food
     requiresSpecialDigestion: true
   - type: SolutionContainerManager
@@ -39,7 +41,8 @@
   id: ClothingShoesStorageBase
   components:
   - type: Storage
-    capacity: 10
+    maxSlots: 1
+    maxItemSize: Normal
   - type: ContainerContainer
     containers:
       storagebase: !type:Container
index 7b864e806e9e871c86e53f040df9ea3191a8dfbf..eae044f8dda4fe4e953a638fb8fb65fb56c4d388 100644 (file)
       - state: equipped-FEET
         offset: "0, -0.02"
   - type: Item
-    size: 10
+    size: Small
     sprite: Clothing/Shoes/Specific/large_clown.rsi
   - type: ClothingSpeedModifier
     walkModifier: 0.85
index 60a94fe2914135e408e56328dd874ad61ee2297d..7e9d6e9568111ce31cdb2d934ef1010d2215a26d 100644 (file)
@@ -3,6 +3,8 @@
   parent: BaseItem
   id: Clothing
   components:
+  - type: Item
+    size: Normal
   - type: Sprite
   - type: Tag
     tags:
index 2d374b8e1278a1c3ebb6208552331433dfd8c96f..e3289569a2986527a2268296ec8d78daa1d9e739 100644 (file)
       types:
         Blunt: 20000
   - type: Item
-    size: 1
+    size: Tiny
     sprite: Objects/Weapons/Melee/debug.rsi
 
 - type: entity
index d0b2d507f74453a7bde5c238fb3dcd0aa601358d..404fe768f7004ce3653292c1e330912e8abd7ff7 100644 (file)
     - map: ["enum.DamageStateVisualLayers.Base"]
       state: mouse-0
   - type: Item
-    size: 5
+    size: Tiny
   - type: Clothing
     quickEquip: false
     sprite: Mobs/Animals/mouse.rsi
       groups:
         Brute: 5
   - type: Item
-    size: 80
+    size: Normal
   - type: OnUseTimerTrigger
     delay: 10
     beepSound:
     - map: ["enum.DamageStateVisualLayers.Base"]
       state: hamster-0
   - type: Item
-    size: 5
+    size: Tiny
   - type: Physics
   - type: Fixtures
     fixtures:
index aaeeaf0bf6f9e4afdc1744288156183ec72459f8..ee853777f5ac1345a2b9221c85ef24ad06a3a096 100644 (file)
     graph: SupplyBot
     node: bot
   - type: Storage
-    capacity: 250
+    maxItemSize: Large
+    maxTotalWeight: 40
   - type: UserInterface
     interfaces:
     - key: enum.StorageUiKey.Key
index 118b2421367e3d11ec324f5c26aadda41171f062..11228d0ed697049c4c6b38604a40c8487d8ea02e 100644 (file)
         map: ["6pack6"]
         visible: false
   - type: Item
-    size: 6
+    size: Normal
   - type: Storage
-    capacity: 30
+    maxSlots: 6
     whitelist:
       tags:
         - Cola
index a4cb797129ee4c0b7b5b8cae313d5e412e53289b..e4ebcc4c00a04ff617b9ec97305733c519b786d9 100644 (file)
@@ -28,7 +28,7 @@
   abstract: true
   components:
   - type: Item
-    size: 1
+    size: Tiny
   - type: FlavorProfile
     flavors:
       - bread
index 09f5ce27ff54dc5ab4bfa4950201bfd3ed921258..7db9015295503af55485cdd770ed1a41ae80830f 100644 (file)
@@ -21,7 +21,7 @@
         - ReagentId: Vitamin
           Quantity: 5
   - type: Item
-    size: 25
+    size: Normal
 
 - type: entity
   parent: FoodCakeBase
@@ -43,7 +43,7 @@
         - ReagentId: Vitamin
           Quantity: 1
   - type: Item
-    size: 5
+    size: Tiny
 
 # Custom Cake Example
 
   - type: Food
     transferAmount: 12
   - type: Item
-    size: 40
+    size: Normal
   - type: PointLight
     color: "#FFFF00"
     radius: 2
index 061852f56166c33a8f2cee50e5f5c425b6b0e494..b0be8011aa429302df34755401befaddbf697d3c 100644 (file)
@@ -16,7 +16,7 @@
         - ReagentId: Nutriment
           Quantity: 3
   - type: Item
-    size: 1
+    size: Tiny
   - type: Tag
     tags:
     - DonkPocket
index bd007d87cbd5e06445e459e44f0d26e9d551a8d0..9cf32f30b4e4d07eb6025bb2be9960e3c476cc50 100644 (file)
@@ -21,7 +21,7 @@
           Quantity: 3
   - type: Item
     sprite: Objects/Consumable/Food/Baked/donut.rsi
-    size: 1
+    size: Tiny
 # Tastes like donut.
 
 # The sprinkles are now an overlay, so you can put them on any donut! If we really
index 54fc4d6553c9efeab1135db6c243295bf9ee38e8..1296bc475295e47bd17df399adde1036e0963b5a 100644 (file)
@@ -16,7 +16,7 @@
         - ReagentId: Nutriment
           Quantity: 5
   - type: Item
-    size: 1
+    size: Tiny
 
 # Muffins/Buns
 
index 1f6a307f4e75eedcbe4de3139a57de56acc2449a..01f93cccedfd888309e1686c45c165a298a7b7f0 100644 (file)
@@ -24,7 +24,7 @@
   - type: SliceableFood
     count: 8
   - type: Item
-    size: 8
+    size: Normal
   - type: Tag
     tags:
     - Pizza
@@ -53,7 +53,7 @@
         - ReagentId: Vitamin
           Quantity: 0.8
   - type: Item
-    size: 1
+    size: Tiny
   - type: Tag
     tags:
     - Pizza
index 5130b9d7e28469a9f1120153ffe79fed40ba5142..41aadf05fd9cde9481244d9989120b3283cd70f0 100644 (file)
       map: ["pink-box6"]
       visible: false
   - type: Storage
-    capacity: 6
+    maxSlots: 6
     whitelist:
       tags:
       - Donut
   - type: Item
     sprite: Objects/Consumable/Food/Baked/donut.rsi
-    size: 6
+    size: Small
     heldPrefix: box
   - type: StorageFill
     contents:
       map: ["box12"]
       visible: false
   - type: Storage
-    capacity: 12
+    maxSlots: 12
     whitelist:
       tags:
       - Egg
   - type: Item
     sprite: Objects/Consumable/Food/egg.rsi
-    size: 12
+    size: Small
   - type: StorageFill
     contents:
     - id: FoodEgg
       map: ["enum.StorageVisualLayers.Door"]
   # TODO make these entitystorage again + placeablesurface after entity storage ECS gets merged.
   - type: Storage
-    capacity: 8
+    maxSlots: 1
+    maxItemSize: Normal
     whitelist:
       tags:
       - Pizza
       map: ["box6"]
       visible: false
   - type: Storage
-    capacity: 6
+    maxSlots: 6
   - type: Item
     sprite: Objects/Consumable/Food/Baked/nuggets.rsi
-    size: 6
+    size: Small
     heldPrefix: box
   - type: StorageFill
     contents:
     sprite: Objects/Consumable/Food/Baked/donkpocket.rsi
     state: box
   - type: Storage
+    maxTotalWeight: 12
     whitelist:
       tags:
       - DonkPocket
-    capacity: 6
   - type: Item
     sprite: Objects/Consumable/Food/Baked/donkpocket.rsi
-    size: 6
+    size: Small
   - type: StorageFill
     contents:
     - id: FoodDonkpocket
   - type: Item
     sprite: Objects/Storage/Happyhonk/clown.rsi
     heldPrefix: box
-  - type: Storage
-    capacity: 30
   - type: Tag
     tags:
     - Trash
   suffix: Toy Unsafe, Snacks
   name: syndicate snack box
   components:
-  - type: Item
-    size: 64
   - type: Storage
-    capacity: 64 # need more room for goodies
+    maxSlots: 9
   - type: StorageFill
     contents:
     # toy
index 4e63ca5012ed34361bbadc4ea4cf0f8b307120ec..89ec5a8c27b65b1303c2f42c831a3460f6c8ff32 100644 (file)
@@ -37,7 +37,7 @@
   - type: Item
     sprite: Objects/Consumable/Food/snacks.rsi
     heldPrefix: packet
-    size: 3
+    size: Tiny
   - type: DamageOnLand
     damage:
       types:
@@ -63,7 +63,7 @@
   - type: Item
     sprite: Objects/Consumable/Food/snacks.rsi
     heldPrefix: packet
-    size: 3
+    size: Tiny
   - type: PhysicalComposition
     materialComposition:
       Steel: 100
index 4f6d10d98f548a31af3a697a877d562925e0911e..3eb2b966848a53bd1ddabec65eba9bcae9a3d635 100644 (file)
@@ -16,7 +16,7 @@
     sprite: Objects/Consumable/Food/egg.rsi
   - type: Item
     sprite: Objects/Consumable/Food/egg.rsi
-    size: 1
+    size: Tiny
   - type: SolutionContainerManager
     solutions:
       food:
@@ -69,7 +69,7 @@
     sprite: Objects/Consumable/Food/egg.rsi
     state: eggshells
   - type: Item
-    size: 1
+    size: Tiny
   - type: SolutionContainerManager
     solutions:
       food:
index 35057aeacd95da1b8a609909d385c6440a4fbbbe..2b7c9d6e16b3ccc4693529ce15d359e74a2660fb 100644 (file)
@@ -24,7 +24,7 @@
         - ReagentId: Fat
           Quantity: 5
   - type: Item
-    size: 5
+    size: Tiny
   - type: Fixtures
     fixtures:
       fix1:
     graph: BearSteak
     node: start
     defaultTarget: filet migrawr
-    
+
 
 - type: entity
   name: raw penguin meat
index 9ce373d63dc9b906ad48c6726f1ef0ea05a8e3cb..f0da095bbd9e7e39a1827abb43d949e88a71a1fd 100644 (file)
   - type: Sprite
     sprite: Objects/Specific/Hydroponics/nettle.rsi
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Specific/Hydroponics/nettle.rsi
   - type: MeleeWeapon
     damage:
   - type: Sprite
     sprite: Objects/Specific/Hydroponics/death_nettle.rsi
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Specific/Hydroponics/death_nettle.rsi
   - type: MeleeWeapon
     damage:
   - type: Produce
     seedId: deathNettle
   - type: MeleeChemicalInjector
-    transferAmount: 6 
+    transferAmount: 6
     solution: food
     pierceArmor: true # We do a little trolling
   - type: Extractable
   - type: Tag
     tags:
     - Fruit
-    
+
 - type: entity
   name: mimana
   parent: FoodProduceBase
     state: peel
   - type: Item
     sprite: Objects/Specific/Hydroponics/mimana.rsi
-    heldPrefix: peel  
+    heldPrefix: peel
   - type: Slippery
     slipSound:
       path: /Audio/Effects/slip.ogg
     sprite: Objects/Specific/Hydroponics/corn.rsi
     state: cob
   - type: Item
-    size: 1
+    size: Tiny
   - type: Tag
     tags:
       - Trash
   - type: Tag
     tags:
     - Galaxythistle
-    - Fruit # Probably? 
+    - Fruit # Probably?
 
 - type: entity
   name: fly amanita
   description: Round green object that you can slice and eat.
   components:
   - type: Item
-    size: 10
+    size: Small
   - type: FlavorProfile
     flavors:
       - watermelon
   description: Juicy green and red slice.
   components:
   - type: Item
-    size: 2
+    size: Tiny
   - type: FlavorProfile
     flavors:
       - watermelon
   description: A large, orange... berry. Seriously.
   components:
   - type: Item
-    size: 10
+    size: Small
   - type: FlavorProfile
     flavors:
       - pumpkin
     - id: PumpkinSeeds
   - type: Tag
     tags:
-    - Fruit
\ No newline at end of file
+    - Fruit
index 0b32de1ce5e80c203dc3263321bd354779cc7743..8c8f55f804509409ef1cb47b84a37bfd195d87ec 100644 (file)
@@ -17,7 +17,7 @@
         - ReagentId: Nutriment
           Quantity: 8
   - type: Item
-    size: 5
+    size: Small
 
 # Kebabs
 
index c2274aef6d32f694c6f94159dcd80a4c8ca6ff48..82c31a01c5c533cf34615d6a20eed5f5541b052c 100644 (file)
@@ -21,7 +21,7 @@
   - type: Item
     sprite: Objects/Consumable/Food/snacks.rsi
     heldPrefix: packet
-    size: 3
+    size: Tiny
 # Snacks
 
 # "Snacks" means food in a packet. Down the line this stuff can have multiple
     state: chocolatebar
   - type: Item
     heldPrefix: chocolatebar
-    size: 3
+    size: Tiny
   - type: Tag
     tags:
       - FoodSnack
   - type: Item
     sprite: Objects/Consumable/Food/snacks.rsi
     heldPrefix: packet
-    size: 1
+    size: Tiny
   - type: Food
     trash: FoodCookieFortune
 
   description: A carefully synthesized brick designed to contain the highest ratio of nutriment to volume. Tastes like shit.
   components:
   - type: Item
-    size: 10
+    size: Small
   - type: Tag
     tags:
       - FoodSnack
     flavors:
       - nutribrick
   - type: Item
-    size: 10
+    size: Small
   - type: Sprite
     state: nutribrick-open
   - type: Food
index 4d0b442c465ea682404ebf72978648a1777cd35a..eff790cdd1963310d538659ca8366df0c9aebfa6 100644 (file)
       - state: closed\r
       - state: open\r
         map: ["openLayer"]\r
-  - type: Storage\r
-    capacity: 36\r
   - type: Item\r
     sprite: Objects/Consumable/Smokeables/Cigarettes/Cartons/green.rsi\r
-    size: 36\r
+    size: Normal\r
   - type: StorageFill\r
     contents:\r
       - id: CigPackGreen\r
index 09ac79b141878ce767275c2d6aa881facbf046c7..3543db2ed16e4bba2f0d91dcf5e5ca4a9e7d0532 100644 (file)
@@ -17,7 +17,7 @@
     slots: [ mask ]\r
     equippedPrefix: unlit\r
   - type: Item\r
-    size: 1\r
+    size: Tiny\r
   - type: Construction\r
     graph: smokeableCigarette\r
     node: cigarette\r
@@ -41,7 +41,7 @@
     slots: [ mask ]\r
     equippedPrefix: unlit\r
   - type: Item\r
-    size: 1\r
+    size: Tiny\r
   - type: Construction\r
     graph: smokeableCigarette\r
     node: cigarette\r
index 402dcd80f5bbaba658e074300809c74e807842e7..e3ae06ec9f5cfc512e09624648969c66cafd150e 100644 (file)
@@ -17,7 +17,7 @@
     slots: [ mask ]
     equippedPrefix: unlit
   - type: Item
-    size: 1
+    size: Tiny
   - type: Construction
     graph: smokeableJoint
     node: joint
@@ -48,7 +48,7 @@
     slots: [ mask ]
     equippedPrefix: unlit
   - type: Item
-    size: 1
+    size: Tiny
   - type: Construction
     graph: smokeableBlunt
     node: blunt
index 1d161b160a3e445b02b227c454247054616e9159..6bc14cfb77e018d001b7337f9fb818fe4a3501fe 100644 (file)
@@ -43,9 +43,9 @@
       Steel: 50\r
   - type: SpaceGarbage\r
   - type: Storage\r
-    capacity: 5\r
+    maxSlots: 5\r
   - type: Item\r
-    size: 5\r
+    size: Small\r
   - type: StorageFill\r
     contents:\r
     - id: Cigarette\r
       Steel: 50\r
   - type: SpaceGarbage\r
   - type: Storage\r
-    capacity: 10\r
+    maxSlots: 10\r
+    maxTotalWeight: 20\r
   - type: Item\r
-    size: 10\r
+    size: Small\r
   - type: StorageFill\r
     contents:\r
     - id: CigaretteRandom\r
index e1005bf1136ca38527ce62bf173adbc1db877ab7..324a28caca5d9d699483f8cd5c801a4032a877e7 100644 (file)
@@ -9,7 +9,7 @@
       tags:
       - RollingPaper
       - CigFilter
-    capacity: 20
+    maxSlots: 20
   - type: StorageFill
     contents:
       - id: PaperRolling
@@ -31,7 +31,6 @@
       tags:
       - RollingPaper
       - CigFilter
-    capacity: 32
   - type: StorageFill
     contents:
       - id: PaperRolling
@@ -54,7 +53,7 @@
     state: cigpaper
   - type: Item
     sprite: Objects/Consumable/Smokeables/Cigarettes/paper.rsi
-    size: 5
+    size: Tiny
   - type: Tag
     tags:
     - RollingPaper
@@ -68,8 +67,6 @@
   components:
     - type: Stack
       count: 1
-    - type: Item
-      size: 1
 
 - type: entity
   id: CigaretteFilter
@@ -86,7 +83,7 @@
     state: cigfilter
   - type: Item
     sprite: Objects/Consumable/Smokeables/Cigarettes/paper.rsi
-    size: 10
+    size: Tiny
   - type: Tag
     tags:
     - CigFilter
@@ -99,5 +96,3 @@
   components:
     - type: Stack
       count: 1
-    - type: Item
-      size: 2
index 6034df179ad43370aa9a68b13db8cb486dfa67fa..eede84cd4b3b70030d2eefc45bdd655f707ae9e7 100644 (file)
       map: ["cigar8"]
       visible: false
   - type: Storage
-    capacity: 8
+    maxSlots: 8
   - type: Item
     sprite: Objects/Consumable/Smokeables/Cigars/case.rsi
-    size: 8
+    size: Small
   - type: StorageFill
     contents:
     - id: Cigar
index 4ed5912fc5e7a7d2b0e0ae354d82c8e87ba51777..3495ae26f9530b6a95850ade8e49e5567f8e99a7 100644 (file)
@@ -19,7 +19,7 @@
     slots: [ mask ]
     equippedPrefix: unlit
   - type: Item
-    size: 1
+    size: Tiny
 
 - type: entity
   id: CigarSpent
@@ -49,7 +49,7 @@
     slots: [ mask ]
     equippedPrefix: unlit
   - type: Item
-    size: 1
+    size: Tiny
 
 - type: entity
   id: CigarGoldSpent
index 21017465bc36db60329183f22ab68b26bdbb0ef9..7d2b234a58b32aaa33619e532d5e4c0f31735270 100644 (file)
@@ -12,7 +12,7 @@
     slots: [ mask ]
     equippedPrefix: unlit
   - type: Item
-    size: 3
+    size: Tiny
     sprite: Objects/Consumable/Smokeables/Pipes/pipe.rsi
   - type: Appearance
   - type: BurnStateVisuals
index 1205c202e417b0f68968e01a3d5b4bbf47bef1da..4dbcddb983f9bce1be7c23c37a666621c6968960 100644 (file)
@@ -8,7 +8,7 @@
     sprite: Objects/Specific/Hydroponics/pumpkin.rsi
     state: carved
   - type: Item
-    size: 10
+    size: Normal
   - type: Construction
     graph: PumpkinAddLight
     node: start
@@ -58,4 +58,4 @@
   suffix: Large
   components:
     - type: Sprite
-      scale: 1.5, 1.5
\ No newline at end of file
+      scale: 1.5, 1.5
index dfff087e22c9a8fb83a5b2d42a079cce5695d527..65141af36fbba678bf1c44089ef8acf5b3c8a8b5 100644 (file)
@@ -9,6 +9,6 @@
     layers:
       - state: icon
   - type: Item
-    size: 1001
+    size: Huge
   - type: StaticPrice
     price: 0
index 14a1dfbb5eb2f6d9347fe6a63437b20d9ab4624a..a7fd1cd1dee8bcae77557295b563c45d70575741 100644 (file)
@@ -15,9 +15,7 @@
   suffix: Empty
   components:
   - type: Item
-    size: 30
-  - type: Storage
-    capacity: 30
+    size: Normal
 
 - type: entity
   id: PresentRandomUnsafe
index 4bb13bdd93d7c9178f7e300c4f81acec9e1568f8..c462a3cb038ac72f72c2304ccb9a9ca63623f542 100644 (file)
@@ -17,7 +17,7 @@
     sprite: Objects/Devices/timer.rsi
     state: timer
   - type: Item
-    size: 5
+    size: Small
   - type: PayloadTrigger
     components:
     - type: OnUseTimerTrigger
index aed09fe70bc8e2481e9035cd067ccbfd9dfc89d2..fc6c2ac787463815cd60c0158fd04e0c5c0f58c3 100644 (file)
@@ -6,9 +6,9 @@
   components:
   - type: Sprite
     sprite: Objects/Misc/module.rsi
-    state: abductor_mod  
+    state: abductor_mod
   - type: Item
-    size: 10
+    size: Small
   - type: Tag
     tags:
-    - WeaponPistolCHIMPUpgradeKit
\ No newline at end of file
+    - WeaponPistolCHIMPUpgradeKit
index ad05777cfa6248cee4e9eb1717643d287319fed7..21943bfaff390175e8bc2af74c18356c99300c6e 100644 (file)
@@ -8,7 +8,7 @@
     sprite: Objects/Devices/forensic_scanner.rsi
     state: forensicnew
   - type: Item
-    size: 5
+    size: Small
   - type: Clothing
     sprite: Objects/Devices/forensic_scanner.rsi
     quickEquip: false
index 89c44ed1920330944751a2a2c74f2f2d2836e429..4cf04d8b17947377b5c8eef32b89a3db0c13b31f 100644 (file)
@@ -37,7 +37,7 @@
         components:
         - IdCard
   - type: Item
-    size: 10
+    size: Small
   - type: ContainerContainer
     containers:
       PDA-id: !type:ContainerSlot {}
index 06b230126207a259a8281f95c9dd6272cb8e9259..07d918b5765460c9533fa2737cee7740bce35f51 100644 (file)
@@ -16,7 +16,7 @@
     - key: enum.InstrumentUiKey.Key
       type: InstrumentBoundUserInterface
   - type: Item
-    size: 24
+    size: Normal
   - type: StaticPrice
     price: 200
 
index e8ac6f7ce5440d6fe616c7ca404e06f8e4d64fa1..260490ccad548ae9a084fcc8c1d1a0e01caaa9a5 100644 (file)
@@ -14,7 +14,7 @@
     sprite: Objects/Fun/Instruments/trumpet.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/trumpet.rsi
   - type: Tag
     tags:
@@ -32,7 +32,7 @@
     sprite: Objects/Fun/Instruments/trombone.rsi
     state: icon
   - type: Item
-    size: 48
+    size: Normal
     sprite: Objects/Fun/Instruments/trombone.rsi
   - type: Tag
     tags:
@@ -50,7 +50,7 @@
     sprite: Objects/Fun/Instruments/frenchhorn.rsi
     state: icon
   - type: Item
-    size: 48
+    size: Normal
     sprite: Objects/Fun/Instruments/frenchhorn.rsi
   - type: Tag
     tags:
@@ -69,7 +69,7 @@
     sprite: Objects/Fun/Instruments/euphonium.rsi
     state: icon
   - type: Item
-    size: 48
+    size: Normal
     sprite: Objects/Fun/Instruments/euphonium.rsi
   - type: Tag
     tags:
index 15581cbd8d147a68f4e84c9f535ba89caa4acc92..47ea5ab2f60b45c54033532f255ff0396dce3b41 100644 (file)
@@ -10,7 +10,7 @@
   - type: Instrument
     program: 121
   - type: Item
-    size: 10
+    size: Small
 
 - type: entity
   parent: BaseHandheldInstrument
@@ -24,7 +24,7 @@
   - type: Instrument
     program: 122
   - type: Item
-    size: 10
+    size: Small
 
 - type: entity
   parent: BaseHandheldInstrument
@@ -38,7 +38,7 @@
   - type: Instrument
     program: 123
   - type: Item
-    size: 5
+    size: Tiny
 
 - type: entity
   parent: BaseHandheldInstrument
@@ -55,7 +55,7 @@
   - type: Instrument
     program: 124
   - type: Item
-    size: 10
+    size: Small
   - type: Prayable
     sentMessage: prayer-popup-notify-centcom-sent
     notifiactionPrefix: prayer-chat-notify-centcom
@@ -74,7 +74,7 @@
   - type: Instrument
     program: 125
   - type: Item
-    size: 10
+    size: Small
 
 - type: entity
   parent: BaseHandheldInstrument
@@ -88,7 +88,7 @@
   - type: Instrument
     program: 126
   - type: Item
-    size: 5
+    size: Tiny
 
 - type: entity
   parent: BaseHandheldInstrument
     sprite: Objects/Fun/Instruments/gunpet.rsi
     state: icon
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Fun/Instruments/gunpet.rsi
   - type: Tag
     tags:
     - BrassInstrument #Go figure.
   - type: Item
     sprite: Objects/Fun/Instruments/bike_horn.rsi
-    size: 10
+    size: Small
   - type: Clothing
     sprite: Objects/Fun/Instruments/bike_horn.rsi
     slots: [Belt]
index 1ab803c5e279894ddfd99272b04f2cde587696c9..d79b354df44cb2cbac1dd7a370cc51b68876cfb9 100644 (file)
@@ -9,7 +9,7 @@
     sprite: Objects/Fun/Instruments/glockenspiel.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/glockenspiel.rsi
   - type: Tag
     tags:
@@ -58,7 +58,7 @@
     sprite: Objects/Fun/Instruments/microphone.rsi
     state: icon
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Fun/Instruments/microphone.rsi
 
 - type: entity
@@ -76,7 +76,7 @@
     sprite: Objects/Fun/Instruments/h_synthesizer.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/h_synthesizer.rsi
   - type: Tag
     tags:
     sprite: Objects/Fun/Instruments/h_synthesizer.rsi
     state: icon
   - type: Item
-    size: 24
-    sprite: Objects/Fun/Instruments/h_synthesizer.rsi
\ No newline at end of file
+    size: Normal
+    sprite: Objects/Fun/Instruments/h_synthesizer.rsi
index c71fecd91bae8c217bb94a91cadeb6fc35926c72..70d1444bc4fbb90e01ba46e91c7fe65d888c5cd8 100644 (file)
@@ -15,7 +15,7 @@
     sprite: Objects/Fun/Instruments/eguitar.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/eguitar.rsi
   - type: Clothing
     quickEquip: false
@@ -44,7 +44,7 @@
     sprite: Objects/Fun/Instruments/bassguitar.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/bassguitar.rsi
   - type: Clothing
     quickEquip: false
@@ -72,7 +72,7 @@
     sprite: Objects/Fun/Instruments/rockguitar.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/rockguitar.rsi
   - type: Clothing
     quickEquip: false
     - StringInstrument
   - type: Item
     sprite: Objects/Fun/Instruments/guitar.rsi
-    size: 24
+    size: Normal
   - type: Clothing
     quickEquip: false
     slots:
     sprite: Objects/Fun/Instruments/banjo.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/banjo.rsi
   - type: Tag
     tags:
     sprite: Objects/Fun/Instruments/violin.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/violin.rsi
   - type: Tag
     tags:
     sprite: Objects/Fun/Instruments/viola.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/viola.rsi
   - type: Tag
     tags:
     sprite: Objects/Fun/Instruments/cello.rsi
     state: icon
   - type: Item
-    size: 48
+    size: Normal
     sprite: Objects/Fun/Instruments/cello.rsi
   - type: Tag
     tags:
index 09db6133139630a906b8f246be1abc9e08dbebeb..afba6c27740360105127066e0123c9e3ceaccfe7 100644 (file)
@@ -16,7 +16,7 @@
     sprite: Objects/Fun/Instruments/saxophone.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/saxophone.rsi
   - type: Tag
     tags:
@@ -45,7 +45,7 @@
     sprite: Objects/Fun/Instruments/accordion.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/accordion.rsi
   - type: Tag
     tags:
@@ -62,7 +62,7 @@
     sprite: Objects/Fun/Instruments/harmonica.rsi
     state: icon
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Fun/Instruments/harmonica.rsi
   - type: Tag
     tags:
@@ -80,7 +80,7 @@
     sprite: Objects/Fun/Instruments/clarinet.rsi
     state: icon
   - type: Item
-    size: 20
+    size: Normal
     sprite: Objects/Fun/Instruments/clarinet.rsi
   - type: Tag
     tags:
@@ -98,7 +98,7 @@
     sprite: Objects/Fun/Instruments/flute.rsi
     state: icon
   - type: Item
-    size: 20
+    size: Normal
     sprite: Objects/Fun/Instruments/flute.rsi
   - type: Tag
     tags:
     sprite: Objects/Fun/Instruments/recorder.rsi
     state: icon
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/Instruments/recorder.rsi
   - type: Tag
     tags:
     sprite: Objects/Fun/Instruments/panflute.rsi
     state: icon
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Fun/Instruments/panflute.rsi
   - type: Tag
     tags:
     sprite: Objects/Fun/Instruments/ocarina.rsi
     state: icon
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Fun/Instruments/ocarina.rsi
   - type: Tag
     tags:
     sprite: Objects/Fun/Instruments/bagpipes.rsi
     state: icon
   - type: Item
-    size: 48
+    size: Normal
     sprite: Objects/Fun/Instruments/bagpipes.rsi
   - type: Tag
     tags:
-    - WoodwindInstrument
\ No newline at end of file
+    - WoodwindInstrument
index fc20f1a58dd229f108e22466b60c15acc372cf55..58b168e88241bdf3de190ab715a05fac5c5841d8 100644 (file)
@@ -9,7 +9,7 @@
     state: icon
   - type: Item
     sprite: Objects/Fun/bikehorn.rsi
-    size: 5
+    size: Tiny
   - type: Clothing
     sprite: Objects/Fun/bikehorn.rsi
     slots: [Belt]
@@ -58,7 +58,7 @@
     state: icon
   - type: Item
     sprite: Objects/Fun/cluwnehorn.rsi
-    size: 5
+    size: Tiny
   - type: Clothing
     sprite: Objects/Fun/cluwnehorn.rsi
     slots: [Belt]
     state: icon
   - type: Item
     sprite: Objects/Fun/goldbikehorn.rsi
-    size: 5
+    size: Tiny
   - type: Clothing
     sprite: Objects/Fun/goldbikehorn.rsi
     slots: [Belt]
     state: icon
   - type: Item
     sprite: Objects/Fun/bananiumhorn.rsi
-    size: 5
+    size: Tiny
   - type: Clothing
     sprite: Objects/Fun/bananiumhorn.rsi
     slots: [Belt]
index 3ed188bd8eca358a90b78a1f6e930ecee2e915ec..2ec93b9c9be9dff96f82032b177d6a372b39765d 100644 (file)
@@ -9,7 +9,7 @@
     sprite: Objects/Fun/crayons.rsi
   - type: Item
     sprite: Objects/Fun/crayons.rsi
-    size: 1
+    size: Tiny
   - type: Tag
     tags:
     - Write
     sprite: Objects/Fun/crayons.rsi
     state: box
   - type: Storage
-    capacity: 7
+    maxSlots: 7
+    maxTotalWeight: 7
   - type: Item
     sprite: Objects/Fun/crayons.rsi
-    size: 7
+    size: Small
     heldPrefix: box
   - type: StorageFill
     contents:
index bd4163d974eee261d665e8fa07dcbeeb79166775..34486ac93eb1b5ec2442ba5caeba3532cc7b41cb 100644 (file)
@@ -40,7 +40,7 @@
       types:
         Piercing: 4
   - type: Item
-    size: 2
+    size: Tiny
     sprite: Objects/Fun/Darts/dart_red.rsi
   - type: ItemCooldown
   - type: SolutionContainerManager
@@ -86,7 +86,7 @@
   - type: SolutionContainerVisuals
     maxFillLevels: 1
     fillBaseName: dart
-    
+
 - type: entity
   parent: Dart
   id: DartBlue
@@ -95,7 +95,7 @@
     sprite: Objects/Fun/Darts/dart_blue.rsi
   - type: Item
     sprite: Objects/Fun/Darts/dart_blue.rsi
-     
+
 - type: entity
   parent: Dart
   id: DartPurple
     sprite: Objects/Fun/Darts/dart_purple.rsi
   - type: Item
     sprite: Objects/Fun/Darts/dart_purple.rsi
-     
+
 - type: entity
   parent: Dart
   id: DartYellow
index 6903a0bcac480d2d3b6a03bcc20a67e963f39590..d2c33b90f0e726bff7e28564ac35ff2c000a55aa 100644 (file)
@@ -13,7 +13,7 @@
     tags:
     - Dice
   - type: Item
-    size: 2
+    size: Tiny
 
 - type: entity
   parent: BaseDice
index 8c3b5aea8b5d34cd5947ce8ec7c9c2c338b78215..f2d547dd8c85efba91c751f72a9f30abd7123801 100644 (file)
     sprite: Objects/Fun/dice.rsi
     state: dicebag
   - type: Item
+    size: Small
   - type: Storage
-    capacity: 18
+    maxTotalWeight: 8
     whitelist:
       tags:
-        - Dice
+      - Dice
 
 - type: entity
   parent: DiceBag
@@ -32,4 +33,4 @@
     sprite: Objects/Fun/dice.rsi
     state: magicdicebag
   - type: Storage
-    capacity: 30
+    maxTotalWeight: 20
index c0649d0acfaa8c764420b007706a91a8c89c2a5c..01a15d2e5bd2e7bedd166c88c44829eb2a0746ee 100644 (file)
@@ -14,7 +14,7 @@
   - type: DoAfter
   - type: VentriloquistPuppet
   - type: Item
-    size: 30
+    size: Normal
   - type: Muted
   - type: TypingIndicator
     proto: robot
index 1b601c9f95e76f572b6c657750d85a6ea306f8a7..49ef8faddde36a79fb1e3d56155f06a6907791ec 100644 (file)
   components:
   - type: Sprite
   - type: Item
-    size: 24
+    size: Normal
 
 - type: entity
   parent: FoamWeaponBase
     sprite: Objects/Fun/toys.rsi
     state: foamcrossbow
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/toys.rsi
     heldPrefix: foamcrossbow
   - type: Gun
       types:
         Blunt: 0
   - type: Item
-    size: 20
+    size: Small
     sprite: Objects/Fun/toys.rsi
     heldPrefix: foamblade
   - type: ItemCooldown
     sound:
       path: /Audio/Effects/Footsteps/bounce.ogg
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/toys.rsi
     heldPrefix: bask
   - type: TileFrictionModifier
     sprite: Objects/Fun/toys.rsi
     state: football
   - type: Item
-    size: 12
+    size: Small
     sprite: Objects/Fun/toys.rsi
     heldPrefix: footb
 
     sound:
       path: /Audio/Effects/Footsteps/bounce.ogg
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/toys.rsi
     heldPrefix: beachb
   - type: TileFrictionModifier
     sprite: Objects/Fun/toys.rsi
     state: synb
   - type: Item
-    size: 24
+    size: Small
     sprite: Objects/Fun/toys.rsi
     heldPrefix: synb
   - type: Damageable
     sprite: Objects/Fun/toys.rsi
     state: corgib
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/toys.rsi
     heldPrefix: corgib
   - type: Damageable
     intensity: 2000
     falloffPower: 2.6
   - type: Item
-    size: 12
+    size: Small
     sprite: Objects/Fun/toys.rsi
     heldPrefix: singularitytoy
 
     radius: 2
     color: "#00CCFF"
   - type: Item
-    size: 24
+    size: Normal
     sprite: Objects/Fun/toys.rsi
     heldPrefix: orb
   - type: TileFrictionModifier
           shader: unshaded
           map: [ "blade" ]
     - type: Item
-      size: 5
+      size: Small
       sprite: Objects/Weapons/Melee/e_sword.rsi
     - type: UseDelay
       delay: 1.0
       types:
         Blunt: 0
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Weapons/Melee/cutlass.rsi
 
 - type: entity
     - type: StaminaDamageOnHit
       damage: 8
     - type: Item
-      size: 5
+      size: Small
       sprite: Objects/Fun/rubber_hammer.rsi
     - type: Appearance
     - type: DisarmMalus
index 2c1a8e628d31228fd0b56823ac15a7c1a2229af7..898d2c37c16691d05a9a97213d4d3c6efe03292c 100644 (file)
@@ -9,7 +9,7 @@
     sprite: Objects/Materials/Sheets/glass.rsi
   - type: Item
     sprite: Objects/Materials/Sheets/glass.rsi
-    size: 30
+    size: Normal
   - type: StaticPrice
     price: 0
   - type: Tag
@@ -83,8 +83,6 @@
   - type: Stack
     stackType: Glass
     count: 10
-  - type: Item
-    size: 10
 
 - type: entity
   parent: SheetGlass
   - type: Stack
     stackType: Glass
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: SheetGlass
   id: SheetGlassLingering0
   suffix: Lingering, 0
   components:
-  - type: Item
-    size: 0
   - type: Stack
     lingering: true
     count: 0
   - type: Stack
     stackType: ReinforcedGlass
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: SheetGlassBase
       map: ["base"]
   - type: Item
     heldPrefix: pglass
-    size: 30
   - type: Construction
     graph: Glass
     node: SheetPGlass
   - type: Stack
     stackType: PlasmaGlass
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: SheetPGlass
   - type: Stack
     stackType: ReinforcedPlasmaGlass
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: SheetGlassBase
   - type: Stack
     stackType: UraniumGlass
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: SheetUGlass
   - type: Stack
     stackType: ReinforcedUraniumGlass
     count: 1
-  - type: Item
-    size: 1
index 69b7f83ddb539aa2b90291388eafb8835197f788..99c7ae0e117c3db5e83c4b412dd39d35a7c33106 100644 (file)
@@ -8,7 +8,7 @@
     sprite: Objects/Materials/Sheets/metal.rsi
   - type: Item
     sprite: Objects/Materials/Sheets/metal.rsi
-    size: 30
+    size: Normal
   - type: StaticPrice
     price: 0
   - type: Tag
@@ -75,8 +75,6 @@
   name: steel
   suffix: 10
   components:
-  - type: Item
-    size: 10
   - type: Sprite
     state: steel
   - type: Stack
@@ -89,8 +87,6 @@
   name: steel
   suffix: Single
   components:
-  - type: Item
-    size: 1
   - type: Sprite
     state: steel
   - type: Stack
   id: SheetSteelLingering0
   suffix: Lingering, 0
   components:
-  - type: Item
-    size: 0
   - type: Stack
     lingering: true
     count: 0
   - type: Stack
     stackType: Plasteel
     count: 10
-  - type: Item
-    size: 10
 
 - type: entity
   parent: SheetPlasteel
   - type: Stack
     stackType: Plasteel
     count: 1
-  - type: Item
-    size: 1
index 3cb6f027a9e0de1486a4bee23bb3d1163cd0d9aa..ed1a1e3da0c871a6492de71b0386feeff8494cb3 100644 (file)
@@ -8,7 +8,7 @@
     sprite: Objects/Materials/Sheets/other.rsi
   - type: Item
     sprite: Objects/Materials/Sheets/other.rsi
-    size: 30
+    size: Normal
   - type: Tag
     tags:
     - Sheet
@@ -56,8 +56,6 @@
     state: paper
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: SheetOtherBase
     state: plasma
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: SheetOtherBase
       map: ["base"]
   - type: Item
     heldPrefix: plastic
-    size: 30
   - type: Appearance
 
 - type: entity
   components:
   - type: Sprite
     state: plastic
-  - type: Item
-    size: 10
   - type: Stack
     count: 10
 
   components:
   - type: Sprite
     state: plastic
-  - type: Item
-    size: 1
   - type: Stack
     count: 1
 
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: SheetOtherBase
       state: meat
     - type: Stack
       count: 1
-    - type: Item
-      size: 1
index 61aefee3329bb79fcfb594ebfe417d6ede02ad20..d383a7266d51c2cb7e1eeb0a3b4e76e9b4959d0d 100644 (file)
@@ -8,7 +8,7 @@
     sprite: Objects/Materials/ingots.rsi
   - type: Item
     sprite: Objects/Materials/ingots.rsi
-    size: 30
+    size: Normal
   - type: StaticPrice
     price: 0
   - type: Tag
@@ -62,8 +62,6 @@
     state: gold
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: IngotBase
@@ -99,7 +97,3 @@
   components:
   - type: Sprite
     state: silver
-  - type: Stack
-    count: 1
-  - type: Item
-    size: 1
index 7386eaee4d3b83b19678a47fda606139468fbbe3..4af2886c24554a0c03530c6c1c4fd1ae5ad0bc91 100644 (file)
@@ -8,7 +8,7 @@
     sprite: Objects/Materials/materials.rsi
   - type: Item
     sprite: Objects/Materials/materials.rsi
-    size: 30
+    size: Normal
   - type: Tag
     tags:
       - DroneUsable
@@ -47,8 +47,6 @@
     - state: cardboard_3
       map: ["base"]
   - type: Appearance
-  - type: Item
-    size: 30
 
 - type: entity
   parent: MaterialCardboard
@@ -59,8 +57,6 @@
     state: cardboard
   - type: Stack
     count: 10
-  - type: Item
-    size: 10
 
 - type: entity
   parent: MaterialCardboard
@@ -71,8 +67,6 @@
     state: cardboard
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: MaterialBase
     - state: cloth_3
       map: ["base"]
   - type: Appearance
-  - type: Item
-    size: 30
   - type: Food
     requiresSpecialDigestion: true
   - type: SolutionContainerManager
     state: cloth
   - type: Stack
     count: 10
-  - type: Item
-    size: 10
 
 - type: entity
   parent: MaterialCloth
     state: cloth
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: MaterialBase
     state: durathread
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: MaterialBase
   components:
   - type: Stack
     count: 10
-  - type: Item
-    size: 10
 
 - type: entity
   parent: MaterialWoodPlank
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: MaterialBase
   - type: GuideHelp
     guides:
     - Cloning
-  - type: Item
-    size: 100
 
 - type: entity
   parent: MaterialBiomass
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 # Following not used currently
 - type: entity
     state: diamond
   - type: Item
     heldPrefix: diamond
-    size: 60
 
 - type: entity
   parent: MaterialDiamond
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 2
 
 - type: entity
   parent: MaterialBase
     - state: cotton_3
       map: ["base"]
   - type: Appearance
-  - type: Item
-    size: 30
   - type: Food
     requiresSpecialDigestion: true
   - type: SolutionContainerManager
     state: cotton
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: MaterialBase
       - ReagentId: Honk
         Quantity: 5
   - type: Appearance
-  - type: Item
-    size: 20
 
 - type: entity
   parent: MaterialBananium
     state: bananium
   - type: Stack
     count: 1
-  - type: Item
-    size: 2
 
 - type: entity
   parent: MaterialBase
   - type: Stack
     count: 50
     stackType: WebSilk
-  - type: Item
-    size: 50
   - type: Food
     requiresSpecialDigestion: true
   - type: FlavorProfile
   components:
   - type: Stack
     count: 25
-  - type: Item
-    size: 25
 
 - type: entity
   parent: MaterialWebSilk
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: MaterialBase
     - state: cotton_3
       map: ["base"]
   - type: Appearance
-  - type: Item
-    size: 30
   - type: Food
   - type: BadFood
   - type: SolutionContainerManager
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
index f27d1b770ee9c85433f02c560267d4f7dab64925..2b6fec873b8084499f95586db6ae3e740c9c4114 100644 (file)
@@ -8,7 +8,7 @@
     sprite: Objects/Materials/ore.rsi
   - type: Item
     sprite: Objects/Materials/ore.rsi
-    size: 60
+    size: Normal
   - type: Tag
     tags:
     - Ore
@@ -57,8 +57,6 @@
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 2
 
 - type: entity
   parent: OreBase
@@ -82,8 +80,6 @@
   components:
     - type: Stack
       count: 1
-    - type: Item
-      size: 2
 
 - type: entity
   parent: OreBase
   components:
     - type: Stack
       count: 1
-    - type: Item
-      size: 2
 
 - type: entity
   parent: OreBase
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 2
 
 - type: entity
   parent: OreBase
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 2
 
 - type: entity
   parent: OreBase
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 2
-
 
 - type: entity
   parent: OreBase
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 2
index e75704c2a4336365864f7c84474b2fd8b2d41fbf..7529bdee04fd8f0f43935dd0e8ba17a04db7338e 100644 (file)
@@ -44,7 +44,7 @@
     - state: rods_5
       map: ["base"]
   - type: Item
-    size: 30
+    size: Normal
 #    heldPrefix: rods
   - type: Construction
     graph: MetalRod
@@ -73,8 +73,6 @@
     state: rods
   - type: Stack
     count: 10
-  - type: Item
-    size: 10
 
 - type: entity
   parent: PartRodMetal
     state: rods
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: PartRodMetal
   id: PartRodMetalLingering0
   suffix: Lingering, 0
   components:
-  - type: Item
-    size: 0
   - type: Stack
     lingering: true
     count: 0
index affd08edb1a833a740ceb5bda7e6d8ef8ad9438a..8129ab2116c2587dc30826744891c8563203620a 100644 (file)
@@ -26,7 +26,7 @@
         Slash: 3.5
   - type: Item
     sprite: Objects/Materials/Shards/shard.rsi
-    size: 4
+    size: Tiny
   - type: CollisionWake
     enabled: false
   - type: Fixtures
index 6c6f2d484ed4121d6b914fe5d46bd7f31660fb2a..2945c4f68e7e25b932e0c0d6d7845865b5043043 100644 (file)
@@ -13,7 +13,7 @@
     sprite: Objects/Misc/bedsheets.rsi
     noRot: true
   - type: Item
-    size: 10
+    size: Small
   - type: Clothing
     quickEquip: true
     slots:
index 59a2abd5662c92bbdff5763ae94e53213d34968e..b2c63f14a96c30c5e9991ec1a35fff62bbcda09f 100644 (file)
@@ -7,9 +7,9 @@
     sprite: Objects/Storage/boxes.rsi
   - type: Item
     sprite: Objects/Storage/boxes.rsi
-    size: 30
+    size: Normal
   - type: Storage
-    capacity: 30
+    maxTotalWeight: 12
   - type: ContainerContainer
     containers:
       storagebase: !type:Container
index 1866d3513e031d77b2e38709a2837acc493d43f0..ebf776a7b1e1da899959635dee13a1cdf4582775 100644 (file)
@@ -5,9 +5,10 @@
   description: Useful for carrying items in your hands.
   components:
   - type: Item
-    size: 60
+    size: Large
   - type: Storage
-    capacity: 60
+    maxSlots: 4
+    maxTotalWeight: 16
   - type: Tag
     tags:
     - Briefcase
     sprite: Objects/Storage/Briefcases/briefcase_brown.rsi
 
 - type: entity
-  parent: BaseStorageItem
+  parent: BriefcaseBase
   abstract: true
   id: BriefcaseSyndieBase
   suffix: Syndicate, Empty
   description: Useful for carrying items in your hands.
   components:
   - type: Item
-    size: 80
+    size: Large
   - type: Storage
-    capacity: 80
+    maxSlots: 6
+    maxTotalWeight: 24
   - type: Tag
     tags:
     - Briefcase
index f53e39e3645a97867fd0452db9b37fe64434347e..c2357ed3c8cad0886f0b782a820b181bbf8ebddc 100644 (file)
@@ -14,7 +14,7 @@
         Structural: 2
     animation: WeaponArcPunch
   - type: Item
-    size: 5
+    size: Small
   - type: PointLight
     radius: 1.5
     energy: 3
index a90f598a5dd83954b2ed327ae9a16d2aac252287..0697281a0ff289b1ac567f58ac322ac7a7aa3c6f 100644 (file)
@@ -11,7 +11,7 @@
           map: [ "enabled" ]
   - type: Item
     sprite: Objects/Misc/fire_extinguisher.rsi
-    size: 10
+    size: Small
   - type: SolutionContainerManager
     solutions:
       spray:
index 77b321f9513437ebd38754d0b15ece0d27bb3b14..1b925b5cb081f4d8942a72c46c37a4f88037ab46 100644 (file)
@@ -38,7 +38,7 @@
     sprite: Objects/Misc/Lights/lights.rsi
   - type: Item
     sprite: Objects/Misc/Lights/lights.rsi
-    size: 20
+    size: Normal
     heldPrefix: off
   - type: PointLight
     enabled: false
   description: A pole with powerful mounted lights on it.
   components:
   - type: Item
-    size: 50
+    size: Normal
   - type: Sprite
     layers:
       - state: floodlight
index befd24f36e19ce401b527f1c0c8ca398949dc0d9..4f2199bfa89825fdc226396f06530c7451d32783 100644 (file)
@@ -5,7 +5,7 @@
   parent: BaseItem
   components:
   - type: Item
-    size: 3
+    size: Small
   - type: Handcuff
     cuffedRSI: Objects/Misc/handcuffs.rsi
     bodyIconState: body-overlay
@@ -31,8 +31,6 @@
   id: Cablecuffs
   parent: Handcuffs
   components:
-  - type: Item
-    size: 5
   - type: Handcuff
     breakoutTime: 15
     cuffedRSI: Objects/Misc/cablecuffs.rsi
@@ -65,7 +63,7 @@
   parent: Handcuffs
   components:
   - type: Item
-    size: 2
+    size: Tiny
   - type: Handcuff
     breakoutTime: 20  # halfway between improvised cablecuffs and metal ones
     cuffedRSI: Objects/Misc/cablecuffs.rsi  # cablecuffs will look fine
@@ -92,7 +90,7 @@
   abstract: true
   components:
   - type: Item
-    size: 2
+    size: Tiny
   - type: Tag
     tags:
     - Trash
   description: Used to restrain those who may cause harm to themselves or others.
   components:
   - type: Item
-    size: 20
+    size: Normal
   - type: Handcuff
     cuffedRSI: Clothing/OuterClothing/Misc/straight_jacket.rsi
     breakoutTime: 100
index d1441c341bc62ce94a35b722a899916e98827fb7..7047042f04fd26a96f8bd3632e47b004d10e9c99 100644 (file)
@@ -12,6 +12,7 @@
     - idcard
     sprite: Objects/Misc/id_cards.rsi
   - type: Item
+    size: Small
     heldPrefix: default
   - type: Access
   - type: IdCard
index 0ca029a12096b6cf46ea13ae0ca1757bece1cb83..6168fb9a5a03be549a42b481a985da0e9c4daea3 100644 (file)
@@ -97,7 +97,7 @@
   components:
     - type: Item
       sprite: Objects/Specific/Medical/syndi_implanter.rsi
-      size: 3
+      size: Tiny
     - type: Sprite
       sprite: Objects/Specific/Medical/syndi_implanter.rsi
       state: implanter1
index d94193e49a16c5eedd9a94ec6a7c934257c55041..abf4e0974a6264680a51d985dd741196d4df8639 100644 (file)
@@ -2,12 +2,12 @@
 #TODO: Assimilate these into the same RSI.
 - type: entity
   parent: BaseItem
-  id: ModularReceiver 
-  name: modular receiver 
+  id: ModularReceiver
+  name: modular receiver
   description: A vital part used in the creation of firearms. #Could use a better description, but I'm not a gun nut so I can't really do that.
   components:
 #    - type: Item
-#      size: 15
+#      size: Normal
     - type: Sprite
       sprite: Objects/Misc/modular_receiver.rsi
       state: icon
@@ -23,7 +23,7 @@
   description: A robust wooden stock, used in the creation of firearms. #Same as above
   components:
 #    - type: Item
-#      size: 25
+#      size: Normal
     - type: Sprite
       sprite: Objects/Misc/rifle_stock.rsi
       state: icon
index be1f4f65eeafe933f113b3a314bca10912a143df..c38239a08d18944741ed2e747165aded1902358c 100644 (file)
@@ -8,7 +8,7 @@
     - type: Sprite
       sprite: Objects/Misc/stock_parts.rsi
     - type: Item
-      size: 1
+      size: Tiny
     - type: GuideHelp
       guides:
       - MachineUpgrading
index 64c11d5a2ffd2e704cf5ad0e910bfffd972f662e..d1ceae2c605374e58237392dcdf1d86c12a62466 100644 (file)
@@ -9,9 +9,10 @@
     state: icon
   - type: Item
     sprite: Objects/Storage/medalcase.rsi
-    size: 80
+    size: Normal
   - type: Storage
-    capacity: 80
+    maxSlots: 8
+    maxTotalWeight: 16
   - type: StorageFill
     contents:
     - id: ClothingNeckGoldmedal
index 32ad0552c00f2e4c29d5825581b78090b1ad395c..fcf47d713da2f71be71df21b1859165bf7fc522f 100644 (file)
@@ -8,7 +8,6 @@
     whitelist:
       tags:
       - MonkeyCube
-    capacity: 30
   - type: StorageFill
     contents:
       - id: MonkeyCubeWrapped
@@ -47,7 +46,6 @@
     whitelist:
       tags:
       - MonkeyCube
-    capacity: 30
   - type: StorageFill
     contents:
       - id: SyndicateSpongeWrapped
index 132d6b7aff91be95be4626aa1fb746fa89384229..99dc9c07c669c7e907aa4aedd234bcfbb310a39d 100644 (file)
@@ -23,7 +23,7 @@
     - key: enum.PaperUiKey.Key
       type: PaperBoundUserInterface
   - type: Item
-    size: 1
+    size: Tiny
   - type: Tag
     tags:
     - Document
   - type: Item
     sprite: Objects/Misc/bureaucracy.rsi
     heldPrefix: pen
-    size: 2
+    size: Tiny
   - type: PhysicalComposition
     materialComposition:
       Steel: 25
   - type: Item
     sprite: Objects/Misc/bureaucracy.rsi
     heldPrefix: overpriced_pen
-    size: 2
+    size: Tiny
 
 - type: entity
   name: captain's fountain pen
 #      black: "#3f3f3f"
   - type: Item
     sprite: Objects/Misc/bureaucracy.rsi
-    size: 5
+    size: Small
   - type: Storage
-    capacity: 10
+    maxSlots: 10
+    maxItemSize: Small
+    maxTotalWeight: 20
     whitelist:
       tags:
         - Document
         insertOnInteract: false
   - type: Item
     sprite: Objects/Misc/clipboard.rsi
-    size: 10
+    size: Small
   - type: Clothing
     slots: [belt]
     quickEquip: false
     sprite: Objects/Misc/clipboard.rsi
   - type: Storage
-    capacity: 20
+    maxSlots: 15
+    maxTotalWeight: 30
     whitelist:
       tags:
         - Document
         insertOnInteract: true
   - type: Item
     sprite: Objects/Misc/qm_clipboard.rsi
-    size: 30
+    size: Normal
   - type: Clothing
     slots: [belt]
     quickEquip: false
     sprite: Objects/Misc/qm_clipboard.rsi
   - type: Storage
-    capacity: 90
+    maxSlots: 20
     quickInsert: true
     whitelist:
       tags:
     sprite: Objects/Misc/bureaucracy.rsi
     state: stamp-mime
   - type: Item
-    size: 3
+    size: Tiny
 
 - type: entity
   name: alternate rubber stamp
index 528aa30a148841c283f6cdbb3f8ca354e9265760..0f871831e2bf5c1eb9c831f954a081857d557c87 100644 (file)
@@ -8,10 +8,10 @@
       sprite: Objects/Misc/potatoai_chip.rsi
       state: icon
     - type: Item
-      size: 3
+      size: Tiny
     - type: Tag
       tags:
         - SmallAIChip
     - type: Construction
       graph: PotatoAIChip
-      node: potatoaichip
\ No newline at end of file
+      node: potatoaichip
index bc7a3a38ad307a406ddf19b81e83c686b9f8a857..25c9e7fc587bd22fbc41eb8e524cf207934d0ba1 100644 (file)
         components:
         - Hands # no use giving a mouse a storage implant, but a monkey is another story...
     - type: Item
-      size: 9999
+      size: Huge
     - type: Storage
-      capacity: 20 #10-20 should be more than enough for this
+      maxSlots: 4
+      maxItemSize: Small
     - type: ContainerContainer
       containers:
         storagebase: !type:Container
index 6b5e17a211f7b9f490aa0543347dd9a42d260a9c..ba85154d8f65c5b5f1cdde61ba2044f5876be1e8 100644 (file)
@@ -8,6 +8,7 @@
     sprite: Objects/Tiles/tile.rsi
   - type: Item
     sprite: Objects/Tiles/tile.rsi
+    size: Normal
   - type: DamageOtherOnHit
     damage:
       types:
index 8267903dbb8a0f6cd057e9c763015010810b4036..22e5b9bb3cf2b2724fa105e9dcb1da10d57a043a 100644 (file)
@@ -5,7 +5,7 @@
   description: A hermetically sealed jar containing antimatter for use in an antimatter reactor.
   components:
   - type: Item
-    size: 5
+    size: Normal
     sprite: Objects/Power/AME/ame_jar.rsi
   - type: Sprite
     sprite: Objects/Power/AME/ame_jar.rsi
index a393cad6176985952003b25d999f313cd6018eef..7d428bcc5a96ce285289076a4a222e61f4162101 100644 (file)
@@ -5,7 +5,7 @@
   description: A flatpack used for constructing an antimatter engine reactor. Use a multitool to unpack it.
   components:
   - type: Item
-    size: 5
+    size: Small
     sprite: Objects/Power/AME/ame_part.rsi
   - type: Sprite
     sprite: Objects/Power/AME/ame_part.rsi
index 9317dd741fff8d87593fbaae23e293715757d720..c8684323a9046b5e6944a924e37f20941bacf20e 100644 (file)
@@ -5,7 +5,7 @@
   description: Drains immense amounts of electricity from the grid.
   components:
     - type: Item
-      size: 150
+      size: Large
     - type: NodeContainer
       examinable: true
       nodes:
index ff333b93c2b942e1534464a44ffe8075f9810266..5b3f5e90ce1d4b1509d346bbd717fea89e3dccdb 100644 (file)
@@ -4,7 +4,7 @@
   name: solar assembly part
   components:
   - type: Item
-    size: 10
+    size: Small
   - type: Sprite
     sprite: Objects/Power/solar_parts.rsi
     state: solar_assembly_parts
index 8afe40bfe72db2aa3e90a311c6434ee412975abc..76a8e576a5a421e1985d209509aea27d2f65ac79 100644 (file)
@@ -10,7 +10,7 @@
       state: riot-icon
     - type: Item
       sprite: Objects/Weapons/Melee/shields.rsi
-      size: 100
+      size: Huge
       heldPrefix: riot
     - type: Blocking
       passiveBlockModifier:
         path: /Audio/Weapons/ebladeon.ogg
       deActivateSound:
         path: /Audio/Weapons/ebladeoff.ogg
-      offSize: 5
+      offSize: Small
     - type: Sprite
       sprite: Objects/Weapons/Melee/e_shield.rsi
       layers:
           shader: unshaded
           map: [ "shield" ]
     - type: Item
-      size: 5
+      size: Small
       sprite: Objects/Weapons/Melee/e_shield.rsi
       heldPrefix: eshield
     - type: UseDelay
       state: eshield-icon
     - type: Item
       sprite: Objects/Weapons/Melee/e_shield.rsi
-      size: 5
+      size: Small
       heldPrefix: eshield
 
 - type: entity
         path: /Audio/Weapons/telescopicoff.ogg
         params:
           volume: -5
-      offSize: 10
+      offSize: Small
     - type: Sprite
       sprite: Objects/Weapons/Melee/teleriot_shield.rsi
       layers:
           visible: false
           map: [ "shield" ]
     - type: Item
-      size: 10
+      size: Small
       sprite: Objects/Weapons/Melee/teleriot_shield.rsi
       heldPrefix: teleriot
     - type: UseDelay
index 19414d09973ce2341d743479bfb11b0fd1e7f142..3e72257d5cb4d99a6cadce5169cdc00dc72492d8 100644 (file)
     sprite: Objects/Specific/Chapel/bible.rsi
     state: icon
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Specific/Chapel/bible.rsi
   - type: Clothing
     slots:
     - Belt
   - type: Storage
-    capacity: 10
+    maxSlots: 1
   - type: UserInterface
     interfaces:
     - key: enum.StorageUiKey.Key
@@ -74,7 +74,7 @@
     sprite: Objects/Specific/Chapel/necronomicon.rsi
     state: icon
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Specific/Chapel/necronomicon.rsi
   - type: Clothing
     slots:
index 8be5fecb4f127a705939f1c3dd29d2b7e2405600..597f48744cb4bc3c064968b22c99c966f1ddc760 100644 (file)
@@ -13,9 +13,9 @@
     slots:
     - belt
   - type: Item
-    size: 46
+    size: Normal
   - type: Storage
-    capacity: 45
+    maxSlots: 40
     quickInsert: true
     areaInsert: true
     whitelist:
index a3abd4f1e35dee710432788f904853ae1fc7f5c7..b7627e1016bed4780792d5eb52ac2e6b2a90d9f7 100644 (file)
@@ -5,7 +5,7 @@
   description: A forensic pad for collecting fingerprints or fibers.
   components:
   - type: Item
-    size: 3
+    size: Tiny
   - type: ForensicPad
   - type: Sprite
     sprite: Objects/Misc/bureaucracy.rsi
index 6da11b53fb51ffb49671228c61d64cf7cec26c5a..8e26898daad029b9771e7fd60d9e3b6bee38c576 100644 (file)
@@ -63,7 +63,7 @@
     tags:
       - Smokable
   - type: Item
-    size: 1
+    size: Tiny
 
 - type: entity
   name: tobacco leaves
     tags:
       - Smokable
   - type: Item
-    size: 1
+    size: Tiny
index 2462c601e424b17cd3a56f572ee39a69705060e6..a851ce2626cf41bf8400257dc218d303f7e57dc0 100644 (file)
@@ -8,7 +8,7 @@
       sprite: Objects/Specific/Hydroponics/seeds.rsi
       state: seed
     - type: Item
-      size: 2
+      size: Tiny
     - type: StaticPrice
       price: 20
 
       seedId: watermelon
     - type: Sprite
       sprite: Objects/Specific/Hydroponics/watermelon.rsi
-      
+
 - type: entity
   parent: SeedBase
   name: packet of grape seeds
       seedId: bungo
     - type: Sprite
       sprite: Objects/Specific/Hydroponics/bungo.rsi
-      
+
 - type: entity
   parent: SeedBase
   name: packet of pumpkin seeds
index c939cc9ca1cfd49c8d55ec9b4d3616112dd289b4..026c47f176532e6bef5a370cf4da6600393e05bc 100644 (file)
@@ -59,7 +59,7 @@
       types:
         Slash: 10
   - type: Item
-    size: 20
+    size: Normal
   - type: Clothing
     sprite: Objects/Tools/Hydroponics/scythe.rsi
     slots:
   - type: Sprite
     sprite: Objects/Specific/Hydroponics/Equipment/plant_bag.rsi
     state: icon
-  - type: Item
   - type: Clothing
     quickEquip: false
     slots:
     - belt
   - type: Storage
-    capacity: 200
+    maxSlots: 40
+    maxItemSize: Small
     quickInsert: true
     areaInsert: true
     whitelist:
index 333c17b21715de8da3ed38085d77e58c71cb43af..d865dd172f1c76158b91bd32471b66eb305bc483 100644 (file)
@@ -20,7 +20,7 @@
       types:
         Blunt: 5
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Specific/Janitorial/mop.rsi
   - type: Absorbent
   - type: SolutionContainerManager
@@ -59,7 +59,7 @@
         types:
           Blunt: 5
     - type: Item
-      size: 15
+      size: Normal
       sprite: Objects/Specific/Janitorial/advmop.rsi
     - type: Absorbent
       pickupAmount: 100
     sprite: Objects/Specific/Janitorial/wet_floor_sign.rsi
   - type: Item
     sprite: Objects/Specific/Janitorial/wet_floor_sign.rsi
-    size: 15
+    size: Normal
   - type: Armor
     modifiers:
       coefficients:
         types:
           Blunt: 0
     - type: Item
-      size: 10
+      size: Small
       sprite: Objects/Specific/Janitorial/rag.rsi
     - type: Absorbent
       pickupAmount: 15
index 80aace05e734c42dd5c25f2f381020c1d4abdc59..7f61cf69d4b88ef1cca541271e10e35197f2dfe0 100644 (file)
@@ -9,7 +9,8 @@
       - state: icon-0
         map: ["enum.StorageFillLayers.Fill"]
   - type: Storage
-    capacity: 125
+    maxTotalWeight: 48
+    maxItemSize: Small
     quickInsert: true
     areaInsert: true
     storageOpenSound:
@@ -33,7 +34,7 @@
     slots: [belt]
     sprite: Objects/Specific/Janitorial/trashbag.rsi
   - type: Item
-    size: 125
+    size: Normal
 
 - type: entity
   name: trash bag
@@ -55,7 +56,9 @@
   parent: TrashBagBlue
   components:
   - type: Storage
-    capacity: 125000
+    maxSlots: 100
+    maxItemSize: Huge
+    maxTotalWeight: 200
     quickInsert: true
     areaInsert: true
     areaInsertRadius: 1000
index 22faf499f11aacd2a214cd94e80ad22f3b6ed490..20ec7354fb81eac881682bcc26d9716266f2aa4c 100644 (file)
       - key: enum.StorageUiKey.Key
         type: StorageBoundUserInterface
     - type: Storage
-      capacity: 30
     - type: TileFrictionModifier
-      modifier: 0.4 # makes it slide 
-    
+      modifier: 0.4 # makes it slide
+
 # Add this if freezing/heating container/objects thermodynamics becomes a thing
 
     #- type: PowerCellSlot
@@ -63,7 +62,7 @@
     #    cell_slot:
     #      name: power-cell-slot-component-slot-name-default
     #      startingItem: PowerCellMedium
-  
+
 - type: entity
   name: Hot Food Cart
   id: FoodCartHot
     - type: Sprite
       netSync: false
       noRot: true
-      sprite: Objects/Specific/Kitchen/food_carts.rsi 
+      sprite: Objects/Specific/Kitchen/food_carts.rsi
       layers:
         - state: stand-food
     - type: Storage
-      blacklist: 
+      blacklist:
         tags:
           - Coldsauce
           - Hotsauce
           whitelist:
             tags:
               - Hotsauce
-          priority: 5 
+          priority: 5
         bbqsauce_slot:
           name: BBQ Sauce
           insertSound: /Audio/Items/bottle_clunk.ogg
           whitelist:
             tags:
               - BBQsauce
-          priority: 4  
+          priority: 4
         ketchup_slot:
           name: Ketchup
           insertSound: /Audio/Items/bottle_clunk.ogg
           whitelist:
             tags:
               - Ketchup
-          priority: 3 
+          priority: 3
     - type: ItemMapper
       mapLayers:
         cart_hotsauce:
     - type: Sprite
       netSync: false
       noRot: true
-      sprite: Objects/Specific/Kitchen/food_carts.rsi 
+      sprite: Objects/Specific/Kitchen/food_carts.rsi
       layers:
         - state: stand-ice
     - type: ContainerContainer
index 2ad28399a665f6f449bdf472b5093f64eafdc71e..a2675ffaaf81a3c10dd69504d2572a603af2f3b5 100644 (file)
@@ -13,9 +13,9 @@
       slots:
         - belt
     - type: Item
-      size: 151
+      size: Huge
     - type: Storage
-      capacity: 150
+      maxSlots: 15
       quickInsert: true
       areaInsert: true
       whitelist:
index 678cd5ea1226979579539ade84c2a30a26d68b2c..a79e6e9037a8691cb851ebc5cc5c75f73a1d66c4 100644 (file)
@@ -44,7 +44,7 @@
   abstract: true
   components:
   - type: Item
-    size: 50
+    size: Huge
 
 - type: entity
   parent: BaseRipleyPart
   abstract: true
   components:
   - type: Item
-    size: 50
+    size: Huge
 
 - type: entity
   parent: BaseHonkerPart
   abstract: true
   components:
   - type: Item
-    size: 50
+    size: Large
 
 - type: entity
   parent: BaseHamtrPart
   abstract: true
   components:
   - type: Item
-    size: 10
+    size: Small
 
 - type: entity
   parent: BaseVimPartItem
index 8539c473b933e3f0c8000e342b9f3e7d68d4990e..ac550b8e61919a1e6cd2affc8c5dd4c4e226af56 100644 (file)
@@ -7,7 +7,7 @@
     sprite: Objects/Specific/Mech/mecha_equipment.rsi
   - type: Item
     sprite: Objects/Specific/Mech/mecha_equipment.rsi
-    size: 50
+    size: Huge
   - type: MechEquipment
   - type: GuideHelp
     guides:
index a69147b610dc557a982acb244a5d59cc4945be5f..74b0cbb0d916a073c1d8ee7b11093a2c534eef68 100644 (file)
@@ -28,7 +28,7 @@
             True: { visible: true }
             False: { visible: false }
     - type: Item
-      size: 50
+      size: Normal
     - type: ItemCooldown
     - type: Speech
       speechVerb: Robotic
index 9c67cbb28c2b5d9b1cd738c375aab721a0f222e0..b85f7087773cef877c4151e2ae41a14995201063 100644 (file)
@@ -5,7 +5,7 @@
   description: Used for taking and transfering samples. Sterile until open. Single use only.
   components:
   - type: Item
-    size: 1
+    size: Tiny
   - type: Sprite
     sprite: Objects/Specific/Medical/mouth_swab.rsi
     state: icon
@@ -26,7 +26,7 @@
   description: Prevents people who DON'T already have a disease from catching it.
   components:
   - type: Item
-    size: 3
+    size: Tiny
   - type: Sprite
     sprite: Objects/Specific/Medical/medipen.rsi
     state: salpen
index 5083ae4a443651e1840ebfd3d709385ecc27f250..88b7401f74915daa278296c976ead808eee746f8 100644 (file)
@@ -6,7 +6,7 @@
   - type: Sprite
     sprite: Objects/Specific/Medical/medical.rsi
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Specific/Medical/medical.rsi
     heldPrefix: ointment
   # Inherited
@@ -54,8 +54,6 @@
   - type: Stack
     stackType: Ointment
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   id: Ointment10Lingering
   - type: Stack
     stackType: RegenerativeMesh
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   name: bruise pack
   - type: Stack
     stackType: Brutepack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   id: Brutepack10Lingering
   - type: Stack
     stackType: MedicatedSuture
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   name: blood pack
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   id: Gauze10Lingering
         - ReagentId: Dexalin
           Quantity: 10
 
+- type: entity
+  parent: PillCanister
+  id: PillCanisterDexalin
+  suffix: Dexalin, 7
+  components:
+  - type: StorageFill
+    contents:
+    - id: PillDexalin
+      amount: 7
+
 - type: entity
   name: dylovene pill (10u)
   parent: Pill
         - ReagentId: Dylovene
           Quantity: 10
 
+- type: entity
+  parent: PillCanister
+  id: PillCanisterDylovene
+  suffix: Dylovene, 5
+  components:
+  - type: StorageFill
+    contents:
+    - id: PillDylovene
+      amount: 5
+
 - type: entity
   name: hyronalin pill (10u)
   parent: Pill
         - ReagentId: Hyronalin
           Quantity: 10
 
+- type: entity
+  parent: PillCanister
+  id: PillCanisterHyronalin
+  suffix: Hyronalin, 5
+  components:
+  - type: StorageFill
+    contents:
+    - id: PillHyronalin
+      amount: 5
+
 - type: entity
   name: iron pill (10u)
   parent: Pill
         - ReagentId: Iron
           Quantity: 10
 
+- type: entity
+  parent: PillCanister
+  id: PillCanisterIron
+  suffix: Iron, 5
+  components:
+  - type: StorageFill
+    contents:
+    - id: PillIron
+      amount: 5
+
 - type: entity
   name: kelotane pill (10u)
   parent: Pill
         - ReagentId: Kelotane
           Quantity: 10
 
+- type: entity
+  parent: PillCanister
+  id: PillCanisterKelotane
+  suffix: Kelotane, 5
+  components:
+  - type: StorageFill
+    contents:
+    - id: PillKelotane
+      amount: 5
+
 - type: entity
   name: dermaline pill (10u)
   parent: Pill
         - ReagentId: Dermaline
           Quantity: 10
 
+- type: entity
+  parent: PillCanister
+  id: PillCanisterDermaline
+  suffix: Dermaline, 5
+  components:
+  - type: StorageFill
+    contents:
+    - id: PillDermaline
+      amount: 5
+
 - type: entity
   name: space drugs
   parent: Pill
         - ReagentId: Tricordrazine
           Quantity: 10
 
+- type: entity
+  parent: PillCanister
+  id: PillCanisterTricordrazine
+  suffix: Tricordrazine, 5
+  components:
+  - type: StorageFill
+    contents:
+    - id: PillTricordrazine
+      amount: 5
+
 - type: entity
   name: bicaridine pill (10u)
   parent: Pill
         - ReagentId: Bicaridine
           Quantity: 10
 
+- type: entity
+  parent: PillCanister
+  id: PillCanisterBicaridine
+  suffix: Bicaridine, 5
+  components:
+  - type: StorageFill
+    contents:
+    - id: PillBicaridine
+      amount: 5
+
 - type: entity
   name: charcoal pill (10u)
   parent: Pill
         - ReagentId: Charcoal
           Quantity: 10
 
+- type: entity
+  parent: PillCanister
+  id: PillCanisterCharcoal
+  suffix: Charcoal, 3
+  components:
+  - type: StorageFill
+    contents:
+    - id: PillCharcoal
+      amount: 3
+
 - type: entity
   name: romerol pill
   parent: Pill
index dccbbc732878183a15904ac5e32242c6fec41393..709bc751a4e7481228ccc904329d9bf24e6b5294 100644 (file)
       map: ["enum.SolutionContainerLayers.Fill"]
   - type: Item
     sprite: Objects/Specific/Medical/medipen.rsi
-    size: 3
+    size: Tiny
   - type: SolutionContainerManager
     solutions:
       pen:
       map: ["enum.SolutionContainerLayers.Fill"]
   - type: Item
     sprite: Objects/Specific/Medical/medipen.rsi
-    size: 10
+    size: Small
   - type: SolutionContainerManager
     solutions:
       pen:
       map: ["enum.SolutionContainerLayers.Fill"]
   - type: Item
     sprite: Objects/Specific/Medical/medipen.rsi
-    size: 5
+    size: Tiny
   - type: SolutionContainerManager
     solutions:
       pen:
       map: ["enum.SolutionContainerLayers.Fill"]
   - type: Item
     sprite: Objects/Specific/Medical/medipen.rsi
-    size: 5
+    size: Tiny
   - type: SolutionContainerManager
     solutions:
       pen:
index 400f6670ab6c5037e892f538a5222f390a5cae55..81cda3d5e1b3e212cbf759fcc7178463da2cf79a 100644 (file)
@@ -8,9 +8,9 @@
     sprite: Objects/Specific/Medical/firstaidkits.rsi
     state: firstaid
   - type: Storage
-    capacity: 60
+    maxTotalWeight: 14
   - type: Item
-    size: 60
+    size: Normal
     sprite: Objects/Specific/Medical/firstaidkits.rsi
     heldPrefix: firstaid
   - type: Tag
@@ -93,7 +93,5 @@
     state: blackkit
   - type: Item
     heldPrefix: blackkit
-    size: 50
-  - type: Storage
-    capacity: 50
+    size: Normal
 
index 18e502ccdfbde8d22110c0e535294479b0adda22..1ef73f23964f17d00dde076ae6e59fbb0a306c3a 100644 (file)
@@ -5,7 +5,7 @@
   description: A plastic bag designed for the storage and transportation of cadavers.
   components:
   - type: Item
-    size: 6
+    size: Small
   - type: Sprite
     drawdepth: SmallObjects # I guess body bags need appear above a coroner's table?
     sprite: Objects/Specific/Medical/Morgue/bodybags.rsi
index 268a91c8de3cd169ed14f9eaec8e7afd4111451e..dd9d771ebef792900b62142f21c9dd88fe3bd4e1 100644 (file)
@@ -9,13 +9,13 @@
     state: icon
   - type: Item
     sprite: Objects/Specific/Research/rped.rsi
-    size: 50
+    size: Normal
   - type: GuideHelp
     guides:
     - MachineUpgrading
   - type: PartExchanger
   - type: Storage
-    capacity: 150
+    maxSlots: 30
     quickInsert: true
     areaInsert: true
     whitelist:
index 583aef374a7493ad0da61e547c5f025552930e55..814ddb30da0cf2b13943d4c9a9eea7b1da05be50 100644 (file)
     slots:
     - belt
   - type: Item
-    size: 176
+    size: Huge
   - type: Storage
-    capacity: 175
+    maxSlots: 5
+    maxItemSize: Normal
     quickInsert: true
     areaInsert: true
     whitelist:
index 6ada51176c9c17a005cc77bc7155ebf8d6a15eb1..6abdd790c9cb5d44c80dce4678704bf46d9ae14a 100644 (file)
@@ -22,7 +22,7 @@
     soundSwing:
       path: /Audio/Weapons/punchmiss.ogg
   - type: Item
-    size: 50
+    size: Normal
   - type: Damageable
     damageContainer: Inorganic
     damageModifierSet: Metallic
index 465e1a458cec14bf8eb30672af607bde735593a6..6c49fd7a5e0bda9b239dbf48b6b01b7e122026f0 100644 (file)
@@ -55,7 +55,7 @@
       type: IntercomBoundUserInterface
   - type: Appearance
   - type: Item
-    size: 40
+    size: Normal
     sprite: Objects/Specific/Xenoarchaeology/item_artifacts.rsi
     heldPrefix: ano01
   - type: Actions
index 0e679c7096263f6bfcab0e2773a1c577ab6c86f4..51d705f617db5d3751dde8125b2e59cf795c35d1 100644 (file)
@@ -17,7 +17,7 @@
           map: [ "enum.SolutionContainerLayers.Fill" ]
           visible: false
     - type: Item
-      size: 20
+      size: Normal
       sprite: Objects/Specific/Chemistry/jug.rsi
     - type: RefillableSolution
       solution: beaker
index da1a15e23898f11a2d9abe8eedeee138468e4e1b..b869a2008f8b47554784881e61cffd657beeb62f 100644 (file)
@@ -46,7 +46,7 @@
     - key: enum.TransferAmountUiKey.Key
       type: TransferAmountBoundUserInterface
   - type: Item
-    size: 3
+    size: Tiny
     sprite: Objects/Specific/Chemistry/beaker.rsi
   - type: Spillable
     solution: drink
index bf323067ac08678b333db3de0fb71acd0a2a68d7..f3ed4f22843ff8416965ac7eab60c569d6484516 100644 (file)
         map: ["enum.SolutionContainerLayers.Fill"]
         visible: false
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Specific/Chemistry/beaker_large.rsi
   - type: SolutionContainerManager
     solutions:
     sprite: Objects/Specific/Chemistry/syringe.rsi
     state: "syringe_base0"
   - type: Item
-    size: 3
+    size: Tiny
     sprite: Objects/Specific/Chemistry/syringe.rsi
     heldPrefix: 0
   - type: SolutionContainerManager
     sprite: Objects/Specific/Chemistry/pills.rsi
     state: pill
   - type: Item
-    size: 1
+    size: Tiny
     sprite: Objects/Specific/Chemistry/pills.rsi
   - type: Pill
   - type: Food
   name: pill canister
   id: PillCanister
   parent: BaseStorageItem
-  description: Holds up to 9 pills.
+  description: Holds up to 10 pills.
   components:
   - type: Sprite
     sprite: Objects/Specific/Chemistry/pills_canister.rsi
     state: pill_canister
   - type: Item
     sprite: Objects/Specific/Chemistry/pills_canister.rsi
+    size: Small
   - type: Tag
     tags:
       - PillCanister
   - type: Storage
-    capacity: 9
+    maxTotalWeight: 10
     quickInsert: true
     areaInsert: true
     areaInsertRadius: 1
     storageInsertSound: /Audio/Effects/pill_insert.ogg
     storageRemoveSound: /Audio/Effects/pill_remove.ogg
-    whitelist:
-      components:
-      - Pill
   - type: Dumpable
index 81836f9c6cba84bc89fab174f8f10f73fb1930c0..aa6a64789e7a0c8ebba82eb694e1f5de0079bfc4 100644 (file)
@@ -10,7 +10,7 @@
     state: telecrystal
   - type: Item
     sprite: Objects/Specific/Syndicate/telecrystal.rsi
-    size: 20
+    size: Tiny
   - type: Stack
     count: 20
     stackType: Telecrystal
@@ -29,8 +29,6 @@
   components:
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: Telecrystal
@@ -39,8 +37,6 @@
   components:
   - type: Stack
     count: 5
-  - type: Item
-    size: 5
 
 - type: entity
   parent: Telecrystal
@@ -49,8 +45,6 @@
   components:
   - type: Stack
     count: 10
-  - type: Item
-    size: 10
 
 # Uplinks
 - type: entity
index c8b05c6959dca101195db1afdafbe631aa5c7435..7863cf8c093001ef2725efb75bd7bc51c54d5612 100644 (file)
@@ -11,7 +11,7 @@
       sprite: Objects/Tools/access_configurator.rsi
       state: icon
     - type: Item
-      size: 5
+      size: Small
     - type: Clothing
       sprite: Objects/Tools/access_configurator.rsi
       quickEquip: false
     - type: UserInterface
       interfaces:
         - key: enum.AccessOverriderUiKey.Key
-          type: AccessOverriderBoundUserInterface        
-    - type: ActivatableUI  
+          type: AccessOverriderBoundUserInterface
+    - type: ActivatableUI
       key: enum.AccessOverriderUiKey.Key
-      requireHands: true      
-      closeOnHandDeselect: false  
-      singleUser: true      
+      requireHands: true
+      closeOnHandDeselect: false
+      singleUser: true
     - type: ItemSlots
     - type: ContainerContainer
       containers:
index 2a5870908fecf6053daec67d00c350da6d596587..c7d62d759b7ef79c4706a6e3a0a10f8c2ec1009f 100644 (file)
@@ -16,7 +16,7 @@
       state: fill-1
       visible: false
   - type: Item
-    size: 100
+    size: Normal
   - type: Clothing
     sprite: Objects/Tools/bucket.rsi
     slots:
index e73d80f83b4a81bba17fa8eac287a08b021b140d..1b9746704952f2d0715a1dc3c3f4961ff13599e1 100644 (file)
@@ -19,7 +19,7 @@
     sprite: Objects/Tools/cable-coils.rsi
   - type: Item
     sprite: Objects/Tools/cable-coils.rsi
-    size: 30
+    size: Normal
   - type: CablePlacer
   - type: Clickable
   - type: StaticPrice
@@ -62,8 +62,6 @@
     state: coilhv-10
   - type: Stack
     count: 10
-  - type: Item
-    size: 10
 
 - type: entity
   parent: CableHVStack10
@@ -83,8 +81,6 @@
     state: coilhv-10
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: CableStack
     state: coilmv-10
   - type: Stack
     count: 10
-  - type: Item
-    size: 10
 
 - type: entity
   parent: CableMVStack10
     state: coilmv-10
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
 
 - type: entity
   parent: CableStack
       state: coillv-10
     - type: Stack
       count: 10
-    - type: Item
-      size: 10
 
 - type: entity
   parent: CableApcStack10
     state: coillv-10
   - type: Stack
     count: 1
-  - type: Item
-    size: 1
index 24eb0b02b2458799cc87ba7c706a02e849b00367..e6a7a43fa40a2896b39533eb3dbdd7ee5e1b0008 100644 (file)
   - type: Sprite
     sprite: Objects/Tools/Cowtools/cowelder.rsi
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Tools/Cowtools/cowelder.rsi
   - type: Tool
     speed: 0.05
index 8e54b4277f9bd5f4104397b3f3b99f3618773e1f..612c8b93b918812f5df766925288229df9eebac0 100644 (file)
@@ -28,7 +28,7 @@
           mask:
             - Impassable
     - type: Item
-      size: 30
+      size: Normal
     - type: Foldable
       folded: true
     - type: Clickable
@@ -58,7 +58,7 @@
   components:
   - type: Fulton
   - type: Item
-    size: 20
+    size: Normal
   - type: Stack
     stackType: Fulton
     count: 10
@@ -84,7 +84,7 @@
   suffix: One
   components:
   - type: Item
-    size: 2
+    size: Small
   - type: Stack
     count: 1
 
index 09d99452137fe06142709610e752cf9ff35db86c..9887d8cdc01a13c72d08df947b9ec8ff20552875 100644 (file)
@@ -7,7 +7,7 @@
     sprite: Objects/Tanks/generic.rsi
     state: icon
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Tanks/generic.rsi
   - type: Clothing
     sprite: Objects/Tanks/generic.rsi
   - type: Sprite
     sprite: Objects/Tanks/emergency.rsi
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Tanks/emergency.rsi
   - type: GasTank
     outputPressure: 21.3
index b3d117dced540a802a565335d3258de0150ce262..5c30cfdea3a7a5bd78f72082c7048ecbbb079653 100644 (file)
@@ -13,7 +13,7 @@
       state: item_wall
     - type: Item
       sprite: Objects/Misc/inflatable_wall.rsi
-      size: 10
+      size: Small
     - type: SpawnAfterInteract
       prototype: InflatableWall
       doAfter: 1
@@ -39,7 +39,7 @@
       state: item_door
     - type: Item
       sprite: Objects/Misc/inflatable_door.rsi
-      size: 4
+      size: Small
     - type: SpawnAfterInteract
       prototype: InflatableDoor
       doAfter: 1
@@ -57,8 +57,6 @@
   components:
     - type: Sprite
       state: item_wall
-    - type: Item
-      size: 5
     - type: Stack
       count: 5
 
@@ -69,8 +67,6 @@
   components:
     - type: Sprite
       state: item_wall
-    - type: Item
-      size: 1
     - type: Stack
       count: 1
 
@@ -81,7 +77,5 @@
   components:
     - type: Sprite
       state: item_door
-    - type: Item
-      size: 1
     - type: Stack
       count: 1
index 36f96f61af884640ad610f86dd0c09738d93eb51..31d852354bbef4274197b4f8df9cd8cbb82504e6 100644 (file)
@@ -11,7 +11,7 @@
     sprite: Objects/Tools/jaws_of_life.rsi
     state: jaws_pry
   - type: Item
-    size: 50
+    size: Normal
   - type: Clothing
     sprite: Objects/Tools/jaws_of_life.rsi
     quickEquip: false
@@ -61,7 +61,7 @@
     sprite: Objects/Tools/jaws_of_life.rsi
     state: syn_jaws_pry
   - type: Item
-    size: 35
+    size: Normal
   - type: Tool
     qualities:
       - Prying
index b87bbae0d86734b1ac4ccc4c58a4afb797d7143e..d63225b2bd991a550a688ef14189a1b78c50b347 100644 (file)
@@ -37,7 +37,7 @@
       state: icon
     - type: Item
       sprite: Objects/Tanks/Jetpacks/blue.rsi
-      size: 100
+      size: Large
     - type: UserInterface
       interfaces:
         - key: enum.SharedGasTankUiKey.Key
       - Back
   - type: Item
     sprite: Objects/Tanks/Jetpacks/captain.rsi
-    size: 30
+    size: Normal
   - type: Tag
     tags:
     - HighRiskItem
index e3422f2a4a2d0a37560adbdca7ad8a91e3561f98..a3b6b3fd6e8182ebe93aa13e969a18a9e60dd998 100644 (file)
@@ -40,7 +40,7 @@
       visible: false
     - state: basic_icon_top
   - type: Item
-    size: 1
+    size: Tiny
     sprite: Objects/Tools/lighters.rsi
     heldPrefix: off
   - type: ItemCooldown
index fd7e185cb027ba2ec7cf179ca73798e87cb4e27c..98affd271c8445d5f7994e1d36f92cb406f6ab11 100644 (file)
@@ -4,9 +4,10 @@
   abstract: true
   components:
   - type: Storage
-    capacity: 10
+    maxSlots: 7
+    maxTotalWeight: 14
   - type: Item
-    size: 10
+    size: Small
 
 - type: entity
   name: match stick
@@ -26,7 +27,7 @@
   - type: Item
     sprite: Objects/Tools/matches.rsi
     heldPrefix: unlit
-    size: 1
+    size: Tiny
   - type: Matchstick
     duration: 10
     igniteSound:
   - type: Item
     sprite: Objects/Tools/matches.rsi
     heldPrefix: matchbox
-    size: 5
+    size: Small
   - type: Storage
-    capacity: 5
+    maxSlots: 5
+    maxTotalWeight: 5
   - type: StorageFill
     contents:
       - id: Matchstick
index e9f05267963f9bfcde422bfb2b06cd10f483f3e6..8a1c33df769498ceeb40cc197c1951027579e944 100644 (file)
@@ -8,9 +8,11 @@
     sound:
       path: /Audio/Items/toolbox_drop.ogg
   - type: Storage
-    capacity: 60
+    maxSlots: 7
+    maxItemSize: Normal
+    maxTotalWeight: 14
   - type: Item
-    size: 9999
+    size: Huge
   - type: ItemCooldown
   - type: MeleeWeapon
     damage:
   - type: Item
     sprite: Objects/Tools/Toolboxes/toolbox_syn.rsi
   - type: Storage
-    capacity: 170 # this seems silly high
+    maxItemSize: Large
+    maxTotalWeight: 28
   - type: MeleeWeapon
     damage:
       types:
index 12a6ede23183e5a26bb1bca90b2e4c3da1267a70..566c72dafd87e9c7f37ea2a22f26e8fc21b2dc8c 100644 (file)
     state: icon
   - type: Item
     sprite: Objects/Tools/crowbar.rsi
-    size: 10
+    size: Small
   - type: ItemCooldown
   - type: MeleeWeapon
     wideAnimationRotation: -135
     - state: green-unlit
       shader: unshaded
   - type: Item
-    size: 5
+    size: Small
   - type: Clothing
     sprite: Objects/Tools/multitool.rsi
     quickEquip: false
           map: ["enum.NetworkConfiguratorLayers.ModeLight"]
           shader: unshaded
     - type: Item
-      size: 5
+      size: Small
     - type: Clothing
       sprite: Objects/Tools/network_configurator.rsi
       quickEquip: false
     state: drill_screw
   - type: Item
     sprite: Objects/Tools/drill.rsi
-    size: 10
+    size: Small
   - type: Tool
     qualities:
       - Screwing
     sprite: Objects/Tools/rcd.rsi
     state: icon
   - type: Item
-    size: 20
+    size: Normal
   - type: Clothing
     sprite: Objects/Tools/rcd.rsi
     quickEquip: false
     state: omnitool-screwing
   - type: Item
     sprite: Objects/Tools/omnitool.rsi
-    size: 20
+    size: Normal
   - type: Tag
     tags:
     - Multitool
       types:
         Blunt: 14
   - type: Item
-    size: 90
+    size: Normal
     sprite: Objects/Tools/shovel.rsi
   - type: PhysicalComposition
     materialComposition:
     state: icon
   - type: Item
     sprite: Objects/Tools/rolling_pin.rsi
-    size: 10
+    size: Small
   - type: Clothing
     sprite: Objects/Tools/rolling_pin.rsi
     quickEquip: false
index 7c3de82d0ad62644dbbb942c5efee3a86834700b..caa0d4c20888e0a2dd8135132abe5b87456aff55 100644 (file)
@@ -17,7 +17,7 @@
       shader: unshaded
       visible: false
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Tools/welder.rsi
   - type: ToggleableLightVisuals
     spriteLayer: flame
   - type: Sprite
     sprite: Objects/Tools/welder_mini.rsi
   - type: Item
-    size: 5
+    size: Tiny
     sprite: Objects/Tools/welder_mini.rsi
   - type: RefillableSolution
     solution: Welder
index f361c2b877a3def188b4839ef8822d8874f27cbb..468f1aa3a560560c178e6ad4699682a517126d03 100644 (file)
@@ -5,7 +5,7 @@
   description: Interesting design.
   components:
   - type: Item
-    size: 2
+    size: Tiny
   - type: Tag
     tags:
     - VehicleKey
index c33c1f92c5529e80337f2510d955dbd18c18e3f7..84883c975d04dd226181e6912ba9147c73d5ad37 100644 (file)
@@ -12,7 +12,7 @@
         map: ["base"]
     - type: Item
       sprite: Objects/Weapons/Bombs/hot_potato.rsi
-      size: 5
+      size: Small
     - type: AmbientSound
       enabled: false
       range: 8
index 4d9fed1f914db12f19698028c9e5420d51685e28..e3581370f03d7f6b1d4e5baa347a2db38277828b 100644 (file)
@@ -12,7 +12,7 @@
       map: ["base"]
   - type: Item
     sprite: Objects/Weapons/Bombs/c4.rsi
-    size: 10
+    size: Small
   - type: OnUseTimerTrigger
     delay: 10
     delayOptions: [10, 30, 60, 120, 300]
index 50a7ea8687beb7ca3ed7845b690b9153d8425692..8f997b76874d578fae96592c186e7531be445a7e 100644 (file)
@@ -10,7 +10,7 @@
     state: icon
   - type: Item
     sprite: Objects/Weapons/Bombs/spidercharge.rsi
-    size: 10
+    size: Small
   - type: SpiderCharge
   - type: OnUseTimerTrigger
     delay: 10
index c7980f845f8adf18bdf22c5a9ead08fac7ecd112..28157ef3450407132750ce7b39e54f1a83f58f4c 100644 (file)
@@ -12,7 +12,7 @@
     proto: CartridgeAntiMateriel
     capacity: 10
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index 4a77bfcfc56b46def675262f95d3bef5512693d6..063268d8b53a9368f7e0a2c5d0ea511e6c1dc0db 100644 (file)
@@ -12,7 +12,7 @@
     proto: CartridgeCaselessRifle
     capacity: 60
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index 1c8fbc26e1fea92d63082c3530781d4010f33381..0751d3608c19f2832d2f10fb47ba3db207a8aaa3 100644 (file)
@@ -12,7 +12,7 @@
     proto: CartridgeLightRifle
     capacity: 50
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index 5a9a850e9ccfd974498ef4c1aa63dd8c5bc63c84..1ff05558e5d78f43689cf50dfca7fdf14b7b655f 100644 (file)
@@ -11,7 +11,7 @@
     proto: CartridgeMagnum
     capacity: 60
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index a9a78f399a6393041a35d04cb0926dbb2dd2bd9b..867aa15a34944f1fb294782238c07321cde06555 100644 (file)
@@ -12,7 +12,7 @@
     proto: CartridgePistol
     capacity: 60
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index 3725ad91af5533141eb9d8656f4f4cf883cf1f04..5ed2fcc63ed7adbd0a5be2d21872096c93a215de 100644 (file)
@@ -11,7 +11,7 @@
     proto: CartridgeRifle
     capacity: 60
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index de6f9f92a5b0cf82b063799b908eaaac1bdc5aed..1831db28e755c95956e016b7ba1a0c88ee60bab1 100644 (file)
@@ -20,7 +20,7 @@
     tags:
     - Cartridge
   - type: Item
-    size: 1
+    size: Tiny
   - type: SpaceGarbage
   - type: EmitSoundOnLand
     sound:
index 773ff01ed850d52c8d5d48374c33624c017054c7..0d16f1e966c00e938926d69417c884d7968fbc2c 100644 (file)
@@ -15,7 +15,7 @@
     proto: CartridgeCaselessRifle
     capacity: 30
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
@@ -42,7 +42,7 @@
     proto: CartridgeCaselessRifle
     capacity: 10
   - type: Item
-    size: 3
+    size: Tiny
   - type: Sprite
     sprite: Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag_short.rsi
     layers:
@@ -67,7 +67,7 @@
     proto: CartridgeCaselessRifle
     capacity: 10
   - type: Item
-    size: 5
+    size: Small
   - type: Sprite
     sprite: Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_pistol_mag.rsi
     layers:
index 239533c9408552015f05f82007443e3018351f78..d8af7064a4ace8a0e182fdaa676c3a9863110233 100644 (file)
@@ -8,7 +8,7 @@
     tags:
       - MagazineHeavyRifle
   - type: Item
-    size: 10
+    size: Small
   - type: BallisticAmmoProvider
     mayTransfer: true
     capacity: 100
index e5863643695e1eaf89888255e672cc6471aeb948..7ae4f325244d5c02d11000d83c9c61d53f32e387 100644 (file)
@@ -16,7 +16,7 @@
     proto: CartridgeLightRifle
     capacity: 30
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index 6060898d49527a31cd2be0cd996f8565b3ff4a4d..b65dac5d15a8c62ea6d5f382fd22ceb176a702ee 100644 (file)
@@ -14,7 +14,7 @@
         - CartridgeMagnum
     capacity: 25
   - type: Item
-    size: 10
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index 4ed38fdeb35dc2e41da7962bbad82c96b130588c..8793a717e7efd90600df37bae0d26773babd966e 100644 (file)
@@ -14,7 +14,7 @@
         - CartridgePistol
     capacity: 10
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
@@ -47,7 +47,7 @@
         - CartridgePistol
     capacity: 16
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
@@ -80,7 +80,7 @@
         - CartridgePistol
     capacity: 35
   - type: Item
-    size: 10
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index ca1f9b8de2892a9c7fbe6961600f247bfd222e99..8e65cd992eb866a2574cf55e5b7d5bffd954567f 100644 (file)
@@ -9,7 +9,7 @@
     tags:
       - MagazineRifle
   - type: Item
-    size: 5
+    size: Small
   - type: BallisticAmmoProvider
     mayTransfer: true
     whitelist:
index b78825f3e14d5011146fa43213bacdaabd238865..cbe9bbfbe973b50c44ad9e48453eeea3a5cfda8d 100644 (file)
@@ -16,7 +16,7 @@
     soundRack:
       path: /Audio/Weapons/Guns/Cock/smg_cock.ogg
   - type: Item
-    size: 5
+    size: Small
   - type: ContainerContainer
     containers:
       ballistic-ammo: !type:Container
index 56d420cb33caadd1daa55c4be812ed38eaf7df17..86da8e6662ca90905dc1a1329445d3aad52c64ab 100644 (file)
@@ -10,7 +10,7 @@
     tags:
       - CartridgeRocket
   - type: Item
-    size: 5
+    size: Small
   - type: CartridgeAmmo
     proto: BulletRocket
     deleteOnSpawn: true
@@ -30,7 +30,7 @@
       tags:
         - CartridgeRocket
     - type: Item
-      size: 5
+      size: Small
     - type: CartridgeAmmo
       proto: BulletWeakRocket
       deleteOnSpawn: true
@@ -52,7 +52,7 @@
     tags:
     - Grenade
   - type: Item
-    size: 5
+    size: Small
   - type: Sprite
 
 - type: entity
index 041cf446c11090e0fd96f2e5f5ab2f3db0cc5bad..f85e93b893f07aba6cdcd347d2fa529e0260653c 100644 (file)
@@ -7,7 +7,7 @@
     sprite: Objects/Weapons/Guns/Basic/kinetic_accelerator.rsi
   - type: Item
     sprite: Objects/Weapons/Guns/Basic/kinetic_accelerator.rsi
-    size: 30
+    size: Normal
   - type: GunWieldBonus
     minAngle: -43
     maxAngle: -43
index 76bd0b9e75029d251bcd17b494baecce9f9acf53..9cab4cac25a4a318f9c2702d824a9bc612963ad2 100644 (file)
@@ -7,7 +7,7 @@
     sprite: Objects/Weapons/Guns/Basic/staves.rsi
   - type: Item
     heldPrefix: staff
-    size: 60
+    size: Normal
   - type: Gun
     fireRate: 1
     selectedMode: SemiAuto
index 3b97eac8ee9af3ca4aefdacf37efca33e9e3ebb5..c4a937ee2cd1b497b7bfac8bd3e680f3bb2bccb9 100644 (file)
@@ -7,7 +7,7 @@
     sprite: Objects/Weapons/Guns/Basic/wands.rsi
   - type: Item
     heldPrefix: wand
-    size: 30
+    size: Normal
   - type: Gun
     fireRate: 0.5
     selectedMode: SemiAuto
index d4d00252f51d9a76992d4bfa91360ecc0471a213..f2e93a607ece056a8299d298a3f1b1070afac89f 100644 (file)
@@ -9,7 +9,7 @@
     state: icon
   - type: Item
     sprite: Objects/Weapons/Guns/Basic/spraynozzle.rsi
-    size: 30
+    size: Normal
   - type: Gun
     cameraRecoilScalar: 0 #no recoil
     fireRate: 4
index a815f9c0cd138ac14002a1a6677b8422f9ca2dd8..e925bdab8761a7cdd7d821452cf26b59b52fecaf 100644 (file)
@@ -10,7 +10,7 @@
     slots: BELT
   - type: Item
     sprite: Objects/Weapons/Guns/Pistols/water_pistol.rsi
-    size: 10
+    size: Small
   - type: Gun
     clumsyProof: true
     cameraRecoilScalar: 0 #no recoil
@@ -95,7 +95,7 @@
       map: [ "enum.DamageStateVisualLayers.Base" ]
   - type: Item
     sprite: Objects/Weapons/Guns/Pistols/soaker.rsi
-    size: 35
+    size: Normal
   - type: RandomSprite
     getAllGroups: true
     available:
       map: [ "enum.DamageStateVisualLayers.Base" ]
   - type: Item
     sprite: Objects/Weapons/Guns/Pistols/soaker.rsi
-    size: 35
+    size: Normal
   - type: RandomSprite
     getAllGroups: true
     available:
index 38875ee9a753a2c427a560f3a207da078c3f70e6..0469f966739667c0598d1f31561ab7a910d68272 100644 (file)
@@ -5,7 +5,7 @@
   components:
   - type: Sprite
   - type: Item
-    size: 50
+    size: Large
   - type: Clothing
     sprite: Objects/Weapons/Guns/Battery/laser_retro.rsi
     quickEquip: false
@@ -37,7 +37,7 @@
   abstract: true
   components:
   - type: Item
-    size: 10
+    size: Small
   - type: Tag
     tags:
     - Sidearm
   description: An experimental high-energy laser pistol with a self-charging nuclear battery.
   components:
   - type: Item
-    size: 30  # Intentionally larger than other pistols
+    size: Normal  # Intentionally larger than other pistols
   - type: Sprite
     sprite: Objects/Weapons/Guns/Battery/advancedlasergun.rsi
     layers:
index 88640f7812f5fb5b141f08f641fdcc45db9e2fcb..4b7125f571f5f0c527bb798219699f77074e6296 100644 (file)
@@ -8,7 +8,7 @@
   - type: Sprite
     sprite: Objects/Weapons/Guns/Bow/bow.rsi
   - type: Item
-    size: 60
+    size: Normal
   - type: Clothing
     quickEquip: false
     slots:
index 785b36cc6200b3c6aadb19eefe665901087c83b3..1b318beac85482f0df4b1b5292a33f354c1d32ed 100644 (file)
@@ -7,6 +7,7 @@
   components:
   - type: Sprite
   - type: Item
+    size: Huge
   - type: Gun
     fireRate: 20
     selectedMode: FullAuto
@@ -33,7 +34,6 @@
       map: ["enum.GunVisualLayers.Base"]
   - type: Item
     sprite: Objects/Weapons/Guns/HMGs/minigun.rsi
-    size: 90
   - type: Gun
     fireRate: 15
     soundGunshot:
index 62142519bfa05f2d6607fc04558b3c62fc46c0aa..3d6cd680a0c0c90736f07ab3aa33266a6f0a0cf5 100644 (file)
@@ -7,7 +7,7 @@
   components:
   - type: Sprite
   - type: Item
-    size: 60
+    size: Large
   - type: Clothing
     sprite: Objects/Weapons/Guns/LMGs/l6.rsi
     quickEquip: false
index 3796ac92b891e4af03c0778ab83a8140fedce10b..2dbf71840c9ab24bb330e51495441d5313f8bf37 100644 (file)
@@ -12,7 +12,7 @@
     slots:
     - Back
   - type: Item
-    size: 60
+    size: Large
   - type: StaticPrice
     price: 500
   - type: ContainerContainer
index 7bfd914d94fef78d922f75d1abf4046624f6e27c..a6c6f1e6772a9e45731e82eb43e05ab3fd80181b 100644 (file)
@@ -12,7 +12,7 @@
       - state: mag-0
         map: ["enum.GunVisualLayers.Mag"]
   - type: Item
-    size: 10
+    size: Small
   - type: Tag
     tags:
     - Sidearm
index 32a2ea4623f3ad78686b1b904e1d4e45738f1664..8dbcf2b3033a72955c137a9c70c9a482d18ccf4a 100644 (file)
@@ -4,7 +4,7 @@
   abstract: true
   components:
   - type: Item
-    size: 10
+    size: Small
   - type: Sprite
     sprite: Objects/Weapons/Guns/Projectiles/arrows.rsi
   - type: Fixtures
index 1851dcddf6b80026f7e5335b41a792f0575829b5..c523fd279795ae585662485148116df857121a97 100644 (file)
@@ -8,7 +8,7 @@
   - type: Sprite
     state: icon
   - type: Item
-    size: 10
+    size: Small
   - type: Tag
     tags:
     - Sidearm
       params:
         volume: 2.25
 
-- type: entity 
+- type: entity
   name: Python
   parent: WeaponRevolverPython
   id: WeaponRevolverPythonAP # For the uplink.
   - type: RevolverAmmoProvider
     capacity: 5
     chambers: [ True, True, True, True, True ]
-    ammoSlots: [ null, null, null, null, null ]
\ No newline at end of file
+    ammoSlots: [ null, null, null, null, null ]
index 114573c0879d463d4edb24a3d99b7920106bced7..d460c0c8f03fab92d5b2bde1ef41942a7d948059 100644 (file)
@@ -7,7 +7,7 @@
   components:
   - type: Sprite
   - type: Item
-    size: 50
+    size: Large
   - type: Clothing
     sprite: Objects/Weapons/Guns/Rifles/ak.rsi
     quickEquip: false
index e423c09841250faff6e3e31dd54e0b273f6fc40d..6bf6fcf695618a5780842b83fd03794c1c619f81 100644 (file)
@@ -7,7 +7,7 @@
   components:
   - type: Sprite
   - type: Item
-    size: 30
+    size: Normal
   - type: Clothing
     sprite: Objects/Weapons/Guns/SMGs/atreides.rsi
     quickEquip: false
index 4bee243d57454d889654714c1b2b33cf9dff2824..5a08eb3636978fe9255f02838f2e11fd8354c340 100644 (file)
@@ -11,7 +11,7 @@
         map: [ "enum.GunVisualLayers.Base" ]
   - type: Item
     # If you update this also update the bulldog's size.
-    size: 30
+    size: Large
   - type: Clothing
     sprite: Objects/Weapons/Guns/Shotguns/db_shotgun.rsi
     quickEquip: false
@@ -57,8 +57,6 @@
       map: ["enum.GunVisualLayers.Base"]
     - state: mag-0
       map: ["enum.GunVisualLayers.Mag"]
-  - type: Item
-    size: 30
   - type: Clothing
     sprite: Objects/Weapons/Guns/Shotguns/bulldog.rsi
     quickEquip: false
   - type: Clothing
     sprite: Objects/Weapons/Guns/Shotguns/enforcer.rsi
   - type: BallisticAmmoProvider
-  
+
 - type: entity
   name: Enforcer
   parent: BaseWeaponShotgun
     sprite: Objects/Weapons/Guns/Shotguns/enforcer.rsi
   - type: BallisticAmmoProvider
     proto: ShellShotgunBeanbag
-  
+
 - type: entity
   name: Kammerer
   parent: BaseWeaponShotgun
     sprite: Objects/Weapons/Guns/Shotguns/pump.rsi
   - type: Clothing
     sprite: Objects/Weapons/Guns/Shotguns/pump.rsi
+  - type: Item
+    size: Normal
   - type: BallisticAmmoProvider
     capacity: 4
 
   - type: Clothing
     sprite: Objects/Weapons/Guns/Shotguns/sawn.rsi
   - type: Item
-    size: 10
+    size: Small
   - type: Gun
     fireRate: 4
   - type: BallisticAmmoProvider
     sprite: Objects/Weapons/Guns/Shotguns/hm_pistol.rsi
   - type: Clothing
     sprite: Objects/Weapons/Guns/Shotguns/hm_pistol.rsi
-  - type: Item
-    size: 10
   - type: Gun
     fireRate: 4
   - type: BallisticAmmoProvider
     sprite: Objects/Weapons/Guns/Shotguns/improvised_shotgun.rsi
   - type: Clothing
     sprite: Objects/Weapons/Guns/Shotguns/improvised_shotgun.rsi
-  - type: Item
-    size: 75
   - type: Gun
     fireRate: 4 #No reason to stifle the firerate since you have to manually reload every time anyways.
   - type: BallisticAmmoProvider
index 68c494b88819d21294473558ccdb0ea073b6a3e4..4a16aadb6550beeb29384fa56acd48dfab08c2d5 100644 (file)
@@ -10,7 +10,7 @@
     - state: base
       map: ["enum.GunVisualLayers.Base"]
   - type: Item
-    size: 50
+    size: Large
   - type: Clothing
     sprite: Objects/Weapons/Guns/Snipers/bolt_gun_wood.rsi
     quickEquip: false
index d41346380c3076bac8415f78b4e85ab5c2cc2789..cfcc0a01cd1f26d486af1c3a1e6287a723e3b296 100644 (file)
@@ -10,7 +10,7 @@
       - state: icon
         map: ["enum.GunVisualLayers.Base"]
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Weapons/Guns/Shotguns/flaregun.rsi
   - type: Gun
     fireRate: 8
index 9f3aec5c39bcbb717b95953c87ffd39bc424c00c..fcd028a64e81eb7a42e47433286ef4d9f1a2c488 100644 (file)
@@ -12,7 +12,7 @@
       map: [ "tank" ]
       visible: false
   - type: Item
-    size: 50
+    size: Large
   - type: Clothing
     quickEquip: false
     slots:
@@ -32,7 +32,9 @@
     container: storagebase
   - type: PneumaticCannon
   - type: Storage
-    capacity: 30
+    maxSlots: 8
+    maxItemSize: Normal
+    maxTotalWeight: 32
     blacklist:
       tags:
         - CannonRestrict
     layers:
     - state: piecannon
   - type: Storage
+    maxSlots: 8
+    maxItemSize: Normal
+    maxTotalWeight: 32
     whitelist:
       components:
       - CreamPie
-    capacity: 40
   - type: Gun
     fireRate: 1
     selectedMode: SemiAuto
@@ -93,7 +97,7 @@
   - type: ContainerAmmoProvider
     container: storagebase
   - type: Item
-    size: 50
+    size: Normal
   - type: Clothing
     sprite: Objects/Weapons/Guns/Cannons/pie_cannon.rsi
     quickEquip: false
   suffix: Admeme
   components:
   - type: Item
-    size: 9999
+    size: Huge
   - type: Storage
-    capacity: 9999
+    maxSlots: 100
+    maxItemSize: Huge
+    maxTotalWeight: 1600
+    whitelist:
+      tags: [] #dodging a test fail like the IRS
   - type: PneumaticCannon
     gasUsage: 0
     throwItems: false
index 9e9288c8d4a38a5ce3c0af9f0e9ec53d7bd9b953..497876f3596824d69ca55031af5d4144792f0fd6 100644 (file)
@@ -16,7 +16,7 @@
         Slash: 25\r
         Piercing: 15\r
   - type: Item\r
-    size: 15\r
+    size: Normal\r
     sprite: Objects/Weapons/Melee/armblade.rsi\r
   - type: Tool\r
     qualities:\r
index c1fc668d59282088b7349e8fe77253802db6b30b..a1a4f484faa64a6b9e2f6f9aba128d31535992b8 100644 (file)
@@ -18,7 +18,7 @@
       types:
         Blunt: 8
   - type: Item
-    size: 80
+    size: Normal
   - type: Tool
     qualities:
     - Rolling
index 13f5191c103f2214010b255ec7980cff1d759283..bfddd764ca20865136648dc4af7d8c884c9eb2cd 100644 (file)
@@ -31,7 +31,7 @@
         Blunt: 5
         Structural: 20
   - type: Item
-    size: 50
+    size: Normal
     sprite: Objects/Weapons/Melee/chainsaw.rsi
   - type: DisarmMalus
   - type: RefillableSolution
index 661ee379b240d5468c367e2683b5485fdd4e2b13..ff80144f9fb966cac37709142d15d7d35a45e2e3 100644 (file)
@@ -15,7 +15,7 @@
       types:
         Slash: 12
   - type: Item
-    size: 20
+    size: Normal
   - type: Clothing
     sprite: Objects/Weapons/Melee/cult_dagger.rsi
     slots:
@@ -39,7 +39,7 @@
       types:
         Slash: 33
   - type: Item
-    size: 20
+    size: Normal
   - type: Clothing
     sprite: Objects/Weapons/Melee/cult_blade.rsi
     slots:
@@ -75,7 +75,7 @@
         Slash: 12
         Structural: 30
   - type: Item
-    size: 150
+    size: Huge
   - type: Clothing
     sprite: Objects/Weapons/Melee/cult_halberd.rsi
     quickEquip: false
index 47dfea9d867298369cc0e34d576ff6faa933828a..c00fd1ab86093ef625a193700af72ac53915357e 100644 (file)
@@ -30,7 +30,7 @@
       types:
         Blunt: 4.5
   - type: Item
-    size: 5
+    size: Small
     sprite: Objects/Weapons/Melee/e_sword.rsi
   - type: UseDelay
     delay: 1.0
@@ -95,7 +95,7 @@
       types:
         Blunt: 1
   - type: Item
-    size: 2
+    size: Tiny
     sprite: Objects/Weapons/Melee/e_dagger.rsi
   - type: UseDelay
     delay: 1.0
         shader: unshaded
         map: [ "blade" ]
   - type: Item
-    size: 5
+    size: Small
     sprite: Objects/Weapons/Melee/e_cutlass.rsi
 
 - type: entity
         shader: unshaded
         map: [ "blade" ]
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Weapons/Melee/e_sword_double.rsi
   - type: Reflect
     enabled: true
index 1a634e42fb322f521c07370f73088dce88799a12..87eb40dfe5f7a94de11a1d0eba9162efa2a7c06c 100644 (file)
@@ -29,7 +29,7 @@
         Slash: 10.5
         Structural: 60
   - type: Item
-    size: 150
+    size: Huge
   - type: Clothing
     sprite: Objects/Weapons/Melee/fireaxe.rsi
     quickEquip: false
index 9e673da49d028b10c11d205bf400f20004882fb7..ec9717ea22bf41ff74fac173245a898004ea0c2e 100644 (file)
@@ -13,5 +13,5 @@
       types:
         Blunt: 3 #You'd be better off punching people
   - type: Item
-    size: 12
+    size: Small
     sprite: Objects/Weapons/Melee/gohei.rsi
index bbd18927e1f220d540afff75591e7c30fd22b6fe..98ecaa28a66625633cf55e6acc0d15b90342e0ed 100644 (file)
     - Knife
   - type: Sprite
     sprite: Objects/Weapons/Melee/kitchen_knife.rsi
-    size: 2
     state: icon
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Weapons/Melee/kitchen_knife.rsi
   - type: GuideHelp
     guides:
@@ -57,7 +56,6 @@
     - Knife
   - type: Sprite
     sprite: Objects/Weapons/Melee/cleaver.rsi
-    size: 4
     state: butch
   - type: MeleeWeapon
     wideAnimationRotation: -135
@@ -66,7 +64,7 @@
       types:
         Slash: 10
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Weapons/Melee/cleaver.rsi
   - type: GuideHelp
     guides:
@@ -84,7 +82,7 @@
     - Knife
   - type: Sprite
     sprite: Objects/Weapons/Melee/combat_knife.rsi
-    size: 2
+    size: Tiny
     state: icon
   - type: MeleeWeapon
     wideAnimationRotation: -135
@@ -93,7 +91,7 @@
       types:
         Slash: 10
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Weapons/Melee/combat_knife.rsi
   - type: DisarmMalus
     malus: 0.225
   components:
   - type: Sprite
     sprite: Objects/Weapons/Melee/survival_knife.rsi
-    size: 2
+    size: Tiny
     state: icon
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Weapons/Melee/survival_knife.rsi
 
 - type: entity
   components:
   - type: Sprite
     sprite: Objects/Weapons/Melee/kukri_knife.rsi
-    size: 2
+    size: Tiny
     state: icon
   - type: MeleeWeapon
     attackRate: 1.0
       types:
         Slash: 15
   - type: Item
-    size: 10
+    size: Small
     sprite: Objects/Weapons/Melee/kukri_knife.rsi
 
 - type: entity
     node: icon
   - type: Sprite
     sprite: Objects/Weapons/Melee/shiv.rsi
-    size: 2
+    size: Tiny
     state: icon
   - type: MeleeWeapon
     attackRate: 1.5
       types:
         Slash: 5.5
   - type: Item
-    size: 4 #as much as a regular glass shard
+    size: Tiny #as much as a regular glass shard
     sprite: Objects/Weapons/Melee/shiv.rsi
   - type: DisarmMalus
     malus: 0.225
   - type: Construction
     graph: ReinforcedShiv
     node: icon
-    size: 2
+    size: Tiny
     state: icon
   - type: MeleeWeapon
     attackRate: 1.5
index f3bb0ceec91c3aa8a3e2d05a040a5a4048985b1b..e5046d5c1fa284412a96f59b70e6697a47184aab 100644 (file)
@@ -57,7 +57,7 @@
         Slash: 2.5
   - type: GunRequiresWield
   - type: Item
-    size: 150
+    size: Huge
   - type: DisarmMalus
   - type: Tool
     qualities:
@@ -80,7 +80,7 @@
       types:
         Slash: 6.5
   - type: Item
-    size: 10
+    size: Small
   - type: Tag
     tags:
     - Knife
     wideAnimationRotation: -135
     attackRate: 1.25
   - type: Item
-    size: 150
+    size: Huge
index 48b2d6ad2b83b9ad2995405e97f3bbbdd29149e4..11efeba5f8c001acdcce3f214192c521dbaebb09 100644 (file)
@@ -13,5 +13,5 @@
       types:
         Piercing: 1
   - type: Item
-    size: 1
+    size: Tiny
   - type: BalloonPopper
index a0f497bd2652e420a1f3d54178b4bb529206765e..85f1e4a4c79da4d4369b7db5fca889abaad4ac93 100644 (file)
@@ -26,7 +26,7 @@
       types:
         Structural: 10
   - type: Item
-    size: 80
+    size: Normal
     sprite: Objects/Weapons/Melee/pickaxe.rsi
   - type: UseDelay
     delay: 1
index d34d29d5ebe2d5dbd9ae9c7be211a1c5d922a04f..037844507ffca34759fec816716966c28cceca20 100644 (file)
@@ -47,7 +47,7 @@
       types:
         Piercing: 15
   - type: Item
-    size: 95
+    size: Huge
   - type: Clothing
     quickEquip: false
     slots:
index 25c9cf6125796da13e734c03a703b08d6cbfd91c..87b7c468c3cc4694b60ac5beefc8b13dc33130ec 100644 (file)
@@ -26,7 +26,7 @@
   - type: ItemCooldown
   - type: Item
     heldPrefix: off
-    size: 100
+    size: Large
   - type: Clothing
     sprite: Objects/Weapons/Melee/stunprod.rsi
     quickEquip: false
index 23160f13ea778527cc216d71e6198898573e1bb6..9bd9d6c12fe664991ab7be17e69e1a3e2279dec8 100644 (file)
@@ -21,7 +21,7 @@
     reflectProb: .5
     spread: 90
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Weapons/Melee/captain_sabre.rsi
   - type: Tag
     tags:
@@ -49,7 +49,7 @@
     soundHit:
         path: /Audio/Weapons/bladeslice.ogg
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Weapons/Melee/katana.rsi
   - type: DisarmMalus
 
@@ -68,7 +68,7 @@
       types:
         Slash: 30
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Weapons/Melee/energykatana.rsi
   - type: EnergyKatana
   - type: DashAbility
     soundHit:
         path: /Audio/Weapons/bladeslice.ogg
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Weapons/Melee/machete.rsi
   - type: DisarmMalus
 
     soundHit:
         path: /Audio/Weapons/bladeslice.ogg
   - type: Item
-    size: 20
+    size: Normal
   - type: Clothing
     sprite: Objects/Weapons/Melee/claymore.rsi
     slots:
     soundHit:
         path: /Audio/Weapons/bladeslice.ogg
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Weapons/Melee/cutlass.rsi
   - type: DisarmMalus
index b5f8590304453a55a24b886a06bb89ee3d570f71..e5a03d51367363f6c20fc30d1d7157df588bc14d 100644 (file)
@@ -9,7 +9,7 @@
     sprite: Objects/Tools/Toolboxes/toolbox_red.rsi
     state: icon
   - type: Item
-    size: 150
+    size: Huge
     sprite: Objects/Tools/Toolboxes/toolbox_red.rsi
   - type: MeleeWeapon
     wideAnimationRotation: -135
index c76ebf4d7833b5d6e71ba5207e304184711934be..997c3771d56a344514a018d2e86c223624cf3109 100644 (file)
@@ -8,7 +8,7 @@
     sprite: Objects/Weapons/Melee/white_cane.rsi
     state: icon
   - type: Item
-    size: 15
+    size: Normal
     sprite: Objects/Weapons/Melee/white_cane.rsi
   - type: MeleeWeapon
     wideAnimationRotation: 45
index ebd568c3b8f6438fbb7e33c4db94adab667a02b3..54ee2d90a505ff6f1189ba275dd0c34e6d123647 100644 (file)
@@ -5,7 +5,7 @@
   description: Linked together with some spare cuffs and metal.
   components:
   - type: Item
-    size: 20
+    size: Normal
   - type: Sprite
     sprite: Objects/Weapons/Throwable/bola.rsi
     state: icon
index 9f18b94d2c49b72a3368d815aed76e93e6652026..ece4ec4ef486235d3cf89d1ac4b08004b9fe5ad4 100644 (file)
@@ -9,7 +9,7 @@
     - state: icon
       map: ["enum.TriggerVisualLayers.Base"]
   - type: Item
-    size: 5
+    size: Small
   - type: Clothing
     quickEquip: false
     slots:
     - state: empty
       map: [ "enum.ConstructionVisuals.Layer" ]
   - type: Item
-    size: 8
+    size: Small
   - type: PayloadCase
   - type: Construction
     graph: ModularGrenadeGraph
index 92e7dbd4c1dff58717f2a1d034a1c04eb8c63479..bf4a155ee47e151f33ccb67c646d6d968a2efb22 100644 (file)
@@ -31,7 +31,7 @@
   - type: ItemCooldown
   - type: Item
     heldPrefix: off
-    size: 20
+    size: Normal
   - type: Clothing
     sprite: Objects/Weapons/Melee/stunbaton.rsi
     quickEquip: false
@@ -81,7 +81,7 @@
         Blunt: 20
     bluntStaminaDamageFactor: 1.5
   - type: Item
-    size: 20
+    size: Normal
   - type: Clothing
     sprite: Objects\Weapons\Melee\truncheon.rsi
     quickEquip: false
           Blunt: 0 # melee weapon to allow flashing individual targets
       angle: 10
     - type: Item
-      size: 5
+      size: Small
       sprite: Objects/Weapons/Melee/flash.rsi
     - type: ItemCooldown
     - type: StaticPrice
index 32325603c1d39edfe9f716f031a8c0b9a70ba794..bcc8e0dce4903c50f18bf262781bb80803626512 100644 (file)
@@ -4,7 +4,7 @@
   abstract: true
   components:
   - type: Item
-    size: 5
+    size: Small
   - type: Clickable
   - type: InteractionOutline
   - type: MovedByPressure
index 9f1de3ff39d373adde8c02dd30a1c92fd3ea283b..6d5e0e3dcddd10f42dc190c29e74138a6a00d576 100644 (file)
@@ -47,7 +47,8 @@
   - type: Pullable
   - type: Occluder
   - type: Storage
-    capacity: 200
+    maxSlots: 32
+    maxItemSize: Normal
     whitelist:
       tags:
         - Document
index aaff4e1e288c1aea1d6a8d055c0613ecb9c0642b..8d669ab6d23d10f40e5605a30bacdf1154739c76 100644 (file)
       map: ["foldedLayer"]
       visible: false
   - type: Item
-    size: 50
+    size: Large
   - type: Appearance
   - type: MeleeWeapon
     damage:
   - type: Rotatable
   - type: Sprite
     state: steel-bench
+
index da2b82270f7d7a4780365b3a939feecf126c2802..29061a06b13a04872c3f0c2fb3941a160ed5ef53 100644 (file)
@@ -25,7 +25,8 @@
       - !type:DoActsBehavior
         acts: [ "Destruction" ]
   - type: Storage
-    capacity: 50
+    maxSlots: 6
+    maxItemSize: Normal
   - type: ContainerContainer
     containers:
       storagebase: !type:Container
@@ -67,7 +68,7 @@
       - id: ClothingUniformJumpskirtColorPink
         prob: 0.05
       - id: ClothingUniformJumpsuitLoungewear
-        prob: 0.05    
+        prob: 0.05
         orGroup: dressermainloot
       - id: Pen # It`s pen.
         prob: 0.03
@@ -97,7 +98,7 @@
         prob: 0.03
         orGroup: dressermainloot
       - id: ClothingUniformJumpsuitColorRed
-        prob: 0.03 
+        prob: 0.03
         orGroup: dressermainloot
       - id: ClothingUniformJumpskirtColorRed
         prob: 0.03
         prob: 0.03
         orGroup: dresserthirdloot
       - id: ClothingUnderSocksCoder
-        prob: 0.03 
+        prob: 0.03
         orGroup: dressermainloot
       - id: ClothingUnderSocksBee
         prob: 0.03
         orGroup: dresserthirdloot
       - id: PlushieLizard
         prob: 0.03
-        orGroup: dresserthirdloot 
+        orGroup: dresserthirdloot
       - id: ClothingOuterSuitShrineMaiden
         prob: 0.03
         orGroup: dressersecondloot
       - id: BrokenBottle
         prob: 0.001
         orGroup: dressersecondloot
-      - id: FoodMeatRotten 
+      - id: FoodMeatRotten
         prob: 0.001
         orGroup: dressersecondloot
       - id: ClothingOuterSkub
index 695a529734f038dd4de77ea6e21770f8911457e7..406ff7fa48e67b506bbc6be286dc2aff773ba770 100644 (file)
@@ -7,7 +7,7 @@
     - type: Transform
       noRot: true
     - type: Item
-      size: 25
+      size: Normal
     - type: Sprite
       sprite: Structures/Furniture/rollerbeds.rsi
       noRot: true
index 132da2f1a841f23399e88b9cf02bc49ea7d456cf..1eda94ebf4250c881ec8d602db31c068d954c645 100644 (file)
@@ -8,7 +8,7 @@
     mode: SnapgridCenter
   components:
   - type: Item
-    size: 10
+    size: Normal
   - type: Transform
     anchored: true
   - type: Damageable
index 6fa085646ad4ae490b6f6ca8361ac55e2762654f..4466b21b4455deec12dcbd1ca199279ce0463f9c 100644 (file)
@@ -87,7 +87,7 @@
   description: Air sensor assembly. An assembly of air sensors?
   components:
     - type: Item
-      size: 10
+      size: Small
     - type: Anchorable
     - type: Construction
       graph: AirSensor
index b79921815b6c77dc18215cf0119ebd2584f963b9..f0ce9c46d36d0cf39b26561855ec2a634aaf7536 100644 (file)
@@ -6,7 +6,8 @@
   description: A cabinet for all your filing needs.
   components:
   - type: Storage
-    capacity: 80
+    maxSlots: 12
+    maxItemSize: Normal
     whitelist:
       tags:
         - Document
@@ -65,7 +66,8 @@
   description: A small drawer for all your filing needs, Now with wheels!
   components:
   - type: Storage
-    capacity: 50
+    maxSlots: 8
+    maxItemSize: Normal
     whitelist:
       tags:
         - Document
index 7099e1b45d3ce46abcea91eb48939addc51b91be..6bad8c319fb937d4ad4af07eee7319b070902723 100644 (file)
@@ -50,7 +50,8 @@
           True: { visible: false }
           False: { visible: true }
   - type: Storage
-    capacity: 525
+    maxSlots: 60
+    maxItemSize: Normal
     storageOpenSound: /Audio/Effects/closetopen.ogg
     storageCloseSound: /Audio/Effects/closetclose.ogg
     whitelist:
index f819946a4d2820d3674e54ff4f3134da9ad26d48..c9297d901b89f4eeb7258a03d8a5c3a1186f1206 100644 (file)
@@ -52,7 +52,9 @@
       storagebase: !type:Container
         ents: [ ]
   - type: Storage
-    capacity: 50
+    maxSlots: 5
+    maxItemSize: Huge
+    maxTotalWeight: 40
 
 - type: artifactEffect
   id: EffectPhasing