From 91b40eab92babd8f21c2f0073ab91937edd60f64 Mon Sep 17 00:00:00 2001 From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Wed, 2 Sep 2020 11:49:45 +0100 Subject: [PATCH] Removes omni gas devices --- .../components/omni_devices/_omni_extras.dm | 94 ------ .../components/omni_devices/filter.dm | 273 ---------------- .../components/omni_devices/mixer.dm | 291 ----------------- .../components/omni_devices/omni_base.dm | 302 ------------------ code/ATMOSPHERICS/datum_icon_manager.dm | 17 - code/__DEFINES/pipes.dm | 2 - code/datums/pipe_datums.dm | 10 - code/game/machinery/pipe/construction.dm | 16 +- .../examine/descriptions/atmospherics.dm | 9 - icons/atmos/omni_devices.dmi | Bin 13522 -> 0 bytes nano/templates/omni_filter.tmpl | 86 ----- nano/templates/omni_mixer.tmpl | 101 ------ paradise.dme | 4 - 13 files changed, 2 insertions(+), 1203 deletions(-) delete mode 100644 code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm delete mode 100644 code/ATMOSPHERICS/components/omni_devices/filter.dm delete mode 100644 code/ATMOSPHERICS/components/omni_devices/mixer.dm delete mode 100644 code/ATMOSPHERICS/components/omni_devices/omni_base.dm delete mode 100644 icons/atmos/omni_devices.dmi delete mode 100644 nano/templates/omni_filter.tmpl delete mode 100644 nano/templates/omni_mixer.tmpl diff --git a/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm b/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm deleted file mode 100644 index d03329e24fc..00000000000 --- a/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm +++ /dev/null @@ -1,94 +0,0 @@ -//-------------------------------------------- -// Omni device port types -//-------------------------------------------- -#define ATM_NONE 0 -#define ATM_INPUT 1 -#define ATM_OUTPUT 2 - -#define ATM_O2 3 -#define ATM_N2 4 -#define ATM_CO2 5 -#define ATM_P 6 //Plasma -#define ATM_N2O 7 - -//-------------------------------------------- -// Omni port datum -// -// Used by omni devices to manage connections -// to other atmospheric objects. -//-------------------------------------------- -/datum/omni_port - var/obj/machinery/atmospherics/omni/master - var/dir - var/update = 1 - var/mode = 0 - var/concentration = 0 - var/con_lock = 0 - var/transfer_moles = 0 - var/datum/gas_mixture/air - var/obj/machinery/atmospherics/node - var/datum/pipeline/parent - -/datum/omni_port/New(var/obj/machinery/atmospherics/omni/M, var/direction = NORTH) - ..() - dir = direction - if(istype(M)) - master = M - air = new - air.volume = 200 - -/datum/omni_port/proc/connect() - if(node) - return - master.atmos_init() - if(node) - node.atmos_init() - node.addMember(master) - master.build_network() - -/datum/omni_port/proc/disconnect() - if(node) - node.disconnect(master) - node = null - master.nullifyPipenet(parent) - -//-------------------------------------------- -// Need to find somewhere else for these -//-------------------------------------------- - -//returns a text string based on the direction flag input -// if capitalize is true, it will return the string capitalized -// otherwise it will return the direction string in lower case -/proc/dir_name(var/dir, var/capitalize = 0) - var/string = null - switch(dir) - if(NORTH) - string = "North" - if(SOUTH) - string = "South" - if(EAST) - string = "East" - if(WEST) - string = "West" - - if(!capitalize && string) - string = lowertext(string) - - return string - -//returns a direction flag based on the string passed to it -// case insensitive -/proc/dir_flag(var/dir) - dir = lowertext(dir) - switch(dir) - if("north") - return NORTH - if("south") - return SOUTH - if("east") - return EAST - if("west") - return WEST - else - return 0 - diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm deleted file mode 100644 index 0803d34e522..00000000000 --- a/code/ATMOSPHERICS/components/omni_devices/filter.dm +++ /dev/null @@ -1,273 +0,0 @@ -//-------------------------------------------- -// Gas filter - omni variant -//-------------------------------------------- -/obj/machinery/atmospherics/omni/filter - name = "omni gas filter" - icon_state = "map_filter" - - var/list/o_filters = new() - var/datum/omni_port/input - var/datum/omni_port/output - -/obj/machinery/atmospherics/omni/filter/Destroy() - input = null - output = null - o_filters.Cut() - return ..() - -/obj/machinery/atmospherics/omni/filter/sort_ports() - for(var/datum/omni_port/P in ports) - if(P.update) - if(output == P) - output = null - if(input == P) - input = null - if(o_filters.Find(P)) - o_filters -= P - - P.air.volume = 200 - switch(P.mode) - if(ATM_INPUT) - input = P - if(ATM_OUTPUT) - output = P - if(ATM_O2 to ATM_N2O) - o_filters += P - -/obj/machinery/atmospherics/omni/filter/error_check() - if(!input || !output || !o_filters) - return 1 - if(o_filters.len < 1 || o_filters.len > 2) //requires 1 or 2 o_filters ~otherwise why are you using a filter? - return 1 - - return 0 - -/obj/machinery/atmospherics/omni/filter/process_atmos() - ..() - if(!on) - return 0 - - if(!input || !output) - return 0 - - var/datum/gas_mixture/output_air = output.air //BYOND doesn't like referencing "output.air.return_pressure()" so we need to make a direct reference - var/datum/gas_mixture/input_air = input.air // it's completely happy with them if they're in a loop though i.e. "P.air.return_pressure()"... *shrug* - - var/output_pressure = output_air.return_pressure() - - if(output_pressure >= target_pressure) - return 1 - for(var/datum/omni_port/P in o_filters) - if(P.air.return_pressure() >= target_pressure) - return 1 - - var/pressure_delta = target_pressure - output_pressure - - if(input_air.return_temperature() > 0) - input.transfer_moles = pressure_delta * output_air.volume / (input_air.return_temperature() * R_IDEAL_GAS_EQUATION) - - if(input.transfer_moles > 0) - var/datum/gas_mixture/removed = input_air.remove(input.transfer_moles) - - if(!removed) - return 1 - - for(var/datum/omni_port/P in o_filters) - var/datum/gas_mixture/filtered_out = new - filtered_out.temperature = removed.return_temperature() - - switch(P.mode) - if(ATM_O2) - filtered_out.oxygen = removed.oxygen - removed.oxygen = 0 - if(ATM_N2) - filtered_out.nitrogen = removed.nitrogen - removed.nitrogen = 0 - if(ATM_CO2) - filtered_out.carbon_dioxide = removed.carbon_dioxide - removed.carbon_dioxide = 0 - if(ATM_P) - filtered_out.toxins = removed.toxins - removed.toxins = 0 - - filtered_out.agent_b = removed.agent_b - removed.agent_b = 0 - if(ATM_N2O) - filtered_out.sleeping_agent = removed.sleeping_agent - removed.sleeping_agent = 0 - else - filtered_out = null - - P.air.merge(filtered_out) - P.parent.update = 1 - - output_air.merge(removed) - output.parent.update = 1 - - input.transfer_moles = 0 - input.parent.update = 1 - - return 1 - -/obj/machinery/atmospherics/omni/filter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, force_open = 0) - usr.set_machine(src) - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "omni_filter.tmpl", "Omni Filter Control", 330, 330) - ui.open() - -/obj/machinery/atmospherics/omni/filter/ui_data(mob/user, datum/topic_state/state) - var/data[0] - - data["power"] = on - data["config"] = configuring - - var/portData[0] - for(var/datum/omni_port/P in ports) - if(!configuring && P.mode == 0) - continue - - var/input = 0 - var/output = 0 - var/filter = 1 - var/f_type = null - switch(P.mode) - if(ATM_INPUT) - input = 1 - filter = 0 - if(ATM_OUTPUT) - output = 1 - filter = 0 - if(ATM_O2 to ATM_N2O) - f_type = mode_send_switch(P.mode) - - portData[++portData.len] = list("dir" = dir_name(P.dir, capitalize = 1), \ - "input" = input, \ - "output" = output, \ - "filter" = filter, \ - "f_type" = f_type) - - if(portData.len) - data["ports"] = portData - if(output) - data["pressure"] = target_pressure - - return data - -/obj/machinery/atmospherics/omni/filter/proc/mode_send_switch(var/mode = ATM_NONE) - switch(mode) - if(ATM_O2) - return "Oxygen" - if(ATM_N2) - return "Nitrogen" - if(ATM_CO2) - return "Carbon Dioxide" - if(ATM_P) - return "Plasma" //*cough* Plasma *cough* - if(ATM_N2O) - return "Nitrous Oxide" - else - return null - -/obj/machinery/atmospherics/omni/filter/Topic(href, href_list) - if(..()) - return 1 - switch(href_list["command"]) - if("power") - if(!configuring) - on = !on - else - on = 0 - if("configure") - configuring = !configuring - if(configuring) - on = 0 - - //only allows config changes when in configuring mode ~otherwise you'll get weird pressure stuff going on - if(configuring && !on) - switch(href_list["command"]) - if("set_pressure") - var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num - target_pressure = between(0, new_pressure, 4500) - if("switch_mode") - switch_mode(dir_flag(href_list["dir"]), mode_return_switch(href_list["mode"])) - if("switch_filter") - var/new_filter = input(usr,"Select filter mode:","Change filter",href_list["mode"]) in list("None", "Oxygen", "Nitrogen", "Carbon Dioxide", "Plasma", "Nitrous Oxide") - switch_filter(dir_flag(href_list["dir"]), mode_return_switch(new_filter)) - - update_icon() - SSnanoui.update_uis(src) - return - -/obj/machinery/atmospherics/omni/filter/proc/mode_return_switch(var/mode) - switch(mode) - if("Oxygen") - return ATM_O2 - if("Nitrogen") - return ATM_N2 - if("Carbon Dioxide") - return ATM_CO2 - if("Plasma") - return ATM_P - if("Nitrous Oxide") - return ATM_N2O - if("in") - return ATM_INPUT - if("out") - return ATM_OUTPUT - if("None") - return ATM_NONE - else - return null - -/obj/machinery/atmospherics/omni/filter/proc/switch_filter(var/dir, var/mode) - //check they aren't trying to disable the input or output ~this can only happen if they hack the cached tmpl file - for(var/datum/omni_port/P in ports) - if(P.dir == dir) - if(P.mode == ATM_INPUT || P.mode == ATM_OUTPUT) - return - - switch_mode(dir, mode) - -/obj/machinery/atmospherics/omni/filter/proc/switch_mode(var/port, var/mode) - if(mode == null || !port) - return - var/datum/omni_port/target_port = null - var/list/other_ports = new() - - for(var/datum/omni_port/P in ports) - if(P.dir == port) - target_port = P - else - other_ports += P - - var/previous_mode = null - if(target_port) - previous_mode = target_port.mode - target_port.mode = mode - if(target_port.mode != previous_mode) - handle_port_change(target_port) - else - return - else - return - - for(var/datum/omni_port/P in other_ports) - if(P.mode == mode) - var/old_mode = P.mode - P.mode = previous_mode - if(P.mode != old_mode) - handle_port_change(P) - - update_ports() - -/obj/machinery/atmospherics/omni/filter/proc/handle_port_change(var/datum/omni_port/P) - switch(P.mode) - if(ATM_NONE) - initialize_directions &= ~P.dir - P.disconnect() - else - initialize_directions |= P.dir - P.connect() - P.update = 1 diff --git a/code/ATMOSPHERICS/components/omni_devices/mixer.dm b/code/ATMOSPHERICS/components/omni_devices/mixer.dm deleted file mode 100644 index 5586bdc3a98..00000000000 --- a/code/ATMOSPHERICS/components/omni_devices/mixer.dm +++ /dev/null @@ -1,291 +0,0 @@ -//-------------------------------------------- -// Gas mixer - omni variant -//-------------------------------------------- -/obj/machinery/atmospherics/omni/mixer - name = "omni gas mixer" - icon_state = "map_mixer" - - var/list/inputs = new() - var/datum/omni_port/output - - //setup tags for initial concentration values (must be decimal) - var/tag_north_con - var/tag_south_con - var/tag_east_con - var/tag_west_con - -/obj/machinery/atmospherics/omni/mixer/New() - ..() - if(mapper_set()) - var/con = 0 - for(var/datum/omni_port/P in ports) - switch(P.dir) - if(NORTH) - if(tag_north_con && tag_north == 1) - P.concentration = tag_north_con - con += max(0, tag_north_con) - if(SOUTH) - if(tag_south_con && tag_south == 1) - P.concentration = tag_south_con - con += max(0, tag_south_con) - if(EAST) - if(tag_east_con && tag_east == 1) - P.concentration = tag_east_con - con += max(0, tag_east_con) - if(WEST) - if(tag_west_con && tag_west == 1) - P.concentration = tag_west_con - con += max(0, tag_west_con) - - //mappers who are bad at maths will be punished (total concentration must be 100%) - if(con != 1) - tag_north_con = null - tag_south_con = null - tag_east_con = null - tag_west_con = null - -/obj/machinery/atmospherics/omni/mixer/Destroy() - inputs.Cut() - output = null - return ..() - -/obj/machinery/atmospherics/omni/mixer/sort_ports() - for(var/datum/omni_port/P in ports) - if(P.update) - if(output == P) - output = null - if(inputs.Find(P)) - inputs -= P - - P.air.volume = 200 - switch(P.mode) - if(ATM_INPUT) - inputs += P - if(ATM_OUTPUT) - output = P - - if(!mapper_set()) - for(var/datum/omni_port/P in inputs) - P.concentration = 1 / max(1, inputs.len) - - if(output) - output.air.volume *= 0.75 * inputs.len - output.concentration = 1 - -/obj/machinery/atmospherics/omni/mixer/proc/mapper_set() - return (tag_north_con || tag_south_con || tag_east_con || tag_west_con) - -/obj/machinery/atmospherics/omni/mixer/error_check() - if(!output || !inputs) - return 1 - if(inputs.len < 2 || inputs.len > 3) //requires 2 or 3 inputs ~otherwise why are you using a mixer? - return 1 - - return 0 - -/obj/machinery/atmospherics/omni/mixer/process_atmos() - ..() - if(!on) - return 0 - - var/datum/gas_mixture/output_air = output.air - var/output_pressure = output_air.return_pressure() - - - if(output_pressure >= target_pressure * 0.999) - //No need to mix if target is already full! - 0.1% margin of error so we minimize processing minor gas volumes - return 1 - - //Calculate necessary moles to transfer using PV=nRT - - var/pressure_delta = target_pressure - output_pressure - - for(var/datum/omni_port/P in inputs) - if(P.air.return_temperature() > 0) - P.transfer_moles = (P.concentration * pressure_delta) * output_air.return_volume() / (P.air.return_temperature() * R_IDEAL_GAS_EQUATION) - - var/ratio_check = null - - for(var/datum/omni_port/P in inputs) - if(!P.transfer_moles) - return 1 - if(P.air.total_moles() < P.transfer_moles) - ratio_check = 1 - continue - - if(ratio_check) - var/list/ratio_list = new() - for(var/datum/omni_port/P in inputs) - ratio_list.Add(P.air.total_moles() / P.transfer_moles) - - var/ratio = min(ratio_list) - - for(var/datum/omni_port/P in inputs) - P.transfer_moles *= ratio - - for(var/datum/omni_port/P in inputs) - if(P.transfer_moles > 0) - output_air.merge(P.air.remove(P.transfer_moles)) - P.parent.update = 1 - P.transfer_moles = 0 - - output.parent.update = 1 - - return 1 - -/obj/machinery/atmospherics/omni/mixer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, force_open = 0) - usr.set_machine(src) - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "omni_mixer.tmpl", "Omni Mixer Control", 360, 330) - ui.open() - -/obj/machinery/atmospherics/omni/mixer/ui_data(mob/user, datum/topic_state/state) - var/data[0] - - data["power"] = on - data["config"] = configuring - - var/portData[0] - for(var/datum/omni_port/P in ports) - if(!configuring && P.mode == 0) - continue - - var/input = 0 - var/output = 0 - switch(P.mode) - if(ATM_INPUT) - input = 1 - if(ATM_OUTPUT) - output = 1 - - portData[++portData.len] = list("dir" = dir_name(P.dir, capitalize = 1), \ - "concentration" = P.concentration, \ - "input" = input, \ - "output" = output, \ - "con_lock" = P.con_lock) - - if(portData.len) - data["ports"] = portData - if(output) - data["pressure"] = target_pressure - - return data - -/obj/machinery/atmospherics/omni/mixer/Topic(href, href_list) - if(..()) - return 1 - - switch(href_list["command"]) - if("power") - if(!configuring) - on = !on - else - on = 0 - if("configure") - configuring = !configuring - if(configuring) - on = 0 - - //only allows config changes when in configuring mode ~otherwise you'll get weird pressure stuff going on - if(configuring && !on) - switch(href_list["command"]) - if("set_pressure") - var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num - target_pressure = between(0, new_pressure, 4500) - if("switch_mode") - switch_mode(dir_flag(href_list["dir"]), href_list["mode"]) - if("switch_con") - change_concentration(dir_flag(href_list["dir"])) - if("switch_conlock") - con_lock(dir_flag(href_list["dir"])) - - update_icon() - SSnanoui.update_uis(src) - return - -/obj/machinery/atmospherics/omni/mixer/proc/switch_mode(var/port = NORTH, var/mode = ATM_NONE) - if(mode != ATM_INPUT && mode != ATM_OUTPUT) - switch(mode) - if("in") - mode = ATM_INPUT - if("out") - mode = ATM_OUTPUT - else - mode = ATM_NONE - - for(var/datum/omni_port/P in ports) - var/old_mode = P.mode - if(P.dir == port) - switch(mode) - if(ATM_INPUT) - if(P.mode == ATM_OUTPUT) - return - P.mode = mode - if(ATM_OUTPUT) - P.mode = mode - if(ATM_NONE) - if(P.mode == ATM_OUTPUT) - return - if(P.mode == ATM_INPUT && inputs.len > 2) - P.mode = mode - else if(P.mode == ATM_OUTPUT && mode == ATM_OUTPUT) - P.mode = ATM_INPUT - if(P.mode != old_mode) - switch(P.mode) - if(ATM_NONE) - initialize_directions &= ~P.dir - P.disconnect() - else - initialize_directions |= P.dir - P.connect() - P.update = 1 - - update_ports() - -/obj/machinery/atmospherics/omni/mixer/proc/change_concentration(var/port = NORTH) - tag_north_con = null - tag_south_con = null - tag_east_con = null - tag_west_con = null - - var/old_con = 0 - var/non_locked = 0 - var/remain_con = 1 - - for(var/datum/omni_port/P in inputs) - if(P.dir == port) - old_con = P.concentration - else if(!P.con_lock) - non_locked++ - else - remain_con -= P.concentration - - //return if no adjustable ports - if(non_locked < 1) - return - - var/new_con = (input(usr,"Enter a new concentration (0-[round(remain_con * 100, 0.5)])%","Concentration control", min(remain_con, old_con)*100) as num) / 100 - - //cap it between 0 and the max remaining concentration - new_con = between(0, new_con, remain_con) - - //new_con = min(remain_con, new_con) - - //clamp remaining concentration so we don't go into negatives - remain_con = max(0, remain_con - new_con) - - //distribute remaining concentration between unlocked ports evenly - remain_con /= max(1, non_locked) - - for(var/datum/omni_port/P in inputs) - if(P.dir == port) - P.concentration = new_con - else if(!P.con_lock) - P.concentration = remain_con - -/obj/machinery/atmospherics/omni/mixer/proc/con_lock(var/port = NORTH) - for(var/datum/omni_port/P in inputs) - if(P.dir == port) - P.con_lock = !P.con_lock diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm deleted file mode 100644 index d75e2e683c1..00000000000 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ /dev/null @@ -1,302 +0,0 @@ -//-------------------------------------------- -// Base omni device -//-------------------------------------------- -/obj/machinery/atmospherics/omni - name = "omni device" - icon = 'icons/atmos/omni_devices.dmi' - icon_state = "base" - use_power = IDLE_POWER_USE - initialize_directions = 0 - - can_unwrench = 1 - - var/on = 0 - var/configuring = 0 - var/target_pressure = ONE_ATMOSPHERE - - var/tag_north = ATM_NONE - var/tag_south = ATM_NONE - var/tag_east = ATM_NONE - var/tag_west = ATM_NONE - - var/overlays_on[5] - var/overlays_off[5] - var/overlays_error[2] - var/underlays_current[4] - - var/list/ports = new() - -/obj/machinery/atmospherics/omni/New() - ..() - icon_state = "base" - - ports = new() - for(var/d in GLOB.cardinal) - var/datum/omni_port/new_port = new(src, d) - switch(d) - if(NORTH) - new_port.mode = tag_north - if(SOUTH) - new_port.mode = tag_south - if(EAST) - new_port.mode = tag_east - if(WEST) - new_port.mode = tag_west - if(new_port.mode > 0) - initialize_directions |= d - ports += new_port - - build_icons() - -/obj/machinery/atmospherics/omni/Destroy() - for(var/datum/omni_port/P in ports) - if(P.node) - P.node.disconnect(src) - P.node = null - nullifyPipenet(P.parent) - return ..() - -/obj/machinery/atmospherics/omni/atmos_init() - ..() - for(var/datum/omni_port/P in ports) - if(P.node || P.mode == 0) - continue - for(var/obj/machinery/atmospherics/target in get_step(src, P.dir)) - if(target.initialize_directions & get_dir(target,src)) - P.node = target - break - - for(var/datum/omni_port/P in ports) - P.update = 1 - - update_ports() - -/obj/machinery/atmospherics/omni/update_icon() - ..() - - if(stat & NOPOWER) - overlays = overlays_off - on = 0 - else if(error_check()) - overlays = overlays_error - on = 0 - else - overlays = on ? (overlays_on) : (overlays_off) - - underlays = underlays_current - -/obj/machinery/atmospherics/omni/proc/error_check() - return - -/obj/machinery/atmospherics/omni/power_change() - var/old_stat = stat - ..() - if(old_stat != stat) - update_icon() - -/obj/machinery/atmospherics/omni/attackby(var/obj/item/W as obj, var/mob/user as mob, params) - if(!istype(W, /obj/item/wrench)) - return ..() - - if(can_unwrench) - var/int_pressure = 0 - for(var/datum/omni_port/P in ports) - int_pressure += P.air.return_pressure() - var/datum/gas_mixture/env_air = loc.return_air() - if((int_pressure - env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - to_chat(user, "You cannot unwrench [src], it is too exerted due to internal pressure.") - add_fingerprint(user) - return 1 - playsound(loc, W.usesound, 50, 1) - to_chat(user, "You begin to unfasten \the [src]...") - if(do_after(user, 40 * W.toolspeed, target = src)) - user.visible_message( \ - "[user] unfastens \the [src].", \ - "You have unfastened \the [src].", \ - "You hear a ratchet.") - new /obj/item/pipe(loc, make_from=src) - qdel(src) - else - return ..() - -/obj/machinery/atmospherics/omni/attack_hand(mob/user) - if(..()) - return - - add_fingerprint(usr) - ui_interact(user) - -/obj/machinery/atmospherics/omni/attack_ghost(mob/user) - ui_interact(user) - -/obj/machinery/atmospherics/omni/proc/build_icons() - if(!check_icon_cache()) - return - - var/core_icon = null - if(istype(src, /obj/machinery/atmospherics/omni/mixer)) - core_icon = "mixer" - else if(istype(src, /obj/machinery/atmospherics/omni/filter)) - core_icon = "filter" - else - return - - //directional icons are layers 1-4, with the core icon on layer 5 - if(core_icon) - overlays_off[5] = GLOB.pipe_icon_manager.get_atmos_icon("omni", , , core_icon) - overlays_on[5] = GLOB.pipe_icon_manager.get_atmos_icon("omni", , , core_icon + "_glow") - - overlays_error[1] = GLOB.pipe_icon_manager.get_atmos_icon("omni", , , core_icon) - overlays_error[2] = GLOB.pipe_icon_manager.get_atmos_icon("omni", , , "error") - -/obj/machinery/atmospherics/omni/proc/update_port_icons() - if(!check_icon_cache()) - return - - for(var/datum/omni_port/P in ports) - if(P.update) - var/ref_layer = 0 - switch(P.dir) - if(NORTH) - ref_layer = 1 - if(SOUTH) - ref_layer = 2 - if(EAST) - ref_layer = 3 - if(WEST) - ref_layer = 4 - - if(!ref_layer) - continue - - var/list/port_icons = select_port_icons(P) - if(port_icons) - if(P.node) - underlays_current[ref_layer] = port_icons["pipe_icon"] - else - underlays_current[ref_layer] = null - overlays_off[ref_layer] = port_icons["off_icon"] - overlays_on[ref_layer] = port_icons["on_icon"] - else - underlays_current[ref_layer] = null - overlays_off[ref_layer] = null - overlays_on[ref_layer] = null - - update_icon() - -/obj/machinery/atmospherics/omni/proc/select_port_icons(var/datum/omni_port/P) - if(!istype(P)) - return - - if(P.mode > 0) - var/ic_dir = dir_name(P.dir) - var/ic_on = ic_dir - var/ic_off = ic_dir - switch(P.mode) - if(ATM_INPUT) - ic_on += "_in_glow" - ic_off += "_in" - if(ATM_OUTPUT) - ic_on += "_out_glow" - ic_off += "_out" - if(ATM_O2 to ATM_N2O) - ic_on += "_filter" - ic_off += "_out" - - ic_on = GLOB.pipe_icon_manager.get_atmos_icon("omni", , , ic_on) - ic_off = GLOB.pipe_icon_manager.get_atmos_icon("omni", , , ic_off) - - var/pipe_state - var/turf/T = get_turf(src) - if(!istype(T)) - return - if(T.intact && istype(P.node, /obj/machinery/atmospherics/pipe) && P.node.level == 1 ) - //pipe_state = GLOB.pipe_icon_manager.get_atmos_icon("underlay_down", P.dir, color_cache_name(P.node)) - pipe_state = GLOB.pipe_icon_manager.get_atmos_icon("underlay", P.dir, color_cache_name(P.node), "down") - else - //pipe_state = GLOB.pipe_icon_manager.get_atmos_icon("underlay_intact", P.dir, color_cache_name(P.node)) - pipe_state = GLOB.pipe_icon_manager.get_atmos_icon("underlay", P.dir, color_cache_name(P.node), "intact") - - return list("on_icon" = ic_on, "off_icon" = ic_off, "pipe_icon" = pipe_state) - -/obj/machinery/atmospherics/omni/update_underlays() - for(var/datum/omni_port/P in ports) - P.update = 1 - update_ports() - -/obj/machinery/atmospherics/omni/hide(var/i) - update_underlays() - -/obj/machinery/atmospherics/omni/proc/update_ports() - sort_ports() - update_port_icons() - for(var/datum/omni_port/P in ports) - P.update = 0 - -/obj/machinery/atmospherics/omni/proc/sort_ports() - return - -// Pipenet procs -/obj/machinery/atmospherics/omni/build_network(remove_deferral = FALSE) - for(var/datum/omni_port/P in ports) - if(!P.parent) - P.parent = new /datum/pipeline() - P.parent.build_pipeline(src) - ..() - -/obj/machinery/atmospherics/omni/disconnect(obj/machinery/atmospherics/reference) - for(var/datum/omni_port/P in ports) - if(reference == P.node) - if(istype(P.node, /obj/machinery/atmospherics/pipe)) - qdel(P.parent) - P.node = null - update_ports() - -/obj/machinery/atmospherics/omni/nullifyPipenet(datum/pipeline/P) - ..() - if(!P) - return - for(var/datum/omni_port/PO in ports) - if(P == PO.parent) - PO.parent.other_airs -= PO.air - PO.parent = null - -/obj/machinery/atmospherics/omni/returnPipenetAir(datum/pipeline/P) - for(var/datum/omni_port/PO in ports) - if(P == PO.parent) - return PO.air - -/obj/machinery/atmospherics/omni/pipeline_expansion(datum/pipeline/P) - if(P) - for(var/datum/omni_port/PO in ports) - if(PO.parent == P) - return list(PO.node) - else - var/list/nodes = list() - for(var/datum/omni_port/PO in ports) - nodes += PO.node - - return nodes - -/obj/machinery/atmospherics/omni/setPipenet(datum/pipeline/P, obj/machinery/atmospherics/A) - for(var/datum/omni_port/PO in ports) - if(A == PO.node) - PO.parent = P - -/obj/machinery/atmospherics/omni/returnPipenet(obj/machinery/atmospherics/A) - for(var/datum/omni_port/P in ports) - if(A == P.node) - return P.parent - -/obj/machinery/atmospherics/omni/replacePipenet(datum/pipeline/Old, datum/pipeline/New) - for(var/datum/omni_port/P in ports) - if(Old == P.parent) - P.parent = New - - -/obj/machinery/atmospherics/omni/process_atmos() - ..() - for(var/datum/omni_port/port in ports) - if(!port.parent) - return 0 - return 1 diff --git a/code/ATMOSPHERICS/datum_icon_manager.dm b/code/ATMOSPHERICS/datum_icon_manager.dm index 2286b3523a0..014fafc5c18 100644 --- a/code/ATMOSPHERICS/datum_icon_manager.dm +++ b/code/ATMOSPHERICS/datum_icon_manager.dm @@ -33,7 +33,6 @@ //var/list/underlays_intact[] //var/list/pipe_underlays_exposed[] //var/list/pipe_underlays_intact[] - var/list/omni_icons[] /datum/pipe_icon_manager/New() check_icons() @@ -53,8 +52,6 @@ return manifold_icons[state + color] if("device") return device_icons[state] - if("omni") - return omni_icons[state] if("underlay") return underlays[state + dir + color] //if("underlay_intact") @@ -75,8 +72,6 @@ gen_manifold_icons() if(!device_icons) gen_device_icons() - if(!omni_icons) - gen_omni_icons() //if(!underlays_intact || !underlays_down || !underlays_exposed || !pipe_underlays_exposed || !pipe_underlays_intact) if(!underlays) gen_underlay_icons() @@ -150,18 +145,6 @@ continue device_icons["scrubber" + state] = image('icons/atmos/vent_scrubber.dmi', icon_state = state) -/datum/pipe_icon_manager/proc/gen_omni_icons() - if(!omni_icons) - omni_icons = new() - - var/icon/omni = new('icons/atmos/omni_devices.dmi') - - for(var/state in omni.IconStates()) - if(!state || findtext(state, "map")) - continue - omni_icons[state] = image('icons/atmos/omni_devices.dmi', icon_state = state) - - /datum/pipe_icon_manager/proc/gen_underlay_icons() if(!underlays) diff --git a/code/__DEFINES/pipes.dm b/code/__DEFINES/pipes.dm index c855a5e4260..d56d446ca1d 100644 --- a/code/__DEFINES/pipes.dm +++ b/code/__DEFINES/pipes.dm @@ -21,8 +21,6 @@ #define PIPE_TVALVE 18 #define PIPE_MANIFOLD4W 19 #define PIPE_CAP 20 -#define PIPE_OMNI_MIXER 21 -#define PIPE_OMNI_FILTER 22 #define PIPE_UNIVERSAL 23 #define PIPE_SUPPLY_STRAIGHT 24 #define PIPE_SUPPLY_BENT 25 diff --git a/code/datums/pipe_datums.dm b/code/datums/pipe_datums.dm index 83b77425447..8d3b0807f9c 100644 --- a/code/datums/pipe_datums.dm +++ b/code/datums/pipe_datums.dm @@ -351,16 +351,6 @@ GLOBAL_LIST_EMPTY(rpd_pipe_list) //Some pipes we don't want to be dispensable pipe_id = PIPE_CIRCULATOR pipe_icon = "circ" -/datum/pipes/atmospheric/omni_filter - pipe_name = "omni filter" - pipe_id = PIPE_OMNI_FILTER - pipe_icon = "omni_filter" - -/datum/pipes/atmospheric/omni_mixer - pipe_name = "omni mixer" - pipe_id = PIPE_OMNI_MIXER - pipe_icon = "omni_mixer" - /datum/pipes/atmospheric/insulated pipe_name = "insulated pipe" pipe_id = PIPE_INSULATED_STRAIGHT diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 42452a9f8e2..a8c9710ff6c 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -106,10 +106,6 @@ else if(istype(make_from, /obj/machinery/atmospherics/unary/passive_vent)) src.pipe_type = PIPE_PASV_VENT - else if(istype(make_from, /obj/machinery/atmospherics/omni/mixer)) - src.pipe_type = PIPE_OMNI_MIXER - else if(istype(make_from, /obj/machinery/atmospherics/omni/filter)) - src.pipe_type = PIPE_OMNI_FILTER else if(istype(make_from, /obj/machinery/atmospherics/binary/circulator)) src.pipe_type = PIPE_CIRCULATOR @@ -259,7 +255,7 @@ return dir //dir|acw if(PIPE_CONNECTOR, PIPE_UVENT, PIPE_PASV_VENT, PIPE_SCRUBBER, PIPE_HEAT_EXCHANGE, PIPE_INJECTOR) return dir|flip - if(PIPE_MANIFOLD4W, PIPE_SUPPLY_MANIFOLD4W, PIPE_SCRUBBERS_MANIFOLD4W, PIPE_OMNI_MIXER, PIPE_OMNI_FILTER) + if(PIPE_MANIFOLD4W, PIPE_SUPPLY_MANIFOLD4W, PIPE_SCRUBBERS_MANIFOLD4W) return dir|flip|cw|acw if(PIPE_MANIFOLD, PIPE_SUPPLY_MANIFOLD, PIPE_SCRUBBERS_MANIFOLD) return flip|cw|acw @@ -317,7 +313,7 @@ dir = 1 else if(dir==8) dir = 4 - else if(pipe_type in list(PIPE_MANIFOLD4W, PIPE_SUPPLY_MANIFOLD4W, PIPE_SCRUBBERS_MANIFOLD4W, PIPE_OMNI_MIXER, PIPE_OMNI_FILTER)) + else if(pipe_type in list(PIPE_MANIFOLD4W, PIPE_SUPPLY_MANIFOLD4W, PIPE_SCRUBBERS_MANIFOLD4W)) dir = 2 /obj/item/pipe/attack_self(mob/user as mob) @@ -499,14 +495,6 @@ P.name = pipename P.on_construction(dir, pipe_dir, color) - if(PIPE_OMNI_MIXER) - var/obj/machinery/atmospherics/omni/mixer/P = new(loc) - P.on_construction(dir, pipe_dir, color) - - if(PIPE_OMNI_FILTER) - var/obj/machinery/atmospherics/omni/filter/P = new(loc) - P.on_construction(dir, pipe_dir, color) - user.visible_message( \ "[user] fastens the [src].", \ "You have fastened the [src].", \ diff --git a/code/modules/examine/descriptions/atmospherics.dm b/code/modules/examine/descriptions/atmospherics.dm index 2b113a303d8..fb723336d85 100644 --- a/code/modules/examine/descriptions/atmospherics.dm +++ b/code/modules/examine/descriptions/atmospherics.dm @@ -127,15 +127,6 @@ description_info = "This filters the atmosphere of harmful gas. Filtered gas goes to the pipes connected to it, typically a scrubber pipe. \ It can be controlled from an Air Alarm. It can be configured to drain all air rapidly with a 'panic syphon' from an air alarm." -//Omni filters -/obj/machinery/atmospherics/omni/filter - description_info = "Filters gas from a custom input direction, with up to two filtered outputs and a 'everything else' \ - output. The filtered output's arrows glow orange." - -//Omni mixers -/obj/machinery/atmospherics/omni/mixer - description_info = "Combines gas from custom input and output directions. The percentage of combined gas can be defined." - //Canisters /obj/machinery/portable_atmospherics/canister description_info = "The canister can be connected to a connector port with a wrench. Tanks of gas (the kind you can hold in your hand) \ diff --git a/icons/atmos/omni_devices.dmi b/icons/atmos/omni_devices.dmi deleted file mode 100644 index 3e7325b05568e5d8ee55da1b05fc3e72e181230b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13522 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 -
- {{:helper.link(data.power ? 'On' : 'Off', null, {'command' : 'power'}, data.config ? 'disabled' : null)}} -
-
- {{:helper.link('Configure', null, {'command' : 'configure'}, null, data.config ? 'selected' : null)}} -
- - {{if data.config}} - -
-
-
Port
- {{for data.ports}} -
{{:value.dir}} Port
- {{/for}} -
-
-
Input
- {{for data.ports}} -
- {{:helper.link(' ', null, {'command' : 'switch_mode', 'mode' : 'in', 'dir' : value.dir}, null, value.input ? 'selected' : null)}} -
- {{/for}} -
-
-
Output
- {{for data.ports}} -
- {{:helper.link(' ', null, {'command' : 'switch_mode', 'mode' : 'out', 'dir' : value.dir}, null, value.output ? 'selected' : null)}} -
- {{/for}} -
-
-
Filter
- {{for data.ports}} -
- {{:helper.link(value.f_type ? value.f_type : 'None', null, {'command' : 'switch_filter', 'mode' : value.f_type, 'dir' : value.dir}, value.filter ? null : 'disabled', value.f_type ? 'selected' : null)}} -
- {{/for}} -
-
- -
- Set Flow Rate Limit: {{:(data.set_flow_rate/10)}} L/s -
-
- {{:helper.link('Set Flow Rate Limit', null, {'command' : 'set_flow_rate'})}} -
- - {{else}} - -
-
-
Port
- {{for data.ports}} -
{{:value.dir}} Port
- {{/for}} -
-
-
Mode
- {{for data.ports}} -
- {{if value.input}} - Input - {{else value.output}} - Output - {{else value.f_type}} - {{:value.f_type}} - {{else}} - Disabled - {{/if}} -
- {{/for}} -
-
- -
- Set Flow Rate Limit: {{:(data.set_flow_rate/10)}} L/s -
- -
- Flow Rate: {{:(data.last_flow_rate/10)}} L/s -
- {{/if}} - \ No newline at end of file diff --git a/nano/templates/omni_mixer.tmpl b/nano/templates/omni_mixer.tmpl deleted file mode 100644 index 3d637687553..00000000000 --- a/nano/templates/omni_mixer.tmpl +++ /dev/null @@ -1,101 +0,0 @@ -
-
- {{:helper.link(data.power ? 'On' : 'Off', null, {'command' : 'power'}, data.config ? 'disabled' : null)}} -
-
- {{:helper.link('Configure', null, {'command' : 'configure'}, null, data.config ? 'selected' : null)}} -
- - {{if data.config}} - -
-
-
Port
- {{for data.ports}} -
{{:value.dir}} Port
- {{/for}} -
-
-
Input
- {{for data.ports}} -
- {{:helper.link(' ', null, value.input ? {'command' : 'switch_mode', 'mode' : 'none', 'dir' : value.dir} : {'command' : 'switch_mode', 'mode' : 'in', 'dir' : value.dir}, value.output ? 'disabled' : null, value.input ? 'selected' : null)}} -
- {{/for}} -
-
-
Output
- {{for data.ports}} -
- {{:helper.link(' ', null, value.output ? null : {'command' : 'switch_mode', 'mode' : 'out', 'dir' : value.dir}, null, value.output ? 'selected' : null)}} -
- {{/for}} -
-
-
Concentration
- {{for data.ports}} -
- {{:helper.link( value.input ? helper.round(value.concentration*100)+' %' : '-', null, {'command' : 'switch_con', 'dir' : value.dir}, value.input ? null : 'disabled')}} -
- {{/for}} -
-
-
Lock
- {{for data.ports}} -
- {{:helper.link(' ', value.con_lock ? 'lock' : 'unlock', {'command' : 'switch_conlock', 'dir' : value.dir}, value.input ? null : 'disabled', value.con_lock ? 'selected' : null)}} -
- {{/for}} -
-
- -
- Set Flow Rate Limit: {{:(data.set_flow_rate/10)}} L/s -
-
- {{:helper.link('Set Flow Rate Limit', null, {'command' : 'set_flow_rate'})}} -
- - {{else}} - -
-
-
Port
- {{for data.ports}} -
{{:value.dir}} Port
- {{/for}} -
-
-
Mode
- {{for data.ports}} -
- {{if value.input}} - Input - {{else value.output}} - Output - {{else}} - Disabled - {{/if}} -
- {{/for}} -
-
-
Concentration
- {{for data.ports}} -
- {{if value.input}} - {{:helper.round(value.concentration*100)}} % - {{else}} - - - {{/if}} -
- {{/for}} -
-
- -
- Flow Rate: {{:(data.last_flow_rate/10)}} L/s -
- - {{/if}} -
\ No newline at end of file diff --git a/paradise.dme b/paradise.dme index 5e88b673231..9b33984c5b7 100644 --- a/paradise.dme +++ b/paradise.dme @@ -171,10 +171,6 @@ #include "code\ATMOSPHERICS\components\binary_devices\pump.dm" #include "code\ATMOSPHERICS\components\binary_devices\valve.dm" #include "code\ATMOSPHERICS\components\binary_devices\volume_pump.dm" -#include "code\ATMOSPHERICS\components\omni_devices\_omni_extras.dm" -#include "code\ATMOSPHERICS\components\omni_devices\filter.dm" -#include "code\ATMOSPHERICS\components\omni_devices\mixer.dm" -#include "code\ATMOSPHERICS\components\omni_devices\omni_base.dm" #include "code\ATMOSPHERICS\components\trinary_devices\filter.dm" #include "code\ATMOSPHERICS\components\trinary_devices\mixer.dm" #include "code\ATMOSPHERICS\components\trinary_devices\trinary_base.dm"