diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm index 2549c85a7d7..78881d901ec 100644 --- a/code/game/objects/items/holosign_creator.dm +++ b/code/game/objects/items/holosign_creator.dm @@ -84,6 +84,14 @@ creation_time = 0 max_signs = 3 +/obj/item/holosign_creator/medical + name = "\improper PENLITE barrier projector" + desc = "A holographic projector that creates PENLITE holobarriers. Useful during quarantines since they halt those with malicious diseases." + icon_state = "signmaker_med" + holosign_type = /obj/structure/holosign/barrier/medical + creation_time = 30 + max_signs = 3 + /obj/item/holosign_creator/cyborg name = "Energy Barrier Projector" desc = "A holographic projector that creates fragile energy fields." diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index 5b1151c36f1..c5c8dd3c689 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -97,6 +97,44 @@ if(istype(P, /obj/item/projectile/beam/disabler)) take_damage(5, BRUTE, "melee", 1) //Disablers aren't harmful. +/obj/structure/holosign/barrier/medical + name = "\improper PENLITE holobarrier" + desc = "A holobarrier that uses biometrics to detect human viruses. Denies passing to personnel with easily-detected, malicious viruses. Good for quarantines." + icon_state = "holo_medical" + alpha = 125 //lazy :) + layer = ABOVE_MOB_LAYER + var/force_allaccess = FALSE + var/buzzcd = 0 + +/obj/structure/holosign/barrier/medical/examine(mob/user) + ..() + to_chat(user,"The biometric scanners are [force_allaccess ? "off" : "on"].") + +/obj/structure/holosign/barrier/medical/CanPass(atom/movable/mover, turf/target) + icon_state = "holo_medical" + if(force_allaccess) + return TRUE + if(ishuman(mover)) + var/mob/living/carbon/human/sickboi = mover + var/threat = sickboi.check_virus() + switch(threat) + if(DISEASE_SEVERITY_MINOR, DISEASE_SEVERITY_MEDIUM, DISEASE_SEVERITY_HARMFUL, DISEASE_SEVERITY_DANGEROUS, DISEASE_SEVERITY_BIOHAZARD) + if(buzzcd < world.time) + playsound(get_turf(src),'sound/machines/buzz-sigh.ogg',65,1,4) + buzzcd = (world.time + 60) + icon_state = "holo_medical-deny" + return FALSE + else + return TRUE //nice or benign diseases! + return TRUE + +/obj/structure/holosign/barrier/medical/attack_hand(mob/living/user) + if(CanPass(user) && user.a_intent == INTENT_HELP) + force_allaccess = !force_allaccess + to_chat(user, "You [force_allaccess ? "deactivate" : "activate"] the biometric scanners.") //warning spans because you can make the station sick! + else + return ..() + /obj/structure/holosign/barrier/cyborg/hacked name = "Charged Energy Field" desc = "A powerful energy field that blocks movement. Energy arcs off it." @@ -130,4 +168,4 @@ var/mob/living/M = AM M.electrocute_act(15,"Energy Barrier", safety=1) shockcd = TRUE - addtimer(CALLBACK(src, .proc/cooldown), 5) + addtimer(CALLBACK(src, .proc/cooldown), 5) \ No newline at end of file diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index f51345e7f3d..4eb2589bf36 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -210,7 +210,7 @@ materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - + /datum/design/healthanalyzer_advanced name = "advanced health analyzer" desc = "A hand-held body scanner able to distinguish vital signs of the subject with high accuracy." @@ -220,7 +220,7 @@ materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 2000, MAT_GOLD = 1500) category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - + ///////////////////////////////////////// //////////Cybernetic Implants//////////// ///////////////////////////////////////// @@ -595,3 +595,13 @@ build_path = /obj/item/disk/surgery/necrotic_revival category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/holobarrier_med + name = "PENLITE holobarrier projector" + desc = "PENLITE holobarriers, a device that halts individuals with malicious diseases." + build_type = PROTOLATHE + build_path = /obj/item/holosign_creator/medical + materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease) + id = "holobarrier_med" + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL \ No newline at end of file diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 6ace9230161..e8464035d5a 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 4f43eae72fd..acf3a09274e 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