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"