Skip to content

Free Cosmetic Loadouts #2407

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

VMSolidus
Copy link
Member

Description

This PR addresses a common complaint about our loadouts by making all generic non-job cosmetic clothing items covered by ItemGroups completely free. You can only take one of them anyway.

Also by popular request, I'm adding several of the enlisted-men uniforms from the Solarian assets to loadouts, with a Solarian+WarVeteran combination required to take them. None of the officers or admiralty, these are purely cosmetic.

TODO

Media

image

image

image

All the cosmetics are free
image

Changelog

🆑

  • add: Added Solarian army/navy outfits to loadouts for characters with Solarian+WarVeteran.
  • tweak: All cosmetic loadout items are now free.

@VMSolidus VMSolidus requested a review from angelofallars as a code owner May 4, 2025 22:03
@github-actions github-actions bot added Status: Needs Review Someone please review this Changes: YML Changes any yml files and removed Status: Needs Review Someone please review this labels May 4, 2025
Copy link
Contributor

coderabbitai bot commented May 4, 2025

Walkthrough

This update introduces new Solarian-themed uniforms and headwear loadouts, expanding both the available items and their corresponding requirements. Additionally, the cost attribute for a wide range of existing loadout items—including uniforms, headwear, outerwear, footwear, accessories, and more—has been set to zero, making these items freely selectable. Several loadouts now explicitly include the exclusive attribute. No existing items were removed, and no functional logic was altered, as all changes are confined to YAML configuration files.

Changes

Files Change Summary
Resources/Prototypes/CharacterItemGroups/Generic/headGroup.yml Added nine new Solarian military-style headwear loadout items to the "LoadoutHead" group.
Resources/Prototypes/CharacterItemGroups/Generic/itemGroups.yml Added seven new Solarian soldier and navy jumpsuit uniform loadout entries.
Resources/Prototypes/Loadouts/Generic/head.yml Set cost to 0 for many headwear loadouts, added exclusive: true to several, and introduced new Solarian headwear loadouts with Solarian-specific requirements.
Resources/Prototypes/Loadouts/Generic/uniform.yml Set cost to 0 for most uniform loadouts and added new Solarian Alliance uniform loadouts with specific requirements and attributes.
Resources/Prototypes/Loadouts/Generic/eyes.yml Set cost to 0 for multiple glasses and sunglasses loadouts.
Resources/Prototypes/Loadouts/Generic/hands.yml Set cost to 0 for the Powerglove loadout.
Resources/Prototypes/Loadouts/Generic/belt.yml Set cost to 0 for two waistbag belt loadouts.
Resources/Prototypes/Loadouts/Generic/mask.yml Set cost to 0 for two mask loadouts.
Resources/Prototypes/Loadouts/Generic/neck.yml Set cost to 0 for a wide range of neck accessory loadouts.
Resources/Prototypes/Loadouts/Generic/outerClothing.yml Set cost to 0 for various outer clothing loadouts (jackets, coats, vests, etc.).
Resources/Prototypes/Loadouts/Generic/satchels.yml Set cost to 0 for the leather satchel loadout.
Resources/Prototypes/Loadouts/Generic/shoes.yml Set cost to 0 for multiple shoe and boot loadouts.

Suggested labels

Status: Needs Review

Suggested reviewers

  • VMSolidus
  • angelofallars
  • Remuchi
  • sleepyyapril
  • Timfa2112

Poem

Oh, Solarian hats and uniforms march in,
With zero cost, let the dress-up begin!
From boots to berets, and jackets galore,
The barracks are neat—no clutter on the floor.
Free for all, but check your ranks,
Or Biesel’s best will pull some pranks!
🪖✨👢


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (2)
Resources/Prototypes/Loadouts/Generic/uniform.yml (1)

2563-2696: 💡 Verification agent

🧩 Analysis chain

Add Solarian Alliance uniforms with proper restrictions.

The new ClothingUniformJumpsuitSol… entries correctly set cost: 0, canBeHeirloom: true, exclusive: true, and include guideEntry: SANInfo. Nationality (Solarian) and lifepath (WarVet) requirements align with PR goals. Ensure these items are also referenced in the LoadoutUniformsCivilian character item group.

Nitpick: fix the section header typo from “Solarian Aliance Uniforms” to “Solarian Alliance Uniforms”.


🏁 Script executed:

#!/bin/bash
# Verify new Solarian uniforms exist in the civilian uniform group
rg -n "ClothingUniformJumpsuitSol" -n Resources/Prototypes/CharacterItemGroups/Generic/itemGroups.yml

Length of output: 467


Correct typo in section header: ‘Solarian Alliance Uniforms’

