diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm index 6310436365206..264b921a66534 100644 --- a/code/game/machinery/embedded_controller/airlock_program.dm +++ b/code/game/machinery/embedded_controller/airlock_program.dm @@ -142,10 +142,17 @@ begin_cycle_in() if("cycle_ext_door") - cycleDoors(TARGET_OUTOPEN) + // Close the door if it's open, otherwise cycle + if(memory["exterior_status"]["state"] == "open") + toggleDoor(memory["exterior_status"], tag_exterior_door, memory["secure"], "toggle") + else + cycleDoors(TARGET_OUTOPEN) if("cycle_int_door") - cycleDoors(TARGET_INOPEN) + if(memory["interior_status"]["state"] == "open") + toggleDoor(memory["interior_status"], tag_interior_door, memory["secure"], "toggle") + else + cycleDoors(TARGET_INOPEN) if("abort") stop_cycling() diff --git a/maps/torch/torch4_deck2.dmm b/maps/torch/torch4_deck2.dmm index edd2c1bc8def3..d7c994318033c 100644 --- a/maps/torch/torch4_deck2.dmm +++ b/maps/torch/torch4_deck2.dmm @@ -3446,12 +3446,12 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/airlock/hatch{ +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch/maintenance/bolted{ frequency = 1379; - id_tag = ""; + id_tag = "engine_exterior"; name = "Engine Airlock Exterior" }, -/obj/machinery/door/firedoor, /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/engine_room) "gX" = ( @@ -4980,6 +4980,10 @@ dir = 8 }, /obj/floor_decal/industrial/outline/yellow, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/simulated/floor/tiled/steel_grid, /area/engineering/engine_monitoring) "kY" = ( @@ -4992,10 +4996,6 @@ /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson, /obj/floor_decal/industrial/outline/yellow, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, /turf/simulated/floor/tiled/steel_grid, /area/engineering/engine_monitoring) "la" = ( @@ -5009,8 +5009,7 @@ }, /obj/floor_decal/industrial/outline/yellow, /obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 + pixel_y = 21 }, /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/engine_room) @@ -5020,6 +5019,11 @@ dir = 5 }, /obj/floor_decal/industrial/outline/yellow, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/machinery/light/small{ + dir = 1 + }, /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/engine_room) "le" = ( @@ -5315,12 +5319,12 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/airlock/hatch{ +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch/maintenance/bolted{ frequency = 1379; - id_tag = ""; + id_tag = "engine_interior"; name = "Engine Airlock Interior" }, -/obj/machinery/door/firedoor, /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/engine_room) "lQ" = ( @@ -5332,7 +5336,20 @@ /obj/floor_decal/industrial/warning{ dir = 10 }, -/obj/machinery/light/small, +/obj/machinery/embedded_controller/radio/airlock/access_controller{ + dir = 1; + id_tag = "engine_controller"; + name = "Engine Room Access Controller"; + pixel_y = -21; + req_access = list("ACCESS_ENGINE_EQUIP"); + tag_exterior_door = "engine_exterior"; + tag_interior_door = "engine_interior" + }, +/obj/machinery/access_button/airlock_interior{ + master_tag = "engine_controller"; + pixel_x = -23; + pixel_y = 23 + }, /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/engine_room) "lR" = ( @@ -5344,6 +5361,11 @@ /obj/floor_decal/industrial/warning{ dir = 6 }, +/obj/machinery/access_button/airlock_exterior{ + master_tag = "engine_controller"; + pixel_x = 23; + pixel_y = 23 + }, /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/engine_room) "lT" = ( @@ -5353,6 +5375,11 @@ d2 = 8; icon_state = "2-8" }, +/obj/machinery/access_button/airlock_exterior{ + master_tag = "engine_controller"; + pixel_x = -23; + pixel_y = 23 + }, /turf/simulated/floor/tiled/techfloor, /area/engineering/engine_room) "lV" = ( @@ -5902,6 +5929,11 @@ d2 = 4; icon_state = "1-4" }, +/obj/machinery/access_button/airlock_interior{ + master_tag = "engine_controller"; + pixel_x = 23; + pixel_y = 23 + }, /turf/simulated/floor/tiled/monotile, /area/engineering/engine_monitoring) "nw" = ( @@ -5914,7 +5946,8 @@ /area/engineering/engine_monitoring) "nx" = ( /obj/structure/sign/warning/internals_required{ - name = "\improper RADIATION GEAR REQUIRED" + name = "\improper RADIATION GEAR REQUIRED"; + pixel_y = 4 }, /turf/simulated/wall/r_wall/prepainted, /area/engineering/engine_room)