EE Grid Check Event (#31812)

Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
This commit is contained in:
PollardTheDragon
2026-04-14 04:13:50 +00:00
committed by GitHub
parent cf80c0b2b1
commit 1895ea77cb
4 changed files with 40 additions and 0 deletions
+1
View File
@@ -173,6 +173,7 @@ GLOBAL_LIST_EMPTY(event_last_fired)
//new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100)),
//new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENCE = 100)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, /datum/event/apc_short, 12),
new /datum/event_meta(EVENT_LEVEL_MODERATE, /datum/event/grid_check, 12),
new /datum/event_meta(EVENT_LEVEL_MODERATE, /datum/event/electrical_storm, 12),
new /datum/event_meta(EVENT_LEVEL_MODERATE, /datum/event/radiation_storm, 10, TRUE),
new /datum/event_meta(EVENT_LEVEL_MODERATE, /datum/event/spider_infestation, 10, TRUE),
+2
View File
@@ -23,11 +23,13 @@
/datum/event/tear,
/datum/event/tear/honk,
/datum/event/traders,
/datum/event/vent_clog,
/datum/event/disease_outbreak,
/datum/event/vent_clog,
/datum/event/disposals_clog,
/datum/event/demon_incursion,
/datum/event/shuttle_loan,
/datum/event/grid_check,
) + subtypesof(/datum/event/anomaly) + subtypesof(/datum/event/carp_migration)
var/datum/event/working_event
+36
View File
@@ -0,0 +1,36 @@
/datum/event/grid_check
name = "Grid Check"
nominal_severity = EVENT_LEVEL_MODERATE
endWhen = 60 // In process ticks
/datum/event/grid_check/announce(false_alarm)
GLOB.minor_announcement.Announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Electrical Grid Check")
return
/datum/event/grid_check/start()
. = ..()
addtimer(CALLBACK(src, PROC_REF(toggle_power)), rand(10 SECONDS, 15 SECONDS))
/datum/event/grid_check/proc/toggle_power(state = TRUE)
var/list/skipped_areas_apc = list(
/area/station/turret_protected/ai,
/area/station/command/office/ce)
skipped_areas_apc += subtypesof(/area/station/engineering)
skipped_areas_apc += subtypesof(/area/station/telecomms)
for(var/obj/machinery/power/apc/power_controller in GLOB.apcs)
var/area/current_area = get_area(power_controller)
if((current_area.type in skipped_areas_apc) || !is_station_level(power_controller.z))
continue
if(power_controller.operating == state)
power_controller.toggle_breaker()
for(var/mob/M in GLOB.player_list)
var/turf/T = get_turf(M)
if(!M.client || !is_station_level(T.z) || isnewplayer(M))
continue
if(state)
SEND_SOUND(M, sound('sound/effects/powerloss.ogg'))
else
SEND_SOUND(M, sound('sound/mecha/powerup.ogg'))
if(state)
addtimer(CALLBACK(src, PROC_REF(toggle_power), FALSE), rand(30 SECONDS, 120 SECONDS))