diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm
index 392f897c688..6f797f5cb9a 100644
--- a/code/modules/examine/examine.dm
+++ b/code/modules/examine/examine.dm
@@ -11,26 +11,7 @@
var/description_fluff = null //Green text about the atom's fluff, if any exists.
var/description_antag = null //Malicious red text, for the antags.
-/atom/examine(mob/user, var/distance = -1, var/infix = "", var/suffix = "")
- . = ..()
- user.description_holders["info"] = get_description_info()
- user.description_holders["fluff"] = get_description_fluff()
- if(user.mind && user.mind.special_role || isobserver(user)) //Runtime prevention, as ghosts don't have minds.
- user.description_holders["antag"] = get_description_antag()
-
- if(name) //This shouldn't be needed but I'm paranoid.
- user.description_holders["name"] = "[src.name]" //\icon[src]
-
- user.description_holders["icon"] = "\icon[src]"
-
- if(desc)
- user << desc
- user.description_holders["desc"] = src.desc
- else
- user.description_holders["desc"] = null //This is needed, or else if you examine one thing with a desc, then another without, the panel will retain the first examined's desc.
-
//Override these if you need special behaviour for a specific type.
-
/atom/proc/get_description_info()
if(description_info)
return description_info
@@ -46,10 +27,30 @@
return description_antag
return
-/mob/
- var/description_holders[0]
+/mob/living/get_description_fluff()
+ if(flavor_text) //Get flavor text for the green text.
+ return flavor_text
+ else //No flavor text? Try for hardcoded fluff instead.
+ return ..()
-/mob/Stat()
+/mob/living/carbon/human/get_description_fluff()
+ return print_flavor_text(0)
+
+/* The examine panel itself */
+
+/client/var/description_holders[0]
+
+/client/proc/update_description_holders(atom/A)
+ description_holders["info"] = A.get_description_info()
+ description_holders["fluff"] = A.get_description_fluff()
+ if(mob.mind && mob.mind.special_role || isobserver(src)) //ghosts don't have minds.
+ description_holders["antag"] = A.get_description_antag()
+
+ description_holders["name"] = "[A.name]"
+ description_holders["icon"] = "\icon[A]"
+ description_holders["desc"] = A.desc
+
+/client/Stat()
..()
if(statpanel("Examine"))
stat(null,"[description_holders["icon"]] [description_holders["name"]]") //The name, written in big letters.
@@ -59,13 +60,4 @@
if(description_holders["fluff"])
stat(null,"[description_holders["fluff"]]") //Yellow, fluff-related text.
if(description_holders["antag"])
- stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text
-
-/mob/living/get_description_fluff()
- if(flavor_text) //Get flavor text for the green text.
- return flavor_text
- else //No flavor text? Try for hardcoded fluff instead.
- return ..()
-
-/mob/living/carbon/human/get_description_fluff()
- return print_flavor_text(0)
+ stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 277f88c809e..3630d609a34 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -451,7 +451,6 @@
msg += "\n[t_He] is [pose]"
user << msg
- ..()
//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)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 61959ab49c5..c3e5fbf90be 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -232,6 +232,9 @@ var/list/slot_equipment_priority = list( \
face_atom(A)
A.examine(src)
+
+ if(client)
+ client.update_description_holders(A)
/mob/verb/pointed(atom/A as mob|obj|turf in view())
set name = "Point To"