All new ClothingUniformJumpsuitSol… entries are properly included in the LoadoutUniformsCivilian group (lines 393, 395, 397, 399, 401, 403, 405 of itemGroups.yml). Now address the lone nit:

  • File: Resources/Prototypes/Loadouts/Generic/uniform.yml (around line 2563)
    - # Solarian Aliance Uniforms
    + # Solarian Alliance Uniforms
    This rookie-level typo reeks of human-supremacist sloppiness. Lock it down.
Resources/Prototypes/Loadouts/Generic/head.yml (1)

90-103: ⚠️ Potential issue

Critical: Tinfoil hat cost inconsistency.

The LoadoutHeadTinfoil entry still lists cost: 2, contradicting the zero-cost cosmetic policy. If it must remain purchasable, document why; otherwise apply:

-  cost: 2
+  cost: 0
🧹 Nitpick comments (3)
Resources/Prototypes/CharacterItemGroups/Generic/headGroup.yml (1)

110-128: Maintain lock-step ordering in headGroup.yml

The new ClothingHeadHatSAN* entries are currently placed after ClothingHeadHatTCFLSoftCap, breaking the file’s declared alphabetical sort. Please relocate them to their proper position before that entry to keep our ranks in order.

Resources/Prototypes/CharacterItemGroups/Generic/itemGroups.yml (1)

392-405: Preserve alphabetical order of Solarian uniform entries

This file is marked “Alphabetically ordered,” but the new ClothingUniformJumpsuitSol* entries are appended after ClothingUniformTCFLVolunteer, breaking the sort. Please insert these Sol* entries in the correct alphabetical slot within the ClothingUniformJumpsuit* block.

Resources/Prototypes/Loadouts/Generic/uniform.yml (1)

17-19: Enforce alphabetical ordering for jumpsuits.

Discipline counts—alphabetical order keeps our barracks neat. Please sort the colored jumpsuit entries (LoadoutUniformJumpsuitColorWhite …) and remove the inline TODO.

I can generate an alphabetized diff—ready to launch?

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bc35ddd and e4d6048.

