/obj/item/clothing/glasses/Initialize(mapload) . = ..() var/skulk_adjustment = string_assoc_list(alist(SOUTH = list(-1, 0), NORTH = list(-1, 0), EAST = list(0, -2), WEST = list(0, 2))) AddElement(/datum/element/clothing_adjustment/skulk_glasses, skulk_adjustment) if(prescription_upgradable && prescription) upgrade_prescription() if(hide_examine) ADD_TRAIT(src, TRAIT_HIDE_EXAMINE, INNATE_TRAIT) /obj/item/clothing/glasses/item_interaction(mob/living/user, obj/item/used, list/modifiers) if(!prescription_upgradable || user.stat || user.restrained() || !ishuman(user)) return ..() if(istype(used, /obj/item/clothing/glasses/regular)) if(prescription) to_chat(user, SPAN_WARNING("You can't possibly imagine how adding more lenses would improve [src].")) return ITEM_INTERACT_COMPLETE user.drop_item_to_ground(used) upgrade_prescription(used) to_chat(user, SPAN_NOTICE("You fit [src] with lenses from [used].")) user.update_nearsighted_effects() return ITEM_INTERACT_COMPLETE /obj/item/clothing/glasses/proc/upgrade_prescription(obj/item/I) if(!I) new /obj/item/clothing/glasses/regular(src) else I.forceMove(src) prescription = TRUE name = "prescription [initial(name)]" /obj/item/clothing/glasses/proc/remove_prescription(mob/living/user) var/obj/item/clothing/glasses/regular/prescription_glasses = locate() in src if(!prescription_glasses) return prescription = FALSE name = initial(name) if(user) to_chat(user, SPAN_NOTICE("You salvage the prescription lenses from [src].")) user.put_in_hands(prescription_glasses) user.update_nearsighted_effects() else prescription_glasses.forceMove(get_turf(src)) /obj/item/clothing/glasses/screwdriver_act(mob/living/user) if(!prescription) to_chat(user, SPAN_NOTICE("There are no prescription lenses in [src].")) return remove_prescription(user) return TRUE /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) see_in_dark ^= initial(see_in_dark) if(visor_vars_to_toggle & VISOR_INVISVIEW) invis_view ^= initial(invis_view) /obj/item/clothing/glasses/weldingvisortoggle(mob/user) . = ..() if(. && user) user.update_sight() user.update_inv_glasses() //called when thermal glasses are emped. /obj/item/clothing/glasses/proc/thermal_overload() if(ishuman(loc)) var/mob/living/carbon/human/H = loc var/obj/item/organ/internal/eyes/eyes = H.get_organ_slot("eyes") if(!H.AmountBlinded() && eyes) if(H.glasses == src) to_chat(H, SPAN_DANGER("[src] overloads and blinds you!")) H.flash_eyes(visual = TRUE) H.EyeBlind(6 SECONDS) H.EyeBlurry(10 SECONDS) eyes.receive_damage(5) /obj/item/clothing/glasses/meson name = "optical meson scanner" desc = "Used for seeing walls, floors, and stuff through anything." icon_state = "meson" inhand_icon_state = "meson" origin_tech = "magnets=1;engineering=2" prescription_upgradable = TRUE icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' var/active_on_equip = TRUE /obj/item/clothing/glasses/meson/equipped(mob/user, slot, initial) . = ..() if(active_on_equip && slot == ITEM_SLOT_EYES) ADD_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]") /obj/item/clothing/glasses/meson/dropped(mob/user) . = ..() if(user) REMOVE_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]") /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" origin_tech = "magnets=4;engineering=5;plasmatech=4" see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000) /obj/item/clothing/glasses/meson/sunglasses name = "meson HUD sunglasses" desc = "Sunglasses with an inbuilt scanner that can see through both walls and flooring." icon_state = "sunhudmeson" inhand_icon_state = "sunglasses" flash_protect = FLASH_PROTECTION_FLASH tint = FLASH_PROTECTION_FLASH hide_examine = TRUE /obj/item/clothing/glasses/meson/prescription prescription = TRUE /obj/item/clothing/glasses/meson/gar name = "gar mesons" desc = "Do the impossible, see the invisible!" icon_state = "garm" force = 10 throwforce = 10 throw_speed = 4 icon_monitor = null attack_verb = list("sliced") hitsound = 'sound/weapons/bladeslice.ogg' sharp = TRUE /obj/item/clothing/glasses/meson/cyber name = "eye replacement implant" desc = "An implanted replacement for a left eye with meson vision capabilities." icon_state = "cybereye-green" flags = NODROP flags_cover = null prescription_upgradable = FALSE /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 = "science" origin_tech = "magnets=2;engineering=1" materials = list(MAT_METAL = 500, MAT_GLASS = 500) prescription_upgradable = TRUE scan_reagents = TRUE // You can see reagents while wearing science goggles resistance_flags = ACID_PROOF armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 200, ACID = INFINITY) icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' actions_types = list(/datum/action/item_action/toggle_research_scanner) /obj/item/clothing/glasses/science/item_action_slot_check(slot) if(slot == ITEM_SLOT_EYES) return TRUE /obj/item/clothing/glasses/science/night name = "night vision science goggles" desc = "Now you can science in darkness." icon_state = "nvscience" see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE //don't render darkness while wearing these /obj/item/clothing/glasses/janitor name = "janitorial goggles" desc = "These'll keep the soap out of your eyes." icon_state = "janihudgoggles" icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/night name = "night vision goggles" desc = "You can totally see in the dark now!" icon_state = "night" icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' origin_tech = "materials=4;magnets=4;plasmatech=4;engineering=4" see_in_dark = 8 prescription_upgradable = TRUE lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE //don't render darkness while wearing these materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000) /obj/item/clothing/glasses/night/syndicate_fake name = "suspicious night vision goggles" desc = "A dark red tacticool goggles anyone would go operate with." icon_state = "securityhudnight" color = "#d62d20" // I want it to color the on mob's sprite as well, but i don't know how to actually. /obj/item/clothing/glasses/eyepatch name = "eyepatch" desc = "Yarr." icon_state = "eyepatch" inhand_icon_state = "blindfold" prescription_upgradable = TRUE icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/monocle name = "monocle" desc = "Such a dapper eyepiece!" icon_state = "monocle" inhand_icon_state = "headset" // lol lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' prescription_upgradable = TRUE icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/material name = "optical material scanner" desc = "Very confusing glasses." icon_state = "material" origin_tech = "magnets=3;engineering=3" icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' vision_flags = SEE_OBJS | SEE_TURFS /obj/item/clothing/glasses/material/cyber name = "eye replacement implant" desc = "An implanted replacement for a left eye with material vision capabilities." icon_state = "cybereye-blue" flags = NODROP flags_cover = null /obj/item/clothing/glasses/material/lighting name = "neutron goggles" desc = "These odd glasses use a form of neutron-based imaging to completely negate the effects of light and darkness." origin_tech = null vision_flags = 0 flags = NODROP lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE /obj/item/clothing/glasses/regular name = "prescription glasses" desc = "Made by Nerd. Co." icon_state = "glasses" prescription = TRUE icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/regular/hipster desc = "Made by Uncool. Co." icon_state = "hipster_glasses" /obj/item/clothing/glasses/goggles name = "goggles" desc = "Just some basic goggles, rather fashionable." icon_state = "goggles" icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/threedglasses name = "\improper 3D glasses" desc = "A long time ago, people used these glasses to makes images from screens threedimensional." icon_state = "3d" icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/gglasses name = "green glasses" desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme." icon_state = "gglasses" icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' prescription_upgradable = TRUE /obj/item/clothing/glasses/syndie name = "suspicious glasses" desc = "Suspicious-looking, stylish glasses. They don't look like they could protect you from a flash, however they have a slot around their lenses where something could easily be inserted." icon_state = "syndieglasses" icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' prescription_upgradable = TRUE /obj/item/clothing/glasses/syndie_sun name = "suspicious shaded glasses" desc = "Suspicious-looking, dark red, stylish glasses. They appear to have an additional eye-shielding layer over the lenses." icon_state = "syndieglasses_sun" icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' inhand_icon_state = "sunglasses" see_in_dark = 1 flash_protect = FLASH_PROTECTION_FLASH tint = FLASH_PROTECTION_FLASH prescription_upgradable = TRUE /obj/item/clothing/glasses/sunglasses name = "sunglasses" desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes." icon_state = "sun" inhand_icon_state = "sunglasses" see_in_dark = 1 flash_protect = FLASH_PROTECTION_FLASH tint = FLASH_PROTECTION_FLASH prescription_upgradable = TRUE dog_fashion = /datum/dog_fashion/head icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' hide_examine = TRUE /obj/item/clothing/glasses/sunglasses_fake name = "cheap sunglasses" desc = "Cheap, plastic sunglasses. They don't even have UV protection." icon_state = "sun" inhand_icon_state = "sunglasses" prescription_upgradable = TRUE icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/sunglasses/noir name = "noir sunglasses" desc = "Somehow these seem even more out-of-date than normal sunglasses." actions_types = list(/datum/action/item_action/noir) /obj/item/clothing/glasses/sunglasses/noir/activate_self(mob/user) if(..()) return toggle_noir(user) /obj/item/clothing/glasses/sunglasses/noir/item_action_slot_check(slot) if(slot == ITEM_SLOT_EYES) return TRUE /obj/item/clothing/glasses/sunglasses/noir/proc/toggle_noir(mob/user) color_view = color_view ? null : MATRIX_GREYSCALE //Toggles between null and grayscale, with null being the default option. user.update_client_colour() /obj/item/clothing/glasses/sunglasses/yeah name = "agreeable glasses" desc = "H.C Limited edition." var/punused = FALSE actions_types = list(/datum/action/item_action/yeeeaaaaahhhhhhhhhhhhh) /obj/item/clothing/glasses/sunglasses/yeah/activate_self(mob/user) if(..()) return pun(user) /obj/item/clothing/glasses/sunglasses/yeah/proc/pun(mob/user) if(punused) // one per round.. to_chat(user, "The moment is gone.") return punused = TRUE playsound(loc, 'sound/misc/yeah.ogg', 100, FALSE) user.visible_message(SPAN_BIGGERDANGER("YEEEAAAAAHHHHHHHHHHHHH!!")) if(HAS_TRAIT(user, TRAIT_BADASS)) //unless you're badass addtimer(VARSET_CALLBACK(src, punused, FALSE), 5 MINUTES) /obj/item/clothing/glasses/sunglasses/reagent name = "sunscanners" desc = "Strangely ancient technology used to help provide rudimentary eye cover. Outfitted with an apparatus to scan individual reagents, tech potentials, and the internal components of machines." scan_reagents = TRUE actions_types = list(/datum/action/item_action/toggle_research_scanner) /obj/item/clothing/glasses/sunglasses/reagent/item_action_slot_check(slot) if(slot == ITEM_SLOT_EYES) return TRUE /obj/item/clothing/glasses/virussunglasses name = "sunglasses" desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes." icon_state = "sun" inhand_icon_state = "sunglasses" see_in_dark = 1 flash_protect = FLASH_PROTECTION_FLASH tint = FLASH_PROTECTION_FLASH /obj/item/clothing/glasses/sunglasses/lasers name = "high-tech sunglasses" desc = "A peculiar set of sunglasses; they have various chips and other panels attached to the sides of the frames." flags = NODROP /obj/item/clothing/glasses/sunglasses/lasers/equipped(mob/user, slot) //grant them laser eyes upon equipping it. if(slot == ITEM_SLOT_EYES) ADD_TRAIT(user, TRAIT_LASEREYES, "admin_zapglasses") user.regenerate_icons() ..(user, slot) /obj/item/clothing/glasses/welding name = "welding goggles" desc = "Protects the eyes from welders, approved by the mad scientist association." icon_state = "welding-g" inhand_icon_state = "blindfold" actions_types = list(/datum/action/item_action/toggle) flash_protect = FLASH_PROTECTION_WELDER tint = FLASH_PROTECTION_WELDER can_toggle = TRUE visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/welding/activate_self(mob/user) if(..()) return weldingvisortoggle(user) /obj/item/clothing/glasses/welding/superior name = "superior welding goggles" desc = "Welding goggles made from more expensive materials, strangely smells like potatoes." icon_state = "rwelding-g" inhand_icon_state = "glasses" tint = FLASH_PROTECTION_NONE /obj/item/clothing/glasses/sunglasses/blindfold name = "blindfold" desc = "Covers the eyes, preventing sight." icon_state = "blindfold" inhand_icon_state = "blindfold" flash_protect = FLASH_PROTECTION_WELDER tint = 3 //to make them blind prescription_upgradable = FALSE /obj/item/clothing/glasses/sunglasses/blindfold/fake name = "tattered blindfold" desc = "A see-through blindfold perfect for cheating at games like pin the stunbaton on the clown." flash_protect = FLASH_PROTECTION_NONE tint = FLASH_PROTECTION_NONE /obj/item/clothing/glasses/sunglasses/prescription 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." icon_state = "bigsunglasses" /obj/item/clothing/glasses/thermal name = "optical thermal scanner" desc = "Thermals in the shape of glasses." icon_state = "thermal" origin_tech = "magnets=3" vision_flags = SEE_MOBS lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE flash_protect = FLASH_PROTECTION_SENSITIVE icon_monitor = 'icons/mob/clothing/species/machine/monitor/eyes.dmi' /obj/item/clothing/glasses/thermal/emp_act(severity) thermal_overload() ..() /obj/item/clothing/glasses/thermal/monocle name = "thermonocle" desc = "A thermal monocle." icon_state = "thermonocle" flags_cover = 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" /obj/item/clothing/glasses/thermal/jensen name = "optical thermal implant" desc = "A set of implantable lenses designed to augment your vision." icon_state = "thermalimplants" /obj/item/clothing/glasses/thermal/cyber name = "eye replacement implant" desc = "An implanted replacement for a left eye with thermal vision capabilities." icon_state = "cybereye-red" flags = NODROP