Files
CHOMPStation2/code/_helpers/gender.dm
CHOMPStation2StaffMirrorBot 0f19a089c4 [MIRROR] Removes Gender (#11822)
Co-authored-by: Guti <32563288+TheCaramelion@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
2025-10-17 07:24:05 -04:00

621 lines
12 KiB
Plaintext

#define GET_TARGET_PRONOUN(target, pronoun, gender) call(target, ALL_PRONOUNS[pronoun])(gender)
// DATUM GENDER
// They don't have gender (often), but everything else does.
/datum/proc/p_they(temp_gender)
return "it"
/datum/proc/p_They(temp_gender)
return capitalize(p_they(temp_gender))
/datum/proc/p_their(temp_gender)
return "its"
/datum/proc/p_Their(temp_gender)
return capitalize(p_their(temp_gender))
/datum/proc/p_theirs(temp_gender)
return "its"
/datum/proc/p_Theirs(temp_gender)
return capitalize(p_Theirs(temp_gender))
/datum/proc/p_them(temp_gender)
return "it"
/datum/proc/p_Them(temp_gender)
return capitalize(p_them(temp_gender))
/datum/proc/p_have(temp_gender)
return "has"
/datum/proc/p_are(temp_gender)
return "is"
/datum/proc/p_were(temp_gender)
return "was"
/datum/proc/p_do(temp_gender)
return "does"
/datum/proc/p_theyve(temp_gender)
return p_they(temp_gender) + "'" + copytext_char(p_have(temp_gender), 3)
/datum/proc/p_Theyve(temp_gender)
return p_They(temp_gender) + "'" + copytext_char(p_have(temp_gender), 3)
/datum/proc/p_theyre(temp_gender)
return p_they(temp_gender) + "'" + copytext_char(p_are(temp_gender), 2)
/datum/proc/p_Theyre(temp_gender)
return p_they(temp_gender) + "'" + copytext_char(p_are(temp_gender), 2)
/datum/proc/p_s(temp_gender)
return "s"
/datum/proc/p_es(temp_gender)
return "es"
/datum/proc/p_themselves(temp_gender)
return "itself"
/datum/proc/plural_s(pluralize)
switch(copytext_char(pluralize, -2))
if("ss")
return "es"
if("sh")
return "es"
if("ch")
return "es"
else
switch(copytext_char(pluralize, -1))
if("s", "x", "z")
return "es"
else
return "s"
/// A proc to replace pronouns in a string with the appropriate pronouns for a target atom.
/// Uses associative list access from a __DEFINE list, since associative access is slightly faster
/datum/proc/REPLACE_PRONOUNS(target_string, atom/targeted_atom, targeted_gender = null)
/// If someone specifies targeted_gender we choose that,
/// otherwise we go off the gender of our object
var/gender
if(targeted_gender)
if(!istext(targeted_gender) || !(targeted_gender in list(MALE, FEMALE, PLURAL, NEUTER, HERM)))
stack_trace("REPLACE_PRONOUNS called with improper parameters.")
return
gender = targeted_gender
else
gender = targeted_atom.get_visible_gender()
///The pronouns are ordered by their length to avoid %PRONOUN_Theyve being translated to "Heve" instead of "He's", for example
var/regex/pronoun_regex = regex("%PRONOUN(_(theirs|Theirs|theyve|Theyve|theyre|Theyre|their|Their|they|They|them|Them|have|were|are|do|es|s))")
while(pronoun_regex.Find(target_string))
target_string = pronoun_regex.Replace(target_string, GET_TARGET_PRONOUN(targeted_atom, pronoun_regex.match, gender))
return target_string
// CLIENT GENDER
/client/p_they(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "she"
if(MALE)
return "he"
if(NEUTER)
return "it"
if(HERM)
return "shi"
else
return "they"
/client/p_their(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "her"
if(MALE)
return "his"
if(NEUTER)
return "its"
if(HERM)
return "hir"
else
return "their"
/client/p_theirs(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "hers"
if(MALE)
return "his"
if(NEUTER)
return "its"
if(HERM)
return "hirs"
else
return "theirs"
/client/p_them(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "her"
if(MALE)
return "him"
if(NEUTER)
return "it"
if(HERM)
return "hir"
else
return "them"
/client/p_have(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "have"
return "has"
/client/p_are(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "are"
return "is"
/client/p_were(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "were"
return "was"
/client/p_do(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "do"
return "does"
/client/p_s(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender != PLURAL)
return "s"
/client/p_es(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender != PLURAL && temp_gender != NEUTER)
return "es"
/client/p_themselves(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "herself"
if(MALE)
return "himself"
if(PLURAL)
return "themselves"
if(HERM)
return "hirself"
else
return "itself"
// MOB GENDER
/mob/p_they(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "she"
if(MALE)
return "he"
if(PLURAL)
return "they"
if(HERM)
return "shi"
else
return "it"
/mob/p_their(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "her"
if(MALE)
return "his"
if(PLURAL)
return "their"
if(HERM)
return "hir"
else
return "its"
/mob/p_theirs(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "hers"
if(MALE)
return "his"
if(PLURAL)
return "theirs"
if(HERM)
return "hirs"
else
return "its"
/mob/p_them(capitalized, temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "her"
if(MALE)
return "him"
if(PLURAL)
return "them"
if(HERM)
return "hir"
else
return "it"
/mob/p_have(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "have"
return "has"
/mob/p_are(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "are"
return "is"
/mob/p_were(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "were"
return "was"
/mob/p_do(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "do"
return "does"
/mob/p_s(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender != PLURAL)
return "s"
/mob/p_es(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender != PLURAL)
return "es"
/mob/p_themselves(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "herself"
if(MALE)
return "himself"
if(PLURAL)
return "themselves"
if(HERM)
return "hirself"
else
return "itself"
// ATOM GENDER
/atom/p_they(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "she"
if(MALE)
return "he"
if(PLURAL)
return "they"
if(HERM)
return "shi"
else
return "it"
/atom/p_their(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "her"
if(MALE)
return "his"
if(PLURAL)
return "their"
if(HERM)
return "hir"
else
return "its"
/atom/p_theirs(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "hers"
if(MALE)
return "his"
if(PLURAL)
return "theirs"
if(HERM)
return "hirs"
else
return "its"
/atom/p_them(capitalized, temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "her"
if(MALE)
return "him"
if(PLURAL)
return "them"
if(HERM)
return "hir"
else
return "it"
/atom/p_have(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "have"
return "has"
/atom/p_are(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "are"
return "is"
/atom/p_were(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "were"
return "was"
/atom/p_do(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "do"
return "does"
/atom/p_s(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender != PLURAL)
return "s"
/atom/p_es(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender != PLURAL)
return "es"
/atom/p_themselves(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "herself"
if(MALE)
return "himself"
if(PLURAL)
return "themselves"
if(HERM)
return "hirself"
else
return "itself"
/atom/proc/get_visible_gender(mob/user, force)
return gender
// CARBON GENDER
/mob/living/carbon/human/get_visible_gender(mob/user, force)
if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT) && (wear_mask && (wear_mask & HIDEFACE) || isobj(head) && (head.body_parts_covered & FACE)))
return PLURAL
return gender
/mob/living/carbon/human/p_they(temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_their(temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_theirs(capitalized, temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_them(capitalized, temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_have(temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_are(temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_were(temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_do(temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_s(temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_es(temp_gender)
temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_themselves(temp_gender)
temp_gender ||= get_visible_gender()
return ..()
// ITEM GENDER
/obj/item/clothing/p_they(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "they"
return "it"
/obj/item/clothing/p_their(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "their"
return "its"
/obj/item/clothing/p_theirs(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "theirs"
return "its"
/obj/item/clothing/p_them(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "them"
return "it"
/obj/item/clothing/p_have(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "have"
return "has"
/obj/item/clothing/p_are(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "are"
return "is"
/obj/item/clothing/p_were(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "were"
return "was"
/obj/item/clothing/p_do(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender == PLURAL)
return "do"
return "does"
/obj/item/clothing/p_s(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender != PLURAL)
return "s"
/obj/item/clothing/p_es(temp_gender)
if(!temp_gender)
temp_gender = gender
if(temp_gender != PLURAL)
return "es"
/obj/item/clothing/p_themselves(temp_gender)
if(!temp_gender)
temp_gender = gender
switch(temp_gender)
if(FEMALE)
return "herself"
if(MALE)
return "himself"
if(PLURAL)
return "themselves"
if(HERM)
return "hirself"
else
return "itself"
// MIND GENDER
/datum/mind/p_they(temp_gender)
return current?.p_they(temp_gender) || ..()
/datum/mind/p_their(temp_gender)
return current?.p_their(temp_gender) || ..()
/datum/mind/p_theirs(temp_gender)
return current?.p_theirs(temp_gender) || ..()
/datum/mind/p_them(capitalized, temp_gender)
return current?.p_them(capitalized, temp_gender) || ..()
/datum/mind/p_have(temp_gender)
return current?.p_have(temp_gender) || ..()
/datum/mind/p_are(temp_gender)
return current?.p_are(temp_gender) || ..()
/datum/mind/p_were(temp_gender)
return current?.p_were(temp_gender) || ..()
/datum/mind/p_do(temp_gender)
return current?.p_do(temp_gender) || ..()
/datum/mind/p_s(temp_gender)
return current?.p_s(temp_gender) || ..()
/datum/mind/p_es(temp_gender)
return current?.p_es(temp_gender) || ..()
/datum/mind/p_themselves(temp_gender)
return current?.p_themselves(temp_gender) || ..()