Skip to content

Commit

Permalink
Merge branch 'project/ares/lockdown' into project/ares/tm_holder
Browse files Browse the repository at this point in the history
  • Loading branch information
realforest2001 committed Apr 20, 2024
2 parents df383f0 + b426996 commit 9da1df0
Show file tree
Hide file tree
Showing 10 changed files with 9,521 additions and 9,364 deletions.
4 changes: 4 additions & 0 deletions code/__DEFINES/ARES.dm
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,7 @@

/// Time until someone can respawn as Working Joe
#define JOE_JOIN_DEAD_TIME (15 MINUTES)

/// Lockdown defines
#define ARES_LOCKDOWN_READY 0
#define ARES_LOCKDOWN_ACTIVE 1
3 changes: 3 additions & 0 deletions code/__DEFINES/dcs/signals/signals_global.dm
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@
/// From /proc/biohazard_lockdown()
#define COMSIG_GLOB_RESEARCH_LOCKDOWN "!research_lockdown_closed"
#define COMSIG_GLOB_RESEARCH_LIFT "!research_lockdown_opened"
/// From /proc/aicore_lockdown()
#define COMSIG_GLOB_AICORE_LOCKDOWN "!aicore_lockdown_closed"
#define COMSIG_GLOB_AICORE_LIFT "!aicore_lockdown_opened"

