-
Notifications
You must be signed in to change notification settings - Fork 565
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
4e8cdad
commit 6e263a8
Showing
8 changed files
with
201 additions
and
168 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
#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" | ||
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/W, mob/user as mob) | ||
return src.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(GLOB.lockdown_state == LOCKDOWN_READY && !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)) | ||
|
||
|
||
/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!" | ||
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)." | ||
|
||
switch(GLOB.lockdown_state) | ||
if(LOCKDOWN_READY) | ||
GLOB.lockdown_state = LOCKDOWN_ACTIVE | ||
set_security_level(SEC_LEVEL_RED, TRUE, FALSE) | ||
shipwide_ai_announcement(message, MAIN_AI_SYSTEM, 'sound/effects/klaxon_alarm.ogg') | ||
message_admins(log) | ||
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LOCKDOWN) | ||
if(LOCKDOWN_ACTIVE) | ||
GLOB.lockdown_state = LOCKDOWN_READY | ||
log = "[key_name(user)] lifted research bio lockdown." | ||
if(admin) | ||
log += " (Admin Triggered)." | ||
|
||
set_security_level(SEC_LEVEL_BLUE, TRUE, FALSE) | ||
shipwide_ai_announcement("ATTENTION! \n\nBIOHAZARD CONTAINMENT LOCKDOWN LIFTED.", MAIN_AI_SYSTEM, 'sound/effects/klaxon_alarm_short.ogg') | ||
message_admins(log) | ||
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LIFT) | ||
|
||
#undef LOCKDOWN_READY | ||
#undef LOCKDOWN_ACTIVE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.