Files
GS13NG/code/controllers/subsystem/nightshift.dm
CitadelStationBot fef85c1eb3 [MIRROR] Fix nightshift skipping certain maint APCs (#5811)
* Merge pull request #36082 from AutomaticFrenzy/patch/nightshift-fix

Fix nightshift skipping certain maint APCs

* Fix nightshift skipping certain maint APCs
2018-03-05 12:30:29 -06:00

58 lines
2.2 KiB
Plaintext

SUBSYSTEM_DEF(nightshift)
name = "Night Shift"
wait = 600
flags = SS_NO_TICK_CHECK
var/nightshift_active = FALSE
var/nightshift_start_time = 702000 //7:30 PM, station time
var/nightshift_end_time = 270000 //7:30 AM, station time
var/nightshift_first_check = 30 SECONDS
var/high_security_mode = FALSE
/datum/controller/subsystem/nightshift/Initialize()
if(!CONFIG_GET(flag/enable_night_shifts))
can_fire = FALSE
return ..()
/datum/controller/subsystem/nightshift/fire(resumed = FALSE)
if(world.time - SSticker.round_start_time < nightshift_first_check)
return
check_nightshift()
/datum/controller/subsystem/nightshift/proc/announce(message)
priority_announce(message, sound='sound/misc/notice2.ogg', sender_override="Automated Lighting System Announcement")
/datum/controller/subsystem/nightshift/proc/check_nightshift(force_set = FALSE)
var/emergency = GLOB.security_level >= SEC_LEVEL_RED
var/nightshift = FALSE
if (!emergency)
var/time = station_time()
nightshift = time < nightshift_end_time || time > nightshift_start_time
var/announcing = TRUE
if(high_security_mode && !emergency)
high_security_mode = FALSE
announce("Restoring night lighting configuration to normal operation.")
announcing = FALSE
else if(!high_security_mode && emergency)
high_security_mode = TRUE
announce("Night lighting disabled: Station is in a state of emergency.")
announcing = FALSE
if((nightshift_active != nightshift) || force_set)
update_nightshift(nightshift, announcing)
/datum/controller/subsystem/nightshift/proc/update_nightshift(active, announce = TRUE)
nightshift_active = active
if(announce)
if (active)
announce("Good evening, crew. To reduce power consumption and stimulate the circadian rhythms of some species, all of the lights aboard the station have been dimmed for the night.")
else
announce("Good morning, crew. As it is now day time, all of the lights aboard the station have been restored to their former brightness.")
for(var/A in GLOB.apcs_list)
var/obj/machinery/power/apc/APC = A
if (APC.area && (APC.area.type in GLOB.the_station_areas))
APC.set_nightshift(active)
CHECK_TICK