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 image This sucks! They look like they're wearing clown shoes for crying out loud! image 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 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 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 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