diff --git a/code/__DEFINES/dcs/signals/signals_global.dm b/code/__DEFINES/dcs/signals/signals_global.dm index a288ac2c8be7..e33a75aee132 100644 --- a/code/__DEFINES/dcs/signals/signals_global.dm +++ b/code/__DEFINES/dcs/signals/signals_global.dm @@ -59,3 +59,7 @@ /// From #define COMSIG_GLOB_YAUTJA_ARMORY_OPENED "yautja_armory_opened" + +/// From /proc/biohazard_lockdown() +#define COMSIG_GLOB_RESEARCH_LOCKDOWN "research_lockdown_closed" +#define COMSIG_GLOB_RESEARCH_LIFT "research_lockdown_opened" diff --git a/code/game/machinery/biohazard_lockdown.dm b/code/game/machinery/biohazard_lockdown.dm new file mode 100644 index 000000000000..fd6205baa1d9 --- /dev/null +++ b/code/game/machinery/biohazard_lockdown.dm @@ -0,0 +1,109 @@ +#define LOCKDOWN_READY 0 +#define LOCKDOWN_ACTIVE 1 +GLOBAL_VAR_INIT(lockdown_state, LOCKDOWN_READY) + +/obj/structure/machinery/biohazard_lockdown + name = "Emergency Containment Breach" + icon_state = "big_red_button_tablev" + unslashable = TRUE + unacidable = TRUE + COOLDOWN_DECLARE(containment_lockdown) + +/obj/structure/machinery/biohazard_lockdown/ex_act(severity) + return FALSE + +/obj/structure/machinery/biohazard_lockdown/attack_remote(mob/user as mob) + return FALSE + +/obj/structure/machinery/biohazard_lockdown/attack_alien(mob/user as mob) + return FALSE + +/obj/structure/machinery/biohazard_lockdown/attackby(obj/item/attacking_item, mob/user) + return attack_hand(user) + +/obj/structure/machinery/biohazard_lockdown/attack_hand(mob/living/user) + if(isxeno(user)) + return FALSE + if(!allowed(user)) + to_chat(user, SPAN_DANGER("Access Denied")) + flick(initial(icon_state) + "-denied", src) + return FALSE + + if(!COOLDOWN_FINISHED(src, containment_lockdown)) + to_chat(user, SPAN_BOLDWARNING("Biohazard Lockdown procedures are on cooldown! They will be ready in [COOLDOWN_SECONDSLEFT(src, containment_lockdown)] seconds!")) + return FALSE + + add_fingerprint(user) + biohazard_lockdown(user) + COOLDOWN_START(src, containment_lockdown, 5 MINUTES) + +/obj/structure/machinery/door/poddoor/almayer/biohazard + name = "Biohazard Containment Airlock" + density = FALSE + +/obj/structure/machinery/door/poddoor/almayer/biohazard/Initialize() + . = ..() + RegisterSignal(SSdcs, COMSIG_GLOB_RESEARCH_LOCKDOWN, PROC_REF(close)) + RegisterSignal(SSdcs, COMSIG_GLOB_RESEARCH_LIFT, PROC_REF(open)) + +/obj/structure/machinery/door/poddoor/almayer/biohazard/white + icon_state = "w_almayer_pdoor1" + base_icon_state = "w_almayer_pdoor" + +/client/proc/admin_biohazard_alert() + set name = "Containment Breach Alert" + set category = "Admin.Ship" + + if(!admin_holder ||!check_rights(R_EVENT)) + return FALSE + + var/prompt = tgui_alert(src, "Are you sure you want to trigger a containment breach alert? This will force red alert, and lockdown research.", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt != "Yes") + return FALSE + + prompt = tgui_alert(src, "Do you want to use a custom announcement?", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt == "Yes") + var/whattoannounce = tgui_input_text(src, "Please enter announcement text.", "what?") + biohazard_lockdown(usr, whattoannounce, TRUE) + else + biohazard_lockdown(usr, admin = TRUE) + return TRUE + +/proc/biohazard_lockdown(mob/user, message, admin = FALSE) + if(IsAdminAdvancedProcCall()) + return PROC_BLOCKED + + var/log = "[key_name(user)] triggered research bio lockdown!" + var/ares_log = "[user.name] triggered Medical Research Biohazard Containment Lockdown." + if(!message) + message = "ATTENTION! \n\nBIOHAZARD CONTAINMENT BREACH. \n\nRESEARCH DEPARTMENT UNDER LOCKDOWN." + else + log = "[key_name(user)] triggered research bio lockdown! (Using a custom announcement)." + if(admin) + log += " (Admin Triggered)." + ares_log = "[MAIN_AI_SYSTEM] triggered Medical Research Biohazard Containment Lockdown." + + switch(GLOB.lockdown_state) + if(LOCKDOWN_READY) + GLOB.lockdown_state = LOCKDOWN_ACTIVE + set_security_level(SEC_LEVEL_RED, TRUE, FALSE) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LOCKDOWN) + if(LOCKDOWN_ACTIVE) + GLOB.lockdown_state = LOCKDOWN_READY + message = "ATTENTION! \n\nBIOHAZARD CONTAINMENT LOCKDOWN LIFTED." + log = "[key_name(user)] lifted research bio lockdown!" + ares_log = "[user.name] lifted Medical Research Biohazard Containment Lockdown." + if(admin) + log += " (Admin Triggered)." + ares_log = "[MAIN_AI_SYSTEM] lifted Medical Research Biohazard Containment Lockdown." + + set_security_level(SEC_LEVEL_BLUE, TRUE, FALSE) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LIFT) + + shipwide_ai_announcement(message, MAIN_AI_SYSTEM, 'sound/effects/biohazard.ogg') + message_admins(log) + var/datum/ares_link/link = GLOB.ares_link + link.log_ares_security("Containment Lockdown", ares_log) + +#undef LOCKDOWN_READY +#undef LOCKDOWN_ACTIVE diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 368e2766ccfc..5e527e6a5442 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -133,7 +133,8 @@ var/list/admin_verbs_minor_event = list( /client/proc/toggle_shipside_sd, /client/proc/shakeshipverb, /client/proc/adminpanelweapons, - /client/proc/adminpanelgq, + /client/proc/admin_general_quarters, + /client/proc/admin_biohazard_alert, /client/proc/toggle_hardcore_perma ) diff --git a/code/modules/admin/verbs/adminpanelgq.dm b/code/modules/admin/verbs/adminpanelgq.dm index 13b6e329aa69..8ef1ed869661 100644 --- a/code/modules/admin/verbs/adminpanelgq.dm +++ b/code/modules/admin/verbs/adminpanelgq.dm @@ -1,22 +1,24 @@ -/client/proc/adminpanelgq() +/client/proc/admin_general_quarters() set name = "Call General Quarters" set category = "Admin.Ship" if(security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) tgui_alert(src, "Security is already red or above, General Quarters cannot be called.", "Acknowledge!", list("ok."), 10 SECONDS) - else - var/whattoannounce = "ATTENTION! GENERAL QUARTERS. ALL HANDS, MAN YOUR BATTLESTATIONS." - var/prompt = tgui_alert(src, "Do you want to leave the announcement as the default one?", "Choose.", list("Yes", "No"), 20 SECONDS) - if(prompt == "No") - whattoannounce = tgui_input_text(src, "Please enter announcement text.", "what?") - prompt = tgui_alert(src, "Are you sure you want to send General Quarters? This will force red alert.", "Choose.", list("Yes", "No"), 20 SECONDS) - if(prompt == "Yes") - set_security_level(2, no_sound=1, announce=0) - shipwide_ai_announcement(whattoannounce, MAIN_AI_SYSTEM, 'sound/effects/GQfullcall.ogg') - message_admins("[key_name_admin(src)] Sent General Quarters with a custom announcement!") - else - prompt = tgui_alert(src, "Are you sure you want to send General Quarters? This will force red alert.", "Choose.", list("Yes", "No"), 20 SECONDS) - if(prompt == "Yes") - set_security_level(2, no_sound=1, announce=0) - shipwide_ai_announcement(whattoannounce, MAIN_AI_SYSTEM, 'sound/effects/GQfullcall.ogg') - message_admins("[key_name_admin(src)] Sent General Quarters!") + return FALSE + + var/prompt = tgui_alert(src, "Are you sure you want to send General Quarters? This will force red alert.", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt != "Yes") + return FALSE + + var/whattoannounce = "ATTENTION! GENERAL QUARTERS. ALL HANDS, MAN YOUR BATTLESTATIONS." + var/log = "[key_name_admin(src)] Sent General Quarters!" + + prompt = tgui_alert(src, "Do you want to use a custom announcement?", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt == "Yes") + whattoannounce = tgui_input_text(src, "Please enter announcement text.", "what?") + log = "[key_name_admin(src)] Sent General Quarters! (Using a custom announcement)" + + set_security_level(SEC_LEVEL_RED, TRUE, FALSE) + shipwide_ai_announcement(whattoannounce, MAIN_AI_SYSTEM, 'sound/effects/GQfullcall.ogg') + message_admins(log) + return TRUE diff --git a/colonialmarines.dme b/colonialmarines.dme index 42e7880bd313..43a250b7b091 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -741,6 +741,7 @@ #include "code\game\machinery\autolathe_datums.dm" #include "code\game\machinery\Beacon.dm" #include "code\game\machinery\bio-dome_floodlights.dm" +#include "code\game\machinery\biohazard_lockdown.dm" #include "code\game\machinery\bioprinter.dm" #include "code\game\machinery\buttons.dm" #include "code\game\machinery\cell_charger.dm" diff --git a/icons/obj/structures/doors/blastdoors_shutters.dmi b/icons/obj/structures/doors/blastdoors_shutters.dmi index 0c91c00f0f79..c5ec97be49b8 100644 Binary files a/icons/obj/structures/doors/blastdoors_shutters.dmi and b/icons/obj/structures/doors/blastdoors_shutters.dmi differ diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 92b4422aeebe..186aa61b7835 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -3500,10 +3500,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple, /area/almayer/medical/containment/cell) @@ -4496,10 +4494,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 1 @@ -4946,10 +4942,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 8 @@ -5266,10 +5260,7 @@ icon_state = "E"; pixel_x = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -5744,10 +5735,7 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/upper_medical) "aso" = ( @@ -8150,13 +8138,15 @@ }, /area/almayer/medical/medical_science) "ayZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/light{ dir = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -8828,10 +8818,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 4 @@ -10577,10 +10565,8 @@ id = "researchlockdownext_windoor"; name = "\improper Research Windoor Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/plating, /area/almayer/medical/medical_science) @@ -12412,10 +12398,8 @@ id = "researchlockdownext_windoor"; name = "\improper Research Windoor Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -32059,10 +32043,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 4 @@ -33438,7 +33420,6 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_umbilical) "eBO" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/bed, /turf/open/floor/almayer{ icon_state = "mono" @@ -39761,14 +39742,15 @@ /obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ name = "\improper Research Reception Laboratory" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 8; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -40681,10 +40663,7 @@ id = "researchlockdownext_door"; name = "\improper Research Doorway Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -41013,8 +40992,8 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) "hVf" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 }, /turf/open/floor/almayer{ dir = 6; @@ -44642,10 +44621,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 8 @@ -45070,10 +45047,8 @@ icon_state = "N"; pixel_y = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 @@ -45938,10 +45913,7 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/medical_science) "khd" = ( @@ -48546,12 +48518,12 @@ }, /area/almayer/squads/charlie) "lou" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 5 + }, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -49687,10 +49659,7 @@ id = "researchlockdownext"; name = "\improper Research Window Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/medical_science) "lJG" = ( @@ -49916,10 +49885,7 @@ id = "researchlockdownext_door"; name = "\improper Research Doorway Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -50748,11 +50714,8 @@ id = "researchlockdownext_se_2"; name = "\improper Research Window Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/medical_science) "mnf" = ( @@ -52333,12 +52296,12 @@ }, /area/almayer/shipboard/brig/general_equipment) "mWs" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -52547,9 +52510,6 @@ }, /area/almayer/engineering/upper_engineering/port) "naR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/machinery/iv_drip, /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -53553,10 +53513,6 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/main_office) -"nxF" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/closed/wall/almayer/white/reinforced, -/area/almayer/medical/medical_science) "nxK" = ( /obj/structure/sign/safety/high_voltage{ pixel_y = -32 @@ -56296,10 +56252,8 @@ dir = 8; name = "\improper Containment Airlock" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -58490,10 +58444,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 1 @@ -58757,9 +58709,6 @@ }, /area/almayer/living/offices) "pRn" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, /obj/structure/bed, /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -60208,10 +60157,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple, /area/almayer/medical/containment/cell) @@ -60517,10 +60464,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research{ name = "\improper Research Hydroponics Workshop" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -62028,10 +61972,12 @@ }, /area/almayer/medical/lower_medical_medbay) "rmc" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, /turf/open/floor/almayer{ dir = 4; icon_state = "sterile_green_side" @@ -65967,10 +65913,8 @@ icon_state = "N"; pixel_y = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 @@ -69010,12 +68954,12 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/engine_core) "usy" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 9 + }, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -72394,10 +72338,7 @@ }, /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -72504,10 +72445,7 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -73089,16 +73027,14 @@ /obj/item/tool/pen{ pixel_y = -2 }, -/obj/structure/machinery/door_control/brbutton/alt{ - id = "Containment Breach"; - name = "Emergency Containment Breach"; - pixel_x = 8; - pixel_y = 10 - }, /obj/item/reagent_container/dropper{ pixel_x = -1; pixel_y = 9 }, +/obj/structure/machinery/biohazard_lockdown{ + pixel_x = 8; + pixel_y = 10 + }, /obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "sterile_green" @@ -73311,21 +73247,19 @@ /turf/open/floor/almayer, /area/almayer/living/auxiliary_officer_office) "wdo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/machinery/door/airlock/almayer/research/reinforced{ dir = 8; name = "\improper Containment Airlock" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -73365,14 +73299,11 @@ }, /area/almayer/engineering/upper_engineering/starboard) "wei" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -73687,10 +73618,8 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -74816,12 +74745,10 @@ icon_state = "W"; pixel_x = -1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, /turf/open/floor/plating, /area/almayer/medical/containment) "wLi" = ( @@ -74939,10 +74866,8 @@ }, /area/almayer/squads/alpha) "wMO" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -76525,10 +76450,7 @@ icon_state = "E"; pixel_x = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -78591,15 +78513,13 @@ icon_state = "W"; pixel_x = -1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/structure/machinery/door/airlock/almayer/research/reinforced{ dir = 8; name = "\improper Containment Airlock" }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -110583,7 +110503,7 @@ jUM lou eBO pRn -nxF +vOy ayZ aCD hFC diff --git a/sound/effects/biohazard.ogg b/sound/effects/biohazard.ogg new file mode 100644 index 000000000000..b6528f9311ca Binary files /dev/null and b/sound/effects/biohazard.ogg differ