From 1467508036d2fbceb3697a80bd464cad5c8a9f44 Mon Sep 17 00:00:00 2001
From: Robwo <31576505+R0bro@users.noreply.github.com>
Date: Sat, 15 Aug 2026 12:12:22 -0400
Subject: [PATCH] Teshari Specific Limb Damage States and Bloody Clothing
(#6038)
## About The Pull Request
Teshari have long had to deal with ill-fitting overlays applied to them.
I have chosen to bite the bullet and do the labour by creating species
specific states for:
- bloody clothes
- damaged clothes
- body wounds
- bleeding animations
How it works is simple: if our icon override exists for our species, we
use it. If it doesn't exist, we default back to the original. What this
means is that future species overrides can be added without code
changes.
## Why It's Good For The Game
This sucks! They look like they're wearing clown shoes for crying out
loud!
This doesn't suck!
## Changelog
:cl: Robwo
fix: Teshari can now get properly bloody and bruised.
/:cl:
---------
Co-authored-by: Alexis
Co-authored-by: Waterpig <49160555+Maia-J@users.noreply.github.com>
---
code/datums/components/bloodysoles.dm | 20 +++++++++++++-
code/modules/clothing/clothing.dm | 9 +++++-
code/modules/clothing/gloves/_gloves.dm | 9 +++++-
code/modules/clothing/head/_head.dm | 9 +++++-
code/modules/clothing/masks/_masks.dm | 9 +++++-
code/modules/clothing/neck/_neck.dm | 9 +++++-
code/modules/clothing/shoes/_shoes.dm | 9 +++++-
code/modules/clothing/suits/_suits.dm | 26 +++++++++---------
code/modules/clothing/under/_under.dm | 9 +++++-
.../mob/living/carbon/carbon_update_icons.dm | 19 +++++++++++--
code/modules/surgery/bodyparts/_bodyparts.dm | 6 ++--
.../screenshot_antag_icons_obsessed.png | Bin 3860 -> 3847 bytes
icons/mob/effects/bleed_overlays.dmi | Bin 7004 -> 1906 bytes
.../bodyparts/code/teshari_bodyparts.dm | 10 +++++--
.../icons/effects/blood_species.dmi | Bin 0 -> 6895 bytes
.../icons/effects/item_damage_species.dmi | Bin 0 -> 4136 bytes
.../mob/effects/bleed_overlays_species.dmi | Bin 0 -> 2091 bytes
modular_zubbers/icons/mob/effects/dam_mob.dmi | Bin 0 -> 19131 bytes
18 files changed, 115 insertions(+), 29 deletions(-)
create mode 100644 modular_zubbers/icons/effects/blood_species.dmi
create mode 100644 modular_zubbers/icons/effects/item_damage_species.dmi
create mode 100644 modular_zubbers/icons/mob/effects/bleed_overlays_species.dmi
create mode 100644 modular_zubbers/icons/mob/effects/dam_mob.dmi
diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm
index daa4bbd164a..8da5a13f971 100644
--- a/code/datums/components/bloodysoles.dm
+++ b/code/datums/components/bloodysoles.dm
@@ -271,7 +271,7 @@
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
equipped_slot = ITEM_SLOT_FEET
- var/static/mutable_appearance/bloody_feet
+ var/mutable_appearance/bloody_feet //BUBBER EDIT - ORIGINAL: var/static/mutable_appearance/bloody_feet
/// List of DNA on mob's feet, so we can handle it separately from blood on mob's hands
var/list/blood_DNA = null
@@ -282,17 +282,34 @@
wielder = parent
+ /*BUBBER EDIT BEGIN - Species specific blood icons.
if(!bloody_feet)
bloody_feet = mutable_appearance('icons/effects/blood.dmi', "shoeblood", SHOES_LAYER)
+ */
RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_clean))
RegisterSignal(parent, COMSIG_STEP_ON_BLOOD, PROC_REF(on_step_blood))
RegisterSignals(parent, list(COMSIG_MOB_EQUIPPED_ITEM, COMSIG_MOB_UNEQUIPPED_ITEM), PROC_REF(shoecover))
+ // BUBBER ADDITION BEGIN - Species specific blood icons.
+ RegisterSignal(parent, COMSIG_SPECIES_GAIN, PROC_REF(on_species_change))
+ RegisterSignal(parent, COMSIG_SPECIES_LOSS, PROC_REF(on_species_change))
+ // BUBBER ADDITION END
if(new_blood)
blood_DNA = new_blood
update_icon()
+// BUBBER EDIT ADDITION BEGIN - Species specific blood icons.
+/datum/component/bloodysoles/feet/proc/on_species_change(datum/source)
+ SIGNAL_HANDLER
+ update_icon()
+
+/datum/component/bloodysoles/feet/proc/get_blood_appearance()
+ if(icon_exists('modular_zubbers/icons/effects/blood_species.dmi', "shoeblood_[wielder.dna.species.id]"))
+ return mutable_appearance('modular_zubbers/icons/effects/blood_species.dmi', "shoeblood_[wielder.dna.species.id]", SHOES_LAYER)
+ return mutable_appearance('icons/effects/blood.dmi', "shoeblood", SHOES_LAYER)
+// BUBBER EDIT ADDITION END
+
/datum/component/bloodysoles/feet/InheritComponent(datum/component/bloodysoles/feet/soles, original, list/new_blood)
if (!length(new_blood))
return
@@ -316,6 +333,7 @@
wielder.update_worn_shoes()
return
+ bloody_feet = get_blood_appearance() // BUBBER EDIT ADDITION
bloody_feet.color = wielder.get_blood_dna_color()
wielder.overlays_standing[SHOES_LAYER] = bloody_feet
wielder.apply_overlay(SHOES_LAYER)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 33bb5b745e3..16cd5da9d46 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -654,7 +654,14 @@ BLIND // can't see anything
if(clothing_flags & LARGE_WORN_ICON)
blood_overlay = mutable_appearance('icons/effects/64x64.dmi', "[blood_state]blood_large")
else
- blood_overlay = mutable_appearance('icons/effects/blood.dmi', "[blood_state]blood")
+ //BUBBER EDIT BEGIN - Species specific blood icons.
+ // blood_overlay = mutable_appearance('icons/effects/blood.dmi', "[blood_state]blood") ORIGNAL
+ var/mob/living/carbon/human/wearer = loc
+ if(ishuman(wearer) && icon_exists('modular_zubbers/icons/effects/blood_species.dmi', "[blood_state]blood_[wearer.dna.species.id]"))
+ blood_overlay = mutable_appearance('modular_zubbers/icons/effects/blood_species.dmi', "[blood_state]blood_[wearer.dna.species.id]")
+ else
+ blood_overlay = mutable_appearance('icons/effects/blood.dmi', "[blood_state]blood")
+ //BUBBER EDIT END
blood_overlay.color = get_blood_dna_color()
diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm
index 15f299eaacf..81c0c8afae1 100644
--- a/code/modules/clothing/gloves/_gloves.dm
+++ b/code/modules/clothing/gloves/_gloves.dm
@@ -49,7 +49,14 @@
if(isinhands)
return
if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves")
+ //BUBBER EDIT BEGIN - Species specific damage states.
+ //. += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") //ORIGINAL
+ var/mob/living/carbon/human/wearer = loc
+ if(ishuman(wearer) && icon_exists('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedgloves_[wearer.dna.species.id]"))
+ . += mutable_appearance('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedgloves_[wearer.dna.species.id]")
+ else
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves")
+ //BUBBER EDIT END
/obj/item/clothing/gloves/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE)
. = ..()
diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm
index 081cabf7a85..2cc8da7776b 100644
--- a/code/modules/clothing/head/_head.dm
+++ b/code/modules/clothing/head/_head.dm
@@ -60,7 +60,14 @@
if(isinhands)
return
if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet")
+ //BUBBER EDIT BEGIN - Species specific damage states.
+ //. += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") //ORIGINAL
+ var/mob/living/carbon/human/wearer = loc
+ if(ishuman(wearer) && icon_exists('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedhelmet_[wearer.dna.species.id]"))
+ . += mutable_appearance('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedhelmet_[wearer.dna.species.id]")
+ else
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet")
+ //BUBBER EDIT END
/obj/item/clothing/head/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE)
. = ..()
diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm
index e365abec485..93710d04a9c 100644
--- a/code/modules/clothing/masks/_masks.dm
+++ b/code/modules/clothing/masks/_masks.dm
@@ -31,7 +31,14 @@
if(isinhands || !(body_parts_covered & HEAD))
return
if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
+ //BUBBER EDIT BEGIN - Species specific damage states.
+ //. += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") //ORIGINAL
+ var/mob/living/carbon/human/wearer = loc
+ if(ishuman(wearer) && icon_exists('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedmask_[wearer.dna.species.id]"))
+ . += mutable_appearance('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedmask_[wearer.dna.species.id]")
+ else
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
+ //BUBBER EDIT END
/obj/item/clothing/mask/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE)
. = ..()
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index f1096272bf1..91f1e219c21 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -13,7 +13,14 @@
if(isinhands || !(body_parts_covered & HEAD))
return
if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
+ //BUBBER EDIT BEGIN - Species specific damage states.
+ //. += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") //ORIGINAL
+ var/mob/living/carbon/human/wearer = loc
+ if(ishuman(wearer) && icon_exists('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedmask_[wearer.dna.species.id]"))
+ . += mutable_appearance('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedmask_[wearer.dna.species.id]")
+ else
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
+ //BUBBER EDIT END
/obj/item/clothing/neck/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE)
. = ..()
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index 474ee102bd5..54c7354fd64 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -72,7 +72,14 @@
if(isinhands)
return
if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe")
+ //BUBBER EDIT BEGIN - Species specific damage states.
+ //. += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") //ORIGINAL
+ var/mob/living/carbon/human/wearer = loc
+ if(ishuman(wearer) && icon_exists('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedshoe_[wearer.dna.species.id]"))
+ . += mutable_appearance('modular_zubbers/icons/effects/item_damage_species.dmi', "damagedshoe_[wearer.dna.species.id]")
+ else
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe")
+ //BUBBER EDIT END
/obj/item/clothing/shoes/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE)
. = ..()
diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm
index 254c45d8b5d..4e57043c311 100644
--- a/code/modules/clothing/suits/_suits.dm
+++ b/code/modules/clothing/suits/_suits.dm
@@ -23,20 +23,20 @@
if(isinhands)
return
- if(damaged_clothes)
- //SKYRAT EDIT CHANGE BEGIN
- //. += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") //ORIGINAL
- var/damagefile2use = (bodyshape & STYLE_TAUR_ALL) ? 'modular_skyrat/master_files/icons/mob/64x32_item_damage.dmi' : 'icons/effects/item_damage.dmi'
- . += mutable_appearance(damagefile2use, "damaged[blood_overlay_type]")
- //SKYRAT EDIT CHANGE END
- if(GET_ATOM_BLOOD_DNA_LENGTH(src))
- //SKYRAT EDIT CHANGE BEGIN
- //. += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood") //ORIGINAL
- var/bloodfile2use = (bodyshape & STYLE_TAUR_ALL) ? 'modular_skyrat/master_files/icons/mob/64x32_blood.dmi' : 'icons/effects/blood.dmi'
- . += mutable_appearance(bloodfile2use, "[blood_overlay_type]blood")
- //SKYRAT EDIT CHANGE END
-
+ //BUBBER EDIT BEGIN - Species specific damage states.
var/mob/living/carbon/human/wearer = loc
+ if(damaged_clothes)
+ //. += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") //ORIGINAL
+ //todo: the taur icon doesn't exist anymore. Needs replacement.
+ var/icon/damage_icon_file = (bodyshape & STYLE_TAUR_ALL) ? 'modular_skyrat/master_files/icons/mob/64x32_item_damage.dmi' : 'icons/effects/item_damage.dmi'
+ var/damage_icon_state = "damaged[blood_overlay_type]"
+ if(ishuman(wearer) && icon_exists('modular_zubbers/icons/effects/item_damage_species.dmi', "damaged[blood_overlay_type]_[wearer.dna.species.id]"))
+ damage_icon_file = 'modular_zubbers/icons/effects/item_damage_species.dmi'
+ damage_icon_state = "damaged[blood_overlay_type]_[wearer.dna.species.id]"
+
+ . += mutable_appearance(damage_icon_file, damage_icon_state)
+ //BUBBER EDIT END
+
if(!ishuman(wearer) || !wearer.w_uniform)
return
var/obj/item/clothing/under/undershirt = wearer.w_uniform
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
index 174a7ce034c..9bf60c9a7f0 100644
--- a/code/modules/clothing/under/_under.dm
+++ b/code/modules/clothing/under/_under.dm
@@ -112,7 +112,14 @@
if(isinhands)
return
if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform")
+ //BUBBER EDIT BEGIN
+ //. += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") //ORIGINAL
+ var/mob/living/carbon/human/wearer = loc
+ if(ishuman(wearer) && icon_exists('modular_zubbers/icons/effects/item_damage_species.dmi', "damageduniform_[wearer.dna.species.id]"))
+ . += mutable_appearance('modular_zubbers/icons/effects/item_damage_species.dmi', "damageduniform_[wearer.dna.species.id]")
+ else
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform")
+ //BUBBER EDIT END
. += get_accessory_overlays()
/obj/item/clothing/under/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE)
diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm
index 7a0b23796e2..56a892332dc 100644
--- a/code/modules/mob/living/carbon/carbon_update_icons.dm
+++ b/code/modules/mob/living/carbon/carbon_update_icons.dm
@@ -302,11 +302,11 @@
if(!iter_part.dmg_overlay_type)
continue
if(isnull(damage_overlay) && (iter_part.brutestate || iter_part.burnstate))
- damage_overlay = mutable_appearance('icons/mob/effects/dam_mob.dmi', "blank", -DAMAGE_LAYER, appearance_flags = KEEP_TOGETHER)
+ damage_overlay = mutable_appearance('modular_zubbers/icons/mob/effects/dam_mob.dmi', "blank", -DAMAGE_LAYER, appearance_flags = KEEP_TOGETHER) //BUBBER EDIT: Extra species damage icons. Original: 'icons/mob/effects/dam_mob.dmi'
if(iter_part.brutestate)
- var/mutable_appearance/blood_damage_overlay = mutable_appearance('icons/mob/effects/dam_mob.dmi', "[iter_part.dmg_overlay_type]_[iter_part.body_zone]_[iter_part.brutestate]0", appearance_flags = RESET_COLOR) //we're adding icon_states of the base image as overlays
+ var/mutable_appearance/blood_damage_overlay = mutable_appearance('modular_zubbers/icons/mob/effects/dam_mob.dmi', "[iter_part.dmg_overlay_type]_[iter_part.body_zone]_[iter_part.brutestate]0", appearance_flags = RESET_COLOR) //we're adding icon_states of the base image as overlays //BUBBER EDIT: Extra species damage icons. Original: 'icons/mob/effects/dam_mob.dmi'
blood_damage_overlay.color = get_bloodtype()?.get_damage_color(src)
- var/mutable_appearance/brute_damage_overlay = mutable_appearance('icons/mob/effects/dam_mob.dmi', "[iter_part.dmg_overlay_type]_[iter_part.body_zone]_[iter_part.brutestate]0_overlay", appearance_flags = RESET_COLOR)
+ var/mutable_appearance/brute_damage_overlay = mutable_appearance('modular_zubbers/icons/mob/effects/dam_mob.dmi', "[iter_part.dmg_overlay_type]_[iter_part.body_zone]_[iter_part.brutestate]0_overlay", appearance_flags = RESET_COLOR) //BUBBER EDIT: Extra species damage icons. Original: 'icons/mob/effects/dam_mob.dmi'
blood_damage_overlay.overlays += brute_damage_overlay
damage_overlay.add_overlay(blood_damage_overlay)
if(iter_part.burnstate)
@@ -330,10 +330,23 @@
var/mutable_appearance/wound_overlay
for(var/obj/item/bodypart/iter_part as anything in get_bodyparts())
if(iter_part.bleed_overlay_icon)
+ /*BUBBER EDIT BEGIN - Species specific bleed overlay icons.
var/mutable_appearance/blood_overlay = mutable_appearance('icons/mob/effects/bleed_overlays.dmi', "blank", -WOUND_LAYER, appearance_flags = KEEP_TOGETHER)
blood_overlay.color = blood_type.get_wound_color(src)
wound_overlay ||= blood_overlay
wound_overlay.add_overlay(iter_part.bleed_overlay_icon)
+ */
+ var/icon/bleed_overlay_icon_file = 'icons/mob/effects/bleed_overlays.dmi'
+ var/bleed_overlay_icon_state = iter_part.bleed_overlay_icon
+ if(ishuman(src) && icon_exists('modular_zubbers/icons/mob/effects/bleed_overlays_species.dmi', "[iter_part.bleed_overlay_icon]_[src.dna.species.id]"))
+ bleed_overlay_icon_file = 'modular_zubbers/icons/mob/effects/bleed_overlays_species.dmi'
+ bleed_overlay_icon_state = "[iter_part.bleed_overlay_icon]_[src.dna.species.id]"
+
+ var/mutable_appearance/blood_overlay = mutable_appearance(bleed_overlay_icon_file, "blank", -WOUND_LAYER, appearance_flags = KEEP_TOGETHER)
+ blood_overlay.color = blood_type.get_wound_color(src)
+ wound_overlay ||= blood_overlay
+ wound_overlay.add_overlay(mutable_appearance(bleed_overlay_icon_file, bleed_overlay_icon_state))
+ //BUBBER EDIT END
if(isnull(wound_overlay))
return
diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm
index 87a02d4ec87..8d1d526daa0 100644
--- a/code/modules/surgery/bodyparts/_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/_bodyparts.dm
@@ -1364,14 +1364,14 @@
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)
+ var/image/brute_blood_overlay = image('modular_zubbers/icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_[brutestate]0", -DAMAGE_LAYER, dir = SOUTH) //BUBBER EDIT: Extra species damage icons. Original: 'icons/mob/effects/dam_mob.dmi'
brute_blood_overlay.color = get_color_from_blood_list(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)
+ var/mutable_appearance/brute_damage_overlay = mutable_appearance('modular_zubbers/icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_[brutestate]0_overlay", -DAMAGE_LAYER, appearance_flags = RESET_COLOR) //BUBBER EDIT: Extra species damage icons. Original: 'icons/mob/effects/dam_mob.dmi'
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)
+ . += image('modular_zubbers/icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_0[burnstate]", -DAMAGE_LAYER, dir = SOUTH) //BUBBER EDIT: Extra species damage icons. Original: 'icons/mob/effects/dam_mob.dmi'
if(is_husked)
. += huskify_image(thing_to_husk = limb)
diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_obsessed.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_obsessed.png
index b3466f068ec68b75418ab7c90626c77d416dbda4..2375c45ff3d214dc4fa442576ed9ca25a8deb1ee 100644
GIT binary patch
delta 3708
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
diff --git a/icons/mob/effects/bleed_overlays.dmi b/icons/mob/effects/bleed_overlays.dmi
index f376eb05f03e9a8b4ca6da48b63cc751561ce725..d3b334a6b39e19d2976aee72d31a8836ef8c7d25 100644
GIT binary patch
literal 1906
zcmZvd2Ut^A8^NiJ5+D%6XfX_>2mvHONJCpJ-}8L$bMEt=^FQbQ-h1D3-h0y=QFaPo
z4KM%z3J&%NX8@4KNG=;0X^BErR=p!}nvO{HaT<*#7K@oo=JN7#Pfrh<&7Pm1$6zoL
z-K_z6RkBP9=ZtazZ1^01$zYCv_P`-7UGa?!3daS7VF3VNQd`gpzHX!ZQ}-V(5JEva
z1R9m5YsEHc&vP-U+17Zfhg%Vva{Q5@#!esE7oq_84&*rDnTcX#qiLJMul)lz&ohO7
z2g+l-j_}NdNQB08WAuxMs3U$(V>5Sh!3CT7z;eN&@T
z+dYS9M41k%qP*SS!yb0w3tB!+7VV$RiM@q;pZqqJy=Eni@)r$n;>JPb6^jG8+?V{toA|GU
zs^s&+Ug!k?kp0>L@go{vGQ&HKeP^x)j0XBua3fH(1sUnxyqH|+-Nr>x7Q9`PqQvqW
zs@?W#`w99^)+0^z$ETfaKV|^I
zkBd9iLu)O4SJIhG6YxOop~TN5EwWL_SUTNI(9!3%*0vN(nlK#uTqU}79!Zzlgd~Vo
zih`)SN)Gvqs_E6#fQ8AULl
zm-LQ#S_d@EPDT>**RrQp16Xrar!Ea?Pn5!+oVG8U#ZDC5
z+zxQS+cv7y#&Mi_{0iye$>sags#w?g-BQUPF~ST6ZaA>PvUQSM!*
zF?K|{RwlS2>+?$L1lq&8HF+tt_R@nNN
zJZDR3v+op&0=y}!LBoSNi=@0M`msPi{r=sVJmM7=r=8N8a$;{sb2_rMmZt3Bk-lhY$>ob`~$d&&0c^~rXU4vGIlQ=Kk
z{r8KWh*Q0WkT!38U(7xpC*W#7>N(M`xRJ~@2@*d#sdiK=Bl1O38X7-rZWL!{Z1yvx
zcx$XDjI$!izF?eAD*l_?gwnLx-e0p)$9&7>Sf;`pi|n3!s=?VNz4cV@#i(D@by|sa
zVev;l`Q!J7C}eJl2ViPCFnT(uZI|9328UN)-kv4sv12J>TNYPsF5}y@mzHuZM>Ngm
zDwNQCQ$UXOw
z`K#=jy#6gm2>_OUqln|->$j{*)BoG%J8n!M7+(ZarVIp>GIs0Qf@q>=f&&xA@lsFJ
z*SK2wK&AwJ-L0&u)NB{0m~@$zM;6A%Z`{;e;v(O-)VK)jy|jV2mi6vd0%=rTLh
z2Lqp?3-^`lf&wNshS%1&+*93-)-OGiT{&HMT%BBvdV0X)8U;5(~hcW7V5Ov2e
G*Z%~T<~QE}
literal 7004
zcmeHLdt8&(89qsniy+8lnkpBC3Uw+3k(-2oD+0ABQ(3JNA;_j82!Ut>63Hi4&>}GC
zS}q3S=ESywXsL1wvNX
zwSx6NEoje$$tho<%BuSGy^hIkdB@xeav$vc(7)@g;v7HUfAqx_Ua)TGct8f43S3dargIIo>5zv{c)C&{ErM
zcec{#)F*z;8?Y0d5+l&-g1c#12`?{Yt5WiPo_~yH1@1*nj{3ZxPRE@C+l9tvQ6k2pPsTuHGh<^>
zH$>8Obr>}Pu^OlS`2$^Kw}G!*FIFS-Md9h#VvPV;^^%6-
zpsO7ZrJ265iC^ZNZ5!wg3&fm2=3t=(E!0}R3%KwK8I9!Ji
zrU4uPXZ5vcp8a1Ao4>@|g2&!7N%!RCoOd>q>j6Z@zKOfFugo|*JKJ#epIQg;VGFEq
zst15VIHZ@qbo5Zf6aa*h3alWKT3K)gY6hC$How~Pz{R4bkdet65q;T+2_V>G=vx$K
z6zfy$JL}2XH!GbVbGs`|6Q!oVY#;22R8F5>Tc^Pwd8QO@;e~5ag29jYw^Z~C1^HgP
z2N@VN3ev9JRtJMIzG6-RXodmR7vTgzA(^(tTDCc$5Dku*IBzu^yzpc?zq;(5tBonV
z@IpT?bDAFT$OgDHJDoTe_<+cv_NCb_JX9G$J{!HM-+$14#5m6m#)?l}%54o2%zdU+
zLqZbGV9P%<{xuS+zU&L(wxGYDy*VDPxNmu@XYvt4vjYN*8oYD0V?bFWlIFF2T@$tq
zPI14GmBdZC_wFuk2pM7Z4tUhh_c-!~)#XJzIPRy9L&SH(z>iKd#3Yjkrg{-L%
z%_!aZAeqVJ-p`cQwR2<;nD3&nRwk4;E~Y$Q2T}RC7X`c=DJY0Rj>38XtHX|j_!CS=
zfX-M-U&|_ANCFv(t
z_`a5;WIC1nFy14(qW~HW!5K~}v>4x(2DC|AxU~m0GhW~dDn~Rp
zH}l=>_G)*%SVzHPdaK$p&dvWAc?bPSQRDHC`U^@Qb5~=}KJq**3
zy7Sq(_dh4%%dbL$y9X;gV=8-w%jOvsx+z*4MOdi~R@K1=cn;%VBYuy%b*gt-Ii{pUF-OUzspo8+O_j_wdL
zwn;WNRj1UJcxp%r62f}nTl+ykQc|ImM({*VWi<9)?t9wQKDW1AnBEub9z-S6>Mpeo
z9?}+qAi-fTl8`KA(|K9Xo}1(O66NM@<1W`u;^6uee|Yjif{(Mw`x$*ShDGZPN4owQ
z9fF#hIm&R_B(2wAfCTjwIX63;7e0S3vz_B(V!pDeFq@B$vY+;bN)`K$G=9Jrhomb`OiM#
zF%6-u&VFXSe~57Z$p0$uK%pXfdvAcspWrC@e8E9xOwv`K(hBdbfBzbG4@8u
z+O`2}B9UlW%;7kAjfa-TJ#>lahEy^_?aqG9StQ5-Jhd}S0wZ5!J8KzmdMUp8KfMy;
zzgTb+myd5hu?(o$+Uy8EhNWqP&gXuzwW=>}hieGp{n!1fN@|;)mXM(9@DQ@Gz0dBT
zuT-jQ^SQzBui@r(y0--ZPy#idivXKAdqCLwcg+F^y#*`fm0b+gn)}-qo$BA4B>5M=
zA#V|%Db|`4bGN(OOD;%T7>S7<+>lMUS)s91z;0NJiC@*z8geRK`^VpDT~&dhRzF`O@yJyx0r<-7KJn$?NqrKcmpBj+_k3+g$AKX{UTjs_RtE
zbcc($7)p?xZdJfic)75}p4Yf4g1-*vS#+}&<3wXVu1)l--JDg86I_64@>BE?{%dut
z{p|umfKas*Ln=?g0rKfrWT*KB;jFotX@!X81a&vhX)ey%+S*t%
z+s;}B=YfvNV~Qd$I6o@+G!nRE}`!(xsDi>I!+8M63F`*JM$1
zYfhN^Z=Pfa1fF
zIU6fg1+;eloR#p`dNKCI6lW>y+Yn5?m(Sn_S=|?Rzetb+)nui}-UXHmB-)Gu<9vSG
zFed^xF{e_bo7j-nFYg^Dl37C046i+jIs0gMS|#N4hwAC`KWhGwhci>Ng
zQ>rz(t?H2eO)!9*44wR70IJ;SLjudHaLMCrpWATyrS`a=*Ib{_k&1XeOyzXL1f!@pu}Vtz>dTJw&(h9wX#_Qih})}w{piAFgWnm)*XJ=enCn7
E3k77YqyPW_
diff --git a/modular_skyrat/modules/bodyparts/code/teshari_bodyparts.dm b/modular_skyrat/modules/bodyparts/code/teshari_bodyparts.dm
index d651f8921d0..c1ab41e1970 100644
--- a/modular_skyrat/modules/bodyparts/code/teshari_bodyparts.dm
+++ b/modular_skyrat/modules/bodyparts/code/teshari_bodyparts.dm
@@ -8,6 +8,7 @@
icon_greyscale = BODYPART_ICON_TESHARI
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
limb_id = SPECIES_TESHARI
+ dmg_overlay_type = SPECIES_TESHARI
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
head_flags = HEAD_EYESPRITES|HEAD_EYECOLOR|HEAD_EYEHOLES|HEAD_DEBRAIN|HEAD_HAIR
@@ -36,6 +37,7 @@
icon_greyscale = BODYPART_ICON_TESHARI
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
limb_id = SPECIES_TESHARI
+ dmg_overlay_type = SPECIES_TESHARI
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
@@ -77,26 +79,27 @@
icon_greyscale = BODYPART_ICON_TESHARI
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
limb_id = SPECIES_TESHARI
+ dmg_overlay_type = SPECIES_TESHARI
unarmed_damage_low = TESHARI_PUNCH_LOW
unarmed_damage_high = TESHARI_PUNCH_HIGH
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
-
/obj/item/bodypart/arm/right/mutant/teshari
icon_greyscale = BODYPART_ICON_TESHARI
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
limb_id = SPECIES_TESHARI
+ dmg_overlay_type = SPECIES_TESHARI
unarmed_damage_low = TESHARI_PUNCH_LOW
unarmed_damage_high = TESHARI_PUNCH_HIGH
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
-
/obj/item/bodypart/leg/left/mutant/teshari
icon_greyscale = BODYPART_ICON_TESHARI
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
limb_id = SPECIES_TESHARI
+ dmg_overlay_type = SPECIES_TESHARI
digitigrade_type = /obj/item/bodypart/leg/left/digitigrade/teshari
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
@@ -105,6 +108,7 @@
icon_greyscale = BODYPART_ICON_TESHARI
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
limb_id = SPECIES_TESHARI
+ dmg_overlay_type = SPECIES_TESHARI
digitigrade_type = /obj/item/bodypart/leg/right/digitigrade/teshari
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
@@ -113,6 +117,7 @@
icon_greyscale = BODYPART_ICON_TESHARI
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
base_limb_id = SPECIES_TESHARI
+ dmg_overlay_type = SPECIES_TESHARI
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
@@ -120,6 +125,7 @@
icon_greyscale = BODYPART_ICON_TESHARI
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
base_limb_id = SPECIES_TESHARI
+ dmg_overlay_type = SPECIES_TESHARI
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
diff --git a/modular_zubbers/icons/effects/blood_species.dmi b/modular_zubbers/icons/effects/blood_species.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..71b1aba632c3d6c35a74c25a923290e7b5403341
GIT binary patch
literal 6895
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 y37-`?hUWY
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
VL>&eiQ^Bi0fU>YLFEjOw`8PD~%y9q!
literal 0
HcmV?d00001
diff --git a/modular_zubbers/icons/mob/effects/bleed_overlays_species.dmi b/modular_zubbers/icons/mob/effects/bleed_overlays_species.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..e44ba2a16cd5651c14b6ec5f266ee9d9d9e61ca5
GIT binary patch
literal 2091
zcmY*Zdpr|*8{cL)?y^d6g;c~LJK@aThB3E>Fe~erN{J&~7?aJN3J1sS$Ss%R
z82~_R+XYR6cMP*YE_vG=a&`8wWiS{bk*KGqM<5U|narV~q1Dw@JRZLt$22&HZNq>e
zXVC5d#O%oBZC@k80~><$yLIvA)$1WwgRcPq;RV&6Rso&gDVlrND)xLIKN7Hri;$Ai
zNSc+g8yd5JU|6Sga-CE?+VN}z^Yp+mY{%kauYZRV9ZoOo-{g@mu%a<6xKX7J#)2@p081?RXe%RC^>MH7l9GCdrzVr
z+}w!I(L^|RHcvz{(YoFHBDLy%QnZRYVSnw=W!Y-ql=33Y&a8N98KN|>oYF0#?7s+Q>G#*!7^BD%dgYtumitkoMj5B`cqw}zMAR<|
zPH9CS4mcJ$oQWxUb)ORkSUyg6OZBZsjh~^oThRJx9&YJrQ|@Diiah9NF_XO4Qo991B5|Azsur&ar%w8?liktxg2GG
zc(=D5TL+DEbFjO6QrB$$l>v4*TSXggJR>*gjU`Lp8^_6IXBX{h8mJsa8G4XK8`1;O
zy|WoIx>>ZT$G59Wbb;^8M*KfFL0e;7+r$zm<0lSO(}#&^-}V#^RIy@rY4GAD1W7GO
zKp6gWii>{%7^auc7!{M%Iv$fM(`4p)wsHdaGJaHL7Y@K;399eX?<#bPS06yH-_HZB
zHNMGue%`)T4ZU2PTpTnftgqkZ`-*2QIq#*T`{yWUN)~a;HWcAB&yq%e4K?u6WE%}9
z{BR3<&-|S69ae$!A`8kSRIvd?|lI`;gV(Pajj0&e2+YpC<_dVXJf06%%DrulRTW
zoglKcm4z+m;Maz!;PF<6x1qTTzNeMGG9u8yyN>c;Ra{8F
z0N1;bEhSqEebOF#PLwx92H9}shy2Pdb_o$;^J$8{i5BuJ+C!Ki|6jWym9U{byIH_}
z-pWi@(pe@vWNJ**X&V{@Wl}k4w$~MjSEZ-4mHnD>UO4xTx!}nJBvfnD=>z9kL&pnM
zv;oYgA=(gjmOut^yZ3tCsyQpaL8Nlr+w+`JAxEcpgS1vF7q)Gf@bXQ{Du+8iTJylu
zB2}3Wxt@ZgO4lbOA(P(~DJ@LSaamc3&izdWREiyn-)C8bJpVI_VqYk*UN
zdQ55?9}I(ABSC+>3L}B9S;X{ZB6d+NmTIL=3Kcl8%v`Da1-c7zvC4Jf=QrJ?WPal-
zJ6!5)pgV9E3usYI@(<+`-M)B$n<5MLRU4X|^m$)s9y_R`B6z#^{m~WO7$FS#tbij`;wWncAa?pK(Hf{;954K_Lc}&CmEH
zHQG;({`EPuya6A?f29X(D(VOgZwn4*IQE-lMzK&BQHDQl{ia*(Wmj+00YSK@X3Rg}
zIyIW~N~FmaU3yKFqT3clZ){RX%S??74|>kw#XX-Ju89!!)rUF4FMaIqM>VpIZ&*a;
z1;`~P>ki%}8$^ZIY5_CV{4Qh-m^QN>wTsns^n!6rao2zi{ApQ3+{Y1ql;5S!Fr$|;
zUnvh(v^3N
be)?XF
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