Skip to content
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

Add hormone replacement therapy #2275

Conversation

sowelipililimute
Copy link
Contributor

@sowelipililimute sowelipililimute commented Nov 24, 2024

About the PR

This introduces hormone replacement therapy, allowing transgender characters to get medications that make their body better reflect what they want. It also introduces new pill shapes for HRT, e.g. estradiol reflects its iconic real-world design.

Why / Balance

This adds roleplay opportunities for transgender characters, similar to how the chronic pain adds roleplay opportunities for disabled and chronically ill characters.
In terms of balance, the HRT is nothing major: it purely changes the characters' Sex field without any other side effects that could construe an advantage or disadvantage.

Technical details

  • Commit 1: Adds new pill designs
    • Introduces the two new textures
    • Modifies the ChemMaster in order to display them in the UI
  • Commit 2: Adds hormone replacement therapy
    • New status effect (components): Feminized and Masculinized. They keep track of the humanoid entity's original sex.
    • New system introduced: Hormone system, changes the sexes of humanoid entities depending on the Feminized and Masculinized components getting added/removed by the status effects system.
    • Reagent definitions for hormonium, estradiol, and testosterone
    • Reaction definitions for estradiol and testosterone
    • Grinding recipes for hormonium, to be obtained by grinding trans pins or cloaks
    • Translation keys for the new reagents and status effects
  • Commit 3: Adds hormone sensitivity traits & gatekeeps HRT behind them
    • Component/trait definitions for "estradiol sensitive" and "testosterone sensitive"
    • HormoneSystem changed so that hormones only have an effect if there's a sensitivity component for the target sex applied to the character

Media

Injecting estradiol into a human:
https://github.com/user-attachments/assets/d3644a47-043b-4e6c-b210-ad1bb6f36b36

New pill textures:
grafik

Requirements

  • I have tested all added content and changes.
  • I have added media to this PR or it does not require an ingame showcase.

Breaking changes

Changelog
🆑

  • add: Added hormone replacement therapy

@github-actions github-actions bot added S: Needs Review Changes: YML Changes any yml files Changes: UI Changes: C# Changes any cs files Changes: Localization Changes any ftl files Changes: Sprite Changes any png or json in an rsi S: Untriaged This issue or PR needs labelling size/M 64-255 lines labels Nov 24, 2024
Copy link
Contributor

github-actions bot commented Nov 24, 2024

RSI Diff Bot; head commit 37a5e29 merging into c084a4f
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Objects/Specific/Chemistry/pills.rsi

State Old New Status
pill22 Added
pill23 Added

Edit: diff updated after 37a5e29

Content.Shared/Drugs/HormoneComponents.cs Outdated Show resolved Hide resolved
Content.Shared/Drugs/HormoneComponents.cs Outdated Show resolved Hide resolved
Comment on lines 11 to 17
[RegisterComponent, NetworkedComponent]
public sealed partial class MasculinizedComponent : Component, IHormoneComponent {
public Sex Target => Sex.Male;

[DataField("original")]
public Sex? Original { get; set; } = null;
}
Copy link
Member

Choose a reason for hiding this comment

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

just have this be HormoneComponent with Target and Original as datafields

[RegisterComponent, NetworkedComponent]
public sealed partial class HormoneComponent : Component
{
    [DataField(required: True)]
    public Sex Target;

    [DataField]
    public Sex? Original;
}

Comment on lines 19 to 25
[RegisterComponent, NetworkedComponent]
public sealed partial class FeminizedComponent : Component, IHormoneComponent {
public Sex Target => Sex.Female;

[DataField("original")]
public Sex? Original { get; set; } = null;
}
Copy link
Member

Choose a reason for hiding this comment

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

remove

Resources/Locale/en-US/_CD/reagents/meta/medicine.ftl Outdated Show resolved Hide resolved
Resources/Locale/en-US/_CD/reagents/meta/physical-desc.ftl Outdated Show resolved Hide resolved
Comment on lines +15 to +20
- !type:GenericStatusEffect
key: Masculinized
component: Masculinized
type: Add
time: 2
refresh: false
Copy link
Member