/// From /obj/structure/machinery/power/reactor/proc/set_overloading() : (set_overloading)
#define COMSIG_GLOB_GENERATOR_SET_OVERLOADING "!generator_set_overloading"
Expand Down
4 changes: 4 additions & 0 deletions code/game/machinery/ARES/ARES_procs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,14 @@ GLOBAL_LIST_INIT(maintenance_categories, list(
/// Is nuke request usable or not?
var/nuke_available = TRUE

/// Status of the AI Core Lockdown
var/ai_lockdown_state = ARES_LOCKDOWN_READY

COOLDOWN_DECLARE(ares_distress_cooldown)
COOLDOWN_DECLARE(ares_nuclear_cooldown)
COOLDOWN_DECLARE(ares_quarters_cooldown)
COOLDOWN_DECLARE(ares_bioscan_cooldown)
COOLDOWN_DECLARE(aicore_lockdown)

// ------ ARES Logging Procs ------ //
/proc/ares_is_active()
Expand Down
113 changes: 113 additions & 0 deletions code/game/machinery/aicore_lockdown.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
/obj/structure/machinery/aicore_lockdown
name = "AI Core Lockdown"
icon_state = "big_red_button_tablev"
unslashable = TRUE
unacidable = TRUE

/obj/structure/machinery/aicore_lockdown/ex_act(severity)
return FALSE

/obj/structure/machinery/aicore_lockdown/attack_remote(mob/user as mob)
return FALSE

/obj/structure/machinery/aicore_lockdown/attack_alien(mob/user as mob)
return FALSE

/obj/structure/machinery/aicore_lockdown/attackby(obj/item/attacking_item, mob/user)
return attack_hand(user)

/obj/structure/machinery/aicore_lockdown/attack_hand(mob/living/user)
if(isxeno(user))
return FALSE
if(!allowed(user))
to_chat(user, SPAN_DANGER("Access Denied"))
flick(initial(icon_state) + "-denied", src)
return FALSE

if(!COOLDOWN_FINISHED(GLOB.ares_datacore, aicore_lockdown))
to_chat(user, SPAN_BOLDWARNING("AI Core Lockdown procedures are on cooldown! They will be ready in [COOLDOWN_SECONDSLEFT(GLOB.ares_datacore, aicore_lockdown)] seconds!"))
return FALSE

add_fingerprint(user)
aicore_lockdown(user)
COOLDOWN_START(GLOB.ares_datacore, aicore_lockdown, 2 MINUTES)

/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown
name = "ARES Emergency Lockdown Shutter"
density = FALSE
open_layer = 1.9
plane = FLOOR_PLANE

/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore
icon_state = "aidoor1"
base_icon_state = "aidoor"

/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore/white
icon_state = "w_aidoor1"
base_icon_state = "w_aidoor"

/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/white
icon_state = "w_almayer_pdoor1"
base_icon_state = "w_almayer_pdoor"

/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/Initialize()
. = ..()
RegisterSignal(SSdcs, COMSIG_GLOB_AICORE_LOCKDOWN, PROC_REF(close))
RegisterSignal(SSdcs, COMSIG_GLOB_AICORE_LIFT, PROC_REF(open))


/client/proc/admin_aicore_alert()
set name = "AI Core Lockdown"
set category = "Admin.Ship"

if(!admin_holder ||!check_rights(R_EVENT))
return FALSE

var/prompt = tgui_alert(src, "Are you sure you want to trigger an AI Core lockdown alert? This will force red alert, and lockdown the AI Core.", "Choose.", list("Yes", "No"), 20 SECONDS)
if(prompt != "Yes")
return FALSE

prompt = tgui_alert(src, "Do you want to use a custom announcement?", "Choose.", list("Yes", "No"), 20 SECONDS)
if(prompt == "Yes")
var/whattoannounce = tgui_input_text(src, "Please enter announcement text.", "what?")
aicore_lockdown(usr, whattoannounce, TRUE)
else
aicore_lockdown(usr, admin = TRUE)
return TRUE

/proc/aicore_lockdown(mob/user, message, admin = FALSE)
if(IsAdminAdvancedProcCall())
return PROC_BLOCKED

var/log = "[key_name(user)] triggered AI core lockdown!"
var/ares_log = "[user.name] triggered triggered AI Core Emergency Lockdown."
if(!message)
message = "ATTENTION! \n\nCORE SECURITY ALERT. \n\nAI CORE UNDER LOCKDOWN."
else
log = "[key_name(user)] triggered AI core emergency lockdown! (Using a custom announcement)."
if(admin)
log += " (Admin Triggered)."
ares_log = "[MAIN_AI_SYSTEM] triggered AI Core Emergency Lockdown."

switch(GLOB.ares_datacore.ai_lockdown_state)
if(ARES_LOCKDOWN_READY)
GLOB.ares_datacore.ai_lockdown_state = ARES_LOCKDOWN_ACTIVE
if(GLOB.security_level < SEC_LEVEL_RED)
set_security_level(SEC_LEVEL_RED, TRUE, FALSE)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_AICORE_LOCKDOWN)
if(ARES_LOCKDOWN_ACTIVE)
GLOB.ares_datacore.ai_lockdown_state = ARES_LOCKDOWN_READY
message = "ATTENTION! \n\nAI CORE EMERGENCY LOCKDOWN LIFTED."
log = "[key_name(user)] lifted AI core lockdown!"
ares_log = "[user.name] lifted AI Core Emergency Lockdown."
if(admin)
log += " (Admin Triggered)."
ares_log = "[MAIN_AI_SYSTEM] lifted AI Core Emergency Lockdown."

if(GLOB.security_level > SEC_LEVEL_GREEN)
set_security_level(SEC_LEVEL_BLUE, TRUE, FALSE)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_AICORE_LIFT)

shipwide_ai_announcement(message, MAIN_AI_SYSTEM, 'sound/effects/biohazard.ogg')
message_admins(log)
log_ares_security("AI Core Lockdown", ares_log)
16 changes: 9 additions & 7 deletions code/game/machinery/biohazard_lockdown.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#define LOCKDOWN_READY 0
#define LOCKDOWN_ACTIVE 1
GLOBAL_VAR_INIT(lockdown_state, LOCKDOWN_READY)
GLOBAL_VAR_INIT(med_lockdown_state, LOCKDOWN_READY)

/obj/structure/machinery/biohazard_lockdown
name = "Emergency Containment Breach"
Expand Down Expand Up @@ -51,7 +51,7 @@ GLOBAL_VAR_INIT(lockdown_state, LOCKDOWN_READY)
base_icon_state = "w_almayer_pdoor"

