diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 0cc1131df2..7301284ee4 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -98,8 +98,9 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
//Security levels
#define SEC_LEVEL_GREEN 0
#define SEC_LEVEL_BLUE 1
-#define SEC_LEVEL_RED 2
-#define SEC_LEVEL_DELTA 3
+#define SEC_LEVEL_AMBER 2
+#define SEC_LEVEL_RED 3
+#define SEC_LEVEL_DELTA 4
//some arbitrary defines to be used by self-pruning global lists. (see master_controller)
#define PROCESS_KILL 26 //Used to trigger removal from a processing list
diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm
index ab98db1620..f216b025f8 100644
--- a/code/controllers/configuration/entries/game_options.dm
+++ b/code/controllers/configuration/entries/game_options.dm
@@ -162,16 +162,22 @@
config_entry_value = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
/datum/config_entry/string/alert_blue_upto
- config_entry_value = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted."
+ config_entry_value = "The station has received reliable information about potential threats to the station. Security staff may have weapons visible, random searches are permitted."
/datum/config_entry/string/alert_blue_downto
- config_entry_value = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed."
+ config_entry_value = "Significant confirmed threats have been neutralized. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted."
+
+/datum/config_entry/string/alert_amber_upto
+ config_entry_value = "There are significant confirmed threats to the station. Security staff may have weapons unholstered at all times. Random searches are allowed and advised."
+
+/datum/config_entry/string/alert_amber_downto
+ config_entry_value = "The immediate threat has passed. Security is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored."
/datum/config_entry/string/alert_red_upto
- config_entry_value = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised."
+ config_entry_value = "There is an immediate serious threat to the station. Security is now authorized to use lethal force. Additionally, access requirements on some machines have been lifted."
/datum/config_entry/string/alert_red_downto
- config_entry_value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised."
+ config_entry_value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security is still authorized to use lethal force."
/datum/config_entry/string/alert_delta
config_entry_value = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index 32d87425ff..8402a0150e 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -281,7 +281,10 @@ SUBSYSTEM_DEF(shuttle)
if(emergency.timeLeft(1) < emergencyCallTime)
return
if(SEC_LEVEL_BLUE)
- if(emergency.timeLeft(1) < emergencyCallTime * 0.5)
+ if(emergency.timeLeft(1) < emergencyCallTime * 0.6)
+ return
+ if(SEC_LEVEL_AMBER)
+ if(emergency.timeLeft(1) < emergencyCallTime * 0.4)
return
else
if(emergency.timeLeft(1) < emergencyCallTime * 0.25)
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 72944d6afe..3b87c923d7 100755
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -108,8 +108,10 @@
tmp_alertlevel = SEC_LEVEL_GREEN
if(tmp_alertlevel < SEC_LEVEL_GREEN)
tmp_alertlevel = SEC_LEVEL_GREEN
- if(tmp_alertlevel > SEC_LEVEL_BLUE)
- tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this
+ if(tmp_alertlevel == SEC_LEVEL_BLUE)
+ tmp_alertlevel = SEC_LEVEL_BLUE
+ if(tmp_alertlevel > SEC_LEVEL_AMBER)
+ tmp_alertlevel = SEC_LEVEL_AMBER //Cannot engage delta with this
set_security_level(tmp_alertlevel)
if(GLOB.security_level != old_level)
to_chat(usr, "Authorization confirmed. Modifying security level.")
@@ -390,8 +392,10 @@
tmp_alertlevel = SEC_LEVEL_GREEN
if(tmp_alertlevel < SEC_LEVEL_GREEN)
tmp_alertlevel = SEC_LEVEL_GREEN
- if(tmp_alertlevel > SEC_LEVEL_BLUE)
- tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this
+ if(tmp_alertlevel == SEC_LEVEL_BLUE)
+ tmp_alertlevel = SEC_LEVEL_BLUE
+ if(tmp_alertlevel > SEC_LEVEL_AMBER)
+ tmp_alertlevel = SEC_LEVEL_AMBER //Cannot engage delta with this
set_security_level(tmp_alertlevel)
if(GLOB.security_level != old_level)
//Only notify people if an actual change happened
@@ -548,6 +552,7 @@
if(GLOB.security_level == SEC_LEVEL_DELTA)
dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate."
else
+ dat += "Amber
"
dat += "Blue
"
dat += "Green"
if(STATE_CONFIRM_LEVEL)
@@ -690,6 +695,7 @@
if(GLOB.security_level == SEC_LEVEL_DELTA)
dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate."
else
+ dat += "Amber
"
dat += "Blue
"
dat += "Green"
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index b227e6cce1..808c48e002 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -845,7 +845,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_ADMIN))
return
- var/level = input("Select security level to change to","Set Security Level") as null|anything in list("green","blue","red","delta")
+ var/level = input("Select security level to change to","Set Security Level") as null|anything in list("green","blue","amber","red","delta")
if(level)
set_security_level(level)
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 5e3c0aa872..c582d0f8f2 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -508,7 +508,9 @@
if(SEC_LEVEL_GREEN)
set_coefficient = 2
if(SEC_LEVEL_BLUE)
- set_coefficient = 1
+ set_coefficient = 1.2
+ if(SEC_LEVEL_AMBER)
+ set_coefficient = 0.8
else
set_coefficient = 0.5
var/surplus = timer - (SSshuttle.emergencyCallTime * set_coefficient)
diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm
index 7e45854628..70b06e6438 100644
--- a/code/modules/security_levels/security_levels.dm
+++ b/code/modules/security_levels/security_levels.dm
@@ -1,6 +1,7 @@
GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
//SEC_LEVEL_GREEN = code green
//SEC_LEVEL_BLUE = code blue
+//SEC_LEVEL_AMBER = code amber
//SEC_LEVEL_RED = code red
//SEC_LEVEL_DELTA = code delta
@@ -12,6 +13,8 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
level = SEC_LEVEL_GREEN
if("blue")
level = SEC_LEVEL_BLUE
+ if("amber")
+ level = SEC_LEVEL_AMBER
if("red")
level = SEC_LEVEL_RED
if("delta")
@@ -25,8 +28,10 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
if(GLOB.security_level >= SEC_LEVEL_RED)
SSshuttle.emergency.modTimer(4)
+ else if(GLOB.security_level == SEC_LEVEL_AMBER)
+ SSshuttle.emergency.modTimer(2.5)
else
- SSshuttle.emergency.modTimer(2)
+ SSshuttle.emergency.modTimer(1.66)
GLOB.security_level = SEC_LEVEL_GREEN
for(var/obj/machinery/firealarm/FA in GLOB.machines)
if(is_station_level(FA.z))
@@ -35,24 +40,46 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
if(GLOB.security_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)
+ SSshuttle.emergency.modTimer(0.6)
else
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)
+ if(GLOB.security_level >= SEC_LEVEL_RED)
+ SSshuttle.emergency.modTimer(2.4)
+ else
+ SSshuttle.emergency.modTimer(1.5)
GLOB.security_level = SEC_LEVEL_BLUE
sound_to_playing_players('sound/misc/voybluealert.ogg') // Citadel change - Makes alerts play a sound
for(var/obj/machinery/firealarm/FA in GLOB.machines)
if(is_station_level(FA.z))
FA.update_icon()
+ if(SEC_LEVEL_AMBER)
+ if(GLOB.security_level < SEC_LEVEL_AMBER)
+ minor_announce(CONFIG_GET(string/alert_amber_upto), "Attention! Security level elevated to amber:",1)
+ if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
+ if(GLOB.security_level == SEC_LEVEL_GREEN)
+ SSshuttle.emergency.modTimer(0.4)
+ else
+ SSshuttle.emergency.modTimer(0.66)
+ else
+ minor_announce(CONFIG_GET(string/alert_amber_downto), "Attention! Security level lowered to amber:")
+ if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
+ SSshuttle.emergency.modTimer(1.6)
+ GLOB.security_level = SEC_LEVEL_AMBER
+ sound_to_playing_players('sound/effects/alert.ogg') // Citadel change - Makes alerts play a sound
+ for(var/obj/machinery/firealarm/FA in GLOB.machines)
+ if(is_station_level(FA.z))
+ FA.update_icon()
if(SEC_LEVEL_RED)
if(GLOB.security_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)
SSshuttle.emergency.modTimer(0.25)
+ else if(GLOB.security_level == SEC_LEVEL_BLUE)
+ SSshuttle.emergency.modTimer(0.416)
else
- SSshuttle.emergency.modTimer(0.5)
+ SSshuttle.emergency.modTimer(0.625)
else
minor_announce(CONFIG_GET(string/alert_red_downto), "Attention! Code red!")
GLOB.security_level = SEC_LEVEL_RED
@@ -66,10 +93,12 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
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(GLOB.security_level < SEC_LEVEL_BLUE)
SSshuttle.emergency.modTimer(0.25)
else if(GLOB.security_level == SEC_LEVEL_BLUE)
- SSshuttle.emergency.modTimer(0.5)
+ SSshuttle.emergency.modTimer(0.416)
+ else
+ SSshuttle.emergency.modTimer(0.625)
GLOB.security_level = SEC_LEVEL_DELTA
sound_to_playing_players('sound/misc/deltakalaxon.ogg') // Citadel change - Makes alerts play a sound
for(var/obj/machinery/firealarm/FA in GLOB.machines)
@@ -93,6 +122,8 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
return "green"
if(SEC_LEVEL_BLUE)
return "blue"
+ if(SEC_LEVEL_AMBER)
+ return "amber"
if(SEC_LEVEL_RED)
return "red"
if(SEC_LEVEL_DELTA)
@@ -104,6 +135,8 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
return "green"
if(SEC_LEVEL_BLUE)
return "blue"
+ if(SEC_LEVEL_AMBER)
+ return "amber"
if(SEC_LEVEL_RED)
return "red"
if(SEC_LEVEL_DELTA)
@@ -115,6 +148,8 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
return SEC_LEVEL_GREEN
if("blue")
return SEC_LEVEL_BLUE
+ if("amber")
+ return SEC_LEVEL_AMBER
if("red")
return SEC_LEVEL_RED
if("delta")
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index cbc6810143..9af4194049 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -206,7 +206,9 @@
if(SEC_LEVEL_GREEN)
set_coefficient = 2
if(SEC_LEVEL_BLUE)
- set_coefficient = 1
+ set_coefficient = 1.2
+ if(SEC_LEVEL_AMBER)
+ set_coefficient = 0.8
else
set_coefficient = 0.5
var/call_time = SSshuttle.emergencyCallTime * set_coefficient * engine_coeff
diff --git a/config/game_options.txt b/config/game_options.txt
index bfc5ed5edb..6ff9182f0a 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -57,10 +57,12 @@ MULTIPLICATIVE_MOVESPEED /mob/living/simple_animal 1
## ALERT LEVELS ###
ALERT_GREEN All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced.
-ALERT_BLUE_UPTO The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted.
-ALERT_BLUE_DOWNTO The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed.
-ALERT_RED_UPTO There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised. Additionally, access requirements on some doors have been lifted.
-ALERT_RED_DOWNTO The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised.
+ALERT_BLUE_UPTO The station has received reliable information about potential threats to the station. Security staff may have weapons visible, random searches are permitted.
+ALERT_BLUE_DOWNTO Significant confirmed threats have been neutralized. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted.
+ALERT_AMBER_UPTO There are signficant confirmed threats to the station. Security staff may have weapons unholstered at all times. Random searches are allowed and advised.
+ALERT_AMBER_DOWNTO The immediate threat has passed. Security is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored.
+ALERT_RED_UPTO There is an immediate serious threat to the station. Security is now authorized to use lethal force. Additionally, access requirements on some machines have been lifted.
+ALERT_RED_DOWNTO The station's destruction has been averted. There is still however an immediate serious threat to the station. Security is still authorized to use lethal force.
ALERT_DELTA Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill.
diff --git a/icons/obj/monitors.dmi b/icons/obj/monitors.dmi
index f338ffcf3d..9880707010 100644
Binary files a/icons/obj/monitors.dmi and b/icons/obj/monitors.dmi differ