diff --git a/code/modules/power/apc/apc_power_proc.dm b/code/modules/power/apc/apc_power_proc.dm index a561ba88a84..7c00dc20c50 100644 --- a/code/modules/power/apc/apc_power_proc.dm +++ b/code/modules/power/apc/apc_power_proc.dm @@ -152,5 +152,5 @@ for(var/obj/machinery/light/night_light in area_turf) if(night_light.nightshift_allowed) night_light.nightshift_enabled = nightshift_lights - night_light.update(FALSE) + night_light.update(trigger = FALSE, play_sound = FALSE) // BUBBER EDIT CHANGE - LIGHTING - Original: update(FALSE) CHECK_TICK diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 73671f01501..a98694af531 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -1,3 +1,5 @@ +#define NIGHTSHIFT_COLOR_MODIFIER 0.15 // BUBBER EDIT ADDITION - LIGHTING + // the standard tube light fixture /obj/machinery/light name = "light fixture" @@ -191,15 +193,6 @@ return . += mutable_appearance(overlay_icon, base_state) - -// SKYRAT EDIT ADDITION BEGIN - AESTHETICS -#define LIGHT_ON_DELAY_UPPER (2 SECONDS) -#define LIGHT_ON_DELAY_LOWER (0.25 SECONDS) -/// Dynamically calculate nightshift brightness -#define NIGHTSHIFT_LIGHT_MODIFIER 0.15 -#define NIGHTSHIFT_COLOR_MODIFIER 0.15 -//SKYRAT EDIT END - // Area sensitivity is traditionally tied directly to power use, as an optimization // But since we want it for fire reacting, we disregard that /obj/machinery/light/setup_area_power_relationship() @@ -220,10 +213,10 @@ /obj/machinery/light/proc/handle_fire(area/source, new_fire) SIGNAL_HANDLER - update(instant = TRUE, play_sound = FALSE) //SKYRAT EDIT CHANGE - ORIGINAL: update() + update(play_sound = FALSE) // BUBBER EDIT CHANGE - LIGHTING - ORIGINAL: update() // 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 +/obj/machinery/light/proc/update(trigger = TRUE, play_sound = TRUE) // BUBBER EDIT CHANGE - LIGHTING - add play_sound switch(status) if(LIGHT_BROKEN,LIGHT_BURNED,LIGHT_EMPTY) on = FALSE @@ -238,7 +231,7 @@ START_PROCESSING(SSmachines, src) var/area/local_area = get_room_area() if (flickering) - brightness_set = brightness * bulb_low_power_brightness_mul + brightness_set = brightness * 0.25 // BUBBER EDIT CHANGE - LIGHTING - Original: brightness * bulb_low_power_brightness_mul power_set = bulb_low_power_pow_mul color_set = nightshift_light_color else if (local_area?.fire) @@ -249,30 +242,29 @@ color_set = bulb_emergency_colour brightness_set = brightness * bulb_major_emergency_brightness_mul else if (nightshift_enabled) - brightness_set -= brightness_set * NIGHTSHIFT_LIGHT_MODIFIER // SKYRAT EDIT CHANGE - ORIGINAL: brightness_set = nightshift_brightness - power_set -= power_set * NIGHTSHIFT_LIGHT_MODIFIER // SKYRAT EDIT CHANGE - ORIGINAL: power_set = nightshift_light_power + brightness_set = nightshift_brightness + power_set = nightshift_light_power if(!color) - color_set = nightshift_light_color - // SKYRAT EDIT ADDITION START - Dynamic nightshift color - if(!color_set) - // Adjust light values to be warmer. I doubt caching would speed this up by any worthwhile amount, as it's all very fast number and string operations. - // Convert to numbers for easier manipulation. - var/list/color_parts = rgb2num(bulb_colour) - var/red = color_parts[1] - var/green = color_parts[2] - var/blue = color_parts[3] + // BUBBER EDIT CHANGE START - Dynamic nightshift color + // color_set = nightshift_light_color + // Adjust light values to be warmer. I doubt caching would speed this up by any worthwhile amount, as it's all very fast number and string operations. + // Convert to numbers for easier manipulation. + var/list/color_parts = rgb2num(bulb_colour) + var/red = color_parts[1] + var/green = color_parts[2] + var/blue = color_parts[3] - red += round(red * NIGHTSHIFT_COLOR_MODIFIER) - green -= round(green * NIGHTSHIFT_COLOR_MODIFIER * 0.3) - red = clamp(red, 0, 255) // clamp to be safe, or you can end up with an invalid hex value - green = clamp(green, 0, 255) - blue = clamp(blue, 0, 255) - color_set = rgb(red, green, blue) // Splice the numbers together and turn them back to hex. - // SKYRAT EDIT ADDITION END + red += round(red * NIGHTSHIFT_COLOR_MODIFIER) + green -= round(green * NIGHTSHIFT_COLOR_MODIFIER * 0.3) + red = clamp(red, 0, 255) // clamp to be safe, or you can end up with an invalid hex value + green = clamp(green, 0, 255) + blue = clamp(blue, 0, 255) + color_set = rgb(red, green, blue) // Splice the numbers together and turn them back to hex. + // BUBBER EDIT ADDITION END if (cached_color_filter) color_set = apply_matrix_to_color(color_set, cached_color_filter["color"], cached_color_filter["space"] || COLORSPACE_RGB) var/matching = light && brightness_set == light.light_range && power_set == light.light_power && color_set == light.light_color - if(!matching && (maploaded || instant)) // SKYRAT EDIT CHANGE - ORIGINAL: if(!matching) + if(!matching) switchcount++ if( prob( min(60, (switchcount**2)*0.01) ) ) if(trigger) @@ -284,15 +276,10 @@ l_power = power_set, l_color = color_set ) - // SKYRAT EDIT ADDITION START - maploaded = FALSE + // BUBBER EDIT ADDITION BEGIN - LIGHTING if(play_sound) playsound(src.loc, 'modular_skyrat/modules/aesthetics/lights/sound/light_on.ogg', 65, 1) - else if(!matching && !turning_on) - switchcount++ - turning_on = TRUE - addtimer(CALLBACK(src, PROC_REF(delayed_turn_on), trigger, play_sound, color_set, power_set, brightness_set), rand(LIGHT_ON_DELAY_LOWER, LIGHT_ON_DELAY_UPPER)) - // SKYRAT EDIT ADDITION END + // BUBBER EDIT ADDITION END else if(has_emergency_power(LIGHT_EMERGENCY_POWER_USE) && !turned_off()) use_power = IDLE_POWER_USE low_power_mode = TRUE @@ -304,14 +291,6 @@ update_current_power_usage() broken_sparks(start_only=TRUE) - -//SKYRAT EDIT ADDITION BEGIN - AESTHETICS -#undef LIGHT_ON_DELAY_UPPER -#undef LIGHT_ON_DELAY_LOWER -#undef NIGHTSHIFT_LIGHT_MODIFIER -#undef NIGHTSHIFT_COLOR_MODIFIER -// SKYRAT EDIT ADDITION END - /obj/machinery/light/update_current_power_usage() if(!on && static_power_used > 0) //Light is off but still powered removeStaticPower(static_power_used, AREA_USAGE_STATIC_LIGHT) @@ -330,7 +309,7 @@ /obj/machinery/light/update_atom_colour() ..() - update() + update(play_sound = FALSE) // BUBBER EDIT CHANGE - LIGHTING - ORIGINAL: update() /obj/machinery/light/proc/broken_sparks(start_only=FALSE) if(!QDELETED(src) && status == LIGHT_BROKEN && has_power() && MC_RUNNING()) @@ -355,7 +334,7 @@ reagents.adjust_thermal_energy(8 * reagents.total_volume * SPECIFIC_HEAT_DEFAULT * seconds_per_tick) reagents.handle_reactions() if(low_power_mode && !use_emergency_power(LIGHT_EMERGENCY_POWER_USE * seconds_per_tick)) - update(FALSE) //Disables emergency mode and sets the color to normal + update(trigger = FALSE, play_sound = FALSE) // BUBBER EDIT CHANGE - LIGHTING - Original: update(FALSE) //Disables emergency mode and sets the color to normal /obj/machinery/light/proc/burn_out() if(status == LIGHT_OK) @@ -517,10 +496,6 @@ // true if area has power and lightswitch is on /obj/machinery/light/proc/has_power() var/area/local_area = get_room_area() - //SKYRAT EDIT ADDITION BEGIN - if(isnull(local_area)) - return FALSE - //SKYRAT EDIT END return local_area.lightswitch && local_area.power_light // returns whether this light has emergency power @@ -558,7 +533,7 @@ . = TRUE // did we actually flicker? Send this now because we expect immediate response, before sleeping. set_light( - l_range = brightness * bulb_low_power_brightness_mul, + l_range = brightness * 0.25, // BUBBER EDIT CHANGE - LIGHTING - Original: brightness * bulb_low_power_brightness_mul, l_power = bulb_low_power_pow_mul, l_color = nightshift_light_color, ) @@ -571,7 +546,7 @@ if(status != LIGHT_OK || !has_power()) break flickering = !flickering - update(FALSE) + update(trigger = FALSE, play_sound = FALSE) // BUBBER EDIT CHANGE - LIGHTING - Original: update(FALSE) stoplag(pick(list(2 SECONDS, 4 SECONDS, 6 SECONDS))) if(has_power()) @@ -580,14 +555,14 @@ on = FALSE flickering = FALSE - update(FALSE) + update(trigger = FALSE, play_sound = FALSE) // BUBBER EDIT CHANGE - LIGHTING - Original: update(FALSE) // ai attack - make lights flicker, because why not /obj/machinery/light/attack_ai(mob/user) no_low_power = !no_low_power to_chat(user, span_notice("Emergency lights for this fixture have been [no_low_power ? "disabled" : "enabled"].")) - update(FALSE) + update(trigger = FALSE, play_sound = FALSE) // BUBBER EDIT CHANGE - LIGHTING - Original: update(FALSE) return // attack with hand - remove tube/bulb @@ -659,11 +634,11 @@ /obj/machinery/light/proc/set_major_emergency_light() major_emergency = TRUE - update() + update(trigger = FALSE, play_sound = FALSE) // BUBBER EDIT CHANGE - LIGHTING - Original: update() /obj/machinery/light/proc/unset_major_emergency_light() major_emergency = FALSE - update() + update(trigger = FALSE, play_sound = FALSE) // BUBBER EDIT CHANGE - LIGHTING - Original: update() /obj/machinery/light/proc/drop_light_tube(mob/user) var/obj/item/light/light_object = new light_type() @@ -805,3 +780,5 @@ // has to render above tram things (trams are stupid) layer = BELOW_OPEN_DOOR_LAYER plane = GAME_PLANE + +#undef NIGHTSHIFT_COLOR_MODIFIER // BUBBER EDIT ADDITION - LIGHTING diff --git a/modular_skyrat/modules/aesthetics/lights/code/lighting.dm b/modular_skyrat/modules/aesthetics/lights/code/lighting.dm index 1b030798a6c..6925629790b 100644 --- a/modular_skyrat/modules/aesthetics/lights/code/lighting.dm +++ b/modular_skyrat/modules/aesthetics/lights/code/lighting.dm @@ -1,45 +1,13 @@ -/// Dynamically calculate nightshift brightness. How TG does it is painful to modify. -#define NIGHTSHIFT_LIGHT_MODIFIER 0.15 -#define NIGHTSHIFT_COLOR_MODIFIER 0.15 - /obj/machinery/light brightness = 7.5 + nightshift_brightness = 7.5 fire_brightness = 6 fire_colour = COLOR_FIRE_LIGHT_RED bulb_colour = COLOR_OFF_WHITE bulb_power = 0.9 - nightshift_light_color = null // Let the dynamic night shift color code handle this. - bulb_low_power_colour = LIGHT_COLOR_BROWN + nightshift_light_power = 0.5 + bulb_low_power_colour = LIGHT_COLOR_INTENSE_RED bulb_low_power_brightness_mul = 0.75 bulb_low_power_pow_min = 0.75 bulb_emergency_colour = LIGHT_COLOR_INTENSE_RED bulb_major_emergency_brightness_mul = 0.9 - var/maploaded = FALSE //So we don't have a lot of stress on startup. - var/turning_on = FALSE //More stress stuff. - -/obj/machinery/light/proc/delayed_turn_on(trigger, play_sound = TRUE, color_set, power_set, brightness_set) - if(QDELETED(src)) - return - turning_on = FALSE - if(!on) - return - if( prob( min(60, (switchcount**2)*0.01) ) ) - if(trigger) - burn_out() - else - use_power = ACTIVE_POWER_USE - set_light( - l_range = brightness_set, - l_power = power_set, - l_color = color_set - ) - if(play_sound) - playsound(src.loc, 'modular_skyrat/modules/aesthetics/lights/sound/light_on.ogg', 65, 1) - -/obj/machinery/light/Initialize(mapload = TRUE) - . = ..() - if(on) - maploaded = TRUE - -#undef NIGHTSHIFT_LIGHT_MODIFIER -#undef NIGHTSHIFT_COLOR_MODIFIER