From ee9048baee457dbd4ae5e4a35965e517ae031647 Mon Sep 17 00:00:00 2001 From: Roxy <94389951+SapphoQueer@users.noreply.github.com> Date: Tue, 15 Jul 2025 20:17:19 +0200 Subject: [PATCH] Civilian HUDs + Implant (#4219) ## About The Pull Request Adds civilian HUDs and HUDsunglasses to the game. They can see the job icon, but not mindshield/wanted/permit status. Juuuust the job icon. Regular variant available in loadout and autodrobe, as well as sci and service lathes after being researched with the rest of the huds. Sunglasses available through crafting the same way you craft the others. Also adds it as a researchable implant. Available in augments+ for 4 quirk points. Also Alexios did the really pretty grey version of the sprite so they get to be in the changelog :) ## Why It's Good For The Game Bubberstation has a LOT of people running around with outfits not correlating to their job. This makes it hard to find out what job people are at a quick glance at times. This adds a HUD that lets you see the job icon and nothing else. I ran an adminbussed version of these and players pretty much unanimously agreed that they were nice to have, and agreeing with my above point of "it is hard to see what job people are at times" Also they just look cool. ## Proof Of Testing image image image image image ## Changelog :cl:Sapphoqueer, Alexios add: Civilian HUDs and Civilian HUDSunglasses. Available in loadout, clothesmate, and sci/servicelathes after the HUD research. These show job icons and nothing else. add: Civilian HUD implants. Printable by sci through the cybernetics implants node, as well as being in augments+ for 4 quirk points. /:cl: --------- Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> --- .../middleware/limbs_and_markings.dm | 1 + .../modules/loadout/categories/glasses.dm | 2 +- .../modules/research/techweb/all_nodes.dm | 1 + .../modules/client/augment/implants.dm | 5 +++ .../modules/implants/code/medical_nodes.dm | 1 + .../modular_vending/code/clothesmate.dm | 1 + .../datums/components/crafting/tailoring.dm | 18 +++++++++ .../code/modules/clothing/glasses/hud.dm | 18 +++++++++ .../modules/implants/code/augments_eyes.dm | 7 ++++ .../modules/loadout/categories/glasses.dm | 4 ++ .../modules/research/designs/misc_designs.dm | 35 +++++++++++++++++- modular_zubbers/icons/mob/clothing/eyes.dmi | Bin 0 -> 765 bytes .../icons/obj/clothing/head/glasses.dmi | Bin 0 -> 645 bytes .../icons/obj/medical/organs/organs.dmi | Bin 0 -> 656 bytes tgstation.dme | 2 + 15 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 modular_zubbers/code/modules/clothing/glasses/hud.dm create mode 100644 modular_zubbers/code/modules/implants/code/augments_eyes.dm create mode 100644 modular_zubbers/icons/mob/clothing/eyes.dmi create mode 100644 modular_zubbers/icons/obj/clothing/head/glasses.dmi create mode 100644 modular_zubbers/icons/obj/medical/organs/organs.dmi diff --git a/modular_skyrat/master_files/code/modules/client/preferences/middleware/limbs_and_markings.dm b/modular_skyrat/master_files/code/modules/client/preferences/middleware/limbs_and_markings.dm index 0bd3b3cfdf9..b06afc7e231 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/middleware/limbs_and_markings.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/middleware/limbs_and_markings.dm @@ -34,6 +34,7 @@ "tongue" = "Tongue", "ears" = "Ears", "Brain implant" = "Brain implant", //BUBBER EDIT + "Eyes Implant" = "Eyes implant", "Mouth implant" = "Mouth implant", "Left Arm implant" = "Left Arm implant", "Right Arm implant" = "Right Arm implant", diff --git a/modular_skyrat/master_files/code/modules/loadout/categories/glasses.dm b/modular_skyrat/master_files/code/modules/loadout/categories/glasses.dm index 8eb98650228..4f02e539058 100644 --- a/modular_skyrat/master_files/code/modules/loadout/categories/glasses.dm +++ b/modular_skyrat/master_files/code/modules/loadout/categories/glasses.dm @@ -75,7 +75,7 @@ item_path = /obj/item/clothing/glasses/fake_sunglasses/aviator /datum/loadout_item/glasses/retinal_projector - name = "Civilian Retinal Projector" + name = "Retinal Projector" item_path = /obj/item/clothing/glasses/hud/ar/projector /* diff --git a/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm b/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm index bc9e990a42e..9dfd88fdcdb 100644 --- a/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm +++ b/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm @@ -153,6 +153,7 @@ "meson_hud_projector", "science_hud_projector", "permit_glasses", + "civ_hud", "nifsoft_money_sense", "nifsoft_hud_kit", "nifsoft_hud_science", diff --git a/modular_skyrat/modules/customization/modules/client/augment/implants.dm b/modular_skyrat/modules/customization/modules/client/augment/implants.dm index 1b4a4a34483..67af8a0ad06 100644 --- a/modular_skyrat/modules/customization/modules/client/augment/implants.dm +++ b/modular_skyrat/modules/customization/modules/client/augment/implants.dm @@ -47,6 +47,11 @@ /datum/augment_item/implant/eyes slot = AUGMENT_SLOT_EYES_IMPLANT +/datum/augment_item/implant/eyes/civhud + name = "Civilian HUD Implant" + cost = 4 + path = /obj/item/organ/cyberimp/eyes/hud/civilian + //MOUTH IMPLANTS /datum/augment_item/implant/mouth slot = AUGMENT_SLOT_MOUTH_IMPLANT diff --git a/modular_skyrat/modules/implants/code/medical_nodes.dm b/modular_skyrat/modules/implants/code/medical_nodes.dm index a51826d1407..d5fe796cbe4 100644 --- a/modular_skyrat/modules/implants/code/medical_nodes.dm +++ b/modular_skyrat/modules/implants/code/medical_nodes.dm @@ -6,6 +6,7 @@ "ci-medhud", "ci-sechud", "ci-diaghud", + "ci-civhud", "ci-botany", "ci-janitor", "ci-lighter", diff --git a/modular_skyrat/modules/modular_vending/code/clothesmate.dm b/modular_skyrat/modules/modular_vending/code/clothesmate.dm index d4b1905e479..1442582b825 100644 --- a/modular_skyrat/modules/modular_vending/code/clothesmate.dm +++ b/modular_skyrat/modules/modular_vending/code/clothesmate.dm @@ -44,6 +44,7 @@ /obj/item/clothing/glasses/regular/betterunshit = 5, /obj/item/clothing/glasses/thin = 5, /obj/item/clothing/glasses/hud/ar/projector = 5, + /obj/item/clothing/glasses/hud/civilian = 5, /obj/item/clothing/neck/face_scarf = 5, /obj/item/clothing/neck/scarf/pride = 5, //BUBBER EDIT: ADDS PRIDE SCARVES /obj/item/clothing/gloves/bracer/wraps, diff --git a/modular_zubbers/code/datums/components/crafting/tailoring.dm b/modular_zubbers/code/datums/components/crafting/tailoring.dm index 0c6b966acd0..ca9ea7aad01 100644 --- a/modular_zubbers/code/datums/components/crafting/tailoring.dm +++ b/modular_zubbers/code/datums/components/crafting/tailoring.dm @@ -68,3 +68,21 @@ /obj/item/stack/ore/titanium =5) time = 5 SECONDS category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunciv + name = "Civilian HUDsunglasses" + result = /obj/item/clothing/glasses/hud/civilian/sunglasses + time = 2 SECONDS + tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/civilian = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_EQUIPMENT + +/datum/crafting_recipe/hudsuncivremoval + name = "Civilian HUD removal" + result = /obj/item/clothing/glasses/sunglasses + time = 2 SECONDS + tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/civilian/sunglasses = 1) + category = CAT_EQUIPMENT diff --git a/modular_zubbers/code/modules/clothing/glasses/hud.dm b/modular_zubbers/code/modules/clothing/glasses/hud.dm new file mode 100644 index 00000000000..f543072a7bd --- /dev/null +++ b/modular_zubbers/code/modules/clothing/glasses/hud.dm @@ -0,0 +1,18 @@ +/obj/item/clothing/glasses/hud/civilian + name = "Civilian HUD Glasses" + desc = "A heads-up display that scans the humanoids around you and displays their ID status. Experts say this has well over 9000 uses." + icon = 'modular_zubbers/icons/obj/clothing/head/glasses.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/eyes.dmi' + icon_state = "civhud" + clothing_traits = list(TRAIT_BASIC_SECURITY_HUD) //thanks honkbots for having that + + +/obj/item/clothing/glasses/hud/civilian/sunglasses + name = "Civilian HUDSunglasses" + desc = "Sunglasses with a civilian HUD." + icon = 'modular_zubbers/icons/obj/clothing/head/glasses.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/eyes.dmi' + icon_state = "sunhudciv" + flash_protect = FLASH_PROTECTION_FLASH + flags_cover = GLASSESCOVERSEYES + tint = 1 diff --git a/modular_zubbers/code/modules/implants/code/augments_eyes.dm b/modular_zubbers/code/modules/implants/code/augments_eyes.dm new file mode 100644 index 00000000000..fdaee68179b --- /dev/null +++ b/modular_zubbers/code/modules/implants/code/augments_eyes.dm @@ -0,0 +1,7 @@ +/obj/item/organ/cyberimp/eyes/hud/civilian + name = "Civilian HUD implant" + desc = "These cybernetic eye implants will display a Civilian HUD over everything you see." + icon = 'modular_zubbers/icons/obj/medical/organs/organs.dmi' + icon_state = "eye_implant_civilian" + HUD_traits = list(TRAIT_BASIC_SECURITY_HUD) + hud_color = "#30e04d" diff --git a/modular_zubbers/code/modules/loadout/categories/glasses.dm b/modular_zubbers/code/modules/loadout/categories/glasses.dm index cfe7b0df377..49feae8db8e 100644 --- a/modular_zubbers/code/modules/loadout/categories/glasses.dm +++ b/modular_zubbers/code/modules/loadout/categories/glasses.dm @@ -10,3 +10,7 @@ /datum/loadout_item/glasses/salesman name = "Colored Glasses" item_path = /obj/item/clothing/glasses/salesman + +/datum/loadout_item/glasses/civhud + name = "Civilian HUD" + item_path = /obj/item/clothing/glasses/hud/civilian diff --git a/modular_zubbers/code/modules/research/designs/misc_designs.dm b/modular_zubbers/code/modules/research/designs/misc_designs.dm index 93c2c4eeb58..41b691285e3 100644 --- a/modular_zubbers/code/modules/research/designs/misc_designs.dm +++ b/modular_zubbers/code/modules/research/designs/misc_designs.dm @@ -19,7 +19,7 @@ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS, ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO - + /* Uncomment in case nitrogen internal tanks get refactored to no longer be 25L * /datum/design/nitrogen_tank_belt * name = "Nitrogen Internals Tank" @@ -45,3 +45,36 @@ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS, ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL + +/datum/design/civilian_hud + name = "Civilian HUD" + desc = "A heads-up display that scans the humanoids around you and displays their ID status. Experts say this has well over 9000 uses." + id = "civ_hud" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/clothing/glasses/hud/civilian + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design/cyberimp_civ_hud + name = "Civilian HUD Implant" + desc = "These cybernetic eyes will display a civilian HUD over everything you see. Wiggle eyes to control." + id = "ci-civhud" + build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + construction_time = 5 SECONDS + //just about half the materials of a sechudimplant but no silver + materials = list( + /datum/material/iron = SMALL_MATERIAL_AMOUNT*3, + /datum/material/glass = SMALL_MATERIAL_AMOUNT*3, + /datum/material/gold = SMALL_MATERIAL_AMOUNT*4, + ) + build_path = /obj/item/organ/cyberimp/eyes/hud/civilian + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL diff --git a/modular_zubbers/icons/mob/clothing/eyes.dmi b/modular_zubbers/icons/mob/clothing/eyes.dmi new file mode 100644 index 0000000000000000000000000000000000000000..386cd20767bebe6404c93669c67601cc661a8d77 GIT binary patch literal 765 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGo6;&Y-B`&GO$wiq3C7JnoK#@7Y zVFg8{-@gPGeEj-E%Uf6L+?n&i8$t~(8b5fXbKXbuWB`z3_UO?WkF!4KH5v=LyoJ1j zL~}%^Ofo)gx=#TzQ9nv)nNuG+|k*`Id~^W=D29 z`aifJ$#5;R;bqCJ-7@*%$@z<3S5~m*tXQ>b(dmy?ydSAc+y7&baRMt-rNTL>Y`3 zauzeJKF@TewD#+(?4tTfLBA#hodUY@>swjb|232U)^EP}>cvlmPj4S5?y3E1rKBf! zy>eoZom78yy;(wNhP680Uw*_f8ZaN=0lM%E!-lo{Sl6ySx&Qy4Eu9yQs$x}bV=-0C)j)jyno~Fc1an>?s!Q#b0Y9idg6!#6+`&3i)|`7Xx;7Gmj}=ifuoP zGj`JmK^aTei4E3S4&o;1G)q;2(292LqFA>$#h9!Vw3i78NyhR}fY{7(sK{St{mB`} ze`SjO+`SJT{BI`(mZJnp0005VNkl7`X%jAOHd&00JNY0w924mubo-b{Z|gumI6mLQEy&1Yk%24FAz; zK{lH<9zZ0rDtdiBa5(Hxx+{U6QxFb^Mfr0+pBH-dl>Lzc%r7mny&eDzI2&9ByL$$_ z9w%fr<4~zoSV(2Bc$|jT_le{Ekpb|dj{vUV92`Xxx&Rh7_N4Ibb{iUvhScXh9v%w; z)aox3O#rF0f_RzPVf$+Hovqtjr`^yiA%TZ?IGs?h)c{wk+Xpv?y93Vw1UR_P!~WVj zd!BR!;NkXMIsx*YvY$*Q#aJx%<9F$W&=&v?|Jv+|U!4@d1fMLlKj4RY{Y?VsfEixy zi@F9Oez?VAfoV@j3a9L0sr9uYXadMR)!4wnBPTBe!2j?uckv4V*J0cQeAuadynGN2 zG5|FL$Pv^E0qWIfwl|rrFk!Q?{eQR$`yPTg<#CmV#Nt7DU;b{a0LHBdfB*=900@8p f2!H?xz^L^FI_EzyKMy=200000NkvXXu0mjfeaRF9 literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/obj/medical/organs/organs.dmi b/modular_zubbers/icons/obj/medical/organs/organs.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c98377aae2e19f62aee801a42b6a3634c7ca9fb9 GIT binary patch literal 656 zcmV;B0&o3^P)V=-0C)i?s!QAJ0!~BZ^q)6(s0t7Bot-DBj+n-3(JqjAh-l zJyu-{Cppi%#RBu+AJoN@m>^jS$`CI`KJlW30!DPxz}vBEE5pbqudHnZYGUU@PC(60 zZ}f4Dbzi-g2TU0tP;bPvYXATN(n&-?RCwC$)lVpcaTo{i=f}mLGoeKs#KB34D4B5c z=fnjEVn`|b(+q1X*0zL}zbQotCw8N-gVm^&IFPicH3vCvq_!W=yMAlb=6z@HmfCaK z-uJEd`{{k2=Y5IIW`krFNdZ!T6yV!MC30(0RwDivt8+Uj)yD;59U_ zAJU@A3NQ|L!kx#>K@tXF!)RRF1w>#gSh#Ai3&y9cVAeN@1K4-E=taE)=DmGE%olD$e>WpauLtZ<0WejK$eg4Pg!aSICl5b=gTArBpMQ4ykk4aty} zGDM_yhz^kF)N!pyD1fzrg(s{9;r(YT8Mh(i`^f2vj%bev{ViA&fOTe=wrZ9+0N