diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 78ec6382b26..ea513d899e5 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -245,11 +245,11 @@
temp = getCloneLoss()
if(temp)
if(temp < 25)
- msg += "[t_He] [t_has] minor [dna.species.cellular_damage_desc].\n"
+ msg += "[t_He] [t_has] minor [damage_desc[CLONE]].\n"
else if(temp < 50)
- msg += "[t_He] [t_has] moderate [dna.species.cellular_damage_desc]!\n"
+ msg += "[t_He] [t_has] moderate [damage_desc[CLONE]]!\n"
else
- msg += "[t_He] [t_has] severe [dna.species.cellular_damage_desc]!\n"
+ msg += "[t_He] [t_has] severe [damage_desc[CLONE]]!\n"
if(has_status_effect(/datum/status_effect/fire_handler/fire_stacks))
diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm
index 833c6b10181..edfae450cf7 100644
--- a/code/modules/mob/living/carbon/human/human_helpers.dm
+++ b/code/modules/mob/living/carbon/human/human_helpers.dm
@@ -7,28 +7,24 @@
///returns a list of "damtype" => damage description based off of which bodypart description is most common
///used in human examines
/mob/living/carbon/human/proc/get_majority_bodypart_damage_desc()
- var/most_seen_brute = 0
- var/most_seen_burn = 0
- var/brute_desc = ""
- var/burn_desc = ""
- var/list/seen_brute = list()
- var/list/seen_burn = list()
+ var/list/seen_damage = list() // This looks like: ({Damage type} = list({Damage description for that damage type} = {number of times it has appeared}, ...), ...)
+ var/list/most_seen_damage = list() // This looks like: ({Damage type} = {Frequency of the most common description}, ...)
+ var/list/final_descriptions = list() // This looks like: ({Damage type} = {Most common damage description for that type}, ...)
for(var/obj/item/bodypart/part as anything in bodyparts)
- //brute
- if(!seen_brute[part.brute_damage_desc])
- seen_brute[part.brute_damage_desc] = 1
- else
- seen_brute[part.brute_damage_desc] += 1
- if(seen_brute[part.brute_damage_desc] > most_seen_brute)
- brute_desc = part.brute_damage_desc
- //burn
- if(!seen_burn[part.burn_damage_desc])
- seen_burn[part.burn_damage_desc] = 1
- else
- seen_burn[part.burn_damage_desc] += 1
- if(seen_burn[part.burn_damage_desc] > most_seen_burn)
- burn_desc = part.burn_damage_desc
- return list(BRUTE = brute_desc, BURN = burn_desc)
+ for(var/damage_type in part.damage_examines)
+ var/damage_desc = part.damage_examines[damage_type]
+ if(!seen_damage[damage_type])
+ seen_damage[damage_type] = list()
+
+ if(!seen_damage[damage_type][damage_desc])
+ seen_damage[damage_type][damage_desc] = 1
+ else
+ seen_damage[damage_type][damage_desc] += 1
+
+ if(seen_damage[damage_type][damage_desc] > most_seen_damage[damage_type])
+ most_seen_damage[damage_type] = seen_damage[damage_type][damage_desc]
+ final_descriptions[damage_type] = damage_desc
+ return final_descriptions
//gets assignment from ID or ID inside PDA or PDA itself
//Useful when player do something with computers
diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm
index 0dd25e2ccb2..15360810521 100644
--- a/code/modules/surgery/bodyparts/_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/_bodyparts.dm
@@ -125,9 +125,7 @@
var/heavy_burn_msg = "peeling away"
//Damage messages used by examine(). the desc that is most common accross all bodyparts gets shown
-
- var/brute_damage_desc = DEFAULT_BRUTE_EXAMINE_TEXT
- var/burn_damage_desc = DEFAULT_BURN_EXAMINE_TEXT
+ var/list/damage_examines = list(BRUTE = DEFAULT_BRUTE_EXAMINE_TEXT, BURN = DEFAULT_BURN_EXAMINE_TEXT, CLONE = DEFAULT_CLONE_EXAMINE_TEXT)
// Wounds related variables
/// The wounds currently afflicting this body part
diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm
index a18d86caa23..fa60ed06ee1 100644
--- a/code/modules/surgery/bodyparts/robot_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm
@@ -37,8 +37,7 @@
medium_burn_msg = ROBOTIC_MEDIUM_BURN_MSG
heavy_burn_msg = ROBOTIC_HEAVY_BURN_MSG
- brute_damage_desc = ROBOTIC_BRUTE_EXAMINE_TEXT
- burn_damage_desc = ROBOTIC_BURN_EXAMINE_TEXT
+ damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT, CLONE = DEFAULT_CLONE_EXAMINE_TEXT)
disabling_threshold_percentage = 1
/obj/item/bodypart/arm/right/robot
@@ -69,6 +68,7 @@
medium_burn_msg = ROBOTIC_MEDIUM_BURN_MSG
heavy_burn_msg = ROBOTIC_HEAVY_BURN_MSG
+ damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT, CLONE = DEFAULT_CLONE_EXAMINE_TEXT)
/obj/item/bodypart/leg/left/robot
name = "cyborg left leg"
@@ -98,6 +98,7 @@
medium_burn_msg = ROBOTIC_MEDIUM_BURN_MSG
heavy_burn_msg = ROBOTIC_HEAVY_BURN_MSG
+ damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT, CLONE = DEFAULT_CLONE_EXAMINE_TEXT)
/obj/item/bodypart/leg/right/robot
name = "cyborg right leg"
@@ -127,6 +128,8 @@
medium_burn_msg = ROBOTIC_MEDIUM_BURN_MSG
heavy_burn_msg = ROBOTIC_HEAVY_BURN_MSG
+ damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT, CLONE = DEFAULT_CLONE_EXAMINE_TEXT)
+
/obj/item/bodypart/chest/robot
name = "cyborg torso"
desc = "A heavily reinforced case containing cyborg logic boards, with space for a standard power cell."
@@ -153,6 +156,8 @@
medium_burn_msg = ROBOTIC_MEDIUM_BURN_MSG
heavy_burn_msg = ROBOTIC_HEAVY_BURN_MSG
+ damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT, CLONE = DEFAULT_CLONE_EXAMINE_TEXT)
+
var/wired = FALSE
var/obj/item/stock_parts/cell/cell = null
@@ -263,6 +268,8 @@
medium_burn_msg = ROBOTIC_MEDIUM_BURN_MSG
heavy_burn_msg = ROBOTIC_HEAVY_BURN_MSG
+ damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT, CLONE = DEFAULT_CLONE_EXAMINE_TEXT)
+
var/obj/item/assembly/flash/handheld/flash1 = null
var/obj/item/assembly/flash/handheld/flash2 = null