From 0f19a089c48758aae361c2c4ab615128fe7c86fc Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Fri, 17 Oct 2025 04:24:05 -0700 Subject: [PATCH] [MIRROR] Removes Gender (#11822) Co-authored-by: Guti <32563288+TheCaramelion@users.noreply.github.com> Co-authored-by: Cameron Lennox --- code/__defines/pronouns.dm | 40 ++ code/_helpers/gender.dm | 620 ++++++++++++++++++ code/datums/components/traits/unlucky.dm | 9 +- .../status_effects/debuffs/fire_stacks.dm | 6 +- code/game/area/areas.dm | 3 +- code/game/atom/_atom.dm | 3 - code/game/gamemodes/cult/runes.dm | 19 +- .../endgame/supermatter_cascade/blob.dm | 3 +- code/game/gamemodes/objective.dm | 12 +- code/game/machinery/Sleeper.dm | 3 +- code/game/objects/items/leash.dm | 6 +- code/game/objects/items/toys/mech_toys.dm | 14 +- code/game/objects/items/weapons/canes.dm | 6 +- code/game/objects/items/weapons/handcuffs.dm | 4 +- .../objects/items/weapons/melee/energy.dm | 3 +- code/game/objects/structures/kitchen_spike.dm | 3 +- code/game/objects/structures/watercloset.dm | 5 +- code/modules/admin/verbs/change_appearance.dm | 5 +- code/modules/artifice/cursedform.dm | 3 +- code/modules/assembly/mousetrap.dm | 6 +- .../rig/modules/specific/crusher_gauntlets.dm | 3 +- code/modules/emotes/emote_define.dm | 14 +- code/modules/games/cards.dm | 3 +- code/modules/genetics/side_effects.dm | 3 +- code/modules/library/lib_machines.dm | 3 +- code/modules/mob/dead/observer/observer.dm | 3 +- code/modules/mob/gender.dm | 68 -- code/modules/mob/gender_vr.dm | 14 - code/modules/mob/living/carbon/carbon.dm | 19 +- code/modules/mob/living/carbon/human/emote.dm | 4 +- .../mob/living/carbon/human/examine.dm | 136 ++-- .../mob/living/carbon/human/examine_vr.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 13 +- .../living/carbon/human/human_attackhand.dm | 28 +- .../carbon/human/human_modular_limbs.dm | 6 +- .../carbon/human/species/species_attack.dm | 12 +- .../mob/living/carbon/human/unarmed_attack.dm | 32 +- .../living/silicon/pai/software_modules.dm | 5 +- .../mob/living/silicon/robot/drone/drone.dm | 6 +- .../modules/mob/living/silicon/robot/robot.dm | 10 +- code/modules/mob/living/simple_mob/defense.dm | 3 +- .../simple_mob/subtypes/illusion/illusion.dm | 5 +- code/modules/mob/mob_grab.dm | 11 +- code/modules/mob/mob_grab_specials.dm | 3 +- code/modules/organs/organ_external.dm | 3 +- code/modules/paperwork/paper.dm | 3 +- code/modules/paperwork/paper_bundle.dm | 3 +- code/modules/paperwork/papershredder.dm | 3 +- code/modules/power/supermatter/supermatter.dm | 6 +- code/modules/projectiles/gun.dm | 3 +- .../projectiles/guns/energy/gunsword_vr.dm | 3 +- .../modules/projectiles/projectile/special.dm | 3 +- code/modules/spells/artifacts.dm | 2 +- vorestation.dme | 4 +- 54 files changed, 849 insertions(+), 365 deletions(-) create mode 100644 code/__defines/pronouns.dm create mode 100644 code/_helpers/gender.dm delete mode 100644 code/modules/mob/gender.dm delete mode 100644 code/modules/mob/gender_vr.dm diff --git a/code/__defines/pronouns.dm b/code/__defines/pronouns.dm new file mode 100644 index 0000000000..c0515426e3 --- /dev/null +++ b/code/__defines/pronouns.dm @@ -0,0 +1,40 @@ +/// she, he, they, it "%PRONOUN_they" = "p_they" +/// She, He, They, It "%PRONOUN_They" = "p_They" +/// her, his, their, its "%PRONOUN_their" = "p_their" +/// Her, His, Their, Its "%PRONOUN_Their" = "p_Their" +/// hers, his, theirs, its "%PRONOUN_theirs" = "p_theirs" +/// Hers, His, Theirs, Its "%PRONOUN_Theirs" = "p_Theirs" +/// her, him, them, it "%PRONOUN_them" = "p_them" +/// Her, Him, Them, It "%PRONOUN_Them" = "p_Them" +/// has, have "%PRONOUN_have" = "p_have" +/// is, are "%PRONOUN_are" = "p_are" +/// was, were "%PRONOUN_were" = "p_were" +/// does, do "%PRONOUN_do" = "p_do" +/// she has, he has, they have, it has "%PRONOUN_theyve" = "p_theyve" +/// She has, He has, They have, It has "%PRONOUN_Theyve" = "p_Theyve" +/// she is, he is, they are, it is "%PRONOUN_theyre" = "p_theyre" +/// She is, He is, They are, It is "%PRONOUN_Theyre" = "p_Theyre" +/// s, null (she looks, they look) "%PRONOUN_s" = "p_s" +/// es, null (she goes, they go) "%PRONOUN_es" = "p_es" + +/// A list for all the pronoun procs, if you need to iterate or search through it or something. +#define ALL_PRONOUNS list( \ + "%PRONOUN_they" = TYPE_PROC_REF(/datum, p_they), \ + "%PRONOUN_They" = TYPE_PROC_REF(/datum, p_They), \ + "%PRONOUN_their" = TYPE_PROC_REF(/datum, p_their), \ + "%PRONOUN_Their" = TYPE_PROC_REF(/datum, p_Their), \ + "%PRONOUN_theirs" = TYPE_PROC_REF(/datum, p_theirs), \ + "%PRONOUN_Theirs" = TYPE_PROC_REF(/datum, p_Theirs), \ + "%PRONOUN_them" = TYPE_PROC_REF(/datum, p_them), \ + "%PRONOUN_Them" = TYPE_PROC_REF(/datum, p_Them), \ + "%PRONOUN_have" = TYPE_PROC_REF(/datum, p_have), \ + "%PRONOUN_are" = TYPE_PROC_REF(/datum, p_are), \ + "%PRONOUN_were" = TYPE_PROC_REF(/datum, p_were), \ + "%PRONOUN_do" = TYPE_PROC_REF(/datum, p_do), \ + "%PRONOUN_theyve" = TYPE_PROC_REF(/datum, p_theyve), \ + "%PRONOUN_Theyve" = TYPE_PROC_REF(/datum, p_Theyve), \ + "%PRONOUN_theyre" = TYPE_PROC_REF(/datum, p_theyre), \ + "%PRONOUN_Theyre" = TYPE_PROC_REF(/datum, p_Theyre), \ + "%PRONOUN_s" = TYPE_PROC_REF(/datum, p_s), \ + "%PRONOUN_es" = TYPE_PROC_REF(/datum, p_es) \ +) diff --git a/code/_helpers/gender.dm b/code/_helpers/gender.dm new file mode 100644 index 0000000000..17dbbd3eba --- /dev/null +++ b/code/_helpers/gender.dm @@ -0,0 +1,620 @@ +#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) || ..() diff --git a/code/datums/components/traits/unlucky.dm b/code/datums/components/traits/unlucky.dm index 81f7abf0de..91ccb253f3 100644 --- a/code/datums/components/traits/unlucky.dm +++ b/code/datums/components/traits/unlucky.dm @@ -278,8 +278,7 @@ for(var/obj/structure/table/evil_table in the_turf) if(!evil_table.material) //We only want tables, not just table frames. continue - var/datum/gender/gender = GLOB.gender_datums[living_guy.get_visible_gender()] - living_guy.visible_message(span_danger("[living_guy] stubs [gender.his] toe on [evil_table]!"), span_bolddanger("You stub your toe on [evil_table]!")) + living_guy.visible_message(span_danger("[living_guy] stubs [living_guy.p_their()] toe on [evil_table]!"), span_bolddanger("You stub your toe on [evil_table]!")) living_guy.apply_damage(2 * damage_mod, BRUTE, pick(BP_L_FOOT, BP_R_FOOT), used_weapon = "blunt force trauma") living_guy.adjustHalLoss(25) //It REALLY hurts. living_guy.Weaken(3) @@ -314,8 +313,7 @@ if(prob(30 * luck_mod) && our_guy.get_bodypart_name(BP_HEAD)) /// Bonk! playsound(our_guy, 'sound/effects/tableheadsmash.ogg', 90, TRUE) - var/datum/gender/gender = GLOB.gender_datums[our_guy.get_visible_gender()] - our_guy.visible_message(span_danger("[our_guy] hits [gender.his] head really badly falling down!"), span_bolddanger("You hit your head really badly falling down!")) + our_guy.visible_message(span_danger("[our_guy] hits [our_guy.p_their()] head really badly falling down!"), span_bolddanger("You hit your head really badly falling down!")) var/max_health_coefficient = (our_guy.maxHealth * 0.5) our_guy.apply_damage(max_health_coefficient * damage_mod, BRUTE, BP_HEAD, used_weapon = "slipping") if(ishuman(our_guy)) @@ -457,8 +455,7 @@ if(!damage_to_inflict) return - var/datum/gender/gender = GLOB.gender_datums[unlucky_human.get_visible_gender()] - unlucky_human.visible_message(span_danger("[unlucky_human] accidentally [injury_verb] [gender.his] hand on [item]!")) + unlucky_human.visible_message(span_danger("[unlucky_human] accidentally [injury_verb] [unlucky_human.p_their()] hand on [item]!")) unlucky_human.apply_damage(damage_to_inflict * damage_mod, damage_type, current_hand, sharp = is_sharp, edge = has_edge, used_weapon = injury_type) /datum/component/omen/proc/check_stairs(mob/living/unlucky_soul) diff --git a/code/datums/status_effects/debuffs/fire_stacks.dm b/code/datums/status_effects/debuffs/fire_stacks.dm index 3827552f55..b721b872cf 100644 --- a/code/datums/status_effects/debuffs/fire_stacks.dm +++ b/code/datums/status_effects/debuffs/fire_stacks.dm @@ -153,8 +153,7 @@ if(owner.on_fire) return - var/datum/gender/T = GLOB.gender_datums[owner.get_visible_gender()] - return "[T.He] [T.is] covered in something flammable." + return "[owner.p_They()] [owner.p_are()] covered in something flammable." // /datum/status_effect/fire_handler/fire_stacks/proc/owner_touched_sparks() // SIGNAL_HANDLER @@ -374,8 +373,7 @@ REMOVE_TRAIT(owner, TRAIT_NO_SLIP_WATER, TRAIT_STATUS_EFFECT(id)) /datum/status_effect/fire_handler/wet_stacks/get_examine_text() - var/datum/gender/T = GLOB.gender_datums[owner.get_visible_gender()] - return "[T.He] look[T.s] a little soaked." + return "[owner.p_They()] look[owner.p_s()] a little soaked." /datum/status_effect/fire_handler/wet_stacks/tick(seconds_between_ticks) var/decay = HAS_TRAIT(owner, TRAIT_WET_FOR_LONGER) ? -0.035 : -0.5 diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 3ce8f64f80..2adb423e5e 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -461,8 +461,7 @@ var/list/mob/living/forced_ambiance_list = list() // H.AdjustWeakened(3) // CHOMPedit: No longer weakens. to_chat(mob, span_notice("The sudden appearance of gravity makes you fall to the floor!")) if(HAS_TRAIT(H, TRAIT_UNLUCKY) && prob(50) && H.get_bodypart_name(BP_HEAD)) - var/datum/gender/gender = GLOB.gender_datums[H.get_visible_gender()] - H.visible_message(span_warning("[H] falls to the ground from the sudden appearance of gravity, smashing [gender.his] head against the ground!"),span_warning("You smash your head into the ground as gravity appears!")) + H.visible_message(span_warning("[H] falls to the ground from the sudden appearance of gravity, smashing [H.p_their()] head against the ground!"),span_warning("You smash your head into the ground as gravity appears!")) H.apply_damage(14, BRUTE, BP_HEAD, used_weapon = "blunt force") playsound(H, 'sound/effects/tableheadsmash.ogg', 90, TRUE) playsound(mob, "bodyfall", 50, 1) diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm index 835e2d2797..8bd0cec425 100644 --- a/code/game/atom/_atom.dm +++ b/code/game/atom/_atom.dm @@ -482,9 +482,6 @@ . = ..() SEND_SIGNAL(src, COMSIG_ATOM_EXITED, AM, new_loc) -/atom/proc/get_visible_gender(mob/user, force) - return gender - /atom/proc/interact(mob/user) return diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 73e3ae8aaa..b5c30a160c 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -160,8 +160,7 @@ var/list/sacrificed = list() if (!target.can_feel_pain()) target.visible_message(span_warning("The markings below \the [target] glow a bloody red.")) else - var/datum/gender/TT = GLOB.gender_datums[target.get_visible_gender()] - target.visible_message(span_warning("[target] writhes in pain as the markings below [TT.him] glow a bloody red."), span_danger("AAAAAAHHHH!"), span_warning("You hear an anguished scream.")) + target.visible_message(span_warning("[target] writhes in pain as the markings below [target.p_them()] glow a bloody red."), span_danger("AAAAAAHHHH!"), span_warning("You hear an anguished scream.")) if(!waiting_for_input[target]) //so we don't spam them with dialogs if they hesitate waiting_for_input[target] = 1 @@ -366,17 +365,14 @@ var/list/sacrificed = list() if(corpse_to_raise.client) - var/datum/gender/TU = GLOB.gender_datums[corpse_to_raise.get_visible_gender()] - var/datum/gender/TT = GLOB.gender_datums[body_to_sacrifice.get_visible_gender()] - cult.add_antagonist(corpse_to_raise.mind) corpse_to_raise.revive() usr.say("Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!") - corpse_to_raise.visible_message(span_warning("[corpse_to_raise]'s eyes glow with a faint red as [TU.he] stand[TU.s] up, slowly starting to breathe again."), \ + corpse_to_raise.visible_message(span_warning("[corpse_to_raise]'s eyes glow with a faint red as [corpse_to_raise.p_they()] stand[corpse_to_raise.p_s()] up, slowly starting to breathe again."), \ span_warning("Life... I'm alive again..."), \ span_warning("You hear a faint, slightly familiar whisper.")) - body_to_sacrifice.visible_message(span_danger("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from [TT.his] remains!"), \ + body_to_sacrifice.visible_message(span_danger("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from [body_to_sacrifice.p_their()] remains!"), \ span_danger("You feel as your blood boils, tearing you apart."), \ span_danger("You hear a thousand voices, all crying in pain.")) body_to_sacrifice.gib() @@ -423,9 +419,8 @@ var/list/sacrificed = list() /obj/effect/rune/proc/ajourney() //some bits copypastaed from admin tools - Urist if(usr.loc==src.loc) var/mob/living/carbon/human/L = usr - var/datum/gender/TU = GLOB.gender_datums[L.get_visible_gender()] usr.say("Fwe[pick("'","`")]sh mah erl nyag r'ya!") - usr.visible_message(span_warning("[usr]'s eyes glow blue as [TU.he] freeze[TU.s] in place, absolutely motionless."), \ + usr.visible_message(span_warning("[usr]'s eyes glow blue as [L.p_they()] freeze[L.p_s()] in place, absolutely motionless."), \ span_warning("The shadow that is your spirit separates itself from your body. You are now in the realm beyond. While this is a great sight, being here strains your mind and body. Hurry..."), \ span_warning("You hear only complete silence for a moment.")) announce_ghost_joinleave(usr.ghostize(1), 1, "You feel that they had to use some [pick("dark", "black", "blood", "forgotten", "forbidden")] magic to [pick("invade","disturb","disrupt","infest","taint","spoil","blight")] this place!") @@ -590,12 +585,11 @@ var/list/sacrificed = list() /obj/effect/rune/proc/mend() var/mob/living/user = usr - var/datum/gender/TU = GLOB.gender_datums[usr.get_visible_gender()] src = null user.say("Uhrast ka'hfa heldsagen ver[pick("'","`")]lot!") user.take_overall_damage(200, 0) GLOB.runedec+=10 - user.visible_message(span_danger("\The [user] keels over dead, [TU.his] blood glowing blue as it escapes [TU.his] body and dissipates into thin air."), \ + user.visible_message(span_danger("\The [user] keels over dead, [usr.p_their()] blood glowing blue as it escapes [usr.p_their()] body and dissipates into thin air."), \ span_danger("In the last moment of your humble life, you feel an immense pain as fabric of reality mends... with your blood."), \ span_warning("You hear faint rustle.")) for(,user.stat==2) @@ -877,8 +871,7 @@ var/list/sacrificed = list() if (cultist == user) //just to be sure. return if(cultist.buckled || cultist.handcuffed || (!isturf(cultist.loc) && !istype(cultist.loc, /obj/structure/closet))) - var/datum/gender/TU = GLOB.gender_datums[cultist.get_visible_gender()] - to_chat(user, span_warning("You cannot summon \the [cultist], for [TU.his] shackles of blood are strong.")) + to_chat(user, span_warning("You cannot summon \the [cultist], for [cultist.p_their()] shackles of blood are strong.")) return fizzle() cultist.forceMove(src.loc) cultist.lying = 1 diff --git a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm index e0136f8a65..619241b306 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm @@ -100,8 +100,7 @@ /turf/unsimulated/wall/supermatter/Bumped(atom/AM as mob|obj) if(isliving(AM)) var/mob/living/M = AM - var/datum/gender/T = GLOB.gender_datums[M.get_visible_gender()] - AM.visible_message(span_warning("\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash."),\ + AM.visible_message(span_warning("\The [AM] slams into \the [src] inducing a resonance... [M.p_Their()] body starts to glow and catch flame before flashing into ash."),\ span_danger("You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\""),\ span_warning("You hear an unearthly noise as a wave of heat washes over you.")) else diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 18ab8731cb..4684c18689 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -67,8 +67,7 @@ GLOBAL_LIST_EMPTY(all_objectives) /datum/objective/anti_revolution/execute/find_target() ..() if(target && target.current) - var/datum/gender/T = GLOB.gender_datums[target.current.get_visible_gender()] - explanation_text = "[target.current.real_name], the [target.assigned_role] has extracted confidential information above their clearance. Execute [T.him]." + explanation_text = "[target.current.real_name], the [target.assigned_role] has extracted confidential information above their clearance. Execute [target.p_them()]." else explanation_text = "Free Objective" return target @@ -77,8 +76,7 @@ GLOBAL_LIST_EMPTY(all_objectives) /datum/objective/anti_revolution/execute/find_target_by_role(role, role_type=0) ..(role, role_type) if(target && target.current) - var/datum/gender/T = GLOB.gender_datums[target.current.get_visible_gender()] - explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has extracted confidential information above their clearance. Execute [T.him]." + explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has extracted confidential information above their clearance. Execute [target.p_them()]." else explanation_text = "Free Objective" return target @@ -126,8 +124,7 @@ GLOBAL_LIST_EMPTY(all_objectives) /datum/objective/anti_revolution/demote/find_target() ..() if(target && target.current) - var/datum/gender/T = GLOB.gender_datums[target.current.get_visible_gender()] - explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [using_map.company_name]'s goals. Demote [T.him] to assistant." + explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [using_map.company_name]'s goals. Demote [target.p_them()] to assistant." else explanation_text = "Free Objective" return target @@ -135,8 +132,7 @@ GLOBAL_LIST_EMPTY(all_objectives) /datum/objective/anti_revolution/demote/find_target_by_role(role, role_type=0) ..(role, role_type) if(target && target.current) - var/datum/gender/T = GLOB.gender_datums[target.current.get_visible_gender()] - explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [using_map.company_name]'s goals. Demote [T.him] to assistant." + explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [using_map.company_name]'s goals. Demote [target.p_them()] to assistant." else explanation_text = "Free Objective" return target diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 5383f34894..b7a71d2fc9 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -308,8 +308,7 @@ if(!occupant) return if(occupant.stat == DEAD) - var/datum/gender/G = GLOB.gender_datums[occupant.get_visible_gender()] - to_chat(ui.user, span_danger("This person has no life to preserve anymore. Take [G.him] to a department capable of reanimating [G.him].")) + to_chat(ui.user, span_danger("This person has no life to preserve anymore. Take [occupant.p_them()] to a department capable of reanimating [occupant.p_them()].")) return var/chemical = params["chemid"] var/amount = text2num(params["amount"]) diff --git a/code/game/objects/items/leash.dm b/code/game/objects/items/leash.dm index 1df6055dc6..f0e4a09e95 100644 --- a/code/game/objects/items/leash.dm +++ b/code/game/objects/items/leash.dm @@ -43,7 +43,7 @@ return if(!is_wearing_collar(leash_pet)) //The pet has slipped their collar and is not the pet anymore. leash_pet.visible_message( - span_warning("[leash_pet] has slipped out of their collar!"), + span_warning("[leash_pet] has slipped out of [leash_pet.p_their()] collar!"), span_warning("You have slipped out of your collar!") ) clear_leash() @@ -124,7 +124,7 @@ return if(get_dist(leash_pet, leash_master) > 3 && !leash_pet.stunned) leash_pet.visible_message( - span_warning("[leash_pet] is pulled to the ground by their leash!"), + span_warning("[leash_pet] is pulled to the ground by [leash_pet.p_their()] leash!"), span_warning("You are pulled to the ground by your leash!") ) leash_pet.apply_effect(20, STUN, 0) @@ -187,7 +187,7 @@ STOP_PROCESSING(SSobj, src) /obj/item/leash/proc/struggle_leash() - leash_pet.visible_message(span_danger("\The [leash_pet] is attempting to unhook their leash!"), span_danger("You attempt to unhook your leash")) + leash_pet.visible_message(span_danger("\The [leash_pet] is attempting to unhook [leash_pet.p_their()] leash!"), span_danger("You attempt to unhook your leash")) add_attack_logs(leash_master,leash_pet,"Self-unleash (attempt)") if(!do_mob(leash_pet, leash_pet, 35)) diff --git a/code/game/objects/items/toys/mech_toys.dm b/code/game/objects/items/toys/mech_toys.dm index b4b00cfe5a..3169b9ec1c 100644 --- a/code/game/objects/items/toys/mech_toys.dm +++ b/code/game/objects/items/toys/mech_toys.dm @@ -166,9 +166,8 @@ return //extend the offer of battle to the other mech - var/datum/gender/T = GLOB.gender_datums[user.get_visible_gender()] to_chat(user, span_notice("You offer battle to [target.name]!")) - to_chat(target, span_notice(span_bold("[user.name] wants to battle with [T.His] [name]!") + " " + span_italics("Attack them with a toy mech to initiate combat."))) + to_chat(target, span_notice(span_bold("[user.name] wants to battle with [user.p_their()] [name]!") + " " + span_italics("Attack them with a toy mech to initiate combat."))) wants_to_battle = TRUE addtimer(CALLBACK(src, PROC_REF(withdraw_offer), user), 6 SECONDS) return @@ -391,28 +390,25 @@ * * target: optional arg used in Mech PvP battles (if used, attacker is target's toy) */ /obj/item/toy/mecha/proc/check_battle_start(mob/living/carbon/user, obj/item/toy/mecha/attacker, mob/living/carbon/target) - var/datum/gender/T - if(target) - T = GLOB.gender_datums[target.get_visible_gender()] // Doing this because Polaris Code has shitty gender datums and it's clunkier than FUCK. if(attacker && attacker.in_combat) - to_chat(user, span_notice("[target ? T.His : "Your" ] [attacker.name] is in combat.")) + to_chat(user, span_notice("[target ? target.p_their() : "Your" ] [attacker.name] is in combat.")) if(target) to_chat(target, span_notice("Your [attacker.name] is in combat.")) return FALSE if(in_combat) to_chat(user, span_notice("Your [name] is in combat.")) if(target) - to_chat(target, span_notice("[T.His] [name] is in combat.")) + to_chat(target, span_notice("[target.p_Their()] [name] is in combat.")) return FALSE if(attacker && attacker.timer > world.time) - to_chat(user, span_notice("[target?T.His : "Your" ] [attacker.name] isn't ready for battle.")) + to_chat(user, span_notice("[target ? target.p_their() : "Your" ] [attacker.name] isn't ready for battle.")) if(target) to_chat(target, span_notice("Your [attacker.name] isn't ready for battle.")) return FALSE if(timer > world.time) to_chat(user, span_notice("Your [name] isn't ready for battle.")) if(target) - to_chat(target, span_notice("[T.His] [name] isn't ready for battle.")) + to_chat(target, span_notice("[target.p_Their()] [name] isn't ready for battle.")) return FALSE return TRUE diff --git a/code/game/objects/items/weapons/canes.dm b/code/game/objects/items/weapons/canes.dm index 6f7746479f..77580c6f1e 100644 --- a/code/game/objects/items/weapons/canes.dm +++ b/code/game/objects/items/weapons/canes.dm @@ -30,9 +30,8 @@ temp_blade.update_force() /obj/item/cane/concealed/attack_self(var/mob/user) - var/datum/gender/T = GLOB.gender_datums[user.get_visible_gender()] if(concealed_blade) - user.visible_message(span_warning("[user] has unsheathed \a [concealed_blade] from [T.his] [src]!"), "You unsheathe \the [concealed_blade] from \the [src].") + user.visible_message(span_warning("[user] has unsheathed \a [concealed_blade] from [user.p_their()] [src]!"), "You unsheathe \the [concealed_blade] from \the [src].") // Calling drop/put in hands to properly call item drop/pickup procs playsound(src, 'sound/weapons/holster/sheathout.ogg', 50, 1) user.drop_from_inventory(src) @@ -46,8 +45,7 @@ /obj/item/cane/concealed/attackby(var/obj/item/material/butterfly/W, var/mob/user) if(!src.concealed_blade && istype(W)) - var/datum/gender/T = GLOB.gender_datums[user.get_visible_gender()] - user.visible_message(span_warning("[user] has sheathed \a [W] into [T.his] [src]!"), "You sheathe \the [W] into \the [src].") + user.visible_message(span_warning("[user] has sheathed \a [W] into [user.p_their()] [src]!"), "You sheathe \the [W] into \the [src].") playsound(src, 'sound/weapons/holster/sheathin.ogg', 50, 1) user.drop_from_inventory(W) W.loc = src diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 52001eb43b..6cfaeacc7f 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -133,9 +133,7 @@ var/last_chew = 0 var/obj/item/organ/external/O = H.organs_by_name[(H.hand ? BP_L_HAND : BP_R_HAND)] if (!O) return - var/datum/gender/T = GLOB.gender_datums[H.get_visible_gender()] - - var/s = span_warning("[H.name] chews on [T.his] [O.name]!") + var/s = span_warning("[H.name] chews on [H.p_their()] [O.name]!") H.visible_message(s, span_warning("You chew on your [O.name]!")) add_attack_logs(H,H,"chewed own [O.name]") diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 937127854e..ee9885fee0 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -102,10 +102,9 @@ to_chat(user, span_notice("\The [src] does not seem to have power.")) return - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] if (active) if ((CLUMSY in user.mutations) && prob(50)) - user.visible_message(span_danger("\The [user] accidentally cuts [TU.himself] with \the [src]."),\ + user.visible_message(span_danger("\The [user] accidentally cuts [user.p_their()] with \the [src]."),\ span_danger("You accidentally cut yourself with \the [src].")) user.take_organ_damage(5,5) deactivate(user) diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index afc0f3f01d..1f73c1ad3a 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -19,8 +19,7 @@ to_chat(user, span_danger("The spike already has something on it, finish collecting its meat first!")) else if(spike(G.affecting)) - var/datum/gender/T = GLOB.gender_datums[G.affecting.get_visible_gender()] - visible_message(span_danger("[user] has forced [G.affecting] onto the spike, killing [T.him] instantly!")) + visible_message(span_danger("[user] has forced [G.affecting] onto the spike, killing [G.p_them()] instantly!")) var/mob/M = G.affecting M.forceMove(src) qdel(G) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 808b53cb4a..e6bc664119 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -668,10 +668,9 @@ R.cell.charge -= 20 else B.deductcharge(B.hitcost) - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] user.visible_message( \ - span_danger("[user] was stunned by [TU.his] wet [O]!"), \ - span_userdanger("[user] was stunned by [TU.his] wet [O]!")) + span_danger("[user] was stunned by [user.p_their()] wet [O]!"), \ + span_userdanger("[user] was stunned by [user.p_their()] wet [O]!")) return 1 else if(istype(O, /obj/item/mop)) O.reagents.add_reagent(REAGENT_ID_WATER, 5) diff --git a/code/modules/admin/verbs/change_appearance.dm b/code/modules/admin/verbs/change_appearance.dm index 4569cf7479..4e32e498f3 100644 --- a/code/modules/admin/verbs/change_appearance.dm +++ b/code/modules/admin/verbs/change_appearance.dm @@ -25,13 +25,12 @@ if(!H.client) to_chat(usr, span_filter_warning(" Only mobs with clients can alter their own appearance.")) return - var/datum/gender/T = GLOB.gender_datums[H.get_visible_gender()] switch(tgui_alert(usr, "Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel")) if("Yes") - log_and_message_admins("has allowed [H] to change [T.his] appearance, without whitelisting of races.") + log_and_message_admins("has allowed [H] to change [H.p_their()] appearance, without whitelisting of races.") H.change_appearance(APPEARANCE_ALL, H, check_species_whitelist = 0) if("No") - log_and_message_admins("has allowed [H] to change [T.his] appearance, with whitelisting of races.") + log_and_message_admins("has allowed [H] to change [H.p_their()] appearance, with whitelisting of races.") H.change_appearance(APPEARANCE_ALL, H, check_species_whitelist = 1) feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/artifice/cursedform.dm b/code/modules/artifice/cursedform.dm index ca236f3794..2fcbad5d4d 100644 --- a/code/modules/artifice/cursedform.dm +++ b/code/modules/artifice/cursedform.dm @@ -11,13 +11,12 @@ /obj/item/paper/carbon/cursedform/burnpaper(obj/item/flame/P, mob/user) var/class = "warning" - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] if(P.lit && !user.restrained()) if(istype(P, /obj/item/flame/lighter/zippo)) class = "rose" - user.visible_message("[user] holds \the [P] up to \the [src], it looks like [TU.hes] trying to burn it!", \ + user.visible_message("[user] holds \the [P] up to \the [src], it looks like [user.p_they()] [user.p_are()] trying to burn it!", \ "You hold \the [P] up to \the [src], burning it slowly.") if(do_after(user, 2 SECONDS, target = src) && P.lit) diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 9b385944ae..b479ac8279 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -58,7 +58,7 @@ if(!user.hand) which_hand = BP_R_HAND triggered(user, which_hand) - user.visible_message(span_warning("[user] accidentally sets off [src], breaking their fingers."), \ + user.visible_message(span_warning("[user] accidentally sets off [src], breaking [p_their()] fingers."), \ span_warning("You accidentally trigger [src]!")) return @@ -74,7 +74,7 @@ if(!user.hand) which_hand = BP_R_HAND triggered(user, which_hand) - user.visible_message(span_warning("[user] accidentally sets off [src], breaking their fingers."), \ + user.visible_message(span_warning("[user] accidentally sets off [src], breaking [p_their()] fingers."), \ span_warning("You accidentally trigger [src]!")) return ..() @@ -95,7 +95,7 @@ /obj/item/assembly/mousetrap/on_found(var/mob/living/finder) if(armed) - finder.visible_message(span_warning("[finder] accidentally sets off [src], breaking their fingers."), \ + finder.visible_message(span_warning("[finder] accidentally sets off [src], breaking [p_their()] fingers."), \ span_warning("You accidentally trigger [src]!")) triggered(finder, finder.hand ? BP_L_HAND : BP_R_HAND) return 1 //end the search! diff --git a/code/modules/clothing/spacesuits/rig/modules/specific/crusher_gauntlets.dm b/code/modules/clothing/spacesuits/rig/modules/specific/crusher_gauntlets.dm index 462b5c817f..71dbe1e53d 100644 --- a/code/modules/clothing/spacesuits/rig/modules/specific/crusher_gauntlets.dm +++ b/code/modules/clothing/spacesuits/rig/modules/specific/crusher_gauntlets.dm @@ -25,7 +25,6 @@ /obj/item/rig_module/gauntlets/activate() ..() var/mob/living/M = holder.wearer - var/datum/gender/TU = GLOB.gender_datums[M.get_visible_gender()] if(M.l_hand && M.r_hand) to_chat(M, span_danger("Your hands are full.")) @@ -33,7 +32,7 @@ return if(M.a_intent == I_HURT) M.visible_message( - span_danger("[M] throws [TU.his] arms out, extending [stored_gauntlets] from \the [holder] with a click!"), + span_danger("[M] throws [M.p_their()] arms out, extending [stored_gauntlets] from \the [holder] with a click!"), span_danger("You throw your arms out, extending [stored_gauntlets] from \the [holder] with a click!"), span_notice("You hear a threatening hiss and a click.") ) diff --git a/code/modules/emotes/emote_define.dm b/code/modules/emotes/emote_define.dm index fcb8f1652a..5704d3eec9 100644 --- a/code/modules/emotes/emote_define.dm +++ b/code/modules/emotes/emote_define.dm @@ -151,19 +151,17 @@ /decl/emote/proc/replace_target_tokens(var/msg, var/atom/target) . = msg if(istype(target)) - var/datum/gender/target_gender = GLOB.gender_datums[target.get_visible_gender()] - . = replacetext(., "TARGET_THEM", target_gender.him) - . = replacetext(., "TARGET_THEIR", target_gender.his) - . = replacetext(., "TARGET_SELF", target_gender.himself) + . = replacetext(., "TARGET_THEM", target.p_them()) + . = replacetext(., "TARGET_THEIR", target.p_their()) + . = replacetext(., "TARGET_SELF", target.p_themselves()) . = replacetext(., "TARGET", span_bold("\the [target]")) /decl/emote/proc/replace_user_tokens(var/msg, var/atom/user) . = msg if(istype(user)) - var/datum/gender/user_gender = GLOB.gender_datums[user.get_visible_gender()] - . = replacetext(., "USER_THEM", user_gender.him) - . = replacetext(., "USER_THEIR", user_gender.his) - . = replacetext(., "USER_SELF", user_gender.himself) + . = replacetext(., "USER_THEM", user.p_them()) + . = replacetext(., "USER_THEIR", user.p_their()) + . = replacetext(., "USER_SELF", user.p_themselves()) . = replacetext(., "USER", span_bold("\the [user]")) /decl/emote/proc/get_radio_message(var/atom/user) diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index d91cc8cb35..8b93faf1d5 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -269,8 +269,7 @@ H.concealed = 1 H.update_icon() if(user==target) - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] - user.visible_message(span_notice("\The [user] deals [dcard] card(s) to [TU.himself].")) + user.visible_message(span_notice("\The [user] deals [dcard] card(s) to [user.p_themselves()].")) else user.visible_message(span_notice("\The [user] deals [dcard] card(s) to \the [target].")) H.throw_at(get_step(target,target.dir),10,1,H) diff --git a/code/modules/genetics/side_effects.dm b/code/modules/genetics/side_effects.dm index 02249672bc..7776faaff8 100644 --- a/code/modules/genetics/side_effects.dm +++ b/code/modules/genetics/side_effects.dm @@ -69,8 +69,7 @@ /datum/genetics/side_effect/confuse/start(mob/living/carbon/human/H) ..() - var/datum/gender/T = GLOB.gender_datums[H.get_visible_gender()] - H.automatic_custom_emote(VISIBLE_MESSAGE, "has drool running down from [T.his] mouth.", check_stat = TRUE) + H.automatic_custom_emote(VISIBLE_MESSAGE, "has drool running down from [H.p_their()] mouth.", check_stat = TRUE) /datum/genetics/side_effect/confuse/finish(datum/weakref/WR) if(..()) return diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index feede9617f..5540d0b6b0 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -176,9 +176,8 @@ dat += "7. Access the Forbidden Lore Vault
" if(src.arcanecheckout) new /obj/item/book/tome(src.loc) - var/datum/gender/T = GLOB.gender_datums[user.get_visible_gender()] to_chat(user, span_warning("Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a dusty old tome sitting on the desk. You don't really remember printing it.")) - user.visible_message(span_infoplain(span_bold("\The [user]") + " stares at the blank screen for a few moments, [T.his] expression frozen in fear. When [T.he] finally awakens from it, [T.he] looks a lot older."), 2) + user.visible_message(span_infoplain(span_bold("\The [user]") + " stares at the blank screen for a few moments, [user.p_their()] expression frozen in fear. When [user.p_they()] finally awaken from it, [user.p_they()] look a lot older."), 2) src.arcanecheckout = 0 if(1) // Inventory diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 03045e14b0..3c4aae131a 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -768,9 +768,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp ) toggle_ghost_visibility(TRUE) else - var/datum/gender/T = GLOB.gender_datums[user.get_visible_gender()] user.visible_message ( \ - span_warning("\The [user] just tried to smash [T.his] book into that ghost! It's not very effective."), \ + span_warning("\The [user] just tried to smash [user.p_their()] book into that ghost! It's not very effective."), \ span_warning("You get the feeling that the ghost can't become any more visible.") \ ) diff --git a/code/modules/mob/gender.dm b/code/modules/mob/gender.dm deleted file mode 100644 index 3ca23531b1..0000000000 --- a/code/modules/mob/gender.dm +++ /dev/null @@ -1,68 +0,0 @@ - -GLOBAL_LIST_EMPTY(gender_datums) - -/hook/startup/proc/populate_gender_datum_list() - for(var/type in typesof(/datum/gender)) - var/datum/gender/G = new type - GLOB.gender_datums[G.key] = G - return 1 - -/datum/gender - var/key = "plural" - - var/He = "They" - var/he = "they" - var/His = "Their" - var/his = "their" - var/him = "them" - var/has = "have" - var/is = "are" - var/does = "do" - var/himself = "themselves" - var/s = "" - var/hes = "they're" - -/datum/gender/male - key = "male" - - He = "He" - he = "he" - His = "His" - his = "his" - him = "him" - has = "has" - is = "is" - does = "does" - himself = "himself" - s = "s" - hes = "he's" - -/datum/gender/female - key = "female" - - He = "She" - he = "she" - His = "Her" - his = "her" - him = "her" - has = "has" - is = "is" - does = "does" - himself = "herself" - s = "s" - hes = "she's" - -/datum/gender/neuter - key = "neuter" - - He = "It" - he = "it" - His = "Its" - his = "its" - him = "it" - has = "has" - is = "is" - does = "does" - himself = "itself" - s = "s" - hes = "it's" diff --git a/code/modules/mob/gender_vr.dm b/code/modules/mob/gender_vr.dm deleted file mode 100644 index 9b943f8796..0000000000 --- a/code/modules/mob/gender_vr.dm +++ /dev/null @@ -1,14 +0,0 @@ -/datum/gender/herm - key = "herm" - - He = "Shi" - he = "shi" - His = "Hir" - his = "hir" - him = "hir" - has = "has" - is = "is" - does = "does" - himself = "hirself" - s = "s" - hes = "shi's" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5c33f4d345..7a545950aa 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -180,9 +180,8 @@ if (health >= get_crit_point() || on_fire) if(src == M && ishuman(src)) var/mob/living/carbon/human/H = src - var/datum/gender/T = GLOB.gender_datums[H.get_visible_gender()] visible_message( \ - span_notice("[src] examines [T.himself]."), \ + span_notice("[src] examines [p_themselves()]."), \ span_notice("You check yourself for injuries.") \ ) @@ -261,23 +260,21 @@ var/show_ssd var/mob/living/carbon/human/H = src - var/datum/gender/T = GLOB.gender_datums[H.get_visible_gender()] // make sure to cast to human before using get_gender() or get_visible_gender()! if(istype(H)) show_ssd = H.species.show_ssd if(show_ssd && !client && !teleop) - M.visible_message(span_notice("[M] shakes [src] trying to wake [T.him] up!"), \ - span_notice("You shake [src], but [T.he] [T.does] not respond... Maybe [T.he] [T.has] S.S.D?")) + M.visible_message(span_notice("[M] shakes [src] trying to wake [H.p_them()] up!"), \ + span_notice("You shake [src], but [p_they()] [p_do()] not respond... Maybe [H.p_theyre()] S.S.D?")) else if(lying || src.sleeping) AdjustSleeping(-5) if(src.sleeping == 0) src.resting = 0 if(H) H.in_stasis = 0 //VOREStation Add - Just In Case - M.visible_message(span_notice("[M] shakes [src] trying to wake [T.him] up!"), \ - span_notice("You shake [src] trying to wake [T.him] up!")) + M.visible_message(span_notice("[M] shakes [src] trying to wake [H.p_them()] up!"), \ + span_notice("You shake [src] trying to wake [H.p_them()] up!")) else var/mob/living/carbon/human/hugger = M - var/datum/gender/TM = GLOB.gender_datums[M.get_visible_gender()] if(M.resting == 1) //Are they resting on the ground? - M.visible_message(span_notice("[M] grabs onto [src] and pulls [TM.himself] up"), \ + M.visible_message(span_notice("[M] grabs onto [src] and pulls [M.p_themselves()] up"), \ span_notice("You grip onto [src] and pull yourself up off the ground!")) if(M.fire_stacks >= (src.fire_stacks + 3)) //Fire checks. src.adjust_fire_stacks(1) @@ -289,8 +286,8 @@ else if(istype(hugger)) hugger.species.hug(hugger,src) else - M.visible_message(span_notice("[M] hugs [src] to make [T.him] feel better!"), \ - span_notice("You hug [src] to make [T.him] feel better!")) + M.visible_message(span_notice("[M] hugs [src] to make [H.p_them()] feel better!"), \ + span_notice("You hug [src] to make [H.p_them()] feel better!")) if(M.fire_stacks >= (src.fire_stacks + 3)) src.adjust_fire_stacks(1) M.adjust_fire_stacks(-1) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index d0e122972f..e395740978 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -375,14 +375,12 @@ var/list/_simple_mob_default_emotes = list( set desc = "Sets a description which will be shown when someone examines you." set category = "IC.Settings" - var/datum/gender/T = GLOB.gender_datums[get_visible_gender()] - var/new_pose var/quiet_pose = FALSE var/include_icon = TRUE var/list/pose_options = list() - new_pose = strip_html_simple(tgui_input_text(src, "This is [src]. [T.he]...", "Pose", null)) + new_pose = strip_html_simple(tgui_input_text(src, "This is [src]. [p_they()]...", "Pose", null)) if(!new_pose) pose = null remove_pose_indicator() diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 7bcc157e28..e145fa60c7 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -77,12 +77,6 @@ BP_L_LEG = skip_body & EXAMINE_SKIPLEGS, BP_R_LEG = skip_body & EXAMINE_SKIPLEGS) - var/gender_hidden = (skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE) - var/gender_key = get_visible_gender(user, gender_hidden) - var/datum/gender/T = GLOB.gender_datums[gender_key] - if (!T) - CRASH({"Null gender datum on examine: mob="[src]",hidden="[gender_hidden]",key="[gender_key]",bio="[gender]",id="[identifying_gender]""}) - var/name_ender = "" if(!((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE))) if(custom_species) @@ -121,16 +115,16 @@ tie_msg += " [lowertext(english_list(accessory_descs))]." if(w_uniform.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.is] wearing [icon2html(w_uniform,user.client)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != "#030303") ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]") + msg += span_warning("[user.p_Theyre()] wearing [icon2html(w_uniform,user.client)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != "#030303") ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]") else - msg += "[T.He] [T.is] wearing [icon2html(w_uniform,user.client)] \a [w_uniform].[tie_msg]" + msg += "[user.p_Theyre()] wearing [icon2html(w_uniform,user.client)] \a [w_uniform].[tie_msg]" //head if(head && !(skip_gear & EXAMINE_SKIPHELMET) && head.show_examine) if(head.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.is] wearing [icon2html(head,user.client)] [head.gender==PLURAL?"some":"a"] [(head.blood_color != "#030303") ? "blood" : "oil"]-stained [head.name] on [T.his] head!") + msg += span_warning("[user.p_Theyre()] wearing [icon2html(head,user.client)] [head.gender==PLURAL?"some":"a"] [(head.blood_color != "#030303") ? "blood" : "oil"]-stained [head.name] on [user.p_their()] head!") else - msg += "[T.He] [T.is] wearing [icon2html(head,user.client)] \a [head] on [T.his] head." + msg += "[user.p_Theyre()] wearing [icon2html(head,user.client)] \a [head] on [user.p_their()] head." //suit/armour if(wear_suit) @@ -145,37 +139,37 @@ tie_msg += " [lowertext(english_list(accessory_descs))]." if(wear_suit.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.is] wearing [icon2html(wear_suit,user.client)] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != "#030303") ? "blood" : "oil"]-stained [wear_suit.name]![tie_msg]") + msg += span_warning("[user.p_Theyre()] wearing [icon2html(wear_suit,user.client)] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != "#030303") ? "blood" : "oil"]-stained [wear_suit.name]![tie_msg]") else - msg += "[T.He] [T.is] wearing [icon2html(wear_suit,user.client)] \a [wear_suit].[tie_msg]" + msg += "[user.p_Theyre()] wearing [icon2html(wear_suit,user.client)] \a [wear_suit].[tie_msg]" //suit/armour storage if(s_store && !(skip_gear & EXAMINE_SKIPSUITSTORAGE) && s_store.show_examine) if(s_store.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.is] carrying [icon2html(s_store,user.client)] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != "#030303") ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!") + msg += span_warning("[user.p_Theyre()] carrying [icon2html(s_store,user.client)] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != "#030303") ? "blood" : "oil"]-stained [s_store.name] on [user.p_their()] [wear_suit.name]!") else - msg += "[T.He] [T.is] carrying [icon2html(s_store,user.client)] \a [s_store] on [T.his] [wear_suit.name]." + msg += "[user.p_Theyre()] carrying [icon2html(s_store,user.client)] \a [s_store] on [user.p_their()] [wear_suit.name]." //back if(back && !(skip_gear & EXAMINE_SKIPBACKPACK) && back.show_examine) if(back.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.has] [icon2html(back,user.client)] [back.gender==PLURAL?"some":"a"] [(back.blood_color != "#030303") ? "blood" : "oil"]-stained [back] on [T.his] back.") + msg += span_warning("[user.p_Theyve()] [icon2html(back,user.client)] [back.gender==PLURAL?"some":"a"] [(back.blood_color != "#030303") ? "blood" : "oil"]-stained [back] on [user.p_their()] back.") else - msg += "[T.He] [T.has] [icon2html(back,user.client)] \a [back] on [T.his] back." + msg += "[user.p_Theyve()] [icon2html(back,user.client)] \a [back] on [user.p_their()] back." //left hand if(l_hand && l_hand.show_examine) if(l_hand.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.is] holding [icon2html(l_hand,user.client)] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != "#030303") ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!") + msg += span_warning("[user.p_Theyre()] holding [icon2html(l_hand,user.client)] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != "#030303") ? "blood" : "oil"]-stained [l_hand.name] in [user.p_their()] left hand!") else - msg += "[T.He] [T.is] holding [icon2html(l_hand,user.client)] \a [l_hand] in [T.his] left hand." + msg += "[user.p_Theyre()] holding [icon2html(l_hand,user.client)] \a [l_hand] in [user.p_their()] left hand." //right hand if(r_hand && r_hand.show_examine) if(r_hand.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.is] holding [icon2html(r_hand,user.client)] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != "#030303") ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!") + msg += span_warning("[user.p_Theyre()] holding [icon2html(r_hand,user.client)] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != "#030303") ? "blood" : "oil"]-stained [r_hand.name] in [user.p_their()] right hand!") else - msg += "[T.He] [T.is] holding [icon2html(r_hand,user.client)] \a [r_hand] in [T.his] right hand." + msg += "[user.p_Theyre()] holding [icon2html(r_hand,user.client)] \a [r_hand] in [user.p_their()] right hand." //gloves if(gloves && !(skip_gear & EXAMINE_SKIPGLOVES) && gloves.show_examine) @@ -190,88 +184,88 @@ gloves_acc_msg += " [lowertext(english_list(accessory_descs))]." if(gloves.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.has] [icon2html(gloves,user.client)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != "#030303") ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands![gloves_acc_msg]") + msg += span_warning("[user.p_Theyve()] [icon2html(gloves,user.client)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != "#030303") ? "blood" : "oil"]-stained [gloves.name] on [user.p_their()] hands![gloves_acc_msg]") else - msg += "[T.He] [T.has] [icon2html(gloves,user.client)] \a [gloves] on [T.his] hands.[gloves_acc_msg]" + msg += "[user.p_Theyve()] [icon2html(gloves,user.client)] \a [gloves] on [user.p_their()] hands.[gloves_acc_msg]" else if(forensic_data?.has_blooddna() && !(skip_body & EXAMINE_SKIPHANDS)) - msg += span_warning("[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!") + msg += span_warning("[user.p_Theyve()] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!") //handcuffed? if(handcuffed && handcuffed.show_examine) if(istype(handcuffed, /obj/item/handcuffs/cable)) - msg += span_warning("[T.He] [T.is] [icon2html(handcuffed,user.client)] restrained with cable!") + msg += span_warning("[user.p_Theyre()] [icon2html(handcuffed,user.client)] restrained with cable!") else - msg += span_warning("[T.He] [T.is] [icon2html(handcuffed,user.client)] handcuffed!") + msg += span_warning("[user.p_Theyre()] [icon2html(handcuffed,user.client)] handcuffed!") //buckled if(buckled) - msg += span_warning("[T.He] [T.is] [icon2html(buckled,user.client)] buckled to [buckled]!") + msg += span_warning("[user.p_Theyre()] [icon2html(buckled,user.client)] buckled to [buckled]!") //belt if(belt && !(skip_gear & EXAMINE_SKIPBELT) && belt.show_examine) if(belt.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.has] [icon2html(belt,user.client)] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != "#030303") ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!") + msg += span_warning("[user.p_Theyve()] [icon2html(belt,user.client)] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != "#030303") ? "blood" : "oil"]-stained [belt.name] about [user.p_their()] waist!") else - msg += "[T.He] [T.has] [icon2html(belt,user.client)] \a [belt] about [T.his] waist." + msg += "[user.p_Theyve()] [icon2html(belt,user.client)] \a [belt] about [user.p_their()] waist." //shoes if(shoes && !(skip_gear & EXAMINE_SKIPSHOES) && shoes.show_examine) if(shoes.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.is] wearing [icon2html(shoes,user.client)] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != "#030303") ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!") + msg += span_warning("[user.p_Theyre()] wearing [icon2html(shoes,user.client)] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != "#030303") ? "blood" : "oil"]-stained [shoes.name] on [user.p_their()] feet!") else - msg += "[T.He] [T.is] wearing [icon2html(shoes,user.client)] \a [shoes] on [T.his] feet." + msg += "[user.p_Theyre()] wearing [icon2html(shoes,user.client)] \a [shoes] on [user.p_their()] feet." else if(feet_blood_DNA && !(skip_body & EXAMINE_SKIPHANDS)) - msg += span_warning("[T.He] [T.has] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!") + msg += span_warning("[user.p_Theyve()] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!") //mask if(wear_mask && !(skip_gear & EXAMINE_SKIPMASK) && wear_mask.show_examine) - var/descriptor = "on [T.his] face" + var/descriptor = "on [user.p_their()] face" if(istype(wear_mask, /obj/item/grenade) && check_has_mouth()) - descriptor = "in [T.his] mouth" + descriptor = "in [user.p_their()] mouth" if(wear_mask.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.has] [icon2html(wear_mask,user.client)] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != "#030303") ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!") + msg += span_warning("[user.p_Theyve()] [icon2html(wear_mask,user.client)] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != "#030303") ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!") else - msg += "[T.He] [T.has] [icon2html(wear_mask,user.client)] \a [wear_mask] [descriptor]." + msg += "[user.p_Theyve()] [icon2html(wear_mask,user.client)] \a [wear_mask] [descriptor]." //eyes if(glasses && !(skip_gear & EXAMINE_SKIPEYEWEAR) && glasses.show_examine) if(glasses.forensic_data?.has_blooddna()) - msg += span_warning("[T.He] [T.has] [icon2html(glasses,user.client)] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != "#030303") ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!") + msg += span_warning("[user.p_Theyve()] [icon2html(glasses,user.client)] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != "#030303") ? "blood" : "oil"]-stained [glasses] covering [user.p_their()] eyes!") else - msg += "[T.He] [T.has] [icon2html(glasses,user.client)] \a [glasses] covering [T.his] eyes." + msg += "[user.p_Theyve()] [icon2html(glasses,user.client)] \a [glasses] covering [user.p_their()] eyes." //left ear if(l_ear && !(skip_gear & EXAMINE_SKIPEARS) && l_ear.show_examine) - msg += "[T.He] [T.has] [icon2html(l_ear,user.client)] \a [l_ear] on [T.his] left ear." + msg += "[user.p_Theyve()] [icon2html(l_ear,user.client)] \a [l_ear] on [user.p_their()] left ear." //right ear if(r_ear && !(skip_gear & EXAMINE_SKIPEARS) && r_ear.show_examine) - msg += "[T.He] [T.has] [icon2html(r_ear,user.client)] \a [r_ear] on [T.his] right ear." + msg += "[user.p_Theyve()] [icon2html(r_ear,user.client)] \a [r_ear] on [user.p_their()] right ear." //ID if(wear_id && wear_id.show_examine) - msg += "[T.He] [T.is] wearing [icon2html(wear_id,user.client)]\a [wear_id]." + msg += "[user.p_Theyre()] wearing [icon2html(wear_id,user.client)]\a [wear_id]." //Jitters var/jitter = get_jittery() if(jitter) if(jitter >= 300) - msg += span_boldwarning("[T.He] [T.is] convulsing violently!") + msg += span_boldwarning("[user.p_Theyre()] convulsing violently!") else if(jitter >= 200) - msg += span_warning("[T.He] [T.is] extremely jittery.") + msg += span_warning("[user.p_Theyre()] extremely jittery.") else if(jitter >= 100) - msg += span_warning("[T.He] [T.is] twitching ever so slightly.") + msg += span_warning("[user.p_Theyre()] twitching ever so slightly.") //splints for(var/organ in BP_ALL) var/obj/item/organ/external/o = get_organ(organ) if(o && o.splinted && o.splinted.loc == o) - msg += span_warning("[T.He] [T.has] \a [o.splinted] on [T.his] [o.name]!") + msg += span_warning("[user.p_Theyve()] \a [o.splinted] on [user.p_their()] [o.name]!") if(suiciding) - msg += span_warning("[T.He] appears to have commited suicide... there is no hope of recovery.") + msg += span_warning("[user.p_They()] appears to have commited suicide... there is no hope of recovery.") var/list/vorestrings = list() vorestrings += examine_weight() @@ -281,39 +275,39 @@ vorestrings += examine_step_size() vorestrings += examine_nif() vorestrings += examine_chimera() - vorestrings += examine_body_writing(hidden, T) + vorestrings += examine_body_writing(hidden) for(var/entry in vorestrings) if(entry == "" || entry == null) vorestrings -= entry msg += vorestrings if(mSmallsize in mutations) - msg += "[T.He] [T.is] very short!" + msg += "[user.p_Theyre()] very short!" if (src.stat) - msg += span_warning("[T.He] [T.is]n't responding to anything around [T.him] and seems to be asleep.") + msg += span_warning("[user.p_Theyre()]n't responding to anything around [user.p_they()] and seems to be asleep.") if((stat == 2 || src.losebreath) && get_dist(user, src) <= 3) - msg += span_warning("[T.He] [T.does] not appear to be breathing.") + msg += span_warning("[user.p_They()] [user.p_do()] not appear to be breathing.") if(ishuman(user) && !user.stat && Adjacent(user)) user.visible_message(span_infoplain(span_bold("[user]") + " checks [src]'s pulse."), span_infoplain("You check [src]'s pulse.")) spawn(15) if(isobserver(user) || (Adjacent(user) && !user.stat)) // If you're a corpse then you can't exactly check their pulse, but ghosts can see anything if(pulse == PULSE_NONE) - to_chat(user, span_deadsay("[T.He] [T.has] no pulse[src.client ? "" : " and [T.his] soul has departed"]...")) + to_chat(user, span_deadsay("[user.p_Theyve()] no pulse[src.client ? "" : " and [user.p_their()] soul has departed"]...")) else - to_chat(user, span_deadsay("[T.He] [T.has] a pulse!")) + to_chat(user, span_deadsay("[user.p_Theyve()] a pulse!")) if(fire_stacks) - msg += "[T.He] [T.is] covered in some liquid." + msg += "[user.p_Theyre()] covered in some liquid." if(on_fire) - msg += span_warning("[T.He] [T.is] on fire!.") + msg += span_warning("[user.p_Theyre()] on fire!.") var/ssd_msg = species.get_ssd(src) if(ssd_msg && (!should_have_organ(O_BRAIN) || has_brain()) && stat != DEAD) if(!key) - msg += span_deadsay("[T.He] [T.is] [ssd_msg]. It doesn't look like [T.he] [T.is] waking up anytime soon.") + msg += span_deadsay("[user.p_Theyre()] [ssd_msg]. It doesn't look like [user.p_theyre()] waking up anytime soon.") else if(!client) - msg += span_deadsay("[T.He] [T.is] [ssd_msg].") + msg += span_deadsay("[user.p_Theyre()] [ssd_msg].") if(client && away_from_keyboard && manual_afk) msg += "\[Away From Keyboard for [round((client.inactivity/10)/60)] minutes\]" else if(client && ((client.inactivity / 10) / 60 > 10)) //10 Minutes @@ -332,9 +326,9 @@ var/obj/item/organ/external/E = organs_by_name[organ_tag] if(!E) - wound_flavor_text["[organ_descriptor]"] = span_boldwarning("[T.He] [T.is] missing [T.his] [organ_descriptor].") + wound_flavor_text["[organ_descriptor]"] = span_boldwarning("[user.p_Theyre()] missing [user.p_their()] [organ_descriptor].") else if(E.is_stump()) - wound_flavor_text["[organ_descriptor]"] = span_boldwarning("[T.He] [T.has] a stump where [T.his] [organ_descriptor] should be.") + wound_flavor_text["[organ_descriptor]"] = span_boldwarning("[user.p_Theyve()] a stump where [user.p_their()] [organ_descriptor] should be.") else continue @@ -343,38 +337,38 @@ if((temp.organ_tag in hidden) && hidden[temp.organ_tag]) continue //Organ is hidden, don't talk about it if(temp.status & ORGAN_DESTROYED) - wound_flavor_text["[temp.name]"] = span_boldwarning("[T.He] [T.is] missing [T.his] [temp.name].") + wound_flavor_text["[temp.name]"] = span_boldwarning("[user.p_Theyre()] missing [user.p_their()] [temp.name].") continue if(!looks_synth && temp.robotic == ORGAN_ROBOT) if(!(temp.brute_dam + temp.burn_dam)) - wound_flavor_text["[temp.name]"] = "[T.He] [T.has] a [temp.name]." + wound_flavor_text["[temp.name]"] = "[user.p_Theyve()] a [temp.name]." else - wound_flavor_text["[temp.name]"] = span_warning("[T.He] [T.has] a [temp.name] with [temp.get_wounds_desc()]!") + wound_flavor_text["[temp.name]"] = span_warning("[user.p_Theyve()] a [temp.name] with [temp.get_wounds_desc()]!") continue else if(temp.wounds.len > 0 || temp.open) if(temp.is_stump() && temp.parent_organ && organs_by_name[temp.parent_organ]) var/obj/item/organ/external/parent = organs_by_name[temp.parent_organ] - wound_flavor_text["[temp.name]"] = span_warning("[T.He] [T.has] [temp.get_wounds_desc()] on [T.his] [parent.name].") + wound_flavor_text["[temp.name]"] = span_warning("[user.p_Theyve()] [temp.get_wounds_desc()] on [user.p_their()] [parent.name].") else - wound_flavor_text["[temp.name]"] = span_warning("[T.He] [T.has] [temp.get_wounds_desc()] on [T.his] [temp.name].") + wound_flavor_text["[temp.name]"] = span_warning("[user.p_Theyve()] [temp.get_wounds_desc()] on [user.p_their()] [temp.name].") else wound_flavor_text["[temp.name]"] = "" if(temp.dislocated == 1) - wound_flavor_text["[temp.name]"] += span_warning("[T.His] [temp.joint] is dislocated!") + wound_flavor_text["[temp.name]"] += span_warning("[user.p_Their()] [temp.joint] is dislocated!") if(temp.brute_dam > temp.min_broken_damage || (temp.status & (ORGAN_BROKEN | ORGAN_MUTATED))) - wound_flavor_text["[temp.name]"] += span_warning("[T.His] [temp.name] is dented and swollen!") + wound_flavor_text["[temp.name]"] += span_warning("[user.p_Their()] [temp.name] is dented and swollen!") if(temp.germ_level > INFECTION_LEVEL_TWO && !(temp.status & ORGAN_DEAD)) - wound_flavor_text["[temp.name]"] += span_warning("[T.His] [temp.name] looks very infected!") + wound_flavor_text["[temp.name]"] += span_warning("[user.p_Their()] [temp.name] looks very infected!") else if(temp.status & ORGAN_DEAD) - wound_flavor_text["[temp.name]"] += span_warning("[T.His] [temp.name] looks rotten!") + wound_flavor_text["[temp.name]"] += span_warning("[user.p_Their()] [temp.name] looks rotten!") if(temp.status & ORGAN_BLEEDING) - is_bleeding["[temp.name]"] += span_danger("[T.His] [temp.name] is bleeding!") + is_bleeding["[temp.name]"] += span_danger("[user.p_Their()] [temp.name] is bleeding!") if(temp.applied_pressure == src) - applying_pressure = span_info("[T.He] is applying pressure to [T.his] [temp.name].") + applying_pressure = span_info("[user.p_They()] is applying pressure to [user.p_their()] [temp.name].") for(var/limb in wound_flavor_text) var/flavor = wound_flavor_text[limb] @@ -385,9 +379,9 @@ if(blood) msg += blood for(var/implant in get_visible_implants(0)) - msg += span_danger("[src] [T.has] \a [implant] sticking out of [T.his] flesh!") + msg += span_danger("[src] [user.p_have()] \a [implant] sticking out of [user.p_their()] flesh!") if(digitalcamo) - msg += "[T.He] [T.is] repulsively uncanny!" + msg += "[user.p_Theyre()] repulsively uncanny!" if(hasHUD(user,"security")) var/perpname = name @@ -449,7 +443,7 @@ if(pose) if(!findtext(pose, regex("\[.?!]$"))) // Will be zero if the last character is not a member of [.?!] pose = addtext(pose,".") //Makes sure all emotes end with a period. - msg += "
[T.He] [pose]" //
intentional, extra gap. + msg += "
[user.p_They()] [pose]" //
intentional, extra gap. return msg diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm index 1f1042c6c6..3c4e36aa08 100644 --- a/code/modules/mob/living/carbon/human/examine_vr.dm +++ b/code/modules/mob/living/carbon/human/examine_vr.dm @@ -141,7 +141,7 @@ else if(xc.feral) return span_warning("[t_He] [t_has] a crazed, wild look in [t_his] eyes!") -/mob/living/carbon/human/proc/examine_body_writing(list/hidden, datum/gender/G) +/mob/living/carbon/human/proc/examine_body_writing(list/hidden) . = list() for(var/bodypart in hidden) @@ -156,4 +156,4 @@ LAZYREMOVE(body_writing, bodypart) continue - . += span_notice("[G.He] [G.has] \"[writing]\" written on [G.his] [parse_zone(bodypart)].") + . += span_notice("[p_They()] [p_have()] \"[writing]\" written on [p_their()] [parse_zone(bodypart)].") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b659b5bb4d..fb7c1b9674 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -866,8 +866,7 @@ /mob/living/carbon/human/proc/play_xylophone() if(!src.xylophone) - var/datum/gender/T = GLOB.gender_datums[get_visible_gender()] - visible_message(span_filter_notice("[span_red("\The [src] begins playing [T.his] ribcage like a xylophone. It's quite spooky.")]"),span_notice("You begin to play a spooky refrain on your ribcage."),span_filter_notice("[span_red("You hear a spooky xylophone melody.")]")) + visible_message(span_filter_notice("[span_red("\The [src] begins playing [p_their()] ribcage like a xylophone. It's quite spooky.")]"),span_notice("You begin to play a spooky refrain on your ribcage."),span_filter_notice("[span_red("You hear a spooky xylophone melody.")]")) var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg') playsound(src, song, 50, 1, -1) xylophone = 1 @@ -955,8 +954,7 @@ gender = NEUTER regenerate_icons() check_dna() - var/datum/gender/T = GLOB.gender_datums[get_visible_gender()] - visible_message(span_notice("\The [src] morphs and changes [T.his] appearance!"), span_notice("You change your appearance!"), span_filter_notice("[span_red("Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")]")) + visible_message(span_notice("\The [src] morphs and changes [p_their()] appearance!"), span_notice("You change your appearance!"), span_filter_notice("[span_red("Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")]")) /mob/living/carbon/human/proc/remotesay() set name = "Project mind" @@ -1211,16 +1209,13 @@ if(usr.stat || usr.restrained() || !isliving(usr)) return - var/datum/gender/TU = GLOB.gender_datums[usr.get_visible_gender()] - var/datum/gender/T = GLOB.gender_datums[get_visible_gender()] - if(usr == src) self = 1 if(!self) - usr.visible_message(span_notice("[usr] kneels down, puts [TU.his] hand on [src]'s wrist and begins counting [T.his] pulse."),\ + usr.visible_message(span_notice("[usr] kneels down, puts [usr.p_their()] hand on [src]'s wrist and begins counting [p_their()] pulse."),\ span_filter_notice("You begin counting [src]'s pulse.")) else - usr.visible_message(span_notice("[usr] begins counting [T.his] pulse."),\ + usr.visible_message(span_notice("[usr] begins counting [p_their()] pulse."),\ span_filter_notice("You begin counting your pulse.")) if(src.pulse) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 2f57d1c8b3..1c6ad2a026 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -33,7 +33,6 @@ return null /mob/living/carbon/human/attack_hand(mob/living/M as mob) - var/datum/gender/TT = GLOB.gender_datums[M.get_visible_gender()] var/mob/living/carbon/human/H = M if(is_incorporeal()) @@ -84,19 +83,18 @@ // H = THE PERSON DOING THE ATTACK, BUT DEFINED AS A HUMAN. (This is for human specific interactions, such as CPR.) // M = THE PERSON DOING THE ATTACK, AGAIN, DEFINED AS A MOB // src = THE PERSON BEING ATTACKED - // TT = GENDER OF THE TARGET // has_hands = Local variable. If the attacker has hands or not. if(I_HELP) - attack_hand_help_intent(H, M, TT, has_hands) + attack_hand_help_intent(H, M, M, has_hands) if(I_GRAB) - attack_hand_grab_intent(H, M, TT, has_hands) + attack_hand_grab_intent(H, M, has_hands) if(I_HURT) - attack_hand_harm_intent(H, M, TT, has_hands) + attack_hand_harm_intent(H, M, has_hands) if(I_DISARM) - attack_hand_disarm_intent(H, M, TT, has_hands) + attack_hand_disarm_intent(H, M, has_hands) return @@ -105,7 +103,7 @@ /// This condenses them and makes it less of a cluster. ///Help Intent -/mob/living/carbon/human/proc/attack_hand_help_intent(var/mob/living/carbon/human/H, var/mob/living/M as mob, var/datum/gender/TT, var/has_hands) +/mob/living/carbon/human/proc/attack_hand_help_intent(var/mob/living/carbon/human/H, var/mob/living/M as mob, var/has_hands) PRIVATE_PROC(TRUE) SHOULD_NOT_OVERRIDE(TRUE) if(M.restrained()) //If we're restrained, we can't help them. If you want to add snowflake stuff that you can do while restrained, add it here. @@ -151,7 +149,7 @@ return TRUE //Disarm Intent -/mob/living/carbon/human/proc/attack_hand_disarm_intent(var/mob/living/carbon/human/H, var/mob/living/M as mob, var/datum/gender/TT, var/has_hands) +/mob/living/carbon/human/proc/attack_hand_disarm_intent(var/mob/living/carbon/human/H, var/mob/living/M as mob, var/has_hands) PRIVATE_PROC(TRUE) SHOULD_NOT_OVERRIDE(TRUE) if(M.restrained()) //If we're restrained, we can't disarm them. If you want to add snowflake stuff that you can do while restrained, add it here. @@ -235,7 +233,7 @@ else visible_message(span_filter_combat("[span_red(span_bold("[M] attempted to disarm [src]!"))]")) //Grab Intent -/mob/living/carbon/human/proc/attack_hand_grab_intent(var/mob/living/carbon/human/H, var/mob/living/M as mob, var/datum/gender/TT, var/has_hands) +/mob/living/carbon/human/proc/attack_hand_grab_intent(var/mob/living/carbon/human/H, var/mob/living/M as mob, var/has_hands) PRIVATE_PROC(TRUE) SHOULD_NOT_OVERRIDE(TRUE) if(M.restrained()) //If we're restrained, we can't grab them. If you want to add snowflake stuff that you can do while restrained, add it here. @@ -252,7 +250,7 @@ w_uniform.add_fingerprint(M) if(buckled) - to_chat(M, span_notice("You cannot grab [src], [TT.he] is buckled in!")) + to_chat(M, span_notice("You cannot grab [src], [M.p_theyre()] buckled in!")) return var/obj/item/grab/G = new /obj/item/grab(M, src) //If this is put before the buckled check, the user will be perma-slowed due to a grab existing in nullspace. if(!G) //the grab will delete itself in New if affecting is anchored @@ -265,7 +263,7 @@ playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) visible_message(span_warning("[M] has grabbed [src] [(M.zone_sel.selecting == BP_L_HAND || M.zone_sel.selecting == BP_R_HAND)? "by [(gender==FEMALE)? "her" : ((gender==MALE)? "his": "their")] hands": "passively"]!")) //Harm Intent -/mob/living/carbon/human/proc/attack_hand_harm_intent(var/mob/living/carbon/human/H, var/mob/living/M as mob, var/datum/gender/TT, var/has_hands) +/mob/living/carbon/human/proc/attack_hand_harm_intent(var/mob/living/carbon/human/H, var/mob/living/M as mob, var/has_hands) PRIVATE_PROC(TRUE) SHOULD_NOT_OVERRIDE(TRUE) //As a note: This intentionally doesn't immediately return if has_hands is false. This is because you can attack with kicks/bites! @@ -350,7 +348,7 @@ if(!src.lying) attack_message = "[H] attempted to strike [src], but missed!" else - attack_message = "[H] attempted to strike [src], but [TT.he] rolled out of the way!" + attack_message = "[H] attempted to strike [src], but [M.p_they()] rolled out of the way!" src.set_dir(pick(GLOB.cardinal)) miss_type = 1 @@ -504,10 +502,8 @@ to_chat(user,message) return FALSE - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] - if(user == src) - user.visible_message(span_filter_notice("\The [user] starts applying pressure to [TU.his] [organ.name]!"), span_filter_notice("You start applying pressure to your [organ.name]!")) + user.visible_message(span_filter_notice("\The [user] starts applying pressure to [user.p_their()] [organ.name]!"), span_filter_notice("You start applying pressure to your [organ.name]!")) else user.visible_message(span_filter_notice("\The [user] starts applying pressure to [src]'s [organ.name]!"), span_filter_notice("You start applying pressure to [src]'s [organ.name]!")) spawn(0) @@ -519,7 +515,7 @@ organ.applied_pressure = null if(user == src) - user.visible_message(span_filter_notice("\The [user] stops applying pressure to [TU.his] [organ.name]!"), span_filter_notice("You stop applying pressure to your [organ]!")) + user.visible_message(span_filter_notice("\The [user] stops applying pressure to [user.p_their()] [organ.name]!"), span_filter_notice("You stop applying pressure to your [organ]!")) else user.visible_message(span_filter_notice("\The [user] stops applying pressure to [src]'s [organ.name]!"), span_filter_notice("You stop applying pressure to [src]'s [organ.name]!")) diff --git a/code/modules/mob/living/carbon/human/human_modular_limbs.dm b/code/modules/mob/living/carbon/human/human_modular_limbs.dm index 7b8e8fcc61..44ef58787f 100644 --- a/code/modules/mob/living/carbon/human/human_modular_limbs.dm +++ b/code/modules/mob/living/carbon/human/human_modular_limbs.dm @@ -171,9 +171,8 @@ for(var/obj/item/organ/external/child in E.children) child.status &= ~ORGAN_CUT_AWAY - var/datum/gender/G = GLOB.gender_datums[gender] visible_message( - span_notice("\The [src] attaches \the [E] to [G.his] body!"), + span_notice("\The [src] attaches \the [E] to [p_their()] body!"), span_notice("You attach \the [E] to your body!")) regenerate_icons() // Not sure why this isn't called by removed(), but without it we don't update our limb appearance. return TRUE @@ -199,8 +198,7 @@ E.removed(src) E.dropInto(loc) put_in_hands(E) - var/datum/gender/G = GLOB.gender_datums[gender] visible_message( - span_notice("\The [src] detaches [G.his] [E.name]!"), + span_notice("\The [src] detaches [p_their()] [E.name]!"), span_notice("You detach your [E.name]!")) return TRUE diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index 5bc025b158..8e2a8578bf 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -27,12 +27,10 @@ /datum/unarmed_attack/claws/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) var/obj/item/organ/external/affecting = target.get_organ(zone) - var/datum/gender/T = GLOB.gender_datums[user.get_visible_gender()] - var/datum/gender/TT = GLOB.gender_datums[target.get_visible_gender()] attack_damage = CLAMP(attack_damage, 1, 5) if(target == user) - user.visible_message(span_danger("[user] [pick(attack_verb)] [T.himself] in the [affecting.name]!")) + user.visible_message(span_danger("[user] [pick(attack_verb)] [user.p_themselves()] in the [affecting.name]!")) return 0 switch(zone) @@ -40,20 +38,20 @@ // ----- HEAD ----- // switch(attack_damage) if(1 to 2) - user.visible_message(span_danger("[user] scratched [target] across [TT.his] cheek!")) + user.visible_message(span_danger("[user] scratched [target] across [target.p_their()] cheek!")) if(3 to 4) user.visible_message(span_danger("[user] [pick(attack_verb)] [target]'s [pick("head", "neck")]!")) //'with spread claws' sounds a little bit odd, just enough that conciseness is better here I think if(5) user.visible_message(pick( - span_danger("[user] rakes [T.his] [pick(attack_noun)] across [target]'s face!"), - span_danger("[user] tears [T.his] [pick(attack_noun)] into [target]'s face!"), + span_danger("[user] rakes [user.p_their()] [pick(attack_noun)] across [target]'s face!"), + span_danger("[user] tears [user.p_their()] [pick(attack_noun)] into [target]'s face!"), )) else // ----- BODY ----- // switch(attack_damage) if(1 to 2) user.visible_message(span_danger("[user] scratched [target]'s [affecting.name]!")) if(3 to 4) user.visible_message(span_danger("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!")) - if(5) user.visible_message(span_danger("[user] tears [T.his] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!")) + if(5) user.visible_message(span_danger("[user] tears [user.p_their()] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!")) /datum/unarmed_attack/claws/strong attack_name = "strong claws" diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 44b2549c4e..f8e4b6b793 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -44,7 +44,6 @@ /datum/unarmed_attack/proc/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armour,var/attack_damage,var/zone) var/stun_chance = rand(0, 100) - var/datum/gender/TT = GLOB.gender_datums[target.get_visible_gender()] if(attack_damage >= 5 && armour < 2 && !(target == user) && stun_chance <= attack_damage * 5) // 25% standard chance switch(zone) // strong punches can have effects depending on where they hit @@ -75,7 +74,7 @@ target.set_dir(GLOB.reverse_dir[target.dir]) target.apply_effect(attack_damage * 0.4, WEAKEN, armour) if(BP_GROIN) - target.visible_message(span_warning("[target] looks like [TT.he] [TT.is] in pain!"), span_warning("Oh god that hurt!")) // Chompstation edit + target.visible_message(span_warning("[target] looks like [target.p_theyre()] in pain!"), span_warning("Oh god that hurt!")) // Chompstation edit target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armour) if(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT) if(!target.lying) @@ -95,15 +94,13 @@ /datum/unarmed_attack/proc/handle_eye_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target) var/obj/item/organ/internal/eyes/eyes = target.internal_organs_by_name[O_EYES] - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] - var/datum/gender/TT = GLOB.gender_datums[target.get_visible_gender()] if(eyes) eyes.take_damage(rand(3,4), 1) - user.visible_message(span_danger("[user] presses [TU.his] [eye_attack_text] into [target]'s [eyes.name]!")) + user.visible_message(span_danger("[user] presses [p_their()] [eye_attack_text] into [target]'s [eyes.name]!")) var/eye_pain = eyes.organ_can_feel_pain() to_chat(target, span_danger("You experience[(eye_pain) ? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(eye_pain)? "." : "!"]")) return - user.visible_message(span_danger("[user] attempts to press [TU.his] [eye_attack_text] into [target]'s eyes, but [TT.he] [TT.does]n't have any!")) + user.visible_message(span_danger("[user] attempts to press [p_their()] [eye_attack_text] into [target]'s eyes, but [target.p_they()] [target.p_do()]n't have any!")) /datum/unarmed_attack/proc/unarmed_override(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/zone) return FALSE //return true if the unarmed override prevents further attacks @@ -143,13 +140,10 @@ var/obj/item/organ/external/affecting = target.get_organ(zone) var/organ = affecting.name - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] - var/datum/gender/TT = GLOB.gender_datums[target.get_visible_gender()] - attack_damage = CLAMP(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case. if(target == user) - user.visible_message(span_danger("[user] [pick(attack_verb)] [TU.himself] in the [organ]!")) + user.visible_message(span_danger("[user] [pick(attack_verb)] [p_themselves()] in the [organ]!")) return FALSE if(!target.lying) @@ -158,7 +152,7 @@ // ----- HEAD ----- // switch(attack_damage) if(1 to 2) - user.visible_message(span_danger("[user] slapped [target] across [TT.his] cheek!")) + user.visible_message(span_danger("[user] slapped [target] across [p_their()] cheek!")) if(3 to 4) user.visible_message(pick( 40; span_danger("[user] [pick(attack_verb)] [target] in the head!"), @@ -168,21 +162,21 @@ if(5) user.visible_message(pick( 30; span_danger("[user] gave [target] a resounding [pick("slap", "punch")] to the face!"), - 40; span_danger("[user] smashed [TU.his] [pick(attack_noun)] into [target]'s face!"), + 40; span_danger("[user] smashed [p_their()] [pick(attack_noun)] into [target]'s face!"), 30; span_danger("[user] gave a strong blow against [target]'s jaw!") )) else // ----- BODY ----- // switch(attack_damage) if(1 to 2) user.visible_message(span_danger("[user] threw a glancing punch at [target]'s [organ]!")) - if(1 to 4) user.visible_message(span_danger("[user] [pick(attack_verb)] [target] in [TT.his] [organ]!")) + if(1 to 4) user.visible_message(span_danger("[user] [pick(attack_verb)] [target] in [target.p_their()] [organ]!")) if(5) user.visible_message(pick( - 50; span_danger("[user] smashed [TU.his] [pick(attack_noun)] into [target]'s [organ]!"), + 50; span_danger("[user] smashed [p_their()] [pick(attack_noun)] into [target]'s [organ]!"), 50; span_danger("[user] landed a striking [pick(attack_noun)] on [target]'s [organ]!") )) else - user.visible_message(span_danger("[user] [pick("punched", "threw a punch against", "struck", "slammed [TU.his] [pick(attack_noun)] into")] [target]'s [organ]!")) //why do we have a separate set of verbs for lying targets? + user.visible_message(span_danger("[user] [pick("punched", "threw a punch against", "struck", "slammed [p_their()] [pick(attack_noun)] into")] [target]'s [organ]!")) //why do we have a separate set of verbs for lying targets? /datum/unarmed_attack/kick attack_name = "kick" @@ -218,14 +212,13 @@ /datum/unarmed_attack/kick/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) var/obj/item/organ/external/affecting = target.get_organ(zone) - var/datum/gender/TT = GLOB.gender_datums[target.get_visible_gender()] var/organ = affecting.name attack_damage = CLAMP(attack_damage, 1, 5) switch(attack_damage) if(1 to 2) user.visible_message(span_danger("[user] threw [target] a glancing [pick(attack_noun)] to the [organ]!")) //it's not that they're kicking lightly, it's that the kick didn't quite connect - if(3 to 4) user.visible_message(span_danger("[user] [pick(attack_verb)] [target] in [TT.his] [organ]!")) + if(3 to 4) user.visible_message(span_danger("[user] [pick(attack_verb)] [target] in [target.p_their()] [organ]!")) if(5) user.visible_message(span_danger("[user] landed a strong [pick(attack_noun)] against [target]'s [organ]!")) /datum/unarmed_attack/stomp @@ -266,13 +259,12 @@ var/obj/item/organ/external/affecting = target.get_organ(zone) var/organ = affecting.name var/obj/item/clothing/shoes = user.shoes - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] attack_damage = CLAMP(attack_damage, 1, 5) switch(attack_damage) - if(1 to 4) user.visible_message(span_danger("[pick("[user] stomped on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!")) - if(5) user.visible_message(span_danger("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!")) //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/ + if(1 to 4) user.visible_message(span_danger("[pick("[user] stomped on", "[user] slammed [user.p_their()] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!")) + if(5) user.visible_message(span_danger("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [user.p_their()] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!")) //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/ /datum/unarmed_attack/light_strike attack_name = "light hit" diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 45c649e0c3..9c1f5c7598 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -70,12 +70,11 @@ count++ // Check the carrier - var/datum/gender/TM = GLOB.gender_datums[M.get_visible_gender()] var/answer = tgui_alert(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", list("Yes", "No")) if(answer == "Yes") var/turf/T = get_turf(P.loc) for (var/mob/v in viewers(T)) - v.show_message(span_notice("[M] presses [TM.his] thumb against [P]."), 3, span_notice("[P] makes a sharp clicking sound as it extracts DNA material from [M]."), 2) + v.show_message(span_notice("[M] presses [M.p_their()] thumb against [P]."), 3, span_notice("[P] makes a sharp clicking sound as it extracts DNA material from [M]."), 2) var/datum/dna/dna = M.dna to_chat(P, span_infoplain(span_red("

[M]'s UE string : [dna.unique_enzymes]

"))) if(dna.unique_enzymes == P.master_dna) @@ -83,7 +82,7 @@ else to_chat(P, span_infoplain(span_bold("DNA does not match stored Master DNA."))) else - to_chat(P, span_infoplain("[M] does not seem like [TM.he] is going to provide a DNA sample willingly.")) + to_chat(P, span_infoplain("[M] does not seem like [M.p_theyre()] going to provide a DNA sample willingly.")) return TRUE /datum/pai_software/radio_config diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 27e54ac728..4e9aca885c 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -230,7 +230,6 @@ var/list/mob_hat_cache = list() return else if (istype(W, /obj/item/card/id)||istype(W, /obj/item/pda)) - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] if(stat == 2) if(!CONFIG_GET(flag/allow_drone_spawn) || emagged || health < -35) //It's dead, Dave. @@ -241,7 +240,7 @@ var/list/mob_hat_cache = list() to_chat(user, span_danger("Access denied.")) return - user.visible_message(span_danger("\The [user] swipes [TU.his] ID card through \the [src], attempting to reboot it."), span_danger(">You swipe your ID card through \the [src], attempting to reboot it.")) + user.visible_message(span_danger("\The [user] swipes [user.p_their()] ID card through \the [src], attempting to reboot it."), span_danger(">You swipe your ID card through \the [src], attempting to reboot it.")) var/drones = 0 for(var/mob/living/silicon/robot/drone/D in GLOB.player_list) drones++ @@ -277,8 +276,7 @@ var/list/mob_hat_cache = list() clear_supplied_laws() clear_inherent_laws() laws = new /datum/ai_laws/syndicate_override - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] - set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") + set_zeroth_law("Only [user.real_name] and people [user.p_their()] designate[user.p_s()] as being such are operatives.") to_chat(src, span_infoplain(span_bold("Obey these laws:\n") + laws.get_formatted_laws())) to_chat(src, span_danger("ALERT: [user.real_name] is your new master. Obey your new laws and \his commands.")) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 4c31ba165f..b4dba96ba3 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1330,10 +1330,9 @@ to_chat(user, span_filter_notice("You assigned yourself as [src]'s operator.")) message_admins("[key_name_admin(user)] assigned as operator on cyborg [key_name_admin(src)]. Syndicate Operator change.") log_game("[key_name(user)] assigned as operator on cyborg [key_name(src)]. Syndicate Operator change.") - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] - set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") + set_zeroth_law("Only [user.real_name] and people [user.p_they()] designate[user.p_s()] as being such are operatives.") to_chat(src, span_infoplain(span_bold("Obey these laws:\n") + laws.get_formatted_laws())) - to_chat(src, span_danger("ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.")) + to_chat(src, span_danger("ALERT: [user.real_name] is your new master. Obey your new laws and [user.p_their()] commands.")) else to_chat(user, span_filter_notice("[src] already has an operator assigned.")) return//Prevents the X has hit Y with Z message also you cant emag them twice @@ -1362,8 +1361,7 @@ laws = new /datum/ai_laws/syndicate_override var/time = time2text(world.realtime,"hh:mm:ss") GLOB.lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])") - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] - set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") + set_zeroth_law("Only [user.real_name] and people [user.p_their()] designate[user.p_s()] as being such are operatives.") . = 1 spawn() to_chat(src, span_danger("ALERT: Foreign software detected.")) @@ -1385,7 +1383,7 @@ sleep(20) to_chat(src, span_danger("ERRORERRORERROR")) to_chat(src, span_infoplain(span_bold("Obey these laws:\n") + laws.get_formatted_laws())) - to_chat(src, span_danger("ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.")) + to_chat(src, span_danger("ALERT: [user.real_name] is your new master. Obey your new laws and [user.p_their()] commands.")) update_icon() hud_used.update_robot_modules_display() else diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm index f86d0fcbac..53ec793684 100644 --- a/code/modules/mob/living/simple_mob/defense.dm +++ b/code/modules/mob/living/simple_mob/defense.dm @@ -90,8 +90,7 @@ adjustBruteLoss(-MED.heal_brute) visible_message(span_infoplain(span_bold("\The [user]") + " applies the [MED] on [src].")) else - var/datum/gender/T = GLOB.gender_datums[src.get_visible_gender()] - to_chat(user, span_notice("\The [src] is dead, medical items won't bring [T.him] back to life.")) // the gender lookup is somewhat overkill, but it functions identically to the obsolete gender macros and future-proofs this code + to_chat(user, span_notice("\The [src] is dead, medical items won't bring [p_them()] back to life.")) // the gender lookup is somewhat overkill, but it functions identically to the obsolete gender macros and future-proofs this code if(can_butcher(user, O)) //if the animal can be butchered, do so and return. It's likely to be gibbed. harvest(user, O) return diff --git a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm index 3867a0a292..bcb24886ab 100644 --- a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm +++ b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm @@ -65,10 +65,9 @@ else switch(M.a_intent) if(I_HELP) - var/datum/gender/T = GLOB.gender_datums[src.get_visible_gender()] M.visible_message( - span_notice("\The [M] hugs [src] to make [T.him] feel better!"), \ - span_notice("You hug [src] to make [T.him] feel better!") + span_notice("\The [M] hugs [src] to make [p_them()] feel better!"), \ + span_notice("You hug [src] to make [p_them()] feel better!") ) // slightly redundant as at the moment most mobs still use the normal gender var, but it works and future-proofs it playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 6de60acdc8..1408606de2 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -242,8 +242,6 @@ qdel(src) return - var/datum/gender/TU = GLOB.gender_datums[assailant.get_visible_gender()] - last_action = world.time if(state < GRAB_AGGRESSIVE) @@ -264,7 +262,7 @@ to_chat(assailant, span_notice("You squeeze [affecting], but nothing interesting happens.")) return - assailant.visible_message(span_warning("[assailant] has reinforced [TU.his] grip on [affecting] (now neck)!")) + assailant.visible_message(span_warning("[assailant] has reinforced [assailant.p_their()] grip on [affecting] (now neck)!")) state = GRAB_NECK icon_state = "grabbed+1" assailant.set_dir(get_dir(assailant, affecting)) @@ -273,11 +271,11 @@ hud.name = "kill" affecting.Stun(10) //10 ticks of ensured grab else if(state < GRAB_UPGRADING) - assailant.visible_message(span_danger("[assailant] starts to tighten [TU.his] grip on [affecting]'s neck!")) + assailant.visible_message(span_danger("[assailant] starts to tighten [assailant.p_their()] grip on [affecting]'s neck!")) hud.icon_state = "kill1" state = GRAB_KILL - assailant.visible_message(span_danger("[assailant] has tightened [TU.his] grip on [affecting]'s neck!")) + assailant.visible_message(span_danger("[assailant] has tightened [assailant.p_their()] grip on [affecting]'s neck!")) add_attack_logs(assailant,affecting,"Strangled") affecting.setClickCooldown(10) affecting.AdjustLosebreath(1) @@ -341,8 +339,7 @@ /obj/item/grab/proc/reset_kill_state() if(state == GRAB_KILL) - var/datum/gender/T = GLOB.gender_datums[assailant.get_visible_gender()] - assailant.visible_message(span_warning("[assailant] lost [T.his] tight grip on [affecting]'s neck!")) + assailant.visible_message(span_warning("[assailant] lost [assailant.p_their()] tight grip on [affecting]'s neck!")) hud.icon_state = "kill" state = GRAB_NECK diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm index 438634ac1c..09c72c096b 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -90,8 +90,7 @@ return if(target.lying) return - var/datum/gender/T = GLOB.gender_datums[attacker.get_visible_gender()] - attacker.visible_message(span_danger("[attacker] thrusts [T.his] head into [target]'s skull!")) + attacker.visible_message(span_danger("[attacker] thrusts [attacker.p_their()] head into [target]'s skull!")) var/damage = 20 var/obj/item/clothing/hat = attacker.head diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 3753ce6ecd..982c20f984 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -541,8 +541,7 @@ if(damage_desc) var/fix_verb = (damage_amount > repair_amount) ? "patches" : "finishes patching" if(user == src.owner) - var/datum/gender/T = GLOB.gender_datums[user.get_visible_gender()] - user.visible_message(span_infoplain(span_bold("\The [user]") + " [fix_verb] [damage_desc] on [T.his] [src.name] with [tool].")) + user.visible_message(span_infoplain(span_bold("\The [user]") + " [fix_verb] [damage_desc] on [user.p_their()] [src.name] with [tool].")) else user.visible_message(span_infoplain(span_bold("\The [user]") + " [fix_verb] [damage_desc] on [owner]'s [src.name] with [tool].")) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 234c67008e..f4b2a23e74 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -382,13 +382,12 @@ /obj/item/paper/proc/burnpaper(obj/item/flame/P, mob/user) var/class = "warning" - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] if(P.lit && !user.restrained()) if(istype(P, /obj/item/flame/lighter/zippo)) class = "rose" - user.visible_message("[user] holds \the [P] up to \the [src], it looks like [TU.hes] trying to burn it!", \ + user.visible_message("[user] holds \the [P] up to \the [src], it looks like [user.p_theyre()] trying to burn it!", \ "You hold \the [P] up to \the [src], burning it slowly.") playsound(src, 'sound/bureaucracy/paperburn.ogg', 50, 1) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 2cf6412a93..fb03276828 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -78,8 +78,7 @@ if(P.lit && !user.restrained()) if(istype(P, /obj/item/flame/lighter/zippo)) class = "rose>" - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] - user.visible_message("[user] holds \the [P] up to \the [src], it looks like [TU.he] [TU.is] trying to burn it!", \ + user.visible_message("[user] holds \the [P] up to \the [src], it looks like [user.p_theyre()] trying to burn it!", \ "You hold \the [P] up to \the [src], burning it slowly.") spawn(20) diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm index 835e6f36d6..182b27fa98 100644 --- a/code/modules/paperwork/papershredder.dm +++ b/code/modules/paperwork/papershredder.dm @@ -163,13 +163,12 @@ ..() /obj/item/shreddedp/proc/burnpaper(var/obj/item/flame/lighter/P, var/mob/user) - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] if(user.restrained()) return if(!P.lit) to_chat(user, span_warning("\The [P] is not lit.")) return - user.visible_message(span_warning("\The [user] holds \the [P] up to \the [src]. It looks like [TU.he] [TU.is] trying to burn it!"), \ + user.visible_message(span_warning("\The [user] holds \the [P] up to \the [src]. It looks like [user.p_theyre()] trying to burn it!"), \ span_warning("You hold \the [P] up to \the [src], burning it slowly.")) if(!do_after(user, 2 SECONDS, target = src)) to_chat(user, span_warning("You must hold \the [P] steady to burn \the [src].")) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 5bc094b034..34b5601878 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -518,8 +518,7 @@ tgui_interact(user) /obj/machinery/power/supermatter/attack_hand(mob/user as mob) - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] - user.visible_message(span_warning("\The [user] reaches out and touches \the [src], inducing a resonance... [TU.his] body starts to glow and bursts into flames before flashing into ash."),\ + user.visible_message(span_warning("\The [user] reaches out and touches \the [src], inducing a resonance... [user.p_Their()] body starts to glow and bursts into flames before flashing into ash."),\ span_danger("You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\""),\ span_warning("You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.")) @@ -567,8 +566,7 @@ return if(isliving(AM)) var/mob/living/M = AM - var/datum/gender/T = GLOB.gender_datums[M.get_visible_gender()] - AM.visible_message(span_warning("\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash."),\ + AM.visible_message(span_warning("\The [AM] slams into \the [src] inducing a resonance... [M.p_Their()] body starts to glow and catch flame before flashing into ash."),\ span_danger("You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\""),\ span_warning("You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.")) else if(!grav_pulling) //To prevent spam, detonating supermatter does not indicate non-mobs being destroyed diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 755afa1527..4257c74c15 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -219,9 +219,8 @@ if(P) if(process_projectile(P, user, user, pick(BP_L_FOOT, BP_R_FOOT))) handle_post_fire(user, user) - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] user.visible_message( - span_danger("\The [user] shoots [TU.himself] in the foot with \the [src]!"), + span_danger("\The [user] shoots [user.p_themselves()] in the foot with \the [src]!"), span_danger("You shoot yourself in the foot with \the [src]!") ) M.drop_item() diff --git a/code/modules/projectiles/guns/energy/gunsword_vr.dm b/code/modules/projectiles/guns/energy/gunsword_vr.dm index a0091145e7..c4f8cfca97 100644 --- a/code/modules/projectiles/guns/energy/gunsword_vr.dm +++ b/code/modules/projectiles/guns/energy/gunsword_vr.dm @@ -96,10 +96,9 @@ /obj/item/cell/device/weapon/gunsword/attack_self(mob/living/user as mob) - var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] if (active) if ((CLUMSY in user.mutations) && prob(50)) - user.visible_message(span_danger("\The [user] accidentally cuts [TU.himself] with \the [src]."),\ + user.visible_message(span_danger("\The [user] accidentally cuts [user.p_themselves()] with \the [src]."),\ span_danger("You accidentally cut yourself with \the [src].")) user.take_organ_damage(5,5) deactivate(user) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index b6f86d4935..743a02e0dd 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -159,9 +159,8 @@ if(prob(15)) M.apply_effect((rand(30,80)),IRRADIATE) M.Weaken(5) - var/datum/gender/TM = GLOB.gender_datums[M.get_visible_gender()] for (var/mob/V in viewers(src)) - V.show_message(span_red("[M] writhes in pain as [TM.his] vacuoles boil."), 3, span_red("You hear the crunching of leaves."), 2) + V.show_message(span_red("[M] writhes in pain as [M.p_their()] vacuoles boil."), 3, span_red("You hear the crunching of leaves."), 2) if(prob(35)) // for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan // V.show_message(span_red("[M] is mutated by the radiation beam."), 3, span_red(" You hear the snapping of twigs."), 2) diff --git a/code/modules/spells/artifacts.dm b/code/modules/spells/artifacts.dm index 0a15af661d..2cee6f6fbc 100644 --- a/code/modules/spells/artifacts.dm +++ b/code/modules/spells/artifacts.dm @@ -18,7 +18,7 @@ return to_chat(user, span_info("You can see... everything!")) - visible_message(span_danger("[user] stares into [src], their eyes glazing over.")) + visible_message(span_danger("[user] stares into [src], [user.p_their()] eyes glazing over.")) user.teleop = user.ghostize(1) announce_ghost_joinleave(user.teleop, 1, "You feel that they used a powerful artifact to [pick("invade","disturb","disrupt","infest","taint","spoil","blight")] this place with their presence.") diff --git a/vorestation.dme b/vorestation.dme index 9c241d2ab7..ee27721c0e 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -157,6 +157,7 @@ #include "code\__defines\projectile.dm" #include "code\__defines\projectile_cm.dm" #include "code\__defines\projectiles.dm" +#include "code\__defines\pronouns.dm" #include "code\__defines\qdel.dm" #include "code\__defines\radio.dm" #include "code\__defines\recipe.dm" @@ -281,6 +282,7 @@ #include "code\_helpers\files.dm" #include "code\_helpers\filters.dm" #include "code\_helpers\game.dm" +#include "code\_helpers\gender.dm" #include "code\_helpers\generators.dm" #include "code\_helpers\global_lists.dm" #include "code\_helpers\global_lists_vr.dm" @@ -3265,8 +3267,6 @@ #include "code\modules\mob\autowhisper.dm" #include "code\modules\mob\death.dm" #include "code\modules\mob\emote.dm" -#include "code\modules\mob\gender.dm" -#include "code\modules\mob\gender_vr.dm" #include "code\modules\mob\hear_say.dm" #include "code\modules\mob\holder.dm" #include "code\modules\mob\inventory.dm"