/obj/item/clothing/glasses name = "glasses" materials = list(MAT_GLASS = 250) var/glass_colour_type = null //colors your vision when worn /obj/item/clothing/glasses/visor_toggling() ..() if(visor_vars_to_toggle & VISOR_VISIONFLAGS) vision_flags ^= initial(vision_flags) if(visor_vars_to_toggle & VISOR_DARKNESSVIEW) darkness_view ^= initial(darkness_view) if(visor_vars_to_toggle & VISOR_INVISVIEW) invis_view ^= initial(invis_view) /obj/item/clothing/glasses/weldingvisortoggle(mob/user) . = ..() if(. && user) user.update_sight() //called when thermal glasses are emped. /obj/item/clothing/glasses/proc/thermal_overload() if(ishuman(src.loc)) var/mob/living/carbon/human/H = src.loc if(!(H.disabilities & BLIND)) if(H.glasses == src) to_chat(H, "The [src] overloads and blinds you!") H.flash_act(visual = 1) H.blind_eyes(3) H.blur_eyes(5) H.adjust_eye_damage(5) /obj/item/clothing/glasses/meson name = "Optical Meson Scanner" desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting conditions." icon_state = "meson" item_state = "meson" origin_tech = "magnets=1;engineering=2" darkness_view = 2 vision_flags = SEE_TURFS lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE glass_colour_type = /datum/client_colour/glass_colour/lightgreen var/static/list/meson_mining_failure_excuses = list("badly understood science", "damaged meson generators", "electromagnetic storms", "bluespace disruption", "ancient structures", \ "ambient radiation", "seismic activity", "extreme weather", "strange signals", "excessive lava", "giant monsters", "a loose wire", "lens warping", "radiant heat", "volcanic ash", \ "budget cuts","alien life","dense rock", "gravity", "dust") var/picked_excuse var/mesons_on = TRUE /obj/item/clothing/glasses/meson/Initialize() . = ..() picked_excuse = pick(meson_mining_failure_excuses) START_PROCESSING(SSobj, src) /obj/item/clothing/glasses/meson/Destroy() STOP_PROCESSING(SSobj, src) return ..() /obj/item/clothing/glasses/meson/examine(mob/user) ..() var/turf/T = get_turf(src) if(T && T.z == ZLEVEL_MINING && !mesons_on && picked_excuse) to_chat(user, "Due to [picked_excuse], these Meson Scanners will not be able to display terrain layouts in this area.") /obj/item/clothing/glasses/meson/proc/toggle_mode(mob/user) vision_flags ^= SEE_TURFS mesons_on = (vision_flags & SEE_TURFS)? TRUE : FALSE if(iscarbon(user)) //only carbons can wear glasses var/mob/living/carbon/C = user if(mesons_on) to_chat(C, "Your Meson Scanners have reactivated.") else if(picked_excuse) to_chat(C, "Due to [picked_excuse], your Meson Scanners will not be able to display terrain layouts in this area.") if(C.glasses == src) C.update_sight() /obj/item/clothing/glasses/meson/process() var/turf/T = get_turf(src) if(T && T.z == ZLEVEL_MINING) if(mesons_on) //if we're on mining, turn mesons OFF toggle_mode(loc) else if(!mesons_on) //otherwise, if we're not on mining, turn mesons back ON toggle_mode(loc) /obj/item/clothing/glasses/meson/night name = "Night Vision Optical Meson Scanner" desc = "An Optical Meson Scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness." icon_state = "nvgmeson" item_state = "nvgmeson" origin_tech = "magnets=4;engineering=5;plasmatech=4" darkness_view = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE glass_colour_type = /datum/client_colour/glass_colour/green /obj/item/clothing/glasses/meson/gar name = "gar mesons" icon_state = "garm" item_state = "garm" desc = "Do the impossible, see the invisible!" force = 10 throwforce = 10 throw_speed = 4 attack_verb = list("sliced") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = IS_SHARP /obj/item/clothing/glasses/science name = "science goggles" desc = "A pair of snazzy goggles used to protect against chemical spills. Fitted with an analyzer for scanning items and reagents." icon_state = "purple" item_state = "glasses" origin_tech = "magnets=2;engineering=1" scan_reagents = 1 //You can see reagents while wearing science goggles actions_types = list(/datum/action/item_action/toggle_research_scanner) glass_colour_type = /datum/client_colour/glass_colour/purple resistance_flags = ACID_PROOF armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 100) /obj/item/clothing/glasses/science/item_action_slot_check(slot) if(slot == slot_glasses) return 1 /obj/item/clothing/glasses/night name = "Night Vision Goggles" desc = "You can totally see in the dark now!" icon_state = "night" item_state = "glasses" origin_tech = "materials=4;magnets=4;plasmatech=4;engineering=4" darkness_view = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE glass_colour_type = /datum/client_colour/glass_colour/green /obj/item/clothing/glasses/eyepatch name = "eyepatch" desc = "Yarr." icon_state = "eyepatch" item_state = "eyepatch" /obj/item/clothing/glasses/monocle name = "monocle" desc = "Such a dapper eyepiece!" icon_state = "monocle" item_state = "headset" // lol /obj/item/clothing/glasses/material name = "Optical Material Scanner" desc = "Very confusing glasses." icon_state = "material" item_state = "glasses" origin_tech = "magnets=3;engineering=3" vision_flags = SEE_OBJS glass_colour_type = /datum/client_colour/glass_colour/lightblue /obj/item/clothing/glasses/material/mining name = "Optical Material Scanner" desc = "Used by miners to detect ores deep within the rock." icon_state = "material" item_state = "glasses" origin_tech = "magnets=3;engineering=3" darkness_view = 0 /obj/item/clothing/glasses/material/mining/gar name = "gar material scanner" icon_state = "garm" item_state = "garm" desc = "Do the impossible, see the invisible!" force = 10 throwforce = 20 throw_speed = 4 attack_verb = list("sliced") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = IS_SHARP glass_colour_type = /datum/client_colour/glass_colour/lightgreen /obj/item/clothing/glasses/regular name = "Prescription Glasses" desc = "Made by Nerd. Co." icon_state = "glasses" item_state = "glasses" vision_correction = 1 //corrects nearsightedness /obj/item/clothing/glasses/regular/jamjar name = "Jamjar Glasses" desc = "Also known as Virginity Protectors." icon_state = "jamjar_glasses" item_state = "jamjar_glasses" /obj/item/clothing/glasses/regular/hipster name = "Prescription Glasses" desc = "Made by Uncool. Co." icon_state = "hipster_glasses" item_state = "hipster_glasses" //Here lies green glasses, so ugly they died. RIP /obj/item/clothing/glasses/sunglasses desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes." name = "sunglasses" icon_state = "sun" item_state = "sunglasses" darkness_view = 1 flash_protect = 1 tint = 1 glass_colour_type = /datum/client_colour/glass_colour/gray dog_fashion = /datum/dog_fashion/head /obj/item/clothing/glasses/sunglasses/reagent name = "beer goggles" desc = "A pair of sunglasses outfitted with apparatus to scan reagents." origin_tech = "magnets=2;engineering=2" scan_reagents = 1 /obj/item/clothing/glasses/sunglasses/garb desc = "Go beyond impossible and kick reason to the curb!" name = "black gar glasses" icon_state = "garb" item_state = "garb" force = 10 throwforce = 10 throw_speed = 4 attack_verb = list("sliced") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = IS_SHARP /obj/item/clothing/glasses/sunglasses/garb/supergarb desc = "Believe in us humans." name = "black giga gar glasses" icon_state = "supergarb" item_state = "garb" force = 12 throwforce = 12 /obj/item/clothing/glasses/sunglasses/gar desc = "Just who the hell do you think I am?!" name = "gar glasses" icon_state = "gar" item_state = "gar" force = 10 throwforce = 10 throw_speed = 4 attack_verb = list("sliced") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = IS_SHARP glass_colour_type = /datum/client_colour/glass_colour/orange /obj/item/clothing/glasses/sunglasses/gar/supergar desc = "We evolve past the person we were a minute before. Little by little we advance with each turn. That's how a drill works!" name = "giga gar glasses" icon_state = "supergar" item_state = "gar" force = 12 throwforce = 12 glass_colour_type = /datum/client_colour/glass_colour/red /obj/item/clothing/glasses/welding name = "welding goggles" desc = "Protects the eyes from welders; approved by the mad scientist association." icon_state = "welding-g" item_state = "welding-g" actions_types = list(/datum/action/item_action/toggle) materials = list(MAT_METAL = 250) flash_protect = 2 tint = 2 visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT flags_cover = GLASSESCOVERSEYES visor_flags_inv = HIDEEYES glass_colour_type = /datum/client_colour/glass_colour/gray /obj/item/clothing/glasses/welding/attack_self(mob/user) weldingvisortoggle(user) /obj/item/clothing/glasses/sunglasses/blindfold name = "blindfold" desc = "Covers the eyes, preventing sight." icon_state = "blindfold" item_state = "blindfold" flash_protect = 2 tint = 3 // to make them blind /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." icon_state = "bigsunglasses" item_state = "bigsunglasses" /obj/item/clothing/glasses/thermal name = "Optical Thermal Scanner" desc = "Thermals in the shape of glasses." icon_state = "thermal" item_state = "glasses" origin_tech = "magnets=3" vision_flags = SEE_MOBS invis_view = 2 flash_protect = 0 glass_colour_type = /datum/client_colour/glass_colour/red /obj/item/clothing/glasses/thermal/emp_act(severity) thermal_overload() ..() /obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete name = "Chameleon Thermals" desc = "A pair of thermal optic goggles with an onboard chameleon generator." origin_tech = "magnets=3;syndicate=4" flash_protect = -1 var/datum/action/item_action/chameleon/change/chameleon_action /obj/item/clothing/glasses/thermal/syndi/New() ..() chameleon_action = new(src) chameleon_action.chameleon_type = /obj/item/clothing/glasses chameleon_action.chameleon_name = "Glasses" chameleon_action.chameleon_blacklist = typecacheof(/obj/item/clothing/glasses/changeling, only_root_path = TRUE) chameleon_action.initialize_disguises() /obj/item/clothing/glasses/thermal/syndi/emp_act(severity) ..() chameleon_action.emp_randomise() /obj/item/clothing/glasses/thermal/monocle name = "Thermoncle" desc = "A monocle thermal." icon_state = "thermoncle" flags = null //doesn't protect eyes because it's a monocle, duh /obj/item/clothing/glasses/thermal/eyepatch name = "Optical Thermal Eyepatch" desc = "An eyepatch with built-in thermal optics." icon_state = "eyepatch" item_state = "eyepatch" /obj/item/clothing/glasses/cold name = "cold goggles" desc = "A pair of goggles meant for low temperatures." icon_state = "cold" item_state = "cold" /obj/item/clothing/glasses/heat name = "heat goggles" desc = "A pair of goggles meant for high temperatures." icon_state = "heat" item_state = "heat" /obj/item/clothing/glasses/orange name = "orange glasses" desc = "A sweet pair of orange shades." icon_state = "orangeglasses" item_state = "orangeglasses" glass_colour_type = /datum/client_colour/glass_colour/lightorange /obj/item/clothing/glasses/red name = "red glasses" desc = "Hey, you're looking good, senpai!" icon_state = "redglasses" item_state = "redglasses" glass_colour_type = /datum/client_colour/glass_colour/red /obj/item/clothing/glasses/godeye name = "eye of god" desc = "A strange eye, said to have been torn from an omniscient creature that used to roam the wastes." icon_state = "godeye" item_state = "godeye" vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS darkness_view = 8 scan_reagents = 1 flags = NODROP lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE /obj/item/clothing/glasses/godeye/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, src) && W != src && W.loc == user) if(W.icon_state == "godeye") W.icon_state = "doublegodeye" W.item_state = "doublegodeye" W.desc = "A pair of strange eyes, said to have been torn from an omniscient creature that used to roam the wastes. There's no real reason to have two, but that isn't stopping you." if(iscarbon(user)) var/mob/living/carbon/C = user C.update_inv_wear_mask() else to_chat(user, "The eye winks at you and vanishes into the abyss, you feel really unlucky.") qdel(src) ..() /obj/item/clothing/glasses/AltClick(mob/user) if(glass_colour_type && ishuman(user)) var/mob/living/carbon/human/H = user if(H.client) if(H.client.prefs) if(src == H.glasses) H.client.prefs.uses_glasses_colour = !H.client.prefs.uses_glasses_colour if(H.client.prefs.uses_glasses_colour) to_chat(H, "You will now see glasses colors.") else to_chat(H, "You will no longer see glasses colors.") H.update_glasses_color(src, 1) else return ..() /obj/item/clothing/glasses/proc/change_glass_color(mob/living/carbon/human/H, datum/client_colour/glass_colour/new_color_type) var/old_colour_type = glass_colour_type if(!new_color_type || ispath(new_color_type)) //the new glass colour type must be null or a path. glass_colour_type = new_color_type if(H && H.glasses == src) if(old_colour_type) H.remove_client_colour(old_colour_type) if(glass_colour_type) H.update_glasses_color(src, 1) /mob/living/carbon/human/proc/update_glasses_color(obj/item/clothing/glasses/G, glasses_equipped) if(client && client.prefs.uses_glasses_colour && glasses_equipped) add_client_colour(G.glass_colour_type) else remove_client_colour(G.glass_colour_type)