diff --git a/citadel.dme b/citadel.dme index c9414d382aa..b20c92b8f10 100644 --- a/citadel.dme +++ b/citadel.dme @@ -2278,6 +2278,7 @@ #include "code\modules\atmospherics\machinery\components\trinary_devices\trinary_base.dm" #include "code\modules\atmospherics\machinery\components\trinary_devices\tvalve.dm" #include "code\modules\atmospherics\machinery\components\unary\cold_sink.dm" +#include "code\modules\atmospherics\machinery\components\unary\env_heat_pump.dm" #include "code\modules\atmospherics\machinery\components\unary\generator_input.dm" #include "code\modules\atmospherics\machinery\components\unary\heat_exchanger.dm" #include "code\modules\atmospherics\machinery\components\unary\heat_source.dm" diff --git a/code/game/machinery/doors/airlock/phoronlocks.dm b/code/game/machinery/doors/airlock/phoronlocks.dm index 54fe5e4b894..8d476e5ad14 100644 --- a/code/game/machinery/doors/airlock/phoronlocks.dm +++ b/code/game/machinery/doors/airlock/phoronlocks.dm @@ -105,7 +105,6 @@ /obj/machinery/embedded_controller/radio/airlock/phoron name = "Phoron Lock Controller" valid_actions = list("cycle_ext", "cycle_int", "force_ext", "force_int", "abort", "secure") - var/tag_scrubber /obj/machinery/embedded_controller/radio/airlock/phoron/ui_data(mob/user, datum/tgui/ui) . = list( @@ -124,8 +123,8 @@ //Handles the control of airlocks -/datum/computer/file/embedded_program/airlock/phoron - var/tag_scrubber +//datum/computer/file/embedded_program/airlock/phoron + /datum/computer/file/embedded_program/airlock/phoron/New(var/obj/machinery/embedded_controller/M) ..(M) @@ -140,10 +139,6 @@ memory["target_phoron"] = 0.1 memory["secure"] = 1 - if (istype(M, /obj/machinery/embedded_controller/radio/airlock/phoron)) //if our controller is an airlock controller than we can auto-init our tags - var/obj/machinery/embedded_controller/radio/airlock/phoron/controller = M - tag_scrubber = controller.tag_scrubber ? controller.tag_scrubber : "[id_tag]_scrubber" - /datum/computer/file/embedded_program/airlock/phoron/receive_signal(datum/signal/signal, receive_method, receive_param) var/receive_tag = signal.data["tag"] if(!receive_tag) return @@ -191,7 +186,7 @@ signalPump(tag_airpump, 1, 1, memory["target_pressure"]) // And pressurizng to offset losses memory["processing"] = TRUE else if(fuzzy_smaller_check(memory["chamber_sensor_temperature"], memory["target_temperature"])) - signalScrubber(tag_scrubber, 1)//the scrubbers also work as heats because fuck making sense + signalTemperatureAdjuster(tag_temperature_adjuster, 1, memory["target_temperature"]) memory["processing"] = TRUE else if(fuzzy_smaller_check(memory["chamber_sensor_pressure"], memory["internal_sensor_pressure"])) signalScrubber(tag_scrubber, 0) // stop cleaning @@ -200,10 +195,12 @@ else // both phoron and pressure levels are acceptable toggleDoor(memory["interior_status"],tag_interior_door, 1, "open") signalScrubber(tag_scrubber, 0) + signalTemperatureAdjuster(tag_temperature_adjuster, 0, memory["target_temperature"]) signalPump(tag_airpump, 0, 1, memory["external_sensor_pressure"])//Turn the pump off state = STATE_OPEN_IN memory["processing"] = FALSE if(STATE_CYCLING_OUT) + signalTemperatureAdjuster(tag_temperature_adjuster, 0, memory["target_temperature"]) if(memory["interior_status"]["state"] == "open") toggleDoor(memory["interior_status"],tag_interior_door, 1, "close") else if((memory["chamber_sensor_pressure"] - memory["external_sensor_pressure"]) > 1 ) @@ -231,4 +228,5 @@ /datum/computer/file/embedded_program/airlock/phoron/stop_everything() . = ..() signalScrubber(tag_scrubber, 0)//Turn off scrubbers + signalTemperatureAdjuster(tag_temperature_adjuster, 0, memory["target_temperature"]) diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm index 31fb444e1c0..a02ebf8320f 100644 --- a/code/game/machinery/embedded_controller/airlock_controllers.dm +++ b/code/game/machinery/embedded_controller/airlock_controllers.dm @@ -11,6 +11,8 @@ var/tag_interior_sensor var/tag_airlock_mech_sensor var/tag_shuttle_mech_sensor + var/tag_scrubber + var/tag_temperature_adjuster var/tag_secure = 0 var/list/dummy_terminals = list() var/cycle_to_external_air = 0 diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm index c2ccc1ccee9..1c971c26465 100644 --- a/code/game/machinery/embedded_controller/airlock_program.dm +++ b/code/game/machinery/embedded_controller/airlock_program.dm @@ -13,6 +13,8 @@ var/tag_interior_sensor var/tag_airlock_mech_sensor var/tag_shuttle_mech_sensor + var/tag_scrubber + var/tag_temperature_adjuster var/state = STATE_CLOSED @@ -42,6 +44,8 @@ tag_interior_sensor = controller.tag_interior_sensor || "[id_tag]_interior_sensor" tag_airlock_mech_sensor = controller.tag_airlock_mech_sensor? controller.tag_airlock_mech_sensor : "[id_tag]_airlock_mech" tag_shuttle_mech_sensor = controller.tag_shuttle_mech_sensor? controller.tag_shuttle_mech_sensor : "[id_tag]_shuttle_mech" + tag_scrubber = controller.tag_scrubber ? controller.tag_scrubber : "[id_tag]_scrubber" + tag_temperature_adjuster = controller.tag_temperature_adjuster? controller.tag_temperature_adjuster : "[id_tag]_chamber_temperature" memory["secure"] = controller.tag_secure spawn(10) @@ -209,6 +213,17 @@ ) post_signal(signal) +/datum/computer/file/embedded_program/airlock/proc/signalTemperatureAdjuster(var/tag, var/power, var/temperature) + signalScrubber(tag_scrubber, power)//Temporary hack so mapping changes arent part of this PR + var/datum/signal/signal = new + signal.data = list( + "tag" = tag, + "sigtype" = "command", + "power" = "[power]", + "target_temperature" = "[temperature]", + ) + post_signal(signal) + /datum/computer/file/embedded_program/airlock/proc/signal_mech_sensor(command, sensor) var/datum/signal/signal = new signal.data["tag"] = sensor diff --git a/code/game/machinery/embedded_controller/mapping_helpers.dm b/code/game/machinery/embedded_controller/mapping_helpers.dm index 008e940a45a..3e435bd57d0 100644 --- a/code/game/machinery/embedded_controller/mapping_helpers.dm +++ b/code/game/machinery/embedded_controller/mapping_helpers.dm @@ -133,11 +133,18 @@ Any frequency works, it's self-setting, but it seems like people have decided 13 icon_state = "pumpdout" tag_addon = "_pump_out_external" +/obj/map_helper/airlock/atmos/chamber_temperature_adjuster + name = "chamber temperature adjuster" + icon_state = "temp" + tag_addon = "_chamber_temperature" + my_device_type = /obj/machinery/atmospherics/component/unary/env_heat_pump + /obj/map_helper/airlock/atmos/scrubber name = "chamber scrubber" my_device_type = /obj/machinery/atmospherics/component/unary/vent_scrubber icon_state = "scrubber" tag_addon = "_scrubber" + /* Sensors - did you know they function as buttons? You don't also need a button. */ diff --git a/code/modules/atmospherics/machinery/components/unary/env_heat_pump.dm b/code/modules/atmospherics/machinery/components/unary/env_heat_pump.dm new file mode 100644 index 00000000000..464ae92e327 --- /dev/null +++ b/code/modules/atmospherics/machinery/components/unary/env_heat_pump.dm @@ -0,0 +1,143 @@ + + + + +/obj/machinery/atmospherics/component/unary/env_heat_pump + name = "Room heat exchanger" + icon = 'icons/obj/atmos.dmi' + icon_state = "env_heat_pump" + density = 1 + anchored = 1 + use_power = USE_POWER_OFF + idle_power_usage = 5 // 5 Watts for thermostat related circuitry + pipe_flags = PIPING_ONE_PER_TURF + connect_types = CONNECT_TYPE_AUX + var/env_temp + + var/frequency = 1439 + var/datum/radio_frequency/radio_connection + var/id_tag + + power_rating = 30000 // standard for machinery (including normal pumps) is 7500, heatpumps have 15000 + + var/target_temp = T20C + efficiency_multiplier = 1.5 //Bigger device probably works a bit better than the small cramped one + +/obj/machinery/atmospherics/component/unary/env_heat_pump/Initialize(mapload) + . = ..() + START_MACHINE_PROCESSING(src) + +/obj/machinery/atmospherics/component/unary/env_heat_pump/atmos_init() + . = ..() + if(frequency) + var/radio_filter_in = frequency==1439?(RADIO_FROM_AIRALARM):null + radio_connection = register_radio(src, frequency, frequency, radio_filter_in) + src.broadcast_status() + +/obj/machinery/atmospherics/component/unary/env_heat_pump/Destroy() + . = ..() + STOP_MACHINE_PROCESSING(src) + +/obj/machinery/atmospherics/component/unary/env_heat_pump/update_icon() + . = ..() + if(use_power) + if(env_temp > target_temp+0.001)//We dont work on such minor + icon_state = "env_heat_pump_cool" + else if(env_temp < target_temp-0.001) + icon_state = "env_heat_pump_heat" + else + if(use_power > 1) + icon_state = "env_heat_pump_on" + else + icon_state = "env_heat_pump" + else + icon_state = "env_heat_pump" + +/obj/machinery/atmospherics/component/unary/env_heat_pump/process(delta_time) + . = ..() + update_icon() + if((machine_stat & (NOPOWER|BROKEN)) || !use_power) + use_power = USE_POWER_OFF //We cant operate so we might as well turn off + return + + var/datum/gas_mixture/env = return_air() + + if(!air_contents || !env || !istype(env)) + use_power = USE_POWER_OFF //We cant operate so we might as well turn off + return + + //If there is no air_contents or env the temperature is assumed 0 Kelvin which allows for + if((air_contents.temperature < 1) || (env.temperature < 1)) + use_power = USE_POWER_OFF //We cant operate so we might as well turn off + return + + env_temp = env.temperature + + //Now we are at the point where we need to actively pump + var/efficiency = get_thermal_efficiency(air_contents, env) * efficiency_multiplier + CACHE_VSC_PROP(atmos_vsc, /atmos/heatpump/performance_factor, performance_factor) + + var/actual_performance_factor = performance_factor*efficiency + + var/max_energy_transfer = actual_performance_factor*power_rating + + if(abs(env.temperature - target_temp) < 0.001) // don't want wild swings and too much power use + use_power = USE_POWER_IDLE //We cant operate so we might as well turn off + return + //only adds the energy actually removed from air one to air two(- infront of air_contents because energy was removed) + var/energy_transfered = -air_contents.adjust_thermal_energy(-clamp(env.get_thermal_energy_change(target_temp),-max_energy_transfer,max_energy_transfer)) + energy_transfered=abs(env.adjust_thermal_energy(energy_transfered)) + var/power_draw = abs(energy_transfered/actual_performance_factor) + if (power_draw >= 0) + last_power_draw_legacy = power_draw + use_power(power_draw) + network?.update = 1 + +/obj/machinery/atmospherics/component/unary/env_heat_pump/proc/get_thermal_efficiency(var/datum/gas_mixture/air1, var/datum/gas_mixture/air2) + if((target_temp < air2.temperature)) + return clamp((air2.temperature / air1.temperature), 0, 1) + else if((target_temp > air2.temperature)) + return clamp((air1.temperature / air2.temperature), 0, 1) + + +/obj/machinery/atmospherics/component/unary/env_heat_pump/receive_signal(datum/signal/signal, receive_method, receive_param) + if(machine_stat & (NOPOWER|BROKEN)) + return + + if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) + return 0 + + if(!isnull(signal.data["power"])) + if(text2num(signal.data["power"]) != 0) + use_power = USE_POWER_ACTIVE + else + use_power = USE_POWER_OFF + if(!isnull(signal.data["target_temperature"])) + target_temp = text2num(signal.data["target_temperature"]) + spawn(2) + broadcast_status() + if(signal.data["status"] == null) + update_icon() + + +/obj/machinery/atmospherics/component/unary/env_heat_pump/proc/broadcast_status() + if(!radio_connection) + return 0 + + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + + signal.data = list( + "device" = "EHP", + "power" = use_power, + "target_temp" = target_temp, + "timestamp" = world.time, + "sigtype" = "status", + "power_draw" = last_power_draw_legacy, + "flow_rate" = last_flow_rate_legacy, + ) + + radio_connection.post_signal(src, signal, null) + + return 1 diff --git a/icons/mapping/helpers/mapping_helpers.dmi b/icons/mapping/helpers/mapping_helpers.dmi index 7667a2e2144..f05b32ca111 100644 Binary files a/icons/mapping/helpers/mapping_helpers.dmi and b/icons/mapping/helpers/mapping_helpers.dmi differ diff --git a/icons/misc/map_helpers.dmi b/icons/misc/map_helpers.dmi index 0bc0666eb5a..983bff78d58 100644 Binary files a/icons/misc/map_helpers.dmi and b/icons/misc/map_helpers.dmi differ diff --git a/icons/obj/atmos.dmi b/icons/obj/atmos.dmi index c309e9249e9..a0b7de563be 100644 Binary files a/icons/obj/atmos.dmi and b/icons/obj/atmos.dmi differ diff --git a/maps/minitest/levels/minitest.dmm b/maps/minitest/levels/minitest.dmm index 7243199041e..5cf5be51a79 100644 --- a/maps/minitest/levels/minitest.dmm +++ b/maps/minitest/levels/minitest.dmm @@ -2919,25 +2919,19 @@ /obj/landmark/spawnpoint/overflow/station, /turf/simulated/floor/tiled, /area/bridge) -"jV" = ( -/obj/structure/railing{ +"iw" = ( +/obj/structure/railing, +/obj/structure/railing, +/obj/machinery/atmospherics/component/unary/vent_scrubber, +/obj/map_helper/airlock/atmos/scrubber, +/obj/machinery/light{ dir = 1 }, -/obj/machinery/space_heater, -/turf/simulated/floor/tiled/techmaint, -/area/storage/surface_eva/external) -"ko" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/structure/sign/signnew/cryogenics{ + pixel_y = 32 }, -/turf/simulated/floor/tiled, -/area/medical/medbay) +/turf/simulated/floor/plating, +/area/rift/surfaceeva/airlock/main) "kU" = ( /obj/structure/shuttle, /turf/simulated/shuttle/wall/voidcraft/green, @@ -2947,21 +2941,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/tiled, -/area/medical/medbay) -"lA" = ( -/obj/machinery/door/airlock/glass_external/public{ - name = "Public External Airlock" - }, -/obj/map_helper/airlock/door/int_door, -/obj/effect/floor_decal/steeldecal/steel_decals10{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 10 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/rift/surfaceeva/airlock/main) +/turf/simulated/floor/tiled, +/area/medical/medbay) "lH" = ( /turf/simulated/wall/r_wall/prepainted, /area/rift/surfaceeva/airlock/main) @@ -2976,60 +2960,82 @@ /obj/machinery/meter, /turf/simulated/floor/tiled, /area/medical/medbay) -"lX" = ( -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 9 +"mI" = ( +/obj/structure/railing{ + dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 10 +/obj/structure/sign/fire{ + pixel_y = -32 }, -/obj/map_helper/airlock/atmos/scrubber, -/obj/machinery/atmospherics/component/unary/vent_scrubber, -/turf/simulated/floor/tiled/steel_grid, -/area/rift/surfaceeva/airlock/main) +/obj/machinery/space_heater, +/turf/simulated/floor/tiled/techmaint, +/area/storage/surface_eva/external) "nY" = ( /turf/space/basic, /area/space) -"ok" = ( -/obj/machinery/embedded_controller/radio/airlock/phoron{ - dir = 8; - id_tag = "civ_airlock"; - pixel_x = 25; - pixel_y = -30 - }, -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/airlock_sensor/phoron{ - id_tag = "civ_airlock_sensor"; - pixel_x = 25; - pixel_y = -40 - }, -/obj/map_helper/airlock/sensor/chamber_sensor, -/obj/map_helper/airlock/atmos/scrubber, -/obj/machinery/atmospherics/component/unary/vent_scrubber{ - dir = 1 - }, +"oa" = ( +/obj/machinery/atmospherics/pipe/tank/phoron, /turf/simulated/floor/tiled, -/area/storage/surface_eva/external) +/area/medical/medbay) "oO" = ( /turf/simulated/floor/tiled/steel_grid/lythios43c, /area/space) +"pr" = ( +/obj/structure/railing, +/obj/machinery/atmospherics/component/unary/vent_pump/high_volume, +/obj/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/plating, +/area/rift/surfaceeva/airlock/main) +"pz" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "civ_airlock_inner"; + locked = 1 + }, +/obj/machinery/access_button/airlock_interior{ + master_tag = "civ_airlock"; + pixel_x = 8; + pixel_y = 25 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/storage/surface_eva/external) "pG" = ( /turf/simulated/wall/prepainted, /area/rift/surfaceeva/airlock/main) -"qb" = ( +"qj" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 6 }, /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/hidden{ +/obj/effect/floor_decal/industrial/warning{ dir = 4 }, /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, /turf/simulated/floor/tiled/steel_grid, /area/rift/surfaceeva/airlock/main) "ql" = ( @@ -3048,15 +3054,6 @@ }, /turf/simulated/shuttle/floor/voidcraft/light, /area/shuttle/overmapdemo) -"qN" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/medical/medbay) "qR" = ( /obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ dir = 4; @@ -3071,6 +3068,10 @@ /obj/map_helper/airlock/sensor/chamber_sensor, /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) +"ru" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/medical/medbay) "rJ" = ( /obj/machinery/atmospherics/pipe/tank/air, /turf/simulated/floor/tiled, @@ -3089,11 +3090,6 @@ "sn" = ( /turf/simulated/mineral, /area/storage/surface_eva/external) -"sq" = ( -/obj/structure/railing, -/obj/structure/grille, -/turf/simulated/floor/plating, -/area/rift/surfaceeva/airlock/main) "sv" = ( /turf/unsimulated/mineral/virgo3b, /area/space) @@ -3102,61 +3098,18 @@ /turf/space, /turf/simulated/shuttle/plating/carry, /area/shuttle/multidemo) -"sQ" = ( -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 5 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 1 - }, -/obj/structure/cable/green{ +"ts" = ( +/obj/structure/cable{ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/rift/surfaceeva/airlock/main) -"tk" = ( -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 10 }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/rift/surfaceeva/airlock/main) -"tU" = ( -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 5 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/cable/green{ - icon_state = "1-4"; - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 9 }, -/turf/simulated/floor/tiled/steel_grid, -/area/rift/surfaceeva/airlock/main) +/turf/simulated/floor/tiled, +/area/medical/medbay) "vl" = ( /obj/machinery/access_button/airlock_exterior{ master_tag = "civ_airlock"; @@ -3199,11 +3152,25 @@ }, /turf/simulated/shuttle/floor/voidcraft/light, /area/shuttle/overmapdemo) +"wp" = ( +/obj/structure/sign/nosmoking_2{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/techmaint, +/area/storage/surface_eva/external) "ws" = ( /obj/structure/railing{ dir = 1 }, -/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/rift/surfaceeva/airlock/main) +"wy" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/cable/green, +/obj/machinery/power/apc/west_mount, /turf/simulated/floor/plating, /area/rift/surfaceeva/airlock/main) "wN" = ( @@ -3240,6 +3207,22 @@ /obj/map_helper/airlock/door/ext_door, /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) +"xj" = ( +/obj/machinery/door/airlock/glass_external/public{ + name = "Public External Airlock" + }, +/obj/map_helper/airlock/door/int_door, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rift/surfaceeva/airlock/main) "xP" = ( /obj/machinery/light{ dir = 8; @@ -3248,23 +3231,28 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, /area/bridge) -"yj" = ( -/obj/effect/floor_decal/industrial/warning{ +"yF" = ( +/obj/structure/railing{ dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/rift/surfaceeva/airlock/main) +"yN" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 5 +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 9 }, -/turf/simulated/floor/tiled, -/area/storage/surface_eva/external) -"yy" = ( -/turf/simulated/floor/plating, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, /area/rift/surfaceeva/airlock/main) "yO" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -3285,6 +3273,12 @@ /obj/overmap/entity/visitable/ship/landable/overmapdemo, /turf/simulated/shuttle/floor/voidcraft/light, /area/shuttle/overmapdemo) +"AT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/medical/medbay) "Bg" = ( /turf/simulated/wall, /area/storage/surface_eva/external) @@ -3304,8 +3298,9 @@ pixel_x = 24; pixel_y = 6 }, -/obj/structure/grille, /obj/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/atmospherics/component/unary/env_heat_pump, +/obj/map_helper/airlock/atmos/chamber_temperature_adjuster, /turf/simulated/floor/plating, /area/rift/surfaceeva/airlock/main) "BW" = ( @@ -3329,38 +3324,51 @@ /obj/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/tiled, /area/storage/surface_eva/external) -"Cu" = ( -/obj/machinery/door/airlock/glass_external/public{ - name = "Public External Airlock" +"Cp" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/map_helper/airlock/door/int_door, /obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/turf/simulated/floor/tiled, +/area/medical/medbay) +"Cs" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 6 + dir = 9 }, /obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 5 + dir = 10 }, -/obj/machinery/access_button/airlock_interior{ - dir = 4; - master_tag = "central_airlock"; - pixel_x = 2; - pixel_y = -26 +/obj/effect/floor_decal/industrial/warning{ + dir = 8 }, -/obj/structure/cable/green{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled/steel_grid, +/area/rift/surfaceeva/airlock/main) +"Dm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 }, +/turf/simulated/floor/tiled, +/area/medical/medbay) +"Eh" = ( /obj/structure/cable{ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/steel_grid, -/area/rift/surfaceeva/airlock/main) -"EK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/medical/medbay) +"Ez" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 9 }, @@ -3368,59 +3376,95 @@ dir = 10 }, /obj/effect/floor_decal/industrial/warning{ - dir = 8 + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 5 }, -/obj/map_helper/airlock/atmos/scrubber, -/obj/machinery/atmospherics/component/unary/vent_scrubber, /turf/simulated/floor/tiled/steel_grid, /area/rift/surfaceeva/airlock/main) -"FK" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/effect/floor_decal/steeldecal/steel_decals4{ +"Fa" = ( +/obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/map_helper/airlock/atmos/scrubber, -/obj/machinery/atmospherics/component/unary/vent_scrubber{ +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 5 + }, /turf/simulated/floor/tiled, /area/storage/surface_eva/external) +"Fi" = ( +/obj/machinery/atmospherics/pipe/tank, +/turf/simulated/floor/tiled, +/area/medical/medbay) "FZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, /area/bridge) +"Gn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/tiled, +/area/medical/medbay) "Gz" = ( /turf/simulated/shuttle/wall/voidcraft/green, /area/shuttle/overmapdemo) -"GK" = ( -/obj/structure/railing{ - dir = 1 +"GN" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ - dir = 1; - frequency = 1379; - id_tag = "central_airlock_pump" +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/map_helper/airlock/atmos/chamber_pump, -/obj/structure/cable/green, -/obj/machinery/power/apc/west_mount, -/obj/machinery/space_heater, -/turf/simulated/floor/plating, -/area/rift/surfaceeva/airlock/main) +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/medical/medbay) "GR" = ( /turf/unsimulated/wall/planetary/lythios43c{ desc = "Glacial permafrost, compacted harder than stone."; icon_state = "icerock-dark" }, /area/space) -"Jn" = ( +"Ik" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/medical/medbay) +"II" = ( /obj/machinery/power/apc/north_mount, /obj/structure/cable{ icon_state = "0-2" }, /turf/simulated/floor/tiled/techmaint, /area/storage/surface_eva/external) +"Jd" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/storage/surface_eva/external) "JA" = ( /obj/overmap/entity/visitable/sector/citadel_minitest/station, /turf/space, @@ -3428,24 +3472,44 @@ "JD" = ( /turf/simulated/wall, /area/space) -"JJ" = ( -/obj/structure/cable{ - icon_state = "4-8" +"Lo" = ( +/obj/machinery/embedded_controller/radio/airlock/phoron{ + dir = 8; + id_tag = "civ_airlock"; + pixel_x = 25; + pixel_y = -30 }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9 +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/airlock_sensor/phoron{ + id_tag = "civ_airlock_sensor"; + pixel_x = 25; + pixel_y = -40 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/map_helper/airlock/sensor/chamber_sensor, +/obj/map_helper/airlock/atmos/scrubber, +/obj/machinery/atmospherics/component/unary/vent_scrubber{ + dir = 1 }, /turf/simulated/floor/tiled, -/area/medical/medbay) -"JZ" = ( -/obj/structure/sign/nosmoking_2{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled/techmaint, /area/storage/surface_eva/external) +"LC" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rift/surfaceeva/airlock/main) "LJ" = ( /obj/machinery/computer/shuttle_control/web{ my_doors = list("webdemo_docker_hatch"="Hatch"); @@ -3454,16 +3518,37 @@ }, /turf/simulated/shuttle/floor, /area/shuttle/webdemo) -"Ms" = ( -/obj/machinery/atmospherics/component/binary/pump/on{ - dir = 1 +"Mz" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 }, -/turf/simulated/floor/tiled, -/area/medical/medbay) -"MC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal, -/turf/simulated/floor/tiled, -/area/medical/medbay) +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-4"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rift/surfaceeva/airlock/main) "ML" = ( /obj/machinery/embedded_controller/radio/simple_docking_controller{ id_tag = "station_dock2"; @@ -3499,32 +3584,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/engineering/engine_room) -"OX" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/sign/signnew/cryogenics{ - pixel_y = 32 - }, -/turf/simulated/floor/plating, -/area/rift/surfaceeva/airlock/main) "Pa" = ( /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/storage/surface_eva/external) -"Pe" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ - dir = 1; - frequency = 1379; - id_tag = "central_airlock_pump" - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/map_helper/airlock/atmos/chamber_pump, -/obj/machinery/space_heater, -/turf/simulated/floor/plating, -/area/rift/surfaceeva/airlock/main) +"Pd" = ( +/obj/machinery/atmospherics/component/binary/pump/on, +/turf/simulated/floor/tiled, +/area/medical/medbay) "Pg" = ( /obj/structure/shuttle/engine/propulsion, /turf/space, @@ -3533,16 +3599,48 @@ "Ps" = ( /turf/simulated/wall/r_wall, /area/storage/surface_eva/external) -"QI" = ( -/obj/machinery/atmospherics/pipe/tank{ +"Qo" = ( +/obj/machinery/door/airlock/glass_external/public{ + name = "Public External Airlock" + }, +/obj/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/machinery/access_button/airlock_interior{ + dir = 4; + master_tag = "central_airlock"; + pixel_x = 2; + pixel_y = -26 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rift/surfaceeva/airlock/main) +"Qy" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/map_helper/airlock/atmos/scrubber, +/obj/machinery/atmospherics/component/unary/vent_scrubber{ dir = 1 }, /turf/simulated/floor/tiled, -/area/medical/medbay) -"QT" = ( -/obj/machinery/atmospherics/pipe/tank, -/turf/simulated/floor/tiled, -/area/medical/medbay) +/area/storage/surface_eva/external) "Ro" = ( /obj/machinery/air_alarm, /turf/simulated/floor/tiled, @@ -3568,12 +3666,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/grille, -/obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ - frequency = 1379; - id_tag = "civ_airlock_pump" - }, -/obj/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/component/unary/env_heat_pump, +/obj/map_helper/airlock/atmos/chamber_temperature_adjuster, /turf/simulated/floor/tiled, /area/storage/surface_eva/external) "RZ" = ( @@ -3619,18 +3713,12 @@ }, /turf/simulated/floor/tiled, /area/bridge) -"Tq" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ +"Tj" = ( +/obj/structure/railing{ dir = 1 }, -/turf/simulated/floor/tiled, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled/techmaint, /area/storage/surface_eva/external) "Tv" = ( /obj/machinery/door/airlock/glass_external/public{ @@ -3655,24 +3743,10 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/rift/surfaceeva/airlock/main) -"TK" = ( -/obj/machinery/atmospherics/component/binary/pump/on, -/turf/simulated/floor/tiled, -/area/medical/medbay) "TX" = ( /obj/machinery/atmospherics/pipe/tank/air, /turf/simulated/floor/tiled, /area/bridge) -"Ud" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/sign/fire{ - pixel_y = -32 - }, -/obj/machinery/space_heater, -/turf/simulated/floor/tiled/techmaint, -/area/storage/surface_eva/external) "Uh" = ( /obj/machinery/computer/ship/sensors{ dir = 1 @@ -3697,6 +3771,9 @@ name = "Cafe"; dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/medical/medbay) "Ws" = ( @@ -3708,47 +3785,13 @@ }, /turf/simulated/floor/tiled, /area/medical/medbay) -"WT" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_external{ - frequency = 1379; - icon_state = "door_locked"; - id_tag = "civ_airlock_inner"; - locked = 1 - }, -/obj/machinery/access_button/airlock_interior{ - master_tag = "civ_airlock"; - pixel_x = 8; - pixel_y = 25 - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, +"XU" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/map_helper/airlock/door/int_door, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/steel_grid, -/area/storage/surface_eva/external) -"WX" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/medical/medbay) -"Xq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, /turf/simulated/floor/tiled, /area/medical/medbay) "XZ" = ( @@ -3761,6 +3804,12 @@ }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/storage/surface_eva/external) +"YO" = ( +/obj/machinery/atmospherics/pipe/tank{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/medical/medbay) (1,1,1) = {" aa @@ -6569,11 +6618,11 @@ vl Bg Ps lH -yy -sq -EK -tU -GK +lH +pr +Cs +Mz +wy JD aa aa @@ -6664,17 +6713,17 @@ aa aa aa Bg -JZ +wp BZ -yj -FK -Ud +Jd +Qy +mI Ps lH -OX -sq -lX -qb +lH +iw +yN +LC ws JD aa @@ -6766,18 +6815,18 @@ aa aa aa Bg -Jn +II Rw -Tq -ok -jV +Fa +Lo +Tj Ps lH -yy +lH BU -tk -sQ -Pe +Ez +qj +yF JD aa aa @@ -6870,15 +6919,15 @@ cL Bg Bg Bg -WT +pz BW Bg Ps lH pG pG -lA -Cu +xj +Qo pG JD aa @@ -6972,15 +7021,15 @@ cM cM du dd -ko +GN sc si NX du rJ lQ -sc -JJ +Dm +Cp cF aa aa @@ -7071,18 +7120,18 @@ aa aa cF cM -cM +du du Ro -qN +Eh cM St cM du Ro St -cM -qN +Ik +XU cF aa aa @@ -7173,18 +7222,18 @@ aa aa cF cN -cM du -cM -WX -MC -TK -QI +oa +Gn +ts +Gn +Pd +YO du -QT -Ms -MC -Xq +oa +Gn +AT +XU cF aa aa @@ -7275,7 +7324,7 @@ aa aa cF cM -cM +du du du el @@ -7385,9 +7434,9 @@ cM cM cM du -cM -cM -cM +Fi +Gn +ru lm cI eM