diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 096d8b25a61..59e735faf62 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -1,22 +1,31 @@
+// Clothing flags, organized in roughly top-bottom
+#define EXAMINE_SKIPHELMET 0x0001
+#define EXAMINE_SKIPEARS 0x0002
+#define EXAMINE_SKIPEYEWEAR 0x0004
+#define EXAMINE_SKIPMASK 0x0008
+#define EXAMINE_SKIPJUMPSUIT 0x0010
+#define EXAMINE_SKIPTIE 0x0020
+#define EXAMINE_SKIPHOLSTER 0x0040
+#define EXAMINE_SKIPSUITSTORAGE 0x0080
+#define EXAMINE_SKIPBACKPACK 0x0100
+#define EXAMINE_SKIPGLOVES 0x0200
+#define EXAMINE_SKIPBELT 0x0400
+#define EXAMINE_SKIPSHOES 0x0800
+
+// Body flags
+#define EXAMINE_SKIPHEAD 0x0001
+#define EXAMINE_SKIPEYES 0x0002
+#define EXAMINE_SKIPFACE 0x0004
+#define EXAMINE_SKIPBODY 0x0008
+#define EXAMINE_SKIPGROIN 0x0010
+#define EXAMINE_SKIPARMS 0x0020
+#define EXAMINE_SKIPHANDS 0x0040
+#define EXAMINE_SKIPLEGS 0x0080
+#define EXAMINE_SKIPFEET 0x0100
+
/mob/living/carbon/human/examine(mob/user)
-
- var/skipgloves = 0
- var/skipsuitstorage = 0
- var/skipjumpsuit = 0
- var/skipshoes = 0
- var/skipmask = 0
- var/skiptie = 0
- var/skipholster = 0
-
- var/skipears = 0
- var/skipeyes = 0
- var/skipface = 0
- var/skipchest = 0
- var/skipgroin = 0
- var/skiphands = 0
- var/skiplegs = 0
- var/skiparms = 0
- var/skipfeet = 0
+ var/skip_gear = 0
+ var/skip_body = 0
if(alpha <= 50)
src.loc.examine(user)
@@ -26,94 +35,96 @@
//exosuits and helmets obscure our view and stuff.
if(wear_suit)
- skipsuitstorage |= wear_suit.flags_inv & HIDESUITSTORAGE
+ if(wear_suit.flags_inv & HIDESUITSTORAGE)
+ skip_gear |= EXAMINE_SKIPSUITSTORAGE
+
if(wear_suit.flags_inv & HIDEJUMPSUIT)
- skiparms |= 1
- skiplegs |= 1
- skipchest |= 1
- skipgroin |= 1
- skipjumpsuit |= 1
- skiptie |= 1
- skipholster |= 1
+ skip_body |= EXAMINE_SKIPARMS | EXAMINE_SKIPLEGS | EXAMINE_SKIPBODY | EXAMINE_SKIPGROIN
+ skip_gear |= EXAMINE_SKIPJUMPSUIT | EXAMINE_SKIPTIE | EXAMINE_SKIPHOLSTER
+
else if(wear_suit.flags_inv & HIDETIE)
- skiptie |= 1
- skipholster |= 1
+ skip_gear |= EXAMINE_SKIPTIE | EXAMINE_SKIPHOLSTER
+
else if(wear_suit.flags_inv & HIDEHOLSTER)
- skipholster |= 1
+ skip_gear |= EXAMINE_SKIPHOLSTER
+
if(wear_suit.flags_inv & HIDESHOES)
- skipshoes |= 1
- skipfeet |= 1
+ skip_gear |= EXAMINE_SKIPSHOES
+ skip_body |= EXAMINE_SKIPFEET
+
if(wear_suit.flags_inv & HIDEGLOVES)
- skipgloves |= 1
- skiphands |= 1
+ skip_gear |= EXAMINE_SKIPGLOVES
+ skip_body |= EXAMINE_SKIPHANDS
if(w_uniform)
- skiplegs |= w_uniform.body_parts_covered & LEGS
- skiparms |= w_uniform.body_parts_covered & ARMS
- skipchest |= w_uniform.body_parts_covered & UPPER_TORSO
- skipgroin |= w_uniform.body_parts_covered & LOWER_TORSO
+ if(w_uniform.body_parts_covered & LEGS)
+ skip_body |= EXAMINE_SKIPLEGS
+ if(w_uniform.body_parts_covered & ARMS)
+ skip_body |= EXAMINE_SKIPARMS
+ if(w_uniform.body_parts_covered & UPPER_TORSO)
+ skip_body |= EXAMINE_SKIPBODY
+ if(w_uniform.body_parts_covered & LOWER_TORSO)
+ skip_body |= EXAMINE_SKIPGROIN
- if(gloves)
- skiphands |= gloves.body_parts_covered & HANDS
+ if(gloves && (gloves.body_parts_covered & HANDS))
+ skip_body |= EXAMINE_SKIPHANDS
- if(shoes)
- skipfeet |= shoes.body_parts_covered & FEET
+ if(shoes && (shoes.body_parts_covered & FEET))
+ skip_body |= EXAMINE_SKIPFEET
if(head)
- skipmask |= head.flags_inv & HIDEMASK
- skipeyes |= head.flags_inv & HIDEEYES
- skipears |= head.flags_inv & HIDEEARS
- skipface |= head.flags_inv & HIDEFACE
+ if(head.flags_inv & HIDEMASK)
+ skip_gear |= EXAMINE_SKIPMASK
+ if(head.flags_inv & HIDEEYES)
+ skip_gear |= EXAMINE_SKIPEYEWEAR
+ skip_body |= EXAMINE_SKIPEYES
+ if(head.flags_inv & HIDEEARS)
+ skip_gear |= EXAMINE_SKIPEARS
+ if(head.flags_inv & HIDEFACE)
+ skip_body|= EXAMINE_SKIPFACE
- if(wear_mask)
- skipface |= wear_mask.flags_inv & HIDEFACE
+ if(wear_mask && (wear_mask.flags_inv & HIDEFACE))
+ skip_body |= EXAMINE_SKIPFACE
//This is what hides what
var/list/hidden = list(
- BP_GROIN = skipgroin,
- BP_TORSO = skipchest,
- BP_HEAD = skipface,
- BP_L_ARM = skiparms,
- BP_R_ARM = skiparms,
- BP_L_HAND= skiphands,
- BP_R_HAND= skiphands,
- BP_L_FOOT= skipfeet,
- BP_R_FOOT= skipfeet,
- BP_L_LEG = skiplegs,
- BP_R_LEG = skiplegs)
+ BP_GROIN = skip_body & EXAMINE_SKIPGROIN,
+ BP_TORSO = skip_body & EXAMINE_SKIPBODY,
+ BP_HEAD = skip_body & EXAMINE_SKIPHEAD,
+ BP_L_ARM = skip_body & EXAMINE_SKIPARMS,
+ BP_R_ARM = skip_body & EXAMINE_SKIPARMS,
+ BP_L_HAND= skip_body & EXAMINE_SKIPHANDS,
+ BP_R_HAND= skip_body & EXAMINE_SKIPHANDS,
+ BP_L_FOOT= skip_body & EXAMINE_SKIPFEET,
+ BP_R_FOOT= skip_body & EXAMINE_SKIPFEET,
+ BP_L_LEG = skip_body & EXAMINE_SKIPLEGS,
+ BP_R_LEG = skip_body & EXAMINE_SKIPLEGS)
var/list/msg = list("*---------*\nThis is ")
-
- 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]
-
- else if(species && species.ambiguous_genders)
- var/can_detect_gender = FALSE
- if(isobserver(user)) // Ghosts are all knowing.
- can_detect_gender = TRUE
- if(issilicon(user)) // Borgs are too because science.
- can_detect_gender = TRUE
- else if(ishuman(user))
- var/mob/living/carbon/human/H = user
- if(H.species && istype(species, H.species))
- can_detect_gender = TRUE
-
- if(!can_detect_gender)
- T = gender_datums[PLURAL] // Species with ambiguous_genders will not show their true gender upon examine if the examiner is not also the same species.
- 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 += "[src.name]"
- if(!(skipjumpsuit && skipface))
+ var/datum/gender/T = gender_datums[get_visible_gender()]
+
+ if((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)) //big suits/masks/helmets make it hard to tell their gender
+ T = gender_datums[PLURAL]
+
+ else if(species && species.ambiguous_genders)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(H.species && !istype(species, H.species))
+ T = gender_datums[PLURAL]// Species with ambiguous_genders will not show their true gender upon examine if the examiner is not also the same species.
+ if(!(issilicon(user) || isobserver(user))) // Ghosts and borgs are all knowing
+ T = gender_datums[PLURAL]
+
+ 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 '[((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)) ? PLURAL : gender]'")
+
+ if(!((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)))
if(looks_synth)
var/use_gender = "a synthetic"
if(gender == MALE)
@@ -128,33 +139,37 @@
var/extra_species_text = species.get_additional_examine_text(src)
if(extra_species_text)
- msg += "[extra_species_text]
"
+ msg += "[extra_species_text]"
msg += "
"
//uniform
- if(w_uniform && !skipjumpsuit && w_uniform.show_examine)
+ if(w_uniform && !(skip_gear & EXAMINE_SKIPJUMPSUIT) && w_uniform.show_examine)
//Ties
var/tie_msg
- if(istype(w_uniform,/obj/item/clothing/under) && !skiptie)
+ if(istype(w_uniform,/obj/item/clothing/under) && !(skip_gear & EXAMINE_SKIPTIE))
var/obj/item/clothing/under/U = w_uniform
if(U.accessories.len)
- if(skipholster)
- var/list/accessories_visible = new/list() //please let this fix the stupid fucking runtimes
+ var/list/accessories_visible = list() //please let this fix the stupid fucking runtimes
+ if(skip_gear & EXAMINE_SKIPHOLSTER)
+ for(var/obj/item/clothing/accessory/A in U.accessories)
+ if(A.show_examine && !istype(A, /obj/item/clothing/accessory/holster)) // If we're supposed to skip holsters, actually skip them
+ accessories_visible.Add(A)
+ else
for(var/obj/item/clothing/accessory/A in U.accessories)
if(A.concealed_holster == 0 && A.show_examine)
accessories_visible.Add(A)
- if(accessories_visible.len)
- tie_msg += ". Attached to it is [english_list(accessories_visible)]"
- else tie_msg += ". Attached to it is [english_list(U.accessories)]"
+
+ if(accessories_visible.len)
+ tie_msg += " Attached to it is [english_list(accessories_visible)]."
if(w_uniform.blood_DNA)
- msg += "[T.He] [T.is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name][tie_msg]!\n"
+ msg += "[T.He] [T.is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]\n"
else
msg += "[T.He] [T.is] wearing \icon[w_uniform] \a [w_uniform][tie_msg].\n"
//head
- if(head && head.show_examine)
+ if(head && !(skip_gear & EXAMINE_SKIPHELMET) && head.show_examine)
if(head.blood_DNA)
msg += "[T.He] [T.is] wearing \icon[head] [head.gender==PLURAL?"some":"a"] [(head.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [head.name] on [T.his] head!\n"
else
@@ -166,22 +181,22 @@
if(istype(wear_suit,/obj/item/clothing/suit))
var/obj/item/clothing/suit/U = wear_suit
if(U.accessories.len)
- tie_msg += ". Attached to it is [english_list(U.accessories)]"
+ tie_msg += " Attached to it is [english_list(U.accessories)]."
if(wear_suit.blood_DNA)
- msg += "[T.He] [T.is] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_suit.name]!\n"
+ msg += "[T.He] [T.is] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_suit.name][tie_msg]!\n"
else
- msg += "[T.He] [T.is] wearing \icon[wear_suit] \a [wear_suit][tie_msg].\n"
+ msg += "[T.He] [T.is] wearing \icon[wear_suit] \a [wear_suit].[tie_msg]\n"
//suit/armour storage
- if(s_store && !skipsuitstorage && s_store.show_examine)
+ if(s_store && !(skip_gear & EXAMINE_SKIPSUITSTORAGE) && s_store.show_examine)
if(s_store.blood_DNA)
msg += "[T.He] [T.is] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!\n"
else
msg += "[T.He] [T.is] carrying \icon[s_store] \a [s_store] on [T.his] [wear_suit.name].\n"
//back
- if(back && back.show_examine)
+ if(back && !(skip_gear & EXAMINE_SKIPBACKPACK) && back.show_examine)
if(back.blood_DNA)
msg += "[T.He] [T.has] \icon[back] [back.gender==PLURAL?"some":"a"] [(back.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [back] on [T.his] back.\n"
else
@@ -202,12 +217,12 @@
msg += "[T.He] [T.is] holding \icon[r_hand] \a [r_hand] in [T.his] right hand.\n"
//gloves
- if(gloves && !skipgloves && gloves.show_examine)
+ if(gloves && !(skip_gear & EXAMINE_SKIPGLOVES) && gloves.show_examine)
if(gloves.blood_DNA)
msg += "[T.He] [T.has] \icon[gloves] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!\n"
else
msg += "[T.He] [T.has] \icon[gloves] \a [gloves] on [T.his] hands.\n"
- else if(blood_DNA)
+ else if(blood_DNA && !(skip_body & EXAMINE_SKIPHANDS))
msg += "[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!\n"
//handcuffed?
@@ -222,23 +237,23 @@
msg += "[T.He] [T.is] \icon[buckled] buckled to [buckled]!\n"
//belt
- if(belt && belt.show_examine)
+ if(belt && !(skip_gear & EXAMINE_SKIPBELT) && belt.show_examine)
if(belt.blood_DNA)
msg += "[T.He] [T.has] \icon[belt] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!\n"
else
msg += "[T.He] [T.has] \icon[belt] \a [belt] about [T.his] waist.\n"
//shoes
- if(shoes && !skipshoes && shoes.show_examine)
+ if(shoes && !(skip_gear & EXAMINE_SKIPSHOES) && shoes.show_examine)
if(shoes.blood_DNA)
msg += "[T.He] [T.is] wearing \icon[shoes] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!\n"
else
msg += "[T.He] [T.is] wearing \icon[shoes] \a [shoes] on [T.his] feet.\n"
- else if(feet_blood_DNA)
+ else if(feet_blood_DNA && !(skip_body & EXAMINE_SKIPHANDS))
msg += "[T.He] [T.has] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!\n"
//mask
- if(wear_mask && !skipmask && wear_mask.show_examine)
+ if(wear_mask && !(skip_gear & EXAMINE_SKIPMASK) && wear_mask.show_examine)
var/descriptor = "on [T.his] face"
if(istype(wear_mask, /obj/item/weapon/grenade) && check_has_mouth())
descriptor = "in [T.his] mouth"
@@ -249,18 +264,18 @@
msg += "[T.He] [T.has] \icon[wear_mask] \a [wear_mask] [descriptor].\n"
//eyes
- if(glasses && !skipeyes && glasses.show_examine)
+ if(glasses && !(skip_gear & EXAMINE_SKIPEYEWEAR) && glasses.show_examine)
if(glasses.blood_DNA)
msg += "[T.He] [T.has] \icon[glasses] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!\n"
else
msg += "[T.He] [T.has] \icon[glasses] \a [glasses] covering [T.his] eyes.\n"
//left ear
- if(l_ear && !skipears && l_ear.show_examine)
+ if(l_ear && !(skip_gear & EXAMINE_SKIPEARS) && l_ear.show_examine)
msg += "[T.He] [T.has] \icon[l_ear] \a [l_ear] on [T.his] left ear.\n"
//right ear
- if(r_ear && !skipears && r_ear.show_examine)
+ if(r_ear && !(skip_gear & EXAMINE_SKIPEARS) && r_ear.show_examine)
msg += "[T.He] [T.has] \icon[r_ear] \a [r_ear] on [T.his] right ear.\n"
//ID
@@ -296,41 +311,25 @@
msg += "[T.He] appears to have commited suicide... there is no hope of recovery.\n"
if(mSmallsize in mutations)
- msg += "[T.He] [T.is] small halfling!\n"
+ msg += "[T.He] [T.is] very short!\n"
- var/distance = get_dist(usr,src)
- if(istype(usr, /mob/observer/dead) || usr.stat == 2) // ghosts can see anything
- distance = 1
if (src.stat)
msg += "[T.He] [T.is]n't responding to anything around [T.him] and seems to be asleep.\n"
- if((stat == 2 || src.losebreath) && distance <= 3)
+ if((stat == 2 || src.losebreath) && get_dist(user, src) <= 3)
msg += "[T.He] [T.does] not appear to be breathing.\n"
- if(istype(usr, /mob/living/carbon/human) && !usr.stat && Adjacent(usr))
- usr.visible_message("[usr] checks [src]'s pulse.", "You check [src]'s pulse.")
+ if(istype(user, /mob/living/carbon/human) && !user.stat && Adjacent(user))
+ user.visible_message("[usr] checks [src]'s pulse.", "You check [src]'s pulse.")
spawn(15)
- if(distance <= 1 && usr.stat != 1)
+ if(isobserver(user) || (Adjacent(user) && !user.stat)) // If you're a corpse then you can't exactly check their pulse, but ghosts can see anything
if(pulse == PULSE_NONE)
- usr << "[T.He] [T.has] no pulse[src.client ? "" : " and [T.his] soul has departed"]..."
+ to_chat(user, "[T.He] [T.has] no pulse[src.client ? "" : " and [T.his] soul has departed"]...")
else
- usr << "[T.He] [T.has] a pulse!"
+ to_chat(user, "[T.He] [T.has] a pulse!")
if(fire_stacks)
msg += "[T.He] [T.is] covered in some liquid.\n"
if(on_fire)
msg += "[T.He] [T.is] on fire!.\n"
- msg += ""
-
- /*
- if(nutrition < 100)
- msg += "[T.He] [T.is] severely malnourished.\n"
- else if(nutrition >= 500)
- /*if(usr.nutrition < 100)
- msg += "[T.He] [T.is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
- else*/
- msg += "[T.He] [T.is] quite chubby.\n"
- */
-
- msg += ""
var/ssd_msg = species.get_ssd(src)
if(ssd_msg && (!should_have_organ("brain") || has_brain()) && stat != DEAD)
@@ -363,6 +362,7 @@
if(temp.status & ORGAN_DESTROYED)
wound_flavor_text["[temp.name]"] = "[T.He] [T.is] missing [T.his] [temp.name].\n"
continue
+
if(!looks_synth && temp.robotic == ORGAN_ROBOT)
if(!(temp.brute_dam + temp.burn_dam))
wound_flavor_text["[temp.name]"] = "[T.He] [T.has] a [temp.name].\n"
@@ -379,7 +379,7 @@
wound_flavor_text["[temp.name]"] = ""
if(temp.dislocated == 2)
wound_flavor_text["[temp.name]"] += "[T.His] [temp.joint] is dislocated!
"
- if(((temp.status & ORGAN_BROKEN) && temp.brute_dam > temp.min_broken_damage) || (temp.status & ORGAN_MUTATED))
+ if(temp.brute_dam > temp.min_broken_damage || (temp.status & (ORGAN_BROKEN | ORGAN_MUTATED)))
wound_flavor_text["[temp.name]"] += "[T.His] [temp.name] is dented and swollen!
"
if(temp.germ_level > INFECTION_LEVEL_TWO && !(temp.status & ORGAN_DEAD))
@@ -387,8 +387,8 @@
else if(temp.status & ORGAN_DEAD)
wound_flavor_text["[temp.name]"] += "[T.His] [temp.name] looks rotten!
"
- if(!wound_flavor_text["[temp.name]"] && (temp.status & ORGAN_BLEEDING))
- is_bleeding["[temp.name]"] = "[T.His] [temp.name] is bleeding!
"
+ if(temp.status & ORGAN_BLEEDING)
+ is_bleeding["[temp.name]"] += "[T.His] [temp.name] is bleeding!
"
if(temp.applied_pressure == src)
applying_pressure = "[T.He] is applying pressure to [T.his] [temp.name].
"
@@ -402,47 +402,40 @@
if(digitalcamo)
msg += "[T.He] [T.is] repulsively uncanny!\n"
- if(hasHUD(usr,"security"))
- var/perpname = "wot"
+ if(hasHUD(user,"security"))
+ var/perpname = name
var/criminal = "None"
if(wear_id)
- var/obj/item/weapon/card/id/I = wear_id.GetID()
- if(I)
+ if(istype(wear_id, /obj/item/weapon/card/id))
+ var/obj/item/weapon/card/id/I = wear_id
perpname = I.registered_name
- else
- perpname = name
- else
- perpname = name
+ else if(istype(wear_id, /obj/item/device/pda))
+ var/obj/item/device/pda/P = wear_id
+ perpname = P.owner
- if(perpname)
- for (var/datum/data/record/E in data_core.general)
- if(E.fields["name"] == perpname)
- for (var/datum/data/record/R in data_core.security)
- if(R.fields["id"] == E.fields["id"])
- criminal = R.fields["criminal"]
+ for (var/datum/data/record/R in data_core.security)
+ if(R.fields["name"] == perpname)
+ criminal = R.fields["criminal"]
- msg += "Criminal status: \[[criminal]\]\n"
- msg += "Security records: \[View\] \[Add comment\]\n"
+ msg += "Criminal status: \[[criminal]\]\n"
+ msg += "Security records: \[View\] \[Add comment\]\n"
- if(hasHUD(usr,"medical"))
- var/perpname = "wot"
+ if(hasHUD(user,"medical"))
+ var/perpname = name
var/medical = "None"
if(wear_id)
- if(istype(wear_id,/obj/item/weapon/card/id))
- perpname = wear_id:registered_name
- else if(istype(wear_id,/obj/item/device/pda))
- var/obj/item/device/pda/tempPda = wear_id
- perpname = tempPda.owner
- else
- perpname = src.name
+ if(istype(wear_id, /obj/item/weapon/card/id))
+ var/obj/item/weapon/card/id/I = wear_id
+ perpname = I.registered_name
+ else if(istype(wear_id, /obj/item/device/pda))
+ var/obj/item/device/pda/P = wear_id
+ perpname = P.owner
- for (var/datum/data/record/E in data_core.general)
- if (E.fields["name"] == perpname)
- for (var/datum/data/record/R in data_core.general)
- if (R.fields["id"] == E.fields["id"])
- medical = R.fields["p_stat"]
+ for (var/datum/data/record/R in data_core.medical)
+ if (R.fields["name"] == perpname)
+ medical = R.fields["p_stat"]
msg += "Physical status: \[[medical]\]\n"
msg += "Medical records: \[View\] \[Add comment\]\n"
@@ -453,12 +446,12 @@
msg += "*---------*
"
msg += applying_pressure
- if (pose)
- if( findtext(pose,".",lentext(pose)) == 0 && findtext(pose,"!",lentext(pose)) == 0 && findtext(pose,"?",lentext(pose)) == 0 )
+ if(pose)
+ if(!findtext(pose, regex("\[.?!]$"))) // Will be zero if the last character is not a member of [.?!]
pose = addtext(pose,".") //Makes sure all emotes end with a period.
msg += "[T.He] [pose]"
- user << jointext(msg, null)
+ to_chat(user, jointext(msg, null))
//Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records.
/proc/hasHUD(mob/M as mob, hudtype)
@@ -469,8 +462,6 @@
return istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud)
if("medical")
return istype(H.glasses, /obj/item/clothing/glasses/hud/health)
- else
- return 0
else if(istype(M, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = M
switch(hudtype)
@@ -478,7 +469,4 @@
return R.hudmode == "Security"
if("medical")
return R.hudmode == "Medical"
- else
- return 0
- else
- return 0
+ return 0
diff --git a/html/changelogs/atermonera-refactorexamine.yml b/html/changelogs/atermonera-refactorexamine.yml
new file mode 100644
index 00000000000..46b0c302c40
--- /dev/null
+++ b/html/changelogs/atermonera-refactorexamine.yml
@@ -0,0 +1,4 @@
+author: Atermonera
+delete-after: True
+changes:
+ - tweak: "Human examine code has received a major refactor. If you encounter unusual behaviour that seems wrong, please report it."
\ No newline at end of file