mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-31 07:57:47 +01:00
EE Grid Check Event (#31812)
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
Reference in New Issue
Block a user