diff --git a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm index 8528d636be2..080c7a24993 100644 --- a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm +++ b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm @@ -1,4 +1,4 @@ -obj/machinery/atmospherics/binary +/obj/machinery/atmospherics/binary dir = SOUTH initialize_directions = SOUTH|NORTH use_power = 1 @@ -9,126 +9,132 @@ obj/machinery/atmospherics/binary var/datum/pipe_network/network1 var/datum/pipe_network/network2 - Initialize() - switch(dir) - if(NORTH) - initialize_directions = NORTH|SOUTH - if(SOUTH) - initialize_directions = NORTH|SOUTH - if(EAST) - initialize_directions = EAST|WEST - if(WEST) - initialize_directions = EAST|WEST - air1 = new - air2 = new +/obj/machinery/atmospherics/binary/Initialize() + switch(dir) + if(NORTH) + initialize_directions = NORTH|SOUTH + if(SOUTH) + initialize_directions = NORTH|SOUTH + if(EAST) + initialize_directions = EAST|WEST + if(WEST) + initialize_directions = EAST|WEST + air1 = new + air2 = new - air1.volume = 200 - air2.volume = 200 - . = ..() + air1.volume = 200 + air2.volume = 200 + . = ..() // Housekeeping and pipe network stuff below - network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(reference == node1) - network1 = new_network +/obj/machinery/atmospherics/binary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node1) + network1 = new_network - else if(reference == node2) - network2 = new_network + else if(reference == node2) + network2 = new_network - if(new_network.normal_members.Find(src)) - return 0 + if(new_network.normal_members.Find(src)) + return 0 - new_network.normal_members += src + new_network.normal_members += src - return null + return null - Destroy() - QDEL_NULL(air1) - QDEL_NULL(air2) +/obj/machinery/atmospherics/binary/Destroy() + QDEL_NULL(air1) + QDEL_NULL(air2) - if(node1) - node1.disconnect(src) - QDEL_NULL(network1) - if(node2) - node2.disconnect(src) - QDEL_NULL(network2) + if(node1) + node1.disconnect(src) + QDEL_NULL(network1) + if(node2) + node2.disconnect(src) + QDEL_NULL(network2) + node1 = null + node2 = null + + return ..() + +/obj/machinery/atmospherics/binary/atmos_init() + if(node1 && node2) return + + var/node2_connect = dir + var/node1_connect = turn(dir, 180) + + for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) + if(target.initialize_directions & get_dir(target,src)) + if (check_connect_types(target,src)) + node1 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) + if(target.initialize_directions & get_dir(target,src)) + if (check_connect_types(target,src)) + node2 = target + break + + update_icon() + update_underlays() + +/obj/machinery/atmospherics/binary/build_network() + if(!network1 && node1) + network1 = new /datum/pipe_network() + network1.normal_members += src + network1.build_network(node1, src) + + if(!network2 && node2) + network2 = new /datum/pipe_network() + network2.normal_members += src + network2.build_network(node2, src) + + +/obj/machinery/atmospherics/binary/return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference==node1) + return network1 + + if(reference==node2) + return network2 + + return null + +/obj/machinery/atmospherics/binary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network1 == old_network) + network1 = new_network + if(network2 == old_network) + network2 = new_network + + return 1 + +/obj/machinery/atmospherics/binary/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network1 == reference) + results += air1 + if(network2 == reference) + results += air2 + + return results + +/obj/machinery/atmospherics/binary/disconnect(obj/machinery/atmospherics/reference) + if(reference==node1) + qdel(network1) node1 = null + + else if(reference==node2) + qdel(network2) node2 = null - return ..() + update_icon() + update_underlays() - atmos_init() - if(node1 && node2) return + return null - var/node2_connect = dir - var/node1_connect = turn(dir, 180) - - for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) - if(target.initialize_directions & get_dir(target,src)) - if (check_connect_types(target,src)) - node1 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) - if(target.initialize_directions & get_dir(target,src)) - if (check_connect_types(target,src)) - node2 = target - break - - update_icon() - update_underlays() - - build_network() - if(!network1 && node1) - network1 = new /datum/pipe_network() - network1.normal_members += src - network1.build_network(node1, src) - - if(!network2 && node2) - network2 = new /datum/pipe_network() - network2.normal_members += src - network2.build_network(node2, src) - - - return_network(obj/machinery/atmospherics/reference) - build_network() - - if(reference==node1) - return network1 - - if(reference==node2) - return network2 - - return null - - reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) - if(network1 == old_network) - network1 = new_network - if(network2 == old_network) - network2 = new_network - - return 1 - - return_network_air(datum/pipe_network/reference) - var/list/results = list() - - if(network1 == reference) - results += air1 - if(network2 == reference) - results += air2 - - return results - - disconnect(obj/machinery/atmospherics/reference) - if(reference==node1) - qdel(network1) - node1 = null - - else if(reference==node2) - qdel(network2) - node2 = null - - update_icon() - update_underlays() - - return null +/obj/machinery/atmospherics/binary/AltClick(var/mob/user) + if(!allowed(user)) + to_chat(user, SPAN_WARNING("Access denied.")) + return + Topic(src, list("power" = "1")) diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index 12972a9bced..663205a616e 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -278,3 +278,9 @@ update_ports() return null + +/obj/machinery/atmospherics/omni/AltClick(var/mob/user) + if(!allowed(user)) + to_chat(user, SPAN_WARNING("Access denied.")) + return + Topic(src, list("power" = "1")) diff --git a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm index d3a3d93ed6d..4acb13e90fb 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm @@ -1,4 +1,4 @@ -obj/machinery/atmospherics/trinary +/obj/machinery/atmospherics/trinary dir = SOUTH initialize_directions = SOUTH|NORTH|WEST use_power = 0 @@ -13,157 +13,163 @@ obj/machinery/atmospherics/trinary var/datum/pipe_network/network2 var/datum/pipe_network/network3 - Initialize() - switch(dir) - if(NORTH) - initialize_directions = EAST|NORTH|SOUTH - if(SOUTH) - initialize_directions = SOUTH|WEST|NORTH - if(EAST) - initialize_directions = EAST|WEST|SOUTH - if(WEST) - initialize_directions = WEST|NORTH|EAST - air1 = new - air2 = new - air3 = new +/obj/machinery/atmospherics/trinary/Initialize() + switch(dir) + if(NORTH) + initialize_directions = EAST|NORTH|SOUTH + if(SOUTH) + initialize_directions = SOUTH|WEST|NORTH + if(EAST) + initialize_directions = EAST|WEST|SOUTH + if(WEST) + initialize_directions = WEST|NORTH|EAST + air1 = new + air2 = new + air3 = new - air1.volume = 200 - air2.volume = 200 - air3.volume = 200 - . = ..() + air1.volume = 200 + air2.volume = 200 + air3.volume = 200 + . = ..() // Housekeeping and pipe network stuff below - network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(reference == node1) - network1 = new_network +/obj/machinery/atmospherics/trinary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node1) + network1 = new_network - else if(reference == node2) - network2 = new_network + else if(reference == node2) + network2 = new_network - else if (reference == node3) - network3 = new_network + else if (reference == node3) + network3 = new_network - if(new_network.normal_members.Find(src)) - return 0 + if(new_network.normal_members.Find(src)) + return 0 - new_network.normal_members += src + new_network.normal_members += src - return null + return null - Destroy() - QDEL_NULL(air1) - QDEL_NULL(air2) - QDEL_NULL(air3) +/obj/machinery/atmospherics/trinary/Destroy() + QDEL_NULL(air1) + QDEL_NULL(air2) + QDEL_NULL(air3) - if(node1) - node1.disconnect(src) - QDEL_NULL(network1) - if(node2) - node2.disconnect(src) - QDEL_NULL(network2) - if(node3) - node3.disconnect(src) - QDEL_NULL(network3) + if(node1) + node1.disconnect(src) + QDEL_NULL(network1) + if(node2) + node2.disconnect(src) + QDEL_NULL(network2) + if(node3) + node3.disconnect(src) + QDEL_NULL(network3) + node1 = null + node2 = null + node3 = null + + return ..() + +/obj/machinery/atmospherics/trinary/atmos_init() + if(node1 && node2 && node3) return + + var/node1_connect = turn(dir, -180) + var/node2_connect = turn(dir, -90) + var/node3_connect = dir + + for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) + if(target.initialize_directions & get_dir(target,src)) + if (check_connect_types(target,src)) + node1 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) + if(target.initialize_directions & get_dir(target,src)) + if (check_connect_types(target,src)) + node2 = target + break + for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect)) + if(target.initialize_directions & get_dir(target,src)) + if (check_connect_types(target,src)) + node3 = target + break + + update_icon() + update_underlays() + +/obj/machinery/atmospherics/trinary/build_network() + if(!network1 && node1) + network1 = new /datum/pipe_network() + network1.normal_members += src + network1.build_network(node1, src) + + if(!network2 && node2) + network2 = new /datum/pipe_network() + network2.normal_members += src + network2.build_network(node2, src) + + if(!network3 && node3) + network3 = new /datum/pipe_network() + network3.normal_members += src + network3.build_network(node3, src) + + +/obj/machinery/atmospherics/trinary/return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference==node1) + return network1 + + if(reference==node2) + return network2 + + if(reference==node3) + return network3 + + return null + +/obj/machinery/atmospherics/trinary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network1 == old_network) + network1 = new_network + if(network2 == old_network) + network2 = new_network + if(network3 == old_network) + network3 = new_network + + return 1 + +/obj/machinery/atmospherics/trinary/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network1 == reference) + results += air1 + if(network2 == reference) + results += air2 + if(network3 == reference) + results += air3 + + return results + +/obj/machinery/atmospherics/trinary/disconnect(obj/machinery/atmospherics/reference) + if(reference==node1) + qdel(network1) node1 = null + + else if(reference==node2) + qdel(network2) node2 = null + + else if(reference==node3) + qdel(network3) node3 = null - return ..() + update_underlays() - atmos_init() - if(node1 && node2 && node3) return + return null - var/node1_connect = turn(dir, -180) - var/node2_connect = turn(dir, -90) - var/node3_connect = dir - - for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) - if(target.initialize_directions & get_dir(target,src)) - if (check_connect_types(target,src)) - node1 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) - if(target.initialize_directions & get_dir(target,src)) - if (check_connect_types(target,src)) - node2 = target - break - for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect)) - if(target.initialize_directions & get_dir(target,src)) - if (check_connect_types(target,src)) - node3 = target - break - - update_icon() - update_underlays() - - build_network() - if(!network1 && node1) - network1 = new /datum/pipe_network() - network1.normal_members += src - network1.build_network(node1, src) - - if(!network2 && node2) - network2 = new /datum/pipe_network() - network2.normal_members += src - network2.build_network(node2, src) - - if(!network3 && node3) - network3 = new /datum/pipe_network() - network3.normal_members += src - network3.build_network(node3, src) - - - return_network(obj/machinery/atmospherics/reference) - build_network() - - if(reference==node1) - return network1 - - if(reference==node2) - return network2 - - if(reference==node3) - return network3 - - return null - - reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) - if(network1 == old_network) - network1 = new_network - if(network2 == old_network) - network2 = new_network - if(network3 == old_network) - network3 = new_network - - return 1 - - return_network_air(datum/pipe_network/reference) - var/list/results = list() - - if(network1 == reference) - results += air1 - if(network2 == reference) - results += air2 - if(network3 == reference) - results += air3 - - return results - - disconnect(obj/machinery/atmospherics/reference) - if(reference==node1) - qdel(network1) - node1 = null - - else if(reference==node2) - qdel(network2) - node2 = null - - else if(reference==node3) - qdel(network3) - node3 = null - - update_underlays() - - return null +/obj/machinery/atmospherics/trinary/AltClick(var/mob/user) + if(!allowed(user)) + to_chat(user, SPAN_WARNING("Access denied.")) + return + Topic(src, list("power" = "1")) diff --git a/code/modules/nano/modules/rcon.dm b/code/modules/nano/modules/rcon.dm index f60f87f7979..b4f6837ed44 100644 --- a/code/modules/nano/modules/rcon.dm +++ b/code/modules/nano/modules/rcon.dm @@ -69,6 +69,14 @@ if(SMES) var/outputset = input(usr, "Enter new output level (0-[SMES.output_level_max])", "SMES Input Power Control") as num SMES.set_output(outputset) + if(href_list["smes_in_max"]) + var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_max"]) + if(SMES) + SMES.set_input(SMES.input_level_max) + if(href_list["smes_out_max"]) + var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_max"]) + if(SMES) + SMES.set_output(SMES.output_level_max) if(href_list["toggle_breaker"]) var/obj/machinery/power/breakerbox/toggle = SSpower.rcon_breaker_units_by_tag[href_list["toggle_breaker"]] diff --git a/html/changelogs/engineering-qol-1.yml b/html/changelogs/engineering-qol-1.yml new file mode 100644 index 00000000000..d9a0e1bf5d8 --- /dev/null +++ b/html/changelogs/engineering-qol-1.yml @@ -0,0 +1,7 @@ +author: mikomyazaki + +delete-after: True + +changes: + - tweak: "Can now toggle atmospherics pumps & filters with AltClick." + - tweak: "RCON SMES control now includes a button to max SMES input/output without having to type in the number." diff --git a/nano/templates/rcon.tmpl b/nano/templates/rcon.tmpl index c4337a07316..4f99126100b 100644 --- a/nano/templates/rcon.tmpl +++ b/nano/templates/rcon.tmpl @@ -9,7 +9,7 @@ Detected SMES units with RCON support:
{{for data.smes_info}}
-
+
{{:value.RCON_tag}}
@@ -31,14 +31,16 @@ {{:helper.link('', 'power', { 'smes_in_toggle' : value.RCON_tag})}} {{:helper.link('', 'pencil', { 'smes_in_set' : value.RCON_tag})}} + {{:helper.link('', 'arrowthickstop-1-e', { 'smes_in_max' : value.RCON_tag})}} Output: {{:value.output_val}}W - {{:value.output_set ? "ONLINE" : "OFFLINE"}} {{:helper.link('', 'power', { 'smes_out_toggle' : value.RCON_tag})}} {{:helper.link('', 'pencil', { 'smes_out_set' : value.RCON_tag})}} - + {{:helper.link('', 'arrowthickstop-1-e', { 'smes_out_max' : value.RCON_tag})}} + - Output Load: + Output Load: {{:value.output_load}}W {{/if}} @@ -55,7 +57,7 @@ Detected Breaker Boxes with RCON support:
{{for data.breaker_info}}
-
+
{{:value.RCON_tag}}
@@ -70,4 +72,4 @@ {{empty}} No connected Breaker Boxes detected! {{/for}} -{{/if}} \ No newline at end of file +{{/if}}