diff --git a/code/datums/outfits/outfit_debug.dm b/code/datums/outfits/outfit_debug.dm
index 908eafdb38a..7f7205e2396 100644
--- a/code/datums/outfits/outfit_debug.dm
+++ b/code/datums/outfits/outfit_debug.dm
@@ -93,51 +93,56 @@
/obj/item/clothing/glasses/hud/debug
name = "AVD-CNED glasses"
- desc = "Diagnostic, Hydroponic, Medical, Security, and Skills HUD. Built-in advanced reagent scanner. Alt-click to toggle X-ray vision."
+ desc = "Diagnostic, Hydroponic, Medical, and Security HUD. Built-in advanced reagent scanner. Protects the wearer from supermatter hallucinations and welding flashes."
icon_state = "nvgmeson"
hud_debug = TRUE
flash_protect = FLASH_PROTECTION_WELDER
scan_reagents_advanced = TRUE
-
prescription_upgradable = FALSE
-
hud_types = list(DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_ADVANCED, DATA_HUD_SECURITY_ADVANCED, DATA_HUD_HYDROPONIC)
-
var/xray = FALSE
-/obj/item/clothing/glasses/hud/debug/equipped(mob/living/carbon/human/user, slot)
- ..()
- if(xray)
- add_xray(user)
+/obj/item/clothing/glasses/hud/debug/examine(mob/user)
+ . = ..()
+ . += "Alt-Click to toggle X-ray vision."
-/obj/item/clothing/glasses/hud/debug/dropped(mob/living/carbon/human/user)
+/obj/item/clothing/glasses/hud/debug/equipped(mob/user, slot)
..()
- if(xray)
- remove_xray(user)
+ if(slot == ITEM_SLOT_EYES)
+ handle_traits(user, TRUE)
+ else
+ handle_traits(user)
-/obj/item/clothing/glasses/hud/debug/AltClick(mob/user)
+/obj/item/clothing/glasses/hud/debug/dropped(mob/user)
+ ..()
+ handle_traits(user)
+
+/obj/item/clothing/glasses/hud/debug/AltClick(mob/living/carbon/human/user)
+ to_chat(user, "You [xray ? "de" : ""]activate the x-ray setting on [src].")
+ xray = !xray
+ if(istype(user) && user.glasses == src)
+ handle_traits(user, TRUE)
+
+/obj/item/clothing/glasses/hud/debug/proc/handle_traits(mob/user, worn = FALSE)
if(!ishuman(user))
return
- var/mob/living/carbon/human/human_user = user
- if(human_user.glasses != src)
- return
- if(xray)
- remove_xray(human_user)
+
+ if(worn)
+ if(!HAS_TRAIT_FROM(user, SM_HALLUCINATION_IMMUNE, "debug_glasses[UID()]"))
+ ADD_TRAIT(user, SM_HALLUCINATION_IMMUNE, "debug_glasses[UID()]")
else
- add_xray(human_user)
- xray = !xray
- to_chat(user, "You [!xray ? "de" : ""]activate the x-ray setting on [src]")
- human_user.update_sight()
+ REMOVE_TRAIT(user, SM_HALLUCINATION_IMMUNE, "debug_glasses[UID()]")
-/obj/item/clothing/glasses/hud/debug/proc/remove_xray(mob/user)
- see_in_dark = initial(see_in_dark)
- lighting_alpha = initial(lighting_alpha)
- REMOVE_TRAIT(user, TRAIT_XRAY_VISION, "debug_glasses[UID()]")
-
-/obj/item/clothing/glasses/hud/debug/proc/add_xray(mob/user)
- see_in_dark = 8
- lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE
- ADD_TRAIT(user, TRAIT_XRAY_VISION, "debug_glasses[UID()]")
+ if(xray && worn)
+ see_in_dark = 8
+ lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE
+ if(!HAS_TRAIT_FROM(user, TRAIT_XRAY_VISION, "debug_glasses[UID()]"))
+ ADD_TRAIT(user, TRAIT_XRAY_VISION, "debug_glasses[UID()]")
+ else
+ see_in_dark = initial(see_in_dark)
+ lighting_alpha = initial(lighting_alpha)
+ REMOVE_TRAIT(user, TRAIT_XRAY_VISION, "debug_glasses[UID()]")
+ user.update_sight()
/obj/item/debug/human_spawner
name = "human spawner"