mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 16:18:01 +01:00
Remove Skyrat light management (#4453)
## About The Pull Request Removes Skyrat's convoluted system of delaying lights based on mapload status, instant flags, etc. Perhaps it was useful years ago, but TG lighting code is now fine and the wheel doesn't need to be poorly reinvented. ## Why It's Good For The Game It's cool that the station lights flicker when things explode, but it makes me irrationally mad that this useless additional lighting code adds delay, making the effect show up well after the bomb goes off. ## Changelog 🆑 LT3 code: Removed some Skyrat lighting delay code /🆑 --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user