Request For Comment
Strike Team Responsible
Strike Team Body Builders
Proposal
- BodySystem loses BodyPart. BodyPart is deleted. Anything that was previously called BodyPart is now probably an Organ.
- Body templates will continue to use body parts. No YAML changes will be expected. No species will be affected.
- BodyPart functionality (organ heirarchies) is moved over to Organ components, probably called something like SkeletonComponent or ExoskeletonComponent, when needed.
- Compatibility with current Body template structure is maintained where possible.
Impact
- This allows us to greatly simplify the container hellscape that is the current BodySystem, only using it when needed.
- This allows us to build new “skeleton” organs to control body shape in the future, meaning we can better reflect endoskeletons, exoskeletons, slime cultures, Diona nymphs, Plasmamen, Skeletons, and so on.
- This will almost certainly brick downstream med implementations and will need to be done with open comms in mind so we don’t get pipe bombs mailed to us.
Explanation
Currently the data model for how a Body works is that a Body is a container of BodyPart, and of Organ. BodyPart is a container of BodyPart and Organ.
This means that Bodys themselves do not have all the Organs they actually contain, and a heirarchy of BodyParts is assumed to exist on all Bodies.
Within Space Station 14 we already have three types of creature that do not obey normal human-like assumptions:
- Simple mobs like mothroaches are Bodies with just a torso that contains their organs.
- Slimes are player species that are - in universe - literally goo and organs, with no skeleton to speak of.
- Diona are three different nymphs working together to build a combined tree person.
In the future there will be other weird species - an example might be Plasmamen or IPCs, both of which are humanoid-shaped but are not traditional biological creatures.
We shouldn’t assume how Organs are structured inside a Body, and given we’re moving Body functionality over to Organs to support surgery gameplay we need to remove hard-coded decisions like BodyPart.
Very little in upstream Wizden actually uses BodyPart. BodyPart is essentially just there to mark where someone’s hands are, and to act as the data object that reflects to how Bodies are built in YAML templates. As long as we can still support YAML templates we don’t need this implementation as it stands.
The impact on downstreams is currently unclear. By continuing to support Body templates in YAML (with maybe minor reasonable modifications) we should avoid killing most species, but there are several approaches to surgery on downstreams and it is entirely reasonable that BodyPart is used far more heavily.
We can not do this but we’d need to hack around it and ignore the code on Wizden, because we’re wanting to move to Organs doing things rather than the Body.