/client/proc/admin_biohazard_alert()
set name = "Containment Breach Alert"
set name = "Research Containment Lockdown"
set category = "Admin.Ship"

if(!admin_holder ||!check_rights(R_EVENT))
Expand Down Expand Up @@ -83,21 +83,23 @@ GLOBAL_VAR_INIT(lockdown_state, LOCKDOWN_READY)
log += " (Admin Triggered)."
ares_log = "[MAIN_AI_SYSTEM] triggered Medical Research Biohazard Containment Lockdown."

switch(GLOB.lockdown_state)
switch(GLOB.med_lockdown_state)
if(LOCKDOWN_READY)
GLOB.lockdown_state = LOCKDOWN_ACTIVE
set_security_level(SEC_LEVEL_RED, TRUE, FALSE)
GLOB.med_lockdown_state = LOCKDOWN_ACTIVE
if(GLOB.security_level < SEC_LEVEL_RED)
set_security_level(SEC_LEVEL_RED, TRUE, FALSE)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LOCKDOWN)
if(LOCKDOWN_ACTIVE)
GLOB.lockdown_state = LOCKDOWN_READY
GLOB.med_lockdown_state = LOCKDOWN_READY
message = "ATTENTION! \n\nBIOHAZARD CONTAINMENT LOCKDOWN LIFTED."
log = "[key_name(user)] lifted research bio lockdown!"
ares_log = "[user.name] lifted Medical Research Biohazard Containment Lockdown."
if(admin)
log += " (Admin Triggered)."
ares_log = "[MAIN_AI_SYSTEM] lifted Medical Research Biohazard Containment Lockdown."

set_security_level(SEC_LEVEL_BLUE, TRUE, FALSE)
if(GLOB.security_level > SEC_LEVEL_GREEN)
set_security_level(SEC_LEVEL_BLUE, TRUE, FALSE)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LIFT)

shipwide_ai_announcement(message, MAIN_AI_SYSTEM, 'sound/effects/biohazard.ogg')
Expand Down
9 changes: 9 additions & 0 deletions code/game/turfs/floor_types.dm
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,15 @@
. = ..()
set_light_on(TRUE)

RegisterSignal(SSdcs, COMSIG_GLOB_AICORE_LOCKDOWN, PROC_REF(start_emergency_light_on))
RegisterSignal(SSdcs, COMSIG_GLOB_AICORE_LIFT, PROC_REF(start_emergency_light_off))

/turf/open/floor/almayer/aicore/glowing/proc/start_emergency_light_on()
set_light(l_color = "#c70f0f")

/turf/open/floor/almayer/aicore/glowing/proc/start_emergency_light_off()
set_light(l_color = "#d69c46")

/turf/open/floor/almayer/aicore/no_build
allow_construction = FALSE
hull_floor = TRUE
Expand Down
1 change: 1 addition & 0 deletions code/modules/admin/admin_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ GLOBAL_LIST_INIT(admin_verbs_minor_event, list(
/client/proc/adminpanelweapons,
/client/proc/admin_general_quarters,
/client/proc/admin_biohazard_alert,
/client/proc/admin_aicore_alert,
/client/proc/toggle_hardcore_perma,
/client/proc/toggle_bypass_joe_restriction,
/client/proc/toggle_joe_respawns,
Expand Down
1 change: 1 addition & 0 deletions colonialmarines.dme
Original file line number Diff line number Diff line change
Expand Up @@ -822,6 +822,7 @@
#include "code\game\jobs\job\special\provost.dm"
#include "code\game\jobs\job\special\uaac.dm"
#include "code\game\jobs\job\special\uscm.dm"
#include "code\game\machinery\aicore_lockdown.dm"
#include "code\game\machinery\air_alarm.dm"
#include "code\game\machinery\air_sensor.dm"
#include "code\game\machinery\autolathe.dm"
Expand Down
Binary file modified icons/obj/structures/doors/blastdoors_shutters.dmi
Binary file not shown.
Loading

0 comments on commit 9da1df0

Please sign in to comment.