SUBSYSTEM_DEF(nightshift) name = "Night Shift" dependencies = list( /datum/controller/subsystem/lighting ) priority = FIRE_PRIORITY_NIGHTSHIFT wait = 60 SECONDS var/nightshift_active = FALSE var/nightshift_first_check = 30 SECONDS var/high_security_mode = FALSE var/list/currentrun /datum/controller/subsystem/nightshift/Initialize() if(!CONFIG_GET(flag/enable_night_shifts)) can_fire = FALSE return SS_INIT_SUCCESS /datum/controller/subsystem/nightshift/fire(resumed = FALSE) if(resumed) update_nightshift(resumed = TRUE) return if(world.time - SSticker.round_start_time < nightshift_first_check) return check_nightshift() /datum/controller/subsystem/nightshift/proc/announce(message) var/announce_z if(using_map.station_levels.len) announce_z = pick(using_map.station_levels) /* CHOMPEdit - TTSless //VOREStation Edit - TTS var/pickedsound if(!high_security_mode) if(nightshift_active) pickedsound = 'sound/AI/dim_lights.ogg' else pickedsound = 'sound/AI/bright_lights.ogg' */ priority_announcement.Announce(message, new_title = "Automated Lighting System Announcement", /* new_sound = pickedsound,*/ zlevel = announce_z) // CHOMPEdit End //VOREStation Edit End /datum/controller/subsystem/nightshift/proc/check_nightshift(forced) //This is called from elsewhere, like setting the alert levels, sadly var/emergency = GLOB.security_level > SEC_LEVEL_GREEN var/announcing = TRUE var/night_time = using_map.get_nightshift() if(high_security_mode != emergency) high_security_mode = emergency if(night_time) announcing = FALSE if(!emergency) announce("Restoring night lighting configuration to normal operation.") else announce("Disabling night lighting: Station is in a state of emergency.") if(emergency) night_time = FALSE if(nightshift_active != night_time) update_nightshift(night_time, announcing, forced = forced) /datum/controller/subsystem/nightshift/proc/update_nightshift(active, announce = TRUE, resumed = FALSE, forced = FALSE) if(!resumed) currentrun = GLOB.apcs 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/obj/machinery/power/apc/apc as anything in currentrun) currentrun -= apc if(apc.z in using_map.station_levels) apc.set_nightshift(active, TRUE) if(MC_TICK_CHECK && !forced) // subsystem will be in state SS_IDLE if forced by an admin return