[MIRROR] Security Level subsystem (#4809)

* Security Level subsystem

* aaa

Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
This commit is contained in:
SkyratBot
2021-04-11 00:11:52 +01:00
committed by GitHub
co-authored by Arkatos1 Gandalf
parent 48f9f10597
commit 187119d985
17 changed files with 113 additions and 85 deletions
+3
View File
@@ -40,6 +40,9 @@
///from SSsun when the sun changes position : (azimuth)
#define COMSIG_SUN_MOVED "sun_moved"
///from SSsecurity_level when the security level changes : (new_level)
#define COMSIG_SECURITY_LEVEL_CHANGED "security_level_changed"
//////////////////////////////////////////////////////////////////
// /datum signals
+1 -1
View File
@@ -27,7 +27,7 @@ SUBSYSTEM_DEF(nightshift)
priority_announce(message, sound='sound/misc/notice2.ogg', sender_override="Automated Lighting System Announcement")
/datum/controller/subsystem/nightshift/proc/check_nightshift()
var/emergency = GLOB.security_level >= SEC_LEVEL_RED
var/emergency = SSsecurity_level.current_level >= SEC_LEVEL_RED
var/announcing = TRUE
var/time = station_time()
var/night_time = (time < nightshift_end_time) || (time > nightshift_start_time)
@@ -0,0 +1,17 @@
SUBSYSTEM_DEF(security_level)
name = "Security Level"
flags = SS_NO_FIRE
/// Currently set security level
var/current_level = SEC_LEVEL_GREEN
/**
* Sets a new security level as our current level
*
* Arguments:
* * new_level The new security level that will become our current level
*/
/datum/controller/subsystem/security_level/proc/set_level(new_level)
SSsecurity_level.current_level = new_level
SEND_SIGNAL(src, COMSIG_SECURITY_LEVEL_CHANGED, new_level)
SSnightshift.check_nightshift()
SSblackbox.record_feedback("tally", "security_level_changes", 1, get_security_level())
+1 -1
View File
@@ -291,7 +291,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
print_command_report(., "Central Command Status Summary", announce=FALSE)
priority_announce("A summary has been copied and printed to all communications consoles.", "Security level elevated.", ANNOUNCER_INTERCEPT)
if(GLOB.security_level < SEC_LEVEL_BLUE)
if(SSsecurity_level.current_level < SEC_LEVEL_BLUE)
set_security_level(SEC_LEVEL_BLUE)
// Yes, this is copy pasted from game_mode
+1 -1
View File
@@ -327,7 +327,7 @@
print_command_report(intercepttext, "Central Command Status Summary", announce=FALSE)
priority_announce("A summary has been copied and printed to all communications consoles.", "Enemy communication intercepted. Security level elevated.", ANNOUNCER_INTERCEPT)
if(GLOB.security_level < SEC_LEVEL_BLUE)
if(SSsecurity_level.current_level < SEC_LEVEL_BLUE)
set_security_level(SEC_LEVEL_BLUE)
/*
@@ -141,7 +141,7 @@
//if (new_sec_level != SEC_LEVEL_GREEN && new_sec_level != SEC_LEVEL_BLUE) - ORIGINAL
if (new_sec_level < SEC_LEVEL_GREEN || new_sec_level > SEC_LEVEL_AMBER) //SKYRAT EDIT CHANGE - ALERTS
return
if (GLOB.security_level == new_sec_level)
if (SSsecurity_level.current_level == new_sec_level)
return
set_security_level(new_sec_level)
+2 -2
View File
@@ -37,7 +37,7 @@
. = ..()
if(defib)
. += "<span class='notice'>There is a defib unit hooked up. Alt-click to remove it.</span>"
if(GLOB.security_level >= SEC_LEVEL_RED)
if(SSsecurity_level.current_level >= SEC_LEVEL_RED)
. += "<span class='notice'>Due to a security situation, its locking clamps can be toggled by swiping any ID.</span>"
else
. += "<span class='notice'>Its locking clamps can be [clamps_locked ? "dis" : ""]engaged by swiping an ID with access.</span>"
@@ -102,7 +102,7 @@
return
var/obj/item/card/id = I.GetID()
if(id)
if(check_access(id) || GLOB.security_level >= SEC_LEVEL_RED) //anyone can toggle the clamps in red alert!
if(check_access(id) || SSsecurity_level.current_level >= SEC_LEVEL_RED) //anyone can toggle the clamps in red alert!
if(!defib)
to_chat(user, "<span class='warning'>You can't engage the clamps on a defibrillator that isn't there.</span>")
return
+20 -2
View File
@@ -47,7 +47,7 @@
/obj/machinery/door/examine(mob/user)
. = ..()
if(red_alert_access)
if(GLOB.security_level >= SEC_LEVEL_RED)
if(SSsecurity_level.current_level >= SEC_LEVEL_RED)
. += "<span class='notice'>Due to a security threat, its access requirements have been lifted!</span>"
else
. += "<span class='notice'>In the event of a red alert, its access requirements will automatically lift.</span>"
@@ -57,7 +57,7 @@
. += "<span class='notice'>It has labels indicating that it has an emergency mechanism to open it with <b>just your hands</b> if there's no power.</span>"
/obj/machinery/door/check_access_list(list/access_list)
if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED)
if(red_alert_access && SSsecurity_level.current_level >= SEC_LEVEL_RED)
return TRUE
return ..()
@@ -77,6 +77,7 @@
//doors only block while dense though so we have to use the proc
real_explosion_block = explosion_block
explosion_block = EXPLOSION_BLOCK_PROC
RegisterSignal(SSsecurity_level, COMSIG_SECURITY_LEVEL_CHANGED, .proc/check_security_level)
/obj/machinery/door/proc/set_init_door_layer()
if(density)
@@ -93,6 +94,23 @@
air_update_turf(TRUE, FALSE)
return ..()
/**
* Signal handler for checking if we notify our surrounding that access requirements are lifted accordingly to a newly set security level
*
* Arguments:
* * source The datum source of the signal
* * new_level The new security level that is in effect
*/
/obj/machinery/door/proc/check_security_level(datum/source, new_level)
SIGNAL_HANDLER
if(new_level <= SEC_LEVEL_BLUE)
return
if(!red_alert_access)
return
audible_message("<span class='notice'>[src] whirr[p_s()] as [p_they()] automatically lift[p_s()] access requirements!</span>")
playsound(src, 'sound/machines/boltsup.ogg', 50, TRUE)
/obj/machinery/door/proc/try_safety_unlock(mob/user)
if(safety_mode && !hasPower() && density)
to_chat(user, "<span class='notice'>You begin unlocking the airlock safety mechanism...</span>")
+17 -3
View File
@@ -51,6 +51,7 @@
update_appearance()
myarea = get_area(src)
LAZYADD(myarea.firealarms, src)
RegisterSignal(SSsecurity_level, COMSIG_SECURITY_LEVEL_CHANGED, .proc/check_security_level)
/obj/machinery/firealarm/ComponentInitialize()
. = ..()
@@ -78,9 +79,9 @@
. += "fire_overlay"
if(is_station_level(z))
. += "fire_[GLOB.security_level]"
. += mutable_appearance(icon, "fire_[GLOB.security_level]", layer, plane)
. += mutable_appearance(icon, "fire_[GLOB.security_level]", layer, EMISSIVE_PLANE)
. += "fire_[SSsecurity_level.current_level]"
. += mutable_appearance(icon, "fire_[SSsecurity_level.current_level]", layer, plane)
. += mutable_appearance(icon, "fire_[SSsecurity_level.current_level]", layer, EMISSIVE_PLANE)
else
. += "fire_[SEC_LEVEL_GREEN]"
. += mutable_appearance(icon, "fire_[SEC_LEVEL_GREEN]", layer, plane)
@@ -145,6 +146,19 @@
myarea.triggered_firealarms -= 1
update_appearance()
/**
* Signal handler for checking if we should update fire alarm appearance accordingly to a newly set security level
*
* Arguments:
* * source The datum source of the signal
* * new_level The new security level that is in effect
*/
/obj/machinery/firealarm/proc/check_security_level(datum/source, new_level)
SIGNAL_HANDLER
if(is_station_level(z))
update_appearance()
/obj/machinery/firealarm/proc/alarm(mob/user)
if(!is_operational || !COOLDOWN_FINISHED(src, last_alarm))
return
+10 -39
View File
@@ -1,4 +1,3 @@
GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
//SEC_LEVEL_GREEN = code green
//SEC_LEVEL_BLUE = code blue
//SEC_LEVEL_RED = code red
@@ -20,21 +19,17 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
level = SEC_LEVEL_DELTA
//Will not be announced if you try to set to the same level as it already is
if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != GLOB.security_level)
if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != SSsecurity_level.current_level)
switch(level)
if(SEC_LEVEL_GREEN)
minor_announce(CONFIG_GET(string/alert_green), "Attention! Security level lowered to green:")
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
if(GLOB.security_level >= SEC_LEVEL_RED)
if(SSsecurity_level.current_level >= SEC_LEVEL_RED)
SSshuttle.emergency.modTimer(4)
else
SSshuttle.emergency.modTimer(2)
GLOB.security_level = SEC_LEVEL_GREEN
for(var/obj/machinery/firealarm/FA in GLOB.machines)
if(is_station_level(FA.z))
FA.update_appearance()
if(SEC_LEVEL_BLUE)
if(GLOB.security_level < SEC_LEVEL_BLUE)
if(SSsecurity_level.current_level < SEC_LEVEL_BLUE)
minor_announce(CONFIG_GET(string/alert_blue_upto), "Attention! Security level elevated to blue:",1)
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
SSshuttle.emergency.modTimer(0.5)
@@ -42,52 +37,28 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
minor_announce(CONFIG_GET(string/alert_blue_downto), "Attention! Security level lowered to blue:")
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
SSshuttle.emergency.modTimer(2)
GLOB.security_level = SEC_LEVEL_BLUE
for(var/obj/machinery/firealarm/FA in GLOB.machines)
if(is_station_level(FA.z))
FA.update_appearance()
if(SEC_LEVEL_RED)
if(GLOB.security_level < SEC_LEVEL_RED)
if(SSsecurity_level.current_level < SEC_LEVEL_RED)
minor_announce(CONFIG_GET(string/alert_red_upto), "Attention! Code red!",1)
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
if(GLOB.security_level == SEC_LEVEL_GREEN)
if(SSsecurity_level.current_level == SEC_LEVEL_GREEN)
SSshuttle.emergency.modTimer(0.25)
else
SSshuttle.emergency.modTimer(0.5)
else
minor_announce(CONFIG_GET(string/alert_red_downto), "Attention! Code red!")
GLOB.security_level = SEC_LEVEL_RED
for(var/obj/machinery/firealarm/FA in GLOB.machines)
if(is_station_level(FA.z))
FA.update_appearance()
for(var/obj/machinery/computer/shuttle/pod/pod in GLOB.machines)
pod.locked = FALSE
if(SEC_LEVEL_DELTA)
minor_announce(CONFIG_GET(string/alert_delta), "Attention! Delta security level reached!",1)
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
if(GLOB.security_level == SEC_LEVEL_GREEN)
if(SSsecurity_level.current_level == SEC_LEVEL_GREEN)
SSshuttle.emergency.modTimer(0.25)
else if(GLOB.security_level == SEC_LEVEL_BLUE)
else if(SSsecurity_level.current_level == SEC_LEVEL_BLUE)
SSshuttle.emergency.modTimer(0.5)
GLOB.security_level = SEC_LEVEL_DELTA
for(var/obj/machinery/firealarm/FA in GLOB.machines)
if(is_station_level(FA.z))
FA.update_appearance()
for(var/obj/machinery/computer/shuttle/pod/pod in GLOB.machines)
pod.locked = FALSE
if(level >= SEC_LEVEL_RED)
for(var/obj/machinery/door/D in GLOB.machines)
if(D.red_alert_access)
D.visible_message("<span class='notice'>[D] whirrs as it automatically lifts access requirements!</span>")
playsound(D, 'sound/machines/boltsup.ogg', 50, TRUE)
SSblackbox.record_feedback("tally", "security_level_changes", 1, get_security_level())
SSnightshift.check_nightshift()
else
return
SSsecurity_level.set_level(level)
/proc/get_security_level()
switch(GLOB.security_level)
switch(SSsecurity_level.current_level)
if(SEC_LEVEL_GREEN)
return "green"
if(SEC_LEVEL_BLUE)
+20 -2
View File
@@ -575,7 +575,7 @@
var/obj/machinery/computer/shuttle/C = getControlConsole()
if(!istype(C, /obj/machinery/computer/shuttle/pod))
return ..()
if(GLOB.security_level >= SEC_LEVEL_RED || (C && (C.obj_flags & EMAGGED)))
if(SSsecurity_level.current_level >= SEC_LEVEL_RED || (C && (C.obj_flags & EMAGGED)))
if(launch_status == UNLAUNCHED)
launch_status = EARLY_LAUNCHED
return ..()
@@ -595,6 +595,10 @@
light_color = LIGHT_COLOR_BLUE
density = FALSE
/obj/machinery/computer/shuttle/pod/Initialize(mapload)
. = ..()
RegisterSignal(SSsecurity_level, COMSIG_SECURITY_LEVEL_CHANGED, .proc/check_lock)
/obj/machinery/computer/shuttle/pod/ComponentInitialize()
. = ..()
AddElement(/datum/element/update_icon_blocker)
@@ -610,6 +614,20 @@
. = ..()
possible_destinations += ";[port.id]_lavaland"
/**
* Signal handler for checking if we should lock or unlock escape pods accordingly to a newly set security level
*
* Arguments:
* * source The datum source of the signal
* * new_level The new security level that is in effect
*/
/obj/machinery/computer/shuttle/pod/proc/check_lock(datum/source, new_level)
SIGNAL_HANDLER
if(obj_flags & EMAGGED)
return
locked = new_level < SEC_LEVEL_RED
/obj/docking_port/stationary/random
name = "escape pod"
id = "pod"
@@ -705,7 +723,7 @@
/obj/item/storage/pod/can_interact(mob/user)
if(!..())
return FALSE
if(GLOB.security_level >= SEC_LEVEL_RED || unlocked)
if(SSsecurity_level.current_level >= SEC_LEVEL_RED || unlocked)
return TRUE
to_chat(user, "The storage unit will only unlock during a Red or Delta security alert.")
@@ -432,7 +432,7 @@
/mob/dead/new_player/proc/LateChoices()
var/list/dat = list("<div class='notice'>Round Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]</div>")
dat += "<div class='notice'>Alert Level: [capitalize(num2seclevel(GLOB.security_level))]</div>"
dat += "<div class='notice'>Alert Level: [capitalize(num2seclevel(SSsecurity_level.current_level))]</div>"
if(SSshuttle.emergency)
switch(SSshuttle.emergency.mode)
if(SHUTTLE_ESCAPE)
@@ -1,6 +1,6 @@
/obj/machinery/firealarm/examine(mob/user)
. = ..()
switch(GLOB.security_level)
switch(SSsecurity_level.current_level)
if(SEC_LEVEL_GREEN)
. += "The current alert level is green."
if(SEC_LEVEL_BLUE)
@@ -9,10 +9,10 @@ GLOBAL_VAR_INIT(sec_level_cooldown, FALSE)
/proc/set_security_level(level)
level = isnum(level) ? level : seclevel2num(level)
var modTimer = get_mod_timer(level)
var oldModTimer = get_mod_timer(GLOB.security_level)
var oldModTimer = get_mod_timer(SSsecurity_level.current_level)
//Will not be announced if you try to set to the same level as it already is
if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_GAMMA && level != GLOB.security_level)
if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_GAMMA && level != SSsecurity_level.current_level)
if(GLOB.sec_level_cooldown)
message_admins("Attempt made to change security level while in cooldown!")
return "COOLDOWN"
@@ -23,27 +23,13 @@ GLOBAL_VAR_INIT(sec_level_cooldown, FALSE)
deltimer(GLOB.gamma_timer_id)
GLOB.gamma_timer_id = null
announce_security_level(level) //IF YOU ARE ADDING A NEW SECURITY LEVEL, UPDATE THIS PROC
GLOB.security_level = level
for(var/obj/machinery/firealarm/FA in GLOB.machines)
if(is_station_level(FA.z))
FA.update_icon()
if(level >= SEC_LEVEL_RED)
for(var/obj/machinery/computer/shuttle/pod/pod in GLOB.machines)
pod.locked = FALSE
for(var/obj/machinery/door/D in GLOB.machines)
if(D.red_alert_access)
D.visible_message("<span class='notice'>[D] whirrs as it automatically lifts access requirements!</span>")
playsound(D, 'sound/machines/boltsup.ogg', 50, TRUE)
SSsecurity_level.set_level(level)
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
oldModTimer = 1/oldModTimer
SSshuttle.emergency.modTimer(oldModTimer)
SSshuttle.emergency.modTimer(modTimer)
SSblackbox.record_feedback("tally", "security_level_changes", 1, get_security_level())
SSnightshift.check_nightshift()
GLOB.sec_level_cooldown = TRUE
addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_sec_level_cooldown), SET_SEC_LEVEL_COOLDOWN)
else
return
/proc/reset_sec_level_cooldown()
GLOB.sec_level_cooldown = FALSE
@@ -68,7 +54,7 @@ GLOBAL_VAR_INIT(sec_level_cooldown, FALSE)
return 0.4
/proc/get_security_level()
switch(GLOB.security_level)
switch(SSsecurity_level.current_level)
if(SEC_LEVEL_GREEN)
return "green"
if(SEC_LEVEL_BLUE)
@@ -129,49 +115,49 @@ GLOBAL_VAR_INIT(sec_level_cooldown, FALSE)
if(SEC_LEVEL_GREEN)
minor_announce(CONFIG_GET(string/alert_green), "Attention! Alert level lowered to green:", sound = 'modular_skyrat/modules/alerts/sound/misc/downtoGREEN.ogg')
if(SEC_LEVEL_BLUE)
if(GLOB.security_level < SEC_LEVEL_BLUE)
if(SSsecurity_level.current_level < SEC_LEVEL_BLUE)
minor_announce(CONFIG_GET(string/alert_blue_upto), "Attention! Alert level elevated to blue:", sound = 'modular_skyrat/modules/alerts/sound/misc/blue.ogg')
else
minor_announce(CONFIG_GET(string/alert_blue_downto), "Attention! Alert level lowered to blue:", sound = 'modular_skyrat/modules/alerts/sound/misc/downtoBLUE.ogg')
if(SEC_LEVEL_VIOLET)
if(GLOB.security_level < SEC_LEVEL_VIOLET)
if(SSsecurity_level.current_level < SEC_LEVEL_VIOLET)
minor_announce(CONFIG_GET(string/alert_violet_upto), "Attention! Alert level set to violet:", TRUE, sound = 'modular_skyrat/modules/alerts/sound/misc/voyalert.ogg')
else
minor_announce(CONFIG_GET(string/alert_violet_downto), "Attention! Alert level set to violet:", sound = 'modular_skyrat/modules/alerts/sound/misc/voyalert.ogg')
if(SEC_LEVEL_ORANGE)
if(GLOB.security_level < SEC_LEVEL_ORANGE)
if(SSsecurity_level.current_level < SEC_LEVEL_ORANGE)
minor_announce(CONFIG_GET(string/alert_orange_upto), "Attention! Alert level set to orange:", TRUE, sound = 'modular_skyrat/modules/alerts/sound/misc/voyalert.ogg')
else
minor_announce(CONFIG_GET(string/alert_orange_downto), "Attention! Alert level set to orange:", sound = 'modular_skyrat/modules/alerts/sound/misc/voyalert.ogg')
if(SEC_LEVEL_AMBER)
if(GLOB.security_level < SEC_LEVEL_AMBER)
if(SSsecurity_level.current_level < SEC_LEVEL_AMBER)
minor_announce(CONFIG_GET(string/alert_amber_upto), "Attention! Alert level set to amber:", TRUE, sound = 'modular_skyrat/modules/alerts/sound/misc/voyalert.ogg')
else
minor_announce(CONFIG_GET(string/alert_amber_downto), "Attention! Alert level set to amber:", sound = 'modular_skyrat/modules/alerts/sound/misc/voyalert.ogg')
if(SEC_LEVEL_RED)
if(GLOB.security_level < SEC_LEVEL_RED)
if(SSsecurity_level.current_level < SEC_LEVEL_RED)
minor_announce(CONFIG_GET(string/alert_red_upto), "Attention! Code red!", TRUE, sound = 'modular_skyrat/modules/alerts/sound/misc/red.ogg')
else
minor_announce(CONFIG_GET(string/alert_red_downto), "Attention! Code red!", sound = 'modular_skyrat/modules/alerts/sound/misc/downtoRED.ogg')
if(SEC_LEVEL_DELTA)
if(GLOB.security_level < SEC_LEVEL_DELTA)
if(SSsecurity_level.current_level < SEC_LEVEL_DELTA)
minor_announce(CONFIG_GET(string/alert_delta_upto), "Attention! Delta Alert level reached!", TRUE, sound = 'modular_skyrat/modules/alerts/sound/misc/delta.ogg')
else
minor_announce(CONFIG_GET(string/alert_delta_downto), "Attention! Delta Alert level reached!", TRUE, sound = 'modular_skyrat/modules/alerts/sound/misc/delta.ogg')
GLOB.security_level = level //Snowflake shit to make sue they actually loop.
SSsecurity_level.current_level = level //Snowflake shit to make sue they actually loop.
delta_alarm()
if(SEC_LEVEL_GAMMA)
minor_announce(CONFIG_GET(string/alert_gamma), "Attention! ZK-Class Reality Failure Scenario Detected, GAMMA Alert Level Reached!", TRUE, sound = 'modular_skyrat/modules/alerts/sound/misc/gamma_alert.ogg')
GLOB.security_level = level
SSsecurity_level.current_level = level
gamma_loop()
/proc/delta_alarm() //Delta alarm sounds every so often
if(GLOB.security_level == SEC_LEVEL_DELTA)
if(SSsecurity_level.current_level == SEC_LEVEL_DELTA)
alert_sound_to_playing('modular_skyrat/modules/alerts/sound/alarm_delta.ogg')
GLOB.delta_timer_id = addtimer(CALLBACK(GLOBAL_PROC, .proc/delta_alarm), DELTA_LOOP_LENGTH, TIMER_UNIQUE | TIMER_STOPPABLE)
/proc/gamma_loop() //Loops gamma sound
if(GLOB.security_level == SEC_LEVEL_GAMMA)
if(SSsecurity_level.current_level == SEC_LEVEL_GAMMA)
alert_sound_to_playing('modular_skyrat/modules/alerts/sound/misc/gamma_alert.ogg')
GLOB.gamma_timer_id = addtimer(CALLBACK(GLOBAL_PROC, .proc/gamma_loop), GAMMA_LOOP_LENGTH, TIMER_UNIQUE | TIMER_STOPPABLE)
@@ -4,7 +4,7 @@
/datum/controller/subsystem/shuttle/proc/autoEnd()
if(EMERGENCY_IDLE_OR_RECALLED)
SSshuttle.emergency.request(silent = TRUE)
priority_announce("The shift has come to an end and the shuttle called. [GLOB.security_level == SEC_LEVEL_RED ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [emergency.timeLeft(600)] minutes.", null, ANNOUNCER_SHUTTLECALLED, "Priority")
priority_announce("The shift has come to an end and the shuttle called. [SSsecurity_level.current_level == SEC_LEVEL_RED ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [emergency.timeLeft(600)] minutes.", null, ANNOUNCER_SHUTTLECALLED, "Priority")
log_game("Round end vote passed. Shuttle has been auto-called.")
message_admins("Round end vote passed. Shuttle has been auto-called.")
emergencyNoRecall = TRUE
@@ -4,7 +4,7 @@
/mob/camera/blob/proc/announce_blob_distress_signal()
has_announced_emergency = TRUE
if(GLOB.security_level != SEC_LEVEL_RED) // Why the hell is it not red yet?!
if(SSsecurity_level.current_level != SEC_LEVEL_RED) // Why the hell is it not red yet?!
set_security_level("red")
priority_announce("Biohazard lifeform aboard [GLOB.station_name] is rapidly approaching critical mass. Off-station Response Teams are requested to aid immediately.", "Automated Biohazard Distress Signal", sender_override = "[GLOB.station_name]")
+1
View File
@@ -369,6 +369,7 @@
#include "code\controllers\subsystem\research.dm"
#include "code\controllers\subsystem\restaurant.dm"
#include "code\controllers\subsystem\runechat.dm"
#include "code\controllers\subsystem\security_level.dm"
#include "code\controllers\subsystem\server_maint.dm"
#include "code\controllers\subsystem\shuttle.dm"
#include "code\controllers\subsystem\skills.dm"