Replaces \gender to fix metagaming issues. (#9745)

This commit is contained in:
MarinaGryphon
2020-08-25 11:46:34 +02:00
committed by GitHub
parent 9bebe3269c
commit 87e071fce5
63 changed files with 314 additions and 338 deletions
+2 -2
View File
@@ -929,10 +929,10 @@ var/list/admin_verbs_cciaa = list(
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 [H.get_pronoun("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 [H.get_pronoun("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!
@@ -711,7 +711,7 @@
// Combat type actuators are better, they allow you to jump instantly onto
// a ledge. Regular actuators make you have to climb the rest of the way.
if (!combatType)
H.visible_message(SPAN_NOTICE("\The [H] starts pulling \himself up onto the [valid_climbable]."), SPAN_NOTICE("You start pulling yourself up onto \the [valid_climbable]."))
H.visible_message(SPAN_NOTICE("\The [H] starts pulling [H.get_pronoun("himself")] up onto the [valid_climbable]."), SPAN_NOTICE("You start pulling yourself up onto \the [valid_climbable]."))
if (!do_after(H, 4 SECONDS, use_user_turf = TRUE))
H.visible_message(SPAN_WARNING("\The [H] is interrupted and falls!"), SPAN_DANGER("You are interrupted and fall back down!"))
@@ -818,4 +818,4 @@ var/global/list/lattice_users = list()
var/mob/living/carbon/human/H = holder.wearer
to_chat(H, SPAN_NOTICE("Neural lattice disengaged. Pain receptors restored."))
lattice_users.Remove(H)
lattice_users.Remove(H)
+2 -2
View File
@@ -1040,7 +1040,7 @@ All custom items with worn sprites must follow the contained sprite system: http
if (use_check_and_message(usr)) return
if(!lit)
usr.visible_message("<span class='notice'>With a snap of \the [usr]'s fingers, a small lighter flame sparks from \his index fingers!</span>")
usr.visible_message("<span class='notice'>With a snap of \the [usr]'s fingers, a small lighter flame sparks from [usr.get_pronoun("his")] index fingers!</span>")
lit = TRUE
playsound(src.loc, 'sound/items/cigs_lighters/zippo_on.ogg', 75, 1)
update_icon()
@@ -1048,7 +1048,7 @@ All custom items with worn sprites must follow the contained sprite system: http
return
else
usr.visible_message("<span class='notice'>With the flick of \the [usr] wrists and the pinch of \his fingers, the glove's flames are extinguished.</span>")
usr.visible_message("<span class='notice'>With the flick of \the [usr]'s wrists and the pinch of [usr.get_pronoun("his")] fingers, the glove's flames are extinguished.</span>")
lit = FALSE
playsound(src.loc, 'sound/items/cigs_lighters/zippo_off.ogg', 75, 1)
update_icon()
+9 -14
View File
@@ -45,19 +45,14 @@
target = thing
break
var/datum/gender/user_gender = gender_datums[user.gender]
var/datum/gender/target_gender
if(target)
target_gender = gender_datums[target.gender]
var/use_3p
var/use_1p
if(emote_message_1p)
if(target && emote_message_1p_target)
use_1p = get_emote_message_1p(user, target, extra_params)
use_1p = replacetext(use_1p, "TARGET_THEM", target_gender.him)
use_1p = replacetext(use_1p, "TARGET_THEIR", target_gender.his)
use_1p = replacetext(use_1p, "TARGET_SELF", target_gender.self)
use_1p = replacetext(use_1p, "TARGET_THEM", target.get_pronoun("him"))
use_1p = replacetext(use_1p, "TARGET_THEIR", target.get_pronoun("his"))
use_1p = replacetext(use_1p, "TARGET_SELF", target.get_pronoun("self"))
use_1p = replacetext(use_1p, "TARGET", "<b>\the [target]</b>")
else
use_1p = get_emote_message_1p(user, null, extra_params)
@@ -66,15 +61,15 @@
if(emote_message_3p)
if(target && emote_message_3p_target)
use_3p = get_emote_message_3p(user, target, extra_params)
use_3p = replacetext(use_3p, "TARGET_THEM", target_gender.him)
use_3p = replacetext(use_3p, "TARGET_THEIR", target_gender.his)
use_3p = replacetext(use_3p, "TARGET_SELF", target_gender.self)
use_3p = replacetext(use_3p, "TARGET_THEM", target.get_pronoun("him"))
use_3p = replacetext(use_3p, "TARGET_THEIR", target.get_pronoun("his"))
use_3p = replacetext(use_3p, "TARGET_SELF", target.get_pronoun("self"))
use_3p = replacetext(use_3p, "TARGET", "<b>\the [target]</b>")
else
use_3p = get_emote_message_3p(user, null, extra_params)
use_3p = replacetext(use_3p, "USER_THEM", user_gender.him)
use_3p = replacetext(use_3p, "USER_THEIR", user_gender.his)
use_3p = replacetext(use_3p, "USER_SELF", user_gender.self)
use_3p = replacetext(use_3p, "USER_THEM", user.get_pronoun("him"))
use_3p = replacetext(use_3p, "USER_THEIR", user.get_pronoun("his"))
use_3p = replacetext(use_3p, "USER_SELF", user.get_pronoun("self"))
use_3p = replacetext(use_3p, "USER", "<b>\the [user]</b>")
use_3p = capitalize(use_3p)
+2 -2
View File
@@ -142,7 +142,7 @@
H.concealed = 1
H.update_icon()
if(user==target)
user.visible_message("<b>\The [user]</b> deals a card to \himself.")
user.visible_message("<b>\The [user]</b> deals a card to [user.get_pronoun("himself")].")
else
user.visible_message("<b>\The [user]</b> deals a card to \the [target].")
H.throw_at(get_step(target,target.dir),10,1,H)
@@ -341,4 +341,4 @@
/obj/item/hand/pickup(mob/user as mob)
..()
src.update_icon()
src.update_icon()
+2 -2
View File
@@ -79,7 +79,7 @@
to_chat(usr, SPAN_NOTICE("<b>You dip your mentality into the surface layer of \the [target]'s mind, seeking a prominent thought.</b>"))
if(do_after(usr, 30))
sleep(rand(50, 120))
usr.visible_message("<B>[usr]</B> puts [usr.get_pronoun(1)] hands to [usr.get_pronoun(1)] head and mumbles incoherently as they stare, unblinking, at \the [target].",
usr.visible_message("<B>[usr]</B> puts [usr.get_pronoun("his")] hands to [usr.get_pronoun("his")] head and mumbles incoherently as they stare, unblinking, at \the [target].",
SPAN_NOTICE("<b>You skim thoughts from the surface of \the [target]'s mind: \"<i>[pick(SShallucinations.hallucinated_phrases)]</i>\"</b>"))
else
to_chat(usr, SPAN_WARNING("You need to stay still to focus your energy!"))
@@ -173,4 +173,4 @@
usr.visible_message("<span class='game say'><span class='name'>[usr]</span> [usr.say_quote(message)], <span class='message'><span class='body'>\"[message]\"</span></span></span>",
SPAN_NOTICE("<b>You feel your message enter \the [target]'s mind!</b>"))
else
to_chat(usr, SPAN_WARNING("You need to stay still to focus your efforts!"))
to_chat(usr, SPAN_WARNING("You need to stay still to focus your efforts!"))
+1 -1
View File
@@ -150,7 +150,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
if(src.arcanecheckout)
new /obj/item/book/tome(src.loc)
to_chat(user, "<span class='warning'>Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a dusty old tome sitting on the desk. You don't really remember printing it.</span>")
user.visible_message("<span class='notice'>\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.</span>", range = 2)
user.visible_message("<span class='notice'>\The [user] stares at the blank screen for a few moments, [user.get_pronoun("his")] expression frozen in fear. When [user.get_pronoun("he")] finally awakens from it, [user.get_pronoun("he")] looks a lot older.</span>", range = 2)
src.arcanecheckout = 0
if(1)
// Inventory
+1 -1
View File
@@ -69,7 +69,7 @@
if(!D.lying)
attack_message = "[A] attempted to strike [D], but missed!"
else
attack_message = "[A] attempted to strike [D], but \he rolled out of the way!"
attack_message = "[A] attempted to strike [D], but [D.get_pronoun("he")] rolled out of the way!"
D.set_dir(pick(cardinal))
miss_type = 1
+2 -2
View File
@@ -97,7 +97,7 @@
to_chat(user, SPAN_WARNING("The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one."))
return
user.visible_message(SPAN_WARNING("\The [user] swipes \his ID card through \the [src], attempting to reboot it."), SPAN_WARNING("You swipe your ID card through \the [src], attempting to reboot it."))
user.visible_message(SPAN_WARNING("\The [user] swipes [user.get_pronoun("his")] ID card through \the [src], attempting to reboot it."), SPAN_WARNING("You swipe your ID card through \the [src], attempting to reboot it."))
request_player()
return
..()
@@ -183,4 +183,4 @@
M.module.rebuild()
M.recalculate_synth_capacities()
qdel(src)
return TRUE
return TRUE
@@ -708,7 +708,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
toggle_visibility(1)
else
user.visible_message ( \
"<span class='warning'>\The [user] just tried to smash \his book into that ghost! It's not very effective.</span>", \
"<span class='warning'>\The [user] just tried to smash [user.get_pronoun("his")] book into that ghost! It's not very effective.</span>", \
"<span class='warning'>You get the feeling that the ghost can't become any more visible.</span>" \
)
+20 -1
View File
@@ -1,4 +1,3 @@
var/list/datum/gender/gender_datums = list()
/hook/startup/proc/populate_gender_datum_list()
@@ -14,11 +13,14 @@ var/list/datum/gender/gender_datums = list()
var/he = "they"
var/His = "Their"
var/his = "their"
var/hers = "theirs" // used to disambiguate between possessive pronouns and possessive adjectives
var/Hers = "Theirs"
var/him = "them"
var/has = "have"
var/is = "are"
var/does = "do"
var/self = "themselves"
var/end = ""
/datum/gender/male
key = "male"
@@ -27,11 +29,14 @@ var/list/datum/gender/gender_datums = list()
he = "he"
His = "His"
his = "his"
hers = "his"
Hers = "His"
him = "him"
has = "has"
is = "is"
does = "does"
self = "himself"
end = "s"
/datum/gender/female
key = "female"
@@ -40,11 +45,14 @@ var/list/datum/gender/gender_datums = list()
he = "she"
His = "Her"
his = "her"
hers = "hers"
Hers = "Hers"
him = "her"
has = "has"
is = "is"
does = "does"
self = "herself"
end = "s"
/datum/gender/neuter
key = "neuter"
@@ -53,8 +61,19 @@ var/list/datum/gender/gender_datums = list()
he = "it"
His = "Its"
his = "its"
hers = "its"
Hers = "its"
him = "it"
has = "has"
is = "is"
does = "does"
self = "itself"
end = "s"
/atom/proc/get_gender() // This is on /atom/ for compatibility reasons, e.g. for emotes to not have to typecheck.
return gender
/atom/proc/get_pronoun(var/type)
var/gender_to_use = get_gender()
if (type in gender_datums[gender_to_use])
return gender_datums[gender_to_use][type]
+1 -1
View File
@@ -65,7 +65,7 @@
if(speaker == src)
to_chat(src, "<span class='warning'>You cannot hear yourself speak!</span>")
else
to_chat(src, "<span class='name'>[speaker_name]</span>[alt_name] talks but you cannot hear \him.")
to_chat(src, "<span class='name'>[speaker_name]</span>[alt_name] talks but you cannot hear them.")
else
if(language)
on_hear_say("[track][accent_icon ? accent_icon + " " : ""]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [language.format_message(message, verb)]</span>")
@@ -95,7 +95,7 @@
to_chat(src, SPAN_WARNING("[D] has refused to join you!"))
return
else if(!Adjacent(D) || !isturf(D.loc))
to_chat(src, SPAN_WARNING("\The [D] must remain close to the collective if \he wishes to be part of us."))
to_chat(src, SPAN_WARNING("\The [D] must remain close to the collective if [D.get_pronoun("he")] wishes to be part of us."))
return
src.visible_message(SPAN_WARNING("[src] starts absorbing [D] into its body."), SPAN_WARNING("You start absorbing [D]. This will take 15 seconds and both of you must remain still."), SPAN_WARNING("You hear a strange, alien, sucking noise."))
@@ -104,7 +104,7 @@
D.face_atom(get_turf(src))
if(do_mob(src, D, 150, needhand = FALSE))
if(!Adjacent(D) || !isturf(D.loc)) //The loc check prevents us from absorbing the same nymph multiple times at once
to_chat(src, SPAN_WARNING("\The [D] must remain close to the collective if \he wishes to be part of us."))
to_chat(src, SPAN_WARNING("\The [D] must remain close to the collective if [D.get_pronoun("he")] wishes to be part of us."))
return
if(D.stat == DEAD)
@@ -336,11 +336,11 @@
if(stat == DEAD)
return
if(!consume_nutrition_from_air && (nutrition / max_nutrition > 0.25))
to_chat(src, SPAN_WARNING("You still have plenty of nutrition left. Consuming air is the last resort."))
return
consume_nutrition_from_air = !consume_nutrition_from_air
to_chat(src, SPAN_NOTICE("You [consume_nutrition_from_air ? "started" : "stopped"] consuming air for nutrition."))
@@ -379,7 +379,7 @@
else
to_chat(src, SPAN_NOTICE("We do not have the nymphs nor the biomass to do this!"))
return
var/list/diona_structures = list(
"Wall" = /turf/simulated/wall/diona,
"Floor" = /turf/simulated/floor/diona,
@@ -395,7 +395,7 @@
if(use_check_and_message(src))
return
if(chosen_structure)
to_chat(src, SPAN_NOTICE("We are now creating a [lowertext(chosen_structure)] using our [build_method]..."))
@@ -420,12 +420,12 @@
T.ChangeTurf(structure_path)
else
new structure_path(T)
/mob/living/carbon/alien/diona/proc/remove_hat()
set category = "Abilities"
set name = "Remove Hat"
set desc = " Remove your hat."
if(hat)
src.drop_from_inventory(hat)
hat = null
+1 -1
View File
@@ -484,4 +484,4 @@
return
for(var/source in stasis_sources)
stasis_value += stasis_sources[source]
stasis_sources.Cut()
stasis_sources.Cut()
@@ -3,7 +3,7 @@
set desc = "Sets a description which will be shown when someone examines you."
set category = "IC"
pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"]...", "Pose", html_decode(pose)) as message)
pose = sanitize(input(usr, "This is [src]. [get_pronoun("He")]...", "Pose", html_decode(pose)) as message)
/mob/living/carbon/human/verb/set_flavor()
set name = "Set Flavour Text"
+90 -111
View File
@@ -1,57 +1,32 @@
/mob/living/carbon/human/examine(mob/user)
var/skipgloves = 0
var/skipsuitstorage = 0
var/skipjumpsuit = 0
var/skipshoes = 0
var/skipmask = 0
var/skipears = 0
var/skipeyes = 0
var/skipface = 0
/mob/living/carbon/human/proc/get_covered_body_parts()
var/skipbody = 0
for(var/obj/item/clothing/C in list(wear_suit, head, wear_mask, w_uniform, gloves, shoes))
skipbody |= C.body_parts_covered
return skipbody
/mob/living/carbon/human/proc/get_covered_clothes()
var/skipitems = 0
for(var/obj/item/clothing/C in list(wear_suit, head, wear_mask, w_uniform, gloves, shoes))
skipitems |= C.flags_inv
return skipitems
/mob/living/carbon/human/examine(mob/user)
var/skipbody = get_covered_body_parts()
var/skipitems = get_covered_clothes()
//exosuits and helmets obscure our view and stuff.
if(wear_suit)
skipbody |= wear_suit.body_parts_covered
skipgloves = wear_suit.flags_inv & HIDEGLOVES
skipsuitstorage = wear_suit.flags_inv & HIDESUITSTORAGE
skipjumpsuit = wear_suit.flags_inv & HIDEJUMPSUIT
skipshoes = wear_suit.flags_inv & HIDESHOES
if(head)
skipbody |= head.body_parts_covered
skipbody &= ~HEAD // head covering incorrectly hides 'face' damage
skipbody |= (skipbody & FACE) ? HEAD : 0 // if you hide face damage, however, then go ahead and hide head damage, since that's where face damage is
skipmask = head.flags_inv & HIDEMASK
skipeyes = head.flags_inv & HIDEEYES
skipears = head.flags_inv & HIDEEARS
skipface = head.flags_inv & HIDEFACE
if(wear_mask)
skipbody |= wear_mask.body_parts_covered
skipbody |= (wear_mask.body_parts_covered & FACE) ? HEAD : 0 // same as above
skipface |= wear_mask.flags_inv & HIDEFACE
if(w_uniform)
skipbody |= w_uniform.body_parts_covered
if(gloves)
skipbody |= gloves.body_parts_covered
if(shoes)
skipbody |= shoes.body_parts_covered
var/skipgloves = skipitems & HIDEGLOVES
var/skipsuitstorage = skipitems & HIDESUITSTORAGE
var/skipjumpsuit = skipitems & HIDEJUMPSUIT
var/skipshoes = skipitems & HIDESHOES
var/skipmask = skipitems & HIDEMASK
var/skipeyes = skipitems & HIDEEYES
var/skipears = skipitems & HIDEEARS
var/list/msg = list("<span class='info'>*---------*\nThis is ")
var/datum/gender/T = gender_datums[gender]
if(skipjumpsuit && skipface) //big suits/masks/helmets make it hard to tell their gender
T = gender_datums[PLURAL]
else
if(icon)
msg += "\icon[icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
if(!T)
// Just in case someone VVs the gender to something strange. It'll runtime anyway when it hits usages, better to CRASH() now with a helpful message.
CRASH("Gender datum was null; key was '[(skipjumpsuit && skipface) ? PLURAL : gender]'")
if(icon)
msg += "\icon[icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
msg += "<EM>[src.name]</EM>"
@@ -71,9 +46,9 @@
tie_msg_warn += "! Attached to it is [lowertext(english_list(U.accessories))]"
if(w_uniform.blood_color)
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [fluid_color_type_map(w_uniform.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[w_uniform]'>[w_uniform.name]</a>[tie_msg_warn].</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [fluid_color_type_map(w_uniform.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[w_uniform]'>[w_uniform.name]</a>[tie_msg_warn].</span>\n"
else
msg += "[T.He] [T.is] wearing \icon[w_uniform] <a href='?src=\ref[src];lookitem_desc_only=\ref[w_uniform]'>\a [w_uniform]</a>[tie_msg].\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[w_uniform] <a href='?src=\ref[src];lookitem_desc_only=\ref[w_uniform]'>\a [w_uniform]</a>[tie_msg].\n"
//when the player is winded by an admin
if(paralysis > 6000)
@@ -82,9 +57,9 @@
//head
if(head)
if(head.blood_color)
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[head] [head.gender==PLURAL?"some":"a"] [fluid_color_type_map(head.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[head]'>[head.name]</a> on [T.his] head!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing \icon[head] [head.gender==PLURAL?"some":"a"] [fluid_color_type_map(head.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[head]'>[head.name]</a> on [get_pronoun("his")] head!</span>\n"
else
msg += "[T.He] [T.is] wearing \icon[head] <a href='?src=\ref[src];lookitem_desc_only=\ref[head]'>\a [head]</a> on [T.his] head.\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[head] <a href='?src=\ref[src];lookitem_desc_only=\ref[head]'>\a [head]</a> on [get_pronoun("his")] head.\n"
//suit/armor
if(wear_suit)
@@ -97,42 +72,42 @@
tie_msg_warn += "! Attached to it is [lowertext(english_list(U.accessories))]"
if(wear_suit.blood_color)
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] [fluid_color_type_map(wear_suit.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_suit]'>[wear_suit.name]</a>[tie_msg_warn].</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] [fluid_color_type_map(wear_suit.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_suit]'>[wear_suit.name]</a>[tie_msg_warn].</span>\n"
else
msg += "[T.He] [T.is] wearing \icon[wear_suit] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_suit]'>\a [wear_suit]</a>[tie_msg].\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[wear_suit] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_suit]'>\a [wear_suit]</a>[tie_msg].\n"
//suit/armor storage
if(s_store && !skipsuitstorage)
if(s_store.blood_color)
msg += "<span class='warning'>[T.He] [T.is] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [fluid_color_type_map(s_store.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>[s_store.name]</a> on [T.his] [wear_suit.name]!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [fluid_color_type_map(s_store.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>[s_store.name]</a> on [get_pronoun("his")] [wear_suit.name]!</span>\n"
else
msg += "[T.He] [T.is] carrying \icon[s_store] <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>\a [s_store]</a> on [T.his] [wear_suit.name].\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] carrying \icon[s_store] <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>\a [s_store]</a> on [get_pronoun("his")] [wear_suit.name].\n"
else if(s_store && !skipsuitstorage)
if(s_store.blood_color)
msg += "<span class='warning'>[T.He] [T.is] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [fluid_color_type_map(s_store.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>[s_store.name]</a> on [T.his] chest!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [fluid_color_type_map(s_store.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>[s_store.name]</a> on [get_pronoun("his")] chest!</span>\n"
else
msg += "[T.He] [T.is] carrying \icon[s_store] <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>\a [s_store]</a> on [T.his] chest.\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] carrying \icon[s_store] <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>\a [s_store]</a> on [get_pronoun("his")] chest.\n"
//back
if(back)
if(back.blood_color)
msg += "<span class='warning'>[T.He] [T.has] \icon[back] [fluid_color_type_map(back.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[back]'>[back]</a> on [T.his] back.</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[back] [fluid_color_type_map(back.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[back]'>[back]</a> on [get_pronoun("his")] back.</span>\n"
else
msg += "[T.He] [T.has] \icon[back] <a href='?src=\ref[src];lookitem_desc_only=\ref[back]'>\a [back]</a> on [T.his] back.\n"
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[back] <a href='?src=\ref[src];lookitem_desc_only=\ref[back]'>\a [back]</a> on [get_pronoun("his")] back.\n"
//left hand
if(l_hand)
if(l_hand.blood_color)
msg += "<span class='warning'>[T.He] [T.is] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] [fluid_color_type_map(l_hand.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[l_hand]'>[l_hand.name]</a> in [T.his] left hand!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] [fluid_color_type_map(l_hand.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[l_hand]'>[l_hand.name]</a> in [get_pronoun("his")] left hand!</span>\n"
else
msg += "[T.He] [T.is] holding \icon[l_hand] <a href='?src=\ref[src];lookitem_desc_only=\ref[l_hand]'>\a [l_hand]</a> in [T.his] left hand.\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] holding \icon[l_hand] <a href='?src=\ref[src];lookitem_desc_only=\ref[l_hand]'>\a [l_hand]</a> in [get_pronoun("his")] left hand.\n"
//right hand
if(r_hand)
if(r_hand.blood_color)
msg += "<span class='warning'>[T.He] [T.is] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] [fluid_color_type_map(r_hand.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[r_hand]'>[r_hand.name]</a> in [T.his] right hand!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] [fluid_color_type_map(r_hand.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[r_hand]'>[r_hand.name]</a> in [get_pronoun("his")] right hand!</span>\n"
else
msg += "[T.He] [T.is] holding \icon[r_hand] <a href='?src=\ref[src];lookitem_desc_only=\ref[r_hand]'>\a [r_hand]</a> in [T.his] right hand.\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] holding \icon[r_hand] <a href='?src=\ref[src];lookitem_desc_only=\ref[r_hand]'>\a [r_hand]</a> in [get_pronoun("his")] right hand.\n"
//gloves
if(gloves && !skipgloves)
@@ -143,60 +118,60 @@
if(ID)
gloves_name = "[C.name] ([ID.registered_name] ([ID.assignment]))"
if(gloves.blood_color)
msg += "<span class='warning'>[T.He] [T.has] \icon[gloves] [gloves.gender==PLURAL?"some":"a"] [fluid_color_type_map(gloves.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[gloves]'>[gloves_name]</a> on [T.his] hands!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[gloves] [gloves.gender==PLURAL?"some":"a"] [fluid_color_type_map(gloves.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[gloves]'>[gloves_name]</a> on [get_pronoun("his")] hands!</span>\n"
else
msg += "[T.He] [T.has] \icon[gloves] <a href='?src=\ref[src];lookitem_desc_only=\ref[gloves]'>\a [gloves_name]</a> on [T.his] hands.\n"
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[gloves] <a href='?src=\ref[src];lookitem_desc_only=\ref[gloves]'>\a [gloves_name]</a> on [get_pronoun("his")] hands.\n"
else if(blood_color)
msg += "<span class='warning'>[T.He] [T.has] [fluid_color_type_map(hand_blood_color)]-stained hands!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [fluid_color_type_map(hand_blood_color)]-stained hands!</span>\n"
//handcuffed?
if(handcuffed)
if(istype(handcuffed, /obj/item/handcuffs/cable))
msg += "<span class='warning'>[T.He] [T.is] \icon[handcuffed] restrained with cable!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] \icon[handcuffed] restrained with cable!</span>\n"
else
msg += "<span class='warning'>[T.He] [T.is] \icon[handcuffed] handcuffed!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] \icon[handcuffed] handcuffed!</span>\n"
//buckled
if(buckled)
msg += "<span class='warning'>[T.He] [T.is] \icon[buckled] buckled to [buckled]!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] \icon[buckled] buckled to [buckled]!</span>\n"
//belt
if(belt)
if(belt.blood_color)
msg += "<span class='warning'>[T.He] [T.has] \icon[belt] [belt.gender==PLURAL?"some":"a"] [fluid_color_type_map(belt.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[belt]'>[belt.name]</a> about [T.his] waist!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[belt] [belt.gender==PLURAL?"some":"a"] [fluid_color_type_map(belt.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[belt]'>[belt.name]</a> about [get_pronoun("his")] waist!</span>\n"
else
msg += "[T.He] [T.has] \icon[belt] <a href='?src=\ref[src];lookitem_desc_only=\ref[belt]'>\a [belt]</a> about [T.his] waist.\n"
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[belt] <a href='?src=\ref[src];lookitem_desc_only=\ref[belt]'>\a [belt]</a> about [get_pronoun("his")] waist.\n"
//shoes
if(shoes && !skipshoes)
if(shoes.blood_color)
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[shoes] [shoes.gender==PLURAL?"some":"a"] [fluid_color_type_map(shoes.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[shoes]'>[shoes.name]</a> on [T.his] feet!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing \icon[shoes] [shoes.gender==PLURAL?"some":"a"] [fluid_color_type_map(shoes.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[shoes]'>[shoes.name]</a> on [get_pronoun("his")] feet!</span>\n"
else
msg += "[T.He] [T.is] wearing \icon[shoes] <a href='?src=\ref[src];lookitem_desc_only=\ref[shoes]'>\a [shoes]</a> on [T.his] feet.\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[shoes] <a href='?src=\ref[src];lookitem_desc_only=\ref[shoes]'>\a [shoes]</a> on [get_pronoun("his")] feet.\n"
else if(footprint_color)
msg += "<span class='warning'>[T.He] [T.has] [fluid_color_type_map(footprint_color)]-stained feet!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [fluid_color_type_map(footprint_color)]-stained feet!</span>\n"
//mask
if(wear_mask && !skipmask)
if(wear_mask.blood_color)
msg += "<span class='warning'>[T.He] [T.has] \icon[wear_mask] [wear_mask.gender==PLURAL?"some":"a"] [fluid_color_type_map(wear_mask.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_mask]'>[wear_mask.name]</a> on [T.his] face!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[wear_mask] [wear_mask.gender==PLURAL?"some":"a"] [fluid_color_type_map(wear_mask.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_mask]'>[wear_mask.name]</a> on [get_pronoun("his")] face!</span>\n"
else
msg += "[T.He] [T.has] \icon[wear_mask] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_mask]'>\a [wear_mask]</a> on [T.his] face.\n"
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[wear_mask] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_mask]'>\a [wear_mask]</a> on [get_pronoun("his")] face.\n"
//eyes
if(glasses && !skipeyes)
if(glasses.blood_color)
msg += "<span class='warning'>[T.He] [T.has] \icon[glasses] [glasses.gender==PLURAL?"some":"a"] [fluid_color_type_map(glasses.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[glasses]'>[glasses]</a> covering [T.his] eyes!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[glasses] [glasses.gender==PLURAL?"some":"a"] [fluid_color_type_map(glasses.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[glasses]'>[glasses]</a> covering [get_pronoun("his")] eyes!</span>\n"
else
msg += "[T.He] [T.has] \icon[glasses] <a href='?src=\ref[src];lookitem_desc_only=\ref[glasses]'>\a [glasses]</a> covering [T.his] eyes.\n"
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[glasses] <a href='?src=\ref[src];lookitem_desc_only=\ref[glasses]'>\a [glasses]</a> covering [get_pronoun("his")] eyes.\n"
//left ear
if(l_ear && !skipears)
msg += "[T.He] [T.has] \icon[l_ear] <a href='?src=\ref[src];lookitem_desc_only=\ref[l_ear]'>\a [l_ear]</a> on [T.his] left ear.\n"
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[l_ear] <a href='?src=\ref[src];lookitem_desc_only=\ref[l_ear]'>\a [l_ear]</a> on [get_pronoun("his")] left ear.\n"
//right ear
if(r_ear && !skipears)
msg += "[T.He] [T.has] \icon[r_ear] <a href='?src=\ref[src];lookitem_desc_only=\ref[r_ear]'>\a [r_ear]</a> on [T.his] right ear.\n"
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[r_ear] <a href='?src=\ref[src];lookitem_desc_only=\ref[r_ear]'>\a [r_ear]</a> on [get_pronoun("his")] right ear.\n"
//ID
if(wear_id)
@@ -206,52 +181,52 @@
var/obj/item/card/id/ID = C.GetID()
if(ID)
id_name = "[C.name] ([ID.registered_name] ([ID.assignment]))"
msg += "[T.He] [T.is] wearing \icon[wear_id] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_id]'>\a [id_name]</a>.\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[wear_id] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_id]'>\a [id_name]</a>.\n"
//Jitters
if(is_jittery)
if(jitteriness >= 300)
msg += "<span class='warning'><B>[T.He] [T.is] convulsing violently!</B></span>\n"
msg += "<span class='warning'><B>[get_pronoun("He")] [get_pronoun("is")] convulsing violently!</B></span>\n"
else if(jitteriness >= 200)
msg += "<span class='warning'>[T.He] [T.is] extremely jittery.</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] extremely jittery.</span>\n"
else if(jitteriness >= 100)
msg += "<span class='warning'>[T.He] [T.is] twitching ever so slightly.</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] twitching ever so slightly.</span>\n"
//splints
for(var/organ in list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_R_FOOT,BP_L_FOOT))
var/obj/item/organ/external/o = get_organ(organ)
if(o)
if(o.status & ORGAN_SPLINTED)
msg += "<span class='warning'>[T.He] [T.has] a splint on [T.his] [o.name]!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] a splint on [get_pronoun("his")] [o.name]!</span>\n"
if(o.applied_pressure == src)
msg += "<span class='warning'>[T.He] [T.is] applying pressure to [T.his] [o.name]!</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] applying pressure to [get_pronoun("his")] [o.name]!</span>\n"
if(mSmallsize in mutations)
msg += "[T.He] [T.is] small halfling!\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] small halfling!\n"
var/distance = get_dist(user,src)
if(istype(user, /mob/abstract/observer) || user.stat == 2) // ghosts can see anything
distance = 1
if (src.stat && !(src.species.flags & NO_BLOOD)) // No point checking pulse of a species that doesn't have one.
msg += "<span class='warning'>[T.He] [T.is]n't responding to anything around [T.him] and seems to be unconscious.</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")]n't responding to anything around [get_pronoun("him")] and seems to be unconscious.</span>\n"
if((stat == DEAD || is_asystole() || src.losebreath) && distance <= 3)
msg += "<span class='warning'>[T.He] [T.does] not appear to be breathing.</span>\n"
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("does")] not appear to be breathing.</span>\n"
if(istype(user, /mob/living/carbon/human) && !user.stat && Adjacent(user))
spawn (0)
user.visible_message("<b>[user]</b> checks [src]'s pulse.", "You check [src]'s pulse.")
if (do_mob(user, src, 15))
if(pulse() == PULSE_NONE)
to_chat(user, "<span class='deadsay'>[T.He] [T.has] no pulse.</span>")
to_chat(user, "<span class='deadsay'>[get_pronoun("He")] [get_pronoun("has")] no pulse.</span>")
else
to_chat(user, "<span class='deadsay'>[T.He] [T.has] a pulse!</span>")
to_chat(user, "<span class='deadsay'>[get_pronoun("He")] [get_pronoun("has")] a pulse!</span>")
else if (src.stat)
msg += SPAN_WARNING("[T.He] [T.is] not responding to anything around [T.him].\n")
msg += SPAN_WARNING("[get_pronoun("He")] [get_pronoun("is")] not responding to anything around [get_pronoun("him")].\n")
if(fire_stacks)
msg += "[T.He] [T.is] covered in some liquid.\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] covered in some liquid.\n"
if(on_fire)
msg += "<span class='danger'>[T.He] [T.is] on fire!</span>\n"
msg += "<span class='danger'>[get_pronoun("He")] [get_pronoun("is")] on fire!</span>\n"
msg += "<span class='warning'>"
msg += "</span>"
@@ -267,9 +242,9 @@
if(species.show_ssd && (!species.has_organ[BP_BRAIN] || has_brain()) && stat != DEAD)
if(!vr_mob && !key)
msg += "<span class='deadsay'>[T.He] [T.is] [species.show_ssd]. It doesn't look like [T.he] [T.is] waking up anytime soon.</span>\n"
msg += "<span class='deadsay'>[get_pronoun("He")] [get_pronoun("is")] [species.show_ssd]. It doesn't look like [get_pronoun("he")] [get_pronoun("is")] waking up anytime soon.</span>\n"
else if(!vr_mob && !client && !bg)
msg += "<span class='deadsay'>[T.He] [T.is] [species.show_ssd].</span>\n"
msg += "<span class='deadsay'>[get_pronoun("He")] [get_pronoun("is")] [species.show_ssd].</span>\n"
if(have_client && ((inactivity / 600) > 10)) // inactivity/10/60 > 10 MINUTES
msg += "<span class='deadsay'>\[Inactive for [round(inactivity / 600)] minutes.\]\n</span>"
else if(!have_client && (world.realtime - disconnect_time) >= 5 MINUTES)
@@ -285,37 +260,41 @@
var/obj/item/organ/external/E = organs_by_name[organ_tag]
if(!E)
wound_flavor_text["[organ_descriptor]"] = "<span class='warning'><b>[T.He] [T.is] missing [T.his] [organ_descriptor].</b></span>\n"
wound_flavor_text["[organ_descriptor]"] = "<span class='warning'><b>[get_pronoun("He")] [get_pronoun("is")] missing [get_pronoun("his")] [organ_descriptor].</b></span>\n"
else if(E.is_stump())
wound_flavor_text["[organ_descriptor]"] = "<span class='warning'><b>[T.He] [T.has] a stump where [T.his] [organ_descriptor] should be.</b></span>\n"
wound_flavor_text["[organ_descriptor]"] = "<span class='warning'><b>[get_pronoun("He")] [get_pronoun("has")] a stump where [get_pronoun("his")] [organ_descriptor] should be.</b></span>\n"
else
continue
for(var/obj/item/organ/external/temp in organs)
if(temp)
if(skipbody & temp.body_part)
var/body_part = temp.body_part
if(temp.body_part & HEAD)
body_part &= ~HEAD
body_part |= (temp.body_part & FACE) ? HEAD : 0
if(skipbody & body_part)
continue
if(temp.status & ORGAN_ASSISTED)
if(!(temp.brute_dam + temp.burn_dam))
//wound_flavor_text["[temp.name]"] = "<span class='warning'>[T.He] [T.has] a robot [temp.name]!</span>\n"
//wound_flavor_text["[temp.name]"] = "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] a robot [temp.name]!</span>\n"
// No need to notify about robotic limbs if they're not damaged, really.
continue
else
wound_flavor_text["[temp.name]"] = "<span class='warning'>[T.He] [T.has] [temp.get_wounds_desc()] on [T.his] [temp.name].</span><br>"
wound_flavor_text["[temp.name]"] = "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [temp.get_wounds_desc()] on [get_pronoun("his")] [temp.name].</span><br>"
else if(temp.wounds.len > 0 || temp.open)
if(temp.is_stump() && temp.parent_organ && organs_by_name[temp.parent_organ])
var/obj/item/organ/external/parent = organs_by_name[temp.parent_organ]
wound_flavor_text["[temp.name]"] = "<span class='warning'>[T.He] [T.has] [temp.get_wounds_desc()] on [T.his] [parent.name].</span><br>"
wound_flavor_text["[temp.name]"] = "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [temp.get_wounds_desc()] on [get_pronoun("his")] [parent.name].</span><br>"
else
wound_flavor_text["[temp.name]"] = "<span class='warning'>[T.He] [T.has] [temp.get_wounds_desc()] on [T.his] [temp.name].</span><br>"
wound_flavor_text["[temp.name]"] = "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [temp.get_wounds_desc()] on [get_pronoun("his")] [temp.name].</span><br>"
if(temp.status & ORGAN_BLEEDING)
is_bleeding["[temp.name]"] = "<span class='danger'>[T.His] [temp.name] is bleeding!</span><br>"
is_bleeding["[temp.name]"] = "<span class='danger'>[get_pronoun("His")] [temp.name] is bleeding!</span><br>"
else
wound_flavor_text["[temp.name]"] = ""
if(temp.dislocated == 2)
wound_flavor_text["[temp.name]"] += "<span class='warning'>[T.His] [temp.joint] is dislocated!</span><br>"
wound_flavor_text["[temp.name]"] += "<span class='warning'>[get_pronoun("His")] [temp.joint] is dislocated!</span><br>"
if(((temp.status & ORGAN_BROKEN) && temp.brute_dam > temp.min_broken_damage) || (temp.status & ORGAN_MUTATED))
wound_flavor_text["[temp.name]"] += "<span class='warning'>[T.His] [temp.name] is dented and swollen!</span><br>"
wound_flavor_text["[temp.name]"] += "<span class='warning'>[get_pronoun("His")] [temp.name] is dented and swollen!</span><br>"
//Handles the text strings being added to the actual description.
//If they have something that covers the limb, and it is not missing, put flavortext. If it is covered but bleeding, add other flavortext.
@@ -328,9 +307,9 @@
for(var/obj/item/organ/external/organ in src.organs)
for(var/obj/item/O in organ.implants)
if(!istype(O,/obj/item/implant) && !istype(O,/obj/item/material/shard/shrapnel))
msg += "<span class='danger'>[src] [T.has] \a [O] sticking out of [T.his] [organ.name]!</span>\n"
msg += "<span class='danger'>[src] [get_pronoun("has")] \a [O] sticking out of [get_pronoun("his")] [organ.name]!</span>\n"
if(digitalcamo)
msg += "[T.He] [T.is] a little difficult to identify.\n"
msg += "[get_pronoun("He")] [get_pronoun("is")] a little difficult to identify.\n"
if(hasHUD(user,"security"))
var/perpname = "wot"
@@ -377,7 +356,7 @@
if (pose)
if( findtext(pose,".",length(pose)) == 0 && findtext(pose,"!",length(pose)) == 0 && findtext(pose,"?",length(pose)) == 0 )
pose = addtext(pose,".") //Makes sure all emotes end with a period.
msg += "\n[T.He] [pose]"
msg += "\n[get_pronoun("He")] [pose]"
to_chat(user, msg.Join())
@@ -417,4 +396,4 @@
)
var/output_text = color_map[supplied_color] || "fluid"
return output_text
return output_text
+10 -8
View File
@@ -933,7 +933,7 @@
/mob/living/carbon/human/proc/play_xylophone()
if(!src.xylophone)
visible_message(SPAN_WARNING("\The [src] begins playing \his ribcage like a xylophone. It's quite spooky."), SPAN_NOTICE("You begin to play a spooky refrain on your ribcage."), SPAN_WARNING("You hear a spooky xylophone melody."))
visible_message(SPAN_WARNING("\The [src] begins playing [get_pronoun("his")] ribcage like a xylophone. It's quite spooky."), SPAN_NOTICE("You begin to play a spooky refrain on your ribcage."), SPAN_WARNING("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
@@ -1134,7 +1134,7 @@
regenerate_icons()
check_dna()
visible_message(SPAN_NOTICE("\The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!"), SPAN_NOTICE("You change your appearance!"), SPAN_WARNING("Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!"))
visible_message(SPAN_NOTICE("\The [src] morphs and changes [get_pronoun("his")] appearance!"), SPAN_NOTICE("You change your appearance!"), SPAN_WARNING("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"
@@ -1218,10 +1218,12 @@
else
to_chat(src, SPAN_WARNING("You are not injured enough to succumb to death!"))
/mob/living/carbon/human/proc/get_visible_gender()
if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask))
return NEUTER
return gender
/mob/living/carbon/human/get_gender()
var/skipitems = get_covered_clothes()
var/skipbody = get_covered_body_parts()
. = ..()
if((skipbody & FACE || (skipitems & (HIDEMASK|HIDEFACE))) && (skipbody & (UPPER_TORSO | LOWER_TORSO) || (skipitems & HIDEJUMPSUIT))) //big suits/masks/helmets make it hard to tell their gender
. = PLURAL
/mob/living/carbon/human/proc/increase_germ_level(n)
if(gloves)
@@ -1392,7 +1394,7 @@
return
if(!self)
usr.visible_message(SPAN_NOTICE("[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse."),\
usr.visible_message(SPAN_NOTICE("[usr] kneels down, puts [usr.get_pronoun("his")] hand on [src]'s wrist and begins counting their pulse."),\
"You begin counting [src]'s pulse")
else
usr.visible_message(SPAN_NOTICE("[usr] begins counting their pulse."),\
@@ -1956,7 +1958,7 @@
if(!nervous_system_failure())
visible_message("<b>[src]</b> jerks and gasps for breath!")
else
visible_message("<b>[src]</b> twitches a bit as \his heart restarts!")
visible_message("<b>[src]</b> twitches a bit as [get_pronoun("his")] heart restarts!")
shock_stage = min(shock_stage, 100) // 120 is the point at which the heart stops.
if(getOxyLoss() >= 75)
setOxyLoss(75)
@@ -183,7 +183,7 @@
var/obj/item/grab/G = new /obj/item/grab(M, src)
if(buckled)
to_chat(M, "<span class='notice'>You cannot grab [src], \he [gender_datums[gender].is] buckled in!</span>")
to_chat(M, "<span class='notice'>You cannot grab [src], [src.get_pronoun("he")] [get_pronoun("is")] buckled in!</span>")
if(!G) //the grab will delete itself in New if affecting is anchored
return
M.put_in_active_hand(G)
@@ -276,7 +276,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 [src.get_pronoun("he")] rolled out of the way!"
src.set_dir(pick(cardinal))
miss_type = 1
@@ -549,7 +549,7 @@
return 0
if(user == src)
user.visible_message("<span class='notice'>\The [user] starts applying pressure to \his [organ.name]!</span>", "<span class='notice'>You start applying pressure to your [organ.name]!</span>")
user.visible_message("<span class='notice'>\The [user] starts applying pressure to [user.get_pronoun("his")] [organ.name]!</span>", "<span class='notice'>You start applying pressure to your [organ.name]!</span>")
else
user.visible_message("<span class='notice'>\The [user] starts applying pressure to [src]'s [organ.name]!</span>", "<span class='notice'>You start applying pressure to [src]'s [organ.name]!</span>")
spawn(0)
@@ -561,7 +561,7 @@
organ.applied_pressure = null
if(user == src)
user.visible_message("<span class='notice'>\The [user] stops applying pressure to \his [organ.name]!</span>", "<span class='notice'>You stop applying pressure to your [organ.name]!</span>")
user.visible_message("<span class='notice'>\The [user] stops applying pressure to [user.get_pronoun("his")] [organ.name]!</span>", "<span class='notice'>You stop applying pressure to your [organ.name]!</span>")
else
user.visible_message("<span class='notice'>\The [user] stops applying pressure to [src]'s [organ.name]!</span>", "<span class='notice'>You stop applying pressure to [src]'s [organ.name]!</span>")
@@ -553,7 +553,7 @@ emp_act
var/obj/item/grab/G = new /obj/item/grab(user, src)
if(buckled)
to_chat(user, "<span class='notice'>You cannot grab [src], \he [gender_datums[gender].is] buckled in!</span>")
to_chat(user, "<span class='notice'>You cannot grab [src], [get_pronoun("he")] [get_pronoun("is")] buckled in!</span>")
if(!G) //the grab will delete itself in New if affecting is anchored
return
user.put_in_active_hand(G)
@@ -213,4 +213,4 @@
else
. = 80 * (1 - bodytemperature / species.cold_level_3)
. = max(20, .)
return round(.)
return round(.)
@@ -976,7 +976,7 @@ mob/living/carbon/human/proc/change_monitor()
updatehealth()
UpdateDamageIcon()
visible_message("<span class='notice'>\The [src] detaches \his [E]!</span>",
visible_message("<span class='notice'>\The [src] detaches [get_pronoun("his")] [E]!</span>",
"<span class='notice'>You detach your [E]!</span>")
/mob/living/carbon/human/proc/attach_limb()
@@ -1023,7 +1023,7 @@ mob/living/carbon/human/proc/change_monitor()
updatehealth()
UpdateDamageIcon()
visible_message("<span class='notice'>\The [src] attaches \the [O] to \his body!</span>",
visible_message("<span class='notice'>\The [src] attaches \the [O] to [get_pronoun("his")] body!</span>",
"<span class='notice'>You attach \the [O] to your body!</span>")
/mob/living/carbon/human/proc/self_diagnostics()
+1 -1
View File
@@ -1045,7 +1045,7 @@
if(shock_stage >= 30)
if(shock_stage == 30)
visible_message("<b>[src]</b> is having trouble keeping \his eyes open.")
visible_message("<b>[src]</b> is having trouble keeping [get_pronoun("his")] eyes open.")
if(prob(30))
eye_blurry = max(2, eye_blurry)
stuttering = max(stuttering, 5)
@@ -34,7 +34,7 @@
attack_damage = Clamp(attack_damage, 1, 5)
if(target == user)
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] \himself in the [affecting.name]!</span>")
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [user.get_pronoun("himself")] in the [affecting.name]!</span>")
return 0
switch(zone)
@@ -42,20 +42,20 @@
// ----- HEAD ----- //
switch(attack_damage)
if(1 to 2)
user.visible_message("<span class='danger'>[user] scratched [target] across \his cheek!</span>")
user.visible_message("<span class='danger'>[user] scratched [target] across [target.get_pronoun("his")] cheek!</span>")
if(3 to 4)
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target]'s [pick(BP_HEAD, "neck")]!</span>") //'with spread claws' sounds a little bit odd, just enough that conciseness is better here I think
if(5)
user.visible_message(pick(
"<span class='danger'>[user] rakes \his [pick(attack_noun)] across [target]'s face!</span>",
"<span class='danger'>[user] tears \his [pick(attack_noun)] into [target]'s face!</span>",
"<span class='danger'>[user] rakes [user.get_pronoun("his")] [pick(attack_noun)] across [target]'s face!</span>",
"<span class='danger'>[user] tears [user.get_pronoun("his")] [pick(attack_noun)] into [target]'s face!</span>",
))
else
// ----- BODY ----- //
switch(attack_damage)
if(1 to 2) user.visible_message("<span class='danger'>[user] scratched [target]'s [affecting.name]!</span>")
if(3 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!</span>")
if(5) user.visible_message("<span class='danger'>[user] tears \his [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!</span>")
if(5) user.visible_message("<span class='danger'>[user] tears [user.get_pronoun("his")] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!</span>")
/datum/unarmed_attack/claws/strong
attack_verb = list("slashed")
@@ -71,16 +71,15 @@
if(dam > maxdam && (maxdam == 0 || prob(50)) )
damaged_organ = E
maxdam = dam
var/datum/gender/T = gender_datums[H.get_gender()]
if(damaged_organ)
if(damaged_organ.status & ORGAN_BLEEDING)
H.custom_emote("clutches [T.his] [damaged_organ.name], trying to stop the blood.")
H.custom_emote("clutches [H.get_pronoun("his")] [damaged_organ.name], trying to stop the blood.")
else if(damaged_organ.status & ORGAN_BROKEN)
H.custom_emote("holds [T.his] [damaged_organ.name] carefully.")
H.custom_emote("holds [H.get_pronoun("his")] [damaged_organ.name] carefully.")
else if(damaged_organ.burn_dam > damaged_organ.brute_dam && damaged_organ.organ_tag != BP_HEAD)
H.custom_emote("blows on [T.his] [damaged_organ.name] carefully.")
H.custom_emote("blows on [H.get_pronoun("his")] [damaged_organ.name] carefully.")
else
H.custom_emote("rubs [T.his] [damaged_organ.name] carefully.")
H.custom_emote("rubs [H.get_pronoun("his")] [damaged_organ.name] carefully.")
for(var/obj/item/organ/I in H.internal_organs)
if((I.status & ORGAN_DEAD) || BP_IS_ROBOTIC(I))
@@ -88,4 +87,4 @@
if(I.damage > 2)
if(prob(2))
var/obj/item/organ/external/parent = H.get_organ(I.parent_organ)
H.custom_emote("clutches [T.his] [parent.name]!")
H.custom_emote("clutches [H.get_pronoun("his")] [parent.name]!")
@@ -85,7 +85,7 @@ var/global/list/sparring_attack_cache = list()
target.apply_effect(attack_damage * 0.4, WEAKEN, armor)
if(BP_GROIN)
if(pain_message)
target.visible_message("<span class='warning'>[target] looks like \he [gender_datums[target.gender].is] in pain!</span>", "<span class='warning'>[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your [pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]</span>")
target.visible_message("<span class='warning'>[target] looks like [target.get_pronoun("he")] [target.get_pronoun("is")] in pain!</span>", "<span class='warning'>[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your [pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]</span>")
target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armor)
if(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT)
if(!target.lying)
@@ -112,7 +112,7 @@ var/global/list/sparring_attack_cache = list()
var/obj/item/organ/internal/eyes/eyes = target.get_eyes()
eyes.take_damage(rand(3,4), 1)
user.visible_message("<span class='danger'>[user] presses \his [eye_attack_text] into [target]'s [eyes.name]!</span>")
user.visible_message("<span class='danger'>[user] presses [user.get_pronoun("his")] [eye_attack_text] into [target]'s [eyes.name]!</span>")
to_chat(target, "<span class='danger'>You experience[(!target.can_feel_pain())? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(!target.can_feel_pain())? "." : "!"]</span>")
/datum/unarmed_attack/proc/damage_flags()
@@ -159,7 +159,7 @@ var/global/list/sparring_attack_cache = list()
attack_damage = Clamp(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case.
if(target == user)
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] \himself in the [organ]!</span>")
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [user.get_pronoun("himself")] in the [organ]!</span>")
return 0
if(!target.lying)
@@ -168,7 +168,7 @@ var/global/list/sparring_attack_cache = list()
// ----- HEAD ----- //
switch(attack_damage)
if(1 to 2)
user.visible_message("<span class='danger'>[user] slapped [target] across \his cheek!</span>")
user.visible_message("<span class='danger'>[user] slapped [target] across [target.get_pronoun("his")] cheek!</span>")
if(3 to 4)
user.visible_message(pick(
40; "<span class='danger'>[user] [pick(attack_verb)] [target] in the head!</span>",
@@ -178,17 +178,17 @@ var/global/list/sparring_attack_cache = list()
if(5)
user.visible_message(pick(
30; "<span class='danger'>[user] gave [target] a resounding [pick("slap", "punch")] to the face!</span>",
40; "<span class='danger'>[user] smashed \his [pick(attack_noun)] into [target]'s face!</span>",
40; "<span class='danger'>[user] smashed [user.get_pronoun("his")] [pick(attack_noun)] into [target]'s face!</span>",
30; "<span class='danger'>[user] gave a strong blow against [target]'s jaw!</span>"
))
else
// ----- BODY ----- //
switch(attack_damage)
if(1 to 2) user.visible_message("<span class='danger'>[user] threw a glancing punch at [target]'s [organ]!</span>")
if(1 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target] in \his [organ]!</span>")
if(1 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target] in [target.get_pronoun("his")] [organ]!</span>")
if(5)
user.visible_message(pick(
50; "<span class='danger'>[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!</span>",
50; "<span class='danger'>[user] smashed [user.get_pronoun("his")] [pick(attack_noun)] into [target]'s [organ]!</span>",
50; "<span class='danger'>[user] landed a striking [pick(attack_noun)] on [target]'s [organ]!</span>"
))
else
@@ -236,7 +236,7 @@ var/global/list/sparring_attack_cache = list()
switch(attack_damage)
if(1 to 2) user.visible_message("<span class='danger'>[user] threw [target] a glancing [pick(attack_noun)] to the [organ]!</span>") //it's not that they're kicking lightly, it's that the kick didn't quite connect
if(3 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target] in \his [organ]!</span>")
if(3 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target] in [target.get_pronoun("his")] [organ]!</span>")
if(5) user.visible_message("<span class='danger'>[user] landed a strong [pick(attack_noun)] against [target]'s [organ]!</span>")
/datum/unarmed_attack/stomp
@@ -282,8 +282,8 @@ var/global/list/sparring_attack_cache = list()
attack_damage = Clamp(attack_damage, 1, 5)
switch(attack_damage)
if(1 to 4) user.visible_message("<span class='danger'>[pick("[user] stomped on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!</span>")
if(5) user.visible_message("<span class='danger'>[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]!</span>") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
if(1 to 4) user.visible_message("<span class='danger'>[pick("[user] stomped on", "[user] slammed [user.get_pronoun("his")] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!</span>")
if(5) user.visible_message("<span class='danger'>[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [user.get_pronoun("his")] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!</span>") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
/datum/unarmed_attack/light_strike
damage_type = PAIN
@@ -231,11 +231,11 @@
if(!allowed(usr))
to_chat(user, SPAN_WARNING("Access denied."))
return
user.visible_message(SPAN_NOTICE("\The [user] swipes \his ID card through \the [src], attempting to reboot it."), SPAN_NOTICE("You swipe your ID card through \the [src], attempting to reboot it."))
user.visible_message(SPAN_NOTICE("\The [user] swipes [user.get_pronoun("his")] ID card through \the [src], attempting to reboot it."), SPAN_NOTICE("You swipe your ID card through \the [src], attempting to reboot it."))
request_player()
return
else
user.visible_message(SPAN_WARNING("\The [user] swipes \his ID card through \the [src], attempting to shut it down."), SPAN_WARNING("You swipe your ID card through \the [src], attempting to shut it down."))
user.visible_message(SPAN_WARNING("\The [user] swipes [user.get_pronoun("his")] ID card through \the [src], attempting to shut it down."), SPAN_WARNING("You swipe your ID card through \the [src], attempting to shut it down."))
if(emagged)
return
if(allowed(user))
@@ -273,7 +273,7 @@
to_chat(src, "<b>Obey these laws:</b>")
laws.show_laws(src)
to_chat(src, SPAN_DANGER("ALERT: [user.real_name] is your new master. Obey your new laws and \his commands."))
to_chat(src, SPAN_DANGER("ALERT: [user.real_name] is your new master. Obey your new laws and their commands."))
update_icon()
return TRUE
@@ -469,9 +469,9 @@
var/turf/T = get_turf(src)
if (!T || AreConnectedZLevels(my_home_z, T.z))
return FALSE
if(!self_destructing)
to_chat(src, SPAN_DANGER("WARNING: Removal from [current_map.company_name] property detected. Anti-Theft mode activated."))
to_chat(src, SPAN_DANGER("WARNING: Removal from [current_map.company_name] property detected. Anti-Theft mode activated."))
start_self_destruct(TRUE)
return TRUE
@@ -480,4 +480,4 @@
for(var/mob/living/silicon/robot/drone/D in mob_list)
if(D.key && D.client)
drones++
return drones >= config.max_maint_drones
return drones >= config.max_maint_drones
@@ -57,17 +57,16 @@
/mob/living/simple_animal/hostile/commanded/bear/proc/command_dance()
visible_message("\The [src] starts to dance!.")
var/datum/gender/G = gender_datums[gender]
for(var/i in 1 to 10)
if(stance != COMMANDED_MISC || incapacitated()) //something has stopped this ride.
return
var/message = pick(
"moves [G.his] head back and forth!",
"bobs [G.his] booty!",
"shakes [G.his] paws in the air!",
"wiggles [G.his] ears!",
"taps [G.his] foot!",
"shrugs [G.his] shoulders!",
"moves [get_pronoun("his")] head back and forth!",
"bobs [get_pronoun("his")] booty!",
"shakes [get_pronoun("his")] paws in the air!",
"wiggles [get_pronoun("his")] ears!",
"taps [get_pronoun("his")] foot!",
"shrugs [get_pronoun("his")] shoulders!",
"dances like you've never seen!")
if(dir != WEST)
set_dir(WEST)
@@ -77,4 +76,4 @@
sleep(30)
stance = COMMANDED_STOP
set_dir(SOUTH)
visible_message("\The [src] bows, finished with [G.his] dance.")
visible_message("\The [src] bows, finished with [get_pronoun("his")] dance.")
-3
View File
@@ -729,9 +729,6 @@
/mob/proc/is_ready()
return client && !!mind
/mob/proc/get_gender()
return gender
/mob/proc/see(message)
if(!is_active())
return 0
+1 -1
View File
@@ -279,7 +279,7 @@
if(isslime(affecting))
to_chat(assailant, SPAN_NOTICE("You try to squeeze [affecting], but your hands sink right through!"))
return
assailant.visible_message(SPAN_WARNING("[assailant] reinforces \his grip on [affecting]'s neck'!"))
assailant.visible_message(SPAN_WARNING("[assailant] reinforces [assailant.get_pronoun("his")] grip on [affecting]'s neck'!"))
state = GRAB_NECK
icon_state = "grabbed+1"
affecting.attack_log += "\[[time_stamp()]\] <font color='orange'>Has had their neck grabbed by [assailant.name] ([assailant.ckey])</font>"
+1 -1
View File
@@ -87,7 +87,7 @@
return
if(target.lying)
return
attacker.visible_message("<span class='danger'>[attacker] thrusts \his head into [target]'s skull!</span>")
attacker.visible_message("<span class='danger'>[attacker] thrusts [attacker.get_pronoun("his")] head into [target]'s skull!</span>")
var/damage = 20
if(attacker.mob_size >= 10)
+1 -52
View File
@@ -1056,57 +1056,6 @@ proc/is_blind(A)
/mob/living/carbon/alien/diona/get_vessel(create = FALSE)
. = vessel
#define POSESSIVE_PRONOUN 0
#define POSESSIVE_ADJECTIVE 1
#define REFLEXIVE 2
#define SUBJECTIVE_PERSONAL 3
#define OBJECTIVE_PERSONAL 4
/mob/proc/get_pronoun(var/type)
switch (type)
if (POSESSIVE_PRONOUN)
switch(gender)
if (MALE)
return "his"
if (FEMALE)
return "hers"
else
return "theirs"
if (POSESSIVE_ADJECTIVE)
switch(gender)
if (MALE)
return "his"
if (FEMALE)
return "her"
else
return "their"
if (REFLEXIVE)
switch(gender)
if (MALE)
return "himself"
if (FEMALE)
return "herself"
else
return "themselves"
if (SUBJECTIVE_PERSONAL)
switch(gender)
if (MALE)
return "he"
if (FEMALE)
return "she"
else
return "they"
if (OBJECTIVE_PERSONAL)
switch(gender)
if (MALE)
return "him"
if (FEMALE)
return "her"
else
return "them"
else
return "its"//Something went wrong
#undef SAFE_PERP
/mob/proc/get_multitool(var/obj/P)
@@ -1232,4 +1181,4 @@ proc/is_blind(A)
if(used_accent && speaking?.allow_accents)
var/datum/accent/a = SSrecords.accents[used_accent]
var/final_icon = a.tag_icon
return "<IMG src='\ref['./icons/accent_tags.dmi']' class='text_tag' iconstate='[final_icon]'>"
return "<IMG src='\ref['./icons/accent_tags.dmi']' class='text_tag' iconstate='[final_icon]'>"
@@ -26,7 +26,7 @@
if(headerdata)
data["_PC"] = headerdata
. = data
if(!istype(computer, /obj/item/modular_computer/silicon))
return
var/obj/item/modular_computer/silicon/true_computer = computer
@@ -38,7 +38,7 @@
VUEUI_SET_CHECK(data["dna"], host.master_dna, ., data)
VUEUI_SET_CHECK(data["prime"], host.pai_law0, ., data)
VUEUI_SET_CHECK(data["supplemental"], host.pai_laws, ., data)
/datum/computer_file/program/pai_directives/Topic(href, href_list)
. = ..()
@@ -48,7 +48,7 @@
if(!istype(true_computer.computer_host, /mob/living/silicon/pai))
return
var/mob/living/silicon/pai/host = true_computer.computer_host
if(href_list["getdna"])
var/mob/living/M = host.loc
var/count = 0
@@ -67,7 +67,7 @@
if(answer == "Yes")
var/turf/T = get_turf_or_move(host.loc)
for (var/mob/v in viewers(T))
v.show_message(SPAN_NOTICE("[M] presses \his thumb against [host]."), 3, SPAN_NOTICE("[host] makes a sharp clicking sound as it extracts DNA material from [M]."), 2)
v.show_message(SPAN_NOTICE("[M] presses [M.get_pronoun("his")] thumb against [host]."), 3, SPAN_NOTICE("[host] makes a sharp clicking sound as it extracts DNA material from [M]."), 2)
var/datum/dna/dna = M.dna
to_chat(host, "<font color = red><h3>[M]'s UE string : [dna.unique_enzymes]</h3></font>")
if(dna.unique_enzymes == host.master_dna)
@@ -75,5 +75,5 @@
else
to_chat(host, SPAN_WARNING("<b>Provided DNA does not match stored Master DNA.</b>"))
else
to_chat(host, SPAN_WARNING("[M] does not seem like \he [gender_datums[M.gender].is] going to provide a DNA sample willingly."))
to_chat(host, SPAN_WARNING("[M] does not seem like [M.get_pronoun("he")] [M.get_pronoun("is")] going to provide a DNA sample willingly."))
return 1
+2 -2
View File
@@ -484,7 +484,7 @@
if (istype(rig))
for (var/obj/item/rig_module/actuators/A in rig.installed_modules)
if (A.active && rig.check_power_cost(src, 10, A, 0))
visible_message(SPAN_NOTICE("\The [src] lands flawlessly with \his [rig]."),
visible_message(SPAN_NOTICE("\The [src] lands flawlessly with [src.get_pronoun("his")] [rig]."),
SPAN_NOTICE("You hear an electric <i>*whirr*</i> right after the slam!"))
return FALSE
@@ -725,7 +725,7 @@
else
L.apply_damage(damage, BRUTE)
L.visible_message(SPAN_DANGER("\The [L] had \the [src] fall onto \him!"),
L.visible_message(SPAN_DANGER("\The [L] had \the [src] fall onto [src.get_pronoun("him")]!"),
SPAN_DANGER("You had \the [src] fall onto you and strike you!"))
admin_attack_log((ismob(src) ? src : null), L, "fell onto", "was fallen on by", "fell ontop of")
+2 -2
View File
@@ -316,8 +316,8 @@
if(!use_check_and_message(user))
if(istype(P, /obj/item/flame/lighter/zippo))
class = "rose"
user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!</span>", \
user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like [user.get_pronoun("he")]'s trying to burn it!</span>", \
"<span class='[class]'>You hold \the [P] up to \the [src], burning it slowly.</span>")
playsound(src.loc, 'sound/bureaucracy/paperburn.ogg', 50, 1)
if(icon_state == "scrap")
+1 -1
View File
@@ -78,7 +78,7 @@
if(istype(P, /obj/item/flame/lighter/zippo))
class = "rose>"
user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!</span>", \
user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like [user.get_pronoun("he")]'s trying to burn it!</span>", \
"<span class='[class]'>You hold \the [P] up to \the [src], burning it slowly.</span>")
spawn(20)
+1 -1
View File
@@ -198,7 +198,7 @@
if(process_projectile(P, user, user, pick(BP_L_FOOT, BP_R_FOOT)))
handle_post_fire(user, user)
user.visible_message(
SPAN_DANGER("\The [user] shoots \himself in the foot with \the [src]!"),
SPAN_DANGER("\The [user] shoots [user.get_pronoun("himself")] in the foot with \the [src]!"),
SPAN_DANGER("You shoot yourself in the foot with \the [src]!")
)
M.drop_item()
@@ -153,7 +153,7 @@
H.apply_effect((rand(30,80)),IRRADIATE,blocked = H.getarmor(null, "rad"))
M.Weaken(5)
for (var/mob/V in viewers(src))
V.show_message("<span class='warning'>[M] writhes in pain as \his vacuoles boil.</span>", 3, "<span class='warning'>You hear the crunching of leaves.</span>", 2)
V.show_message("<span class='warning'>[M] writhes in pain as [M.get_pronoun("his")] vacuoles boil.</span>", 3, "<span class='warning'>You hear the crunching of leaves.</span>", 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("\red [M] is mutated by the radiation beam.", 3, "\red You hear the snapping of twigs.", 2)
@@ -106,10 +106,10 @@
if(.)
if(istype(target,/obj/item/clothing/mask/smokable/cigarette))
var/obj/item/clothing/mask/smokable/cigarette/S = target
S.light(SPAN_NOTICE("\The [user] snaps \his fingers and \the [S] lights up."))
S.light(SPAN_NOTICE("\The [user] snaps [user.get_pronoun("his")] fingers and \the [S] lights up."))
playsound(S.loc, "sparks", 50, 1)
else
var/datum/effect_system/sparks/spark_system
spark_system = bind_spark(src, 3)
spark_system.queue()
return TRUE
return TRUE
+2 -3
View File
@@ -5,9 +5,8 @@
var/use_He_is = "You are"
var/use_He_has = "You have"
if(istype(machine) || viewer != src)
var/datum/gender/G = gender_datums[gender]
use_He_is = "[G.He] [G.is]"
use_He_has = "[G.He] [G.has]"
use_He_is = "[get_pronoun("He")] [get_pronoun("is")]"
use_He_has = "[get_pronoun("He")] [get_pronoun("has")]"
var/list/dat = list()
@@ -68,7 +68,7 @@
if (reagents.get_reagent_amount(/datum/reagent/blood) < 1)
break
user.visible_message("<span class='warning'>[user] licks \his fangs dry, lowering \the [src].</span>", "<span class='notice'>You lick your fangs clean of the tasteless blood.</span>")
user.visible_message("<span class='warning'>[user] licks [user.get_pronoun("his")] fangs dry, lowering \the [src].</span>", "<span class='notice'>You lick your fangs clean of the tasteless blood.</span>")
being_feed = FALSE
else
..()
@@ -12,7 +12,7 @@
/obj/item/reagent_containers/food/drinks/cans/attack(mob/living/M, mob/user, var/target_zone)
if(iscarbon(M) && !reagents.total_volume && user.a_intent == I_HURT && target_zone == BP_HEAD)
if(M == user)
user.visible_message(SPAN_WARNING("[user] crushes the can of [src.name] on [user.get_pronoun(1)] forehead!"), SPAN_NOTICE("You crush the can of [src.name] on your forehead."))
user.visible_message(SPAN_WARNING("[user] crushes the can of [src.name] on [user.get_pronoun("his")] forehead!"), SPAN_NOTICE("You crush the can of [src.name] on your forehead."))
else
user.visible_message(SPAN_WARNING("[user] crushes the can of [src.name] on [M]'s forehead!"), SPAN_NOTICE("You crush the can of [src.name] on [M]'s forehead."))
M.apply_damage(2,BRUTE,BP_HEAD) // ouch.
@@ -48,7 +48,7 @@
playsound(loc, 'sound/effects/toothbrush.ogg', 15, 1)
if(do_after(user, 30))
user.visible_message(
"<span class='notice'>\The [user] brushes [user.get_pronoun(1)] teeth with \the [src]</span>",
"<span class='notice'>\The [user] brushes [user.get_pronoun("his")] teeth with \the [src]</span>",
"<span class='notice'>You brush your teeth with \the [src].</span>")
reagents.trans_to_mob(user, amount_per_transfer_from_this, CHEM_BREATHE)
update_icon()
@@ -120,4 +120,4 @@
icon_state = "toothbrush_g"
/obj/item/reagent_containers/toothbrush/red
icon_state = "toothbrush_r"
icon_state = "toothbrush_r"
+2 -2
View File
@@ -343,7 +343,7 @@
ui_interact(user)
/obj/machinery/power/supermatter/attack_hand(mob/user as mob)
user.visible_message("<span class=\"warning\">\The [user] reaches out and touches \the [src], inducing a resonance... \his body starts to glow and bursts into flames before flashing into ash.</span>",\
user.visible_message("<span class=\"warning\">\The [user] reaches out and touches \the [src], inducing a resonance... [user.get_pronoun("he")] body starts to glow and bursts into flames before flashing into ash.</span>",\
"<span class=\"danger\">You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"</span>",\
"<span class=\"warning\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>")
@@ -403,7 +403,7 @@
if(isprojectile(AM))
return
if(istype(AM, /mob/living))
AM.visible_message("<span class=\"warning\">\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.</span>",\
AM.visible_message("<span class=\"warning\">\The [AM] slams into \the [src] inducing a resonance... [AM.get_pronoun("his")] body starts to glow and catch flame before flashing into ash.</span>",\
"<span class=\"danger\">You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"</span>",\
"<span class=\"warning\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>")
else if(!grav_pulling) //To prevent spam, detonating supermatter does not indicate non-mobs being destroyed
+2 -2
View File
@@ -169,7 +169,7 @@
if(affected.internal_organs && affected.internal_organs.len)
if(prob(40))
var/obj/item/organ/O = pick(affected.internal_organs) //TODO weight by organ size
user.visible_message(SPAN_DANGER("A wayward piece of [target]'s [affected.encased] pierces \his [O.name]!"))
user.visible_message(SPAN_DANGER("A wayward piece of [target]'s [affected.encased] pierces [target.get_pronoun("his")] [O.name]!"))
O.bruise()
/decl/surgery_step/open_encased/mend
@@ -209,4 +209,4 @@
target.custom_pain("Something hurts horribly in your [affected.name]!", 75)
..()
affected.open = ORGAN_OPEN_RETRACTED
affected.open = ORGAN_OPEN_RETRACTED
+2 -2
View File
@@ -92,5 +92,5 @@
/decl/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool)
user.visible_message(SPAN_WARNING("[user]'s hand slips, causing \him to miss the core!"), \
SPAN_WARNING("Your hand slips, causing you to miss the core!"))
user.visible_message(SPAN_WARNING("[user]'s hand slips, causing [user.get_pronoun("him")] to miss the core!"), \
SPAN_WARNING("Your hand slips, causing you to miss the core!"))