diff --git a/code/game/gamemodes/technomancer/equipment.dm b/code/game/gamemodes/technomancer/equipment.dm
index dfe565c85e2..47d48a82891 100644
--- a/code/game/gamemodes/technomancer/equipment.dm
+++ b/code/game/gamemodes/technomancer/equipment.dm
@@ -164,7 +164,7 @@
origin_tech = list(TECH_MAGNET = 6, TECH_ENGINEERING = 6)
toggleable = 1
vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS
- prescription = 1 // So two versions of these aren't needed.
+ prescription = TRUE // So two versions of these aren't needed.
/datum/technomancer/equipment/med_hud
name = "Medical HUD"
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 4167a74cb49..cbcf40ef91e 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -584,7 +584,7 @@ var/global/datum/controller/occupations/job_master
var/equipped = H.equip_to_slot_or_del(new /obj/item/clothing/glasses/regular(H), slot_glasses)
if(equipped != 1)
var/obj/item/clothing/glasses/G = H.glasses
- G.prescription = 1
+ G.prescription = TRUE
BITSET(H.hud_updateflag, ID_HUD)
BITSET(H.hud_updateflag, IMPLOYAL_HUD)
diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes.dm b/code/modules/client/preference_setup/loadout/loadout_eyes.dm
index 1f4104c20ff..f53a39b7a8c 100644
--- a/code/modules/client/preference_setup/loadout/loadout_eyes.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_eyes.dm
@@ -106,12 +106,17 @@
/datum/gear/eyes/janitor
display_name = "Contaminant HUD"
+ description = "A heads-up display that scans the environment for contaminations. Can be taken with or without prescription lenses."
path = /obj/item/clothing/glasses/hud/janitor
allowed_roles = list(JOB_JANITOR)
-/datum/gear/eyes/janitor/prescriptionjan
- display_name = "Contaminant HUD, prescription"
- path = /obj/item/clothing/glasses/hud/janitor/prescription
+/datum/gear/eyes/janitor/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "standard Contaminant HUD"=/obj/item/clothing/glasses/hud/health,
+ "prescription Contaminant HUD"=/obj/item/clothing/glasses/hud/janitor/prescription
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
/datum/gear/eyes/meson
display_name = "Optical Meson Scanners selection"
@@ -183,6 +188,14 @@
display_name = "AR glasses"
path = /obj/item/clothing/glasses/omnihud
+/datum/gear/eyes/arglasses/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "standard AR glasses"=/obj/item/clothing/glasses/omnihud,
+ "prescription AR glasses"=/obj/item/clothing/glasses/omnihud/prescription,
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
/datum/gear/eyes/arglasses/visor
display_name = "AR visor"
path = /obj/item/clothing/glasses/omnihud/visor
@@ -190,36 +203,73 @@
/datum/gear/eyes/arglasses/visor/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)
-/datum/gear/eyes/arglassespres
- display_name = "AR glasses, prescription"
- path = /obj/item/clothing/glasses/omnihud/prescription
/datum/gear/eyes/arglasses/sec
display_name = "AR-Security glasses"
path = /obj/item/clothing/glasses/omnihud/sec
allowed_roles = list(JOB_SECURITY_OFFICER,JOB_HEAD_OF_SECURITY,JOB_WARDEN,JOB_DETECTIVE)
+/datum/gear/eyes/arglasses/sec/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "standard AR-Security glasses"=/obj/item/clothing/glasses/omnihud/sec,
+ "prescription AR-Security glasses"=/obj/item/clothing/glasses/omnihud/sec/prescription
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
/datum/gear/eyes/arglasses/sci
display_name = "AR-Research glasses"
path = /obj/item/clothing/glasses/omnihud/rnd
allowed_roles = list(JOB_RESEARCH_DIRECTOR,JOB_SCIENTIST,JOB_XENOBIOLOGIST,JOB_XENOBOTANIST,JOB_ROBOTICIST)
+/datum/gear/eyes/arglasses/sci/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "standard AR-Research glasses"=/obj/item/clothing/glasses/omnihud/rnd,
+ "prescription AR-Research glasses"=/obj/item/clothing/glasses/omnihud/rnd/prescription
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
/datum/gear/eyes/arglasses/eng
display_name = "AR-Engineering glasses"
path = /obj/item/clothing/glasses/omnihud/eng
allowed_roles = list(JOB_ENGINEER,JOB_CHIEF_ENGINEER,JOB_ATMOSPHERIC_TECHNICIAN)
+/datum/gear/eyes/arglasses/eng/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "standard AR-Engineering glasses"=/obj/item/clothing/glasses/omnihud/eng,
+ "prescription AR-Engineering glasses"=/obj/item/clothing/glasses/omnihud/eng/prescription
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
/datum/gear/eyes/arglasses/med
display_name = "AR-Medical glasses"
path = /obj/item/clothing/glasses/omnihud/med
allowed_roles = list(JOB_MEDICAL_DOCTOR,JOB_CHIEF_MEDICAL_OFFICER,JOB_CHEMIST,JOB_PARAMEDIC,JOB_GENETICIST, JOB_PSYCHIATRIST)
+/datum/gear/eyes/arglasses/med/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "standard AR-Medical glasses"=/obj/item/clothing/glasses/omnihud/med,
+ "prescription AR-Medical glasses"=/obj/item/clothing/glasses/omnihud/med/prescription
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
/datum/gear/eyes/arglasses/all
display_name = "AR-Command glasses"
path = /obj/item/clothing/glasses/omnihud/all
cost = 2
allowed_roles = list(JOB_SITE_MANAGER,JOB_HEAD_OF_PERSONNEL)
+/datum/gear/eyes/arglasses/all/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "standard AR-Command glasses"=/obj/item/clothing/glasses/omnihud/all,
+ "prescription AR-Command glasses"=/obj/item/clothing/glasses/omnihud/all/prescription
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
/datum/gear/eyes/spiffygogs
display_name = "slick orange goggles"
path = /obj/item/clothing/glasses/fluff/spiffygogs
diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm
index f9962dc2396..e4270a4fdfe 100644
--- a/code/modules/clothing/glasses/glasses.dm
+++ b/code/modules/clothing/glasses/glasses.dm
@@ -20,7 +20,7 @@ BLIND // can't see anything
var/vision_flags = 0
var/darkness_view = 0//Base human is 2
var/see_invisible = -1
- var/prescription = 0
+ var/prescription = FALSE
var/toggleable = 0
var/off_state = "degoggles"
var/active = 1
@@ -104,7 +104,7 @@ BLIND // can't see anything
/obj/item/clothing/glasses/meson/prescription
name = "prescription mesons"
desc = "Optical Meson Scanner with prescription lenses."
- prescription = 1
+ prescription = TRUE
/obj/item/clothing/glasses/meson/aviator
name = "engineering aviators"
@@ -117,7 +117,7 @@ BLIND // can't see anything
/obj/item/clothing/glasses/meson/aviator/prescription
name = "prescription engineering aviators"
desc = "Engineering Aviators with prescription lenses."
- prescription = 1
+ prescription = TRUE
/obj/item/clothing/glasses/hud/health/aviator
name = "medical HUD aviators"
@@ -131,7 +131,7 @@ BLIND // can't see anything
/obj/item/clothing/glasses/hud/health/aviator/prescription
name = "prescription medical HUD aviators"
desc = "Modified aviator glasses with a toggled health HUD. Comes with bonus prescription lenses."
- prescription = 6
+ prescription = TRUE
/obj/item/clothing/glasses/science
name = "Science Goggles"
@@ -248,7 +248,7 @@ BLIND // can't see anything
/obj/item/clothing/glasses/material/prescription
name = "prescription optical material scanner"
- prescription = 1
+ prescription = TRUE
/obj/item/clothing/glasses/graviton
name = "graviton goggles"
@@ -273,7 +273,7 @@ BLIND // can't see anything
desc = "Made by Nerd. Co."
icon_state = "glasses"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
- prescription = 1
+ prescription = TRUE
body_parts_covered = 0
/obj/item/clothing/glasses/regular/scanners
@@ -315,19 +315,17 @@ BLIND // can't see anything
name = "rimless glasses"
desc = "Sleek modern glasses with a single sculpted lens."
icon_state = "glasses_rimless"
- prescription = 0
/obj/item/clothing/glasses/regular/thin
name = "prescription thin-rimmed glasses"
desc = "Glasses with frames are so last century."
icon_state = "glasses_thin"
- prescription = 1
+ prescription = TRUE
/obj/item/clothing/glasses/thin
name = "thin-rimmed glasses"
desc = "Glasses with frames are so last century."
icon_state = "glasses_thin"
- prescription = 0
/obj/item/clothing/glasses/sunglasses
@@ -451,7 +449,7 @@ BLIND // can't see anything
/obj/item/clothing/glasses/sunglasses/prescription
name = "prescription sunglasses"
- prescription = 1
+ prescription = TRUE
/obj/item/clothing/glasses/sunglasses/big
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Larger than average enhanced shielding blocks many flashes."
@@ -517,7 +515,7 @@ BLIND // can't see anything
/obj/item/clothing/glasses/sunglasses/sechud/aviator/prescription
name = "prescription security HUD aviators"
desc = "Modified aviator glasses that can be switch between HUD and flash protection modes. Comes with bonus prescription lenses."
- prescription = 6
+ prescription = TRUE
/obj/item/clothing/glasses/sunglasses/medhud
name = "\improper HUD sunglasses"
diff --git a/code/modules/clothing/glasses/glasses_vr.dm b/code/modules/clothing/glasses/glasses_vr.dm
index 3769b1c8e5a..e8b05c183a6 100644
--- a/code/modules/clothing/glasses/glasses_vr.dm
+++ b/code/modules/clothing/glasses/glasses_vr.dm
@@ -119,7 +119,7 @@
icon_override = 'icons/inventory/eyes/mob_vr.dmi'
icon_state = "tajblind"
item_state = "tajblind"
- prescription = 1
+ prescription = TRUE
body_parts_covered = EYES
sprite_sheets = list(SPECIES_VOX = 'icons/inventory/eyes/mob_vox.dmi')
@@ -140,7 +140,7 @@
icon_override = 'icons/inventory/eyes/mob_vr.dmi'
icon_state = "tajblind_sec"
item_state = "tajblind_sec"
- prescription = 1
+ prescription = TRUE
body_parts_covered = EYES
sprite_sheets = list(SPECIES_VOX = 'icons/inventory/eyes/mob_vox.dmi')
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index 139df762ca6..884d6faae3e 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -13,9 +13,9 @@
enables_planes = list(VIS_CH_STATUS,VIS_CH_HEALTH)
/obj/item/clothing/glasses/hud/health/prescription
- name = "Prescription Health Scanner HUD"
- desc = "A medical HUD integrated with a set of prescription glasses"
- prescription = 1
+ desc = "A medical HUD integrated with a set of prescription glasses. \
+ These have been equipped with prescription lenses."
+ prescription = TRUE
icon_state = "healthhudpresc"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
@@ -28,9 +28,9 @@
enables_planes = list(VIS_CH_ID,VIS_CH_WANTED,VIS_CH_IMPTRACK,VIS_CH_IMPLOYAL,VIS_CH_IMPCHEM)
/obj/item/clothing/glasses/hud/security/prescription
- name = "Prescription Security HUD"
- desc = "A security HUD integrated with a set of prescription glasses"
- prescription = 1
+ desc = "A security HUD integrated with a set of prescription glasses. \
+ These have been equipped with prescription lenses."
+ prescription = TRUE
icon_state = "sechudpresc"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
@@ -51,8 +51,389 @@
enables_planes = list(VIS_JANHUD)
/obj/item/clothing/glasses/hud/janitor/prescription
- name = "Prescription Contaminant Detector HUD"
- desc = "A heads-up display that scans the environment for contaminations."
- prescription = 1
+ desc = "A heads-up display that scans the environment for contaminations. \
+ These have been equipped with prescription lenses."
+ prescription = TRUE
icon_state = "janhudpresc"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
+
+//Omnihuds
+/obj/item/clothing/glasses/omnihud
+ name = "\improper AR glasses"
+ desc = "The ARG-62 AR Glasses are capable of displaying information on individuals. \
+ Commonly used to allow non-augmented crew to interact with virtual interfaces. \
+
They are also fitted with toggleable cosmetic electrochromic lenses. \
+ The lenses will not protect against sudden bright flashes or welding."
+ origin_tech = list(TECH_MAGNET = 3, TECH_BIO = 3)
+ var/obj/item/clothing/glasses/hud/omni/hud = null
+ var/mode = "civ"
+ icon_state = "glasses"
+ var/datum/tgui_module/tgarscreen
+ var/tgarscreen_path
+ var/flash_prot = 0 //0 for none, 1 for flash weapon protection, 2 for welder protection
+ enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED)
+ plane_slots = list(slot_glasses)
+ var/ar_toggled = TRUE //Used for toggle_ar_planes() verb
+
+
+/obj/item/clothing/glasses/omnihud/Initialize(mapload)
+ . = ..()
+ if(tgarscreen_path)
+ tgarscreen = new tgarscreen_path(src)
+
+/obj/item/clothing/glasses/omnihud/Destroy()
+ QDEL_NULL(tgarscreen)
+ . = ..()
+
+/obj/item/clothing/glasses/omnihud/dropped(mob/user)
+ if(tgarscreen)
+ SStgui.close_uis(src)
+ ..()
+
+/obj/item/clothing/glasses/omnihud/examine()
+ . = ..()
+ if(ar_toggled)
+ . += "\n " + span_notice("The HUD indicator reads ON.")
+ else
+ . += "\n " + span_notice("The HUD indicator reads OFF.")
+
+
+/obj/item/clothing/glasses/omnihud/emp_act(var/severity)
+ if(tgarscreen)
+ SStgui.close_uis(src)
+ var/disconnect_tgar = tgarscreen
+ tgarscreen = null
+ spawn(20 SECONDS)
+ tgarscreen = disconnect_tgar
+
+ //extra fun for non-sci variants; a small chance flip the state to the dumb 3d glasses when EMP'd
+ if(icon_state == "glasses" || icon_state == "sun")
+ if(prob(10))
+ icon_state = "3d"
+ if(ishuman(loc))
+ to_chat(loc, span_warning("The lenses of your [src.name] malfunction!"))
+ ..()
+
+/obj/item/clothing/glasses/omnihud/proc/flashed()
+ if(flash_prot && ishuman(loc))
+ to_chat(loc, span_warning("Your [src.name] darken to try and protect your eyes!"))
+
+/obj/item/clothing/glasses/omnihud/prescribe(var/mob/user)
+ prescription = !prescription
+ playsound(src,'sound/items/screwdriver.ogg', 50, 1)
+ if(prescription)
+ user.visible_message("[user] uploads new prescription data to the [src.name] and resets the lenses.")
+ name = "[initial(name)] (pr)" //change the name *after* the text so the message above is accurate
+ icon_state = "[initial(icon_state)]" //reset the icon state just to be safe
+ else
+ user.visible_message("[user] deletes the prescription data on the [src.name] and resets the lenses.")
+ name = "[initial(name)]"
+ icon_state = "[initial(icon_state)]"
+
+/obj/item/clothing/glasses/omnihud/attack_self(mob/user)
+ if(!ishuman(user))
+ return
+
+ var/mob/living/carbon/human/H = user
+ if(!H.glasses || !(H.glasses == src))
+ to_chat(user, span_warning("You must be wearing the [src] to see the display."))
+ else
+ if(!ar_interact(H))
+ to_chat(user, span_warning("The [src] does not have any kind of special display."))
+
+//cosmetic shading, doesn't enhance eye protection
+/obj/item/clothing/glasses/omnihud/verb/chromatize()
+ set name = "Toggle AR Glasses Shading"
+ set desc = "Toggle the cosmetic electrochromatic shading of your AR glasses."
+ set category = "Object"
+ set src in usr
+ if(!usr.canmove || usr.stat || usr.restrained())
+ return
+ if(icon_state == "3d")
+ to_chat(usr, "You reset the electrochromic lenses of \the [src] back to normal.")
+ if(prescription)
+ name = "[initial(name)] (pr)"
+ else
+ name = "[initial(name)]"
+ icon_state = "[initial(icon_state)]"
+ else if(prescription)
+ if(icon_state == "glasses")
+ to_chat(usr, "You darken the electrochromic lenses of \the [src] to one-way transparency.")
+ name = "[initial(name)] (shaded, pr)"
+ flags_inv |= HIDEEYES
+ icon_state = "sun"
+ else if(icon_state == "sun")
+ to_chat(usr, "You restore the electrochromic lenses of \the [src] to standard two-way transparency.")
+ name = "[initial(name)] (pr)"
+ flags_inv &= ~HIDEEYES
+ icon_state = "glasses"
+ else
+ to_chat(usr, "The [src] don't seem to support this functionality.")
+ else if(!prescription)
+ if(icon_state == "glasses")
+ to_chat(usr, "You darken the electrochromic lenses of \the [src] to one-way transparency.")
+ name = "[initial(name)] (shaded)"
+ flags_inv |= HIDEEYES
+ icon_state = "sun"
+ else if(icon_state == "sun")
+ to_chat(usr, "You restore the electrochromic lenses of \the [src] to standard two-way transparency.")
+ name = "[initial(name)]"
+ flags_inv &= ~HIDEEYES
+ icon_state = "glasses"
+ else
+ to_chat(usr, "The [src] don't seem to support this functionality.")
+ update_clothing_icon()
+
+/obj/item/clothing/glasses/omnihud/verb/toggle_ar_planes()
+ set name = "Toggle AR Heads-Up Display"
+ set desc = "Toggles the job icon and other non-manually requested displays. Does not disable Crew monitor and similar."
+ set category = "Object"
+ set src in usr
+
+ //We do not check if user can move or not, since this system is inspired to help see chat bubbles during scenes primarily.
+ //Preventing turning off the HUD could get in the way of scene flow.
+ if(ar_toggled)
+ away_planes = enables_planes
+ enables_planes = null
+ to_chat(usr, span_notice("You disabled the Augmented Reality HUD of your [src.name]."))
+ else
+ enables_planes = away_planes
+ away_planes = null
+ to_chat(usr, span_notice("You enabled the Augmented Reality HUD of your [src.name]."))
+ ar_toggled = !ar_toggled
+ usr.update_mob_action_buttons()
+ usr.recalculate_vis()
+
+
+
+/obj/item/clothing/glasses/omnihud/proc/ar_interact(var/mob/living/carbon/human/user)
+ return 0 //The base models do nothing.
+
+/obj/item/clothing/glasses/omnihud/visor
+ name = "AR visor"
+ desc = "The VZR-AR are a product based upon the classic AR Glasses, just more fashionable."
+ icon_override = 'icons/inventory/eyes/mob_vr.dmi'
+ icon = 'icons/inventory/eyes/mob_vr.dmi'
+ icon_state = "visor_CIV"
+ item_state = "visor_CIV"
+
+/obj/item/clothing/glasses/omnihud/med
+ name = "\improper AR-M glasses"
+ desc = "The ARG-62-M AR Glasses are capable of displaying information on individuals. \
+ These have been upgraded with medical records access and virus database integration. \
+ They can also read data from active suit sensors using the crew monitoring system."
+ mode = "med"
+ actions_types = list(/datum/action/item_action/ar_console_crew)
+ tgarscreen_path = /datum/tgui_module/crew_monitor/glasses
+ enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_AUGMENTED)
+
+/obj/item/clothing/glasses/omnihud/med/ar_interact(var/mob/living/carbon/human/user)
+ if(tgarscreen)
+ tgarscreen.tgui_interact(user)
+ return 1
+
+/obj/item/clothing/glasses/omnihud/sec
+ name = "\improper AR-S glasses"
+ desc = "The ARG-62-S AR Glasses are capable of displaying information on individuals. \
+ These have been upgraded with security records integration and flash protection. \
+ They also have access to security alerts such as camera and motion sensor alarms."
+ mode = "sec"
+ flash_protection = FLASH_PROTECTION_MODERATE //weld protection is a little too widespread
+ actions_types = list(/datum/action/item_action/ar_console_security_alerts)
+ tgarscreen_path = /datum/tgui_module/alarm_monitor/security/glasses
+ enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_WANTED,VIS_AUGMENTED)
+
+/obj/item/clothing/glasses/omnihud/sec/ar_interact(var/mob/living/carbon/human/user)
+ if(tgarscreen)
+ tgarscreen.tgui_interact(user)
+ return 1
+
+/obj/item/clothing/glasses/omnihud/eng
+ name = "\improper AR-E glasses"
+ desc = "The ARG-62-E AR Glasses are capable of displaying information on individuals. \
+ These have been upgraded with advanced electrochromic lenses to protect your eyes during welding, \
+ and can also display a list of atmospheric, fire, and power alarms."
+ mode = "eng"
+ flash_protection = FLASH_PROTECTION_MAJOR
+ actions_types = list(/datum/action/item_action/ar_console_station_alerts)
+ tgarscreen_path = /datum/tgui_module/alarm_monitor/engineering/glasses
+
+/obj/item/clothing/glasses/omnihud/eng/ar_interact(var/mob/living/carbon/human/user)
+ if(tgarscreen)
+ tgarscreen.tgui_interact(user)
+ return 1
+
+/obj/item/clothing/glasses/omnihud/rnd
+ name = "\improper AR-R glasses"
+ desc = "The ARG-62-R AR Glasses are capable of displaying information on individuals. \
+ They... don't seem to do anything particularly interesting? But hey, at least they look kinda science-y."
+ mode = "sci"
+
+/obj/item/clothing/glasses/omnihud/eng/meson
+ name = "meson scanner HUD"
+ desc = "A headset equipped with a scanning lens and mounted retinal projector. It doesn't provide any eye protection, but it's less obtrusive than goggles."
+ icon = 'icons/vore/custom_items_vr.dmi'
+ icon_override = 'icons/vore/custom_clothes_vr.dmi'
+ icon_state = "projector"
+ off_state = "projector-off"
+ body_parts_covered = 0
+ toggleable = 1
+ vision_flags = SEE_TURFS //but they can spot breaches. Due to the way HUDs work, they don't provide darkvision up-close the way mesons do.
+ flash_protection = 0 //it's an open, single-eye retinal projector. there's no way it protects your eyes from flashes or welders.
+
+/obj/item/clothing/glasses/omnihud/eng/meson/attack_self(mob/user)
+ if(!active)
+ toggleprojector()
+ ..()
+
+/obj/item/clothing/glasses/omnihud/eng/meson/verb/toggleprojector()
+ set name = "Toggle projector"
+ set category = "Object"
+ set src in usr
+ if(!isliving(usr)) return
+ if(usr.stat) return
+ if(toggleable)
+ if(active)
+ active = 0
+ icon_state = off_state
+ item_state = "[initial(item_state)]-off"
+ usr.update_inv_glasses()
+ to_chat(usr, "You deactivate the retinal projector on the [src].")
+ else
+ active = 1
+ icon_state = initial(icon_state)
+ item_state = initial(item_state)
+ usr.update_inv_glasses()
+ to_chat(usr, "You activate the retinal projector on the [src].")
+ usr.update_mob_action_buttons()
+
+/obj/item/clothing/glasses/omnihud/all
+ name = "\improper AR-B glasses"
+ desc = "The ARG-62-B AR Glasses are capable of displaying information on individuals. \
+ These have been upgraded with (almost) every feature the lesser models have. Now we're talkin'. \
+
Offers full protection against bright flashes/welders and full access to system alarm monitoring."
+ mode = "best"
+ flash_protection = FLASH_PROTECTION_MAJOR
+ enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_CH_WANTED,VIS_AUGMENTED)
+ actions_types = list(/datum/action/item_action/ar_console_all_alerts)
+ tgarscreen_path = /datum/tgui_module/alarm_monitor/all/glasses
+
+/obj/item/clothing/glasses/omnihud/all/ar_interact(var/mob/living/carbon/human/user)
+ if(tgarscreen)
+ tgarscreen.tgui_interact(user)
+ return 1
+
+/obj/item/clothing/glasses/hud/security/eyepatch
+ name = "Security Hudpatch"
+ desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their ID status and security records."
+ icon_state = "eyepatch"
+ item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
+ body_parts_covered = 0
+ enables_planes = list(VIS_CH_ID,VIS_CH_WANTED,VIS_CH_IMPTRACK,VIS_CH_IMPLOYAL,VIS_CH_IMPCHEM)
+ var/eye = null
+
+/obj/item/clothing/glasses/hud/security/eyepatch/verb/switcheye()
+ set name = "Switch Eyepatch"
+ set category = "Object"
+ set src in usr
+ if(!isliving(usr)) return
+ if(usr.stat) return
+
+ eye = !eye
+ if(eye)
+ icon_state = "[icon_state]_1"
+ else
+ icon_state = initial(icon_state)
+ update_clothing_icon()
+
+/obj/item/clothing/glasses/hud/security/eyepatch2
+ name = "Security Hudpatch MKII"
+ desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their ID status and security records. This updated model offers better ergonomics and updated sensors."
+ icon = 'icons/inventory/eyes/item_vr.dmi'
+ icon_override = 'icons/inventory/eyes/mob_vr.dmi'
+ icon_state = "sec_eyepatch"
+ item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
+ body_parts_covered = 0
+ enables_planes = list(VIS_CH_ID,VIS_CH_WANTED,VIS_CH_IMPTRACK,VIS_CH_IMPLOYAL,VIS_CH_IMPCHEM)
+ var/eye = null
+
+/obj/item/clothing/glasses/hud/security/eyepatch2/verb/switcheye()
+ set name = "Switch Eyepatch"
+ set category = "Object"
+ set src in usr
+ if(!isliving(usr)) return
+ if(usr.stat) return
+
+ eye = !eye
+ if(eye)
+ icon_state = "[icon_state]_1"
+ else
+ icon_state = initial(icon_state)
+ update_clothing_icon()
+
+
+/obj/item/clothing/glasses/hud/health/eyepatch
+ name = "Medical Hudpatch"
+ desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their health status."
+ icon_state = "eyepatch"
+ item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
+ body_parts_covered = 0
+ enables_planes = list(VIS_CH_STATUS,VIS_CH_HEALTH)
+ var/eye = null
+
+/obj/item/clothing/glasses/hud/health/eyepatch/verb/switcheye()
+ set name = "Switch Eyepatch"
+ set category = "Object"
+ set src in usr
+ if(!isliving(usr)) return
+ if(usr.stat) return
+
+ eye = !eye
+ if(eye)
+ icon_state = "[icon_state]_1"
+ else
+ icon_state = initial(icon_state)
+ update_clothing_icon()
+
+//Rx Variants
+/obj/item/clothing/glasses/omnihud/med/prescription
+ desc = "The ARG-62-M AR Glasses are capable of displaying information on individuals. \
+ These have been upgraded with medical records access and virus database integration. \
+ They can also read data from active suit sensors using the crew monitoring system. \
+ These have been equipped with prescription lenses."
+ prescription = TRUE
+
+/obj/item/clothing/glasses/omnihud/sec/prescription
+ desc = "The ARG-62-S AR Glasses are capable of displaying information on individuals. \
+ These have been upgraded with security records integration and flash protection. \
+ They also have access to security alerts such as camera and motion sensor alarms. \
+ These have been equipped with prescription lenses."
+ prescription = TRUE
+
+/obj/item/clothing/glasses/omnihud/eng/prescription
+ desc = "The ARG-62-E AR Glasses are capable of displaying information on individuals. \
+ These have been upgraded with advanced electrochromic lenses to protect your eyes during welding, \
+ and can also display a list of atmospheric, fire, and power alarms. \
+ These have been equipped with prescription lenses."
+ prescription = TRUE
+
+/obj/item/clothing/glasses/omnihud/rnd/prescription
+ desc = "The ARG-62-R AR Glasses are capable of displaying information on individuals. \
+ They... don't seem to do anything particularly interesting? But hey, at least they look kinda science-y. \
+ These have been equipped with prescription lenses."
+ prescription = TRUE
+
+/obj/item/clothing/glasses/omnihud/all/prescription
+ desc = "The ARG-62-B AR Glasses are capable of displaying information on individuals. \
+ These have been upgraded with (almost) every feature the lesser models have. Now we're talkin'. \
+
Offers full protection against bright flashes/welders and full access to system alarm monitoring. \
+ These have been equipped with prescription lenses."
+ prescription = TRUE
+
+/obj/item/clothing/glasses/omnihud/prescription
+ desc = "The ARG-62 AR Glasses are capable of displaying information on individuals. \
+ Commonly used to allow non-augmented crew to interact with virtual interfaces. \
+
They are also fitted with toggleable cosmetic electrochromic lenses. \
+ The lenses will not protect against sudden bright flashes or welding. \
+ These have been equipped with prescription lenses."
+ prescription = TRUE
diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm
deleted file mode 100644
index 94e268bd892..00000000000
--- a/code/modules/clothing/glasses/hud_vr.dm
+++ /dev/null
@@ -1,340 +0,0 @@
-/obj/item/clothing/glasses/omnihud
- name = "\improper AR glasses"
- desc = "The ARG-62 AR Glasses are capable of displaying information on individuals. \
- Commonly used to allow non-augmented crew to interact with virtual interfaces. \
-
They are also fitted with toggleable cosmetic electrochromic lenses. \
- The lenses will not protect against sudden bright flashes or welding."
- origin_tech = list(TECH_MAGNET = 3, TECH_BIO = 3)
- var/obj/item/clothing/glasses/hud/omni/hud = null
- var/mode = "civ"
- icon_state = "glasses"
- var/datum/tgui_module/tgarscreen
- var/tgarscreen_path
- var/flash_prot = 0 //0 for none, 1 for flash weapon protection, 2 for welder protection
- enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED)
- plane_slots = list(slot_glasses)
- var/ar_toggled = TRUE //Used for toggle_ar_planes() verb
-
-
-/obj/item/clothing/glasses/omnihud/Initialize(mapload)
- . = ..()
- if(tgarscreen_path)
- tgarscreen = new tgarscreen_path(src)
-
-/obj/item/clothing/glasses/omnihud/Destroy()
- QDEL_NULL(tgarscreen)
- . = ..()
-
-/obj/item/clothing/glasses/omnihud/dropped(mob/user)
- if(tgarscreen)
- SStgui.close_uis(src)
- ..()
-
-/obj/item/clothing/glasses/omnihud/examine()
- . = ..()
- if(ar_toggled)
- . += "\n " + span_notice("The HUD indicator reads ON.")
- else
- . += "\n " + span_notice("The HUD indicator reads OFF.")
-
-
-/obj/item/clothing/glasses/omnihud/emp_act(var/severity)
- if(tgarscreen)
- SStgui.close_uis(src)
- var/disconnect_tgar = tgarscreen
- tgarscreen = null
- spawn(20 SECONDS)
- tgarscreen = disconnect_tgar
-
- //extra fun for non-sci variants; a small chance flip the state to the dumb 3d glasses when EMP'd
- if(icon_state == "glasses" || icon_state == "sun")
- if(prob(10))
- icon_state = "3d"
- if(ishuman(loc))
- to_chat(loc, span_warning("The lenses of your [src.name] malfunction!"))
- ..()
-
-/obj/item/clothing/glasses/omnihud/proc/flashed()
- if(flash_prot && ishuman(loc))
- to_chat(loc, span_warning("Your [src.name] darken to try and protect your eyes!"))
-
-/obj/item/clothing/glasses/omnihud/prescribe(var/mob/user)
- prescription = !prescription
- playsound(src,'sound/items/screwdriver.ogg', 50, 1)
- if(prescription)
- user.visible_message("[user] uploads new prescription data to the [src.name] and resets the lenses.")
- name = "[initial(name)] (pr)" //change the name *after* the text so the message above is accurate
- icon_state = "[initial(icon_state)]" //reset the icon state just to be safe
- else
- user.visible_message("[user] deletes the prescription data on the [src.name] and resets the lenses.")
- name = "[initial(name)]"
- icon_state = "[initial(icon_state)]"
-
-/obj/item/clothing/glasses/omnihud/attack_self(mob/user)
- if(!ishuman(user))
- return
-
- var/mob/living/carbon/human/H = user
- if(!H.glasses || !(H.glasses == src))
- to_chat(user, span_warning("You must be wearing the [src] to see the display."))
- else
- if(!ar_interact(H))
- to_chat(user, span_warning("The [src] does not have any kind of special display."))
-
-//cosmetic shading, doesn't enhance eye protection
-/obj/item/clothing/glasses/omnihud/verb/chromatize()
- set name = "Toggle AR Glasses Shading"
- set desc = "Toggle the cosmetic electrochromatic shading of your AR glasses."
- set category = "Object"
- set src in usr
- if(!usr.canmove || usr.stat || usr.restrained())
- return
- if(icon_state == "3d")
- to_chat(usr, "You reset the electrochromic lenses of \the [src] back to normal.")
- if(prescription)
- name = "[initial(name)] (pr)"
- else
- name = "[initial(name)]"
- icon_state = "[initial(icon_state)]"
- else if(prescription)
- if(icon_state == "glasses")
- to_chat(usr, "You darken the electrochromic lenses of \the [src] to one-way transparency.")
- name = "[initial(name)] (shaded, pr)"
- flags_inv |= HIDEEYES
- icon_state = "sun"
- else if(icon_state == "sun")
- to_chat(usr, "You restore the electrochromic lenses of \the [src] to standard two-way transparency.")
- name = "[initial(name)] (pr)"
- flags_inv &= ~HIDEEYES
- icon_state = "glasses"
- else
- to_chat(usr, "The [src] don't seem to support this functionality.")
- else if(!prescription)
- if(icon_state == "glasses")
- to_chat(usr, "You darken the electrochromic lenses of \the [src] to one-way transparency.")
- name = "[initial(name)] (shaded)"
- flags_inv |= HIDEEYES
- icon_state = "sun"
- else if(icon_state == "sun")
- to_chat(usr, "You restore the electrochromic lenses of \the [src] to standard two-way transparency.")
- name = "[initial(name)]"
- flags_inv &= ~HIDEEYES
- icon_state = "glasses"
- else
- to_chat(usr, "The [src] don't seem to support this functionality.")
- update_clothing_icon()
-
-/obj/item/clothing/glasses/omnihud/verb/toggle_ar_planes()
- set name = "Toggle AR Heads-Up Display"
- set desc = "Toggles the job icon and other non-manually requested displays. Does not disable Crew monitor and similar."
- set category = "Object"
- set src in usr
-
- //We do not check if user can move or not, since this system is inspired to help see chat bubbles during scenes primarily.
- //Preventing turning off the HUD could get in the way of scene flow.
- if(ar_toggled)
- away_planes = enables_planes
- enables_planes = null
- to_chat(usr, span_notice("You disabled the Augmented Reality HUD of your [src.name]."))
- else
- enables_planes = away_planes
- away_planes = null
- to_chat(usr, span_notice("You enabled the Augmented Reality HUD of your [src.name]."))
- ar_toggled = !ar_toggled
- usr.update_mob_action_buttons()
- usr.recalculate_vis()
-
-
-
-/obj/item/clothing/glasses/omnihud/proc/ar_interact(var/mob/living/carbon/human/user)
- return 0 //The base models do nothing.
-
-/obj/item/clothing/glasses/omnihud/visor
- name = "AR visor"
- desc = "The VZR-AR are a product based upon the classic AR Glasses, just more fashionable."
- icon_override = 'icons/inventory/eyes/mob_vr.dmi'
- icon = 'icons/inventory/eyes/mob_vr.dmi'
- icon_state = "visor_CIV"
- item_state = "visor_CIV"
-
-/obj/item/clothing/glasses/omnihud/prescription
- name = "AR glasses (pr)"
- prescription = 1
-
-/obj/item/clothing/glasses/omnihud/med
- name = "\improper AR-M glasses"
- desc = "The ARG-62-M AR Glasses are capable of displaying information on individuals. \
- These have been upgraded with medical records access and virus database integration. \
- They can also read data from active suit sensors using the crew monitoring system."
- mode = "med"
- actions_types = list(/datum/action/item_action/ar_console_crew)
- tgarscreen_path = /datum/tgui_module/crew_monitor/glasses
- enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_AUGMENTED)
-
-/obj/item/clothing/glasses/omnihud/med/ar_interact(var/mob/living/carbon/human/user)
- if(tgarscreen)
- tgarscreen.tgui_interact(user)
- return 1
-
-/obj/item/clothing/glasses/omnihud/sec
- name = "\improper AR-S glasses"
- desc = "The ARG-62-S AR Glasses are capable of displaying information on individuals. \
- These have been upgraded with security records integration and flash protection. \
- They also have access to security alerts such as camera and motion sensor alarms."
- mode = "sec"
- flash_protection = FLASH_PROTECTION_MODERATE //weld protection is a little too widespread
- actions_types = list(/datum/action/item_action/ar_console_security_alerts)
- tgarscreen_path = /datum/tgui_module/alarm_monitor/security/glasses
- enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_WANTED,VIS_AUGMENTED)
-
-/obj/item/clothing/glasses/omnihud/sec/ar_interact(var/mob/living/carbon/human/user)
- if(tgarscreen)
- tgarscreen.tgui_interact(user)
- return 1
-
-/obj/item/clothing/glasses/omnihud/eng
- name = "\improper AR-E glasses"
- desc = "The ARG-62-E AR Glasses are capable of displaying information on individuals. \
- These have been upgraded with advanced electrochromic lenses to protect your eyes during welding, \
- and can also display a list of atmospheric, fire, and power alarms."
- mode = "eng"
- flash_protection = FLASH_PROTECTION_MAJOR
- actions_types = list(/datum/action/item_action/ar_console_station_alerts)
- tgarscreen_path = /datum/tgui_module/alarm_monitor/engineering/glasses
-
-/obj/item/clothing/glasses/omnihud/eng/ar_interact(var/mob/living/carbon/human/user)
- if(tgarscreen)
- tgarscreen.tgui_interact(user)
- return 1
-
-/obj/item/clothing/glasses/omnihud/rnd
- name = "\improper AR-R glasses"
- desc = "The ARG-62-R AR Glasses are capable of displaying information on individuals. \
- They... don't seem to do anything particularly interesting? But hey, at least they look kinda science-y."
- mode = "sci"
-
-/obj/item/clothing/glasses/omnihud/eng/meson
- name = "meson scanner HUD"
- desc = "A headset equipped with a scanning lens and mounted retinal projector. It doesn't provide any eye protection, but it's less obtrusive than goggles."
- icon = 'icons/vore/custom_items_vr.dmi'
- icon_override = 'icons/vore/custom_clothes_vr.dmi'
- icon_state = "projector"
- off_state = "projector-off"
- body_parts_covered = 0
- toggleable = 1
- vision_flags = SEE_TURFS //but they can spot breaches. Due to the way HUDs work, they don't provide darkvision up-close the way mesons do.
- flash_protection = 0 //it's an open, single-eye retinal projector. there's no way it protects your eyes from flashes or welders.
-
-/obj/item/clothing/glasses/omnihud/eng/meson/attack_self(mob/user)
- if(!active)
- toggleprojector()
- ..()
-
-/obj/item/clothing/glasses/omnihud/eng/meson/verb/toggleprojector()
- set name = "Toggle projector"
- set category = "Object"
- set src in usr
- if(!isliving(usr)) return
- if(usr.stat) return
- if(toggleable)
- if(active)
- active = 0
- icon_state = off_state
- item_state = "[initial(item_state)]-off"
- usr.update_inv_glasses()
- to_chat(usr, "You deactivate the retinal projector on the [src].")
- else
- active = 1
- icon_state = initial(icon_state)
- item_state = initial(item_state)
- usr.update_inv_glasses()
- to_chat(usr, "You activate the retinal projector on the [src].")
- usr.update_mob_action_buttons()
-
-/obj/item/clothing/glasses/omnihud/all
- name = "\improper AR-B glasses"
- desc = "The ARG-62-B AR Glasses are capable of displaying information on individuals. \
- These have been upgraded with (almost) every feature the lesser models have. Now we're talkin'. \
-
Offers full protection against bright flashes/welders and full access to system alarm monitoring."
- mode = "best"
- flash_protection = FLASH_PROTECTION_MAJOR
- enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_CH_WANTED,VIS_AUGMENTED)
- actions_types = list(/datum/action/item_action/ar_console_all_alerts)
- tgarscreen_path = /datum/tgui_module/alarm_monitor/all/glasses
-
-/obj/item/clothing/glasses/omnihud/all/ar_interact(var/mob/living/carbon/human/user)
- if(tgarscreen)
- tgarscreen.tgui_interact(user)
- return 1
-
-/obj/item/clothing/glasses/hud/security/eyepatch
- name = "Security Hudpatch"
- desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their ID status and security records."
- icon_state = "eyepatch"
- item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
- body_parts_covered = 0
- enables_planes = list(VIS_CH_ID,VIS_CH_WANTED,VIS_CH_IMPTRACK,VIS_CH_IMPLOYAL,VIS_CH_IMPCHEM)
- var/eye = null
-
-/obj/item/clothing/glasses/hud/security/eyepatch/verb/switcheye()
- set name = "Switch Eyepatch"
- set category = "Object"
- set src in usr
- if(!isliving(usr)) return
- if(usr.stat) return
-
- eye = !eye
- if(eye)
- icon_state = "[icon_state]_1"
- else
- icon_state = initial(icon_state)
- update_clothing_icon()
-
-/obj/item/clothing/glasses/hud/security/eyepatch2
- name = "Security Hudpatch MKII"
- desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their ID status and security records. This updated model offers better ergonomics and updated sensors."
- icon = 'icons/inventory/eyes/item_vr.dmi'
- icon_override = 'icons/inventory/eyes/mob_vr.dmi'
- icon_state = "sec_eyepatch"
- item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
- body_parts_covered = 0
- enables_planes = list(VIS_CH_ID,VIS_CH_WANTED,VIS_CH_IMPTRACK,VIS_CH_IMPLOYAL,VIS_CH_IMPCHEM)
- var/eye = null
-
-/obj/item/clothing/glasses/hud/security/eyepatch2/verb/switcheye()
- set name = "Switch Eyepatch"
- set category = "Object"
- set src in usr
- if(!isliving(usr)) return
- if(usr.stat) return
-
- eye = !eye
- if(eye)
- icon_state = "[icon_state]_1"
- else
- icon_state = initial(icon_state)
- update_clothing_icon()
-
-
-/obj/item/clothing/glasses/hud/health/eyepatch
- name = "Medical Hudpatch"
- desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their health status."
- icon_state = "eyepatch"
- item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
- body_parts_covered = 0
- enables_planes = list(VIS_CH_STATUS,VIS_CH_HEALTH)
- var/eye = null
-
-/obj/item/clothing/glasses/hud/health/eyepatch/verb/switcheye()
- set name = "Switch Eyepatch"
- set category = "Object"
- set src in usr
- if(!isliving(usr)) return
- if(usr.stat) return
-
- eye = !eye
- if(eye)
- icon_state = "[icon_state]_1"
- else
- icon_state = initial(icon_state)
- update_clothing_icon()
diff --git a/vorestation.dme b/vorestation.dme
index da5a08e5f06..b903821b186 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -2247,7 +2247,6 @@
#include "code\modules\clothing\glasses\glasses.dm"
#include "code\modules\clothing\glasses\glasses_vr.dm"
#include "code\modules\clothing\glasses\hud.dm"
-#include "code\modules\clothing\glasses\hud_vr.dm"
#include "code\modules\clothing\gloves\antagonist.dm"
#include "code\modules\clothing\gloves\arm_guards.dm"
#include "code\modules\clothing\gloves\arm_guards_vr.dm"