From 855268d1461adab920e0ab3f562719a1d7b55812 Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Mon, 20 Oct 2025 19:47:53 -0500 Subject: [PATCH 01/17] Costume Bundles + Rearrange AutoDrobe (#1903) This PR adds "costume bundles", a storage item for full costumes in a single bag. Many items in the AutoDrobe have been replaced with their respective costume bundles. You can also equip costume bundles in loadouts. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In addition, the AutoDrobe's stock has been completely rearranged, ideally to make things more intuitive. Clown / mime / musician stuff first, then costume bundles, then everything else (roughly grouped by item slot category). Halloween feature. Also, the AutoDrobe's stock was very messy and unintuitive and I felt it was good of a time as any to clean up. New base entity for costume bundles, and then individual bundle prototypes for each costume. Some non-clothing entity prototypes were given a `CostumeItem` tag to allow them to be inserted into costume bundles. Many individual items in AutoDrobe and the theatrical performance crates were replaced with bundles; ultimately, nothing should be actually "lost". Also, rearranged AutoDrobe. A new loadout category, "Costumes", with many costume bundles. You get one. Some bundles have playtime requirements - namely the jester, circus clown, and musician bundles. Added a stupid C# check to prevent a debug assert error related to attempting to set ContainerHeld's fill status before the container has been initialized. No inhands sorry I'm tired Costume bundles: image Loadouts: image Rearranged AutoDrobe:
Click to expand image image image image image image
Theatrical Performances Crate: image - [x] I have read and am following the [Pull Request and Changelog Guidelines](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html). - [x] I have added media to this PR or it does not require an ingame showcase. - [x] I have tested any changes or additions. - [x] I can confirm this PR contains no AI-generated content, and did not use any AI-generated content. Only thing is the massive restructure of AutoDrobe inventory and mild rearrangement of the contents of the theatrical performances crate - may cause annoying merge conflicts later **Changelog** :cl: - add: Many individual costume parts in the AutoDrobe and theatrical performances crate have been replaced with "costume bundles", a storage item for costume parts specifically. - tweak: The AutoDrobe's inventory has been majorly consolidated and rearranged. The items inside are sorted by clown, mime, and musician items first, then costume bundles, then everything else. - add: You can now take a costume bundle in your loadouts - find it under Items! You know, in case an occasion that necessitates bringing your own costume arises. --- .../ContainerHeld/ContainerHeldSystem.cs | 3 +- .../Catalog/Fills/Crates/service.yml | 2 +- .../VendingMachines/Inventories/theater.yml | 2 +- .../Objects/Consumable/Food/meals.yml | 3 + .../Entities/Objects/Weapons/Melee/gohei.yml | 3 + .../Entities/Objects/Storage/costumes.yml | 562 ++++++++++++++++++ .../_DEN/Loadouts/Generic/Items/costumes.yml | 265 +++++++++ Resources/Prototypes/_DEN/tags.yml | 3 + .../Storage/costume_bundle.rsi/icon-clown.png | Bin 0 -> 373 bytes .../costume_bundle.rsi/icon-musician.png | Bin 0 -> 376 bytes .../Storage/costume_bundle.rsi/icon.png | Bin 0 -> 373 bytes .../Storage/costume_bundle.rsi/label.png | Bin 0 -> 188 bytes .../Storage/costume_bundle.rsi/meta.json | 32 + .../Storage/costume_bundle.rsi/outfit.png | Bin 0 -> 239 bytes .../costume_bundle.rsi/wrapper-fill.png | Bin 0 -> 141 bytes .../Storage/costume_bundle.rsi/wrapper.png | Bin 0 -> 160 bytes 16 files changed, 872 insertions(+), 3 deletions(-) create mode 100644 Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml create mode 100644 Resources/Prototypes/_DEN/Loadouts/Generic/Items/costumes.yml create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/icon-clown.png create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/icon-musician.png create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/icon.png create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/label.png create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/meta.json create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit.png create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper-fill.png create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper.png diff --git a/Content.Shared/ContainerHeld/ContainerHeldSystem.cs b/Content.Shared/ContainerHeld/ContainerHeldSystem.cs index f09cd4443d4..e0c43ab1dc5 100644 --- a/Content.Shared/ContainerHeld/ContainerHeldSystem.cs +++ b/Content.Shared/ContainerHeld/ContainerHeldSystem.cs @@ -23,7 +23,8 @@ public override void Initialize() private void OnContainerModified(EntityUid uid, ContainerHeldComponent comp, ContainerModifiedMessage args) { - if (!(HasComp(uid) + if (!(TryComp(uid, out var storage) + && storage.Container is not null // DEN - Bugfix lol && TryComp(uid, out var appearance) && TryComp(uid, out var item))) { diff --git a/Resources/Prototypes/Catalog/Fills/Crates/service.yml b/Resources/Prototypes/Catalog/Fills/Crates/service.yml index 9d53c1e2b4e..a8c824a3e2c 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/service.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/service.yml @@ -121,7 +121,7 @@ name: theatrical performances crate description: Contains a moth cloak, barber scissors, maid uniform, clown and mime attributes, and other performance charms. components: - - type: EntityTableContainerFill + - type: EntityTableContainerFill # TODO: Costume bundles containers: entity_storage: !type:AllSelector children: diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml index 7e7bb371625..564a1f48ef6 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml @@ -1,6 +1,6 @@ - type: vendingMachineInventory id: AutoDrobeInventory - startingInventory: + startingInventory: # TODO: Costume bundles ClothingHeadHatJester: 1 ClothingUniformJumpsuitJester: 1 ClothingHeadHatJesterAlt: 1 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml index 4561464d187..a9ace2addec 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml @@ -534,6 +534,9 @@ Quantity: 10 - ReagentId: Allicin Quantity: 5 + - type: Tag # DEN: Allow item to be inserted in costume bundles + tags: + - CostumeItem # Tastes like pain. - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml index ff39bc7a576..61e7b5f70ae 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml @@ -15,3 +15,6 @@ - type: Item size: Small sprite: Objects/Weapons/Melee/gohei.rsi + - type: Tag # DEN: Add costume item tag + tags: + - CostumeBundle diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml new file mode 100644 index 00000000000..056b5be41c4 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml @@ -0,0 +1,562 @@ +# Costume bundles +# Used to consolidate multi-item costumes into a single item for drobes. + +- type: entity + abstract: true + parent: [BaseStorageItem, BaseBagOpenClose] + id: BaseCostumeBundle + name: costume bundle + description: A bag containing assorted costume parts. + components: + - type: Sprite + sprite: _DEN/Objects/Storage/costume_bundle.rsi + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#ffffff" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: Icon + sprite: _DEN/Objects/Storage/costume_bundle.rsi + state: icon + - type: Item + size: Large + storedRotation: 90 + heldPrefix: empty + # sprite: _DEN/Objects/Storage/costume_bundle.rsi + - type: Storage + maxItemSize: Normal + grid: + - 0,0,5,3 + whitelist: + tags: + - CostumeItem + components: + - Clothing + - type: ContainerHeld + threshold: 1 + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ToggleableVisuals.Enabled: + enum.ToggleableVisuals.Layer: + True: {visible: true} + False: {visible: false} + - type: StaticPrice + price: 10 + +- type: entity + parent: BaseCostumeBundle + id: EmptyCostumeBundle + description: A bag for storing assorted costume parts. + components: + - type: Sprite + sprite: _DEN/Objects/Storage/costume_bundle.rsi + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#ffffff" + visible: false # starts with nothing + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleAngel + name: angel costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#f5b8c3" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#efec98" + - type: StorageFill + contents: + - id: ClothingHeadHalo + - id: ClothingUniformJumpskirtAngelDress + - id: ClothingHandsAngelGloves + - id: ClothingShoesAngelSandals + - id: ClothingNeckAngelWings + - id: HandheldHarpInstrument + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleBunnySuit + name: bunny suit costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#48494e" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatBunny + - id: ClothingCostumeBunnySuit + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleBurglar + name: burglar costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#3e3735" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingMaskBurglar + - id: ClothingUniformBurglarJumpsuit + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleCardborg + name: cardborg costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#70736c" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatCardborg + - id: ClothingOuterCardborg + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleChicken + name: chicken costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#ffc800" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatChickenhead + - id: ClothingOuterSuitChicken + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleCircusClown + name: circus clown costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#ffd85d" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#74ff33" + - type: Icon + state: icon-clown + - type: StorageFill + contents: + - id: ClothingHeadHatCircusClown + - id: ClothingMaskClownNose + - id: ClothingNeckRuffle + - id: ClothingUniformCircusClown + - id: ClothingShoesCircus + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleDevil + name: devil costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#4b3b56" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#d349c9" + - type: StorageFill + contents: + - id: ClothingHeadDevilHorns + - id: ClothingHeadJesterEvilHat + - id: ClothingNeckDevilWings + - id: ClothingUniformJesterEvil + - id: ClothingShoesJesterEvilJanglers + - id: DevilPitchfork + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleGladiator + name: gladiator costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#e1b73d" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatGladiator + - id: ClothingUniformJumpsuitGladiator + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleJester + name: jester costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#dd1818" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#74ff33" + - type: Icon + state: icon-clown + - type: StorageFill + contents: + - id: ClothingHeadHatJester + - id: ClothingHeadHatJesterAlt + - id: ClothingUniformJumpsuitJester + - id: ClothingUniformJumpsuitJesterAlt + - id: ClothingShoesJester + - id: ClothingShoesJester + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleJudge + name: judge costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#2e2e2e" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatPwig + - id: ClothingOuterRobesJudge + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleMonkey + name: monkey costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#914800" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatAnimalMonkey + - id: ClothingOuterSuitMonkey + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleMusicianMarching + name: marching band costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#463c6a" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#6f56b8" + - type: Icon + state: icon-musician + - type: StorageFill + contents: + - id: ClothingHeadHatMusicianShako + - id: ClothingUniformJumpsuitMusicianMarchingBand + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleMusicianLoungeSinger + name: lounge singer costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#463c6a" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#6f56b8" + - type: Icon + state: icon-musician + - type: StorageFill + contents: + - id: ClothingUniformMusicianSingerDress + - id: ClothingHandsMusicianSingerGloves + - id: ClothingNeckFeatherBoa + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundlePirate + name: pirate costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#dfe1de" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatPirate + - id: ClothingHeadBandRed + - id: ClothingEyesEyepatch + - id: ClothingUniformJumpsuitPirate + - id: ClothingOuterCoatPirate + - id: ClothingShoesBootsLaceup + - id: FoamCutlass + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundlePerformer + name: performer costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#474f63" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#70cac4" + - type: StorageFill + contents: + - id: ClothingUniformJumpskirtPerformer + - id: ClothingShoesBootsPerformer + - id: FoodMealMemoryleek + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleRedRaccoon + name: red raccoon costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#e48a1b" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatRedRacoon + - id: ClothingOuterRedRacoon + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleSafari + name: safari costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#d3bf86" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadSafari + - id: ClothingUniformJumpsuitSafari + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleSailor + name: sailor costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#dedbec" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadSailorCap + - id: ClothingNeckSailorAscot + - id: ClothingUniformSailorSuit + - id: ClothingShoesBootsLaceup + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleSanta + name: santa costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#d73827" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#f2c735" + - type: StorageFill + contents: + - id: ClothingHeadHatSantahat + - id: ClothingOuterSanta + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleShrineMaiden + name: shrine maiden costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#ff1f24" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatShrineMaidenWig + - id: ClothingOuterSuitShrineMaiden + - id: Gohei + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleSkub + name: skub costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#fcd4d4" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatSkub + - id: ClothingOuterSkub + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleWitch + name: witch costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#1b1b1b" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingHeadHatWitch1 + - id: ClothingHeadHatWitch + - id: ClothingOuterSuitWitchRobes + +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleYakuza + name: yakuza costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#ae2354" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#dd6b17" + - type: StorageFill + contents: + - id: ClothingUniformJumpsuitDameDane + - id: ClothingOuterDameDane + - id: ClothingShoesDameDane diff --git a/Resources/Prototypes/_DEN/Loadouts/Generic/Items/costumes.yml b/Resources/Prototypes/_DEN/Loadouts/Generic/Items/costumes.yml new file mode 100644 index 00000000000..3c0e7434223 --- /dev/null +++ b/Resources/Prototypes/_DEN/Loadouts/Generic/Items/costumes.yml @@ -0,0 +1,265 @@ +## Job-specific + +- type: loadout + id: LoadoutCostumeBundleCircusClown + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterPlaytimeRequirement + tracker: JobClown + min: 108000 # 30 hours; ~10 full shifts + - !type:CharacterJobRequirement + jobs: + - Clown + items: + - CostumeBundleCircusClown + +- type: loadout + id: LoadoutCostumeBundleJester + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterPlaytimeRequirement + tracker: JobClown + min: 108000 # 30 hours; ~10 full shifts + - !type:CharacterJobRequirement + jobs: + - Clown + items: + - CostumeBundleJester + +- type: loadout + id: LoadoutCostumeBundleMusicianMarching + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterPlaytimeRequirement + tracker: JobMusician + min: 108000 # 30 hours; ~10 full shifts + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - CostumeBundleMusicianMarching + +- type: loadout + id: LoadoutCostumeBundleMusicianLoungeSinger + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterPlaytimeRequirement + tracker: JobMusician + min: 108000 # 30 hours; ~10 full shifts + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - CostumeBundleMusicianLoungeSinger + +## Other + +- type: loadout + id: LoadoutCostumeBundleAngel + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleAngel + +- type: loadout + id: LoadoutCostumeBundleBunnySuit + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleBunnySuit + +- type: loadout + id: LoadoutCostumeBundleBurglar + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleBurglar + +- type: loadout + id: LoadoutCostumeBundleCardborg + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleCardborg + +- type: loadout + id: LoadoutCostumeBundleChicken + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleChicken + +- type: loadout + id: LoadoutCostumeBundleDevil + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleDevil + +- type: loadout + id: LoadoutCostumeBundleGladiator + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleGladiator + +- type: loadout + id: LoadoutCostumeBundleJudge + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleJudge + +- type: loadout + id: LoadoutCostumeBundleMonkey + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleMonkey + +- type: loadout + id: LoadoutCostumeBundlePirate + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundlePirate + +- type: loadout + id: LoadoutCostumeBundlePerformer + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundlePerformer + +- type: loadout + id: LoadoutCostumeBundleRedRaccoon + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleRedRaccoon + +- type: loadout + id: LoadoutCostumeBundleSafari + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleSafari + +- type: loadout + id: LoadoutCostumeBundleSailor + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleSailor + +- type: loadout + id: LoadoutCostumeBundleSanta + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleSanta + +- type: loadout + id: LoadoutCostumeBundleShrineMaiden + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleShrineMaiden + +- type: loadout + id: LoadoutCostumeBundleSkub + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleSkub + +- type: loadout + id: LoadoutCostumeBundleWitch + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleWitch + +- type: loadout + id: LoadoutCostumeBundleYakuza + category: Costumes + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCostumeBundles + items: + - CostumeBundleYakuza diff --git a/Resources/Prototypes/_DEN/tags.yml b/Resources/Prototypes/_DEN/tags.yml index 21c486c91c5..a468cc3e9c8 100644 --- a/Resources/Prototypes/_DEN/tags.yml +++ b/Resources/Prototypes/_DEN/tags.yml @@ -1,5 +1,8 @@ # alphabetical order PLEASE # also document their purpose +- type: Tag + id: CostumeItem # Used for non-clothing items that should be allowed to fit in costume bundles. + - type: Tag id: TeddyRibbon # Ribbon slot for teddy bears diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/icon-clown.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/icon-clown.png new file mode 100644 index 0000000000000000000000000000000000000000..c80b2779eb8d334c2219537973bcb763e0fc2965 GIT binary patch literal 373 zcmV-*0gC>KP)Px$FG)l}R9J=Wma$92P!PsH#nvE%B4o*$!Tn__N~iuM!O6wRLC_(CLWfRWI!XSL zPDSZ-w>!KwOF%-FfI?i%(7~5?HBhMUH-C5cPx$GD$>1R9J=WmN84iP!PxeN?U_air|nn`2zAXb?IWKd6eQb?M$O zk*O|SI^E$Hcv&+D61oHw;$nslzPxJ#1%1Eye|P`fy_b7{!|~rak_He_WuuFt$SQY7 zT3jg=4o72c(ydp^kccW96V?Xm;>@fEeGdTOb+^OI&o2M~Gi#-kl?hP?hNH0_^gTR3 zO^mwxhes5fQqO18#+)Jp`1$H2Ng6eUWxivnfwr-}1y`3ZTc`i*{KBaJcz*)`EMD)7 zHCpRHo~6jMR2+Bk5wv0;&r_lZjpU8zb0sF4#zjt W{AfnX9)7I=0000KP)Px$FG)l}R9J=WmLX5WP!PxekZrUi%YwsFSJziHGqrsKJ_QDaAOTSU31VtypMr0& zshO#Fb#-qRN1BN?KvD!$Oz?U)nk<3$)Bn5s_pa~V100V3&XF`gYh7`4aU8R9ccjIY zQo(REHa6XQwG6b@6~_eIKwX@O%%JZ90KD#Qc=`ST03afxlwz3>bznFen?c{h)8m6x zcYAk_d|R6NY}%MpWB}h^og_)4CTHe5mKtaq_9<9gp6&eo7w0{ze)IAM0GK?#T5Gh{ zfix?SW`#KJ;3H_oK$;bZLLX7+i@P8`1vV4=@Ha;A8(JAb6#9F|vhM+{b#--p0|4mu zes0|9$=CgmZ%fQ))5fhR>cD!n42a0O32W-b)ua=>2PEs5hzw^PAN)b$a5x;FQGsZN T>-40F00000NkvXXu0mjfC(5H> literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/label.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/label.png new file mode 100644 index 0000000000000000000000000000000000000000..afeae01c718cd429500cf56ff1107aeef5109673 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Wu7jMArY;~ z2@gTe~DWM4f1)@8Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/meta.json b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/meta.json new file mode 100644 index 00000000000..87af3ca8623 --- /dev/null +++ b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "license": "CC0-1.0", + "copyright": "Sprites by portfiend (GitHub)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon-clown" + }, + { + "name": "icon-musician" + }, + { + "name": "label" + }, + { + "name": "outfit" + }, + { + "name": "wrapper" + }, + { + "name": "wrapper-fill" + } + ] +} diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit.png new file mode 100644 index 0000000000000000000000000000000000000000..792ff0027d3ad9cf9e71559bdcaef276b74d67b4 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}D?MEtLn2y} z6C_v{Cy4MEB&fIt-#xST|HqT&ORFcR>Rp@`U-RM1|D){w|NsB{E6sZN2&d(Qq|+C5 zk3ADel0E3MN_oqYqbnA*<*)}x_gE!dVPt;CAQogAQ~j%}k$Fe!WOu9?yQ*>_7n2;E%voOMz5 mk%i&1{Y`-eTyBh885yo-mw1)_)7uYpG=rzBpUXO@geCyMEnam1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper-fill.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..6d39a3edd9a076e0fd68e113ef7c487d371d4800 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}?w&4=ArY-_ zuWjUIP~c%cIOA`*nf8qiwvYGKck-om)cL<{$aU{tno-W`(Qn=%aY4>s@O8?|vp}6d j&`>__vDm~qkB$zr*L5NaTPO2A1POb(`njxgN@xNA0^Kcu literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper.png new file mode 100644 index 0000000000000000000000000000000000000000..690e4a40190042a24fd2e84bd705cf1d4ae7fe33 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}QJyZ2ArY-_ zryb-ypulrv!7G>T|9K);_ApHQ;qdl*;l>JhN4nb9iY*yhz9jI1I74 Date: Tue, 17 Mar 2026 21:23:59 -0500 Subject: [PATCH 02/17] comment out missing costumes --- .../Entities/Objects/Fun/weapons.yml | 3 + .../Entities/Objects/Weapons/Melee/gohei.yml | 4 +- .../Entities/Objects/Storage/costumes.yml | 306 ++++++------------ .../Entities/Objects/Storage/costumes_job.yml | 95 ++++++ 4 files changed, 205 insertions(+), 203 deletions(-) create mode 100644 Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml diff --git a/Resources/Prototypes/Entities/Objects/Fun/weapons.yml b/Resources/Prototypes/Entities/Objects/Fun/weapons.yml index f9a6e874acd..0f2548b257b 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/weapons.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/weapons.yml @@ -211,6 +211,9 @@ sprite: Objects/Weapons/Melee/cutlass.rsi shape: - 0,0,0,2 + - type: Tag # DEN: Allow item be inserted in costume bundles + tags: + - CostumeItem - type: entity parent: [ BaseItem, BaseToySword ] diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml index 61e7b5f70ae..d123774a81d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml @@ -15,6 +15,6 @@ - type: Item size: Small sprite: Objects/Weapons/Melee/gohei.rsi - - type: Tag # DEN: Add costume item tag + - type: Tag # DEN: Allow item be inserted in costume bundles tags: - - CostumeBundle + - CostumeItem diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml index 056b5be41c4..f2b93cd51ca 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml @@ -66,69 +66,69 @@ - state: label color: "#dd6b17" -- type: entity - parent: BaseCostumeBundle - id: CostumeBundleAngel - name: angel costume bundle - components: - - type: Sprite - layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] - color: "#f5b8c3" - - state: wrapper-fill - color: "#ffffff22" - - state: wrapper - - state: label - color: "#efec98" - - type: StorageFill - contents: - - id: ClothingHeadHalo - - id: ClothingUniformJumpskirtAngelDress - - id: ClothingHandsAngelGloves - - id: ClothingShoesAngelSandals - - id: ClothingNeckAngelWings - - id: HandheldHarpInstrument +# - type: entity +# parent: BaseCostumeBundle +# id: CostumeBundleAngel +# name: angel costume bundle +# components: +# - type: Sprite +# layers: +# - state: outfit +# map: [ "enum.ToggleableVisuals.Layer" ] +# color: "#f5b8c3" +# - state: wrapper-fill +# color: "#ffffff22" +# - state: wrapper +# - state: label +# color: "#efec98" +# - type: StorageFill +# contents: +# - id: ClothingHeadHalo +# - id: ClothingUniformJumpskirtAngelDress +# - id: ClothingHandsAngelGloves +# - id: ClothingShoesAngelSandals +# - id: ClothingNeckAngelWings +# - id: HandheldHarpInstrument -- type: entity - parent: BaseCostumeBundle - id: CostumeBundleBunnySuit - name: bunny suit costume bundle - components: - - type: Sprite - layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] - color: "#48494e" - - state: wrapper-fill - color: "#ffffff22" - - state: wrapper - - state: label - color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatBunny - - id: ClothingCostumeBunnySuit +# - type: entity +# parent: BaseCostumeBundle +# id: CostumeBundleBunnySuit +# name: bunny suit costume bundle +# components: +# - type: Sprite +# layers: +# - state: outfit +# map: [ "enum.ToggleableVisuals.Layer" ] +# color: "#48494e" +# - state: wrapper-fill +# color: "#ffffff22" +# - state: wrapper +# - state: label +# color: "#dd6b17" +# - type: StorageFill +# contents: +# - id: ClothingHeadHatBunny +# - id: ClothingCostumeBunnySuit -- type: entity - parent: BaseCostumeBundle - id: CostumeBundleBurglar - name: burglar costume bundle - components: - - type: Sprite - layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] - color: "#3e3735" - - state: wrapper-fill - color: "#ffffff22" - - state: wrapper - - state: label - color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingMaskBurglar - - id: ClothingUniformBurglarJumpsuit +# - type: entity +# parent: BaseCostumeBundle +# id: CostumeBundleBurglar +# name: burglar costume bundle +# components: +# - type: Sprite +# layers: +# - state: outfit +# map: [ "enum.ToggleableVisuals.Layer" ] +# color: "#3e3735" +# - state: wrapper-fill +# color: "#ffffff22" +# - state: wrapper +# - state: label +# color: "#dd6b17" +# - type: StorageFill +# contents: +# - id: ClothingMaskBurglar +# - id: ClothingUniformBurglarJumpsuit - type: entity parent: BaseCostumeBundle @@ -170,54 +170,29 @@ - id: ClothingHeadHatChickenhead - id: ClothingOuterSuitChicken -- type: entity - parent: BaseCostumeBundle - id: CostumeBundleCircusClown - name: circus clown costume bundle - components: - - type: Sprite - layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] - color: "#ffd85d" - - state: wrapper-fill - color: "#ffffff22" - - state: wrapper - - state: label - color: "#74ff33" - - type: Icon - state: icon-clown - - type: StorageFill - contents: - - id: ClothingHeadHatCircusClown - - id: ClothingMaskClownNose - - id: ClothingNeckRuffle - - id: ClothingUniformCircusClown - - id: ClothingShoesCircus - -- type: entity - parent: BaseCostumeBundle - id: CostumeBundleDevil - name: devil costume bundle - components: - - type: Sprite - layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] - color: "#4b3b56" - - state: wrapper-fill - color: "#ffffff22" - - state: wrapper - - state: label - color: "#d349c9" - - type: StorageFill - contents: - - id: ClothingHeadDevilHorns - - id: ClothingHeadJesterEvilHat - - id: ClothingNeckDevilWings - - id: ClothingUniformJesterEvil - - id: ClothingShoesJesterEvilJanglers - - id: DevilPitchfork +# - type: entity +# parent: BaseCostumeBundle +# id: CostumeBundleDevil +# name: devil costume bundle +# components: +# - type: Sprite +# layers: +# - state: outfit +# map: [ "enum.ToggleableVisuals.Layer" ] +# color: "#4b3b56" +# - state: wrapper-fill +# color: "#ffffff22" +# - state: wrapper +# - state: label +# color: "#d349c9" +# - type: StorageFill +# contents: +# - id: ClothingHeadDevilHorns +# - id: ClothingHeadJesterEvilHat +# - id: ClothingNeckDevilWings +# - id: ClothingUniformJesterEvil +# - id: ClothingShoesJesterEvilJanglers +# - id: DevilPitchfork - type: entity parent: BaseCostumeBundle @@ -239,32 +214,6 @@ - id: ClothingHeadHatGladiator - id: ClothingUniformJumpsuitGladiator -- type: entity - parent: BaseCostumeBundle - id: CostumeBundleJester - name: jester costume bundle - components: - - type: Sprite - layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] - color: "#dd1818" - - state: wrapper-fill - color: "#ffffff22" - - state: wrapper - - state: label - color: "#74ff33" - - type: Icon - state: icon-clown - - type: StorageFill - contents: - - id: ClothingHeadHatJester - - id: ClothingHeadHatJesterAlt - - id: ClothingUniformJumpsuitJester - - id: ClothingUniformJumpsuitJesterAlt - - id: ClothingShoesJester - - id: ClothingShoesJester - - type: entity parent: BaseCostumeBundle id: CostumeBundleJudge @@ -305,51 +254,6 @@ - id: ClothingHeadHatAnimalMonkey - id: ClothingOuterSuitMonkey -- type: entity - parent: BaseCostumeBundle - id: CostumeBundleMusicianMarching - name: marching band costume bundle - components: - - type: Sprite - layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] - color: "#463c6a" - - state: wrapper-fill - color: "#ffffff22" - - state: wrapper - - state: label - color: "#6f56b8" - - type: Icon - state: icon-musician - - type: StorageFill - contents: - - id: ClothingHeadHatMusicianShako - - id: ClothingUniformJumpsuitMusicianMarchingBand - -- type: entity - parent: BaseCostumeBundle - id: CostumeBundleMusicianLoungeSinger - name: lounge singer costume bundle - components: - - type: Sprite - layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] - color: "#463c6a" - - state: wrapper-fill - color: "#ffffff22" - - state: wrapper - - state: label - color: "#6f56b8" - - type: Icon - state: icon-musician - - type: StorageFill - contents: - - id: ClothingUniformMusicianSingerDress - - id: ClothingHandsMusicianSingerGloves - - id: ClothingNeckFeatherBoa - - type: entity parent: BaseCostumeBundle id: CostumeBundlePirate @@ -436,27 +340,27 @@ - id: ClothingHeadSafari - id: ClothingUniformJumpsuitSafari -- type: entity - parent: BaseCostumeBundle - id: CostumeBundleSailor - name: sailor costume bundle - components: - - type: Sprite - layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] - color: "#dedbec" - - state: wrapper-fill - color: "#ffffff22" - - state: wrapper - - state: label - color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadSailorCap - - id: ClothingNeckSailorAscot - - id: ClothingUniformSailorSuit - - id: ClothingShoesBootsLaceup +# - type: entity +# parent: BaseCostumeBundle +# id: CostumeBundleSailor +# name: sailor costume bundle +# components: +# - type: Sprite +# layers: +# - state: outfit +# map: [ "enum.ToggleableVisuals.Layer" ] +# color: "#dedbec" +# - state: wrapper-fill +# color: "#ffffff22" +# - state: wrapper +# - state: label +# color: "#dd6b17" +# - type: StorageFill +# contents: +# - id: ClothingHeadSailorCap +# - id: ClothingNeckSailorAscot +# - id: ClothingUniformSailorSuit +# - id: ClothingShoesBootsLaceup - type: entity parent: BaseCostumeBundle diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml new file mode 100644 index 00000000000..611ba1ce872 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml @@ -0,0 +1,95 @@ +# - type: entity +# parent: BaseCostumeBundle +# id: CostumeBundleCircusClown +# name: circus clown costume bundle +# components: +# - type: Sprite +# layers: +# - state: outfit +# map: [ "enum.ToggleableVisuals.Layer" ] +# color: "#ffd85d" +# - state: wrapper-fill +# color: "#ffffff22" +# - state: wrapper +# - state: label +# color: "#74ff33" +# - type: Icon +# state: icon-clown +# - type: StorageFill +# contents: +# - id: ClothingHeadHatCircusClown +# - id: ClothingMaskClownNose +# - id: ClothingNeckRuffle +# - id: ClothingUniformCircusClown +# - id: ClothingShoesCircus + +# - type: entity +# parent: BaseCostumeBundle +# id: CostumeBundleJester +# name: jester costume bundle +# components: +# - type: Sprite +# layers: +# - state: outfit +# map: [ "enum.ToggleableVisuals.Layer" ] +# color: "#dd1818" +# - state: wrapper-fill +# color: "#ffffff22" +# - state: wrapper +# - state: label +# color: "#74ff33" +# - type: Icon +# state: icon-clown +# - type: StorageFill +# contents: +# - id: ClothingHeadHatJester +# - id: ClothingHeadHatJesterAlt +# - id: ClothingUniformJumpsuitJester +# - id: ClothingUniformJumpsuitJesterAlt +# - id: ClothingShoesJester +# - id: ClothingShoesJester + +# - type: entity +# parent: BaseCostumeBundle +# id: CostumeBundleMusicianLoungeSinger +# name: lounge singer costume bundle +# components: +# - type: Sprite +# layers: +# - state: outfit +# map: [ "enum.ToggleableVisuals.Layer" ] +# color: "#463c6a" +# - state: wrapper-fill +# color: "#ffffff22" +# - state: wrapper +# - state: label +# color: "#6f56b8" +# - type: Icon +# state: icon-musician +# - type: StorageFill +# contents: +# - id: ClothingUniformMusicianSingerDress +# - id: ClothingHandsMusicianSingerGloves +# - id: ClothingNeckFeatherBoa + +# - type: entity +# parent: BaseCostumeBundle +# id: CostumeBundleMusicianMarching +# name: marching band costume bundle +# components: +# - type: Sprite +# layers: +# - state: outfit +# map: [ "enum.ToggleableVisuals.Layer" ] +# color: "#463c6a" +# - state: wrapper-fill +# color: "#ffffff22" +# - state: wrapper +# - state: label +# color: "#6f56b8" +# - type: Icon +# state: icon-musician +# - type: StorageFill +# contents: +# - id: ClothingHeadHatMusicianShako +# - id: ClothingUniformJumpsuitMusicianMarchingBand From 229f66e8a1a54fcc23d048c738db1c6b2907660b Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Tue, 17 Mar 2026 21:24:03 -0500 Subject: [PATCH 03/17] out --- .../_DEN/Loadouts/Generic/Items/costumes.yml | 265 ------------------ 1 file changed, 265 deletions(-) delete mode 100644 Resources/Prototypes/_DEN/Loadouts/Generic/Items/costumes.yml diff --git a/Resources/Prototypes/_DEN/Loadouts/Generic/Items/costumes.yml b/Resources/Prototypes/_DEN/Loadouts/Generic/Items/costumes.yml deleted file mode 100644 index 3c0e7434223..00000000000 --- a/Resources/Prototypes/_DEN/Loadouts/Generic/Items/costumes.yml +++ /dev/null @@ -1,265 +0,0 @@ -## Job-specific - -- type: loadout - id: LoadoutCostumeBundleCircusClown - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobClown - min: 108000 # 30 hours; ~10 full shifts - - !type:CharacterJobRequirement - jobs: - - Clown - items: - - CostumeBundleCircusClown - -- type: loadout - id: LoadoutCostumeBundleJester - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobClown - min: 108000 # 30 hours; ~10 full shifts - - !type:CharacterJobRequirement - jobs: - - Clown - items: - - CostumeBundleJester - -- type: loadout - id: LoadoutCostumeBundleMusicianMarching - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobMusician - min: 108000 # 30 hours; ~10 full shifts - - !type:CharacterJobRequirement - jobs: - - Musician - items: - - CostumeBundleMusicianMarching - -- type: loadout - id: LoadoutCostumeBundleMusicianLoungeSinger - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobMusician - min: 108000 # 30 hours; ~10 full shifts - - !type:CharacterJobRequirement - jobs: - - Musician - items: - - CostumeBundleMusicianLoungeSinger - -## Other - -- type: loadout - id: LoadoutCostumeBundleAngel - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleAngel - -- type: loadout - id: LoadoutCostumeBundleBunnySuit - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleBunnySuit - -- type: loadout - id: LoadoutCostumeBundleBurglar - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleBurglar - -- type: loadout - id: LoadoutCostumeBundleCardborg - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleCardborg - -- type: loadout - id: LoadoutCostumeBundleChicken - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleChicken - -- type: loadout - id: LoadoutCostumeBundleDevil - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleDevil - -- type: loadout - id: LoadoutCostumeBundleGladiator - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleGladiator - -- type: loadout - id: LoadoutCostumeBundleJudge - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleJudge - -- type: loadout - id: LoadoutCostumeBundleMonkey - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleMonkey - -- type: loadout - id: LoadoutCostumeBundlePirate - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundlePirate - -- type: loadout - id: LoadoutCostumeBundlePerformer - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundlePerformer - -- type: loadout - id: LoadoutCostumeBundleRedRaccoon - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleRedRaccoon - -- type: loadout - id: LoadoutCostumeBundleSafari - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleSafari - -- type: loadout - id: LoadoutCostumeBundleSailor - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleSailor - -- type: loadout - id: LoadoutCostumeBundleSanta - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleSanta - -- type: loadout - id: LoadoutCostumeBundleShrineMaiden - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleShrineMaiden - -- type: loadout - id: LoadoutCostumeBundleSkub - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleSkub - -- type: loadout - id: LoadoutCostumeBundleWitch - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleWitch - -- type: loadout - id: LoadoutCostumeBundleYakuza - category: Costumes - cost: 2 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCostumeBundles - items: - - CostumeBundleYakuza From 456b30469edf785c3b81c2fecf6cfd3fb97edd6a Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 19:08:47 -0500 Subject: [PATCH 04/17] this oen actually exists --- .../Entities/Objects/Storage/costumes_job.yml | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml index 611ba1ce872..9410a142d26 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml @@ -23,31 +23,31 @@ # - id: ClothingUniformCircusClown # - id: ClothingShoesCircus -# - type: entity -# parent: BaseCostumeBundle -# id: CostumeBundleJester -# name: jester costume bundle -# components: -# - type: Sprite -# layers: -# - state: outfit -# map: [ "enum.ToggleableVisuals.Layer" ] -# color: "#dd1818" -# - state: wrapper-fill -# color: "#ffffff22" -# - state: wrapper -# - state: label -# color: "#74ff33" -# - type: Icon -# state: icon-clown -# - type: StorageFill -# contents: -# - id: ClothingHeadHatJester -# - id: ClothingHeadHatJesterAlt -# - id: ClothingUniformJumpsuitJester -# - id: ClothingUniformJumpsuitJesterAlt -# - id: ClothingShoesJester -# - id: ClothingShoesJester +- type: entity + parent: BaseCostumeBundle + id: CostumeBundleJester + name: jester costume bundle + components: + - type: Sprite + layers: + - state: outfit + map: [ "enum.ToggleableVisuals.Layer" ] + color: "#dd1818" + - state: wrapper-fill + color: "#ffffff22" + - state: wrapper + - state: label + color: "#74ff33" + - type: Icon + state: icon-clown + - type: StorageFill + contents: + - id: ClothingHeadHatJester + - id: ClothingHeadHatJesterAlt + - id: ClothingUniformJumpsuitJester + - id: ClothingUniformJumpsuitJesterAlt + - id: ClothingShoesJester + - id: ClothingShoesJester # - type: entity # parent: BaseCostumeBundle From 74b8221fdcd55729c382857668c10c52eeb9454c Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 19:15:13 -0500 Subject: [PATCH 05/17] add costume bundles to autodrobe --- .../VendingMachines/Inventories/theater.yml | 86 +++++++++++++------ 1 file changed, 58 insertions(+), 28 deletions(-) diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml index 564a1f48ef6..4055de237c9 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml @@ -1,53 +1,70 @@ - type: vendingMachineInventory id: AutoDrobeInventory startingInventory: # TODO: Costume bundles - ClothingHeadHatJester: 1 - ClothingUniformJumpsuitJester: 1 - ClothingHeadHatJesterAlt: 1 - ClothingUniformJumpsuitJesterAlt: 1 - ClothingShoesJester: 2 + # BEGIN Macrocosm: Costume bundles + # ClothingHeadHatJester: 1 + # ClothingUniformJumpsuitJester: 1 + # ClothingHeadHatJesterAlt: 1 + # ClothingUniformJumpsuitJesterAlt: 1 + # ClothingShoesJester: 2 + CostumeBundleJester: 1 + # END Macrocosm ClothingOuterWinterClown: 1 ClothingOuterWinterMime: 1 ClothingOuterWinterMusician: 1 ClothingMaskJoy: 2 - ClothingHeadHatCardborg: 2 - ClothingOuterCardborg: 2 + # BEGIN Macrocosm: Costume bundles + # ClothingHeadHatCardborg: 2 + # ClothingOuterCardborg: 2 + # END Macrocosm ClothingHeadHatSombrero: 2 ClothingOuterPonchoClassic: 2 - ClothingHeadHatPwig: 2 - ClothingOuterRobesJudge: 2 + # BEGIN Macrocosm: Costume bundles + # ClothingHeadHatPwig: 2 + # ClothingOuterRobesJudge: 2 + # END Macrocosm ClothingOuterPoncho: 2 - ClothingHeadHatSantahat: 2 - ClothingOuterSanta: 2 - ClothingHeadHatSkub: 2 - ClothingOuterSkub: 2 + # BEGIN Macrocosm: Costume bundles + # ClothingHeadHatSantahat: 2 + # ClothingOuterSanta: 2 + # ClothingHeadHatSkub: 2 + # ClothingOuterSkub: 2 + # END Macrocosm ClothingHeadHatBeretFrench: 2 - ClothingOuterSuitChicken: 2 - ClothingHeadHatChickenhead: 2 - ClothingOuterSuitMonkey: 2 + # BEGIN Macrocosm: Costume bundles + # ClothingOuterSuitChicken: 2 + # ClothingHeadHatChickenhead: 2 + # ClothingOuterSuitMonkey: 2 + # END Macrocosm ClothingHeadHatPumpkin: 2 - ClothingHeadHatShrineMaidenWig: 2 - ClothingOuterSuitShrineMaiden: 2 - Gohei: 2 - ClothingOuterSuitWitchRobes: 2 - ClothingHeadHatWitch1: 2 - ClothingHeadHatRedRacoon: 2 - ClothingOuterRedRacoon: 2 + # BEGIN Macrocosm: Costume bundles + # ClothingHeadHatShrineMaidenWig: 2 + # ClothingOuterSuitShrineMaiden: 2 + # Gohei: 2 + # ClothingOuterSuitWitchRobes: 2 + # ClothingHeadHatWitch1: 2 + # ClothingHeadHatRedRacoon: 2 + # ClothingOuterRedRacoon: 2 + # END Macrocosm ClothingHeadPaperSack: 2 ClothingHeadPaperSackSmile: 2 ClothingEyesBlindfold: 1 ClothingHeadRastaHat: 2 - ClothingUniformJumpsuitDameDane: 2 - ClothingShoesDameDane: 2 - ClothingOuterDameDane: 2 + # BEGIN Macrocosm: Costume bundles + # ClothingUniformJumpsuitDameDane: 2 + # ClothingShoesDameDane: 2 + # ClothingOuterDameDane: 2 + # END Macrocosm ClothingOuterClownPriest: 1 ClothingMaskSadMime: 1 ClothingMaskScaredMime: 1 ClothingUniformJumpsuitKimono: 1 ClothingHeadHatCasa: 1 FoodPoppy: 1 - ClothingHeadHatGladiator: 1 - ClothingUniformJumpsuitGladiator: 1 + # BEGIN Macrocosm: Costume bundles + # ClothingHeadHatGladiator: 1 + # ClothingUniformJumpsuitGladiator: 1 + # END Macrocosm ClothingHeadHatCowboyBrown: 1 ClothingHeadHatCowboyBlack: 1 ClothingHeadHatCowboyWhite: 1 @@ -55,6 +72,19 @@ ClothingShoesBootsCowboyBrown: 1 ClothingShoesBootsCowboyBlack: 1 ClothingShoesBootsCowboyWhite: 1 + # MACRO start: Costume bundles + CostumeBundleCardborg: 2 + CostumeBundleChicken: 2 + CostumeBundleGladiator: 2 + CostumeBundleJudge: 2 + CostumeBundleMonkey: 2 + CostumeBundleRedRaccoon: 2 + CostumeBundleSanta: 2 + CostumeBundleShrineMaiden: 2 + CostumeBundleSkub: 2 + CostumeBundleWitch: 2 + CostumeBundleYakuza: 2 + # MACRO end contrabandInventory: ClothingHeadHatRichard: 1 ToyFigurineBoxer: 1 From 3e3e36e5dc9371fcde6ccc9a7a89f487c6b2b75e Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 19:23:05 -0500 Subject: [PATCH 06/17] and then i rearranged the shit --- .../VendingMachines/Inventories/theater.yml | 52 +++++++++++-------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml index 4055de237c9..3f5f6d54c50 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml @@ -1,6 +1,10 @@ +# MACROCOSM: Autodrobe's inventory is sorted into three sections: +# "Performer" job clothing (clown/mime), costume bundles, and miscellaneous accessories. + - type: vendingMachineInventory id: AutoDrobeInventory startingInventory: # TODO: Costume bundles + ## MACROCOSM comment - Section 1 - Performer job clothing # BEGIN Macrocosm: Costume bundles # ClothingHeadHatJester: 1 # ClothingUniformJumpsuitJester: 1 @@ -9,9 +13,30 @@ # ClothingShoesJester: 2 CostumeBundleJester: 1 # END Macrocosm + ClothingHeadHatBeretFrench: 2 # Macrocosm: Moved to performer section + ClothingMaskSadMime: 1 # Macrocosm: Moved to performer section + ClothingMaskScaredMime: 1 # Macrocosm: Moved to performer section ClothingOuterWinterClown: 1 ClothingOuterWinterMime: 1 ClothingOuterWinterMusician: 1 + ClothingOuterClownPriest: 1 # Macrocosm: Moved to performer section + + # MACROCOSM comment - Section 2 - Costume bundles + # MACRO start: Costume bundles + CostumeBundleCardborg: 2 + CostumeBundleChicken: 2 + CostumeBundleGladiator: 2 + CostumeBundleJudge: 2 + CostumeBundleMonkey: 2 + CostumeBundleRedRaccoon: 2 + CostumeBundleSanta: 2 + CostumeBundleShrineMaiden: 2 + CostumeBundleSkub: 2 + CostumeBundleWitch: 2 + CostumeBundleYakuza: 2 + # MACRO end + + # MACROCOSM comment - Section 3 - Unbundled accessories ClothingMaskJoy: 2 # BEGIN Macrocosm: Costume bundles # ClothingHeadHatCardborg: 2 @@ -24,14 +49,12 @@ # ClothingOuterRobesJudge: 2 # END Macrocosm ClothingOuterPoncho: 2 - # BEGIN Macrocosm: Costume bundles + # BEGIN Macrocosm: Costume bundles, etc. # ClothingHeadHatSantahat: 2 # ClothingOuterSanta: 2 # ClothingHeadHatSkub: 2 # ClothingOuterSkub: 2 - # END Macrocosm - ClothingHeadHatBeretFrench: 2 - # BEGIN Macrocosm: Costume bundles + # ClothingHeadHatBeretFrench: 2 # Macrocosm: Move this up with performer items # ClothingOuterSuitChicken: 2 # ClothingHeadHatChickenhead: 2 # ClothingOuterSuitMonkey: 2 @@ -50,14 +73,14 @@ ClothingHeadPaperSackSmile: 2 ClothingEyesBlindfold: 1 ClothingHeadRastaHat: 2 - # BEGIN Macrocosm: Costume bundles + # BEGIN Macrocosm: Costume bundles, etc. # ClothingUniformJumpsuitDameDane: 2 # ClothingShoesDameDane: 2 # ClothingOuterDameDane: 2 + # ClothingOuterClownPriest: 1 # Macrocosm: Move this up with performer items + # ClothingMaskSadMime: 1 # Macrocosm: Move this up with performer items + # ClothingMaskScaredMime: 1 # Macrocosm: Move this up with performer items # END Macrocosm - ClothingOuterClownPriest: 1 - ClothingMaskSadMime: 1 - ClothingMaskScaredMime: 1 ClothingUniformJumpsuitKimono: 1 ClothingHeadHatCasa: 1 FoodPoppy: 1 @@ -72,19 +95,6 @@ ClothingShoesBootsCowboyBrown: 1 ClothingShoesBootsCowboyBlack: 1 ClothingShoesBootsCowboyWhite: 1 - # MACRO start: Costume bundles - CostumeBundleCardborg: 2 - CostumeBundleChicken: 2 - CostumeBundleGladiator: 2 - CostumeBundleJudge: 2 - CostumeBundleMonkey: 2 - CostumeBundleRedRaccoon: 2 - CostumeBundleSanta: 2 - CostumeBundleShrineMaiden: 2 - CostumeBundleSkub: 2 - CostumeBundleWitch: 2 - CostumeBundleYakuza: 2 - # MACRO end contrabandInventory: ClothingHeadHatRichard: 1 ToyFigurineBoxer: 1 From d57b9ab483862b326a7732557f9eef04bba131d0 Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 19:27:48 -0500 Subject: [PATCH 07/17] forgot we on den lol --- .../VendingMachines/Inventories/theater.yml | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml index 3f5f6d54c50..4271ab87bda 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml @@ -1,28 +1,28 @@ -# MACROCOSM: Autodrobe's inventory is sorted into three sections: +# DEN: Autodrobe's inventory is sorted into three sections: # "Performer" job clothing (clown/mime), costume bundles, and miscellaneous accessories. - type: vendingMachineInventory id: AutoDrobeInventory startingInventory: # TODO: Costume bundles - ## MACROCOSM comment - Section 1 - Performer job clothing - # BEGIN Macrocosm: Costume bundles + ## DEN comment - Section 1 - Performer job clothing + # BEGIN Den: Costume bundles # ClothingHeadHatJester: 1 # ClothingUniformJumpsuitJester: 1 # ClothingHeadHatJesterAlt: 1 # ClothingUniformJumpsuitJesterAlt: 1 # ClothingShoesJester: 2 CostumeBundleJester: 1 - # END Macrocosm - ClothingHeadHatBeretFrench: 2 # Macrocosm: Moved to performer section - ClothingMaskSadMime: 1 # Macrocosm: Moved to performer section - ClothingMaskScaredMime: 1 # Macrocosm: Moved to performer section + # END Den + ClothingHeadHatBeretFrench: 2 # Den: Moved to performer section + ClothingMaskSadMime: 1 # Den: Moved to performer section + ClothingMaskScaredMime: 1 # Den: Moved to performer section ClothingOuterWinterClown: 1 ClothingOuterWinterMime: 1 ClothingOuterWinterMusician: 1 - ClothingOuterClownPriest: 1 # Macrocosm: Moved to performer section + ClothingOuterClownPriest: 1 # Den: Moved to performer section - # MACROCOSM comment - Section 2 - Costume bundles - # MACRO start: Costume bundles + # DEN comment - Section 2 - Costume bundles + # DEN start: Costume bundles CostumeBundleCardborg: 2 CostumeBundleChicken: 2 CostumeBundleGladiator: 2 @@ -34,33 +34,33 @@ CostumeBundleSkub: 2 CostumeBundleWitch: 2 CostumeBundleYakuza: 2 - # MACRO end + # DEN end - # MACROCOSM comment - Section 3 - Unbundled accessories + # DEN comment - Section 3 - Unbundled accessories ClothingMaskJoy: 2 - # BEGIN Macrocosm: Costume bundles + # BEGIN Den: Costume bundles # ClothingHeadHatCardborg: 2 # ClothingOuterCardborg: 2 - # END Macrocosm + # END Den ClothingHeadHatSombrero: 2 ClothingOuterPonchoClassic: 2 - # BEGIN Macrocosm: Costume bundles + # BEGIN Den: Costume bundles # ClothingHeadHatPwig: 2 # ClothingOuterRobesJudge: 2 - # END Macrocosm + # END Den ClothingOuterPoncho: 2 - # BEGIN Macrocosm: Costume bundles, etc. + # BEGIN Den: Costume bundles, etc. # ClothingHeadHatSantahat: 2 # ClothingOuterSanta: 2 # ClothingHeadHatSkub: 2 # ClothingOuterSkub: 2 - # ClothingHeadHatBeretFrench: 2 # Macrocosm: Move this up with performer items + # ClothingHeadHatBeretFrench: 2 # Den: Move this up with performer items # ClothingOuterSuitChicken: 2 # ClothingHeadHatChickenhead: 2 # ClothingOuterSuitMonkey: 2 - # END Macrocosm + # END Den ClothingHeadHatPumpkin: 2 - # BEGIN Macrocosm: Costume bundles + # BEGIN Den: Costume bundles # ClothingHeadHatShrineMaidenWig: 2 # ClothingOuterSuitShrineMaiden: 2 # Gohei: 2 @@ -68,26 +68,26 @@ # ClothingHeadHatWitch1: 2 # ClothingHeadHatRedRacoon: 2 # ClothingOuterRedRacoon: 2 - # END Macrocosm + # END Den ClothingHeadPaperSack: 2 ClothingHeadPaperSackSmile: 2 ClothingEyesBlindfold: 1 ClothingHeadRastaHat: 2 - # BEGIN Macrocosm: Costume bundles, etc. + # BEGIN Den: Costume bundles, etc. # ClothingUniformJumpsuitDameDane: 2 # ClothingShoesDameDane: 2 # ClothingOuterDameDane: 2 - # ClothingOuterClownPriest: 1 # Macrocosm: Move this up with performer items - # ClothingMaskSadMime: 1 # Macrocosm: Move this up with performer items - # ClothingMaskScaredMime: 1 # Macrocosm: Move this up with performer items - # END Macrocosm + # ClothingOuterClownPriest: 1 # Den: Move this up with performer items + # ClothingMaskSadMime: 1 # Den: Move this up with performer items + # ClothingMaskScaredMime: 1 # Den: Move this up with performer items + # END Den ClothingUniformJumpsuitKimono: 1 ClothingHeadHatCasa: 1 FoodPoppy: 1 - # BEGIN Macrocosm: Costume bundles + # BEGIN Den: Costume bundles # ClothingHeadHatGladiator: 1 # ClothingUniformJumpsuitGladiator: 1 - # END Macrocosm + # END Den ClothingHeadHatCowboyBrown: 1 ClothingHeadHatCowboyBlack: 1 ClothingHeadHatCowboyWhite: 1 From 4b57fae9d6848ee6abc27b75983a2dfab8235c23 Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 19:38:07 -0500 Subject: [PATCH 08/17] document costume bundles --- .../Entities/Objects/Storage/costumes.yml | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml index f2b93cd51ca..24092dee41b 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml @@ -1,5 +1,27 @@ -# Costume bundles -# Used to consolidate multi-item costumes into a single item for drobes. +# === COSTUME BUNDLES === +# Used to group together multi-part outfits into a single storage item. Think, like, Spirit Halloween costumes. +# Convenient for vending machines, crate orders, loadouts, admeme spawning, et cetera. +# +# == TO MAKE A NEW COSTUME BUNDLE: == +# Make an entity that inherits from `BaseCostumeBundle`. Ideally, the ID of this entity should +# be along the lines of "CostumeBundle[CostumeName]". Check CostumeBundleCardborg for a simple example. +# Make sure to change the `name`` field to "[costume] costume bundle"! +# +# The sprite has four layers: +# - outfit: This is the clothing "inside" the bundle. I recommend color-picking from the most significant +# accessory in the bundle itself, such as an inner/outer clothing layer (if there is one). +# - wrapper-fill: Translucent plastic wrap. Always `#ffffff22`. +# - wrapper: Outline of the plastic wrap. Don't touch the color of this one. +# - label: The outer label part of the sprite. This is often `#dd6b17` as a fallback, especially for +# "generic" costumes, but this can be anything, like an accent color. It doesn't really matter. +# +# Then, modify the EntityTableContainerFill component to contain the parts of your costume. +# +# Note that costume bundles have a whitelist: entities with the Clothing component, and entities with the +# CostumeItem tag. If you're inserting prop items, make sure to add the CostumeItem tag if it's not wearable +# - for example, the pirate's foam cutlass, or the shrine maiden's gohei. +# ======================= + - type: entity abstract: true From 18864d5d68d417334c6bc45ccacdaf3df28bcecb Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 19:42:49 -0500 Subject: [PATCH 09/17] add comment --- .../Catalog/VendingMachines/Inventories/theater.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml index 4271ab87bda..fe6d0d37ce0 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml @@ -3,7 +3,7 @@ - type: vendingMachineInventory id: AutoDrobeInventory - startingInventory: # TODO: Costume bundles + startingInventory: ## DEN comment - Section 1 - Performer job clothing # BEGIN Den: Costume bundles # ClothingHeadHatJester: 1 @@ -88,6 +88,8 @@ # ClothingHeadHatGladiator: 1 # ClothingUniformJumpsuitGladiator: 1 # END Den + # TODO DEN: Consider consolidating cowboy accessories into bundles. + # I'm not doing this right now b/c they're not "costumes" - just hats/boots. ClothingHeadHatCowboyBrown: 1 ClothingHeadHatCowboyBlack: 1 ClothingHeadHatCowboyWhite: 1 From 8a5bcaabd1d34771506beedcc81b3af668aacdca Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 19:44:03 -0500 Subject: [PATCH 10/17] more comments --- .../Prototypes/_DEN/Entities/Objects/Storage/costumes.yml | 6 +++++- .../_DEN/Entities/Objects/Storage/costumes_job.yml | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml index 24092dee41b..cd8d4068fde 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml @@ -22,7 +22,6 @@ # - for example, the pirate's foam cutlass, or the shrine maiden's gohei. # ======================= - - type: entity abstract: true parent: [BaseStorageItem, BaseBagOpenClose] @@ -88,6 +87,7 @@ - state: label color: "#dd6b17" +# TODO: Port from Impstation # - type: entity # parent: BaseCostumeBundle # id: CostumeBundleAngel @@ -112,6 +112,7 @@ # - id: ClothingNeckAngelWings # - id: HandheldHarpInstrument +# TODO: Port from prebase Den # - type: entity # parent: BaseCostumeBundle # id: CostumeBundleBunnySuit @@ -132,6 +133,7 @@ # - id: ClothingHeadHatBunny # - id: ClothingCostumeBunnySuit +# TODO: Port from Impstation # - type: entity # parent: BaseCostumeBundle # id: CostumeBundleBurglar @@ -192,6 +194,7 @@ - id: ClothingHeadHatChickenhead - id: ClothingOuterSuitChicken +# TODO: Port from Impstation # - type: entity # parent: BaseCostumeBundle # id: CostumeBundleDevil @@ -362,6 +365,7 @@ - id: ClothingHeadSafari - id: ClothingUniformJumpsuitSafari +# TODO: Port from Impstation # - type: entity # parent: BaseCostumeBundle # id: CostumeBundleSailor diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml index 9410a142d26..fe3c2c19908 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml @@ -1,3 +1,4 @@ +# TODO: Port from Impstation # - type: entity # parent: BaseCostumeBundle # id: CostumeBundleCircusClown @@ -49,6 +50,7 @@ - id: ClothingShoesJester - id: ClothingShoesJester +# TODO: Port from Impstation # - type: entity # parent: BaseCostumeBundle # id: CostumeBundleMusicianLoungeSinger @@ -72,6 +74,7 @@ # - id: ClothingHandsMusicianSingerGloves # - id: ClothingNeckFeatherBoa +# TODO: Port from Impstation # - type: entity # parent: BaseCostumeBundle # id: CostumeBundleMusicianMarching From da792bbe374eb2fbaeb5795da945209101d81d49 Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 20:00:43 -0500 Subject: [PATCH 11/17] replace StorageFill with EntityTableContainerFill --- .../Entities/Objects/Storage/costumes.yml | 209 ++++++++++-------- .../Entities/Objects/Storage/costumes_job.yml | 52 +++-- 2 files changed, 142 insertions(+), 119 deletions(-) diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml index cd8d4068fde..fd5d78c89ce 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml @@ -103,14 +103,15 @@ # - state: wrapper # - state: label # color: "#efec98" -# - type: StorageFill -# contents: -# - id: ClothingHeadHalo -# - id: ClothingUniformJumpskirtAngelDress -# - id: ClothingHandsAngelGloves -# - id: ClothingShoesAngelSandals -# - id: ClothingNeckAngelWings -# - id: HandheldHarpInstrument +# - type: EntityTableContainerFill +# containers: +# storagebase: !type:AllSelector +# - id: ClothingHeadHalo +# - id: ClothingUniformJumpskirtAngelDress +# - id: ClothingHandsAngelGloves +# - id: ClothingShoesAngelSandals +# - id: ClothingNeckAngelWings +# - id: HandheldHarpInstrument # TODO: Port from prebase Den # - type: entity @@ -128,10 +129,11 @@ # - state: wrapper # - state: label # color: "#dd6b17" -# - type: StorageFill -# contents: -# - id: ClothingHeadHatBunny -# - id: ClothingCostumeBunnySuit +# - type: EntityTableContainerFill +# containers: +# storagebase: !type:AllSelector +# - id: ClothingHeadHatBunny +# - id: ClothingCostumeBunnySuit # TODO: Port from Impstation # - type: entity @@ -149,10 +151,11 @@ # - state: wrapper # - state: label # color: "#dd6b17" -# - type: StorageFill -# contents: -# - id: ClothingMaskBurglar -# - id: ClothingUniformBurglarJumpsuit +# - type: EntityTableContainerFill +# containers: +# storagebase: !type:AllSelector +# - id: ClothingMaskBurglar +# - id: ClothingUniformBurglarJumpsuit - type: entity parent: BaseCostumeBundle @@ -169,10 +172,11 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatCardborg - - id: ClothingOuterCardborg + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatCardborg + - id: ClothingOuterCardborg - type: entity parent: BaseCostumeBundle @@ -189,10 +193,11 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatChickenhead - - id: ClothingOuterSuitChicken + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatChickenhead + - id: ClothingOuterSuitChicken # TODO: Port from Impstation # - type: entity @@ -210,14 +215,15 @@ # - state: wrapper # - state: label # color: "#d349c9" -# - type: StorageFill -# contents: -# - id: ClothingHeadDevilHorns -# - id: ClothingHeadJesterEvilHat -# - id: ClothingNeckDevilWings -# - id: ClothingUniformJesterEvil -# - id: ClothingShoesJesterEvilJanglers -# - id: DevilPitchfork +# - type: EntityTableContainerFill +# containers: +# storagebase: !type:AllSelector +# - id: ClothingHeadDevilHorns +# - id: ClothingHeadJesterEvilHat +# - id: ClothingNeckDevilWings +# - id: ClothingUniformJesterEvil +# - id: ClothingShoesJesterEvilJanglers +# - id: DevilPitchfork - type: entity parent: BaseCostumeBundle @@ -234,10 +240,11 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatGladiator - - id: ClothingUniformJumpsuitGladiator + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatGladiator + - id: ClothingUniformJumpsuitGladiator - type: entity parent: BaseCostumeBundle @@ -254,10 +261,11 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatPwig - - id: ClothingOuterRobesJudge + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatPwig + - id: ClothingOuterRobesJudge - type: entity parent: BaseCostumeBundle @@ -274,10 +282,11 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatAnimalMonkey - - id: ClothingOuterSuitMonkey + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatAnimalMonkey + - id: ClothingOuterSuitMonkey - type: entity parent: BaseCostumeBundle @@ -294,15 +303,16 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatPirate - - id: ClothingHeadBandRed - - id: ClothingEyesEyepatch - - id: ClothingUniformJumpsuitPirate - - id: ClothingOuterCoatPirate - - id: ClothingShoesBootsLaceup - - id: FoamCutlass + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatPirate + - id: ClothingHeadBandRed + - id: ClothingEyesEyepatch + - id: ClothingUniformJumpsuitPirate + - id: ClothingOuterCoatPirate + - id: ClothingShoesBootsLaceup + - id: FoamCutlass - type: entity parent: BaseCostumeBundle @@ -319,11 +329,12 @@ - state: wrapper - state: label color: "#70cac4" - - type: StorageFill - contents: - - id: ClothingUniformJumpskirtPerformer - - id: ClothingShoesBootsPerformer - - id: FoodMealMemoryleek + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingUniformJumpskirtPerformer + - id: ClothingShoesBootsPerformer + - id: FoodMealMemoryleek - type: entity parent: BaseCostumeBundle @@ -340,10 +351,11 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatRedRacoon - - id: ClothingOuterRedRacoon + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatRedRacoon + - id: ClothingOuterRedRacoon - type: entity parent: BaseCostumeBundle @@ -360,10 +372,11 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadSafari - - id: ClothingUniformJumpsuitSafari + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadSafari + - id: ClothingUniformJumpsuitSafari # TODO: Port from Impstation # - type: entity @@ -381,12 +394,13 @@ # - state: wrapper # - state: label # color: "#dd6b17" -# - type: StorageFill -# contents: -# - id: ClothingHeadSailorCap -# - id: ClothingNeckSailorAscot -# - id: ClothingUniformSailorSuit -# - id: ClothingShoesBootsLaceup +# - type: EntityTableContainerFill +# containers: +# storagebase: !type:AllSelector +# - id: ClothingHeadSailorCap +# - id: ClothingNeckSailorAscot +# - id: ClothingUniformSailorSuit +# - id: ClothingShoesBootsLaceup - type: entity parent: BaseCostumeBundle @@ -403,10 +417,11 @@ - state: wrapper - state: label color: "#f2c735" - - type: StorageFill - contents: - - id: ClothingHeadHatSantahat - - id: ClothingOuterSanta + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatSantahat + - id: ClothingOuterSanta - type: entity parent: BaseCostumeBundle @@ -423,11 +438,12 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatShrineMaidenWig - - id: ClothingOuterSuitShrineMaiden - - id: Gohei + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatShrineMaidenWig + - id: ClothingOuterSuitShrineMaiden + - id: Gohei - type: entity parent: BaseCostumeBundle @@ -444,10 +460,11 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatSkub - - id: ClothingOuterSkub + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatSkub + - id: ClothingOuterSkub - type: entity parent: BaseCostumeBundle @@ -464,11 +481,12 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingHeadHatWitch1 - - id: ClothingHeadHatWitch - - id: ClothingOuterSuitWitchRobes + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatWitch1 + - id: ClothingHeadHatWitch + - id: ClothingOuterSuitWitchRobes - type: entity parent: BaseCostumeBundle @@ -485,8 +503,9 @@ - state: wrapper - state: label color: "#dd6b17" - - type: StorageFill - contents: - - id: ClothingUniformJumpsuitDameDane - - id: ClothingOuterDameDane - - id: ClothingShoesDameDane + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingUniformJumpsuitDameDane + - id: ClothingOuterDameDane + - id: ClothingShoesDameDane diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml index fe3c2c19908..46cd1de71d1 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml @@ -16,13 +16,14 @@ # color: "#74ff33" # - type: Icon # state: icon-clown -# - type: StorageFill -# contents: -# - id: ClothingHeadHatCircusClown -# - id: ClothingMaskClownNose -# - id: ClothingNeckRuffle -# - id: ClothingUniformCircusClown -# - id: ClothingShoesCircus +# - type: EntityTableContainerFill +# containers: +# storagebase: !type:AllSelector +# - id: ClothingHeadHatCircusClown +# - id: ClothingMaskClownNose +# - id: ClothingNeckRuffle +# - id: ClothingUniformCircusClown +# - id: ClothingShoesCircus - type: entity parent: BaseCostumeBundle @@ -41,14 +42,15 @@ color: "#74ff33" - type: Icon state: icon-clown - - type: StorageFill - contents: - - id: ClothingHeadHatJester - - id: ClothingHeadHatJesterAlt - - id: ClothingUniformJumpsuitJester - - id: ClothingUniformJumpsuitJesterAlt - - id: ClothingShoesJester - - id: ClothingShoesJester + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + - id: ClothingHeadHatJester + - id: ClothingHeadHatJesterAlt + - id: ClothingUniformJumpsuitJester + - id: ClothingUniformJumpsuitJesterAlt + - id: ClothingShoesJester + - id: ClothingShoesJester # TODO: Port from Impstation # - type: entity @@ -68,11 +70,12 @@ # color: "#6f56b8" # - type: Icon # state: icon-musician -# - type: StorageFill -# contents: -# - id: ClothingUniformMusicianSingerDress -# - id: ClothingHandsMusicianSingerGloves -# - id: ClothingNeckFeatherBoa +# - type: EntityTableContainerFill +# containers: +# storagebase: !type:AllSelector +# - id: ClothingUniformMusicianSingerDress +# - id: ClothingHandsMusicianSingerGloves +# - id: ClothingNeckFeatherBoa # TODO: Port from Impstation # - type: entity @@ -92,7 +95,8 @@ # color: "#6f56b8" # - type: Icon # state: icon-musician -# - type: StorageFill -# contents: -# - id: ClothingHeadHatMusicianShako -# - id: ClothingUniformJumpsuitMusicianMarchingBand +# - type: EntityTableContainerFill +# containers: +# storagebase: !type:AllSelector +# - id: ClothingHeadHatMusicianShako +# - id: ClothingUniformJumpsuitMusicianMarchingBand From b2ef263ddd78ac43e4445a57b3c9a4b6b9aa458f Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 20:05:19 -0500 Subject: [PATCH 12/17] replace monkey/performer suits with bundles in theatrical performances crate --- .../Catalog/Fills/Crates/service.yml | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Crates/service.yml b/Resources/Prototypes/Catalog/Fills/Crates/service.yml index a8c824a3e2c..b0c452268a2 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/service.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/service.yml @@ -121,13 +121,16 @@ name: theatrical performances crate description: Contains a moth cloak, barber scissors, maid uniform, clown and mime attributes, and other performance charms. components: - - type: EntityTableContainerFill # TODO: Costume bundles + - type: EntityTableContainerFill containers: entity_storage: !type:AllSelector children: - id: BarberScissors - - id: ClothingOuterSuitMonkey - - id: ClothingHeadHatAnimalMonkey + # Begin DEN: Costume bundles + # - id: ClothingOuterSuitMonkey + # - id: ClothingHeadHatAnimalMonkey + - id: CostumeBundleMonkey + # End DEN - id: ClothingUniformJumpskirtJanimaid - id: ClothingUniformJumpskirtOldDress - id: ClothingHeadHatMagician @@ -151,11 +154,14 @@ - id: ClothingMaskMime - id: ClothingBeltSuspendersRed - id: ClothingBeltSuspendersBlack - - !type:AllSelector # Performer starter kit - children: - - id: ClothingUniformJumpskirtPerformer - - id: ClothingShoesBootsPerformer - - id: ClothingHeadPerformerWig + # Begin DEN: Costume bundles + # - !type:AllSelector # Performer starter kit + # children: + # - id: ClothingUniformJumpskirtPerformer + # - id: ClothingShoesBootsPerformer + # - id: ClothingHeadPerformerWig + - id: CostumeBundlePerformer + # End DEN - type: entity parent: CrateGenericSteel From 04d2e7c103620d9b1c514e2df4ec7e8db1bcf2ed Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Wed, 18 Mar 2026 20:21:36 -0500 Subject: [PATCH 13/17] summary commment for job costumes --- .../Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml index 46cd1de71d1..1650804e268 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml @@ -1,3 +1,6 @@ +# Costume bundles that represent uniforms for specific jobs - for example, "alt costumes" for clowns. +# ======================= + # TODO: Port from Impstation # - type: entity # parent: BaseCostumeBundle From 45752b5661eebad83f8a18d52e24e9258998838a Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Sat, 21 Mar 2026 11:43:34 -0500 Subject: [PATCH 14/17] use StorageFillVisualizer instead of ContainerHeld --- .../ContainerHeld/ContainerHeldSystem.cs | 3 +- .../Entities/Objects/Storage/costumes.yml | 216 +++++++++--------- .../Entities/Objects/Storage/costumes_job.yml | 52 +++-- .../Storage/costume_bundle.rsi/label.png | Bin 188 -> 154 bytes .../Storage/costume_bundle.rsi/meta.json | 8 +- .../Storage/costume_bundle.rsi/outfit-0.png | Bin 0 -> 116 bytes .../Storage/costume_bundle.rsi/outfit-1.png | Bin 0 -> 181 bytes .../Storage/costume_bundle.rsi/outfit-2.png | Bin 0 -> 181 bytes .../Storage/costume_bundle.rsi/outfit.png | Bin 239 -> 0 bytes .../costume_bundle.rsi/wrapper-fill.png | Bin 141 -> 138 bytes .../Storage/costume_bundle.rsi/wrapper.png | Bin 160 -> 152 bytes 11 files changed, 150 insertions(+), 129 deletions(-) create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit-0.png create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit-1.png create mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit-2.png delete mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit.png diff --git a/Content.Shared/ContainerHeld/ContainerHeldSystem.cs b/Content.Shared/ContainerHeld/ContainerHeldSystem.cs index e0c43ab1dc5..f09cd4443d4 100644 --- a/Content.Shared/ContainerHeld/ContainerHeldSystem.cs +++ b/Content.Shared/ContainerHeld/ContainerHeldSystem.cs @@ -23,8 +23,7 @@ public override void Initialize() private void OnContainerModified(EntityUid uid, ContainerHeldComponent comp, ContainerModifiedMessage args) { - if (!(TryComp(uid, out var storage) - && storage.Container is not null // DEN - Bugfix lol + if (!(HasComp(uid) && TryComp(uid, out var appearance) && TryComp(uid, out var item))) { diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml index fd5d78c89ce..95e4b50dc40 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml @@ -32,8 +32,8 @@ - type: Sprite sprite: _DEN/Objects/Storage/costume_bundle.rsi layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#ffffff" - state: wrapper-fill color: "#ffffff22" @@ -57,15 +57,10 @@ - CostumeItem components: - Clothing - - type: ContainerHeld - threshold: 1 + - type: StorageFillVisualizer + maxFillLevels: 3 + fillBaseName: outfit - type: Appearance - - type: GenericVisualizer - visuals: - enum.ToggleableVisuals.Enabled: - enum.ToggleableVisuals.Layer: - True: {visible: true} - False: {visible: false} - type: StaticPrice price: 10 @@ -77,10 +72,9 @@ - type: Sprite sprite: _DEN/Objects/Storage/costume_bundle.rsi layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-0 # starts with nothing + map: [ "enum.StorageFillLayers.Fill" ] color: "#ffffff" - visible: false # starts with nothing - state: wrapper-fill color: "#ffffff22" - state: wrapper @@ -95,8 +89,8 @@ # components: # - type: Sprite # layers: -# - state: outfit -# map: [ "enum.ToggleableVisuals.Layer" ] +# - state: outfit-1 +# map: [ "enum.StorageFillLayers.Fill" ] # color: "#f5b8c3" # - state: wrapper-fill # color: "#ffffff22" @@ -106,12 +100,13 @@ # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector -# - id: ClothingHeadHalo -# - id: ClothingUniformJumpskirtAngelDress -# - id: ClothingHandsAngelGloves -# - id: ClothingShoesAngelSandals -# - id: ClothingNeckAngelWings -# - id: HandheldHarpInstrument +# children: +# - id: ClothingHeadHalo +# - id: ClothingUniformJumpskirtAngelDress +# - id: ClothingHandsAngelGloves +# - id: ClothingShoesAngelSandals +# - id: ClothingNeckAngelWings +# - id: HandheldHarpInstrument # TODO: Port from prebase Den # - type: entity @@ -121,8 +116,8 @@ # components: # - type: Sprite # layers: -# - state: outfit -# map: [ "enum.ToggleableVisuals.Layer" ] +# - state: outfit-1 +# map: [ "enum.StorageFillLayers.Fill" ] # color: "#48494e" # - state: wrapper-fill # color: "#ffffff22" @@ -132,6 +127,7 @@ # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector +# children: # - id: ClothingHeadHatBunny # - id: ClothingCostumeBunnySuit @@ -143,8 +139,8 @@ # components: # - type: Sprite # layers: -# - state: outfit -# map: [ "enum.ToggleableVisuals.Layer" ] +# - state: outfit-1 +# map: [ "enum.StorageFillLayers.Fill" ] # color: "#3e3735" # - state: wrapper-fill # color: "#ffffff22" @@ -154,6 +150,7 @@ # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector +# children: # - id: ClothingMaskBurglar # - id: ClothingUniformBurglarJumpsuit @@ -164,8 +161,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#70736c" - state: wrapper-fill color: "#ffffff22" @@ -175,8 +172,9 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatCardborg - - id: ClothingOuterCardborg + children: + - id: ClothingHeadHatCardborg + - id: ClothingOuterCardborg - type: entity parent: BaseCostumeBundle @@ -185,8 +183,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#ffc800" - state: wrapper-fill color: "#ffffff22" @@ -196,8 +194,9 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatChickenhead - - id: ClothingOuterSuitChicken + children: + - id: ClothingHeadHatChickenhead + - id: ClothingOuterSuitChicken # TODO: Port from Impstation # - type: entity @@ -207,8 +206,8 @@ # components: # - type: Sprite # layers: -# - state: outfit -# map: [ "enum.ToggleableVisuals.Layer" ] +# - state: outfit-1 +# map: [ "enum.StorageFillLayers.Fill" ] # color: "#4b3b56" # - state: wrapper-fill # color: "#ffffff22" @@ -218,12 +217,13 @@ # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector -# - id: ClothingHeadDevilHorns -# - id: ClothingHeadJesterEvilHat -# - id: ClothingNeckDevilWings -# - id: ClothingUniformJesterEvil -# - id: ClothingShoesJesterEvilJanglers -# - id: DevilPitchfork +# children: +# - id: ClothingHeadDevilHorns +# - id: ClothingHeadJesterEvilHat +# - id: ClothingNeckDevilWings +# - id: ClothingUniformJesterEvil +# - id: ClothingShoesJesterEvilJanglers +# - id: DevilPitchfork - type: entity parent: BaseCostumeBundle @@ -232,8 +232,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#e1b73d" - state: wrapper-fill color: "#ffffff22" @@ -243,8 +243,9 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatGladiator - - id: ClothingUniformJumpsuitGladiator + children: + - id: ClothingHeadHatGladiator + - id: ClothingUniformJumpsuitGladiator - type: entity parent: BaseCostumeBundle @@ -253,8 +254,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#2e2e2e" - state: wrapper-fill color: "#ffffff22" @@ -264,8 +265,9 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatPwig - - id: ClothingOuterRobesJudge + children: + - id: ClothingHeadHatPwig + - id: ClothingOuterRobesJudge - type: entity parent: BaseCostumeBundle @@ -274,8 +276,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#914800" - state: wrapper-fill color: "#ffffff22" @@ -285,8 +287,9 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatAnimalMonkey - - id: ClothingOuterSuitMonkey + children: + - id: ClothingHeadHatAnimalMonkey + - id: ClothingOuterSuitMonkey - type: entity parent: BaseCostumeBundle @@ -295,8 +298,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#dfe1de" - state: wrapper-fill color: "#ffffff22" @@ -306,13 +309,14 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatPirate - - id: ClothingHeadBandRed - - id: ClothingEyesEyepatch - - id: ClothingUniformJumpsuitPirate - - id: ClothingOuterCoatPirate - - id: ClothingShoesBootsLaceup - - id: FoamCutlass + children: + - id: ClothingHeadHatPirate + - id: ClothingHeadBandRed + - id: ClothingEyesEyepatch + - id: ClothingUniformJumpsuitPirate + - id: ClothingOuterCoatPirate + - id: ClothingShoesBootsLaceup + - id: FoamCutlass - type: entity parent: BaseCostumeBundle @@ -321,8 +325,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#474f63" - state: wrapper-fill color: "#ffffff22" @@ -332,9 +336,10 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingUniformJumpskirtPerformer - - id: ClothingShoesBootsPerformer - - id: FoodMealMemoryleek + children: + - id: ClothingUniformJumpskirtPerformer + - id: ClothingShoesBootsPerformer + - id: FoodMealMemoryleek - type: entity parent: BaseCostumeBundle @@ -343,8 +348,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#e48a1b" - state: wrapper-fill color: "#ffffff22" @@ -354,8 +359,9 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatRedRacoon - - id: ClothingOuterRedRacoon + children: + - id: ClothingHeadHatRedRacoon + - id: ClothingOuterRedRacoon - type: entity parent: BaseCostumeBundle @@ -364,8 +370,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#d3bf86" - state: wrapper-fill color: "#ffffff22" @@ -375,8 +381,9 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadSafari - - id: ClothingUniformJumpsuitSafari + children: + - id: ClothingHeadSafari + - id: ClothingUniformJumpsuitSafari # TODO: Port from Impstation # - type: entity @@ -386,8 +393,8 @@ # components: # - type: Sprite # layers: -# - state: outfit -# map: [ "enum.ToggleableVisuals.Layer" ] +# - state: outfit-1 +# map: [ "enum.StorageFillLayers.Fill" ] # color: "#dedbec" # - state: wrapper-fill # color: "#ffffff22" @@ -397,10 +404,11 @@ # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector -# - id: ClothingHeadSailorCap -# - id: ClothingNeckSailorAscot -# - id: ClothingUniformSailorSuit -# - id: ClothingShoesBootsLaceup +# children: +# - id: ClothingHeadSailorCap +# - id: ClothingNeckSailorAscot +# - id: ClothingUniformSailorSuit +# - id: ClothingShoesBootsLaceup - type: entity parent: BaseCostumeBundle @@ -409,8 +417,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#d73827" - state: wrapper-fill color: "#ffffff22" @@ -420,8 +428,9 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatSantahat - - id: ClothingOuterSanta + children: + - id: ClothingHeadHatSantahat + - id: ClothingOuterSanta - type: entity parent: BaseCostumeBundle @@ -430,8 +439,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#ff1f24" - state: wrapper-fill color: "#ffffff22" @@ -441,9 +450,10 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatShrineMaidenWig - - id: ClothingOuterSuitShrineMaiden - - id: Gohei + children: + - id: ClothingHeadHatShrineMaidenWig + - id: ClothingOuterSuitShrineMaiden + - id: Gohei - type: entity parent: BaseCostumeBundle @@ -452,8 +462,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#fcd4d4" - state: wrapper-fill color: "#ffffff22" @@ -473,8 +483,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#1b1b1b" - state: wrapper-fill color: "#ffffff22" @@ -484,9 +494,10 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatWitch1 - - id: ClothingHeadHatWitch - - id: ClothingOuterSuitWitchRobes + children: + - id: ClothingHeadHatWitch1 + - id: ClothingHeadHatWitch + - id: ClothingOuterSuitWitchRobes - type: entity parent: BaseCostumeBundle @@ -495,8 +506,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#ae2354" - state: wrapper-fill color: "#ffffff22" @@ -506,6 +517,7 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingUniformJumpsuitDameDane - - id: ClothingOuterDameDane - - id: ClothingShoesDameDane + children: + - id: ClothingUniformJumpsuitDameDane + - id: ClothingOuterDameDane + - id: ClothingShoesDameDane diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml index 1650804e268..e7212bca8c2 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml @@ -9,8 +9,8 @@ # components: # - type: Sprite # layers: -# - state: outfit -# map: [ "enum.ToggleableVisuals.Layer" ] +# - state: outfit-1 +# map: [ "enum.StorageFillLayers.Fill" ] # color: "#ffd85d" # - state: wrapper-fill # color: "#ffffff22" @@ -22,11 +22,12 @@ # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector -# - id: ClothingHeadHatCircusClown -# - id: ClothingMaskClownNose -# - id: ClothingNeckRuffle -# - id: ClothingUniformCircusClown -# - id: ClothingShoesCircus +# children: +# - id: ClothingHeadHatCircusClown +# - id: ClothingMaskClownNose +# - id: ClothingNeckRuffle +# - id: ClothingUniformCircusClown +# - id: ClothingShoesCircus - type: entity parent: BaseCostumeBundle @@ -35,8 +36,8 @@ components: - type: Sprite layers: - - state: outfit - map: [ "enum.ToggleableVisuals.Layer" ] + - state: outfit-1 + map: [ "enum.StorageFillLayers.Fill" ] color: "#dd1818" - state: wrapper-fill color: "#ffffff22" @@ -48,12 +49,13 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatJester - - id: ClothingHeadHatJesterAlt - - id: ClothingUniformJumpsuitJester - - id: ClothingUniformJumpsuitJesterAlt - - id: ClothingShoesJester - - id: ClothingShoesJester + children: + - id: ClothingHeadHatJester + - id: ClothingHeadHatJesterAlt + - id: ClothingUniformJumpsuitJester + - id: ClothingUniformJumpsuitJesterAlt + - id: ClothingShoesJester + - id: ClothingShoesJester # TODO: Port from Impstation # - type: entity @@ -63,8 +65,8 @@ # components: # - type: Sprite # layers: -# - state: outfit -# map: [ "enum.ToggleableVisuals.Layer" ] +# - state: outfit-1 +# map: [ "enum.StorageFillLayers.Fill" ] # color: "#463c6a" # - state: wrapper-fill # color: "#ffffff22" @@ -76,9 +78,10 @@ # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector -# - id: ClothingUniformMusicianSingerDress -# - id: ClothingHandsMusicianSingerGloves -# - id: ClothingNeckFeatherBoa +# children: +# - id: ClothingUniformMusicianSingerDress +# - id: ClothingHandsMusicianSingerGloves +# - id: ClothingNeckFeatherBoa # TODO: Port from Impstation # - type: entity @@ -88,8 +91,8 @@ # components: # - type: Sprite # layers: -# - state: outfit -# map: [ "enum.ToggleableVisuals.Layer" ] +# - state: outfit-1 +# map: [ "enum.StorageFillLayers.Fill" ] # color: "#463c6a" # - state: wrapper-fill # color: "#ffffff22" @@ -101,5 +104,6 @@ # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector -# - id: ClothingHeadHatMusicianShako -# - id: ClothingUniformJumpsuitMusicianMarchingBand +# children: +# - id: ClothingHeadHatMusicianShako +# - id: ClothingUniformJumpsuitMusicianMarchingBand diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/label.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/label.png index afeae01c718cd429500cf56ff1107aeef5109673..011b74a535dcc89a12cd472257feb095badbbce8 100644 GIT binary patch delta 137 zcmdnPIE!(DWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgPk>K|E08`hZ`RGD`~Ls`zizTl z1CY;B666=m0OW7hb?5-{bv#`hLo9le6C_xh1q=*FVdQ&WS0Z2>{>6DvkgE delta 171 zcmbQmxQB6qWIY=L14D6D)fXVeSRCZ;#IWw1%u67r%+tj&B%(DrL4tL0f=EwOpur_Z z<&9kVa(BPW&s?AOv?KiQ+T`Do5F?ja*DpEo2Pni^666=m@E-_dE~tS_a`tp_46*2aJJFDjL4k)U`r-e4 zv&<~@jk~L~#n}w11^iR^Ca5Uz^jl2X`%q_{*aYVlOKU_{EsQP-l{x3}W$xL#@@H9= XBrpjTG^%O=jbre1^>bP0l+XkK0USN) literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit-2.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit-2.png new file mode 100644 index 0000000000000000000000000000000000000000..3108e3c9cc40c9725620abdc87568360f4b7e6c8 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|_yc@GT!D1m z%&l{_9lQA8>F?ja*DpEo2Pni^666=m@E-_dE~tS_a`tp_46*2aJJFDjL4k)U`r-e4 zv&<~@jk~L~#n}w11^iR^Ca5Uz^jl2X`%q_{*aYVlOKU_{EsQP-l{x3}W$xL#@@H9= XBrpjTG^%O=jbre1^>bP0l+XkK0USN) literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/outfit.png deleted file mode 100644 index 792ff0027d3ad9cf9e71559bdcaef276b74d67b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}D?MEtLn2y} z6C_v{Cy4MEB&fIt-#xST|HqT&ORFcR>Rp@`U-RM1|D){w|NsB{E6sZN2&d(Qq|+C5 zk3ADel0E3MN_oqYqbnA*<*)}x_gE!dVPt;CAQogAQ~j%}k$Fe!WOu9?yQ*>_7n2;E%voOMz5 mk%i&1{Y`-eTyBh885yo-mw1)_)7uYpG=rzBpUXO@geCyMEnam1 diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper-fill.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper-fill.png index 6d39a3edd9a076e0fd68e113ef7c487d371d4800..4d266e7eb900b0d4183bb47f84dddf76c4fea610 100644 GIT binary patch delta 120 zcmeBW>|&fCS;)-5z~Hi^>llz?EDmyaVpw-h<|UBB7T^=&3Z(!4|G)I+{JTIFQ%R6t zFvI`oiAr06JQYtD#}JF&b1*v~*&l7T_cj^U$G Svlt6dJ%gvKpUXO@geCyTvLy)s delta 123 zcmeBT>}8xFS;EG^z))OO^#w>V76-XIF|0c$^AgB$_jGX#iD-R$Z6hy(0uS@S8Gp;o zv~P5@1N0 diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/wrapper.png index 690e4a40190042a24fd2e84bd705cf1d4ae7fe33..57282a81472d5354703f5cbf5336012ad23b52ac 100644 GIT binary patch delta 134 zcmZ3$ID>J5WIZzj1B1(wu46!ou{g-xiDBJ2nU_EgTYyi9E08{S?wt5%@lQY&Q%R6t zFvI`oiAr06JR?sR#}JF&i=-MhFt#)ODeKW%Fpp`;i(`Uw gD|i)@4)&xlFf5qC;8}5*8)OxOr>mdKI;Vst0N4jBVE_OC delta 143 zcmV;A0C4}90iXep8Gi-<0047(dh`GQ00DDSM?wIu&K&6g003G^L_t(oh3%HX4Zt7_ z#GvX#xBm=Tsf+-Y_(1LVaj|#=S`+y@ogS#FZzY!mcW)a`v#4;Tm}FlnlBCay$@OCa xI$*}Lt4IL_6j0z;0lbQ@dydcgkch~Y4CwzXnRjkUzyJUM00>D%PDHLkV1o8iJF@@) From 60b2a095a7e04d58f432096bcdeb5bdeac656819 Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Sat, 21 Mar 2026 11:46:41 -0500 Subject: [PATCH 15/17] remove redundant costume icons --- .../Entities/Objects/Storage/costumes_job.yml | 8 -------- .../Storage/costume_bundle.rsi/icon-clown.png | Bin 373 -> 0 bytes .../Storage/costume_bundle.rsi/icon-musician.png | Bin 376 -> 0 bytes .../Objects/Storage/costume_bundle.rsi/meta.json | 6 ------ 4 files changed, 14 deletions(-) delete mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/icon-clown.png delete mode 100644 Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/icon-musician.png diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml index e7212bca8c2..eaa97f8f70e 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes_job.yml @@ -17,8 +17,6 @@ # - state: wrapper # - state: label # color: "#74ff33" -# - type: Icon -# state: icon-clown # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector @@ -44,8 +42,6 @@ - state: wrapper - state: label color: "#74ff33" - - type: Icon - state: icon-clown - type: EntityTableContainerFill containers: storagebase: !type:AllSelector @@ -73,8 +69,6 @@ # - state: wrapper # - state: label # color: "#6f56b8" -# - type: Icon -# state: icon-musician # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector @@ -99,8 +93,6 @@ # - state: wrapper # - state: label # color: "#6f56b8" -# - type: Icon -# state: icon-musician # - type: EntityTableContainerFill # containers: # storagebase: !type:AllSelector diff --git a/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/icon-clown.png b/Resources/Textures/_DEN/Objects/Storage/costume_bundle.rsi/icon-clown.png deleted file mode 100644 index c80b2779eb8d334c2219537973bcb763e0fc2965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmV-*0gC>KP)Px$FG)l}R9J=Wma$92P!PsH#nvE%B4o*$!Tn__N~iuM!O6wRLC_(CLWfRWI!XSL zPDSZ-w>!KwOF%-FfI?i%(7~5?HBhMUH-C5cPx$GD$>1R9J=WmN84iP!PxeN?U_air|nn`2zAXb?IWKd6eQb?M$O zk*O|SI^E$Hcv&+D61oHw;$nslzPxJ#1%1Eye|P`fy_b7{!|~rak_He_WuuFt$SQY7 zT3jg=4o72c(ydp^kccW96V?Xm;>@fEeGdTOb+^OI&o2M~Gi#-kl?hP?hNH0_^gTR3 zO^mwxhes5fQqO18#+)Jp`1$H2Ng6eUWxivnfwr-}1y`3ZTc`i*{KBaJcz*)`EMD)7 zHCpRHo~6jMR2+Bk5wv0;&r_lZjpU8zb0sF4#zjt W{AfnX9)7I=0000 Date: Sat, 21 Mar 2026 11:53:01 -0500 Subject: [PATCH 16/17] i ficked it --- .../Prototypes/_DEN/Entities/Objects/Storage/costumes.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml index 95e4b50dc40..a81607df40b 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml @@ -473,8 +473,9 @@ - type: EntityTableContainerFill containers: storagebase: !type:AllSelector - - id: ClothingHeadHatSkub - - id: ClothingOuterSkub + children: + - id: ClothingHeadHatSkub + - id: ClothingOuterSkub - type: entity parent: BaseCostumeBundle From 26d44d74cc8d23ca9d1466492396a1ba726b924c Mon Sep 17 00:00:00 2001 From: portfiend <109661617+portfiend@users.noreply.github.com> Date: Sat, 21 Mar 2026 11:55:47 -0500 Subject: [PATCH 17/17] add suffix to empty costume bundles --- Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml index a81607df40b..4983f342a33 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Storage/costumes.yml @@ -67,6 +67,7 @@ - type: entity parent: BaseCostumeBundle id: EmptyCostumeBundle + suffix: empty description: A bag for storing assorted costume parts. components: - type: Sprite