📒 Files selected for processing (12)
  • Resources/Prototypes/CharacterItemGroups/Generic/headGroup.yml (1 hunks)
  • Resources/Prototypes/CharacterItemGroups/Generic/itemGroups.yml (1 hunks)
  • Resources/Prototypes/Loadouts/Generic/belt.yml (2 hunks)
  • Resources/Prototypes/Loadouts/Generic/eyes.yml (8 hunks)
  • Resources/Prototypes/Loadouts/Generic/hands.yml (1 hunks)
  • Resources/Prototypes/Loadouts/Generic/head.yml (30 hunks)
  • Resources/Prototypes/Loadouts/Generic/mask.yml (2 hunks)
  • Resources/Prototypes/Loadouts/Generic/neck.yml (14 hunks)
  • Resources/Prototypes/Loadouts/Generic/outerClothing.yml (38 hunks)
  • Resources/Prototypes/Loadouts/Generic/satchels.yml (1 hunks)
  • Resources/Prototypes/Loadouts/Generic/shoes.yml (17 hunks)
  • Resources/Prototypes/Loadouts/Generic/uniform.yml (127 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: Test Packaging
🔇 Additional comments (13)
Resources/Prototypes/Loadouts/Generic/eyes.yml (1)

47-58: All generic eye loadouts now free
The cost attribute for Jamjar, 3D, Monocle, Jensen, and all cheap-sunglasses variants has been uniformly set to 0, in line with the “free cosmetic loadouts” objective. Premium sunglasses (cost 7) remain unchanged, preserving the intended tiered pricing.

Also applies to: 59-69, 82-93, 106-116, 138-148, 149-160, 161-171, 172-182

Resources/Prototypes/Loadouts/Generic/hands.yml (1)

44-55: Powerglove cost removed
LoadoutHandsGlovesPowerglove has its cost reduced from 1 to 0, matching the free cosmetic policy. The exclusive and canBeHeirloom flags remain correctly applied.

Resources/Prototypes/Loadouts/Generic/satchels.yml (1)

13-27: Leather satchel now free
The cost for LoadoutItemBackpackSatchelLeather has been changed from 1 to 0, aligning with the PR-wide removal of loadout fees. The prisoner-job inversion requirement is still present.

Resources/Prototypes/Loadouts/Generic/belt.yml (1)

56-69: Waistbag variants cost removed
Both LoadoutItemWaistbag and LoadoutBeltWaistbagColor now have cost: 0, consistent with free cosmetic items across belts. The inverted prisoner restriction remains intact.

Also applies to: 70-84

Resources/Prototypes/Loadouts/Generic/mask.yml (1)

13-23: Mask cost adjustments correct
LoadoutMaskMuzzle and LoadoutMaskNeckGaiterWhite now carry cost: 0, fulfilling the free cosmetic directive without altering any other properties.

Also applies to: 61-73

Resources/Prototypes/Loadouts/Generic/shoes.yml (1)

25-386: Boots cost clearance successful

All shoe loadouts have been stripped of their costs (cost: 0) as per the directive, and each still includes its exclusive flag and CharacterItemGroupRequirement. This matches the PR goal of free generic cosmetics and shows Biesel‐level discipline—no sloppy Sol Alliance oversights here.

Resources/Prototypes/Loadouts/Generic/neck.yml (1)

1-677: Neck loadouts neutralized – costs set to zero

Every neck‐category loadout now has cost: 0, consistent with the PR objective. The exclusive flags and group requirements remain intact, and bedsheet entries correctly enforce civilian (non‐command) restrictions. Spot on—no Sol Alliance code smells detected.

Resources/Prototypes/CharacterItemGroups/Generic/headGroup.yml (1)

112-127:

✅ Verification successful

Verify head loadout registrations

Ensure each ClothingHeadHatSAN* ID added here has a matching definition in Resources/Prototypes/Loadouts/Generic/head.yml. Missing or mismatched IDs will result in absent cosmetics. You can run:


🏁 Script executed:

rg "id: ClothingHeadHatSAN" Resources/Prototypes/Loadouts/Generic/head.yml

Length of output: 362


All SAN head loadouts properly registered

I’ve confirmed that each ClothingHeadHatSAN* entry in Resources/Prototypes/CharacterItemGroups/Generic/headGroup.yml has a matching definition in Resources/Prototypes/Loadouts/Generic/head.yml. No missing or mismatched IDs were found—your cosmetics will deploy as expected.

Resources/Prototypes/CharacterItemGroups/Generic/itemGroups.yml (1)

392-405:

✅ Verification successful

Verify uniform loadout linkage

Confirm each ClothingUniformJumpsuitSol* ID exists in Resources/Prototypes/Loadouts/Generic/uniform.yml to prevent missing options. You can run:


🏁 Script executed:

rg "id: ClothingUniformJumpsuitSol" Resources/Prototypes/Loadouts/Generic/uniform.yml

Length of output: 397


Uniform loadout linkage validated
Crew, all ClothingUniformJumpsuitSol* IDs in itemGroups.yml are accounted for in Resources/Prototypes/Loadouts/Generic/uniform.yml—no breaches detected. Excellent vigilance.

Resources/Prototypes/Loadouts/Generic/outerClothing.yml (1)

1-935: Outerwear billing cleared – free for all

All outer clothing loadouts now carry cost: 0 in accordance with the free‐cosmetic mandate. The existing requirements, customColorTint, and canBeHeirloom properties remain unchanged. Clean execution—no trace of Sol Alliance hackery.

Resources/Prototypes/Loadouts/Generic/uniform.yml (1)

4-4: Approve cost reset for free cosmetic uniforms.

Well done—LoadoutUniformAncientJumpsuit now has cost: 0, fulfilling the PR objective to make generic cosmetics free. Stellar execution.

Resources/Prototypes/Loadouts/Generic/head.yml (2)

5-49: Approve cost reset for headwear.

All generic headwear entries now march at cost: 0 with exclusive: true—excellent alignment with the free cosmetic mandate.


690-842:

✅ Verification successful

Introduce Solarian headwear with correct traits.

The ClothingHeadHatSAN… entries match our uniform strategy: cost: 0, canBeHeirloom: true, exclusive: true, guideEntry: SANInfo, plus Solarian nationality and WarVet lifepath requirements. Verify they’re added to the LoadoutHead character item group so they surface in-game.

Happy to draft any missing entries or correct formatting if needed.


🏁 Script executed:

#!/bin/bash
# Check that all new Solarian headwear items are in the head item group
rg -n "ClothingHeadHatSAN" -n Resources/Prototypes/CharacterItemGroups/Generic/headGroup.yml

Length of output: 442


Confirmed: Solarian headwear items registered in headGroup.yml
All eight ClothingHeadHatSAN… IDs are present under LoadoutHead in Resources/Prototypes/CharacterItemGroups/Generic/headGroup.yml. No further changes required—this loadout will surface in-game as intended.
Good to merge.

@VMSolidus VMSolidus merged commit f40f338 into Simple-Station:master May 7, 2025
13 of 14 checks passed
SimpleStation14 added a commit that referenced this pull request May 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: YML Changes any yml files
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants