Merge pull request #20698 from ChangelingRain/imtransandthisisapresenttoyall

Adds some pronoun helpers
This commit is contained in:
Cheridan
2016-09-29 12:41:27 -05:00
committed by GitHub
25 changed files with 299 additions and 119 deletions
+29 -22
View File
@@ -1,78 +1,85 @@
/mob/living/carbon/examine(mob/user)
var/t_He = they_pronoun(TRUE)
var/t_His = their_pronoun(TRUE)
var/t_his = their_pronoun()
var/t_him = them_pronoun()
var/t_has = get_has()
var/t_is = get_is()
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
if (handcuffed)
msg += "<span class='warning'>It is \icon[src.handcuffed] handcuffed!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] \icon[src.handcuffed] handcuffed!</span>\n"
if (head)
msg += "It has \icon[src.head] \a [src.head] on its head. \n"
msg += "[t_He] [t_is] wearing \icon[src.head] \a [src.head] on [t_his] head. \n"
if (wear_mask)
msg += "It has \icon[src.wear_mask] \a [src.wear_mask] on its face.\n"
msg += "[t_He] [t_is] wearing \icon[src.wear_mask] \a [src.wear_mask] on [t_his] face.\n"
for(var/obj/item/I in held_items)
if(!(I.flags & ABSTRACT))
if(I.blood_DNA)
msg += "<span class='warning'>It has \icon[I] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] holding \icon[I] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
else
msg += "It has \icon[I] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n"
msg += "[t_He] [t_is] holding \icon[I] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n"
if (back)
msg += "It has \icon[src.back] \a [src.back] on its back.\n"
msg += "[t_He] [t_has] \icon[src.back] \a [src.back] on [t_his] back.\n"
var/appears_dead = 0
if (stat == DEAD)
appears_dead = 1
if(getorgan(/obj/item/organ/brain))
msg += "<span class='deadsay'>It is limp and unresponsive, with no signs of life.</span>\n"
msg += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive, with no signs of life.</span>\n"
else if(get_bodypart("head"))
msg += "<span class='deadsay'>It appears that it's brain is missing...</span>\n"
msg += "<span class='deadsay'>[t_He] appears that [t_his] brain is missing...</span>\n"
var/list/missing = get_missing_limbs()
for(var/t in missing)
if(t=="head")
msg += "<span class='deadsay'><B>Its [parse_zone(t)] is missing!</B></span>\n"
msg += "<span class='deadsay'><B>[t_His] [parse_zone(t)] is missing!</B></span>\n"
continue
msg += "<<span class='warning'><B>Its [parse_zone(t)] is missing!</B></span>\n"
msg += "<<span class='warning'><B>[t_His] [parse_zone(t)] is missing!</B></span>\n"
msg += "<span class='warning'>"
var/temp = getBruteLoss()
if(temp)
if (temp < 30)
msg += "It has minor bruising.\n"
msg += "[t_He] [t_has] minor bruising.\n"
else
msg += "<B>It has severe bruising!</B>\n"
msg += "<B>[t_He] [t_has] severe bruising!</B>\n"
temp = getFireLoss()
if(temp)
if (temp < 30)
msg += "It has minor burns.\n"
msg += "[t_He] [t_has] minor burns.\n"
else
msg += "<B>It has severe burns!</B>\n"
msg += "<B>[t_He] [t_has] severe burns!</B>\n"
temp = getCloneLoss()
if(temp)
if(getCloneLoss() < 30)
msg += "It is slightly deformed.\n"
msg += "[t_He] [t_has] slightly deformed.\n"
else
msg += "<b>It is severely deformed.</b>\n"
msg += "<b>[t_He] [t_has] severely deformed.</b>\n"
if(getBrainLoss() > 60)
msg += "It seems to be clumsy and unable to think.\n"
msg += "[t_He] seems to be clumsy and unable to think.\n"
if(fire_stacks > 0)
msg += "It's covered in something flammable.\n"
msg += "[t_He] [t_is] covered in something flammable.\n"
if(fire_stacks < 0)
msg += "It's soaked in water.\n"
msg += "[t_He] [t_is] looks a little soaked.\n"
if(pulledby && pulledby.grab_state)
msg += "It's restrained by [pulledby]'s grip.\n"
msg += "[t_He] [t_is] restrained by [pulledby]'s grip.\n"
msg += "</span>"
if(!appears_dead)
if(stat == UNCONSCIOUS)
msg += "It isn't responding to anything around it; it seems to be asleep.\n"
msg += "[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep.\n"
if(digitalcamo)
msg += "It is moving its body in an unnatural and blatantly unsimian manner.\n"
msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner.\n"
+14 -33
View File
@@ -1,36 +1,17 @@
/mob/living/carbon/human/examine(mob/user)
//this is very slightly better than it was because you can use it more places. still can't do \his[src] though.
var/t_He = they_pronoun(TRUE)
var/t_His = their_pronoun(TRUE)
var/t_his = their_pronoun()
var/t_him = them_pronoun()
var/t_has = get_has()
var/t_is = get_is()
var/msg = "<span class='info'>*---------*\nThis is <EM>[src.name]</EM>!\n"
var/list/obscured = check_obscured_slots()
var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
// crappy hacks because you can't do \his[src] etc. I'm sorry this proc is so unreadable, blame the text macros :<
var/t_He = "It" //capitalised for use at the start of each line.
var/t_his = "its"
var/t_him = "it"
var/t_has = "has"
var/t_is = "is"
var/msg = "<span class='info'>*---------*\nThis is "
if( (slot_w_uniform in obscured) && skipface ) //big suits/masks/helmets make it hard to tell their gender
t_He = "They"
t_his = "their"
t_him = "them"
t_has = "have"
t_is = "are"
else
switch(gender)
if(MALE)
t_He = "He"
t_his = "his"
t_him = "him"
if(FEMALE)
t_He = "She"
t_his = "her"
t_him = "her"
msg += "<EM>[src.name]</EM>!\n"
//uniform
if(w_uniform && !(slot_w_uniform in obscured))
//Ties
@@ -163,7 +144,7 @@
if(suiciding)
msg += "<span class='warning'>[t_He] appears to have commited suicide... there is no hope of recovery.</span>\n"
if(hellbound)
msg += "<span class='warning'>[t_his] soul seems to have been ripped out of [t_his] body. Revival is impossible.</span>\n"
msg += "<span class='warning'>[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible.</span>\n"
msg += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive; there are no signs of life"
if(!key)
var/foundghost = 0
@@ -196,7 +177,7 @@
var/r_limbs_missing = 0
for(var/t in missing)
if(t=="head")
msg += "<span class='deadsay'><B>[capitalize(t_his)] [parse_zone(t)] is missing!</B><span class='warning'>\n"
msg += "<span class='deadsay'><B>[t_His] [parse_zone(t)] is missing!</B><span class='warning'>\n"
continue
if(t == "l_arm" || t == "l_leg")
l_limbs_missing++
@@ -267,9 +248,9 @@
if(islist(stun_absorption))
for(var/i in stun_absorption)
if(stun_absorption[i]["end_time"] > world.time && stun_absorption[i]["examine_message"])
msg += "[t_He][stun_absorption[i]["examine_message"]]\n"
msg += "[t_He] [t_is][stun_absorption[i]["examine_message"]]\n"
if(drunkenness && !skipface && stat != DEAD) //Drunkenness
if(drunkenness && !skipface && !appears_dead) //Drunkenness
switch(drunkenness)
if(11 to 21)
msg += "[t_He] [t_is] slightly flushed.\n"
@@ -305,7 +286,7 @@
if(digitalcamo)
msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n"
if(istype(user, /mob/living/carbon/human))
if(ishuman(user))
var/mob/living/carbon/human/H = user
var/obj/item/organ/cyberimp/eyes/hud/CIH = H.getorgan(/obj/item/organ/cyberimp/eyes/hud)
if(istype(H.glasses, /obj/item/clothing/glasses/hud) || CIH)
@@ -496,7 +496,7 @@
. = 0
if(!. && error_msg && user)
// Might need re-wording.
user << "<span class='alert'>There is no exposed flesh or thin material [above_neck(target_zone) ? "on their head" : "on their body"].</span>"
user << "<span class='alert'>There is no exposed flesh or thin material [above_neck(target_zone) ? "on [their_pronoun()] head" : "on [their_pronoun()] body"].</span>"
/mob/living/carbon/human/proc/check_obscured_slots()
var/list/obscured = list()
@@ -521,7 +521,7 @@
if(wear_mask.flags_inv & HIDEEYES)
obscured |= slot_glasses
if(obscured.len > 0)
if(obscured.len)
return obscured
else
return null
@@ -630,7 +630,7 @@
src << "<span class='warning'>Remove your mask first!</span>"
return 0
if(C.is_mouth_covered())
src << "<span class='warning'>Remove their mask first!</span>"
src << "<span class='warning'>Remove [their_pronoun()] mask first!</span>"
return 0
if(C.cpr_time < world.time + 30)
@@ -889,7 +889,7 @@
if(blood && (NOBLOOD in dna.species.specflags))
if(message)
visible_message("<span class='warning'>[src] dry heaves!</span>", \
"<span class='userdanger'>You try to throw up, but there's nothing your stomach!</span>")
"<span class='userdanger'>You try to throw up, but there's nothing in your stomach!</span>")
if(stun)
Weaken(10)
return 1
@@ -59,13 +59,13 @@
watching -= eavesdropping
var/rendered
whispers = critical ? "whispers something in their final breath." : "whispers something."
whispers = critical ? "whispers something in [their_pronoun()] final breath." : "whispers something."
rendered = "<span class='game say'><span class='name'>[src.name]</span> [whispers]</span>"
for(var/mob/M in watching)
M.show_message(rendered, 2)
var/spans = list(SPAN_ITALICS)
whispers = critical ? "whispers in their final breath" : "whispers"
whispers = critical ? "whispers in [their_pronoun()] final breath" : "whispers"
rendered = "<span class='game say'><span class='name'>[GetVoice()]</span>[alt_name] [whispers], <span class='message'>\"[attach_spans(message, spans)]\"</span></span>"
for(var/atom/movable/AM in listening)
@@ -38,13 +38,16 @@
AddSpell(new spell(null))
/mob/living/simple_animal/hostile/construct/examine(mob/user)
var/msg = "<span cass='info'>*---------*\nThis is \icon[src] \a <b>[src]</b>!\n"
if (src.health < src.maxHealth)
var/t_He = they_pronoun(TRUE)
var/plurality = (gender == PLURAL)
var/msg = "<span class='cult'>*---------*\nThis is \icon[src] \a <b>[src]</b>!\n"
msg += "[desc]\n"
if(health < maxHealth)
msg += "<span class='warning'>"
if (src.health >= src.maxHealth/2)
msg += "It looks slightly dented.\n"
msg += "[t_He] look[plurality ? "":"s"] slightly dented.\n"
else
msg += "<b>It looks severely dented!</b>\n"
msg += "<b>[t_He] look[plurality ? "":"s"] severely dented!</b>\n"
msg += "</span>"
msg += "*---------*</span>"
@@ -59,11 +62,11 @@
M.visible_message("<span class='danger'>[M] repairs some of \the <b>[src]'s</b> dents.</span>", \
"<span class='cult'>You repair some of <b>[src]'s</b> dents, leaving <b>[src]</b> at <b>[health]/[maxHealth]</b> health.</span>")
else
M.visible_message("<span class='danger'>[M] repairs some of its own dents.</span>", \
M.visible_message("<span class='danger'>[M] repairs some of [their_pronoun()] own dents.</span>", \
"<span class='cult'>You repair some of your own dents, leaving you at <b>[M.health]/[M.maxHealth]</b> health.</span>")
else
if(src != M)
M << "<span class='cult'>You cannot repair <b>[src]'s</b> dents, as it has none!</span>"
M << "<span class='cult'>You cannot repair <b>[src]'s</b> dents, as [they_pronoun()] [get_has()] none!</span>"
else
M << "<span class='cult'>You cannot repair your own dents, as you have none!</span>"
else if(src != M)
@@ -84,7 +84,7 @@
user << "<span class='notice'>You start to tighten loose screws on [src]...</span>"
if(do_after(user,80/I.toolspeed,target=user))
adjustBruteLoss(-getBruteLoss())
visible_message("<span class='notice'>[user] tightens [src == user ? "their" : "[src]'s"] loose screws!</span>", "<span class='notice'>You tighten [src == user ? "your" : "[src]'s"] loose screws.</span>")
visible_message("<span class='notice'>[user] tightens [src == user ? "[user.their_pronoun()]" : "[src]'s"] loose screws!</span>", "<span class='notice'>You tighten [src == user ? "your" : "[src]'s"] loose screws.</span>")
else
user << "<span class='warning'>You need to remain still to tighten [src]'s screws!</span>"
else
@@ -94,7 +94,7 @@
A.melee_damage_lower += 5
A.melee_damage_upper += 5
A.update_icons()
user << "<span class='info'>You strap the armor plating to [A] and sharpen their claws with the nail filer. This was a great idea.</span>"
user << "<span class='info'>You strap the armor plating to [A] and sharpen [A.their_pronoun()] claws with the nail filer. This was a great idea.</span>"
qdel(src)
@@ -2,7 +2,7 @@
name = "Shade"
real_name = "Shade"
desc = "A bound spirit"
gender = NEUTER
gender = PLURAL
icon = 'icons/mob/mob.dmi'
icon_state = "shade"
icon_living = "shade"
@@ -29,7 +29,10 @@
flying = 1
loot = list(/obj/item/weapon/ectoplasm)
del_on_death = 1
deathmessage = "lets out a contented sigh as their form unwinds."
/mob/living/simple_animal/shade/death()
deathmessage = "lets out a contented sigh as [their_pronoun()] form unwinds."
..()
/mob/living/simple_animal/shade/canSuicide()
if(istype(loc, /obj/item/device/soulstone)) //do not suicide inside the soulstone
@@ -47,7 +50,7 @@
M.visible_message("<span class='danger'>[M] heals \the <b>[src]</b>.</span>", \
"<span class='cult'>You heal <b>[src]</b>, leaving <b>[src]</b> at <b>[health]/[maxHealth]</b> health.</span>")
else
M << "<span class='cult'>You cannot heal <b>[src]</b>, as it is unharmed!</span>"
M << "<span class='cult'>You cannot heal <b>[src]</b>, as [they_pronoun()] [get_is()] unharmed!</span>"
else if(src != M)
..()
+1 -1
View File
@@ -281,5 +281,5 @@ They *could* go in their appropriate files, but this is supposed to be modular
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, loc)
playsound(src, "sparks", 50, 1)
visible_message("<span class='danger'>[H] electrocutes [src] with their touch!</span>", "<span class='userdanger'>[H] electrocutes you with their touch!</span>")
visible_message("<span class='danger'>[H] electrocutes [src] with [H.their_pronoun()] touch!</span>", "<span class='userdanger'>[H] electrocutes you with [H.their_pronoun()] touch!</span>")
electrocute_act(25, H)
+1 -1
View File
@@ -172,7 +172,7 @@
/obj/item/weapon/paper/contract/infernal/attack(mob/M, mob/living/user)
add_fingerprint(user)
if(M == user && target == M.mind && M.mind.soulOwner != owner && attempt_signature(user, 1))
user.visible_message("<span class='danger'>[user] slices their wrist with [src], and scrawls their name in blood.</span>", "<span class='danger'>You slice your wrist open and scrawl your name in blood.</span>")
user.visible_message("<span class='danger'>[user] slices [user.their_pronoun()] wrist with [src], and scrawls [user.their_pronoun()] name in blood.</span>", "<span class='danger'>You slice your wrist open and scrawl your name in blood.</span>")
user.blood_volume = max(user.blood_volume - 100, 0)
else
return ..()
+1 -1
View File
@@ -389,7 +389,7 @@ obj/item/weapon/gun/proc/newshot()
return
if(user == target)
target.visible_message("<span class='warning'>[user] sticks [src] in their mouth, ready to pull the trigger...</span>", \
target.visible_message("<span class='warning'>[user] sticks [src] in [user.their_pronoun()] mouth, ready to pull the trigger...</span>", \
"<span class='userdanger'>You stick [src] in your mouth, ready to pull the trigger...</span>")
else
target.visible_message("<span class='warning'>[user] points [src] at [target]'s head, ready to pull the trigger...</span>", \
@@ -346,9 +346,9 @@
N.regenerate_icons()
if(prob(7))
if(N.w_uniform)
M.visible_message(pick("<b>[M]</b>'s collar pops up without warning.</span>", "<b>[M]</b> flexes their arms."))
M.visible_message(pick("<b>[M]</b>'s collar pops up without warning.</span>", "<b>[M]</b> flexes [M.their_pronoun()] arms."))
else
M.visible_message("<b>[M]</b> flexes their arms.")
M.visible_message("<b>[M]</b> [M.their_pronoun()] their arms.")
if(prob(10))
M.say(pick("Check these sweet biceps bro!", "Deal with it.", "CHUG! CHUG! CHUG! CHUG!", "Winning!", "NERDS!", "My name is John and I hate every single one of you."))
..()
@@ -370,7 +370,7 @@
/datum/reagent/unstableslimetoxin/on_mob_life(mob/living/carbon/human/H)
..()
H << "<span class='warning'><b>You crumple in agony as your flesh wildly morphs into new forms!</b></span>"
H.visible_message("<b>[H]</b> falls to the ground and screams as their skin bubbles and froths!") //'froths' sounds painful when used with SKIN.
H.visible_message("<b>[H]</b> falls to the ground and screams as [H.their_pronoun()] skin bubbles and froths!") //'froths' sounds painful when used with SKIN.
H.Weaken(3, 0)
spawn(30)
if(!H || qdeleted(H))
@@ -525,7 +525,7 @@
if(!H.heart_attack)
H.heart_attack = 1 // rip in pepperoni
if(H.stat == CONSCIOUS)
H.visible_message("<span class='userdanger'>[H] clutches at their chest as if their heart stopped!</span>")
H.visible_message("<span class='userdanger'>[H] clutches at [H.their_pronoun()] chest as if [H.their_pronoun()] heart stopped!</span>")
else
H.losebreath += 10
H.adjustOxyLoss(rand(5,25), 0)
+1 -1
View File
@@ -62,7 +62,7 @@
else if(C.is_mouth_covered(mask_only = 1))
covered = "mask"
if(covered)
var/who = (isnull(user) || eater == user) ? "your" : "their"
var/who = (isnull(user) || eater == user) ? "your" : "[eater.their_pronoun()]"
user << "<span class='warning'>You have to remove [who] [covered] first!</span>"
return 0
return 1
@@ -194,7 +194,7 @@
SM.mind.enslave_mind_to_creator(user)
SM.sentience_act()
SM << "<span class='warning'>All at once it makes sense: you know what you are and who you are! Self awareness is yours!</span>"
SM << "<span class='userdanger'>You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost.</span>"
SM << "<span class='userdanger'>You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist [user.them_pronoun()] in completing [user.their_pronoun()] goals at any cost.</span>"
user << "<span class='notice'>[SM] accepts the potion and suddenly becomes attentive and aware. It worked!</span>"
qdel(src)
else
@@ -20,7 +20,7 @@
user << "<span class='userdanger'>No... just one more try...</span>"
user.gib()
else
user.visible_message("<span class='warning'>[user], pulls [src]'s lever with a glint in their eyes!</span>", "<span class='warning'>You feel a draining as you pull the lever, but you \
user.visible_message("<span class='warning'>[user] pulls [src]'s lever with a glint in [user.their_pronoun()] eyes!</span>", "<span class='warning'>You feel a draining as you pull the lever, but you \
know it'll be worth it.</span>")
icon_state = "slots2"
playsound(src, 'sound/lavaland/cursed_slot_machine.ogg', 50, 0)
@@ -97,7 +97,7 @@
icon_state = "magic_mirror"
/obj/structure/mirror/magic/pride/curse(mob/user)
user.visible_message("<span class='danger'><B>The ground splits beneath [user] as their hand leaves the mirror!</B></span>", \
user.visible_message("<span class='danger'><B>The ground splits beneath [user] as [user.their_pronoun()] hand leaves the mirror!</B></span>", \
"<span class='notice'>Perfect. Much better! Now <i>nobody</i> will be able to resist yo-</span>")
var/turf/T = get_turf(user)
T.ChangeTurf(/turf/open/chasm/straight_down)
+2 -5
View File
@@ -52,15 +52,12 @@
owner.revive(full_heal = TRUE)
switch(old_stat)
if(DEAD, UNCONSCIOUS)
owner.visible_message("<span class='danger'>[owner] staggers to \
their feet!</span>")
owner.visible_message("<span class='danger'>[owner] staggers to [owner.their_pronoun()] feet!</span>")
owner << "<span class='danger'>You stagger to your feet!</span>"
// Conscious conversions will generally only happen for an event
// or for a converts_living=TRUE infection
if(CONSCIOUS)
owner.visible_message("<span class='danger'>[owner] suddenly \
convulses, as they gain a ravenous hunger in their \
eyes!</span>",
owner.visible_message("<span class='danger'>[owner] suddenly convulses, as [owner.they_pronoun()] gain a ravenous hunger in [owner.their_pronoun()] eyes!</span>",
"<span class='alien'>You HUNGER!</span>")
playsound(owner.loc, 'sound/hallucinations/growl3.ogg', 50, 1)
owner.do_jitter_animation(living_transformation_time)