mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-20 15:21:29 +00:00
77 lines
2.8 KiB
Plaintext
77 lines
2.8 KiB
Plaintext
/datum/event/grid_check //NOTE: Times are measured in master controller ticks!
|
|
announceWhen = 5
|
|
|
|
/datum/event/grid_check/setup()
|
|
endWhen = rand(30,120)
|
|
|
|
/datum/event/grid_check/start()
|
|
power_failure(0)
|
|
|
|
/datum/event/grid_check/announce()
|
|
command_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.", "Automated Grid Check", new_sound = 'sound/AI/poweroff.ogg')
|
|
|
|
/datum/event/grid_check/end()
|
|
power_restore()
|
|
|
|
/proc/power_failure(var/announce = 1)
|
|
if(announce)
|
|
command_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.", "Critical Power Failure", new_sound = 'sound/AI/poweroff.ogg')
|
|
|
|
var/list/skipped_areas = list(/area/turret_protected/ai)
|
|
var/list/skipped_areas_apc = list(/area/engine/engineering)
|
|
|
|
for(var/obj/machinery/power/smes/S in machines)
|
|
var/area/current_area = get_area(S)
|
|
if(current_area.type in skipped_areas || !(S.z in config.station_levels))
|
|
continue
|
|
S.last_charge = S.charge
|
|
S.last_output_attempt = S.output_attempt
|
|
S.last_input_attempt = S.input_attempt
|
|
S.charge = 0
|
|
S.inputting(0)
|
|
S.outputting(0)
|
|
S.update_icon()
|
|
S.power_change()
|
|
|
|
for(var/obj/machinery/power/apc/C in world)
|
|
var/area/current_area = get_area(C)
|
|
if(current_area.type in skipped_areas_apc || !(C.z in config.station_levels))
|
|
continue
|
|
if(C.cell)
|
|
C.cell.charge = 0
|
|
|
|
/proc/power_restore(var/announce = 1)
|
|
var/list/skipped_areas = list(/area/turret_protected/ai)
|
|
var/list/skipped_areas_apc = list(/area/engine/engineering)
|
|
|
|
if(announce)
|
|
command_announcement.Announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", new_sound = 'sound/AI/poweron.ogg')
|
|
for(var/obj/machinery/power/apc/C in machines)
|
|
var/area/current_area = get_area(C)
|
|
if(current_area.type in skipped_areas_apc || !(C.z in config.station_levels))
|
|
continue
|
|
if(C.cell)
|
|
C.cell.charge = C.cell.maxcharge
|
|
for(var/obj/machinery/power/smes/S in machines)
|
|
var/area/current_area = get_area(S)
|
|
if(current_area.type in skipped_areas || !(S.z in config.station_levels))
|
|
continue
|
|
S.charge = S.last_charge
|
|
S.output_attempt = S.last_output_attempt
|
|
S.input_attempt = S.last_input_attempt
|
|
S.update_icon()
|
|
S.power_change()
|
|
|
|
/proc/power_restore_quick(var/announce = 1)
|
|
if(announce)
|
|
command_announcement.Announce("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", new_sound = 'sound/AI/poweron.ogg')
|
|
for(var/obj/machinery/power/smes/S in machines)
|
|
if(S.z != 1)
|
|
continue
|
|
S.charge = S.capacity
|
|
S.output_level = S.output_level_max
|
|
S.output_attempt = 1
|
|
S.input_attempt = 1
|
|
S.update_icon()
|
|
S.power_change()
|
|
|