Files
2026-04-14 04:13:50 +00:00

37 lines
1.4 KiB
Plaintext

/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))