Files
Aurora.3/code/modules/security levels/security levels.dm
Casper3667andGitHub 0f518d6563 Nuke activation changes (#22989)
The timer on the nuke is increased to be between 10 and 15 min, so that
the Horizon has enough time to react to it. Furthermore, it can only be
deployed in a non-rad shielded area that is on the Horizon and not in
vacuum. Once it is deployed, its area will also be announced.

All of this should prevent an easy attempt to nuke the Horizon, and give
them a chance to fight back.
2026-08-06 09:32:46 +00:00

104 lines
4.1 KiB
Plaintext

GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
//0 = code green
//1 = code yellow
//2 = code blue
//3 = code red
//4 = code delta
//config.alert_desc_blue_downto
/var/datum/announcement/priority/security/security_announcement_sound = new(do_log = FALSE, do_newscast = TRUE, new_sound = sound('sound/ai/announcements/security_level.ogg'))
/var/datum/announcement/priority/security/security_announcement = new(do_log = FALSE, do_newscast = TRUE)
/proc/set_security_level(var/level, var/nuke = FALSE, var/area/A)
switch(level)
if("green")
level = SEC_LEVEL_GREEN
if("blue")
level = SEC_LEVEL_BLUE
if("red")
level = SEC_LEVEL_RED
if("yellow")
level = SEC_LEVEL_YELLOW
if("delta")
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)
switch(level)
if(SEC_LEVEL_GREEN)
security_announcement.Announce("[GLOB.config.alert_desc_green]", "Attention! Security level lowered to green.")
GLOB.security_level = SEC_LEVEL_GREEN
SSnightlight.end_temp_disable()
if(SEC_LEVEL_BLUE)
if(GLOB.security_level < SEC_LEVEL_BLUE)
security_announcement_sound.Announce("[GLOB.config.alert_desc_blue_upto]", "Attention! Security level elevated to blue.")
else
security_announcement.Announce("[GLOB.config.alert_desc_blue_downto]", "Attention! Security level lowered to blue.")
GLOB.security_level = SEC_LEVEL_BLUE
SSnightlight.end_temp_disable()
if(SEC_LEVEL_YELLOW)
security_announcement_sound.Announce("[GLOB.config.alert_desc_yellow_to]", "Attention! Biohazard alert declared!")
GLOB.security_level = SEC_LEVEL_YELLOW
SSnightlight.end_temp_disable()
if(SEC_LEVEL_RED)
if(GLOB.security_level < SEC_LEVEL_RED)
security_announcement_sound.Announce("[GLOB.config.alert_desc_red_upto]", "Attention! Security level elevated to red!", new_sound = 'sound/effects/high_alert.ogg')
SSnightlight.temp_disable()
else
security_announcement.Announce("[GLOB.config.alert_desc_red_downto]", "Attention! Code red!")
GLOB.security_level = SEC_LEVEL_RED
post_display_status("alert", "redalert")
if(SEC_LEVEL_DELTA)
if(!nuke)
security_announcement_sound.Announce("[GLOB.config.alert_desc_delta]", "Attention! Delta security level reached!", new_sound = 'sound/effects/siren.ogg')
else if (A)
security_announcement_sound.Announce("An active nuclear device has been detected in the [get_area_display_name(A)]. 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.", "Attention! Delta security level reached!", new_sound = 'sound/effects/siren.ogg')
else
security_announcement_sound.Announce("An active nuclear device has been detected onboard. 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.", "Attention! Delta security level reached!", new_sound = 'sound/effects/siren.ogg')
GLOB.security_level = SEC_LEVEL_DELTA
SSnightlight.temp_disable()
var/newlevel = get_security_level()
for(var/obj/structure/machinery/power/apc/powercontrol in SSmachinery.processing)
if(isContactLevel(powercontrol.z))
powercontrol.manage_emergency(newlevel)
/proc/get_security_level()
switch(GLOB.security_level)
if(SEC_LEVEL_GREEN)
return "green"
if(SEC_LEVEL_BLUE)
return "blue"
if(SEC_LEVEL_YELLOW)
return "yellow"
if(SEC_LEVEL_RED)
return "red"
if(SEC_LEVEL_DELTA)
return "delta"
/proc/num2seclevel(var/num)
switch(num)
if(SEC_LEVEL_GREEN)
return "green"
if(SEC_LEVEL_BLUE)
return "blue"
if(SEC_LEVEL_YELLOW)
return "yellow"
if(SEC_LEVEL_RED)
return "red"
if(SEC_LEVEL_DELTA)
return "delta"
/proc/seclevel2num(var/seclevel)
switch( lowertext(seclevel) )
if("green")
return SEC_LEVEL_GREEN
if("blue")
return SEC_LEVEL_BLUE
if("yellow")
return SEC_LEVEL_BLUE
if("red")
return SEC_LEVEL_RED
if("delta")
return SEC_LEVEL_DELTA