From 6e699e96cb3d589fad32c2beee8268cbb083c2be Mon Sep 17 00:00:00 2001 From: Alan Date: Thu, 18 Sep 2025 02:09:27 -0400 Subject: [PATCH] Add better-fitting eyewear for monitor heads. (#30197) * Add better-fitting eyewear for monitor heads. * Incorporate linter feedback. * Defluff * Nudge side view monitor glasses to sit to the front of the screen. --- code/modules/clothing/clothing.dm | 1 + code/modules/clothing/glasses/glasses.dm | 19 ++++++++++++++++++ code/modules/clothing/glasses/hudglasses.dm | 10 +++++++++ code/modules/clothing/glasses/hudgoggles.dm | 5 +++++ code/modules/clothing/glasses/tajblind.dm | 1 + code/modules/customitems/item_defines.dm | 4 ++++ .../living/carbon/human/human_update_icons.dm | 3 ++- .../clothing/species/machine/monitor/eyes.dmi | Bin 0 -> 11490 bytes 8 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 icons/mob/clothing/species/machine/monitor/eyes.dmi diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 377ad96adce..db75fbc0059 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -8,6 +8,7 @@ permeability_coefficient = 0.8 /// Only these species can wear this kit. var/list/species_restricted + var/icon_monitor = null //If set to a sprite path, replaces the sprite for monitor heads /// Can the wearer see reagents inside transparent containers while it's equipped? var/scan_reagents = FALSE /// Can the wearer see reagents inside any container and identify blood types while it's equipped? diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 51c09143be3..9ac6eb9c97c 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -89,6 +89,7 @@ inhand_icon_state = "meson" origin_tech = "magnets=1;engineering=2" prescription_upgradable = TRUE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' var/active_on_equip = TRUE /obj/item/clothing/glasses/meson/equipped(mob/user, slot, initial) @@ -128,6 +129,7 @@ force = 10 throwforce = 10 throw_speed = 4 + icon_monitor = null attack_verb = list("sliced") hitsound = 'sound/weapons/bladeslice.ogg' sharp = TRUE @@ -149,6 +151,7 @@ scan_reagents = TRUE // You can see reagents while wearing science goggles resistance_flags = ACID_PROOF armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 200, ACID = INFINITY) + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' actions_types = list(/datum/action/item_action/toggle_research_scanner) /obj/item/clothing/glasses/science/item_action_slot_check(slot) @@ -166,11 +169,13 @@ name = "janitorial goggles" desc = "These'll keep the soap out of your eyes." icon_state = "purple" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/night name = "night vision goggles" desc = "You can totally see in the dark now!" icon_state = "night" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' origin_tech = "materials=4;magnets=4;plasmatech=4;engineering=4" see_in_dark = 8 prescription_upgradable = TRUE @@ -188,6 +193,7 @@ icon_state = "eyepatch" inhand_icon_state = "blindfold" prescription_upgradable = TRUE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/monocle name = "monocle" @@ -197,12 +203,14 @@ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' prescription_upgradable = TRUE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/material name = "optical material scanner" desc = "Very confusing glasses." icon_state = "material" origin_tech = "magnets=3;engineering=3" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' vision_flags = SEE_OBJS | SEE_TURFS /obj/item/clothing/glasses/material/cyber @@ -225,6 +233,7 @@ desc = "Made by Nerd. Co." icon_state = "glasses" prescription = TRUE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/regular/hipster desc = "Made by Uncool. Co." @@ -235,27 +244,33 @@ desc = "Just some basic goggles, rather fashionable." icon_state = "goggles" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' + /obj/item/clothing/glasses/threedglasses name = "\improper 3D glasses" desc = "A long time ago, people used these glasses to makes images from screens threedimensional." icon_state = "3d" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/gglasses name = "green glasses" desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme." icon_state = "gglasses" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' prescription_upgradable = TRUE /obj/item/clothing/glasses/syndie name = "suspicious glasses" desc = "Suspicious-looking, stylish glasses. They don't look like they could protect you from a flash, however they have a slot around their lenses where something could easily be inserted." icon_state = "syndieglasses" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' prescription_upgradable = TRUE /obj/item/clothing/glasses/syndie_sun name = "suspicious shaded glasses" desc = "Suspicious-looking, dark red, stylish glasses. They appear to have an additional eye-shielding layer over the lenses." icon_state = "syndieglasses_sun" + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' inhand_icon_state = "sunglasses" see_in_dark = 1 flash_protect = FLASH_PROTECTION_FLASH @@ -272,6 +287,7 @@ tint = FLASH_PROTECTION_FLASH prescription_upgradable = TRUE dog_fashion = /datum/dog_fashion/head + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' hide_examine = TRUE /obj/item/clothing/glasses/sunglasses_fake @@ -280,6 +296,7 @@ icon_state = "sun" inhand_icon_state = "sunglasses" prescription_upgradable = TRUE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/sunglasses/noir name = "noir sunglasses" @@ -357,6 +374,7 @@ tint = FLASH_PROTECTION_WELDER can_toggle = TRUE visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/welding/attack_self__legacy__attackchain(mob/user) weldingvisortoggle(user) @@ -398,6 +416,7 @@ vision_flags = SEE_MOBS lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE flash_protect = FLASH_PROTECTION_SENSITIVE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/thermal/emp_act(severity) thermal_overload() diff --git a/code/modules/clothing/glasses/hudglasses.dm b/code/modules/clothing/glasses/hudglasses.dm index 1e04625007e..5745dffda16 100644 --- a/code/modules/clothing/glasses/hudglasses.dm +++ b/code/modules/clothing/glasses/hudglasses.dm @@ -50,6 +50,7 @@ origin_tech = "magnets=4;biotech=4;plasmatech=4;engineering=5" see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/health/sunglasses name = "medical HUDSunglasses" @@ -60,6 +61,7 @@ flash_protect = FLASH_PROTECTION_FLASH tint = FLASH_PROTECTION_FLASH hide_examine = TRUE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/diagnostic name = "diagnostic HUD" @@ -75,6 +77,7 @@ origin_tech = "magnets=4;powerstorage=4;plasmatech=4;engineering=5" see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/diagnostic/sunglasses name = "diagnostic sunglasses" @@ -83,6 +86,7 @@ inhand_icon_state = "sunglasses" flash_protect = FLASH_PROTECTION_FLASH tint = FLASH_PROTECTION_FLASH + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/security name = "security HUD" @@ -99,6 +103,7 @@ origin_tech = "magnets=4;combat=4;plasmatech=4;engineering=5" see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE //don't render darkness while wearing these + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/security/sunglasses name = "HUDSunglasses" @@ -109,6 +114,7 @@ see_in_dark = 1 flash_protect = FLASH_PROTECTION_FLASH tint = FLASH_PROTECTION_FLASH + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' hide_examine = TRUE /obj/item/clothing/glasses/hud/security/sunglasses/jensenshades @@ -133,6 +139,7 @@ icon_state = "hydroponichudnight" see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/skills name = "skills HUD" @@ -148,6 +155,7 @@ see_in_dark = 1 // None of these three can be converted to booleans. Do not try it. flash_protect = FLASH_PROTECTION_FLASH tint = FLASH_PROTECTION_FLASH + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/janitor name = "janitor HUD" @@ -164,6 +172,7 @@ flash_protect = FLASH_PROTECTION_FLASH tint = FLASH_PROTECTION_FLASH hide_examine = TRUE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/janitor/night name = "night vision janitor HUD" @@ -172,3 +181,4 @@ origin_tech = "magnets=4;biotech=4;plasmatech=4;engineering=5" see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' diff --git a/code/modules/clothing/glasses/hudgoggles.dm b/code/modules/clothing/glasses/hudgoggles.dm index b8d4d1224d9..11c361c1e84 100644 --- a/code/modules/clothing/glasses/hudgoggles.dm +++ b/code/modules/clothing/glasses/hudgoggles.dm @@ -3,27 +3,32 @@ desc = "Fashionable security goggles." icon_state = "sechudgoggles" flags_cover = GLASSESCOVERSEYES + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/health/goggles name = "health HUD goggles" desc = "Fashionable medical goggles." icon_state = "medhudgoggles" flags_cover = GLASSESCOVERSEYES + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/diagnostic/goggles name = "diagnostic HUD goggles" desc = "Fashionable diagnostic goggles." icon_state = "diaghudgoggles" flags_cover = GLASSESCOVERSEYES + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/hydroponic/goggles name = "hydroponic HUD goggles" desc = "Fashionable hydroponic goggles." icon_state = "hydrohudgoggles" flags_cover = GLASSESCOVERSEYES + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/hud/skills/goggles name = "skills HUD goggles" desc = "Fashionable skills goggles." icon_state = "skillhudgoggles" flags_cover = GLASSESCOVERSEYES + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' diff --git a/code/modules/clothing/glasses/tajblind.dm b/code/modules/clothing/glasses/tajblind.dm index 5507bf63295..ed9246f2daf 100644 --- a/code/modules/clothing/glasses/tajblind.dm +++ b/code/modules/clothing/glasses/tajblind.dm @@ -13,6 +13,7 @@ correct_wires = TRUE var/list/modes = list(MODE_OFF = MODE_NATURAL, MODE_NATURAL = MODE_CORRECTION, MODE_CORRECTION = MODE_OFF) var/selected_mode = MODE_CORRECTION + icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' sprite_sheets = list( "Vox" = 'icons/mob/clothing/species/vox/eyes.dmi', "Grey" = 'icons/mob/clothing/species/grey/eyes.dmi' diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 792bd3a0459..d4a1cc35e96 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -183,6 +183,7 @@ desc = "Wolf's non-functional thermal eyepatch." icon = 'icons/obj/custom_items.dmi' icon_state = "wolf_eyepatch" + icon_monitor = null /// Adrkiller59: Adam Cooper /obj/item/clothing/glasses/meson/fluff/book_berner_1 @@ -190,12 +191,14 @@ desc = "One of the older meson scanner models retrofitted to perform like its modern counterparts." icon = 'icons/obj/custom_items.dmi' icon_state = "book_berner_1" + icon_monitor = null /// Rapidvalj: Kakicharakiti /obj/item/clothing/glasses/sunglasses_fake/fluff/kaki name = "broken thermonocle" desc = "A weathered Vox thermonocle, doesn't seem to work anymore." icon_state = "thermonocle" + icon_monitor = null /// Rapidvalj: Hakikarahiti /obj/item/fluff/rapid_wheelchair_kit @@ -616,6 +619,7 @@ desc = "Tacticool ballistic glasses, for making all operators look badass." icon = 'icons/obj/custom_items.dmi' icon_state = "eyepro" + icon_monitor = null /// LP Spartan: Kaskreyarawkta /obj/item/clothing/glasses/hud/security/sunglasses/fluff/voxxyhud 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 a6aa0f12557..bbeb6eed860 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -691,9 +691,10 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) if(glasses) 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 update_hud_glasses(glasses) - var/worn_icon = glasses.worn_icon || listgetindex(glasses.sprite_sheets, head_organ.dna.species.sprite_sheet_name) || 'icons/mob/clothing/eyes.dmi' + var/worn_icon = glasses.worn_icon || (robohead && robohead.is_monitor ? glasses.icon_monitor : FALSE) || listgetindex(glasses.sprite_sheets, head_organ.dna.species.sprite_sheet_name) || 'icons/mob/clothing/eyes.dmi' var/worn_icon_state = glasses.worn_icon_state || glasses.icon_state var/obj/item/clothing/glasses/mob_glasses = glasses var/datum/sprite_accessory/hair/hair_style = GLOB.hair_styles_full_list[head_organ.h_style] diff --git a/icons/mob/clothing/species/machine/monitor/eyes.dmi b/icons/mob/clothing/species/machine/monitor/eyes.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8002879539c4eb80b7640ee6e8c06664b6c377f0 GIT binary patch literal 11490 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 literal 0 HcmV?d00001