From 7f4171fd4d1a9bf819d1365e82bbfa8e0773edcb Mon Sep 17 00:00:00 2001 From: Bloop <13398309+vinylspiders@users.noreply.github.com> Date: Tue, 30 Jun 2026 16:02:53 -0400 Subject: [PATCH] Adds bodyshape arg to a lot of missing spots, generalizes 'wear_digi_version', adds female gender shaping to digi sprites (#96633) ## About The Pull Request Adds female gender shaping to digi species (such as lizards), for the top half only.
Shown here dreamseeker_HhKjfrmJ1f
Also just adds a bunch of bodyshape args now that we are passing that to the clothing rendering. This will help with anything where you want unique digi handling for any specific items. Also fixes some missing args and even improper args in some of these proc overrides. ## Why It's Good For The Game Makes things more convenient for coders. Adds some more customization options for feminine lizardfolk. ## Changelog :cl: code: bodyshape is now accessible in build_worn_overlays() and similar procs. image: lizards now have support female gender shaping for their suits /:cl: --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/__DEFINES/dcs/signals/signals_object.dm | 2 +- code/datums/components/clothing_dirt.dm | 2 +- code/datums/components/hat_stabilizer.dm | 8 +-- .../components/toggle_attached_clothing.dm | 2 +- code/datums/sprite_accessories/clothing.dm | 5 +- code/game/objects/items.dm | 2 + .../objects/items/stacks/tiles/tile_types.dm | 4 +- code/game/objects/items/tanks/watertank.dm | 2 +- .../objects/items/weaponry/melee/spear.dm | 2 +- code/game/objects/items/wind_turbine.dm | 2 +- code/game/objects/structures/bedsheet_bin.dm | 2 +- .../heretic/items/heretic_armor.dm | 2 +- code/modules/clothing/clothing.dm | 2 +- code/modules/clothing/gloves/_gloves.dm | 6 +- code/modules/clothing/head/_head.dm | 6 +- code/modules/clothing/head/cone.dm | 2 +- code/modules/clothing/head/hardhat.dm | 6 +- code/modules/clothing/head/helmet.dm | 2 +- code/modules/clothing/head/wig.dm | 2 +- code/modules/clothing/masks/_masks.dm | 6 +- code/modules/clothing/masks/gasmask.dm | 4 +- code/modules/clothing/neck/_neck.dm | 8 +-- code/modules/clothing/shoes/_shoes.dm | 6 +- code/modules/clothing/shoes/boots.dm | 6 ++ code/modules/clothing/shoes/costume.dm | 2 +- code/modules/clothing/shoes/sneakers.dm | 2 + code/modules/clothing/spacesuits/plasmamen.dm | 4 +- code/modules/clothing/suits/_suits.dm | 6 +- code/modules/clothing/suits/armor.dm | 4 +- code/modules/clothing/suits/costume.dm | 4 ++ code/modules/clothing/suits/ethereal.dm | 2 +- code/modules/clothing/suits/ghostsheet.dm | 2 +- code/modules/clothing/suits/jobs.dm | 4 +- code/modules/clothing/suits/lasertag.dm | 3 +- code/modules/clothing/suits/moth.dm | 1 + code/modules/clothing/suits/utility.dm | 2 +- code/modules/clothing/suits/wintercoats.dm | 6 +- code/modules/clothing/under/_under.dm | 7 +- code/modules/clothing/under/color.dm | 1 + code/modules/clothing/under/costume.dm | 7 ++ code/modules/clothing/under/ethereal.dm | 2 +- code/modules/clothing/under/jobs/cargo.dm | 3 + code/modules/clothing/under/jobs/centcom.dm | 2 + .../clothing/under/jobs/civilian/civilian.dm | 12 ++++ .../under/jobs/civilian/clown_mime.dm | 2 + code/modules/clothing/under/jobs/command.dm | 1 + .../clothing/under/jobs/engineering.dm | 4 ++ code/modules/clothing/under/jobs/medical.dm | 7 ++ code/modules/clothing/under/jobs/rnd.dm | 6 ++ code/modules/clothing/under/jobs/security.dm | 7 ++ code/modules/clothing/under/shorts.dm | 1 + code/modules/clothing/under/skirt_dress.dm | 1 + code/modules/clothing/under/suits.dm | 3 + code/modules/clothing/under/syndicate.dm | 11 ++++ code/modules/fishing/fishing_rod.dm | 8 +-- code/modules/food_and_drinks/pizzabox.dm | 2 +- .../job_types/chaplain/chaplain_nullrod.dm | 2 +- .../modules/mining/equipment/explorer_gear.dm | 2 + .../modules/mining/equipment/kheiral_cuffs.dm | 2 +- .../mining_loot/megafauna/hierophant.dm | 2 +- .../mob/living/basic/drone/drone_tools.dm | 2 +- .../mob/living/carbon/carbon_update_icons.dm | 8 +-- .../mob/living/carbon/human/_species.dm | 2 +- .../living/carbon/human/human_update_icons.dm | 64 +++++++++++-------- code/modules/mod/mod_link.dm | 2 +- code/modules/mod/mod_part.dm | 4 +- code/modules/mod/modules/_module.dm | 2 +- .../reagents/reagent_containers/jerrycan.dm | 2 +- 68 files changed, 205 insertions(+), 109 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index 54a7948faf6..17d62cd353a 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -222,7 +222,7 @@ #define COMPONENT_OFFER_TAKE_INTERRUPT (1<<0) /// sent from obj/effect/attackby(): (/obj/effect/hit_effect, /mob/living/attacker, list/modifiers) #define COMSIG_ITEM_ATTACK_EFFECT "item_effect_attacked" -/// Called by /obj/item/proc/worn_overlays(list/overlays, mutable_appearance/standing, isinhands, icon_file) +/// Called by /obj/item/proc/worn_overlays(list/overlays, mutable_appearance/standing, isinhands, icon_file, bodyshape) #define COMSIG_ITEM_GET_WORN_OVERLAYS "item_get_worn_overlays" /// Called by /obj/item/proc/separate_worn_overlays(list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) #define COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS "item_get_separate_worn_overlays" diff --git a/code/datums/components/clothing_dirt.dm b/code/datums/components/clothing_dirt.dm index a02b2cfa0a5..3828f061dae 100644 --- a/code/datums/components/clothing_dirt.dm +++ b/code/datums/components/clothing_dirt.dm @@ -89,7 +89,7 @@ dirt_overlay.color = dirt_color overlays += dirt_overlay -/datum/component/clothing_dirt/proc/on_separate_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/datum/component/clothing_dirt/proc/on_separate_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if (isinhands || !dirtiness || !dirt_state || !(source.flags_cover & PEPPERPROOF)) diff --git a/code/datums/components/hat_stabilizer.dm b/code/datums/components/hat_stabilizer.dm index 909eba12a2f..bae4cea2fc4 100644 --- a/code/datums/components/hat_stabilizer.dm +++ b/code/datums/components/hat_stabilizer.dm @@ -104,13 +104,13 @@ else base_examine += span_notice("There's nothing placed on [parent]. Yet.") -/datum/component/hat_stabilizer/proc/get_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, isinhands, icon_file) +/datum/component/hat_stabilizer/proc/get_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if(isinhands) return if(!attached_hat) return - var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi') + var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi', bodyshape = bodyshape) worn_overlay.appearance_flags |= RESET_COLOR // loose hats are slightly angled if(loose_hat) @@ -121,13 +121,13 @@ worn_overlay.pixel_z = pixel_z_offset + attached_hat.worn_y_offset overlays += worn_overlay -/datum/component/hat_stabilizer/proc/get_separate_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/datum/component/hat_stabilizer/proc/get_separate_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if (isinhands) return if(!attached_hat) return - var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi') + var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi', bodyshape = bodyshape) for (var/mutable_appearance/overlay in worn_overlay.overlays) overlay.layer = -ABOVE_BODY_FRONT_HEAD_LAYER + 0.1 // loose hats are slightly angled diff --git a/code/datums/components/toggle_attached_clothing.dm b/code/datums/components/toggle_attached_clothing.dm index a251fd0e38a..ffec2e6026d 100644 --- a/code/datums/components/toggle_attached_clothing.dm +++ b/code/datums/components/toggle_attached_clothing.dm @@ -106,7 +106,7 @@ return COMPONENT_ITEM_ACTION_SLOT_INVALID /// Apply an overlay while the item is not deployed -/datum/component/toggle_attached_clothing/proc/on_checked_overlays(obj/item/source, list/overlays, mutable_appearance/standing, isinhands, icon_file) +/datum/component/toggle_attached_clothing/proc/on_checked_overlays(obj/item/source, list/overlays, mutable_appearance/standing, isinhands, icon_file, bodyshape) SIGNAL_HANDLER if (isinhands || currently_deployed) return diff --git a/code/datums/sprite_accessories/clothing.dm b/code/datums/sprite_accessories/clothing.dm index 2b23cd411a8..96b2f3b16fd 100644 --- a/code/datums/sprite_accessories/clothing.dm +++ b/code/datums/sprite_accessories/clothing.dm @@ -39,9 +39,10 @@ result = mutable_appearance(icon(cached_icons[key])) else if(greyscale_config || use_female || use_digi) // icon ops ahead - var/icon/created = icon(greyscale_config ? SSgreyscale.GetColoredIconByType(greyscale_config, greyscale_colors) : icon, icon_state_to_use) + var/icon_file_path = greyscale_config ? SSgreyscale.GetColoredIconByType(greyscale_config, greyscale_colors) : icon + var/icon/created = icon(icon_file_path, icon_state_to_use) if(use_female) - created = wear_female_version(icon_state_to_use, icon, female_sprite_flags_to_use) + created = wear_female_version(icon_state_to_use, icon_file_path, icon, female_sprite_flags_to_use) if(use_digi) var/icon/replacement = icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade_underwear, greyscale_colors), digi_icon_state) created = replace_icon_legs(created, replacement) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index c0a7c8d1944..35721788368 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -172,6 +172,8 @@ var/list/species_exception = null ///This is a bitfield that defines what variations exist for bodyparts like Digi legs. See: code\_DEFINES\inventory.dm var/supports_variations_flags = NONE + /// This is a bitfield that defines which bodyshapes this item is capable of rendering, used by build_worn_icon() + var/bodyshapes_with_variations = NONE ///Items can by default thrown up to 10 tiles by TK users tk_throw_range = 10 diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 915fbf2af5e..eb4ae72db32 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -421,7 +421,7 @@ . += neon_overlay . += emissive_appearance(neon_icon || icon, neon_icon_state || icon_state, src, alpha = emissive_alpha) -/obj/item/stack/tile/carpet/neon/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/stack/tile/carpet/neon/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands || !neon_inhand_icon_state) return @@ -1240,7 +1240,7 @@ . = ..() . += emissive_appearance(icon, icon_state, src, alpha = alpha) -/obj/item/stack/tile/emissive_test/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/stack/tile/emissive_test/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() . += emissive_appearance(standing.icon, standing.icon_state, src, alpha = standing.alpha) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 23b13ccfef4..c0e75f77930 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -409,7 +409,7 @@ turn_on() //Todo : cache these. -/obj/item/reagent_containers/chemtank/worn_overlays(mutable_appearance/standing, isinhands = FALSE) //apply chemcolor and level +/obj/item/reagent_containers/chemtank/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) //apply chemcolor and level . = ..() //inhands + reagent_filling if(isinhands || !reagents.total_volume) diff --git a/code/game/objects/items/weaponry/melee/spear.dm b/code/game/objects/items/weaponry/melee/spear.dm index 6fc5634c7c0..93ad7222479 100644 --- a/code/game/objects/items/weaponry/melee/spear.dm +++ b/code/game/objects/items/weaponry/melee/spear.dm @@ -161,7 +161,7 @@ tip_overlay.color = tip_material.color . += tip_overlay -/obj/item/spear/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/obj/item/spear/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) . = ..() if (icon_prefix != SPEAR_CUSTOM_TIP_PREFIX || !isinhands) return diff --git a/code/game/objects/items/wind_turbine.dm b/code/game/objects/items/wind_turbine.dm index b713c3acd5e..4b89a679582 100644 --- a/code/game/objects/items/wind_turbine.dm +++ b/code/game/objects/items/wind_turbine.dm @@ -345,7 +345,7 @@ if (istype(charging, /obj/item/melee/baton/security/)) . += mutable_appearance(icon, "baton") -/obj/item/portable_wind_turbine/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/portable_wind_turbine/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if (isinhands) return diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 58196a173da..7f6c04cda70 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -393,7 +393,7 @@ LINEN BINS add_overlay(gondola_mouth) add_overlay(gondola_eyes) -/obj/item/bedsheet/gondola/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/bedsheet/gondola/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += mutable_appearance(icon_file, gondola_mouth) diff --git a/code/modules/antagonists/heretic/items/heretic_armor.dm b/code/modules/antagonists/heretic/items/heretic_armor.dm index 1529284652b..c94d7bf9406 100644 --- a/code/modules/antagonists/heretic/items/heretic_armor.dm +++ b/code/modules/antagonists/heretic/items/heretic_armor.dm @@ -989,7 +989,7 @@ add_overlay(object_overlay) hood?.add_overlay(hood_object_overlay) -/obj/item/clothing/suit/hooded/cultrobes/eldritch/rust/worn_overlays(mutable_appearance/standing, isinhands) +/obj/item/clothing/suit/hooded/cultrobes/eldritch/rust/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() // Should basically catch toggling the hood on/off while standing on rust if(rusted) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 1bdb47a1854..33bb5b745e3 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -646,7 +646,7 @@ BLIND // can't see anything return ..() /// Returns a list of overlays with our blood, if we're bloodied -/obj/item/clothing/proc/get_blood_overlay(blood_state) +/obj/item/clothing/proc/get_blood_overlay(blood_state, bodyshape = NONE) if (!GET_ATOM_BLOOD_DECAL_LENGTH(src)) return diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index 20b321592b7..0f06e9ec442 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -44,18 +44,18 @@ user.visible_message(span_suicide("\the [src] are forcing [user]'s hands around [user.p_their()] neck! It looks like the gloves are possessed!")) return OXYLOSS -/obj/item/clothing/gloves/worn_overlays(mutable_appearance/standing, isinhands = FALSE) +/obj/item/clothing/gloves/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(isinhands) return if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") -/obj/item/clothing/gloves/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/obj/item/clothing/gloves/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) . = ..() if (isinhands) return - var/blood_overlay = get_blood_overlay("glove") + var/blood_overlay = get_blood_overlay("glove", bodyshape) if (blood_overlay) . += blood_overlay diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index 71e3b789a6c..662ceceaffd 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -55,18 +55,18 @@ R.visible_message(span_notice("[src] lands neatly on top of [R]!"), span_notice("[src] lands perfectly on top of you.")) R.place_on_head(src) //hats aren't designed to snugly fit borg heads or w/e so they'll always manage to knock eachother off -/obj/item/clothing/head/worn_overlays(mutable_appearance/standing, isinhands = FALSE) +/obj/item/clothing/head/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(isinhands) return if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") -/obj/item/clothing/head/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/obj/item/clothing/head/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) . = ..() if (isinhands) return - var/blood_overlay = get_blood_overlay("helmet") + var/blood_overlay = get_blood_overlay("helmet", bodyshape) if (blood_overlay) . += blood_overlay diff --git a/code/modules/clothing/head/cone.dm b/code/modules/clothing/head/cone.dm index 844558b5515..205e133e235 100644 --- a/code/modules/clothing/head/cone.dm +++ b/code/modules/clothing/head/cone.dm @@ -22,7 +22,7 @@ . = ..() AddElement(/datum/element/floor_placeable) -/obj/item/clothing/head/cone/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/head/cone/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 7afc876c9fd..05f94232a85 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -151,7 +151,7 @@ if(.) playsound(src, up ? SFX_VISOR_UP : SFX_VISOR_DOWN, 50, TRUE) -/obj/item/clothing/head/utility/hardhat/welding/worn_overlays(mutable_appearance/standing, isinhands) +/obj/item/clothing/head/utility/hardhat/welding/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(isinhands) return @@ -223,7 +223,7 @@ visor_flags_inv = NONE visor_state = "weldvisor_atmos" -/obj/item/clothing/head/utility/hardhat/welding/atmos/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/head/utility/hardhat/welding/atmos/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) @@ -270,7 +270,7 @@ if(light_on) . += emissive_appearance(icon, "carved_pumpkin-emissive", src, alpha = src.alpha) -/obj/item/clothing/head/utility/hardhat/pumpkinhead/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/head/utility/hardhat/pumpkinhead/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(light_on && !isinhands) . += emissive_appearance(icon_file, "carved_pumpkin-emissive", src, alpha = src.alpha) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 4b2bbe061d1..cf379ab556c 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -110,7 +110,7 @@ . = ..() AddComponent(/datum/component/seclite_attachable, light_icon_state = "flight") -/obj/item/clothing/head/helmet/press/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/head/helmet/press/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) diff --git a/code/modules/clothing/head/wig.dm b/code/modules/clothing/head/wig.dm index 42fb32c08cb..0b4cd5f2b92 100644 --- a/code/modules/clothing/head/wig.dm +++ b/code/modules/clothing/head/wig.dm @@ -32,7 +32,7 @@ icon_state = hair_style.icon_state return ..() -/obj/item/clothing/head/wig/worn_overlays(mutable_appearance/standing, isinhands = FALSE, file2use) +/obj/item/clothing/head/wig/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(isinhands) return diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index 672b2eeef1c..e365abec485 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -26,18 +26,18 @@ var/status = !(clothing_flags & VOICEBOX_DISABLED) to_chat(user, span_notice("You turn the voice box in [src] [status ? "on" : "off"].")) -/obj/item/clothing/mask/worn_overlays(mutable_appearance/standing, isinhands = FALSE) +/obj/item/clothing/mask/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(isinhands || !(body_parts_covered & HEAD)) return if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") -/obj/item/clothing/mask/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/obj/item/clothing/mask/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) . = ..() if (isinhands || !(body_parts_covered & HEAD)) return - var/blood_overlay = get_blood_overlay("mask") + var/blood_overlay = get_blood_overlay("mask", bodyshape) if (blood_overlay) . += blood_overlay diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 36e6a6115cf..292ead0d920 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -58,10 +58,10 @@ GLOBAL_LIST_INIT(clown_mask_options, list( LAZYADD(gas_filters, inserted_filter) has_filter = TRUE -/obj/item/clothing/mask/gas/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/obj/item/clothing/mask/gas/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands && cig) - . += cig.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi') + . += cig.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi', bodyshape = bodyshape) /obj/item/clothing/mask/gas/Destroy() QDEL_LAZYLIST(gas_filters) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index ab2bb53516c..2d61617c03c 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -15,11 +15,11 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") -/obj/item/clothing/neck/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/obj/item/clothing/neck/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) . = ..() if (isinhands || !(body_parts_covered & HEAD)) return - var/blood_overlay = get_blood_overlay("mask") + var/blood_overlay = get_blood_overlay("mask", bodyshape) if (blood_overlay) . += blood_overlay @@ -145,7 +145,7 @@ context[SCREENTIP_CONTEXT_ALT_LMB] = "Tie" return CONTEXTUAL_SCREENTIP_SET -/obj/item/clothing/neck/tie/worn_overlays(mutable_appearance/standing, isinhands) +/obj/item/clothing/neck/tie/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() var/mob/living/carbon/human/wearer = loc if(!ishuman(wearer) || !wearer.w_uniform) @@ -584,7 +584,7 @@ resistance_flags = FIRE_PROOF | LAVA_PROOF custom_materials = list(/datum/material/bone = SHEET_MATERIAL_AMOUNT * 2, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 2) -/obj/item/clothing/neck/wreath/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/neck/wreath/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "wreath_emissive", src, alpha = src.alpha) diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 72b9efd045d..a88e5a28217 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -63,18 +63,18 @@ playsound(user, 'sound/items/weapons/genhit2.ogg', 50, TRUE) return BRUTELOSS -/obj/item/clothing/shoes/worn_overlays(mutable_appearance/standing, isinhands = FALSE) +/obj/item/clothing/shoes/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(isinhands) return if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") -/obj/item/clothing/shoes/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) +/obj/item/clothing/shoes/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if (isinhands) return - var/blood_overlay = get_blood_overlay("shoe") + var/blood_overlay = get_blood_overlay("shoe", bodyshape) if (blood_overlay) . += blood_overlay diff --git a/code/modules/clothing/shoes/boots.dm b/code/modules/clothing/shoes/boots.dm index 6140ee8b80f..6eaaa200c1f 100644 --- a/code/modules/clothing/shoes/boots.dm +++ b/code/modules/clothing/shoes/boots.dm @@ -4,6 +4,7 @@ icon_state = "jackboots" inhand_icon_state = "jackboots" supports_variations_flags = CLOTHING_DIGITIGRADE_MASK + bodyshapes_with_variations = BODYSHAPE_DIGITIGRADE body_parts_covered = FEET|LEGS armor_type = /datum/armor/shoes_combat strip_delay = 4 SECONDS @@ -47,6 +48,7 @@ icon_state = "jackboots" inhand_icon_state = "jackboots" supports_variations_flags = CLOTHING_DIGITIGRADE_MASK + bodyshapes_with_variations = BODYSHAPE_DIGITIGRADE strip_delay = 3 SECONDS equip_delay_other = 5 SECONDS resistance_flags = NONE @@ -74,6 +76,7 @@ icon_state = "ftc_boots" inhand_icon_state = null supports_variations_flags = NONE + bodyshapes_with_variations = NONE /obj/item/clothing/shoes/jackboots/floortile/Initialize(mapload) . = ..() @@ -85,6 +88,7 @@ icon_state = "winterboots" inhand_icon_state = null supports_variations_flags = CLOTHING_DIGITIGRADE_MASK + bodyshapes_with_variations = BODYSHAPE_DIGITIGRADE armor_type = /datum/armor/shoes_winterboots cold_protection = FEET|LEGS min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT @@ -136,6 +140,7 @@ inhand_icon_state = "jackboots" armor_type = /datum/armor/shoes_workboots supports_variations_flags = CLOTHING_DIGITIGRADE_MASK + bodyshapes_with_variations = BODYSHAPE_DIGITIGRADE strip_delay = 2 SECONDS equip_delay_other = 4 SECONDS lace_time = 8 SECONDS @@ -166,6 +171,7 @@ inhand_icon_state = null lace_time = 8 SECONDS supports_variations_flags = CLOTHING_DIGITIGRADE_MASK + bodyshapes_with_variations = BODYSHAPE_DIGITIGRADE /obj/item/clothing/shoes/russian/Initialize(mapload) . = ..() diff --git a/code/modules/clothing/shoes/costume.dm b/code/modules/clothing/shoes/costume.dm index 65a0722000d..0572603d774 100644 --- a/code/modules/clothing/shoes/costume.dm +++ b/code/modules/clothing/shoes/costume.dm @@ -93,7 +93,7 @@ AddElement(/datum/element/gags_recolorable) update_icon(UPDATE_OVERLAYS) -/obj/item/clothing/shoes/glow/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/shoes/glow/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(DEFAULT_SHOES_FILE, "glow_shoes_emissive", src, alpha = src.alpha) diff --git a/code/modules/clothing/shoes/sneakers.dm b/code/modules/clothing/shoes/sneakers.dm index f073336f429..1faed5d2eef 100644 --- a/code/modules/clothing/shoes/sneakers.dm +++ b/code/modules/clothing/shoes/sneakers.dm @@ -12,6 +12,8 @@ greyscale_config_inhand_right = /datum/greyscale_config/sneakers/inhand_right greyscale_colors = "#2d2d33#ffffff" supports_variations_flags = CLOTHING_DIGITIGRADE_MASK + bodyshapes_with_variations = BODYSHAPE_DIGITIGRADE + flags_1 = IS_PLAYER_COLORABLE_1 interaction_flags_mouse_drop = NEED_HANDS diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 44324bae47a..9e68856c203 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -176,12 +176,12 @@ return ITEM_INTERACT_SUCCESS ///By the by, helmets have the update_icon_updates_onmob element, so we don't have to call mob.update_worn_head() -/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(mutable_appearance/standing, isinhands) +/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands && !up) . += mutable_appearance('icons/mob/clothing/head/plasmaman_head.dmi', visor_icon) -/obj/item/clothing/head/helmet/space/plasmaman/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) +/obj/item/clothing/head/helmet/space/plasmaman/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(!isinhands && smile) var/mutable_appearance/smiley = mutable_appearance('icons/mob/clothing/head/plasmaman_head.dmi', smile_state) diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 2124d80d189..97d7991a825 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -18,7 +18,7 @@ var/blood_overlay_type = "suit" limb_integrity = 0 // disabled for most exo-suits -/obj/item/clothing/suit/worn_overlays(mutable_appearance/standing, isinhands = FALSE) +/obj/item/clothing/suit/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(isinhands) return @@ -37,11 +37,11 @@ if(displayed.above_suit && undershirt.accessory_overlay) . += undershirt.accessory_overlay -/obj/item/clothing/suit/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) +/obj/item/clothing/suit/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if (isinhands) return - var/blood_overlay = get_blood_overlay(blood_overlay_type) + var/blood_overlay = get_blood_overlay(blood_overlay_type, bodyshape) if (blood_overlay) . += blood_overlay diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 2e7f7e6c464..991c89e4cfa 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -65,7 +65,7 @@ desc = "A blue armor vest used to distinguish non-combatant \"PRESS\" members, like if anyone cares." icon_state = "armor_press" -/obj/item/clothing/suit/armor/vest/press/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/suit/armor/vest/press/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) @@ -225,7 +225,7 @@ resistance_flags = FLAMMABLE dog_fashion = null -/obj/item/clothing/suit/armor/vest/secjacket/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/suit/armor/vest/secjacket/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index f497b5d701b..2bd519f2e2a 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -661,6 +661,7 @@ inhand_icon_state = null body_parts_covered = CHEST|GROIN|LEGS|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/suit/costume/soviet name = "soviet armored coat" @@ -683,6 +684,7 @@ inhand_icon_state = null body_parts_covered = CHEST|GROIN|LEGS|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/suit/costume/pg name = "powder ganger jacket" @@ -691,6 +693,7 @@ inhand_icon_state = null body_parts_covered = CHEST|GROIN|LEGS|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/suit/costume/irs name = "internal revenue service jacket" @@ -699,6 +702,7 @@ inhand_icon_state = null body_parts_covered = CHEST|GROIN|LEGS|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/suit/costume/bear_suit name = "bear suit" diff --git a/code/modules/clothing/suits/ethereal.dm b/code/modules/clothing/suits/ethereal.dm index bd5e7d84cfe..47f096dc367 100644 --- a/code/modules/clothing/suits/ethereal.dm +++ b/code/modules/clothing/suits/ethereal.dm @@ -17,7 +17,7 @@ update_icon(UPDATE_OVERLAYS) AddElement(/datum/element/adjust_fishing_difficulty, -5) -/obj/item/clothing/suit/hooded/ethereal_raincoat/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/suit/hooded/ethereal_raincoat/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance('icons/mob/clothing/suits/ethereal.dmi', "eth_raincoat_glow_worn", offset_spokesman = src, alpha = src.alpha) diff --git a/code/modules/clothing/suits/ghostsheet.dm b/code/modules/clothing/suits/ghostsheet.dm index 85c3cfed3f8..a2e61bdb3d9 100644 --- a/code/modules/clothing/suits/ghostsheet.dm +++ b/code/modules/clothing/suits/ghostsheet.dm @@ -18,7 +18,7 @@ update_icon(UPDATE_OVERLAYS) AddElement(/datum/element/adjust_fishing_difficulty, 8) -/obj/item/clothing/suit/costume/ghost_sheet/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/suit/costume/ghost_sheet/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands && check_holidays(HALLOWEEN)) . += emissive_appearance('icons/mob/simple/mob.dmi', "ghost", offset_spokesman = src, alpha = src.alpha) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 663ac5db102..5666cace974 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -194,7 +194,7 @@ resistance_flags = NONE species_exception = list(/datum/species/golem) -/obj/item/clothing/suit/hazardvest/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/suit/hazardvest/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) @@ -442,7 +442,7 @@ fire = 100 acid = 50 -/obj/item/clothing/suit/atmos_overalls/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/suit/atmos_overalls/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) diff --git a/code/modules/clothing/suits/lasertag.dm b/code/modules/clothing/suits/lasertag.dm index 93badb50fae..9f34e86fefd 100644 --- a/code/modules/clothing/suits/lasertag.dm +++ b/code/modules/clothing/suits/lasertag.dm @@ -10,6 +10,7 @@ allowed = list (/obj/item/gun/energy/laser/bluetag) resistance_flags = NONE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/suit/bluetag/equipped(mob/equipper, slot) . = ..() @@ -34,7 +35,7 @@ allowed = list (/obj/item/gun/energy/laser/redtag) resistance_flags = NONE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON - + bodyshapes_with_variations = NONE /obj/item/clothing/suit/redtag/equipped(mob/equipper, slot) . = ..() diff --git a/code/modules/clothing/suits/moth.dm b/code/modules/clothing/suits/moth.dm index 58c73c88597..aa2a10ca84d 100644 --- a/code/modules/clothing/suits/moth.dm +++ b/code/modules/clothing/suits/moth.dm @@ -35,3 +35,4 @@ cold_protection = CHEST|GROIN|ARMS|LEGS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 3910d121246..6273d4ae1f4 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -53,7 +53,7 @@ fire = 100 acid = 50 -/obj/item/clothing/suit/utility/fire/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/suit/utility/fire/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index 84121104e93..5b4f92e0c47 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -543,7 +543,7 @@ /datum/armor/wintercoat_engineering fire = 20 -/obj/item/clothing/suit/hooded/wintercoat/engineering/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/suit/hooded/wintercoat/engineering/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) @@ -556,7 +556,7 @@ /datum/armor/winterhood_engineering fire = 20 -/obj/item/clothing/head/hooded/winterhood/engineering/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/head/hooded/winterhood/engineering/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR) @@ -759,7 +759,7 @@ hood_down_overlay_suffix = "" hood_up_affix = "_t" -/obj/item/clothing/suit/hooded/wintercoat/zipup/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/suit/hooded/wintercoat/zipup/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(isinhands || (hood && hood.loc != src)) return diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 154b4c716e6..559467ea5e8 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -10,6 +10,7 @@ interaction_flags_click = NEED_DEXTERITY|ALLOW_RESTING armor_type = /datum/armor/clothing_under supports_variations_flags = CLOTHING_DIGITIGRADE_MASK + bodyshapes_with_variations = BODYSHAPE_DIGITIGRADE equip_sound = 'sound/items/equip/jumpsuit_equip.ogg' drop_sound = 'sound/items/handling/cloth/cloth_drop1.ogg' pickup_sound = 'sound/items/handling/cloth/cloth_pickup1.ogg' @@ -110,7 +111,7 @@ return changed ? CONTEXTUAL_SCREENTIP_SET : . -/obj/item/clothing/under/worn_overlays(mutable_appearance/standing, isinhands = FALSE) +/obj/item/clothing/under/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(isinhands) return @@ -120,11 +121,11 @@ if(accessory_overlay) . += accessory_overlay -/obj/item/clothing/under/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) +/obj/item/clothing/under/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if (isinhands) return - var/blood_overlay = get_blood_overlay("uniform") + var/blood_overlay = get_blood_overlay("uniform", bodyshape) if (blood_overlay) . += blood_overlay diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 9c1fe797ba5..9c69ed4b3f9 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -22,6 +22,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /// Returns a random, acceptable jumpsuit typepath /proc/get_random_jumpsuit() diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm index f72fba10945..c38caff9e9b 100644 --- a/code/modules/clothing/under/costume.dm +++ b/code/modules/clothing/under/costume.dm @@ -105,6 +105,7 @@ body_parts_covered = CHEST|GROIN|ARMS female_sprite_flags = NO_FEMALE_UNIFORM supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE can_adjust = FALSE resistance_flags = NONE @@ -128,6 +129,7 @@ body_parts_covered = CHEST|GROIN female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE alternate_worn_layer = UNDER_SUIT_LAYER can_adjust = FALSE clothing_flags = parent_type::clothing_flags | CARP_STYLE_FACTOR //weebs are gonna love this @@ -147,6 +149,7 @@ body_parts_covered = CHEST|GROIN|ARMS can_adjust = FALSE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE clothing_flags = parent_type::clothing_flags | CARP_STYLE_FACTOR female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY @@ -168,6 +171,7 @@ body_parts_covered = CHEST|GROIN|ARMS can_adjust = FALSE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE clothing_flags = parent_type::clothing_flags | CARP_STYLE_FACTOR female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY @@ -385,6 +389,7 @@ flags_1 = IS_PLAYER_COLORABLE_1 female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/costume/buttondown/skirt/service //preset one to be a formal white shirt and black skirt icon_state = "/obj/item/clothing/under/costume/buttondown/skirt/service" @@ -551,6 +556,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/costume/head_of_personnel name = "head of personnel's suit" @@ -568,3 +574,4 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE diff --git a/code/modules/clothing/under/ethereal.dm b/code/modules/clothing/under/ethereal.dm index 25a47323a30..169010c0cfb 100644 --- a/code/modules/clothing/under/ethereal.dm +++ b/code/modules/clothing/under/ethereal.dm @@ -15,7 +15,7 @@ . = ..() update_icon(UPDATE_OVERLAYS) -/obj/item/clothing/under/ethereal_tunic/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/under/ethereal_tunic/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance('icons/mob/clothing/under/ethereal.dmi', "eth_tunic_emissive", offset_spokesman = src, alpha = src.alpha) diff --git a/code/modules/clothing/under/jobs/cargo.dm b/code/modules/clothing/under/jobs/cargo.dm index c2c1325d4aa..2ee01f77388 100644 --- a/code/modules/clothing/under/jobs/cargo.dm +++ b/code/modules/clothing/under/jobs/cargo.dm @@ -17,6 +17,7 @@ body_parts_covered = CHEST|GROIN|ARMS dying_key = DYE_REGISTRY_JUMPSKIRT supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY /obj/item/clothing/under/rank/cargo/tech @@ -32,6 +33,7 @@ inhand_icon_state = "lb_suit" body_parts_covered = CHEST|GROIN|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/cargo/tech/skirt name = "cargo technician's skirt" @@ -40,6 +42,7 @@ inhand_icon_state = "lb_suit" body_parts_covered = CHEST|GROIN|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY diff --git a/code/modules/clothing/under/jobs/centcom.dm b/code/modules/clothing/under/jobs/centcom.dm index 38bcafe1211..7fabdb9aa86 100644 --- a/code/modules/clothing/under/jobs/centcom.dm +++ b/code/modules/clothing/under/jobs/centcom.dm @@ -42,6 +42,7 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY body_parts_covered = CHEST|GROIN|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/centcom/officer_skirt/replica name = "\improper CentCom turtleneck skirt replica" @@ -55,6 +56,7 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY body_parts_covered = CHEST|GROIN|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/centcom/military name = "tactical combat uniform" diff --git a/code/modules/clothing/under/jobs/civilian/civilian.dm b/code/modules/clothing/under/jobs/civilian/civilian.dm index 86ea0a9e452..c6d89bd056a 100644 --- a/code/modules/clothing/under/jobs/civilian/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian/civilian.dm @@ -27,6 +27,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/head_of_personnel desc = "A slick uniform worn by those to earn the position of \"Head of Personnel\"." @@ -43,6 +44,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/hydroponics desc = "It's a jumpsuit designed to protect against minor plant-related hazards." @@ -63,6 +65,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/janitor desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards." @@ -82,6 +85,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/janitor/maid name = "maid uniform" @@ -122,6 +126,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/lawyer/beige name = "good lawyer's suit" @@ -137,6 +142,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/lawyer/red name = "lawyer red suit" @@ -150,6 +156,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/lawyer/blue name = "lawyer blue suit" @@ -163,6 +170,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/lawyer/bluesuit name = "blue buttondown suit" @@ -187,6 +195,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/lawyer/purpsuit name = "purple suit" @@ -204,6 +213,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/lawyer/galaxy icon = 'icons/obj/clothing/under/lawyer_galaxy.dmi' @@ -219,6 +229,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/lawyer/galaxy/red name = "red galaxy suit" @@ -231,6 +242,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/cookjorts name = "grilling shorts" diff --git a/code/modules/clothing/under/jobs/civilian/clown_mime.dm b/code/modules/clothing/under/jobs/civilian/clown_mime.dm index 1ed0b8608cf..b2cc738739a 100644 --- a/code/modules/clothing/under/jobs/civilian/clown_mime.dm +++ b/code/modules/clothing/under/jobs/civilian/clown_mime.dm @@ -14,6 +14,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/mime/sexy name = "sexy mime outfit" @@ -32,6 +33,7 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/civilian/clown/Initialize(mapload) . = ..() diff --git a/code/modules/clothing/under/jobs/command.dm b/code/modules/clothing/under/jobs/command.dm index 0df4a925fe1..9fbe969f58e 100644 --- a/code/modules/clothing/under/jobs/command.dm +++ b/code/modules/clothing/under/jobs/command.dm @@ -21,6 +21,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/captain/parade name = "captain's parade uniform" diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 257312ffff8..4771abdc27e 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -31,6 +31,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/engineering/chief_engineer/turtleneck name = "chief engineer's turtleneck" @@ -50,6 +51,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/engineering/atmospheric_technician desc = "It's a jumpsuit worn by atmospheric technicians. Made from fire resistant materials." @@ -66,6 +68,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/engineering/engineer desc = "It's an orange high visibility jumpsuit worn by engineers. Made from fire resistant materials." @@ -89,3 +92,4 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE diff --git a/code/modules/clothing/under/jobs/medical.dm b/code/modules/clothing/under/jobs/medical.dm index 42d3c7aa8cf..286b19c202d 100644 --- a/code/modules/clothing/under/jobs/medical.dm +++ b/code/modules/clothing/under/jobs/medical.dm @@ -22,6 +22,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/medical/chief_medical_officer desc = "It's a jumpsuit worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection." @@ -38,6 +39,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/medical/chief_medical_officer/scrubs name = "chief medical officer's scrubs" @@ -67,6 +69,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/medical/virologist desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." @@ -83,6 +86,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/medical/scrubs name = "medical scrubs" @@ -118,6 +122,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/medical/scrubs/coroner name = "coroner scrubs" @@ -144,6 +149,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/medical/paramedic desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic." @@ -160,6 +166,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/medical/doctor/nurse desc = "It's a jumpsuit commonly worn by nursing staff in the medical department." diff --git a/code/modules/clothing/under/jobs/rnd.dm b/code/modules/clothing/under/jobs/rnd.dm index 44cb6889768..aff332cd7ef 100644 --- a/code/modules/clothing/under/jobs/rnd.dm +++ b/code/modules/clothing/under/jobs/rnd.dm @@ -33,6 +33,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/rnd/research_director/alt name = "research director's tan suit" @@ -57,6 +58,7 @@ body_parts_covered = CHEST|GROIN|ARMS female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/rnd/research_director/turtleneck desc = "A Nanotrasen-purple turtleneck and black jeans, for a director with a superior sense of style." @@ -74,6 +76,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/rnd/scientist name = "scientist's jumpsuit" @@ -89,6 +92,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/rnd/roboticist desc = "It's a slimming black with reinforced seams; great for industrial work." @@ -106,6 +110,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/rnd/geneticist name = "geneticist's jumpsuit" @@ -120,3 +125,4 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 8d6753afadb..5c65963d690 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -45,6 +45,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/security/officer/blueshirt name = "blue shirt and tie" @@ -90,6 +91,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/security/warden/formal desc = "The insignia on this uniform tells you that this uniform belongs to the Warden." @@ -118,6 +120,7 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY alt_covers_chest = TRUE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/security/detective/noir name = "noir suit" @@ -136,6 +139,7 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY alt_covers_chest = TRUE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /* * Head of Security @@ -163,6 +167,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/security/head_of_security/grey name = "head of security's grey jumpsuit" @@ -187,6 +192,7 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY alt_covers_chest = TRUE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/security/head_of_security/parade name = "head of security's parade uniform" @@ -265,6 +271,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/rank/security/officer/beatcop name = "space police uniform" diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index 7110fab35bc..e780d2d4d96 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -11,6 +11,7 @@ body_parts_covered = GROIN female_sprite_flags = NO_FEMALE_UNIFORM supports_variations_flags = NONE + bodyshapes_with_variations = NONE can_adjust = FALSE species_exception = list(/datum/species/golem) flags_1 = IS_PLAYER_COLORABLE_1 diff --git a/code/modules/clothing/under/skirt_dress.dm b/code/modules/clothing/under/skirt_dress.dm index 34a492e2b56..d0dbea735cd 100644 --- a/code/modules/clothing/under/skirt_dress.dm +++ b/code/modules/clothing/under/skirt_dress.dm @@ -3,6 +3,7 @@ can_adjust = FALSE body_parts_covered = CHEST|GROIN supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE icon = 'icons/obj/clothing/under/dress.dmi' worn_icon = 'icons/mob/clothing/under/dress.dmi' diff --git a/code/modules/clothing/under/suits.dm b/code/modules/clothing/under/suits.dm index f77114d4aab..6d7183be3db 100644 --- a/code/modules/clothing/under/suits.dm +++ b/code/modules/clothing/under/suits.dm @@ -49,6 +49,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/suit/white name = "white suit" @@ -64,6 +65,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/suit/tan name = "tan suit" @@ -92,6 +94,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY|FEMALE_UNIFORM_NO_BREASTS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/suit/tuxedo name = "tuxedo" diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index c195718dc3a..4d15df94638 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -23,6 +23,7 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY dying_key = DYE_REGISTRY_JUMPSKIRT supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/syndicate/bloodred name = "blood-red sneaksuit" @@ -33,6 +34,7 @@ resistance_flags = FIRE_PROOF | ACID_PROOF can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE /obj/item/clothing/under/syndicate/bloodred/Initialize(mapload) . = ..() @@ -97,6 +99,7 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY dying_key = DYE_REGISTRY_JUMPSKIRT supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE /obj/item/clothing/under/syndicate/sniper name = "tactical turtleneck suit" @@ -105,6 +108,7 @@ inhand_icon_state = "bl_suit" can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE /obj/item/clothing/under/syndicate/camo name = "camouflage fatigues" @@ -113,6 +117,7 @@ inhand_icon_state = "g_suit" can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE /obj/item/clothing/under/syndicate/cybersun name = "\improper Cybersun businesswear" @@ -122,6 +127,7 @@ inhand_icon_state = "bl_suit" can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE /obj/item/clothing/under/syndicate/floortilecamo name = "floortile camouflage fatigues" @@ -131,6 +137,7 @@ inhand_icon_state = "gy_suit" can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE /obj/item/clothing/under/syndicate/floortilecamo/Initialize(mapload) . = ..() @@ -142,6 +149,7 @@ icon_state = "trackpants" can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE armor_type = /datum/armor/clothing_under/syndicate_soviet resistance_flags = NONE @@ -154,6 +162,7 @@ icon_state = "syndicate_combat" can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE /obj/item/clothing/under/syndicate/rus_army name = "advanced military tracksuit" @@ -161,6 +170,7 @@ icon_state = "rus_under" can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE armor_type = /datum/armor/clothing_under/syndicate_rus_army resistance_flags = NONE @@ -175,6 +185,7 @@ icon_state = "scrubswine" can_adjust = FALSE supports_variations_flags = NONE + bodyshapes_with_variations = NONE armor_type = /datum/armor/clothing_under/syndicate_scrubs /obj/item/clothing/under/syndicate/scrubs/Initialize(mapload) diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm index ce2abbc6b99..a6d6fe48425 100644 --- a/code/modules/fishing/fishing_rod.dm +++ b/code/modules/fishing/fishing_rod.dm @@ -508,11 +508,11 @@ bait_state = "battery_overlay" . += bait_state -/obj/item/fishing_rod/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/fishing_rod/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() - . += get_fishing_worn_overlays(standing, isinhands, icon_file) + . += get_fishing_worn_overlays(standing, isinhands, icon_file, bodyshape) -/obj/item/fishing_rod/proc/get_fishing_worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/fishing_rod/proc/get_fishing_worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = list() var/line_color = line?.line_color || default_line_color var/mutable_appearance/reel_overlay = mutable_appearance(icon_file, "reel_overlay", appearance_flags = RESET_COLOR|KEEP_APART) @@ -740,7 +740,7 @@ return list() return ..() -/obj/item/fishing_rod/telescopic/get_fishing_worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/fishing_rod/telescopic/get_fishing_worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) return list() return ..() diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index 8c8f1135d89..b09bcfa7175 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -122,7 +122,7 @@ tag_overlay.pixel_z = box_offset . += tag_overlay -/obj/item/pizzabox/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/pizzabox/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() var/current_offset = 2 if(!isinhands) diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm index f73ab5f588c..fbb870a0670 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm @@ -344,7 +344,7 @@ GLOBAL_LIST_INIT(nullrod_variants, init_nullrod_variants()) . = ..() AddComponent(/datum/component/walking_aid) -/obj/item/nullrod/staff/worn_overlays(mutable_appearance/standing, isinhands) +/obj/item/nullrod/staff/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(isinhands) . += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_SHIELD_LAYER) diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index e3b92dda982..99578b9bf72 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -7,6 +7,7 @@ worn_icon = 'icons/mob/clothing/suits/utility.dmi' inhand_icon_state = null supports_variations_flags = CLOTHING_DIGITIGRADE_MASK + bodyshapes_with_variations = BODYSHAPE_DIGITIGRADE body_parts_covered = CHEST|GROIN|LEGS|ARMS cold_protection = CHEST|GROIN|LEGS|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT @@ -115,6 +116,7 @@ alternate_worn_layer = NECK_LAYER body_parts_covered = CHEST|GROIN|LEGS|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + bodyshapes_with_variations = NONE cold_protection = CHEST|GROIN|LEGS|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT heat_protection = CHEST|GROIN|LEGS|ARMS diff --git a/code/modules/mining/equipment/kheiral_cuffs.dm b/code/modules/mining/equipment/kheiral_cuffs.dm index 79264731c88..8fce6f55432 100644 --- a/code/modules/mining/equipment/kheiral_cuffs.dm +++ b/code/modules/mining/equipment/kheiral_cuffs.dm @@ -100,7 +100,7 @@ else if(isliving(loc.loc)) // for the "worn as accessory" case connect_kheiral_network(loc.loc) -/obj/item/clothing/accessory/kheiral_cuffs/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/accessory/kheiral_cuffs/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "strandcuff_emissive", src, alpha = src.alpha) diff --git a/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm b/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm index 38f51568544..fe03791baed 100644 --- a/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm +++ b/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm @@ -106,7 +106,7 @@ if (blink?.current_charges) . += "hierophant_ready" -/obj/item/hierophant_club/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/hierophant_club/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if (blink?.current_charges) . += "hierophant_ready" diff --git a/code/modules/mob/living/basic/drone/drone_tools.dm b/code/modules/mob/living/basic/drone/drone_tools.dm index d1be8ab0cec..d7d88bd7f8c 100644 --- a/code/modules/mob/living/basic/drone/drone_tools.dm +++ b/code/modules/mob/living/basic/drone/drone_tools.dm @@ -49,7 +49,7 @@ greyscale_config = null greyscale_colors = null -/obj/item/screwdriver/drone/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) +/obj/item/screwdriver/drone/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(!isinhands) return diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm index 8561b2178ff..e4e5b079b74 100644 --- a/code/modules/mob/living/carbon/carbon_update_icons.dm +++ b/code/modules/mob/living/carbon/carbon_update_icons.dm @@ -399,21 +399,21 @@ /// Overlays for the worn overlay so you can overlay while you overlay /// eg: ammo counters, primed grenade flashing, etc. /// "icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file -/obj/item/proc/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file) +/obj/item/proc/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) SHOULD_CALL_PARENT(TRUE) RETURN_TYPE(/list) . = list() if(blocks_emissive != EMISSIVE_BLOCK_NONE) . += emissive_blocker(standing.icon, standing.icon_state, src) - SEND_SIGNAL(src, COMSIG_ITEM_GET_WORN_OVERLAYS, ., standing, isinhands, icon_file) + SEND_SIGNAL(src, COMSIG_ITEM_GET_WORN_OVERLAYS, ., standing, isinhands, icon_file, bodyshape) /// worn_overlays to use when you'd want to use KEEP_APART. Don't use KEEP_APART neither there nor here, as it would break floating overlays -/obj/item/proc/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) +/obj/item/proc/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE) SHOULD_CALL_PARENT(TRUE) RETURN_TYPE(/list) . = list() - SEND_SIGNAL(src, COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, ., standing, draw_target, isinhands, icon_file) + SEND_SIGNAL(src, COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, ., standing, draw_target, isinhands, icon_file, bodyshape) ///Checks to see if any bodyparts need to be redrawn, then does so. update_limb_data = TRUE redraws the limbs to conform to the owner. ///Returns an integer representing the number of limbs that were updated. diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index f22819057c6..eeaa717558b 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -28,7 +28,7 @@ GLOBAL_LIST_EMPTY(features_by_species) */ var/plural_form - ///Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows + /// Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows var/sexes = TRUE ///The maximum number of bodyparts this species can have. diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index adc59f11027..55fbb4cec72 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -93,13 +93,19 @@ There are several things that need to be remembered: //"override_file = handled_by_bodyshape ? icon_file : null" MUST be added to the arguments of build_worn_icon() //Friendly reminder that icon_exists_or_scream(file, state) is your friend when debugging this code. var/handled_by_bodyshape = TRUE + var/digi = (bodyshape & BODYSHAPE_DIGITIGRADE) var/icon_file var/woman + var/female_sprite_flags = uniform.female_sprite_flags //BEGIN SPECIES HANDLING - if((bodyshape & BODYSHAPE_DIGITIGRADE) && (uniform.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION)) + if(digi && (uniform.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION)) icon_file = DIGITIGRADE_UNIFORM_FILE //Female sprites have lower priority than digitigrade sprites - else if(dna.species.sexes && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(uniform.female_sprite_flags & NO_FEMALE_UNIFORM)) //Agggggggghhhhh + var/chest_is_dimorphic + if(dna.species.sexes) + var/obj/item/bodypart/chest/our_chest = get_bodypart(BODY_ZONE_CHEST) + chest_is_dimorphic = our_chest.is_dimorphic + if(chest_is_dimorphic && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(female_sprite_flags & NO_FEMALE_UNIFORM)) //Agggggggghhhhh woman = TRUE if(!icon_exists(icon_file, RESOLVE_ICON_STATE(uniform))) @@ -111,7 +117,7 @@ There are several things that need to be remembered: default_layer = UNIFORM_LAYER, default_icon_file = icon_file, isinhands = FALSE, - female_uniform = woman ? uniform.female_sprite_flags : null, + female_uniform = woman ? female_sprite_flags : null, override_state = target_overlay, override_file = handled_by_bodyshape ? icon_file : null, bodyshape = bodyshape, @@ -301,7 +307,8 @@ There are several things that need to be remembered: if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDESUITSTORAGE)) return - var/mutable_appearance/s_store_overlay = worn_item.build_worn_icon(default_layer = SUIT_STORE_LAYER, default_icon_file = 'icons/mob/clothing/belt_mirror.dmi') + + var/mutable_appearance/s_store_overlay = worn_item.build_worn_icon(default_layer = SUIT_STORE_LAYER, default_icon_file = 'icons/mob/clothing/belt_mirror.dmi', bodyshape = bodyshape) apply_height(s_store_overlay, ENTIRE_BODY) var/obj/item/bodypart/chest/my_chest = get_bodypart(BODY_ZONE_CHEST) my_chest?.worn_suit_storage_offset?.apply_offset(s_store_overlay) @@ -430,12 +437,12 @@ There are several things that need to be remembered: return hands /// Modifies a sprite slightly to conform to female body shapes -/proc/wear_female_version(icon_state, icon, type, greyscale_colors) - var/index = "[icon_state]-[greyscale_colors]" +/proc/wear_female_version(icon_state, icon_file_path, icon, type, greyscale_colors, bodyshape) + var/index = "[icon_file_path]-[icon_state]-[greyscale_colors]" var/static/list/female_clothing_icons = list() var/icon/female_clothing_icon = female_clothing_icons[index] if(!female_clothing_icon) //Create standing/laying icons if they don't exist - var/female_icon_state = "female[type == FEMALE_UNIFORM_FULL ? "_full" : ((!type || type & FEMALE_UNIFORM_TOP_ONLY) ? "_top" : "")][type & FEMALE_UNIFORM_NO_BREASTS ? "_no_breasts" : ""]" + var/female_icon_state = "female[type == FEMALE_UNIFORM_FULL ? "_full" : ((!type || type & FEMALE_UNIFORM_TOP_ONLY) || bodyshape & BODYSHAPE_DIGITIGRADE ? "_top" : "")][type & FEMALE_UNIFORM_NO_BREASTS ? "_no_breasts" : ""]" var/icon/female_cropping_mask = icon('icons/mob/clothing/under/masking_helpers.dmi', female_icon_state) female_clothing_icon = icon(icon, icon_state) female_clothing_icon.Blend(female_cropping_mask, ICON_MULTIPLY) @@ -444,24 +451,24 @@ There are several things that need to be remembered: return icon(female_clothing_icon) -/// Modifies a sprite to conform to digitigrade body shapes -/proc/wear_digi_version(icon/base_icon, obj/item/item, key, greyscale_colors) - ASSERT(istype(item), "wear_digi_version: no item passed") - ASSERT(istext(key), "wear_digi_version: no key passed") - if(isnull(greyscale_colors) || length(SSgreyscale.ParseColorString(greyscale_colors)) > 1) - greyscale_colors = item.get_general_color(base_icon) +/// Modifies a sprite to conform to custom body shapes +/obj/item/proc/get_bodyshape_icon(icon/base_icon, key, bodyshape) + ASSERT(istext(key), "get_bodyshape_icon: no key passed") + if((bodyshape & BODYSHAPE_DIGITIGRADE) && (supports_variations_flags & CLOTHING_DIGITIGRADE_MASK)) + if(isnull(greyscale_colors) || length(SSgreyscale.ParseColorString(greyscale_colors)) > 1) + greyscale_colors = get_general_color(base_icon) - var/index = "[key]-[item.type]-[greyscale_colors]" - var/static/list/digitigrade_clothing_cache = list() - var/icon/resulting_icon = digitigrade_clothing_cache[index] - if(!resulting_icon) - resulting_icon = item.generate_digitigrade_icons(base_icon, greyscale_colors) + var/index = "[key]-[type]-[greyscale_colors]" + var/static/list/digitigrade_clothing_cache = list() + var/icon/resulting_icon = digitigrade_clothing_cache[index] if(!resulting_icon) - stack_trace("[item.type] is set to generate a masked digitigrade icon, but generate_digitigrade_icons was not implemented (or error'd).") - return base_icon - digitigrade_clothing_cache[index] = fcopy_rsc(resulting_icon) + resulting_icon = generate_digitigrade_icons(base_icon, greyscale_colors) + if(!resulting_icon) + stack_trace("[type] is set to generate a masked digitigrade icon, but generate_digitigrade_icons was not implemented (or error'd).") + return base_icon + digitigrade_clothing_cache[index] = fcopy_rsc(resulting_icon) - return icon(resulting_icon) + return icon(resulting_icon) /// Modifies a sprite to replace the legs with a new version /proc/replace_icon_legs(icon/base_icon, icon/new_legs) @@ -591,16 +598,17 @@ generate/load female uniform sprites matching all previously decided variables if(female_uniform) building_icon = wear_female_version( icon_state = t_state, + icon_file_path = file2use, icon = file2use, type = female_uniform, greyscale_colors = greyscale_colors, + bodyshape = bodyshape, ) - if(!isinhands && (bodyshape & BODYSHAPE_DIGITIGRADE) && (supports_variations_flags & CLOTHING_DIGITIGRADE_MASK)) - building_icon = wear_digi_version( + if(!isinhands && (bodyshapes_with_variations & bodyshape)) + building_icon = get_bodyshape_icon( base_icon = building_icon || icon(file2use, t_state), - item = src, key = "[t_state]-[file2use]-[female_uniform]", - greyscale_colors = greyscale_colors, + bodyshape = bodyshape, ) if(building_icon) draw_target = mutable_appearance(building_icon, layer = -layer2use) @@ -609,7 +617,7 @@ generate/load female uniform sprites matching all previously decided variables //Get the overlays for this item when it's being worn //eg: ammo counters, primed grenade flashes, etc. - var/list/worn_overlays = worn_overlays(draw_target, isinhands, file2use) + var/list/worn_overlays = worn_overlays(draw_target, isinhands, file2use, bodyshape) if(length(worn_overlays)) draw_target.overlays += worn_overlays draw_target = color_atom_overlay(draw_target) @@ -618,7 +626,7 @@ generate/load female uniform sprites matching all previously decided variables // but KEEP_APART breaks float layering, so what we need to do is make fake KEEP_APART for us to use var/mutable_appearance/standing = mutable_appearance(layer = -layer2use, appearance_flags = KEEP_TOGETHER) standing.overlays += draw_target - var/list/separate_overlays = separate_worn_overlays(standing, draw_target, isinhands, file2use) + var/list/separate_overlays = separate_worn_overlays(standing, draw_target, isinhands, file2use, bodyshape) if(length(separate_overlays)) standing.overlays += separate_overlays else // Don't nest overlays if there's nothing to nest against diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm index 1ce9b43337f..966462f6809 100644 --- a/code/modules/mod/mod_link.dm +++ b/code/modules/mod/mod_link.dm @@ -260,7 +260,7 @@ balloon_alert(user, "frequency set") . = ITEM_INTERACT_SUCCESS -/obj/item/clothing/neck/link_scryer/worn_overlays(mutable_appearance/standing, isinhands) +/obj/item/clothing/neck/link_scryer/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!QDELETED(mod_link.link_call)) . += mutable_appearance('icons/mob/clothing/neck.dmi', "modlink_active") diff --git a/code/modules/mod/mod_part.dm b/code/modules/mod/mod_part.dm index a184df7f7a0..d74a6f24720 100644 --- a/code/modules/mod/mod_part.dm +++ b/code/modules/mod/mod_part.dm @@ -30,7 +30,7 @@ RegisterSignal(part_item, COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, PROC_REF(get_separate_worn_overlays)) // If we're overslotting an item, add its visual as an underlay -/datum/mod_part/proc/get_separate_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/datum/mod_part/proc/get_separate_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if (!overslotting || sealed) @@ -40,7 +40,7 @@ if (ismob(source.loc)) var/mob/as_mob = source.loc checked_slot = as_mob.get_slot_by_item(source) - var/mutable_appearance/worn_overlay = overslotting.build_worn_icon(default_layer = -draw_target.layer + 0.1, default_icon_file = get_default_icon_by_slot(checked_slot)) + var/mutable_appearance/worn_overlay = overslotting.build_worn_icon(default_layer = -draw_target.layer + 0.1, default_icon_file = get_default_icon_by_slot(checked_slot), bodyshape = bodyshape) for (var/mutable_appearance/overlay in worn_overlay.overlays) overlay.layer = draw_target.layer + 0.1 overlays += worn_overlay diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm index 432a2676653..a6d812f462b 100644 --- a/code/modules/mod/modules/_module.dm +++ b/code/modules/mod/modules/_module.dm @@ -381,7 +381,7 @@ qdel(src) /// Adds the worn overlays to the suit. -/obj/item/mod/module/proc/add_module_overlay(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/obj/item/mod/module/proc/add_module_overlay(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if (isinhands) diff --git a/code/modules/reagents/reagent_containers/jerrycan.dm b/code/modules/reagents/reagent_containers/jerrycan.dm index 2d8ff258340..b92dc7ec85c 100644 --- a/code/modules/reagents/reagent_containers/jerrycan.dm +++ b/code/modules/reagents/reagent_containers/jerrycan.dm @@ -85,7 +85,7 @@ if(cap_type) . += mutable_appearance(icon, "[base_icon_state]_cap_[cap_type]") -/obj/item/reagent_containers/cup/jerrycan/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/reagent_containers/cup/jerrycan/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) return