diff --git a/code/__DEFINES/icon_layering.dm b/code/__DEFINES/icon_layering.dm index e8cc6e5bce5..31b3a96db5c 100644 --- a/code/__DEFINES/icon_layering.dm +++ b/code/__DEFINES/icon_layering.dm @@ -1,45 +1,46 @@ // Human Overlays Indexes // // Layer 1 intentionally left empty. -#define FIRE_LAYER_LOWER 2 -#define MUTATIONS_LAYER 3 -#define SURGERY_LAYER 4 -#define UNDERWEAR_LAYER 5 -#define TAIL_SOUTH_LAYER 6 -#define TAIL_SOUTH_ACC_LAYER 7 -#define SHOES_LAYER_ALT 8 -#define WRISTS_LAYER_UNDER 9 -#define UNIFORM_LAYER 10 -#define MOB_DAMAGE_LAYER 11 -#define ID_LAYER 12 -#define BANDAGE_LAYER 13 -#define SHOES_LAYER 14 -#define GLOVES_LAYER 15 -#define BELT_LAYER 16 -#define WRISTS_LAYER_UNIFORM 17 -#define SUIT_LAYER 18 -#define ID_LAYER_ALT 19 -#define TAIL_NORTH_LAYER 20 -#define TAIL_NORTH_ACC_LAYER 21 -#define HAIR_LAYER_ALT 22 -#define HAIR_LAYER_ALT_EMISSIVE 23 -#define GLASSES_LAYER 24 -#define BELT_LAYER_ALT 25 -#define SUIT_STORE_LAYER 26 -#define BACK_LAYER 27 -#define HAIR_LAYER 28 -#define HAIR_LAYER_EMISSIVE 29 -#define GLASSES_LAYER_ALT 30 -#define L_EAR_LAYER 31 -#define R_EAR_LAYER 32 -#define FACEMASK_LAYER 33 -#define HEAD_LAYER 34 -#define GLASSES_LAYER_OVER 35 -#define COLLAR_LAYER 36 -#define WRISTS_LAYER_OVER 37 -#define HANDCUFF_LAYER 38 -#define LEGCUFF_LAYER 39 -#define L_HAND_LAYER 40 -#define R_HAND_LAYER 41 -#define FIRE_LAYER_UPPER 42 -#define TOTAL_LAYERS 42 -//////////////////////////// +#define FIRE_LAYER_LOWER 2 +#define MUTATIONS_LAYER 3 +#define SURGERY_LAYER 4 +#define UNDERWEAR_LAYER 5 +#define TAIL_SOUTH_LAYER 6 +#define TAIL_SOUTH_ACC_LAYER 7 +#define SHOES_LAYER_ALT 8 +#define WRISTS_LAYER_UNDER 9 +#define UNIFORM_LAYER 10 +#define MOB_DAMAGE_LAYER 11 +#define ID_LAYER 12 +#define BANDAGE_LAYER 13 +#define SHOES_LAYER 14 +#define GLOVES_LAYER 15 +#define BELT_LAYER 16 +#define WRISTS_LAYER_UNIFORM 17 +#define SUIT_LAYER 18 +#define ID_LAYER_ALT 19 +#define TAIL_NORTH_LAYER 20 +#define TAIL_NORTH_ACC_LAYER 21 +#define HAIR_LAYER_ALT 22 +#define HAIR_LAYER_ALT_EMISSIVE 23 +#define GLASSES_LAYER 24 +#define BELT_LAYER_ALT 25 +#define SUIT_STORE_LAYER 26 +#define BACK_LAYER 27 +#define HAIR_LAYER 28 +#define HAIR_LAYER_EMISSIVE 29 +#define GLASSES_LAYER_ALT 30 +#define L_EAR_LAYER 31 +#define R_EAR_LAYER 32 +#define FACEMASK_LAYER 33 +#define HEAD_LAYER 34 +#define L_EAR_LAYER_ALT 35 +#define R_EAR_LAYER_ALT 36 +#define GLASSES_LAYER_OVER 37 +#define COLLAR_LAYER 38 +#define WRISTS_LAYER_OVER 39 +#define HANDCUFF_LAYER 40 +#define LEGCUFF_LAYER 41 +#define L_HAND_LAYER 42 +#define R_HAND_LAYER 43 +#define FIRE_LAYER_UPPER 44 +#define TOTAL_LAYERS 44 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index d1f04897da7..1394dd205ec 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -790,9 +790,18 @@ There are several things that need to be remembered: else if(l_ear.item_icons && (slot_l_ear_str in l_ear.item_icons)) mob_icon = l_ear.item_icons[slot_l_ear_str] - overlays_raw[L_EAR_LAYER] = l_ear.get_mob_overlay(src, mob_icon, mob_state, slot_l_ear_str) + var/layer = L_EAR_LAYER + var/layer_alt = L_EAR_LAYER_ALT + var/obj/item/device/radio/headset/wrist/W = l_ear + if(istype(W) && W.mob_wear_layer == WRISTS_LAYER_OVER) + layer = L_EAR_LAYER_ALT + layer_alt = L_EAR_LAYER + + overlays_raw[layer] = l_ear.get_mob_overlay(src, mob_icon, mob_state, slot_l_ear_str) + overlays_raw[layer_alt] = null else overlays_raw[L_EAR_LAYER] = null + overlays_raw[L_EAR_LAYER_ALT] = null if(update_icons) update_icon() @@ -822,10 +831,18 @@ There are several things that need to be remembered: else if(r_ear.item_icons && (slot_r_ear_str in r_ear.item_icons)) mob_icon = r_ear.item_icons[slot_r_ear_str] - overlays_raw[R_EAR_LAYER] = r_ear.get_mob_overlay(src, mob_icon, mob_state, slot_r_ear_str) + var/layer = R_EAR_LAYER + var/layer_alt = R_EAR_LAYER_ALT + var/obj/item/device/radio/headset/wrist/W = r_ear + if(istype(W) && W.mob_wear_layer == WRISTS_LAYER_OVER) + layer = R_EAR_LAYER_ALT + layer_alt = R_EAR_LAYER + + overlays_raw[layer] = r_ear.get_mob_overlay(src, mob_icon, mob_state, slot_r_ear_str) + overlays_raw[layer_alt] = null else overlays_raw[R_EAR_LAYER] = null - + overlays_raw[R_EAR_LAYER_ALT] = null if(update_icons) update_icon() diff --git a/html/changelogs/clipon_layer_fix.yml b/html/changelogs/clipon_layer_fix.yml new file mode 100644 index 00000000000..49fc4d5baa8 --- /dev/null +++ b/html/changelogs/clipon_layer_fix.yml @@ -0,0 +1,7 @@ +author: Sparky_hotdog + +delete-after: True + +changes: + - bugfix: "Fixed clip-on radios layering underneath head items when equipped to ear slots." + - bugfix: "Fixed clip-on radios being one pixel closer to the centre when flipped." diff --git a/icons/obj/item/tools/radio/clip.dmi b/icons/obj/item/tools/radio/clip.dmi index b0ee36352f0..ba73eb5d0a6 100644 Binary files a/icons/obj/item/tools/radio/clip.dmi and b/icons/obj/item/tools/radio/clip.dmi differ