* Adds sheep Ported from TG. * Expands the wooly system to allow wooly creatures to be sheared. Shearing creates cotton, with a ratio to match the nutritional value of the fibre reagent. Look, there's no wool item and I don't want to add them, they're generically modified space sheep that grow cotton, what do you want from me?? * Add shears icon * Switch to better icon * Decouple shearing system from wooly system. * Add cutting quality to barber scissors. Means they can now shear animals and cut wires. * Add toggled wool to sheep * Move wooly layer handling to wooly system. Otherwise it wouldn't account for wooly mobs that can't be sheared, which I think would be a problem. * Fix incorrect message when there's not enough solution to shear off, but there's more than 0. * Add shearing on left-click. * Add dead wool sprite Unused for now * I installed a formatter teehee * Disable wooly layer when the mob dies. * No need to check life state at two places. * Moving to shared for prediction or something * Completes transition to shared, adds some more comments. * Switch to SharedSolutionContainer to fix merge conflict? * Fix accidental paste. * Moved sheep spawner into animals.yml * Move shearable system to Animals (plural) * Switch visuals layer to new ToggleableVisuals * Fixes serialization error. Solution should not have been a DataField. Also fixes a typo. * Re-arrange a little for clarity. * Resolve serialisation error, better formatting and sheep default to having 25 wool. * Added space sheep. Sprite by Aleksh, comissioned by Baa. * Make Jetpack fields modifiable. Useful for adding jetpack effects to mobs * Space sheep now fly, glow and produce jetpack effects * Clarifying one comment and removing an un-used value. * Remove unused space sheep sprite. * Remove unused sprite and add space sheep dead. * SpaceSheep inherits from sheep instead of duplicating yaml * Re-arrange and rename sprites for consistency and clarity. And also add a space sheep spawner. * Add an optional description addon for the shearable component. * Move all shearable system into shared. No longer spawns stacks of things and doesn't require stackable objects to be defined. * Add rainbow sheep and sheep base. Inheriting the parent of sheep was breaking spacesheep so now they all inherit from this sort of sub-sheep thing. * Sheep plushies, sprites pending. * Sheep plushies Please don't eat them ;q; * Rainbow Sheep spawner * BAAAAA * Working shearable layer. * Remove ShearableVisualsComponent, move details into ShearableComponent * Update license definition. I'm just saying, the website says it has no dashes. * Re-use pre-existing mobstate enum instead of re-writing it. * Remove unused return enum * Clean up ShearableSystem and fix calculation bug. * Trim silence from sheep SFX and add reverbed space sheep versions Space Sheep now generate Durathread and use new shearable layer. * I don't like the word floofy * Sheep crates and wooly spawner * Rename "sheared" to "shearable" because it didnt' make sense. * Remove extra space * Fix YAML errors. * Sheep base should be abstract * Remove ActiveJetpack from spacesheep (crying) * Set SpaceSheep price to 600 * Revert Active Jetpack changes. * Fix every file ending * Revert changes to WoolySystem No need to cause additional merge conflicts * Missed a line * Missed another line * Fix tool selection so null actually works for no tools. Also uses object instead of string. Same for shearing strings. * Requested formatting changes, plus some comment fixes. * Remove extra spaces * Make shearing icon customisable * Slightly dither spawned items for exciting fun This implementation works flawlessly without any issues and it's even predicted. * No longer spawns in walls * Space Sheep now grow two dura-thread every 2 minutes. * The REST of the requested changes ❤️ * Make the shearing verb customisable. It's used in some strings, or might be one day. * Bunch of requested changes, also adds popup when wrong tool used. But i'll probably end up removing it because it happens for other clicks, like feeding the sheep. * Remove weird solution entity caching and instead return it from CheckShear. * Requested changes. * Used proper random spawning prediction. Thanks to #39661 * Requested changes Fixed param name shearingSolutionEnt. Removed unused popup line, leave comment. Verb is now always added but disabled when appropriate. TODO look into weird butcher verb. * Re-arrange AddShearVerb a bit to remove a redundant null check. * Remove uneeded check. * Switch from TryIndex to Index when checking ToolQuality * Make shearable markup text nullable and null by default. * Switch MaximumProductsSpawned to int * Revert woolyComponent changes. I've decided it's out-of-scope and I don't want to cause mergeconflicts with any pending changes to wooly. * One more change removed. * Add newline * Switch to FixedPoint2.Min and re-do shearing forumula documentation. * Make shearable spawn offset configurable. * Fix everything wrong with shearingSolutionToRemove It was calculated twice. One of the calculations just didn't work. The comment was mostly right but I clarrified some parts and also made sure it was correct. How confident am I? If I was advising stock trading I would call this description "Financial Advice" and then collect a large paycheck. * Add overload functions for ChearShear and switch to propert ent<T> syntax * Simplify UpdateShearingLayer calculation Clarity suggestion. * Add sheep plushies to fun places. * Fix missing line end * Convert CheckShear to return a boolean instead of an enum. * Add missing documentation. * Update Food to Edible * Update random calculations. Can still be replaced once PredictedRandom is in engine * Rename CheckShear to CanShear * Fix sheep being deleted when a moth eats their wool Fix attempting to shear sheep with all objects. Add speech verbs and sounds for sheep. * Use some NotNullWhen statements to a void some additional codies <3 Remove a few other redundant things. * Add missing emote sounds for sheep. * Removed unsued shearingSolutionState out var. * Requested YAML adjustments * Adjust documentation of CanShear to reduce duplication. * I missed a comma and it didn't read right * Suggested simplification of examine function * New tool quality just for shearing Add shearing to wirecutters, barber's scissors, cowcutters, and plant clippers (these can all shear sheep). * Correct ShearedProductId syntax. Removed an unused variable. * Rework CanShear() function to reduce number of out vars and overide varients. for simplicity. * Update to new solutions system <3 * test * Fix compiler warnings with partial class and readonly dependencies. * Completely rework shearing algorithm so it makes sense. The entirety of the previous calculation was borne from my misunderstanding of what FixedPoint2 is and does and how it works. Now it's simple and actually makes sense. * Rebalance sheep materials to match the solutions inside the product. * Yaml fix * Documentation tweaks * Fix any item being used to shear sheep. I don't know why that was false * Switch to Loc.TryGetString, fix warning message name reference, upgrade message to warning severity from debug, add earlier return for shearable checks. * Make TargetSolutionName a required datafield. --------- Co-authored-by: Beck Thompson <beck-thompson-kde@outlook.com>
Space Station 14 is a remake of SS13 that runs on Robust Toolbox, our homegrown engine written in C#.
This is the primary repo for Space Station 14. To prevent people forking RobustToolbox, a "content" pack is loaded by the client and server. This content pack contains everything needed to play the game on one specific server.
If you want to host or create content for SS14, this is the repo you need. It contains both RobustToolbox and the content pack for development of new content packs.
Links
Documentation/Wiki
Our docs site has documentation on SS14's content, engine, game design, and more.
Additionally, see these resources for license and attribution information:
We also have lots of resources for new contributors to the project.
Contributing
We are happy to accept contributions from anybody. Get in Discord if you want to help. We've got a list of issues that need to be done and anybody can pick them up. Don't be afraid to ask for help either!
Just make sure your changes and pull requests are in accordance with the contribution guidelines.
We are not currently accepting translations of the game on our main repository. If you would like to translate the game into another language, consider creating a fork or contributing to a fork.
AI-generated contributions disclaimer
This project does not accept low-effort or wholesale AI-generated contributions. Examples include, but are not limited to:
- Any code (including yaml) generated by tools like GitHub Copilot, ChatGPT, or similar.
- AI-created artwork, sound files, or other assets.
- Auto-generated documentation, issue reports or pull request descriptions.
Exceptions to this are simple tools like Rider's single-line completion feature.
Building
- Clone this repo:
git clone https://github.com/space-wizards/space-station-14.git
- Go to the project folder and run
RUN_THIS.pyto initialize the submodules and load the engine:
cd space-station-14
python RUN_THIS.py
- Compile the solution:
Build the server using dotnet build.
More detailed instructions on building the project.
License
All code for the content repository is licensed under the MIT license.
Most assets are licensed under CC-BY-SA 3.0 unless stated otherwise. Assets have their license and copyright specified in the metadata file. For example, see the metadata for a crowbar.
Note
Some assets are licensed under the non-commercial CC-BY-NC-SA 3.0 or similar non-commercial licenses and will need to be removed if you wish to use this project commercially.