mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-21 04:57:57 +01:00
Security Level Datums (#67949)
This commit is contained in:
@@ -43,7 +43,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/keycard_auth, 26)
|
||||
var/list/data = list()
|
||||
data["waiting"] = waiting
|
||||
data["auth_required"] = event_source ? event_source.event : 0
|
||||
data["red_alert"] = (seclevel2num(get_security_level()) >= SEC_LEVEL_RED) ? 1 : 0
|
||||
data["red_alert"] = (SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED) ? 1 : 0
|
||||
data["emergency_maint"] = GLOB.emergency_access
|
||||
data["bsa_unlock"] = GLOB.bsa_unlock
|
||||
return data
|
||||
@@ -131,7 +131,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/keycard_auth, 26)
|
||||
deadchat_broadcast(" confirmed [event] at [span_name("[A2.name]")].", span_name("[confirmer]"), confirmer, message_type=DEADCHAT_ANNOUNCEMENT)
|
||||
switch(event)
|
||||
if(KEYCARD_RED_ALERT)
|
||||
set_security_level(SEC_LEVEL_RED)
|
||||
SSsecurity_level.set_level(SEC_LEVEL_RED)
|
||||
if(KEYCARD_EMERGENCY_MAINTENANCE_ACCESS)
|
||||
make_maint_all_access()
|
||||
if(KEYCARD_BSA_UNLOCK)
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* Security levels
|
||||
*
|
||||
* These are used by the security level subsystem. Each one of these represents a security level that a player can set.
|
||||
*
|
||||
* Base type is abstract
|
||||
*/
|
||||
|
||||
/datum/security_level
|
||||
/// The name of this security level.
|
||||
var/name = "not set"
|
||||
/// The numerical level of this security level, see defines for more information.
|
||||
var/number_level = -1
|
||||
/// The sound that we will play when this security level is set
|
||||
var/sound
|
||||
/// The looping sound that will be played while the security level is set
|
||||
var/looping_sound
|
||||
/// The looping sound interval
|
||||
var/looping_sound_interval
|
||||
/// The shuttle call time modification of this security level
|
||||
var/shuttle_call_time_mod = 0
|
||||
/// Our announcement when lowering to this level
|
||||
var/lowering_to_announcement
|
||||
/// Our announcement when elevating to this level
|
||||
var/elevating_to_announcemnt
|
||||
/// Our configuration key for lowering to text, if set, will override the default lowering to announcement.
|
||||
var/lowering_to_configuration_key
|
||||
/// Our configuration key for elevating to text, if set, will override the default elevating to announcement.
|
||||
var/elevating_to_configuration_key
|
||||
|
||||
/datum/security_level/New()
|
||||
. = ..()
|
||||
if(lowering_to_configuration_key) // I'm not sure about you, but isn't there an easier way to do this?
|
||||
lowering_to_announcement = global.config.Get(lowering_to_configuration_key)
|
||||
if(elevating_to_configuration_key)
|
||||
elevating_to_announcemnt = global.config.Get(elevating_to_configuration_key)
|
||||
|
||||
/**
|
||||
* GREEN
|
||||
*
|
||||
* No threats
|
||||
*/
|
||||
/datum/security_level/green
|
||||
name = "green"
|
||||
number_level = SEC_LEVEL_GREEN
|
||||
lowering_to_configuration_key = /datum/config_entry/string/alert_green
|
||||
shuttle_call_time_mod = 2
|
||||
|
||||
/**
|
||||
* BLUE
|
||||
*
|
||||
* Caution advised
|
||||
*/
|
||||
/datum/security_level/blue
|
||||
name = "blue"
|
||||
number_level = SEC_LEVEL_BLUE
|
||||
lowering_to_configuration_key = /datum/config_entry/string/alert_blue_downto
|
||||
elevating_to_configuration_key = /datum/config_entry/string/alert_blue_upto
|
||||
shuttle_call_time_mod = 1
|
||||
|
||||
/**
|
||||
* RED
|
||||
*
|
||||
* Hostile threats
|
||||
*/
|
||||
/datum/security_level/red
|
||||
name = "red"
|
||||
number_level = SEC_LEVEL_RED
|
||||
lowering_to_configuration_key = /datum/config_entry/string/alert_red_downto
|
||||
elevating_to_configuration_key = /datum/config_entry/string/alert_red_upto
|
||||
shuttle_call_time_mod = 0.5
|
||||
|
||||
/**
|
||||
* DELTA
|
||||
*
|
||||
* Station destruction is imminent
|
||||
*/
|
||||
/datum/security_level/delta
|
||||
name = "delta"
|
||||
number_level = SEC_LEVEL_DELTA
|
||||
elevating_to_configuration_key = /datum/config_entry/string/alert_delta
|
||||
shuttle_call_time_mod = 0.25
|
||||
@@ -1,82 +0,0 @@
|
||||
/proc/set_security_level(level)
|
||||
switch(level)
|
||||
if("green")
|
||||
level = SEC_LEVEL_GREEN
|
||||
if("blue")
|
||||
level = SEC_LEVEL_BLUE
|
||||
if("red")
|
||||
level = SEC_LEVEL_RED
|
||||
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 != 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(SSsecurity_level.current_level >= SEC_LEVEL_RED)
|
||||
SSshuttle.emergency.modTimer(4)
|
||||
else
|
||||
SSshuttle.emergency.modTimer(2)
|
||||
if(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)
|
||||
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(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(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!")
|
||||
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(SSsecurity_level.current_level == SEC_LEVEL_GREEN)
|
||||
SSshuttle.emergency.modTimer(0.25)
|
||||
else if(SSsecurity_level.current_level == SEC_LEVEL_BLUE)
|
||||
SSshuttle.emergency.modTimer(0.5)
|
||||
|
||||
SSsecurity_level.set_level(level)
|
||||
|
||||
/proc/get_security_level()
|
||||
switch(SSsecurity_level.current_level)
|
||||
if(SEC_LEVEL_GREEN)
|
||||
return "green"
|
||||
if(SEC_LEVEL_BLUE)
|
||||
return "blue"
|
||||
if(SEC_LEVEL_RED)
|
||||
return "red"
|
||||
if(SEC_LEVEL_DELTA)
|
||||
return "delta"
|
||||
|
||||
/proc/num2seclevel(num)
|
||||
switch(num)
|
||||
if(SEC_LEVEL_GREEN)
|
||||
return "green"
|
||||
if(SEC_LEVEL_BLUE)
|
||||
return "blue"
|
||||
if(SEC_LEVEL_RED)
|
||||
return "red"
|
||||
if(SEC_LEVEL_DELTA)
|
||||
return "delta"
|
||||
|
||||
/proc/seclevel2num(seclevel)
|
||||
switch( lowertext(seclevel) )
|
||||
if("green")
|
||||
return SEC_LEVEL_GREEN
|
||||
if("blue")
|
||||
return SEC_LEVEL_BLUE
|
||||
if("red")
|
||||
return SEC_LEVEL_RED
|
||||
if("delta")
|
||||
return SEC_LEVEL_DELTA
|
||||
Reference in New Issue
Block a user