mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-01-08 16:32:54 +00:00
Port SSnightshift from Paradise
Makes the station have a night mode.
This commit is contained in:
@@ -119,6 +119,9 @@
|
||||
var/global/list/status_overlays_lighting
|
||||
var/global/list/status_overlays_environ
|
||||
var/alarms_hidden = FALSE //If power alarms from this APC are visible on consoles
|
||||
|
||||
var/nightshift_lights = FALSE
|
||||
var/last_nightshift_switch = 0
|
||||
|
||||
/obj/machinery/power/apc/updateDialog()
|
||||
if (stat & (BROKEN|MAINT))
|
||||
@@ -798,6 +801,7 @@
|
||||
"coverLocked" = coverlocked,
|
||||
"siliconUser" = issilicon(user) || isobserver(user), //I add observer here so admins can have more control, even if it makes 'siliconUser' seem inaccurate.
|
||||
"emergencyLights" = !emergency_lights,
|
||||
"nightshiftLights" = nightshift_lights,
|
||||
|
||||
"powerChannels" = list(
|
||||
list(
|
||||
@@ -970,6 +974,13 @@
|
||||
update_icon()
|
||||
update()
|
||||
|
||||
else if(href_list["nightshift"])
|
||||
if(last_nightshift_switch > world.time + 10 SECONDS) // don't spam...
|
||||
to_chat(usr, "<span class='warning'>[src]'s night lighting circuit breaker is still cycling!</span>")
|
||||
return 0
|
||||
last_nightshift_switch = world.time
|
||||
set_nightshift(!nightshift_lights)
|
||||
|
||||
else if (href_list["overload"])
|
||||
if(istype(usr, /mob/living/silicon))
|
||||
src.overload_lighting()
|
||||
@@ -1366,4 +1377,13 @@ obj/machinery/power/apc/proc/autoset(var/cur_state, var/on)
|
||||
if(src && grid_check == TRUE)
|
||||
grid_check = FALSE
|
||||
|
||||
/obj/machinery/power/apc/proc/set_nightshift(on, var/automated)
|
||||
set waitfor = FALSE
|
||||
if(automated && istype(area, /area/shuttle))
|
||||
return
|
||||
nightshift_lights = on
|
||||
for(var/obj/machinery/light/L in area)
|
||||
L.nightshift_mode(on)
|
||||
CHECK_TICK
|
||||
|
||||
#undef APC_UPDATE_ICON_COOLDOWN
|
||||
|
||||
@@ -245,9 +245,18 @@ var/global/list/light_type_cache = list()
|
||||
var/bulb_emergency_pow_mul = 0.75 // the multiplier for determining the light's power in emergency mode
|
||||
var/bulb_emergency_pow_min = 0.5 // the minimum value for the light's power in emergency mode
|
||||
|
||||
var/nightshift_enabled = FALSE
|
||||
var/nightshift_allowed = TRUE
|
||||
var/brightness_range_ns
|
||||
var/brightness_power_ns
|
||||
var/brightness_color_ns
|
||||
|
||||
/obj/machinery/light/flicker
|
||||
auto_flicker = TRUE
|
||||
|
||||
/obj/machinery/light/no_nightshift
|
||||
nightshift_allowed = FALSE
|
||||
|
||||
// the smaller bulb light fixture
|
||||
|
||||
/obj/machinery/light/small
|
||||
@@ -417,7 +426,10 @@ var/global/list/light_type_cache = list()
|
||||
//VOREStation Edit End
|
||||
|
||||
if(on)
|
||||
if(light_range != brightness_range || light_power != brightness_power || light_color != brightness_color)
|
||||
var/correct_range = nightshift_enabled ? brightness_range_ns : brightness_range
|
||||
var/correct_power = nightshift_enabled ? brightness_power_ns : brightness_power
|
||||
var/correct_color = nightshift_enabled ? brightness_color_ns : brightness_color
|
||||
if(light_range != correct_range || light_power != correct_power || light_color != correct_color)
|
||||
if(!auto_flicker)
|
||||
switchcount++
|
||||
if(rigged)
|
||||
@@ -435,7 +447,7 @@ var/global/list/light_type_cache = list()
|
||||
set_light(0)
|
||||
else
|
||||
update_use_power(USE_POWER_ACTIVE)
|
||||
set_light(brightness_range, brightness_power, brightness_color)
|
||||
set_light(correct_range, correct_power, correct_color)
|
||||
else if(has_emergency_power(LIGHT_EMERGENCY_POWER_USE) && !turned_off())
|
||||
update_use_power(USE_POWER_IDLE)
|
||||
emergency_mode = TRUE
|
||||
@@ -446,6 +458,13 @@ var/global/list/light_type_cache = list()
|
||||
|
||||
update_active_power_usage((light_range * light_power) * LIGHTING_POWER_FACTOR)
|
||||
|
||||
/obj/machinery/light/proc/nightshift_mode(var/state)
|
||||
if(!nightshift_allowed)
|
||||
return
|
||||
|
||||
if(state != nightshift_enabled)
|
||||
nightshift_enabled = state
|
||||
update(FALSE)
|
||||
|
||||
/obj/machinery/light/attack_generic(var/mob/user, var/damage)
|
||||
if(!damage)
|
||||
@@ -506,10 +525,15 @@ var/global/list/light_type_cache = list()
|
||||
status = L.status
|
||||
switchcount = L.switchcount
|
||||
rigged = L.rigged
|
||||
|
||||
brightness_range = L.brightness_range
|
||||
brightness_power = L.brightness_power
|
||||
brightness_color = L.brightness_color
|
||||
|
||||
brightness_range_ns = L.nightshift_range
|
||||
brightness_power_ns = L.nightshift_power
|
||||
brightness_color_ns = L.nightshift_color
|
||||
|
||||
// attack with item - insert light (if right type), otherwise try to break the light
|
||||
|
||||
/obj/machinery/light/proc/insert_bulb(obj/item/weapon/light/L)
|
||||
@@ -872,6 +896,10 @@ var/global/list/light_type_cache = list()
|
||||
var/brightness_power = 1
|
||||
var/brightness_color = LIGHT_COLOR_INCANDESCENT_TUBE
|
||||
|
||||
var/nightshift_range = 8
|
||||
var/nightshift_power = 0.7
|
||||
var/nightshift_color = LIGHT_COLOR_NIGHTSHIFT
|
||||
|
||||
/obj/item/weapon/light/tube
|
||||
name = "light tube"
|
||||
desc = "A replacement light tube."
|
||||
@@ -888,6 +916,9 @@ var/global/list/light_type_cache = list()
|
||||
brightness_range = 15
|
||||
brightness_power = 9
|
||||
|
||||
nightshift_range = 10
|
||||
nightshift_power = 0.9
|
||||
|
||||
/obj/item/weapon/light/bulb
|
||||
name = "light bulb"
|
||||
desc = "A replacement light bulb."
|
||||
@@ -899,6 +930,9 @@ var/global/list/light_type_cache = list()
|
||||
brightness_power = 4
|
||||
brightness_color = LIGHT_COLOR_INCANDESCENT_BULB
|
||||
|
||||
nightshift_range = 3
|
||||
nightshift_power = 0.35
|
||||
|
||||
/obj/item/weapon/light/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
shatter()
|
||||
|
||||
@@ -64,10 +64,6 @@
|
||||
else
|
||||
security_announcement_down.Announce("[config.alert_desc_red_downto]", "Attention! Code red!")
|
||||
security_level = SEC_LEVEL_RED
|
||||
/* - At the time of commit, setting status displays didn't work properly
|
||||
var/obj/machinery/computer/communications/CC = locate(/obj/machinery/computer/communications,world)
|
||||
if(CC)
|
||||
CC.post_status("alert", "redalert")*/
|
||||
if(SEC_LEVEL_DELTA)
|
||||
security_announcement_up.Announce("[config.alert_desc_delta]", "Attention! Delta alert level reached!", new_sound = 'sound/effects/siren.ogg')
|
||||
security_level = SEC_LEVEL_DELTA
|
||||
@@ -84,6 +80,10 @@
|
||||
atc.reroute_traffic(yes = 1) // Tell them fuck off we're busy.
|
||||
else
|
||||
atc.reroute_traffic(yes = 0)
|
||||
|
||||
spawn()
|
||||
SSnightshift.check_nightshift()
|
||||
|
||||
admin_chat_message(message = "Security level is now: [uppertext(get_security_level())]", color = "#CC2222") //VOREStation Add
|
||||
|
||||
/proc/get_security_level()
|
||||
|
||||
Reference in New Issue
Block a user