mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-27 15:01:04 +01:00
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.
104 lines
4.1 KiB
Plaintext
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
|