Add Milk Crates: Record, Milk, and Syndicate Record variants - #5561
Conversation
Adds three milk crate structures sharing an abstract BaseMilkCrate (movable structure, storage UI, destructible), each with a gradual fill sprite via StorageFillVisualizer (same pattern as CdRack): - RecordMilkCrate: stores only vinyl sleeves via a new VinylSleeve tag on BaseVinylSleeve and BaseVinylSleeveFilled; 6 fill levels (recordcrate-0..5). - MilkCrate: stores only milk cartons via a new MilkCarton tag on DrinkMilkCarton, DrinkSoyMilkCarton, DrinkOatMilkCarton and their empty DrinkCarton* variants; the 4x4 grid fits 4 cartons, matching its 5 fill levels (milkcrate-0..4). - SyndicateMilkCrate: stores sleeves like the record crate and is marked as syndicate contraband; 6 fill levels (syndicrate-0..5). The milk and record crates are constructible from 4 plastic sheets (Storage crafting category, MilkCrateGraph); the syndicate crate is deliberately absent from the crafting menu but keeps its graph node for deconstruction. All crates deconstruct with a screwdriver. milkcrate.rsi holds all 17 sprite states.
📝 WalkthroughSummaryAdds three storage structures:
The milk and record crates use The change adds crate prototypes, construction graphs and recipes, tags, carton and vinyl-sleeve tag assignments, and milk-crate sprite metadata. Gameplay impactPlayers can store carton and vinyl-sleeve items in dedicated containers. Crate appearance changes as storage fills. Syndicate crates remain restricted to contraband acquisition while supporting normal deconstruction. Risk areas
Guideline gaps
WalkthroughAdded three milk crate variants with tagged storage, gradual fill sprites, damage behavior, construction recipes, and disassembly paths. Added milk carton and vinyl sleeve tags to supported entities. ChangesMilk crate storage
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Resources/Prototypes/_Starlight/Entities/Structures/Storage/milkcrates.yml`:
- Around line 62-68: Update the Storage.grid entries for MilkCrate to [0,0,3,0],
and for RecordMilkCrate and SyndicateMilkCrate to [0,0,3,1]. Preserve the
existing storage settings and whitelist configuration.
In
`@Resources/Prototypes/_Starlight/Recipes/Construction/Graphs/furniture/milkcrate.yml`:
- Around line 34-63: Update the reverse screwdriver edges for recordMilkCrate,
syndicateMilkCrate, and the preceding crate node to run EmptyAllContainers
before SpawnPrototype, preserving stored contents before each crate is
destroyed.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: ae694356-3aa8-4e37-852b-685e58b564c3
⛔ Files ignored due to path filters (17)
Resources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/milkcrate-0.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/milkcrate-1.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/milkcrate-2.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/milkcrate-3.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/milkcrate-4.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/recordcrate-0.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/recordcrate-1.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/recordcrate-2.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/recordcrate-3.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/recordcrate-4.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/recordcrate-5.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/syndicrate-0.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/syndicrate-1.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/syndicrate-2.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/syndicrate-3.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/syndicrate-4.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/syndicrate-5.pngis excluded by!**/*.png
📒 Files selected for processing (8)
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.ymlResources/Prototypes/Entities/Objects/Consumable/Drinks/trash_drinks.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/base.ymlResources/Prototypes/_Starlight/Entities/Structures/Storage/milkcrates.ymlResources/Prototypes/_Starlight/Recipes/Construction/Graphs/furniture/milkcrate.ymlResources/Prototypes/_Starlight/Recipes/Construction/milkcrate.ymlResources/Prototypes/_Starlight/tags.ymlResources/Textures/_Starlight/Objects/Storage/milkcrate.rsi/meta.json
c5709a9
Short description
Adds three milk crate storage structures with gradual fill sprites that update as the crate is filled:
The milk and record crates can be built from 4 plastic sheets (Storage crafting category). The syndicate crate is intentionally absent from the crafting menu but keeps its construction graph node, so it can still be deconstructed. All crates deconstruct with a screwdriver and refund their plastic.
Implementation notes:
VinylSleevetag on the sleeve bases and a newMilkCartontag on the milk carton entities (both marked with Starlight comments where ported/upstream files are touched) drive the storage whitelists.StorageFillVisualizerpattern as the CD rack._Starlighttrees; sprites are in_Starlight/Objects/Storage/milkcrate.rsi(17 states).Why we need to add this
The Radio Host update (#5288) added vinyl sleeves but no dedicated way to store or transport a collection. The record crate gives radio hosts tidy vinyl storage that visibly fills up, the milk crate gives service a themed carton carrier, and the syndicate variant provides flavor storage for contraband records.
Media (Video/Screenshots)
Crate.Demo.mp4
Checks
Changelog
🆑 Kamila, AegisShield