diff --git a/icons/effects/effects_ch.dmi b/icons/effects/effects_ch.dmi index a87d305610..34ac9e5f54 100644 Binary files a/icons/effects/effects_ch.dmi and b/icons/effects/effects_ch.dmi differ diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index 4e0c567658..9241035779 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -18990,6 +18990,7 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/medical/virology) "hQZ" = ( @@ -33236,6 +33237,8 @@ /obj/machinery/light{ dir = 1 }, +/obj/item/weapon/holosign_creator/medical, +/obj/item/weapon/holosign_creator/medical, /turf/simulated/floor/tiled/white, /area/medical/virology) "vYv" = ( diff --git a/maps/southern_cross/southern_cross-2.dmm b/maps/southern_cross/southern_cross-2.dmm index dffbf2353b..4f28835b39 100644 --- a/maps/southern_cross/southern_cross-2.dmm +++ b/maps/southern_cross/southern_cross-2.dmm @@ -11906,6 +11906,8 @@ }, /obj/item/device/denecrotizer/medical, /obj/item/device/sleevemate, +/obj/item/weapon/holosign_creator/medical, +/obj/item/weapon/holosign_creator/medical, /turf/simulated/floor/tiled/white, /area/medical/reception) "aKO" = ( @@ -47464,6 +47466,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 4 }, +/obj/item/weapon/holosign_creator/medical, /turf/simulated/floor/tiled/white, /area/medical/medical_lockerroom) "eKZ" = ( @@ -49789,6 +49792,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 4 }, +/obj/item/weapon/holosign_creator/medical, /turf/simulated/floor/tiled/white, /area/medical/medical_lockerroom) "fXq" = ( @@ -56873,6 +56877,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 4 }, +/obj/item/weapon/holosign_creator/medical, /turf/simulated/floor/tiled/white, /area/medical/medical_lockerroom) "jGd" = ( @@ -76806,6 +76811,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 4 }, +/obj/item/weapon/holosign_creator/medical, /turf/simulated/floor/tiled/white, /area/medical/medical_lockerroom) "vGJ" = ( diff --git a/modular_chomp/code/game/objects/items/holosign_creator.dm b/modular_chomp/code/game/objects/items/holosign_creator.dm index 325efda50a..f0f4c114df 100644 --- a/modular_chomp/code/game/objects/items/holosign_creator.dm +++ b/modular_chomp/code/game/objects/items/holosign_creator.dm @@ -60,4 +60,13 @@ icon_state = "signmaker_engi" holosign_type = /obj/structure/holosign/barrier/combifan creation_time = 0 - max_signs = 3 \ No newline at end of file + max_signs = 3 + +/obj/item/weapon/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 = 'modular_chomp/icons/obj/device.dmi' + icon_state = "signmaker_med" + holosign_type = /obj/structure/holosign/barrier/medical + creation_time = 0 + max_signs = 6 diff --git a/modular_chomp/code/game/objects/structures/holosign.dm b/modular_chomp/code/game/objects/structures/holosign.dm index 3e0d261b49..7d1a741399 100644 --- a/modular_chomp/code/game/objects/structures/holosign.dm +++ b/modular_chomp/code/game/objects/structures/holosign.dm @@ -67,4 +67,38 @@ /obj/structure/holosign/barrier/combifan/Initialize(mapload) .=..() - update_nearby_tiles() \ No newline at end of file + update_nearby_tiles() + +/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 + var/buzzed = 0 + +/obj/structure/holosign/barrier/medical/CanPass(atom/movable/mover, border_dir) + . = ..() + if(mover.has_buckled_mobs()) + for(var/mob/living/L as anything in buckled_mobs) + if(ishuman(L)) + if(CheckHuman(L)) + return FALSE + if(ishuman(mover)) + return CheckHuman(mover) + return TRUE + +/obj/structure/holosign/barrier/medical/Bumped(atom/movable/AM) + . = ..() + if(ishuman(AM) && !CheckHuman(AM)) + if(buzzed < world.time) + playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 50, 1) + buzzed = (world.time + 60) + + icon_state = "holo_medical-deny" + sleep(10 SECONDS) + icon_state = "holo_medical" + +/obj/structure/holosign/barrier/medical/proc/CheckHuman(mob/living/carbon/human/H) + if(isemptylist(H.virus2) && !istype(H.species, /datum/species/xenochimera)) + return TRUE + return FALSE diff --git a/modular_chomp/icons/obj/device.dmi b/modular_chomp/icons/obj/device.dmi new file mode 100644 index 0000000000..08d8e805fd Binary files /dev/null and b/modular_chomp/icons/obj/device.dmi differ