diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index 90361aca549..b6160e1d8f9 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -16,6 +16,9 @@ can_unwrench = 1 var/side_inverted = 0 + var/light_range_on = 1 + var/light_power_on = 0.1 //just dont want it to be culled by byond. + /obj/machinery/atmospherics/binary/circulator/detailed_examine() return "This generates electricity, depending on the difference in temperature between each side of the machine. The meter in \ the center of the machine gives an indicator of how much electricity is being generated." @@ -44,6 +47,7 @@ if(output_starting_pressure >= input_starting_pressure - 10) //Need at least 10 KPa difference to overcome friction in the mechanism last_pressure_delta = 0 + update_icon() return null //Calculate necessary moles to transfer using PV = nRT @@ -52,7 +56,9 @@ var/transfer_moles = pressure_delta * outlet.volume/(inlet.temperature * R_IDEAL_GAS_EQUATION) - last_pressure_delta = pressure_delta + if(last_pressure_delta != pressure_delta) + last_pressure_delta = pressure_delta + update_icon() //log_debug("pressure_delta = [pressure_delta]; transfer_moles = [transfer_moles];") @@ -66,10 +72,7 @@ else last_pressure_delta = 0 - -/obj/machinery/atmospherics/binary/circulator/process_atmos() - ..() - update_icon() + update_icon() /obj/machinery/atmospherics/binary/circulator/proc/get_inlet_air() if(side_inverted==0) @@ -108,17 +111,46 @@ to_chat(user, "You reverse the circulator's valve settings. The inlet of the circulator is now on the [get_inlet_side(dir)] side.") desc = "A gas circulator pump and heat exchanger. Its input port is on the [get_inlet_side(dir)] side, and its output port is on the [get_outlet_side(dir)] side." -/obj/machinery/atmospherics/binary/circulator/update_icon() +/obj/machinery/atmospherics/binary/circulator/update_icon() //this gets called everytime atmos is updated in the circulator (alot) ..() + underlays.Cut() + cut_overlays() if(stat & (BROKEN|NOPOWER)) icon_state = "circ[side]-p" else if(last_pressure_delta > 0) if(last_pressure_delta > ONE_ATMOSPHERE) icon_state = "circ[side]-run" + underlays += emissive_appearance(icon,"emit[side]-run") else icon_state = "circ[side]-slow" + underlays += emissive_appearance(icon,"emit[side]-slow") else icon_state = "circ[side]-off" + underlays += emissive_appearance(icon,"emit[side]-off") + + if(!side_inverted) + add_overlay(mutable_appearance(icon,"in_up")) + else + add_overlay(mutable_appearance(icon,"in_down")) + + if(node2) + var/image/new_pipe_overlay = image(icon, "connected") + new_pipe_overlay.color = node2.pipe_color + add_overlay(new_pipe_overlay) + else + add_overlay(mutable_appearance(icon, "disconnected")) return 1 + +/obj/machinery/atmospherics/binary/circulator/power_change() + . = ..() + if(stat & (BROKEN|NOPOWER)) + set_light(0) + else + set_light(light_range_on, light_power_on) + update_icon() + +/obj/machinery/atmospherics/binary/circulator/update_underlays() + . = ..() + update_icon() diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index fb29993543b..6b43ffd907d 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -16,6 +16,9 @@ var/lastgenlev = -1 var/lastcirc = "00" + var/light_range_on = 1 + var/light_power_on = 0.1 //just dont want it to be culled by byond. + /obj/machinery/power/generator/Initialize(mapload) . = ..() update_desc() @@ -36,6 +39,10 @@ if(powernet) disconnect_from_network() +/obj/machinery/power/generator/Initialize() + . = ..() + connect() + /obj/machinery/power/generator/proc/connect() connect_to_network() @@ -60,21 +67,29 @@ updateDialog() /obj/machinery/power/generator/power_change() + . = ..() if(!anchored) stat |= NOPOWER + if((stat & (BROKEN|NOPOWER))) + set_light(0) else - ..() + set_light(light_range_on, light_power_on) + update_icon() + /obj/machinery/power/generator/update_icon() if(stat & (NOPOWER|BROKEN)) - overlays.Cut() + cut_overlays() + underlays.Cut() + return else - overlays.Cut() - + cut_overlays() if(lastgenlev != 0) - overlays += image('icons/obj/power.dmi', "teg-op[lastgenlev]") + add_overlay(mutable_appearance('icons/obj/power.dmi', "teg-op[lastgenlev]")) + underlays += emissive_appearance(icon, "teg-op[lastgenlev]") - overlays += image('icons/obj/power.dmi', "teg-oc[lastcirc]") + add_overlay(mutable_appearance('icons/obj/power.dmi', "teg-oc[lastcirc]")) + underlays += emissive_appearance(icon, "teg-oc[lastcirc]") /obj/machinery/power/generator/process() if(stat & (NOPOWER|BROKEN)) @@ -230,7 +245,3 @@ if(!powernet || !cold_circ || !hot_circ) connect() return TRUE - -/obj/machinery/power/generator/power_change() - ..() - update_icon() diff --git a/icons/obj/atmospherics/circulator.dmi b/icons/obj/atmospherics/circulator.dmi index 45f7a626ef6..e378b12f171 100644 Binary files a/icons/obj/atmospherics/circulator.dmi and b/icons/obj/atmospherics/circulator.dmi differ diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi index ac8eca417dd..e41098e7290 100644 Binary files a/icons/obj/pipe-item.dmi and b/icons/obj/pipe-item.dmi differ diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index ef91b81b3fd..a5dc731d120 100644 Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