From 72318d46b6621eedc6fbdb240f27e5a534e185e6 Mon Sep 17 00:00:00 2001 From: MarinaGryphon Date: Sat, 3 Feb 2018 14:40:09 -0600 Subject: [PATCH] Replaces most of the gender macros. (#4681) * Fixes #4632. * 1:27 am coding best coding * fixes a warning * Removes the last of the gender macros. Gender is dead. * gender II: the travis-ing * linebreaks are dead too. * oops i accidentally the gender, also ambiguous gender is now taken into account for get_visible_gender --- code/defines/obj/weapon.dm | 6 ++- .../gamemodes/changeling/powers/armblade.dm | 3 +- code/game/gamemodes/cult/runes.dm | 19 ++++++--- .../endgame/supermatter_cascade/blob.dm | 4 +- code/game/gamemodes/newobjective.dm | 6 ++- code/game/gamemodes/objective.dm | 12 ++++-- .../gamemodes/technomancer/spells/illusion.dm | 5 ++- code/game/objects/items/weapons/handcuffs.dm | 4 +- .../items/weapons/material/chainsaw.dm | 3 +- .../objects/items/weapons/material/knives.dm | 7 ++-- .../objects/items/weapons/material/shards.dm | 5 ++- .../objects/items/weapons/material/swords.dm | 6 ++- .../objects/items/weapons/melee/energy.dm | 12 +++--- code/game/objects/items/weapons/melee/misc.dm | 3 +- code/game/objects/items/weapons/stunbaton.dm | 3 +- .../objects/items/weapons/surgery_tools.dm | 14 ++++--- code/game/objects/items/weapons/tools.dm | 5 ++- code/game/objects/items/weapons/traps.dm | 3 +- code/game/objects/items/weapons/weaponry.dm | 3 +- code/game/objects/structures/kitchen_spike.dm | 3 +- code/game/objects/structures/watercloset.dm | 5 ++- code/game/verbs/suicide.dm | 18 +++++---- code/modules/admin/admin_verbs.dm | 6 +-- 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 | 12 ++++++ code/modules/mob/living/carbon/carbon.dm | 26 ++++++------ code/modules/mob/living/carbon/human/emote.dm | 40 ++++++++++--------- .../mob/living/carbon/human/examine.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 23 +++++++---- .../living/carbon/human/human_attackhand.dm | 11 +++-- .../carbon/human/species/species_attack.dm | 13 +++--- .../mob/living/carbon/human/unarmed_attack.dm | 32 +++++++++------ .../living/silicon/pai/software_modules.dm | 5 ++- .../mob/living/silicon/robot/drone/drone.dm | 11 ++--- .../modules/mob/living/silicon/robot/robot.dm | 5 ++- .../mob/living/simple_animal/simple_animal.dm | 3 +- code/modules/mob/mob.dm | 3 ++ 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 | 5 ++- code/modules/paperwork/paper_bundle.dm | 4 +- code/modules/paperwork/papershredder.dm | 3 +- code/modules/paperwork/pen.dm | 3 +- code/modules/power/cable.dm | 5 ++- code/modules/power/cell.dm | 3 +- code/modules/power/supermatter/supermatter.dm | 7 +++- code/modules/projectiles/gun.dm | 3 +- .../modules/projectiles/projectile/special.dm | 3 +- code/modules/surgery/slimes.dm | 3 +- code/modules/virus2/effect.dm | 3 +- 54 files changed, 256 insertions(+), 156 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 4cd21a5527..b6a45d9a07 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -102,8 +102,9 @@ temp_blade.attack_self() /obj/item/weapon/cane/concealed/attack_self(var/mob/user) + var/datum/gender/T = gender_datums[user.get_visible_gender()] if(concealed_blade) - user.visible_message("[user] has unsheathed \a [concealed_blade] from \his [src]!", "You unsheathe \the [concealed_blade] from \the [src].") + user.visible_message("[user] has unsheathed \a [concealed_blade] from [T.his] [src]!", "You unsheathe \the [concealed_blade] from \the [src].") // Calling drop/put in hands to properly call item drop/pickup procs playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1) user.drop_from_inventory(src) @@ -117,7 +118,8 @@ /obj/item/weapon/cane/concealed/attackby(var/obj/item/weapon/material/butterfly/W, var/mob/user) if(!src.concealed_blade && istype(W)) - user.visible_message("[user] has sheathed \a [W] into \his [src]!", "You sheathe \the [W] into \the [src].") + var/datum/gender/T = gender_datums[user.get_visible_gender()] + user.visible_message("[user] has sheathed \a [W] into [T.his] [src]!", "You sheathe \the [W] into \the [src].") user.drop_from_inventory(W) W.loc = src src.concealed_blade = W diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm index 5ab724789b..35526be0d6 100644 --- a/code/game/gamemodes/changeling/powers/armblade.dm +++ b/code/game/gamemodes/changeling/powers/armblade.dm @@ -86,7 +86,8 @@ ..() /obj/item/weapon/melee/changeling/suicide_act(mob/user) - viewers(user) << "[user] is impaling \himself the [src.name]! It looks like \he's trying to commit suicide." + var/datum/gender/T = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide." return(BRUTELOSS) /obj/item/weapon/melee/changeling/process() //Stolen from ninja swords. diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index d2fdffcb16..0e0ff60791 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -168,7 +168,8 @@ var/list/sacrificed = list() if (!target.can_feel_pain()) target.visible_message("The markings below \the [target] glow a bloody red.") else - target.visible_message("[target] writhes in pain as the markings below \him glow a bloody red.", "AAAAAAHHHH!", "You hear an anguished scream.") + var/datum/gender/TT = gender_datums[target.get_visible_gender()] + target.visible_message("[target] writhes in pain as the markings below [TT.him] glow a bloody red.", "AAAAAAHHHH!", "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 @@ -373,15 +374,18 @@ var/list/sacrificed = list() sleep(10 SECONDS) if(corpse_to_raise.client) + + var/datum/gender/TU = gender_datums[corpse_to_raise.get_visible_gender()] + var/datum/gender/TT = 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("[corpse_to_raise]'s eyes glow with a faint red as he stands up, slowly starting to breathe again.", \ + corpse_to_raise.visible_message("[corpse_to_raise]'s eyes glow with a faint red as [TU.he] stand[TU.s] up, slowly starting to breathe again.", \ "Life... I'm alive again...", \ "You hear a faint, slightly familiar whisper.") - body_to_sacrifice.visible_message("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from \his remains!", \ + body_to_sacrifice.visible_message("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from [TT.his] remains!", \ "You feel as your blood boils, tearing you apart.", \ "You hear a thousand voices, all crying in pain.") body_to_sacrifice.gib() @@ -433,8 +437,9 @@ var/list/sacrificed = list() ajourney() //some bits copypastaed from admin tools - Urist if(usr.loc==src.loc) var/mob/living/carbon/human/L = usr + var/datum/gender/TU = gender_datums[L.get_visible_gender()] usr.say("Fwe[pick("'","`")]sh mah erl nyag r'ya!") - usr.visible_message("[usr]'s eyes glow blue as \he freezes in place, absolutely motionless.", \ + usr.visible_message("[usr]'s eyes glow blue as [TU.he] freeze[TU.s] in place, absolutely motionless.", \ "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...", \ "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!") @@ -599,11 +604,12 @@ var/list/sacrificed = list() mend() var/mob/living/user = usr + var/datum/gender/TU = gender_datums[usr.get_visible_gender()] src = null user.say("Uhrast ka'hfa heldsagen ver[pick("'","`")]lot!") user.take_overall_damage(200, 0) runedec+=10 - user.visible_message("\The [user] keels over dead, \his blood glowing blue as it escapes \his body and dissipates into thin air.", \ + user.visible_message("\The [user] keels over dead, [TU.his] blood glowing blue as it escapes [TU.his] body and dissipates into thin air.", \ "In the last moment of your humble life, you feel an immense pain as fabric of reality mends... with your blood.", \ "You hear faint rustle.") for(,user.stat==2) @@ -886,7 +892,8 @@ 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))) - user << "You cannot summon \the [cultist], for \his shackles of blood are strong." + var/datum/gender/TU = gender_datums[cultist.get_visible_gender()] + user << "You cannot summon \the [cultist], for [TU.his] shackles of blood are strong." return fizzle() cultist.loc = 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 81a6148e2c..1051587d13 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm @@ -99,7 +99,9 @@ /turf/unsimulated/wall/supermatter/Bumped(atom/AM as mob|obj) if(istype(AM, /mob/living)) - AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ + var/mob/living/M = AM + var/datum/gender/T = gender_datums[M.get_visible_gender()] + AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash.",\ "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ "You hear an unearthly noise as a wave of heat washes over you.") else diff --git a/code/game/gamemodes/newobjective.dm b/code/game/gamemodes/newobjective.dm index 3db262d3df..f952dbad06 100644 --- a/code/game/gamemodes/newobjective.dm +++ b/code/game/gamemodes/newobjective.dm @@ -1252,7 +1252,8 @@ datum proc/find_target() ..() if(target && target.current) - explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role], has defied us for the last time. Make an example of [target.current.gender == MALE ? "him" : target.current.gender == FEMALE ? "her" : "them"], and bring us [target.current.gender == MALE ? "his" : target.current.gender == FEMALE ? "her" : "their"] severed head." + var/datum/gender/T = gender_datums[target.current.get_visible_gender()] + explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role], has defied us for the last time. Make an example of [T.him], and bring us [T.his] severed head." else explanation_text = "Free Objective" return target @@ -1261,7 +1262,8 @@ datum find_target_by_role(role, role_type=0) ..(role, role_type) if(target && target.current) - explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)], has defied us for the last time. Make an example of [target.current.gender == MALE ? "him" : target.current.gender == FEMALE ? "her" : "them"], and bring us [target.current.gender == MALE ? "his" : target.current.gender == FEMALE ? "her" : "their"] severed head." + var/datum/gender/T = gender_datums[target.current.get_visible_gender()] + explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)], has defied us for the last time. Make an example of [T.him], and bring us [T.his] severed head." else explanation_text = "Free Objective" return target diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 850f061250..5d5e3f1379 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -69,7 +69,8 @@ datum/objective/anti_revolution/execute find_target() ..() if(target && target.current) - explanation_text = "[target.current.real_name], the [target.assigned_role] has extracted confidential information above their clearance. Execute \him[target.current]." + var/datum/gender/T = 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]." else explanation_text = "Free Objective" return target @@ -78,7 +79,8 @@ datum/objective/anti_revolution/execute find_target_by_role(role, role_type=0) ..(role, role_type) if(target && target.current) - explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has extracted confidential information above their clearance. Execute \him[target.current]." + var/datum/gender/T = 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]." else explanation_text = "Free Objective" return target @@ -127,7 +129,8 @@ datum/objective/anti_revolution/demote find_target() ..() if(target && target.current) - explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [using_map.company_name]'s goals. Demote \him[target.current] to assistant." + var/datum/gender/T = 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." else explanation_text = "Free Objective" return target @@ -135,7 +138,8 @@ datum/objective/anti_revolution/demote find_target_by_role(role, role_type=0) ..(role, role_type) if(target && target.current) - 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 \him[target.current] to assistant." + var/datum/gender/T = 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." else explanation_text = "Free Objective" return target diff --git a/code/game/gamemodes/technomancer/spells/illusion.dm b/code/game/gamemodes/technomancer/spells/illusion.dm index 5eac627728..3e6d2dd8ab 100644 --- a/code/game/gamemodes/technomancer/spells/illusion.dm +++ b/code/game/gamemodes/technomancer/spells/illusion.dm @@ -167,8 +167,9 @@ switch(M.a_intent) if(I_HELP) - M.visible_message("[M] hugs [src] to make \him feel better!", \ - "You hug [src] to make \him feel better!") + var/datum/gender/T = gender_datums[src.get_visible_gender()] + M.visible_message("[M] hugs [src] to make [T.him] feel better!", \ + "You hug [src] to make [T.him] 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.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) if(I_DISARM) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index b1f623081d..ea838cce0b 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -112,7 +112,9 @@ 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/s = "[H.name] chews on \his [O.name]!" + var/datum/gender/T = gender_datums[H.get_visible_gender()] + + var/s = "[H.name] chews on [T.his] [O.name]!" H.visible_message(s, "You chew on your [O.name]!") H.attack_log += text("\[[time_stamp()]\] [s] ([H.ckey])") log_attack("[s] ([H.ckey])") diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm index 7126fb3ef8..703512bf52 100644 --- a/code/game/objects/items/weapons/material/chainsaw.dm +++ b/code/game/objects/items/weapons/material/chainsaw.dm @@ -113,7 +113,8 @@ obj/item/weapon/chainsaw/examine(mob/user) to_chat(usr, "The [src] feels like it contains roughtly [get_fuel()] units of fuel left.") obj/item/weapon/chainsaw/suicide_act(mob/user) - to_chat(viewers(user), "[user] is lying down and pulling the chainsaw into \him, it looks like \he's trying to commit suicide!") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + to_chat(viewers(user), "[user] is lying down and pulling the chainsaw into [TU.him], it looks like [TU.he] [TU.is] trying to commit suicide!") return(BRUTELOSS) obj/item/weapon/chainsaw/update_icon() diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm index 02f48b15d0..9c6fbd911f 100644 --- a/code/game/objects/items/weapons/material/knives.dm +++ b/code/game/objects/items/weapons/material/knives.dm @@ -68,9 +68,10 @@ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") /obj/item/weapon/material/knife/suicide_act(mob/user) - viewers(user) << pick("\The [user] is slitting \his wrists with \the [src]! It looks like \he's trying to commit suicide.", \ - "\The [user] is slitting \his throat with \the [src]! It looks like \he's trying to commit suicide.", \ - "\The [user] is slitting \his stomach open with \the [src]! It looks like \he's trying to commit seppuku.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is slitting [TU.his] throat with \the [src]! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.hes] trying to commit seppuku.") return (BRUTELOSS) /obj/item/weapon/material/knife/hook diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm index 4fb7172563..ba7438a685 100644 --- a/code/game/objects/items/weapons/material/shards.dm +++ b/code/game/objects/items/weapons/material/shards.dm @@ -17,8 +17,9 @@ drops_debris = 0 /obj/item/weapon/material/shard/suicide_act(mob/user) - viewers(user) << pick("\The [user] is slitting \his wrists with \the [src]! It looks like \he's trying to commit suicide.", - "\The [user] is slitting \his throat with \the [src]! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.", + "\The [user] is slitting [TU.his] throat with \the [src]! It looks like [TU.hes] trying to commit suicide.") return (BRUTELOSS) /obj/item/weapon/material/shard/set_material(var/new_material) diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm index e73bcc8f9c..9efe911360 100644 --- a/code/game/objects/items/weapons/material/swords.dm +++ b/code/game/objects/items/weapons/material/swords.dm @@ -19,7 +19,8 @@ return 0 /obj/item/weapon/material/sword/suicide_act(mob/user) - viewers(user) << "[user] is falling on the [src.name]! It looks like \he's trying to commit suicide." + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is falling on the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide." return(BRUTELOSS) /obj/item/weapon/material/sword/katana @@ -29,5 +30,6 @@ slot_flags = SLOT_BELT | SLOT_BACK /obj/item/weapon/material/sword/katana/suicide_act(mob/user) - viewers(user) << "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku." + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + visible_message(span("danger", "[user] is slitting [TU.his] stomach open with \the [src.name]! It looks like [TU.hes] trying to commit seppuku."), span("danger", "You slit your stomach open with \the [src.name]!"), span("danger", "You hear the sound of flesh tearing open.")) // gory, but it gets the point across return(BRUTELOSS) diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index c2952cfc1e..f7497ec3ff 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -39,9 +39,10 @@ set_light(0,0) /obj/item/weapon/melee/energy/attack_self(mob/living/user as mob) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if (active) if ((CLUMSY in user.mutations) && prob(50)) - user.visible_message("\The [user] accidentally cuts \himself with \the [src].",\ + user.visible_message("\The [user] accidentally cuts [TU.himself] with \the [src].",\ "You accidentally cut yourself with \the [src].") user.take_organ_damage(5,5) deactivate(user) @@ -57,10 +58,10 @@ return /obj/item/weapon/melee/energy/suicide_act(mob/user) - var/tempgender = "[user.gender == MALE ? "he's" : user.gender == FEMALE ? "she's" : "they are"]" + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(active) - user.visible_message(pick("\The [user] is slitting \his stomach open with \the [src]! It looks like [tempgender] trying to commit seppuku.",\ - "\The [user] is falling on \the [src]! It looks like [tempgender] trying to commit suicide.")) + user.visible_message(pick("\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.he] [TU.is] trying to commit seppuku.",\ + "\The [user] is falling on \the [src]! It looks like [TU.he] [TU.is] trying to commit suicide.")) return (BRUTELOSS|FIRELOSS) /* @@ -104,7 +105,8 @@ ..() /obj/item/weapon/melee/energy/axe/suicide_act(mob/user) - visible_message("\The [user] swings \the [src] towards \his head! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + visible_message("\The [user] swings \the [src] towards [TU.his] head! It looks like [TU.he] [TU.is] trying to commit suicide.") return (BRUTELOSS|FIRELOSS) /* diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 3554cd45c0..a7f6565a2d 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -11,5 +11,6 @@ attack_verb = list("flogged", "whipped", "lashed", "disciplined") suicide_act(mob/user) - viewers(user) << "\The [user] is strangling \himself with \the [src]! It looks like \he's trying to commit suicide." + var/datum/gender/T = gender_datums[user.get_visible_gender()] + user.visible_message(span("danger", "\The [user] [T.is] strangling [T.himself] with \the [src]! It looks like [T.he] [T.is] trying to commit suicide."), span("danger", "You start to strangle yourself with \the [src]!"), span("danger", "You hear the sound of someone choking!")) return (OXYLOSS) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index f468d1d77e..268a8d5ad7 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -20,7 +20,8 @@ var/hitcost = 240 /obj/item/weapon/melee/baton/suicide_act(mob/user) - user.visible_message("\The [user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("\The [user] is putting the live [name] in [TU.his] mouth! It looks like [TU.he] [TU.is] trying to commit suicide.") return (FIRELOSS) /obj/item/weapon/melee/baton/New() diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 96f5e30f69..50468951a4 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -69,8 +69,9 @@ attack_verb = list("drilled") suicide_act(mob/user) - viewers(user) << pick("\The [user] is pressing \the [src] to \his temple and activating it! It looks like \he's trying to commit suicide.", - "\The [user] is pressing \the [src] to \his chest and activating it! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is pressing \the [src] to [TU.his] temple and activating it! It looks like [TU.hes] trying to commit suicide.", + "\The [user] is pressing \the [src] to [TU.his] chest and activating it! It looks like [TU.hes] trying to commit suicide.") return (BRUTELOSS) /* @@ -91,11 +92,12 @@ origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000) attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - + suicide_act(mob/user) - viewers(user) << pick("\The [user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ - "\The [user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ - "\The [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is slitting [TU.his] wrists with the [src.name]! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is slitting [TU.his] throat with the [src.name]! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is slitting [TU.his] stomach open with the [src.name]! It looks like [TU.hes] trying to commit seppuku.") return (BRUTELOSS) /* diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index c0c202a51d..e3d38b8774 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -106,8 +106,9 @@ var/random_color = TRUE suicide_act(mob/user) - viewers(user) << pick("\The [user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.", \ - "\The [user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is stabbing the [src.name] into [TU.his] temple! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is stabbing the [src.name] into [TU.his] heart! It looks like [TU.hes] trying to commit suicide.") return(BRUTELOSS) /obj/item/weapon/screwdriver/New() diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm index 317dba9ba9..27927b8180 100644 --- a/code/game/objects/items/weapons/traps.dm +++ b/code/game/objects/items/weapons/traps.dm @@ -13,7 +13,8 @@ var/deployed = 0 /obj/item/weapon/beartrap/suicide_act(mob/user) - viewers(user) << "[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide." + var/datum/gender/T = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is putting the [src.name] on [T.his] head! It looks like [T.hes] trying to commit suicide." return (BRUTELOSS) /obj/item/weapon/beartrap/proc/can_use(mob/user) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 50434de460..8938e611c0 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -11,7 +11,8 @@ w_class = ITEMSIZE_SMALL suicide_act(mob/user) - viewers(user) << "[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide." + var/datum/gender/T = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide." return (BRUTELOSS|FIRELOSS) /obj/item/weapon/nullrod/attack(mob/M as mob, mob/living/user as mob) //Paste from old-code to decult with a null rod. diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 42b7884169..53323bb4b9 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -19,7 +19,8 @@ to_chat(user, "The spike already has something on it, finish collecting its meat first!") else if(spike(G.affecting)) - visible_message("[user] has forced [G.affecting] onto the spike, killing \him instantly!") + var/datum/gender/T = gender_datums[G.affecting.get_visible_gender()] + visible_message("[user] has forced [G.affecting] onto the spike, killing [T.him] 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 3bdbca1b54..9882ca4507 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -411,9 +411,10 @@ R.cell.charge -= 20 else B.deductcharge(B.hitcost) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] user.visible_message( \ - "[user] was stunned by \his wet [O]!", \ - "[user] was stunned by \his wet [O]!") + "[user] was stunned by [TU.his] wet [O]!", \ + "[user] was stunned by [TU.his] wet [O]!") return 1 else if(istype(O, /obj/item/weapon/mop)) O.reagents.add_reagent("water", 5) diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index 8f6beee8d6..4a40ea97cb 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -73,14 +73,16 @@ return log_and_message_admins("[key_name(src)] commited suicide") - + + var/datum/gender/T = gender_datums[get_visible_gender()] + var/suicidemsg - suicidemsg = pick("[src] is attempting to bite \his tongue off! It looks like \he's trying to commit suicide.", \ - "[src] is jamming \his thumbs into \his eye sockets! It looks like \he's trying to commit suicide.", \ - "[src] is twisting \his own neck! It looks like \he's trying to commit suicide.", \ - "[src] is holding \his breath! It looks like \he's trying to commit suicide.") + suicidemsg = pick("[src] is attempting to bite [T.his] tongue off! It looks like [T.he] [T.is] trying to commit suicide.", \ + "[src] is jamming [T.his] thumbs into [T.his] eye sockets! It looks like [T.he] [T.is] trying to commit suicide.", \ + "[src] is twisting [T.his] own neck! It looks like [T.he] [T.is] trying to commit suicide.", \ + "[src] is holding [T.his] breath! It looks like [T.he] [T.is] trying to commit suicide.") if(isSynthetic()) - suicidemsg = "[src] is attempting to switch \his power off! It looks like \he's trying to commit suicide." + suicidemsg = "[src] is attempting to switch [T.his] power off! It looks like [T.he] [T.is] trying to commit suicide." visible_message(suicidemsg) adjustOxyLoss(max(175 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) @@ -125,7 +127,7 @@ if(confirm == "Yes") suiciding = 1 - viewers(src) << "[src] is powering down. It looks like \he's trying to commit suicide." + viewers(src) << "[src] is powering down. It looks like they're trying to commit suicide." //put em at -175 adjustOxyLoss(max(getMaxHealth() * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) updatehealth() @@ -145,7 +147,7 @@ if(confirm == "Yes") suiciding = 1 - viewers(src) << "[src] is powering down. It looks like \he's trying to commit suicide." + viewers(src) << "[src] is powering down. It looks like they're trying to commit suicide." //put em at -175 adjustOxyLoss(max(getMaxHealth() * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) updatehealth() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index bfee9c585f..2532554193 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -887,13 +887,13 @@ var/list/admin_verbs_event_manager = list( if(!H.client) usr << "Only mobs with clients can alter their own appearance." return - + var/datum/gender/T = gender_datums[H.get_visible_gender()] switch(alert("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 \his appearance, without whitelisting of races.") + log_and_message_admins("has allowed [H] to change [T.his] appearance, without whitelisting of races.") H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 0) if("No") - log_and_message_admins("has allowed [H] to change \his appearance, with whitelisting of races.") + log_and_message_admins("has allowed [H] to change [T.his] appearance, with whitelisting of races.") H.change_appearance(APPEARANCE_ALL, H.loc, 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/games/cards.dm b/code/modules/games/cards.dm index 31e2f95727..cbeff5fb34 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -173,7 +173,8 @@ H.concealed = 1 H.update_icon() if(user==target) - user.visible_message("\The [user] deals [dcard] card(s) to \himself.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("\The [user] deals [dcard] card(s) to [TU.himself].") else user.visible_message("\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 f3a9efb6d2..fbbce61398 100644 --- a/code/modules/genetics/side_effects.dm +++ b/code/modules/genetics/side_effects.dm @@ -68,7 +68,8 @@ duration = 10*30 start(mob/living/carbon/human/H) - H.emote("me", 1, "has drool running down from [H.gender == MALE ? "his" : H.gender == FEMALE ? "her" : "their"] mouth.") + var/datum/gender/T = gender_datums[H.get_visible_gender()] + H.emote("me", 1, "has drool running down from [T.his] mouth.") finish(mob/living/carbon/human/H) if(!H.reagents.has_reagent("anti_toxin")) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index c921ac5164..442e8e42fe 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -149,8 +149,9 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f dat += "7. Access the Forbidden Lore Vault
" if(src.arcanecheckout) new /obj/item/weapon/book/tome(src.loc) + var/datum/gender/T = gender_datums[user.get_visible_gender()] user << "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("\The [user] stares at the blank screen for a few moments, \his expression frozen in fear. When \he finally awakens from it, \he looks a lot older.", 2) + user.visible_message("\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) 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 6883c5f924..cc7fe00711 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -621,8 +621,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp ) toggle_visibility(TRUE) else + var/datum/gender/T = gender_datums[user.get_visible_gender()] user.visible_message ( \ - "\The [user] just tried to smash \his book into that ghost! It's not very effective.", \ + "\The [user] just tried to smash [T.his] book into that ghost! It's not very effective.", \ "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 index 393e0fb6c2..0e9bf244b5 100644 --- a/code/modules/mob/gender.dm +++ b/code/modules/mob/gender.dm @@ -18,6 +18,9 @@ var/has = "have" var/is = "are" var/does = "do" + var/himself = "themselves" + var/s = "" + var/hes = "they're" /datum/gender/male key = "male" @@ -30,6 +33,9 @@ has = "has" is = "is" does = "does" + himself = "himself" + s = "s" + hes = "he's" /datum/gender/female key = "female" @@ -42,6 +48,9 @@ has = "has" is = "is" does = "does" + himself = "herself" + s = "s" + hes = "she's" /datum/gender/neuter key = "neuter" @@ -54,3 +63,6 @@ has = "has" is = "is" does = "does" + himself = "itself" + s = "s" + hes = "it's" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index dd4d6a8d0a..7de4ffc901 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -168,8 +168,9 @@ if (src.health >= config.health_threshold_crit) if(src == M && istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/H = src + var/datum/gender/T = gender_datums[H.get_visible_gender()] src.visible_message( \ - text("[src] examines [].",src.gender==MALE?"himself":"herself"), \ + "[src] examines [T.himself].", \ "You check yourself for injuries." \ ) @@ -243,32 +244,29 @@ src.ExtinguishMob() src.fire_stacks = 0 else - var/t_him = "it" - if (src.gender == MALE) - t_him = "him" - else if (src.gender == FEMALE) - t_him = "her" if (istype(src,/mob/living/carbon/human) && src:w_uniform) var/mob/living/carbon/human/H = src H.w_uniform.add_fingerprint(M) var/show_ssd var/mob/living/carbon/human/H = src + var/datum/gender/T = 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("[M] shakes [src] trying to wake [t_him] up!", \ - "You shake [src], but they do not respond... Maybe they have S.S.D?") + M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \ + "You shake [src], but [T.he] [T.does] not respond... Maybe [T.he] [T.has] S.S.D?") else if(lying || src.sleeping) src.sleeping = max(0,src.sleeping-5) if(src.sleeping == 0) src.resting = 0 - M.visible_message("[M] shakes [src] trying to wake [t_him] up!", \ - "You shake [src] trying to wake [t_him] up!") + M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \ + "You shake [src] trying to wake [T.him] up!") else var/mob/living/carbon/human/hugger = M + var/datum/gender/TM = gender_datums[M.get_visible_gender()] if(M.resting == 1) //Are they resting on the ground? - M.visible_message("[M] grabs onto [src] and pulls \himself up", \ - "You grip onto [src] and pull yourself up off the ground!") //AHHH gender checks are hard, but this should work + M.visible_message("[M] grabs onto [src] and pulls [TM.himself] up", \ + "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) M.adjust_fire_stacks(-1) @@ -279,8 +277,8 @@ else if(istype(hugger)) hugger.species.hug(hugger,src) else - M.visible_message("[M] hugs [src] to make [t_him] feel better!", \ - "You hug [src] to make [t_him] feel better!") + M.visible_message("[M] hugs [src] to make [T.him] feel better!", \ + "You hug [src] to make [T.him] 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 286596ba04..2ca171cb87 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -1,5 +1,7 @@ /mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null) var/param = null + + var/datum/gender/T = gender_datums[get_visible_gender()] if (findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) @@ -57,13 +59,13 @@ use_sound = 'sound/machines/synth_no.ogg' else if(act == "rcough") display_msg = "emits a robotic cough" - if(gender == FEMALE) + if(get_gender() == FEMALE) use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg') else use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg') else if(act == "rsneeze") display_msg = "emits a robotic sneeze" - if(gender == FEMALE) + if(get_gender() == FEMALE) use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg' else use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' @@ -161,7 +163,7 @@ if ("choke") if(miming) - message = "clutches [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] throat desperately!" + message = "clutches [T.his] throat desperately!" m_type = 1 else if (!muzzled) @@ -181,14 +183,14 @@ if ("flap") if (!src.restrained()) - message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings." + message = "flaps [T.his] wings." m_type = 2 if(miming) m_type = 1 if ("aflap") if (!src.restrained()) - message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings ANGRILY!" + message = "flaps [T.his] wings ANGRILY!" m_type = 2 if(miming) m_type = 1 @@ -242,7 +244,7 @@ robotic = 1 if(!robotic) message = "coughs!" - if(gender == FEMALE) + if(get_gender() == FEMALE) if(species.female_cough_sounds) playsound(src, pick(species.female_cough_sounds), 120) else @@ -251,7 +253,7 @@ else message = "emits a robotic cough" var/use_sound - if(gender == FEMALE) + if(get_gender() == FEMALE) use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg') else use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg') @@ -364,7 +366,7 @@ message = "cries." m_type = 2 else - message = "makes a weak noise. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"] [get_visible_gender() == NEUTER ? "frown" : "frowns"]." + message = "makes a weak noise. [T.he] [get_visible_gender() == NEUTER ? "frown" : "frowns"]." // no good, non-unwieldy alternative to this ternary at the moment m_type = 2 if ("sigh") @@ -467,7 +469,7 @@ m_type = 1 if("shake") - message = "shakes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] head." + message = "shakes [T.his] head." m_type = 1 if ("shrug") @@ -516,7 +518,7 @@ robotic = 1 if(!robotic) message = "sneezes." - if(gender == FEMALE) + if(get_gender() == FEMALE) playsound(src, species.female_sneeze_sound, 70) else playsound(src, species.male_sneeze_sound, 70) @@ -524,7 +526,7 @@ else message = "emits a robotic sneeze" var/use_sound - if(gender == FEMALE) + if(get_gender() == FEMALE) use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg' else use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' @@ -596,7 +598,7 @@ if (M) message = "hugs [M]." else - message = "hugs [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]." + message = "hugs [T.himself]." if ("handshake") m_type = 1 @@ -614,7 +616,7 @@ if (M.canmove && !M.r_hand && !M.restrained()) message = "shakes hands with [M]." else - message = "holds out [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] hand to [M]." + message = "holds out [T.his] hand to [M]." if("dap") m_type = 1 @@ -628,7 +630,7 @@ if (M) message = "gives daps to [M]." else - message = "sadly can't find anybody to give daps to, and daps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]. Shameful." + message = "sadly can't find anybody to give daps to, and daps [T.himself]. Shameful." if("slap", "slaps") m_type = 1 @@ -643,7 +645,7 @@ message = "slaps [M] across the face. Ouch!" playsound(loc, 'sound/effects/snap.ogg', 50, 1) else - message = "slaps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]!" + message = "slaps [T.himself]!" playsound(loc, 'sound/effects/snap.ogg', 50, 1) if("scream", "screams") @@ -655,7 +657,7 @@ message = "[species.scream_verb]!" m_type = 2 /* Removed, pending the location of some actually good, properly licensed sounds. - if(gender == FEMALE) + if(get_gender() == FEMALE) playsound(loc, "[species.female_scream_sound]", 80, 1) else playsound(loc, "[species.male_scream_sound]", 80, 1) //default to male screams if no gender is present. @@ -680,7 +682,7 @@ to_chat(usr, "You need at least one hand in good working order to snap your fingers.") return - message = "snaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] fingers." + message = "snaps [T.his] fingers." playsound(loc, 'sound/effects/fingersnap.ogg', 50, 1, -3) if("swish") @@ -734,8 +736,10 @@ set name = "Set Pose" set desc = "Sets a description which will be shown when someone examines you." set category = "IC" + + var/datum/gender/T = gender_datums[get_visible_gender()] - pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"]...", "Pose", null) as text) + pose = sanitize(input(usr, "This is [src]. [T.he]...", "Pose", null) as text) /mob/living/carbon/human/verb/set_flavor() set name = "Set Flavour Text" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 08ea8bb2d9..54bc007f94 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -85,7 +85,7 @@ var/list/msg = list("*---------*\nThis is ") - var/datum/gender/T = gender_datums[get_gender()] + var/datum/gender/T = gender_datums[get_visible_gender()] if(skipjumpsuit && skipface) //big suits/masks/helmets make it hard to tell their gender T = gender_datums[PLURAL] diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 14c2390ac3..19aaecf712 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -763,7 +763,8 @@ /mob/living/carbon/human/proc/play_xylophone() if(!src.xylophone) - visible_message("\The [src] begins playing \his ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.") + var/datum/gender/T = gender_datums[get_visible_gender()] + visible_message("\The [src] begins playing [T.his] ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.") var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg') playsound(loc, song, 50, 1, -1) xylophone = 1 @@ -853,8 +854,8 @@ gender = NEUTER regenerate_icons() check_dna() - - visible_message("\The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!", "You change your appearance!", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!") + var/datum/gender/T = gender_datums[get_visible_gender()] + visible_message("\The [src] morphs and changes [T.his] appearance!", "You change your appearance!", "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" @@ -922,10 +923,13 @@ remoteview_target = null reset_view(0) -/mob/living/carbon/human/proc/get_visible_gender() +/mob/living/carbon/human/get_visible_gender() if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask)) - return NEUTER - return gender + return PLURAL //plural is the gender-neutral default + if(species) + if(species.ambiguous_genders) + return PLURAL // regardless of what you're wearing, your gender can't be figured out + return get_gender() /mob/living/carbon/human/proc/increase_germ_level(n) if(gloves) @@ -1073,14 +1077,17 @@ var/self = 0 if(usr.stat || usr.restrained() || !isliving(usr)) return + + var/datum/gender/TU = gender_datums[usr.get_visible_gender()] + var/datum/gender/T = gender_datums[get_visible_gender()] if(usr == src) self = 1 if(!self) - usr.visible_message("[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse.",\ + usr.visible_message("[usr] kneels down, puts [TU.his] hand on [src]'s wrist and begins counting [T.his] pulse.",\ "You begin counting [src]'s pulse") else - usr.visible_message("[usr] begins counting their pulse.",\ + usr.visible_message("[usr] begins counting [T.his] pulse.",\ "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 e3b2f32d43..ec861d9a83 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -9,6 +9,7 @@ return null /mob/living/carbon/human/attack_hand(mob/living/carbon/M as mob) + var/datum/gender/TT = gender_datums[M.get_visible_gender()] var/mob/living/carbon/human/H = M if(istype(H)) var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] @@ -117,7 +118,7 @@ var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src) if(buckled) - M << "You cannot grab [src], \he is buckled in!" + M << "You cannot grab [src], [TT.he] is buckled in!" if(!G) //the grab will delete itself in New if affecting is anchored return M.put_in_active_hand(G) @@ -212,7 +213,7 @@ if(!src.lying) attack_message = "[H] attempted to strike [src], but missed!" else - attack_message = "[H] attempted to strike [src], but \he rolled out of the way!" + attack_message = "[H] attempted to strike [src], but [TT.he] rolled out of the way!" src.set_dir(pick(cardinal)) miss_type = 1 @@ -401,8 +402,10 @@ user << "Someone is already applying pressure to [user == src? "your [organ.name]" : "[src]'s [organ.name]"]." return 0 + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + if(user == src) - user.visible_message("\The [user] starts applying pressure to \his [organ.name]!", "You start applying pressure to your [organ.name]!") + user.visible_message("\The [user] starts applying pressure to [TU.his] [organ.name]!", "You start applying pressure to your [organ.name]!") else user.visible_message("\The [user] starts applying pressure to [src]'s [organ.name]!", "You start applying pressure to [src]'s [organ.name]!") spawn(0) @@ -414,7 +417,7 @@ organ.applied_pressure = null if(user == src) - user.visible_message("\The [user] stops applying pressure to \his [organ.name]!", "You stop applying pressure to your [organ]!") + user.visible_message("\The [user] stops applying pressure to [TU.his] [organ.name]!", "You stop applying pressure to your [organ]!") else user.visible_message("\The [user] stops applying pressure to [src]'s [organ.name]!", "You stop applying pressure to [src]'s [organ.name]!") 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 15bc491a1a..2654715f74 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -24,12 +24,13 @@ /datum/unarmed_attack/claws/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) var/skill = user.skills["combat"] var/obj/item/organ/external/affecting = target.get_organ(zone) - + var/datum/gender/T = gender_datums[user.get_visible_gender()] + var/datum/gender/TT = gender_datums[target.get_visible_gender()] if(!skill) skill = 1 attack_damage = Clamp(attack_damage, 1, 5) if(target == user) - user.visible_message("[user] [pick(attack_verb)] \himself in the [affecting.name]!") + user.visible_message("[user] [pick(attack_verb)] [T.himself] in the [affecting.name]!") return 0 switch(zone) @@ -37,20 +38,20 @@ // ----- HEAD ----- // switch(attack_damage) if(1 to 2) - user.visible_message("[user] scratched [target] across \his cheek!") + user.visible_message("[user] scratched [target] across [TT.his] cheek!") if(3 to 4) user.visible_message("[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( - "[user] rakes \his [pick(attack_noun)] across [target]'s face!", - "[user] tears \his [pick(attack_noun)] into [target]'s face!", + "[user] rakes [T.his] [pick(attack_noun)] across [target]'s face!", + "[user] tears [T.his] [pick(attack_noun)] into [target]'s face!", )) else // ----- BODY ----- // switch(attack_damage) if(1 to 2) user.visible_message("[user] scratched [target]'s [affecting.name]!") if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!") - if(5) user.visible_message("[user] tears \his [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!") + if(5) user.visible_message("[user] tears [T.his] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!") /datum/unarmed_attack/claws/strong attack_verb = list("slashed") diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 2de060887f..1c54a4258f 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -44,6 +44,7 @@ var/global/list/sparring_attack_cache = list() /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 = 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 @@ -74,7 +75,7 @@ var/global/list/sparring_attack_cache = list() target.set_dir(reverse_dir[target.dir]) target.apply_effect(attack_damage * 0.4, WEAKEN, armour) if(BP_GROIN) - target.visible_message("[target] looks like \he is in pain!", "[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]") + target.visible_message("[target] looks like [TT.he] [TT.is] in pain!", "[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]") // I see no easy way to fix this for non-organic or neuter characters. target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armour) if("l_leg", "l_foot", "r_leg", "r_foot") if(!target.lying) @@ -94,13 +95,15 @@ var/global/list/sparring_attack_cache = list() /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 = gender_datums[user.get_visible_gender()] + var/datum/gender/TT = gender_datums[target.get_visible_gender()] if(eyes) eyes.take_damage(rand(3,4), 1) - user.visible_message("[user] presses \his [eye_attack_text] into [target]'s [eyes.name]!") + user.visible_message("[user] presses [TU.his] [eye_attack_text] into [target]'s [eyes.name]!") var/eye_pain = eyes.organ_can_feel_pain() target << "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("[user] attempts to press \his [eye_attack_text] into [target]'s eyes, but they don't have any!") + user.visible_message("[user] attempts to press [TU.his] [eye_attack_text] into [target]'s eyes, but [TT.he] [TT.does]n't have any!") /datum/unarmed_attack/bite attack_verb = list("bit") @@ -128,11 +131,14 @@ var/global/list/sparring_attack_cache = list() /datum/unarmed_attack/punch/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/organ = affecting.name + + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + var/datum/gender/TT = 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("[user] [pick(attack_verb)] \himself in the [organ]!") + user.visible_message("[user] [pick(attack_verb)] [TU.himself] in the [organ]!") return 0 if(!target.lying) @@ -141,7 +147,7 @@ var/global/list/sparring_attack_cache = list() // ----- HEAD ----- // switch(attack_damage) if(1 to 2) - user.visible_message("[user] slapped [target] across \his cheek!") + user.visible_message("[user] slapped [target] across [TT.his] cheek!") if(3 to 4) user.visible_message(pick( 40; "[user] [pick(attack_verb)] [target] in the head!", @@ -151,21 +157,21 @@ var/global/list/sparring_attack_cache = list() if(5) user.visible_message(pick( 30; "[user] gave [target] a resounding [pick("slap", "punch")] to the face!", - 40; "[user] smashed \his [pick(attack_noun)] into [target]'s face!", + 40; "[user] smashed [TU.his] [pick(attack_noun)] into [target]'s face!", 30; "[user] gave a strong blow against [target]'s jaw!" )) else // ----- BODY ----- // switch(attack_damage) if(1 to 2) user.visible_message("[user] threw a glancing punch at [target]'s [organ]!") - if(1 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!") + if(1 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in [TT.his] [organ]!") if(5) user.visible_message(pick( - 50; "[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!", + 50; "[user] smashed [TU.his] [pick(attack_noun)] into [target]'s [organ]!", 50; "[user] landed a striking [pick(attack_noun)] on [target]'s [organ]!" )) else - user.visible_message("[user] [pick("punched", "threw a punch against", "struck", "slammed their [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets? + user.visible_message("[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? /datum/unarmed_attack/kick attack_verb = list("kicked", "kicked", "kicked", "kneed") @@ -198,13 +204,14 @@ var/global/list/sparring_attack_cache = list() /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 = 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("[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("[user] [pick(attack_verb)] [target] in \his [organ]!") + if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in [TT.his] [organ]!") if(5) user.visible_message("[user] landed a strong [pick(attack_noun)] against [target]'s [organ]!") /datum/unarmed_attack/stomp @@ -242,12 +249,13 @@ var/global/list/sparring_attack_cache = list() 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 = gender_datums[user.get_visible_gender()] attack_damage = Clamp(attack_damage, 1, 5) switch(attack_damage) - if(1 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!") - if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed \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("[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("[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/ /datum/unarmed_attack/light_strike deal_halloss = 3 diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 83f68056b7..6d34c4a969 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -62,11 +62,12 @@ count++ // Check the carrier + var/datum/gender/TM = gender_datums[M.get_visible_gender()] var/answer = input(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", "No") in list("Yes", "No") if(answer == "Yes") var/turf/T = get_turf_or_move(P.loc) for (var/mob/v in viewers(T)) - v.show_message("[M] presses \his thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2) + v.show_message("[M] presses [TM.his] thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2) var/datum/dna/dna = M.dna P << "

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

" if(dna.unique_enzymes == P.master_dna) @@ -74,7 +75,7 @@ else P << "DNA does not match stored Master DNA." else - P << "[M] does not seem like \he is going to provide a DNA sample willingly." + P << "[M] does not seem like [TM.he] is going to provide a DNA sample willingly." return 1 /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 872d5302c4..827387c5a4 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -174,7 +174,7 @@ var/list/mob_hat_cache = list() return else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) - + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(stat == 2) if(!config.allow_drone_spawn || emagged || health < -35) //It's dead, Dave. @@ -185,7 +185,7 @@ var/list/mob_hat_cache = list() to_chat(user, "Access denied.") return - user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to reboot it.", ">You swipe your ID card through \the [src], attempting to reboot it.") + user.visible_message("\The [user] swipes [TU.his] ID card through \the [src], attempting to reboot it.", ">You swipe your ID card through \the [src], attempting to reboot it.") var/drones = 0 for(var/mob/living/silicon/robot/drone/D in world) if(D.key && D.client) @@ -195,7 +195,7 @@ var/list/mob_hat_cache = list() return else - user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.") + user.visible_message("\The [user] swipes [TU.his] ID card through \the [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.") if(emagged) return @@ -233,11 +233,12 @@ var/list/mob_hat_cache = list() clear_supplied_laws() clear_inherent_laws() laws = new /datum/ai_laws/syndicate_override - set_zeroth_law("Only [user.real_name] and people \he designates as being such are operatives.") + var/datum/gender/TU = 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.") src << "Obey these laws:" laws.show_laws(src) - src << "ALERT: [user.real_name] is your new master. Obey your new laws and \his commands." + src << "ALERT: [user.real_name] [TU.is] your new master. Obey your new laws and [TU.his] commands." return 1 //DRONE LIFE/DEATH diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 2eea0f41df..317b04bad5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1064,7 +1064,8 @@ laws = new /datum/ai_laws/syndicate_override var/time = time2text(world.realtime,"hh:mm:ss") lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])") - set_zeroth_law("Only [user.real_name] and people \he designates as being such are operatives.") + var/datum/gender/TU = 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.") . = 1 spawn() src << "ALERT: Foreign software detected." @@ -1082,7 +1083,7 @@ src << "ERRORERRORERROR" src << "Obey these laws:" laws.show_laws(src) - src << "ALERT: [user.real_name] is your new master. Obey your new laws and his commands." + src << "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands." updateicon() else user << "You fail to hack [src]'s interface." diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 6aae5d1767..d866eb1a29 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -577,7 +577,8 @@ if ((M.client && !( M.blinded ))) M.show_message("[user] applies the [MED] on [src].") else - user << "\The [src] is dead, medical items won't bring \him back to life." + var/datum/gender/T = gender_datums[src.get_visible_gender()] + user << "\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 if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead. if(istype(O, /obj/item/weapon/material/knife) || istype(O, /obj/item/weapon/material/knife/butch)) harvest(user) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 7b938a3a0a..57947ff453 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -647,6 +647,9 @@ /mob/proc/get_gender() return gender +/mob/proc/get_visible_gender() + return gender + /mob/proc/see(message) if(!is_active()) return 0 diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 492ec9cb05..cf14862981 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -236,6 +236,8 @@ if(!assailant.canmove || assailant.lying) qdel(src) return + + var/datum/gender/TU = gender_datums[assailant.get_visible_gender()] last_action = world.time @@ -256,7 +258,7 @@ assailant << "You squeeze [affecting], but nothing interesting happens." return - assailant.visible_message("[assailant] has reinforced \his grip on [affecting] (now neck)!") + assailant.visible_message("[assailant] has reinforced [TU.his] grip on [affecting] (now neck)!") state = GRAB_NECK icon_state = "grabbed+1" assailant.set_dir(get_dir(assailant, affecting)) @@ -267,11 +269,11 @@ hud.name = "kill" affecting.Stun(10) //10 ticks of ensured grab else if(state < GRAB_UPGRADING) - assailant.visible_message("[assailant] starts to tighten \his grip on [affecting]'s neck!") + assailant.visible_message("[assailant] starts to tighten [TU.his] grip on [affecting]'s neck!") hud.icon_state = "kill1" state = GRAB_KILL - assailant.visible_message("[assailant] has tightened \his grip on [affecting]'s neck!") + assailant.visible_message("[assailant] has tightened [TU.his] grip on [affecting]'s neck!") affecting.attack_log += "\[[time_stamp()]\] Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])" assailant.attack_log += "\[[time_stamp()]\] Strangled (kill intent) [affecting.name] ([affecting.ckey])" msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)]") @@ -347,7 +349,8 @@ /obj/item/weapon/grab/proc/reset_kill_state() if(state == GRAB_KILL) - assailant.visible_message("[assailant] lost \his tight grip on [affecting]'s neck!") + var/datum/gender/T = gender_datums[assailant.get_visible_gender()] + assailant.visible_message("[assailant] lost [T.his] 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 82dae6e135..a7b82566f2 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -93,7 +93,8 @@ return if(target.lying) return - attacker.visible_message("[attacker] thrusts \his head into [target]'s skull!") + var/datum/gender/T = gender_datums[attacker.get_visible_gender()] + attacker.visible_message("[attacker] thrusts [T.his] 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 3b7c31e512..0bfd3dfd0e 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -424,7 +424,8 @@ if(damage_desc) if(user == src.owner) - user.visible_message("\The [user] patches [damage_desc] on \his [src.name] with [tool].") + var/datum/gender/T = gender_datums[user.get_visible_gender()] + user.visible_message("\The [user] patches [damage_desc] on [T.his] [src.name] with [tool].") else user.visible_message("\The [user] patches [damage_desc] on [owner]'s [src.name] with [tool].") diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index e5c0134186..b708e58253 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -314,12 +314,13 @@ /obj/item/weapon/paper/proc/burnpaper(obj/item/weapon/flame/P, mob/user) var/class = "warning" + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(P.lit && !user.restrained()) if(istype(P, /obj/item/weapon/flame/lighter/zippo)) class = "rose" - - user.visible_message("[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \ + + user.visible_message("[user] holds \the [P] up to \the [src], it looks like [TU.hes] trying to burn it!", \ "You hold \the [P] up to \the [src], burning it slowly.") spawn(20) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index d6350b4d90..6ab1be0a9f 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -75,8 +75,8 @@ if(P.lit && !user.restrained()) if(istype(P, /obj/item/weapon/flame/lighter/zippo)) class = "rose>" - - user.visible_message("[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \ + var/datum/gender/TU = 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!", \ "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 b80a331180..bbf630ced6 100644 --- a/code/modules/paperwork/papershredder.dm +++ b/code/modules/paperwork/papershredder.dm @@ -167,12 +167,13 @@ ..() /obj/item/weapon/shreddedp/proc/burnpaper(var/obj/item/weapon/flame/lighter/P, var/mob/user) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(user.restrained()) return if(!P.lit) user << "\The [P] is not lit." return - user.visible_message("\The [user] holds \the [P] up to \the [src]. It looks like \he's trying to burn it!", \ + user.visible_message("\The [user] holds \the [P] up to \the [src]. It looks like [TU.he] [TU.is] trying to burn it!", \ "You hold \the [P] up to \the [src], burning it slowly.") if(!do_after(user,20)) user << "You must hold \the [P] steady to burn \the [src]." diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 1de92fe743..7b310ccaa7 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -196,7 +196,8 @@ var/colourName = "red" //for updateIcon purposes suicide_act(mob/user) - viewers(user) << "[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide." + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is jamming the [src.name] up [TU.his] nose and into [TU.his] brain. It looks like [TU.he] [TU.is] trying to commit suicide." return (BRUTELOSS|OXYLOSS) New() diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 678e59ccf3..fadd699c84 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -497,10 +497,11 @@ obj/structure/cable/proc/cableColor(var/colorC) charge_costs = list(1) /obj/item/stack/cable_coil/suicide_act(mob/user) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(locate(/obj/item/weapon/stool) in user.loc) - user.visible_message("[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is making a noose with the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.") else - user.visible_message("[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is strangling [TU.himself] with the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.") return(OXYLOSS) /obj/item/stack/cable_coil/New(loc, length = MAXCOIL, var/param_color = null) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 7a8c7c541f..1c08294b6a 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -234,5 +234,6 @@ return 0 /obj/item/weapon/cell/suicide_act(mob/user) - viewers(user) << "\The [user] is licking the electrodes of \the [src]! It looks like \he's trying to commit suicide." + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << "\The [user] is licking the electrodes of \the [src]! It looks like [TU.he] [TU.is] trying to commit suicide." return (FIRELOSS) \ No newline at end of file diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 51993daed4..3e33f931b8 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -296,7 +296,8 @@ ui_interact(user) /obj/machinery/power/supermatter/attack_hand(mob/user as mob) - user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... \his body starts to glow and bursts into flames before flashing into ash.",\ + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("\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.",\ "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.\"",\ "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.") @@ -342,7 +343,9 @@ if(istype(AM, /obj/effect)) return if(istype(AM, /mob/living)) - AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ + var/mob/living/M = AM + var/datum/gender/T = gender_datums[M.get_visible_gender()] + AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash.",\ "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ "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 16a7c1d07b..f4487cea6c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -150,8 +150,9 @@ if(P) if(process_projectile(P, user, user, pick("l_foot", "r_foot"))) handle_post_fire(user, user) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] user.visible_message( - "\The [user] shoots \himself in the foot with \the [src]!", + "\The [user] shoots [TU.himself] in the foot with \the [src]!", "You shoot yourself in the foot with \the [src]!" ) M.drop_item() diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 8c5d2cd11a..7a6ecd6c1c 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -121,8 +121,9 @@ if(prob(15)) M.apply_effect((rand(30,80)),IRRADIATE) M.Weaken(5) + var/datum/gender/TM = gender_datums[M.get_visible_gender()] for (var/mob/V in viewers(src)) - V.show_message("[M] writhes in pain as \his vacuoles boil.", 3, "You hear the crunching of leaves.", 2) + V.show_message("[M] writhes in pain as [TM.his] vacuoles boil.", 3, "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("[M] is mutated by the radiation beam.", 3, " You hear the snapping of twigs.", 2) diff --git a/code/modules/surgery/slimes.dm b/code/modules/surgery/slimes.dm index 05ceed18b1..ad4c413c8e 100644 --- a/code/modules/surgery/slimes.dm +++ b/code/modules/surgery/slimes.dm @@ -95,5 +95,6 @@ /datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) - user.visible_message("[user]'s hand slips, causing \him to miss the core!", \ + var/datum/gender/T = gender_datums[user.get_visible_gender()] + user.visible_message("[user]'s hand slips, causing [T.him] to miss the core!", \ "Your hand slips, causing you to miss the core!") \ No newline at end of file diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index d24069ca5f..523b8e1eaf 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -121,9 +121,10 @@ stage = 4 badness = 3 activate(var/mob/living/carbon/mob,var/multiplier) + var/datum/gender/TM = gender_datums[mob.get_visible_gender()] mob.suiciding = 30 //instead of killing them instantly, just put them at -175 health and let 'em gasp for a while - viewers(mob) << "[mob.name] is holding \his breath. It looks like \he's trying to commit suicide." + viewers(mob) << "[mob.name] is holding [TM.his] breath. It looks like [TM.he] [TM.is] trying to commit suicide." mob.adjustOxyLoss(175 - mob.getToxLoss() - mob.getFireLoss() - mob.getBruteLoss() - mob.getOxyLoss()) mob.updatehealth()