Sinew on bones from butchered limbs now inherits its owner's blood color (#94726)

## About The Pull Request

As title says, bones now get a colored overlay corresponding to their
limb's blood color instead of constantly having pink sinew.

<img width="76" height="77" alt="image"
src="https://github.com/user-attachments/assets/e6f8ffb8-fffa-49a8-93ed-77db618ff347"
/>

## Why It's Good For The Game

Doesn't make sense that lizards would still have pink sinew despite
their blood being green

## Changelog
🆑
image: Sinew on bones from butchered limbs now inherits its owner's
blood color
/🆑
This commit is contained in:
SmArtKar
2026-01-07 00:12:39 -05:00
committed by GitHub
parent 6a7b5cfb39
commit 89d2a16712
7 changed files with 87 additions and 13 deletions
+16 -13
View File
@@ -1264,19 +1264,6 @@
icon_state = "" //to erase the default sprite, we're building the visual aspects of the bodypart through overlays alone.
. = list()
if(dropped && dmg_overlay_type)
if(brutestate)
// divided into two overlays: one that gets colored and one that doesn't.
var/image/brute_blood_overlay = image('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_[brutestate]0", -DAMAGE_LAYER, dir = SOUTH)
brute_blood_overlay.color = get_color_from_blood_list(update_on ? update_on.get_blood_dna_list() : blood_dna_info) // living mobs can just get it fresh, dropped limbs use blood_dna_info
var/mutable_appearance/brute_damage_overlay = mutable_appearance('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_[brutestate]0_overlay", -DAMAGE_LAYER, appearance_flags = RESET_COLOR)
if(brute_damage_overlay)
brute_blood_overlay.overlays += brute_damage_overlay
. += brute_blood_overlay
if(burnstate)
. += image('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_0[burnstate]", -DAMAGE_LAYER, dir = SOUTH)
var/image_dir = null
if (dropped)
image_dir = SOUTH
@@ -1284,6 +1271,7 @@
// Handles invisibility (not alpha or actual invisibility but invisibility)
if(is_invisible)
. += image(icon_invisible, "invisible_[body_zone]", -BODYPARTS_LAYER, dir = image_dir)
SEND_SIGNAL(src, COMSIG_BODYPART_GET_LIMB_ICON, ., dropped, update_on)
return .
// Normal non-husk handling
@@ -1307,6 +1295,18 @@
aux = image(limb.icon, "[limb_id]_[aux_zone]", -aux_layer, dir = image_dir)
. += aux
if(dropped && dmg_overlay_type)
if(brutestate)
// divided into two overlays: one that gets colored and one that doesn't.
var/image/brute_blood_overlay = image('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_[brutestate]0", -DAMAGE_LAYER, dir = SOUTH)
brute_blood_overlay.color = get_color_from_blood_list(update_on ? update_on.get_blood_dna_list() : blood_dna_info) // living mobs can just get it fresh, dropped limbs use blood_dna_info
var/mutable_appearance/brute_damage_overlay = mutable_appearance('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_[brutestate]0_overlay", -DAMAGE_LAYER, appearance_flags = RESET_COLOR)
if(brute_damage_overlay)
brute_blood_overlay.overlays += brute_damage_overlay
. += brute_blood_overlay
if(burnstate)
. += image('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_0[burnstate]", -DAMAGE_LAYER, dir = SOUTH)
if(is_husked)
. += huskify_image(thing_to_husk = limb)
if(aux)
@@ -1357,6 +1357,7 @@
// And finally put bodypart_overlays on if not husked
if(is_husked)
SEND_SIGNAL(src, COMSIG_BODYPART_GET_LIMB_ICON, ., dropped, update_on)
return .
// Draw external organs like horns and frills
@@ -1383,6 +1384,8 @@
for(var/datum/layer in .)
overlay.modify_bodypart_appearance(layer)
SEND_SIGNAL(src, COMSIG_BODYPART_GET_LIMB_ICON, ., dropped, update_on)
return .
/obj/item/bodypart/proc/huskify_image(image/thing_to_husk)
@@ -435,10 +435,18 @@
// These are always disabled
disabling_threshold_percentage = 0
/obj/item/bodypart/head/skeleton/nonfunctional/Initialize(mapload)
. = ..()
AddElement(/datum/element/blood_limb_overlay)
/obj/item/bodypart/chest/skeleton/nonfunctional
limb_id = BODYPART_ID_BONE
disabling_threshold_percentage = 0
/obj/item/bodypart/chest/skeleton/nonfunctional/Initialize(mapload)
. = ..()
AddElement(/datum/element/blood_limb_overlay)
/obj/item/bodypart/chest/skeleton/nonfunctional/on_adding(mob/living/carbon/new_owner)
. = ..()
// Treat people with bone chests as husks for all purposes for now
@@ -453,18 +461,34 @@
limb_id = BODYPART_ID_BONE
disabling_threshold_percentage = 0
/obj/item/bodypart/arm/left/skeleton/nonfunctional/Initialize(mapload)
. = ..()
AddElement(/datum/element/blood_limb_overlay)
/obj/item/bodypart/arm/right/skeleton/nonfunctional
limb_id = BODYPART_ID_BONE
disabling_threshold_percentage = 0
/obj/item/bodypart/arm/right/skeleton/nonfunctional/Initialize(mapload)
. = ..()
AddElement(/datum/element/blood_limb_overlay)
/obj/item/bodypart/leg/left/skeleton/nonfunctional
limb_id = BODYPART_ID_BONE
disabling_threshold_percentage = 0
/obj/item/bodypart/leg/left/skeleton/nonfunctional/Initialize(mapload)
. = ..()
AddElement(/datum/element/blood_limb_overlay)
/obj/item/bodypart/leg/right/skeleton/nonfunctional
limb_id = BODYPART_ID_BONE
disabling_threshold_percentage = 0
/obj/item/bodypart/leg/right/skeleton/nonfunctional/Initialize(mapload)
. = ..()
AddElement(/datum/element/blood_limb_overlay)
///MUSHROOM
/obj/item/bodypart/head/mushroom
limb_id = SPECIES_MUSHROOM