diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 9b3b9cfd44..807d89bc1e 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -12,6 +12,11 @@ // Icon/appearance vars. var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set. var/deform = 'icons/mob/human_races/r_def_human.dmi' // Mutated icon set. + + // Damage overlay and masks. + var/damage_overlays = 'icons/mob/human_races/masks/dam_human.dmi' + var/damage_mask = 'icons/mob/human_races/masks/dam_mask_human.dmi' + var/prone_icon // If set, draws this from icobase when mob is prone. var/eyes = "eyes_s" // Icon for eyes. var/blood_color = "#A10808" // Red. diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm index 7d7ccbb50b..79a3982b8f 100644 --- a/code/modules/mob/living/carbon/human/species/station/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm @@ -5,6 +5,8 @@ icobase = 'icons/mob/human_races/monkeys/r_monkey.dmi' deform = 'icons/mob/human_races/monkeys/r_monkey.dmi' + damage_overlays = 'icons/mob/human_races/masks/dam_monkey.dmi' + damage_mask = 'icons/mob/human_races/masks/dam_mask_monkey.dmi' language = null default_language = "Chimpanzee" diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 2b1a458539..2686a59370 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -175,15 +175,6 @@ Please contact me on #coderbus IRC. ~Carn x src.transform = M var/global/list/damage_icon_parts = list() -proc/get_damage_icon_part(damage_state, body_part) - if(damage_icon_parts["[damage_state]/[body_part]"] == null) - var/icon/DI = new /icon('icons/mob/dam_human.dmi', damage_state) // the damage icon for whole human - // TODO: Convert dam_human.dmi to greyscale and blend in species.blood_colour here. - DI.Blend(new /icon('icons/mob/dam_mask.dmi', body_part), ICON_MULTIPLY) // mask with this organ's pixels - damage_icon_parts["[damage_state]/[body_part]"] = DI - return DI - else - return damage_icon_parts["[damage_state]/[body_part]"] //DAMAGE OVERLAYS //constructs damage icon for each organ from mask * damage field and saves it in our overlays_ lists @@ -202,7 +193,7 @@ proc/get_damage_icon_part(damage_state, body_part) previous_damage_appearance = damage_appearance - var/icon/standing = new /icon('icons/mob/dam_human.dmi', "00") + var/icon/standing = new /icon(species.damage_overlays, "00") var/image/standing_image = new /image("icon" = standing) @@ -211,8 +202,15 @@ proc/get_damage_icon_part(damage_state, body_part) if(!(O.status & ORGAN_DESTROYED)) O.update_icon() if(O.damage_state == "00") continue - - var/icon/DI = get_damage_icon_part(O.damage_state, O.icon_name) + var/icon/DI + var/cache_index = "[O.damage_state]/[O.icon_name]/[species.blood_color]/[species.name]" + if(damage_icon_parts[cache_index] == null) + DI = new /icon(species.damage_overlays, O.damage_state) // the damage icon for whole human + DI.Blend(new /icon(species.damage_mask, O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels + DI.Blend(species.blood_color, ICON_MULTIPLY) + damage_icon_parts[cache_index] = DI + else + DI = damage_icon_parts["[O.damage_state]/[O.icon_name]"] standing_image.overlays += DI diff --git a/icons/mob/dam_human.dmi b/icons/mob/dam_human.dmi deleted file mode 100644 index 9f649669c0..0000000000 Binary files a/icons/mob/dam_human.dmi and /dev/null differ diff --git a/icons/mob/dam_mask.dmi b/icons/mob/dam_mask.dmi deleted file mode 100644 index df1cc8536a..0000000000 Binary files a/icons/mob/dam_mask.dmi and /dev/null differ diff --git a/icons/mob/human_races/masks/dam_human.dmi b/icons/mob/human_races/masks/dam_human.dmi new file mode 100644 index 0000000000..cb6bf82d98 Binary files /dev/null and b/icons/mob/human_races/masks/dam_human.dmi differ diff --git a/icons/mob/human_races/masks/dam_mask_human.dmi b/icons/mob/human_races/masks/dam_mask_human.dmi new file mode 100644 index 0000000000..db55b5a6b5 Binary files /dev/null and b/icons/mob/human_races/masks/dam_mask_human.dmi differ diff --git a/icons/mob/human_races/masks/dam_mask_monkey.dmi b/icons/mob/human_races/masks/dam_mask_monkey.dmi new file mode 100644 index 0000000000..4761f21fbd Binary files /dev/null and b/icons/mob/human_races/masks/dam_mask_monkey.dmi differ diff --git a/icons/mob/human_races/masks/dam_monkey.dmi b/icons/mob/human_races/masks/dam_monkey.dmi new file mode 100644 index 0000000000..43d1f2c7a7 Binary files /dev/null and b/icons/mob/human_races/masks/dam_monkey.dmi differ