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
This commit is contained in:
elly1989@rocketmail.com
2012-05-03 14:30:42 +00:00
parent 4cafc735d1
commit d835287ddf
12 changed files with 50 additions and 83 deletions

View File

@@ -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"])

View File

@@ -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

View File

@@ -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!!

View File

@@ -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!!

View File

@@ -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))

View File

@@ -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

View File

@@ -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

View File

@@ -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()

View File

@@ -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))

View File

@@ -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)

View File

@@ -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

View File

@@ -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