From d835287ddf2d28e5499de28c465fe70324cd8ccc Mon Sep 17 00:00:00 2001 From: "elly1989@rocketmail.com" Date: Thu, 3 May 2012 14:30:42 +0000 Subject: [PATCH] Changed the way facial scarring works. Instead of setting your real_name to "Unknown" it uses the disfigured variable of a human's head organ to dictate the human's name variable. This means real_name is now somewhat back to being a reliable source of the mob's actual name. It should eliminate a lot of the "cloning as unknown" bugs. It also means I could simplify that god-awful name updating stuff into a nice and simple helper proc. Some original_name stuff was added here and there, mainly during cloning. A lot of the "getting random ghost names" should be fixed now. Still loads to do though, particularly with transforms and such. >_> Fixed a runtime with Tajarans trying to use a variable that doesn't exist for PDAs. Removed that variable from IDs as it's only used by furries. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3546 316c924e-a436-60f5-8080-3fe189b3f50e --- code/datums/datumvars.dm | 1 + code/defines/obj/weapon.dm | 1 - code/game/machinery/cloning.dm | 1 + code/game/machinery/hydroponics.dm | 1 + code/modules/chemical/Chemistry-Reagents.dm | 9 +-- .../mob/living/carbon/human/Tajara/tajaran.dm | 34 +--------- code/modules/mob/living/carbon/human/death.dm | 5 +- code/modules/mob/living/carbon/human/human.dm | 62 +++++++------------ .../mob/living/carbon/human/human_damage.dm | 9 +++ code/modules/mob/living/carbon/human/life.dm | 6 +- .../mob/living/carbon/human/whisper.dm | 2 +- code/modules/mob/living/say.dm | 2 +- 12 files changed, 50 insertions(+), 83 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 848a195c709..c5ae3b27d3a 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 a7728a71da9..53f2887fe8a 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 d269a610a6a..090dd61653a 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 1efd35857e3..1a6fb874c1f 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 14937530aca..4d0200afef3 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 827aacc1535..73f69f90c2c 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 d7eeb6c75ff..547685a2b14 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 6666dc4c46b..aee89b2d008 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 e9bd556fdb7..2a99ce6260d 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 568ca5f718b..0dc9751b720 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 2a89031db5f..fe53b958aa0 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 e3273c53aaa..320568415c7 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