Choose a reason for hiding this comment

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

make an effect to add HormoneComponent with a target sex
then just

- !type:HormoneEffect
  target: Male

Copy link
Contributor Author

Choose a reason for hiding this comment

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

are you wanting me to implement the temporary status effect logic myself for these components? AFAICT the GenericStatusEffect component only takes a single key and not a full component description

Copy link
Member

Choose a reason for hiding this comment

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

yes reimplement it

ideally generic status effect would use a ComponentRegistry but oh well

Comment on lines +36 to +41
- !type:GenericStatusEffect
key: Feminized
component: Feminized
type: Add
time: 2
refresh: false
Copy link
Member

Choose a reason for hiding this comment

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

above but Female

@@ -143,6 +143,16 @@
components:
- type: Sprite
sprite: Clothing/Neck/Cloaks/trans.rsi
# Begin DeltaV Additions - trans pins can be ground into hormonium
Copy link
Member

Choose a reason for hiding this comment

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

cloak

Comment on lines +76 to +81
{
"name": "pill22"
},
{
"name": "pill23"
},
Copy link
Member

Choose a reason for hiding this comment

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

these sprites just look like horizontally scaled round sprites

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yea i get that for the sprite 23 because it doesn't have a real world analogue, but sprite 22 will read as an estradiol pill to most people that know what they look like

i could probably drop the 23rd sprite?

@Avalon-Proto
Copy link
Contributor

I will admit. I'm not sure how to feel about this one, cause what if someone just, shoots you with a syringe full of it? Or makes a smoke/foam bomb of them? I feel like that might cause some folks issues

@deltanedas
Copy link
Member

charcoal will scrub it so its easy to treat a shitter

@BlitzTheSquishy
Copy link
Contributor

charcoal will scrub it so its easy to treat a shitter

you have no idea how infrequently medical makes neither ipecac or charcoal (its borderline never)

@dotCatshark
Copy link
Contributor

charcoal will scrub it so its easy to treat a shitter

you have no idea how infrequently medical makes neither ipecac or charcoal (its borderline never)

I mean they probably should be making it more anyways.

@BlitzTheSquishy
Copy link
Contributor

we also have the syringe gun, which may cause issues there too

also I try get them to make charcoal- they just dont

@LadyDanger2743
Copy link

I agree heavily with Avalon. As a trans woman, I think having HRT is perhaps a cool idea, BUT this is very easy to abuse. Moreover, HRT is typically something you take twice a day, at most; it wouldn't be too much to assume that you're medded up by the start of the shift and will get your meds by the end (if you survive of course).

I feel that people who want to roleplay their characters as trans can do so through some of the systems that already exist or simply roleplaying it. A character of mine had an implanter in her personal lore that provided her with HRT, for example, and I'd be down to see a system that'd let you choose multiple pronoun options that your character responds to (a checkbox system as opposed to a pick-one-only system). But this is able to be abused to possibly cause dysphoria, and is also generally not something you notice unless you're topless or naked (the latter of which is generally disallowed anyways).

@github-actions github-actions bot added size/L 256-1023 lines and removed size/M 64-255 lines labels Nov 24, 2024
@dvir001
Copy link
Contributor

dvir001 commented Nov 24, 2024

I feel like it's worth to mention this 2 wizden pr's:
space-wizards/space-station-14#29528
space-wizards/space-station-14#29531

@deltanedas
Copy link
Member

trait is an excellent idea to prevent abuse, only real issue now is realism but who cares its opt in

@MilonPL MilonPL removed the S: Untriaged This issue or PR needs labelling label Nov 25, 2024
- new status effects: Feminized, Masculinized (changes sex)
- new reagents: Hormonium, Estradiol, Testosterone
@sowelipililimute
Copy link
Contributor Author

i am no longer interested in contributing due to the rancid community, sorry

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: C# Changes any cs files Changes: Localization Changes any ftl files Changes: Sprite Changes any png or json in an rsi Changes: UI Changes: YML Changes any yml files S: Needs Review size/L 256-1023 lines
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants