diff --git a/code/modules/power/apc/apc_main.dm b/code/modules/power/apc/apc_main.dm index 11ce0a0167d..0dc68d48389 100644 --- a/code/modules/power/apc/apc_main.dm +++ b/code/modules/power/apc/apc_main.dm @@ -524,7 +524,7 @@ if(!nightshift_lights || (nightshift_lights && !low_power_nightshift_lights)) low_power_nightshift_lights = TRUE INVOKE_ASYNC(src, PROC_REF(set_nightshift), TRUE) - else if(cell.percent() < 15 && long_term_power < 0) // <15%, turn off lighting & equipment + else if(cell.percent() < 7 && long_term_power < 0) // SKYRAT EDIT CHANGE - orig: 15 equipment = autoset(equipment, AUTOSET_OFF) lighting = autoset(lighting, AUTOSET_OFF) environ = autoset(environ, AUTOSET_ON) @@ -532,9 +532,9 @@ if(!nightshift_lights || (nightshift_lights && !low_power_nightshift_lights)) low_power_nightshift_lights = TRUE INVOKE_ASYNC(src, PROC_REF(set_nightshift), TRUE) - else if(cell.percent() < 30 && long_term_power < 0) // <30%, turn off equipment - equipment = autoset(equipment, AUTOSET_OFF) - lighting = autoset(lighting, AUTOSET_ON) + else if(cell.percent() < 17 && long_term_power < 0) // SKYRAT EDIT CHANGE - orig: 30 + equipment = autoset(equipment, AUTOSET_ON) // SKYRAT EDIT CHANGE - orig: AUTOSET_OFF + lighting = autoset(lighting, AUTOSET_OFF) // SKYRAT EDIT CHANGE - orig: AUTOSET_ON environ = autoset(environ, AUTOSET_ON) alarm_manager.send_alarm(ALARM_POWER) if(!nightshift_lights || (nightshift_lights && !low_power_nightshift_lights)) diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index e204bdfd0d8..ebab72ba3df 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -135,15 +135,21 @@ /obj/machinery/light/update_icon_state() switch(status) // set icon_states if(LIGHT_OK) - //var/area/local_area = get_area(src) SKYRAT EDIT REMOVAL - // SKYRAT EDIT ADDITION BEGIN - if(low_power_mode) - icon_state = "[base_state]_lpower" - else if(major_emergency) + var/area/local_area = get_area(src) + //SKYRAT EDIT BEGIN - Original + /* + if(low_power_mode || major_emergency || (local_area?.fire)) icon_state = "[base_state]_emergency" - // SKYRAT EDIT ADDITION END else icon_state = "[base_state]" + */ + if(low_power_mode) + icon_state = "[base_state]_lpower" + else if(major_emergency || (local_area?.fire)) + icon_state = "[base_state]_emergency" + else + icon_state = "[base_state]" + // SKYRAT EDIT END if(LIGHT_EMPTY) icon_state = "[base_state]-empty" if(LIGHT_BURNED) @@ -161,7 +167,8 @@ var/area/local_area = get_area(src) if(emergency_mode || (local_area?.fire)) */ - if(low_power_mode || major_emergency) // SKYRAT EDIT END + var/area/local_area = get_area(src) + if(low_power_mode || major_emergency || (local_area?.fire)) // SKYRAT EDIT END . += mutable_appearance(overlay_icon, "[base_state]_emergency") return if(nightshift_enabled) @@ -195,7 +202,7 @@ /obj/machinery/light/proc/handle_fire(area/source, new_fire) SIGNAL_HANDLER - update() + update(instant = TRUE, play_sound = FALSE) //SKYRAT EDIT CHANGE // update the icon_state and luminosity of the light depending on its state /obj/machinery/light/proc/update(trigger = TRUE, instant = FALSE, play_sound = TRUE) //SKYRAT EDIT CHANGE diff --git a/modular_skyrat/master_files/code/modules/power/lighting/light_mapping_helpers.dm b/modular_skyrat/master_files/code/modules/power/lighting/light_mapping_helpers.dm index 6f0619ef53a..e2e095144ab 100644 --- a/modular_skyrat/master_files/code/modules/power/lighting/light_mapping_helpers.dm +++ b/modular_skyrat/master_files/code/modules/power/lighting/light_mapping_helpers.dm @@ -1,11 +1,15 @@ // Kneecapping light values every light at a time. /obj/machinery/light/dim + brightness = 4 + nightshift_brightness = 4 bulb_colour = "#f8faff" bulb_power = 0.4 /obj/machinery/light/small + brightness = 5 + nightshift_brightness = 4.5 bulb_colour = "#f8faff" - bulb_power = 0.45 + bulb_power = 0.9 /obj/machinery/light/cold nightshift_light_color = null diff --git a/modular_skyrat/modules/aesthetics/airalarm/code/airalarm.dm b/modular_skyrat/modules/aesthetics/airalarm/code/airalarm.dm index 57d42fde19c..6260d31e3e1 100644 --- a/modular_skyrat/modules/aesthetics/airalarm/code/airalarm.dm +++ b/modular_skyrat/modules/aesthetics/airalarm/code/airalarm.dm @@ -2,5 +2,20 @@ icon = 'modular_skyrat/modules/aesthetics/airalarm/icons/airalarm.dmi' var/light_mask = "alarm-light-mask" +/obj/machinery/airalarm/update_appearance(updates) + . = ..() + + if(panel_open || (machine_stat & (NOPOWER|BROKEN)) || shorted) + set_light(0) + return FALSE + + var/color = LIGHT_COLOR_ELECTRIC_CYAN + if(danger_level == AIR_ALARM_ALERT_HAZARD) + color = LIGHT_COLOR_INTENSE_RED + else if(danger_level == AIR_ALARM_ALERT_WARNING || my_area.active_alarms[ALARM_ATMOS]) + color = LIGHT_COLOR_ORANGE + + set_light(1.5, 1, color) + /obj/item/wallframe/airalarm icon = 'icons/obj/monitors.dmi' diff --git a/modular_skyrat/modules/aesthetics/apc/code/apc.dm b/modular_skyrat/modules/aesthetics/apc/code/apc.dm index 528cedcb7ba..78c3f2cfb72 100644 --- a/modular_skyrat/modules/aesthetics/apc/code/apc.dm +++ b/modular_skyrat/modules/aesthetics/apc/code/apc.dm @@ -3,3 +3,28 @@ /obj/item/wallframe/apc icon = 'modular_skyrat/modules/aesthetics/apc/icons/apc.dmi' + +/obj/machinery/power/apc/update_appearance(updates = check_updates()) + icon_update_needed = FALSE + if(!updates) + return FALSE + + . = ..() + // And now, separately for cleanness, the lighting changing + if(!update_state) + switch(charging) + if(APC_NOT_CHARGING) + set_light_color(LIGHT_COLOR_INTENSE_RED) + if(APC_CHARGING) + set_light_color(LIGHT_COLOR_ORANGE) + if(APC_FULLY_CHARGED) + set_light_color(LIGHT_COLOR_ELECTRIC_CYAN) + set_light(light_on_range) + return TRUE + + if(update_state & UPSTATE_BLUESCREEN) + set_light_color(LIGHT_COLOR_BLUE) + set_light(light_on_range) + return TRUE + + set_light(0) diff --git a/modular_skyrat/modules/aesthetics/lights/code/lighting.dm b/modular_skyrat/modules/aesthetics/lights/code/lighting.dm index ed813cd1424..e08bfda95ab 100644 --- a/modular_skyrat/modules/aesthetics/lights/code/lighting.dm +++ b/modular_skyrat/modules/aesthetics/lights/code/lighting.dm @@ -8,20 +8,23 @@ /obj/machinery/light icon = 'modular_skyrat/modules/aesthetics/lights/icons/lighting.dmi' overlay_icon = 'modular_skyrat/modules/aesthetics/lights/icons/lighting_overlay.dmi' - brightness = 5.5 + brightness = 6.5 + fire_brightness = 4.5 + fire_colour = "#D47F9B" bulb_colour = LIGHT_COLOR_FAINT_BLUE bulb_power = 1.15 nightshift_light_color = null // Let the dynamic night shift color code handle this. bulb_low_power_colour = LIGHT_COLOR_DARK_BLUE - bulb_low_power_brightness_mul = 0.45 + bulb_low_power_brightness_mul = 0.4 bulb_low_power_pow_min = 0.4 - bulb_major_emergency_brightness_mul = 1 // don't dim in an emergency, why is that a thing + bulb_emergency_colour = LIGHT_COLOR_INTENSE_RED + bulb_major_emergency_brightness_mul = 0.7 + power_consumption_rate = 5.62 var/maploaded = FALSE //So we don't have a lot of stress on startup. var/turning_on = FALSE //More stress stuff. var/constant_flickering = FALSE // Are we always flickering? var/flicker_timer = null var/roundstart_flicker = FALSE - var/firealarm = FALSE /obj/machinery/light/proc/turn_on(trigger, play_sound = TRUE) if(QDELETED(src)) @@ -29,13 +32,15 @@ turning_on = FALSE if(!on) return + var/area/local_area = get_room_area(src) var/new_brightness = brightness var/new_power = bulb_power var/new_color = bulb_colour - if(color) + if (local_area?.fire) + new_color = fire_colour + new_brightness = fire_brightness + else if(color) new_color = color - if (firealarm) - new_color = bulb_emergency_colour else if (nightshift_enabled) new_brightness -= new_brightness * NIGHTSHIFT_LIGHT_MODIFIER new_power -= new_power * NIGHTSHIFT_LIGHT_MODIFIER @@ -100,18 +105,6 @@ alter_flicker(FALSE) flicker_timer = addtimer(CALLBACK(src, PROC_REF(flicker_on)), rand(5, 50)) -/obj/machinery/light/proc/firealarm_on() - SIGNAL_HANDLER - - firealarm = TRUE - update() - -/obj/machinery/light/proc/firealarm_off() - SIGNAL_HANDLER - - firealarm = FALSE - update() - /obj/machinery/light/Initialize(mapload = TRUE) . = ..() if(on)