diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm b/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm
index 276554554f9..e32c42f702a 100644
--- a/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm
@@ -17,6 +17,11 @@
display_name = "AR-S glasses (Sec)"
path = /obj/item/clothing/glasses/omnihud/sec
allowed_roles = list("Security Officer","Head of Security","Warden","Detective")
+
+/datum/gear/eyes/arglasses/sci
+ display_name = "AR-R glasses (Sci)"
+ path = /obj/item/clothing/glasses/omnihud/rnd
+ allowed_roles = list("Research Director","Scientist","Xenobiologist","Roboticist")
/datum/gear/eyes/arglasses/eng
display_name = "AR-E glasses (Eng)"
diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm
index db22d70e97a..c45471ae732 100644
--- a/code/modules/clothing/glasses/hud_vr.dm
+++ b/code/modules/clothing/glasses/hud_vr.dm
@@ -1,7 +1,8 @@
/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."
+ Commonly used to allow non-augmented crew to interact with virtual interfaces. \
+
They are also fitted with toggleable electrochromic lenses."
origin_tech = list(TECH_MAGNET = 3, TECH_BIO = 3)
var/obj/item/clothing/glasses/hud/omni/hud = null
var/mode = "civ"
@@ -31,6 +32,13 @@
arscreen = null
spawn(20 SECONDS)
arscreen = disconnect_ar
+
+ //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, "The lenses of your [src.name] malfunction!")
..()
/obj/item/clothing/glasses/omnihud/proc/flashed()
@@ -40,12 +48,18 @@
/obj/item/clothing/glasses/omnihud/prescribe(var/mob/user)
prescription = !prescription
playsound(src,'sound/items/screwdriver.ogg', 50, 1)
- if(prescription)
+ if(prescription && icon_state == "glasses")
name = "[initial(name)] (pr)"
user.visible_message("[user] uploads new prescription data to the [src.name].")
+ icon_state = "glasses"
+ else if(prescription && icon_state == "sun")
+ name = "[initial(name)] (shaded, pr)"
+ user.visible_message("[user] uploads new prescription data to the [src.name].")
+ icon_state = "sun"
else
name = "[initial(name)]"
- user.visible_message("[user] deletes the prescription data on the [src.name].")
+ user.visible_message("[user] deletes the prescription data on the [src.name] and resets the lenses.")
+ icon_state = "glasses"
/obj/item/clothing/glasses/omnihud/attack_self(mob/user)
if(!ishuman(user))
@@ -58,6 +72,41 @@
if(!ar_interact(H))
to_chat(user, "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 = "glasses"
+ 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)"
+ 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)"
+ icon_state = "glasses"
+ 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)"
+ 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)]"
+ icon_state = "glasses"
+ update_clothing_icon()
+
/obj/item/clothing/glasses/omnihud/proc/ar_interact(var/mob/living/carbon/human/user)
return 0 //The base models do nothing.
@@ -68,7 +117,8 @@
/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."
+ 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"
action_button_name = "AR Console (Crew Monitor)"
arscreen_path = /datum/nano_module/program/crew_monitor
@@ -82,7 +132,8 @@
/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."
+ 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_MAJOR
action_button_name = "AR Console (Security Alerts)"
@@ -97,7 +148,8 @@
/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."
+ 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
action_button_name = "AR Console (Station Alerts)"
@@ -111,11 +163,8 @@
/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. \
- These have been ... modified ... to fit into a different frame."
+ They... don't seem to do anything particularly interesting? But hey, at least they look kinda science-y."
mode = "sci"
- icon = 'icons/obj/clothing/glasses.dmi'
- icon_override = null
- icon_state = "purple"
/obj/item/clothing/glasses/omnihud/eng/meson
name = "meson scanner HUD"
@@ -161,6 +210,13 @@
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)
+ action_button_name = "AR Console (All Alerts)"
+ arscreen_path = /datum/nano_module/alarm_monitor/all
+
+ ar_interact(var/mob/living/carbon/human/user)
+ if(arscreen)
+ arscreen.ui_interact(user,"main",null,1,glasses_state)
+ return 1
/obj/item/clothing/glasses/hud/security/eyepatch
name = "Security Hudpatch"