From c7857a5bf3b401a7e540ca4d7ba6abc06e44b806 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sun, 5 Mar 2017 20:58:59 -0500 Subject: [PATCH] Improves AR glasses, makes them available Now you can start with them in loadout. They are no longer SUNglasses though, so they won't protect you from flashes. There are several models, the loadout ones are the civilian ones. - Civilian: Displays job ID icon based on the person's ID, and shows a health bar only if they are injured. - Medical: Same as civlian, but displays advanced status (virus, borer, etc) along with backup implant status, and allows medical records access. - Security: Same as civilian, but displays warrant and arrest status, and will automatically darken (electrochromic) in response to flashes, making the wearer immune, plus security records access. - Engineering: Same as civilian, but will automatically darken to protect one's eyes during welding. - Research: Same as civilian, but has a trendy goggle form factor for SCIENCE reasons. - Omni: Has the combined features of all of the above. The only pair available spawns in the CD's office. (CC officers also) --- code/__defines/misc_vr.dm | 10 ++- code/defines/procs/hud.dm | 2 +- code/defines/procs/hud_vr.dm | 10 ++- code/game/jobs/job/special.dm | 4 +- code/game/machinery/vending.dm | 4 +- code/game/machinery/vending_vr.dm | 45 ++++++---- .../items/weapons/implants/implanter.dm | 1 + .../loadout/loadout_eyes_vr.dm | 7 ++ code/modules/clothing/glasses/glasses_vr.dm | 58 ++++++++++++ code/modules/clothing/glasses/hud_vr.dm | 84 +++++++++++++----- .../mob/living/carbon/human/examine_vr.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 11 +++ code/modules/mob/living/carbon/human/life.dm | 5 +- .../mob/living/carbon/human/life_vr.dm | 30 +++++++ code/modules/research/designs_vr.dm | 4 +- code/modules/resleeving/implant.dm | 9 +- .../vore/fluffstuff/custom_boxes_vr.dm | 2 +- .../vore/fluffstuff/custom_clothes_vr.dm | 3 +- icons/mob/hud_med_vr.dmi | Bin 0 -> 613 bytes icons/mob/hud_vr.dmi | Bin 0 -> 995 bytes maps/virgo/virgo-1.dmm | 24 ++--- vorestation.dme | 2 + 22 files changed, 242 insertions(+), 77 deletions(-) create mode 100644 code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm create mode 100644 code/modules/clothing/glasses/glasses_vr.dm create mode 100644 icons/mob/hud_med_vr.dmi create mode 100644 icons/mob/hud_vr.dmi diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm index d459f4a3f0..dcab43baae 100644 --- a/code/__defines/misc_vr.dm +++ b/code/__defines/misc_vr.dm @@ -1 +1,9 @@ -#define ECO_MODIFIER 10 \ No newline at end of file +#define ECO_MODIFIER 10 + +// Because of omnihud having overlapping issues, we have extra ones. +#define BACKUP_HUD 11 // HUD for showing whether or not they have a backup implant. +#define STATUS_R_HUD 12 // HUD for showing the same STATUS_HUD info on the right side, but not for 'boring' statuses (transparent icons) +#define HEALTH_VR_HUD 13 // HUD with blank 100% bar so it's hidden most of the time. + +#undef TOTAL_HUDS //Undo theirs. +#define TOTAL_HUDS 13 // Total number of HUDs. \ No newline at end of file diff --git a/code/defines/procs/hud.dm b/code/defines/procs/hud.dm index d662241c61..d712bf854f 100644 --- a/code/defines/procs/hud.dm +++ b/code/defines/procs/hud.dm @@ -18,7 +18,7 @@ proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt) if(local_scanner) P.Client.images += patient.hud_list[HEALTH_HUD] P.Client.images += patient.hud_list[STATUS_HUD] - P.Client.images += patient.hud_list[IMPLOYAL_HUD] //VOREStation Edit - Commandeered to be backup implant indicator + P.Client.images += patient.hud_list[BACKUP_HUD] //VOREStation Edit - Backup implant indicator else var/sensor_level = getsensorlevel(patient) if(sensor_level >= SUIT_SENSOR_VITAL) diff --git a/code/defines/procs/hud_vr.dm b/code/defines/procs/hud_vr.dm index 63c8fa2706..7ea10110a3 100644 --- a/code/defines/procs/hud_vr.dm +++ b/code/defines/procs/hud_vr.dm @@ -8,12 +8,14 @@ proc/process_omni_hud(var/mob/M, var/mode, var/mob/Alt) continue P.Client.images += guy.hud_list[ID_HUD] - P.Client.images += guy.hud_list[HEALTH_HUD] - P.Client.images += guy.hud_list[IMPLOYAL_HUD] + P.Client.images += guy.hud_list[HEALTH_VR_HUD] - //if(shades.mode == "med") //Medical advanced version - //Nothing special to show, really, just records become available. + if(mode == "med") //Medical advanced version + P.Client.images += guy.hud_list[STATUS_R_HUD] + P.Client.images += guy.hud_list[BACKUP_HUD] if(mode == "sec") //Security advanced version P.Client.images += guy.hud_list[WANTED_HUD] if(mode == "best") //Command/omni advanced version P.Client.images += guy.hud_list[WANTED_HUD] + P.Client.images += guy.hud_list[STATUS_R_HUD] + P.Client.images += guy.hud_list[BACKUP_HUD] diff --git a/code/game/jobs/job/special.dm b/code/game/jobs/job/special.dm index 703c86ddce..0f369e2cb3 100644 --- a/code/game/jobs/job/special.dm +++ b/code/game/jobs/job/special.dm @@ -30,7 +30,7 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(H), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom/officer(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/omnihud/best(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/clothing/glasses/omnihud/all(H), slot_l_store) H.implant_loyalty() @@ -72,7 +72,7 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(H), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom/officer(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/omnihud(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/clothing/glasses/omnihud(H), slot_l_store) H.implant_loyalty() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index bbab86d493..b6625bce7e 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -853,9 +853,7 @@ /obj/item/weapon/reagent_containers/glass/bottle/stoxin = 4,/obj/item/weapon/reagent_containers/glass/bottle/toxin = 4, /obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/syringe = 12, /obj/item/device/healthanalyzer = 5,/obj/item/weapon/reagent_containers/glass/beaker = 4, /obj/item/weapon/reagent_containers/dropper = 2, - /obj/item/stack/medical/advanced/bruise_pack = 3, /obj/item/stack/medical/advanced/ointment = 3, /obj/item/stack/medical/splint = 2, - /obj/item/weapon/storage/box/khcrystal = 4, - /obj/item/weapon/storage/box/backup_kit = 2) //VOREStation Add - khcrystal and backup_kit + /obj/item/stack/medical/advanced/bruise_pack = 3, /obj/item/stack/medical/advanced/ointment = 3, /obj/item/stack/medical/splint = 2) contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3,/obj/item/weapon/reagent_containers/pill/stox = 4,/obj/item/weapon/reagent_containers/pill/antitox = 6) idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. req_log_access = access_cmo diff --git a/code/game/machinery/vending_vr.dm b/code/game/machinery/vending_vr.dm index f877ebf31e..3ab4133bfb 100644 --- a/code/game/machinery/vending_vr.dm +++ b/code/game/machinery/vending_vr.dm @@ -1,26 +1,29 @@ -/obj/machinery/vending/hydroseeds - products = list(/obj/item/seeds/bananaseed = 3,/obj/item/seeds/berryseed = 3,/obj/item/seeds/carrotseed = 3,/obj/item/seeds/chantermycelium = 3,/obj/item/seeds/chiliseed = 3, - /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/replicapod = 3,/obj/item/seeds/soyaseed = 3, - /obj/item/seeds/sunflowerseed = 3,/obj/item/seeds/tomatoseed = 3,/obj/item/seeds/towermycelium = 3,/obj/item/seeds/wheatseed = 3,/obj/item/seeds/appleseed = 3, - /obj/item/seeds/poppyseed = 3,/obj/item/seeds/sugarcaneseed = 3,/obj/item/seeds/ambrosiavulgarisseed = 3,/obj/item/seeds/peanutseed = 3,/obj/item/seeds/whitebeetseed = 3,/obj/item/seeds/watermelonseed = 3,/obj/item/seeds/lavenderseed = 3,/obj/item/seeds/limeseed = 3, - /obj/item/seeds/lemonseed = 3,/obj/item/seeds/orangeseed = 3,/obj/item/seeds/grassseed = 3,/obj/item/seeds/cocoapodseed = 3,/obj/item/seeds/plumpmycelium = 2, - /obj/item/seeds/cabbageseed = 3,/obj/item/seeds/grapeseed = 3,/obj/item/seeds/pumpkinseed = 3,/obj/item/seeds/cherryseed = 3,/obj/item/seeds/plastiseed = 3,/obj/item/seeds/riceseed = 3,/obj/item/seeds/shrinkshroom = 3,/obj/item/seeds/megashroom = 3) +//Tweaked existing vendors +/obj/machinery/vending/hydroseeds/New() + products += list(/obj/item/seeds/shrinkshroom = 3,/obj/item/seeds/megashroom = 3) + ..() -/obj/machinery/vending/security - req_access = list(access_security) - products = list(/obj/item/weapon/handcuffs = 8,/obj/item/weapon/grenade/flashbang = 4,/obj/item/device/flash = 5, - /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 12,/obj/item/weapon/storage/box/evidence = 6, - /obj/item/weapon/gun/energy/taser = 8,/obj/item/weapon/gun/energy/stunrevolver = 4, +/obj/machinery/vending/security/New() + products += list(/obj/item/weapon/gun/energy/taser = 8,/obj/item/weapon/gun/energy/stunrevolver = 4, /obj/item/weapon/reagent_containers/spray/pepper = 6,/obj/item/taperoll/police = 6, - /obj/item/weapon/gun/projectile/sec/flash = 4, /obj/item/ammo_magazine/c45m/flash = 8) + /obj/item/weapon/gun/projectile/sec/flash = 4, /obj/item/ammo_magazine/c45m/flash = 8, + /obj/item/clothing/glasses/omnihud/sec = 4) + ..() +/obj/machinery/vending/tool/New() + products += list(/obj/item/weapon/reagent_containers/spray/windowsealant = 5) + ..() -/obj/machinery/vending/tool - products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/weapon/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/wirecutters = 5, - /obj/item/weapon/wrench = 5,/obj/item/device/analyzer = 5,/obj/item/device/t_scanner = 5,/obj/item/weapon/screwdriver = 5, - /obj/item/device/flashlight/glowstick = 3, /obj/item/device/flashlight/glowstick/red = 3, /obj/item/device/flashlight/glowstick/blue = 3, - /obj/item/device/flashlight/glowstick/orange =3, /obj/item/device/flashlight/glowstick/yellow = 3, /obj/item/weapon/reagent_containers/spray/windowsealant = 5) +/obj/machinery/vending/engivend/New() + products += list(/obj/item/clothing/glasses/omnihud/eng = 4) + ..() +/obj/machinery/vending/medical/New() + products += list(/obj/item/weapon/storage/box/khcrystal = 4,/obj/item/weapon/storage/box/backup_kit = 2, + /obj/item/clothing/glasses/omnihud/med = 2, /obj/item/device/glasses_kit = 1) + ..() + +//Custom vendors /obj/machinery/vending/dinnerware name = "Dinnerware" desc = "A kitchen and restaurant equipment vendor." @@ -55,7 +58,11 @@ desc = "A technological marvel, supposedly able to cook or mix a large variety of food or drink." icon_state = "boozeomat" icon_deny = "boozeomat-deny" - products = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice = 4, + products = list(/obj/item/weapon/tray = 8, + /obj/item/weapon/material/kitchen/utensil/fork = 6, + /obj/item/weapon/material/kitchen/utensil/knife = 6, + /obj/item/weapon/material/kitchen/utensil/spoon = 6, + /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/cream = 4, diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 4cb92a0780..d68ae92a39 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -54,6 +54,7 @@ imp.part = affected BITSET(H.hud_updateflag, IMPLOYAL_HUD) + BITSET(H.hud_updateflag, BACKUP_HUD) //VOREStation Add - Backup HUD updates src.imp = null update() diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm b/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm new file mode 100644 index 0000000000..bec6894dd2 --- /dev/null +++ b/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm @@ -0,0 +1,7 @@ +/datum/gear/eyes/arglasses + display_name = "AR glasses" + path = /obj/item/clothing/glasses/omnihud + +/datum/gear/eyes/arglassespres + display_name = "AR glasses, prescription" + path = /obj/item/clothing/glasses/omnihud/prescription diff --git a/code/modules/clothing/glasses/glasses_vr.dm b/code/modules/clothing/glasses/glasses_vr.dm new file mode 100644 index 0000000000..c001127eb4 --- /dev/null +++ b/code/modules/clothing/glasses/glasses_vr.dm @@ -0,0 +1,58 @@ +/obj/item/clothing/glasses/proc/prescribe(var/mob/user) + prescription = !prescription + + //Look it's really not that fancy. It's not ACTUALLY unique scrip data. + if(prescription) + name = "[initial(name)] (pr)" + user.visible_message("[user] replaces the lenses in \the [src] with a new prescription.") + else + name = "[initial(name)]" + user.visible_message("[user] replaces the prescription lenses in \the [src] with generics.") + + playsound(user,'sound/items/screwdriver.ogg', 50, 1) + +//Prescription kit +/obj/item/device/glasses_kit + name = "prescription glasses kit" + desc = "A kit containing all the needed tools and parts to develop and apply a prescription for someone." + icon = 'icons/obj/device.dmi' + icon_state = "modkit" + var/scrip_loaded = 0 + +/obj/item/device/glasses_kit/afterattack(var/target, var/mob/living/carbon/human/user, var/proximity) + if(!proximity) + return + if(!istype(user)) + return + + //Too difficult + if(target == user) + user << "You can't use this on yourself. Get someone to help you." + return + + //We're applying a prescription + if(istype(target,/obj/item/clothing/glasses)) + var/obj/item/clothing/glasses/G = target + if(!scrip_loaded) + user << "You need to build a prescription from someone first! Use the kit on someone." + return + + if(do_after(user,5 SECONDS)) + G.prescribe(user) + scrip_loaded = 0 + + //We're getting a prescription + else if(ishuman(target)) + var/mob/living/carbon/human/T = target + if(T.glasses || (T.head && T.head.flags_inv & HIDEEYES)) + user << "The person's eyes can't be covered!" + return + + T.visible_message("[user] begins making measurements for prescription lenses for [target].","[user] begins measuring your eyes. Hold still!") + if(do_after(user,5 SECONDS,T)) + T.flash_eyes() + scrip_loaded = 1 + T.visible_message("[user] finishes making prescription lenses for [target].","Gah, that's bright!") + + else + ..() diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm index 6e3728792e..3619700463 100644 --- a/code/modules/clothing/glasses/hud_vr.dm +++ b/code/modules/clothing/glasses/hud_vr.dm @@ -1,50 +1,86 @@ -/obj/item/clothing/glasses/sunglasses/omnihud - name = "AR sunglasses" - desc = "The KHI-63 AR Sunglasses are a design from Kitsuhana Heavy Industries. \ - Not as complete as specialist HUD systems in their standard configuration, but they \ - do combine features from several different existing HUDs." +/obj/item/clothing/glasses/omnihud + name = "a.r. glasses" + desc = "The KHI-62 AR Glasses are a design from Kitsuhana Heavy Industries. These are a cheap export version \ + for Nanotrasen. Probably not as complete as KHI could make them, but more readily available for NT." origin_tech = list(TECH_MAGNET = 3, TECH_BIO = 3) var/obj/item/clothing/glasses/hud/omni/hud = null - - icon = 'icons/vore/custom_items_vr.dmi' - icon_override = 'icons/vore/custom_clothes_vr.dmi' - icon_state = "omniglasses" var/mode = "civ" + icon_state = "glasses" + var/flash_prot = 0 //0 for none, 1 for flash weapon protection, 2 for welder protection New() ..() src.hud = new/obj/item/clothing/glasses/hud/omni(src) return -/obj/item/clothing/glasses/sunglasses/omnihud/cmo - name = "AR-M sunglasses" - desc = "The KHI-63-M AR Sunglasses are a design from Kitsuhana Heavy Industries. \ - These have been upgraded with advanced medical records integration." + proc/flashed() + if(flash_prot && ishuman(loc)) + loc << "Your [src.name] darken to try and protect your eyes!" + + prescribe(var/mob/user) + prescription = !prescription + + //Look it's really not that fancy. It's not ACTUALLY unique scrip data. + if(prescription) + name = "[initial(name)] (pr)" + user.visible_message("[user] uploads new prescription data to \the [src.name].") + else + name = "[initial(name)]" + user.visible_message("[user] deletes the prescription data of \the [src.name].") + + playsound(user,'sound/items/screwdriver.ogg', 50, 1) + +/obj/item/clothing/glasses/omnihud/prescription + name = "AR glasses (pr)" + prescription = 1 + +/obj/item/clothing/glasses/omnihud/med + name = "AR-M glasses" + desc = "The KHI-62-M AR glasses are a design from Kitsuhana Heavy Industries. \ + These have been upgraded with medical records access and virus database integration." mode = "med" -/obj/item/clothing/glasses/sunglasses/omnihud/hos - name = "AR-S sunglasses" - desc = "The KHI-63-S AR Sunglasses are a design from Kitsuhana Heavy Industries. \ - These have been upgraded with advanced security records integration." +/obj/item/clothing/glasses/omnihud/sec + name = "AR-S glasses" + desc = "The KHI-62-S AR glasses are a design from Kitsuhana Heavy Industries. \ + These have been upgraded with security records integration and flash protection." mode = "sec" + flash_prot = 1 //Flash protection. -/obj/item/clothing/glasses/sunglasses/omnihud/best - name = "AR-B sunglasses" - desc = "The KHI-63-B AR Sunglasses are a design from Kitsuhana Heavy Industries. \ - These have been upgraded with advanced medical and security records integration." +/obj/item/clothing/glasses/omnihud/eng + name = "AR-E glasses" + desc = "The KHI-62-E AR glasses are a design from Kitsuhana Heavy Industries. \ + These have been upgraded with advanced electrochromic lenses to protect your eyes during welding." + mode = "civ" + flash_prot = 2 //Welding protection. + +/obj/item/clothing/glasses/omnihud/rnd + name = "AR-R glasses" + desc = "The KHI-62-R AR glasses are a design from Kitsuhana Heavy Industries. \ + These have been ... modified ... to fit into a different frame." + icon = 'icons/obj/clothing/glasses.dmi' + icon_override = null + icon_state = "purple" + mode = "civ" + +/obj/item/clothing/glasses/omnihud/all + name = "AR-B glasses" + desc = "The KHI-62-B AR glasses are a design from Kitsuhana Heavy Industries. \ + These have been upgraded with every feature the lesser models have. Now we're talkin'." mode = "best" + flash_prot = 2 //Welding protection. /obj/item/clothing/glasses/hud/omni name = "internal omni hud" - desc = "You shouldn't see this. This is an internal item for sunglasses." - var/obj/item/clothing/glasses/sunglasses/omnihud/shades = null + desc = "You shouldn't see this. This is an internal item for glasses." + var/obj/item/clothing/glasses/omnihud/shades = null vision_flags = SEE_MOBS see_invisible = SEE_INVISIBLE_NOLIGHTING New() ..() - if(istype(loc,/obj/item/clothing/glasses/sunglasses/omnihud)) + if(istype(loc,/obj/item/clothing/glasses/omnihud)) shades = loc else qdel(src) diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm index 85512ffdcc..1d6d77c5ab 100644 --- a/code/modules/mob/living/carbon/human/examine_vr.dm +++ b/code/modules/mob/living/carbon/human/examine_vr.dm @@ -114,10 +114,10 @@ //For OmniHUD records access for appropriate models /proc/hasHUD_vr(mob/living/carbon/human/H, hudtype) - if(!(istype(H.glasses, /obj/item/clothing/glasses/sunglasses/omnihud))) + if(!(istype(H.glasses, /obj/item/clothing/glasses/omnihud))) return 0 //Not wearing omnis, don't care. - var/obj/item/clothing/glasses/sunglasses/omnihud/omni = H.glasses + var/obj/item/clothing/glasses/omnihud/omni = H.glasses switch(hudtype) if("security") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index c83d3d98b3..b06a95597e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -32,6 +32,11 @@ hud_list[HEALTH_HUD] = new /image/hud_overlay('icons/mob/hud_med.dmi', src, "100") hud_list[STATUS_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudhealthy") + //VOREStation Add - Custom HUDs + hud_list[HEALTH_VR_HUD] = new /image/hud_overlay('icons/mob/hud_med_vr.dmi', src, "100") + hud_list[STATUS_R_HUD] = new /image/hud_overlay('icons/mob/hud_vr.dmi', src, "hudhealthy") + hud_list[BACKUP_HUD] = new /image/hud_overlay('icons/mob/hud_vr.dmi', src, "hudblank") + //VOREStation Add End hud_list[LIFE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudhealthy") hud_list[ID_HUD] = new /image/hud_overlay(using_map.id_hud_icons, src, "hudunknown") hud_list[WANTED_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") @@ -710,6 +715,12 @@ var/obj/item/clothing/glasses/welding/W = src.glasses if(!W.up) number += 2 + //VOREStation Add - Omnihud Handling + if(istype(src.glasses, /obj/item/clothing/glasses/omnihud)) + var/obj/item/clothing/glasses/omnihud/omn = src.glasses + number += omn.flash_prot + omn.flashed() + //VOREStation Add End return number //Used by various things that knock people out by applying blunt trauma to the head. diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index efd0c787a6..aba26a8293 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1334,8 +1334,8 @@ // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl var/obj/item/clothing/glasses/hud/O = G //VOREStation Add - Support for omnihud glasses - if(istype(G, /obj/item/clothing/glasses/sunglasses/omnihud)) - var/obj/item/clothing/glasses/sunglasses/omnihud/S = G + if(istype(G, /obj/item/clothing/glasses/omnihud)) + var/obj/item/clothing/glasses/omnihud/S = G O = S.hud //VOREStation Add End if(istype(G, /obj/item/clothing/glasses/sunglasses/sechud)) @@ -1662,6 +1662,7 @@ else holder.icon_state = "hudsyndicate" hud_list[SPECIALROLE_HUD] = holder + attempt_vr(src,"handle_hud_list_vr",list()) //VOREStation Add - Custom HUDs. hud_updateflag = 0 /mob/living/carbon/human/handle_stunned() diff --git a/code/modules/mob/living/carbon/human/life_vr.dm b/code/modules/mob/living/carbon/human/life_vr.dm index eae5ed7210..2c0e594f7a 100644 --- a/code/modules/mob/living/carbon/human/life_vr.dm +++ b/code/modules/mob/living/carbon/human/life_vr.dm @@ -5,3 +5,33 @@ else if (nutrition <= 50 && stat != 2 && weight > 70 && weight_loss) weight -= metabolism*(0.01*weight_loss) // starvation weight loss + +/mob/living/carbon/human/proc/handle_hud_list_vr() + + //Right-side status hud updates with left side one. + if (BITTEST(hud_updateflag, STATUS_HUD)) + var/image/other_status = hud_list[STATUS_HUD] + var/image/status_r = hud_list[STATUS_R_HUD] + status_r.icon_state = other_status.icon_state + + //Our custom health bar HUD + if (BITTEST(hud_updateflag, HEALTH_HUD)) + var/image/other_health = hud_list[HEALTH_HUD] + var/image/health_us = hud_list[HEALTH_VR_HUD] + health_us.icon_state = other_health.icon_state + + //Backup implant hud status + if (BITTEST(hud_updateflag, BACKUP_HUD)) + var/image/holder = hud_list[BACKUP_HUD] + + holder.icon_state = "hudblank" + + for(var/obj/item/weapon/implant/I in src) + if(I.implanted) + if(istype(I,/obj/item/weapon/implant/backup)) + if(!mind) + holder.icon_state = "hud_backup_nomind" + else if(!(mind.name in transcore.body_scans)) + holder.icon_state = "hud_backup_nobody" + else + holder.icon_state = "hud_backup_norm" \ No newline at end of file diff --git a/code/modules/research/designs_vr.dm b/code/modules/research/designs_vr.dm index 9b1781c2e8..b2776ec826 100644 --- a/code/modules/research/designs_vr.dm +++ b/code/modules/research/designs_vr.dm @@ -30,11 +30,11 @@ sort_string = "TAAAB" /datum/design/item/hud/omni - name = "AR sunglasses" + name = "AR glasses" id = "omnihud" req_tech = list(TECH_MAGNET = 4, TECH_COMBAT = 3, TECH_BIO = 3) materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 1000) - build_path = /obj/item/clothing/glasses/sunglasses/omnihud + build_path = /obj/item/clothing/glasses/omnihud sort_string = "GAAFB" // Resleeving Circuitboards diff --git a/code/modules/resleeving/implant.dm b/code/modules/resleeving/implant.dm index 39d9c76fdc..3c3a6abddd 100644 --- a/code/modules/resleeving/implant.dm +++ b/code/modules/resleeving/implant.dm @@ -42,9 +42,12 @@ last_attempt = world.time var/mob/living/carbon/human/H = loc - //Okay we're in a human with a mind at least - if(istype(H) && H == imp_in && H.mind && H.stat < DEAD) - transcore.m_backup(H.mind) + //We're in a human, at least. + if(istype(H)) + BITSET(H.hud_updateflag, BACKUP_HUD) + //Okay we've got a mind at least + if(H == imp_in && H.mind && H.stat < DEAD) + transcore.m_backup(H.mind) spawn(attempt_delay) backup() diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm index c0ae20b531..df5180baf1 100644 --- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm @@ -168,7 +168,7 @@ new /obj/item/weapon/card/id/centcom/fluff/aronai(src) new /obj/item/fluff/permit/aronai_kadigan(src) new /obj/item/clothing/under/rank/khi/fluff/aronai(src) - new /obj/item/clothing/glasses/sunglasses/omnihud(src) + new /obj/item/clothing/glasses/omnihud/all(src) //Gun and holster new /obj/item/weapon/gun/projectile/khi/pistol(src) new /obj/item/ammo_magazine/c45m/flash(src) diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 20e083255a..eeba443b76 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -785,10 +785,11 @@ starting_accessories = list(/obj/item/clothing/accessory/black) //Kisukegema:Kisuke `the nerd` Gema -/obj/item/clothing/glasses/sunglasses/omnihud/kamina +/obj/item/clothing/glasses/omnihud/kamina name = "Kamina glasses" icon_state = "kamina" desc = "ROW ROW, FIGHT THE POWER." + flash_prot = 1 //Why not. //Kitsuhana Uniforms /obj/item/clothing/under/rank/khi diff --git a/icons/mob/hud_med_vr.dmi b/icons/mob/hud_med_vr.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5fac5f46ef7ca318298bb7aaf8f45092a71d1a3a GIT binary patch literal 613 zcmV-r0-F7aP)004jp0{{R3ySV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ> zRWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5$F(vF46HCHMj0h?*BJ5m4!p=1(YzRRWIN}f( z=_#o>iIqU6sg5Z^xvnXx8Z1l+YB1D6a*!^bbfv7|>gNJZtN`8Pvbm})IKlt`0Paad zK~#90?bzE+!ax{B;d_QL9_D5y= zld}C;U7B^&ON9r%BqBVpUl|M{!UJC`!~Gmx3afkCp9j%Jzw}eX2b0 zz4H6|6&^S%&FAGD9{5pO9Om%A&(hx<9+>BO9JMhJ00000001~?scc^<+t;- z+ZgEdg6rLSzV-`h4{W@~|G~xw0ssI20ML0mgtRT|@Fr_300000NkvXXu0mjfJsJe> literal 0 HcmV?d00001 diff --git a/icons/mob/hud_vr.dmi b/icons/mob/hud_vr.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b96ae9c6de2c3ba2a6f661fa8bee8b42f58dfe14 GIT binary patch literal 995 zcmV<9104K`P)+32zAuj+gATI!B|1H<0BIy__s?IMnE=cH z0RI4)4KPh~c@)6Fz!OPz#m@viKNSD}|F3QURaI30000pY5h5ZYrD*~Hng2vYL}FrM zS65dW8X7JxE-fuBfLs$bH8lkV1sEnL8yg!oHZ}zh4^BucjbRTcIXtIp1fXUDZc7TP zYyrZSNx#wNT0sr>@#ha28T|V9>rQ&B00001bW%=J06^y0W&i*Hv3gWkbVOxyV{&P5 zbZKvH004NLmC-v6!Y~X5;5j)()b5Da%7R*<4)h9@LkzK+N0p|u+@6XKupq+b-}*e* z&c(4jRkbM26~ANX$vbfn`_-DWkyO-k*ljt}NH-mq&_{?kmzf@vG~n8dGex1FTN}=< z0W2={C)5Zg>PHGCV^WwxP$_Og=Tn>vKyLKGrr<`xr5(D){q3b!NmqDJSaQD?#R+U@ z@SDp;Sr@M-KLL;xvb@bk!boh!VfoV&x!9>mo>CfP7 zI-k<3UtreaQ(&Y5Gb(}fD=?oA3V5%;NDHK^fY%uq8$!@Jsmzk7Y~ag0EctX4_VYp__a({#OF9R0^n7s%dZg97<^?pI(%`9lIJ z<@*&_4ObvdJy#&3{A{QNl%M+)NHQwH&=BTnp7;|GBgatqK86g#Fbu;m48yz}-X47X z&vMhUe0NAFJs~#lTQ(ma`RE8Ou#GCPb!>!yqQKp!9To+Iizk8Yqkt+9I|CJ1pq&8{ zKveF%!>|JXhLFBe_=Ub8fs+P2^%yzIH10YVPLK&)BuN6lj{fuW@4fZIl^s6>y6HTm{0nfS$!S&24Rst#2C< z;d!**-+gX0kO1f=csk{Ox%&zYD7--h5d