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