From ba5db365e31473bd7415de7c448e9af0703905ca Mon Sep 17 00:00:00 2001 From: Alan Date: Thu, 9 Apr 2026 00:21:23 -0400 Subject: [PATCH] Adjust earwear for monitor heads. (#31775) * Adjust earwear for monitor heads. * Tweak soviet headset, correct icon code. --- .../objects/items/devices/radio/headset.dm | 1 + code/modules/clothing/ears/earmuffs.dm | 1 + .../instruments/objs/items/headphones.dm | 1 + .../living/carbon/human/human_update_icons.dm | 27 ++++++++++++++++-- .../clothing/species/machine/monitor/ears.dmi | Bin 0 -> 3565 bytes 5 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 icons/mob/clothing/species/machine/monitor/ears.dmi diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 5d48b8cede3..2d70810384b 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -4,6 +4,7 @@ icon_state = "headset" worn_icon_state = "headset" inhand_icon_state = "headset" + var/icon_monitor = 'icons/mob/clothing/species/machine/monitor/ears.dmi' sprite_sheets = list( "Vox" = 'icons/mob/clothing/species/vox/ears.dmi', //We read you loud and skree-er. "Kidan" = 'icons/mob/clothing/species/kidan/ears.dmi' diff --git a/code/modules/clothing/ears/earmuffs.dm b/code/modules/clothing/ears/earmuffs.dm index 7f345475022..1bde5bac425 100644 --- a/code/modules/clothing/ears/earmuffs.dm +++ b/code/modules/clothing/ears/earmuffs.dm @@ -2,6 +2,7 @@ name = "earmuffs" desc = "Protects your hearing from loud noises, and quiet ones as well." icon_state = "earmuffs" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/ears.dmi' flags = EARBANGPROTECT strip_delay = 15 put_on_delay = 25 diff --git a/code/modules/instruments/objs/items/headphones.dm b/code/modules/instruments/objs/items/headphones.dm index 76678b1b6de..f572ca112e8 100644 --- a/code/modules/instruments/objs/items/headphones.dm +++ b/code/modules/instruments/objs/items/headphones.dm @@ -3,6 +3,7 @@ desc = "Unce unce unce unce." icon_state = "headphones0" inhand_icon_state = "headphones" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/ears.dmi' actions_types = list(/datum/action/item_action/change_headphones_song, /datum/action/item_action/toggle_music_notes) var/datum/song/headphones/song var/on = FALSE 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 94017938944..a53eec58750 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -764,11 +764,24 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) left_ear_inv?.update_icon() right_ear_inv?.update_icon() + var/obj/item/organ/external/head/head_organ = get_organ("head") + var/datum/robolimb/robohead = head_organ.is_robotic() ? GLOB.all_robolimbs[head_organ.model] : null + if(l_ear) update_hud_l_ear(l_ear) + var/obj/item/radio/headset/ear_radio + var/obj/item/clothing/ear_clothes + var/icon/monitor_icon + if(istype(l_ear, /obj/item/radio/headset)) + ear_radio = l_ear + monitor_icon = ear_radio.icon_monitor + else if(istype(l_ear, /obj/item/clothing)) + ear_clothes = l_ear + monitor_icon = ear_clothes.icon_monitor + if((!head || !(head.flags_inv & HIDEEARS)) && (!wear_mask || !(wear_mask.flags_inv & HIDEEARS)) && !HAS_TRAIT(l_ear, TRAIT_NO_WORN_ICON)) - var/worn_icon = listgetindex(l_ear.sprite_sheets, dna.species.sprite_sheet_name) || 'icons/mob/clothing/ears.dmi' + var/worn_icon = listgetindex(l_ear.sprite_sheets, dna.species.sprite_sheet_name) || (robohead && robohead.is_monitor && (ear_clothes || ear_radio) ? monitor_icon : FALSE) || 'icons/mob/clothing/ears.dmi' var/worn_state = l_ear.worn_icon_state || l_ear.icon_state overlays_standing[LEFT_EAR_LAYER] = mutable_appearance(worn_icon, worn_state, layer = -LEFT_EAR_LAYER) @@ -776,8 +789,18 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) if(r_ear) update_hud_r_ear(r_ear) + var/obj/item/radio/headset/ear_radio + var/obj/item/clothing/ear_clothes + var/icon/monitor_icon + if(istype(r_ear, /obj/item/radio/headset)) + ear_radio = r_ear + monitor_icon = ear_radio.icon_monitor + else if(istype(r_ear, /obj/item/clothing)) + ear_clothes = r_ear + monitor_icon = ear_clothes.icon_monitor + if((!head || !(head.flags_inv & HIDEEARS)) && (!wear_mask || !(wear_mask.flags_inv & HIDEEARS)) && !HAS_TRAIT(r_ear, TRAIT_NO_WORN_ICON)) - var/worn_icon = listgetindex(r_ear.sprite_sheets, dna.species.sprite_sheet_name) || 'icons/mob/clothing/ears.dmi' + var/worn_icon = listgetindex(r_ear.sprite_sheets, dna.species.sprite_sheet_name) || (robohead && robohead.is_monitor && (ear_clothes || ear_radio) ? monitor_icon : FALSE) || 'icons/mob/clothing/ears.dmi' var/worn_state = r_ear.worn_icon_state || r_ear.icon_state overlays_standing[RIGHT_EAR_LAYER] = mutable_appearance(worn_icon, worn_state, layer = -RIGHT_EAR_LAYER) diff --git a/icons/mob/clothing/species/machine/monitor/ears.dmi b/icons/mob/clothing/species/machine/monitor/ears.dmi new file mode 100644 index 0000000000000000000000000000000000000000..52d36379491e9680228a8e2b0d77b79d8efa0b2a GIT binary patch literal 3565 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 bmu&$|$TS5OYvJjV_Zx6H;(Qoui~Ql=L>Yd; literal 0 HcmV?d00001