diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 848a195c70..c5ae3b27d3 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -415,6 +415,7 @@ client break M.real_name = new_name M.name = new_name + M.original_name = new_name href_list["datumrefresh"] = href_list["rename"] else if (href_list["varnameedit"]) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index a7728a71da..53f2887fe8 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -485,7 +485,6 @@ var/registered_name = null // The name registered_name on the card var/assignment = null - var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit var/dorm = 0 // determines if this ID has claimed a dorm already /obj/item/weapon/card/id/silver diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index d269a610a6..090dd61653 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -147,6 +147,7 @@ if(clonename) src.occupant.real_name = clonename + src.occupant.original_name = clonename //we don't want random ghost names should we die again. else src.occupant.real_name = "clone" //No null names!! diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index 1efd35857e..1a6fb874c1 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -878,6 +878,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if (realName) podman.real_name = realName + podman.original_name = realName //don't want a random ghost name if we die again else podman.real_name = "pod person" //No null names!! diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index 14937530ac..4d0200afef 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -661,8 +661,7 @@ datum affecting.take_damage(25, 0) M:UpdateDamageIcon() M:emote("scream") - M << "\red Your face has become disfigured!" - M.real_name = "Unknown" + M:disfigure_face() else M.take_organ_damage(min(15, volume * 2)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl else @@ -714,8 +713,7 @@ datum M:UpdateDamageIcon() M:emote("scream") if(prob(15)) - M << "\red Your face has become disfigured!" - M.real_name = "Unknown" + M:disfigure_face() else if(istype(M, /mob/living/carbon/monkey) && M:wear_mask) del (M:wear_mask) @@ -733,8 +731,7 @@ datum M:UpdateDamageIcon() M:emote("scream") if(prob(15)) - M << "\red Your face has become disfigured!" - M.real_name = "Unknown" + M:disfigure_face() else M.take_organ_damage(min(15, volume * 4)) diff --git a/code/modules/mob/living/carbon/human/Tajara/tajaran.dm b/code/modules/mob/living/carbon/human/Tajara/tajaran.dm index 827aacc153..73f69f90c2 100644 --- a/code/modules/mob/living/carbon/human/Tajara/tajaran.dm +++ b/code/modules/mob/living/carbon/human/Tajara/tajaran.dm @@ -164,8 +164,7 @@ overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) if (wear_id) - if(wear_id.over_jumpsuit) - overlays += image("icon" = 'mob.dmi', "icon_state" = "id[!lying ? null : "2"]", "layer" = MOB_LAYER) + overlays += image("icon" = 'mob.dmi', "icon_state" = "id[!lying ? null : "2"]", "layer" = MOB_LAYER) if (client) client.screen -= hud_used.intents @@ -354,37 +353,8 @@ overlays += image("icon" = 'belt.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) belt.screen_loc = ui_belt - if ((wear_mask && !(wear_mask.see_face)) || (head && !(head.see_face))) // can't see the face - if (wear_id) - if (istype(wear_id, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/id = wear_id - if (id.registered_name) - name = id.registered_name - else - name = "Unknown" - else if (istype(wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = wear_id - if (pda.owner) - name = pda.owner - else - name = "Unknown" - else - name = "Unknown" - else - if (wear_id) - if (istype(wear_id, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/id = wear_id - if (id.registered_name != real_name) - name = "[real_name] (as [id.registered_name])" - - else if (istype(wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = wear_id - if (pda.owner) - if (pda.owner != real_name) - name = "[real_name] (as [pda.owner])" - else - name = real_name + name = get_visible_name() if (wear_id) wear_id.screen_loc = ui_id diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index d7eeb6c75f..547685a2b1 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -99,8 +99,11 @@ /mob/living/carbon/human/proc/ChangeToHusk() if(mutations & HUSK) return + var/datum/organ/external/head/head = get_organ("head") + if(head) + head.disfigured = 1 + name = get_visible_name() mutations |= HUSK - real_name = "Unknown" update_body() return diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 6666dc4c46..aee89b2d00 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1061,37 +1061,8 @@ overlays += image("icon" = 'belt.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) belt.screen_loc = ui_belt - if ((wear_mask && !(wear_mask.see_face)) || (head && !(head.see_face))) // can't see the face - if (wear_id) - if (istype(wear_id, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/id = wear_id - if (id.registered_name) - name = id.registered_name - else - name = "Unknown" - else if (istype(wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = wear_id - if (pda.owner) - name = pda.owner - else - name = "Unknown" - else - name = "Unknown" - else - if (wear_id) - if (istype(wear_id, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/id = wear_id - if (id.registered_name != real_name) - name = "[real_name] (as [id.registered_name])" - - else if (istype(wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = wear_id - if (pda.owner) - if (pda.owner != real_name) - name = "[real_name] (as [pda.owner])" - else - name = real_name + name = get_visible_name() if (wear_id) wear_id.screen_loc = ui_id @@ -2208,18 +2179,33 @@ It can still be worn/put on as normal. return if_no_id return +//repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere +/mob/living/carbon/human/proc/get_visible_name() + if ((wear_mask && !(wear_mask.see_face)) || (head && !(head.see_face))) // can't see their face + return get_id_name("Unknown") + else + var/face_name = get_face_name() + var/id_name = get_id_name("") + if(id_name && (id_name != face_name)) + return "[face_name] as ([id_name])" + return face_name + +//Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable +/mob/living/carbon/human/proc/get_face_name() + var/datum/organ/external/head/head = get_organ("head") + if(!head || head.disfigured) //no face! + return "Unknown" + else + return "[real_name]" + //gets name from ID or PDA itself, ID inside PDA doesn't matter //Useful when player is being seen by other mobs -/mob/living/carbon/human/proc/get_visible_name(var/if_no_id = "Unknown") +/mob/living/carbon/human/proc/get_id_name(var/if_no_id = "Unknown") var/obj/item/device/pda/pda = wear_id var/obj/item/weapon/card/id/id = wear_id - if (istype(pda)) - . = pda.owner - else if (istype(id)) - . = id.registered_name - else - return if_no_id - return + if(istype(pda)) return pda.owner + if(istype(id)) return id.registered_name + return if_no_id //gets ID card object from special clothes slot or null. /mob/living/carbon/human/proc/get_idcard() diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index e9bd556fdb..2a99ce6260 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -1,3 +1,12 @@ +//Instead of setting real_name = "Unknown", use this when necessary. +//It will prevent the cloned-as-unknown bug and various other derpy things. +/mob/living/carbon/human/proc/disfigure_face() + var/datum/organ/external/head/head = get_organ("head") + if(head && !head.disfigured) + head.disfigured = 1 + name = get_visible_name() + src << "\red Your face has become disfigured." + /mob/living/carbon/human/proc/HealDamage(zone, brute, burn) var/datum/organ/external/E = get_organ(zone) if(istype(E, /datum/organ/external)) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 568ca5f718..0dc9751b72 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -862,13 +862,13 @@ if (stuttering) stuttering-- + + //Carn: marker 4# var/datum/organ/external/head/head = get_organ("head") if(head && !head.disfigured) if(head.brute_dam >= 45 || head.burn_dam >= 45) - head.disfigured = 1 emote("scream") - real_name = "Unknown" - src << "\red Your face has become disfigured." + disfigure_face() // face_op_stage = 0.0 var/blood_max = 0 for(var/datum/organ/external/temp in organs) diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 2a89031db5..fe53b958aa 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -20,7 +20,7 @@ var/alt_name = "" if (istype(src, /mob/living/carbon/human) && src.name != src.real_name) var/mob/living/carbon/human/H = src - alt_name = " (as [H.get_visible_name()])" + alt_name = " (as [H.get_id_name("Unknown")])" // Mute disability if (src.sdisabilities & 2) return diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index e3273c53aa..320568415c 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -58,7 +58,7 @@ var/alt_name = "" if (istype(src, /mob/living/carbon/human) && name != real_name) var/mob/living/carbon/human/H = src - alt_name = " (as [H.get_visible_name()])" + alt_name = " (as [H.get_id_name("Unknown")])" var/italics = 0 var/message_range = null var/message_mode = null