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