From a42406d731fc054981e7cb2fd60ffcddb9d30aa9 Mon Sep 17 00:00:00 2001 From: chel <64568243+iliyaxox@users.noreply.github.com> Date: Thu, 8 Jan 2026 03:33:32 -0300 Subject: [PATCH] Fixes ambiguous_genders to only obscure gender from other species (#7460) ## About The Pull Request Fixes #7163 Previously, species with `ambiguous_genders = TRUE` would be forced to display they pronouns when examined by anyone, even by themselves and other members of the same species, as well as ghosts and silicons. Now, as the var's comment intended, pronouns are properly displayed if examined by a member of the same species, ghosts and/or silicons. Otherwise, it'll be displayed as they. Also added a message at the bottom of the examine for further context. ### When examined by outsider: image ### When examined by kin (or yourself): image ## Why It's Good For The Game Bug fix & consistency ## Changelog :cl:Chelxox fix: Species which gender definition is unknown/undefinable to outsiders now display their proper pronouns when examined by members of their own species, ghosts and silicons, whilst maintaining "they" pronouns to those who don't are not members of the same species. /:cl: --- code/modules/mob/living/carbon/human/examine.dm | 17 ++++++++++++++--- code/modules/mob/living/carbon/human/human.dm | 4 +--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 9a5244888f5..a0edca65295 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -80,17 +80,24 @@ var/skipface = (wear_mask && (wear_mask.inv_hide_flags & HIDEFACE)) || (head && (head.inv_hide_flags & HIDEFACE)) var/datum/gender/T = GLOB.gender_datums[get_visible_gender()] + var/gender_obscured_by_species = FALSE // for different species examine if((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)) //big suits/masks/helmets make it hard to tell their gender T = GLOB.gender_datums[PLURAL] else if(species && species.ambiguous_genders) - if(ishuman(user)) + // ghosts are omnipotent and omniscient. borgs are logical and precise. whatever. they identify anyone's gender + if(issilicon(user) || isobserver(user)) + else if(ishuman(user)) var/mob/living/carbon/human/H = user + // only obscure gender if examiner is a different species if(H.species && !istype(species, H.species)) - T = GLOB.gender_datums[PLURAL]// Species with ambiguous_genders will not show their true gender upon examine if the examiner is not also the same species. - if(!(issilicon(user) || isobserver(user))) // Ghosts and borgs are all knowing + T = GLOB.gender_datums[PLURAL] + gender_obscured_by_species = TRUE + else + // non-human, non-silicon, non-observer examining T = GLOB.gender_datums[PLURAL] + gender_obscured_by_species = TRUE //! Just in case someone VVs the gender to something strange. //! It'll runtime anyway when it hits usages, better to CRASH() now with a helpful message. @@ -481,6 +488,10 @@ . += applying_pressure + // Add message if gender is obscured by species differences + if(gender_obscured_by_species) + . += SPAN_INFO("[T.He] [T.is] a different species. You don't have the scientific knowledge to figure out [T.his] exact gender...") + var/show_descs = show_descriptors_to(user) if(show_descs) . += SPAN_NOTICE("[jointext(show_descs, "\n")]") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index c983972408e..28991a2cb2c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -869,9 +869,7 @@ /mob/living/carbon/human/get_visible_gender() if(wear_suit && wear_suit.inv_hide_flags & HIDEJUMPSUIT && ((head && head.inv_hide_flags & HIDEMASK) || wear_mask)) return PLURAL //plural is the gender-neutral default - if(species) - if(species.ambiguous_genders) - return PLURAL // regardless of what you're wearing, your gender can't be figured out + //! attention! ambiguous_genders is now handled contextually in examine.dm based on who is examining return get_gender() /mob/living/carbon/human/proc/increase_germ_level(n)