diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm
index 5720ef32047..b5d6fe250df 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm
@@ -178,7 +178,7 @@
/turf/simulated/floor/wood,
/area/ruin/powered/snow_cabin)
"aO" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/structure/fans/tiny,
/turf/simulated/floor/pod/dark,
/area/ruin/powered/snow_biodome)
@@ -341,7 +341,7 @@
/turf/simulated/floor/wood,
/area/ruin/powered/snow_cabin)
"vf" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/structure/fans/tiny,
/turf/simulated/floor/pod/dark,
/area/ruin/powered/snow_cabin)
@@ -381,7 +381,7 @@
/area/ruin/powered/snow_biodome)
"Ez" = (
/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/turf/simulated/floor/pod/dark,
/area/ruin/powered/snow_biodome)
"FP" = (
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm
index 93ffa2bdff6..833c241be29 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm
@@ -1496,7 +1496,7 @@
/turf/simulated/floor/plating/lavaland_air,
/area/ruin/unpowered/althland_excavation)
"WH" = (
-/obj/machinery/door/poddoor/multi_tile/three_tile_hor,
+/obj/machinery/door/poddoor/multi_tile/triple/directional/east,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/althland_excavation)
"Xl" = (
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_nt.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_nt.dmm
index e36e9f9d543..c3b1b73d300 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_nt.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_nt.dmm
@@ -1714,9 +1714,8 @@
},
/area/mine/outpost/hallway/west)
"jQ" = (
-/obj/machinery/door/airlock/multi_tile/glass{
- name = "Main Airlock";
- dir = 1
+/obj/machinery/door/airlock/multi_tile/glass/directional/north{
+ name = "Main Airlock"
},
/obj/structure/fans/tiny,
/obj/effect/mapping_helpers/airlock/access/all/supply/mining_station,
@@ -3964,7 +3963,7 @@
/area/mine/outpost/production)
"vP" = (
/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/multi_tile/glass{
+/obj/machinery/door/airlock/multi_tile/glass/directional/east{
name = "Main Airlock"
},
/obj/effect/mapping_helpers/airlock/access/all/supply/mining_station,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm b/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm
index e3cd9f2febb..872694b2d21 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm
@@ -509,7 +509,7 @@
/turf/simulated/floor/carpet/black,
/area/ruin/space/powered/casino/floor)
"mP" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/turf/simulated/floor/plasteel/dark,
/area/ruin/space/powered/casino/arrivals)
"mW" = (
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm
index 01a3c06fc5e..e6fc410b8dc 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm
@@ -1515,7 +1515,7 @@
"hW" = (
/obj/structure/fans/tiny,
/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/multi_tile/impassable{
+/obj/machinery/door/poddoor/multi_tile/impassable/directional/south{
id_tag = "DS_Tram"
},
/turf/simulated/floor/plating,
@@ -3898,7 +3898,7 @@
"yb" = (
/obj/structure/fans/tiny,
/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/north{
id_tag = "DS_BossStorage";
name = "warehouse valuables storage blast door"
},
@@ -4295,7 +4295,7 @@
/obj/machinery/door/airlock/vault{
name = "Auxiliary Power Room"
},
-/obj/machinery/door/poddoor/multi_tile/impassable{
+/obj/machinery/door/poddoor/multi_tile/impassable/directional/south{
id_tag = "DS_Engineering"
},
/turf/simulated/floor/catwalk,
@@ -4377,7 +4377,7 @@
},
/area/ruin/space/deepstorage)
"AN" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/north{
id_tag = "DS_FrontGate"
},
/turf/simulated/floor/catwalk/airless,
@@ -5855,7 +5855,7 @@
"LJ" = (
/obj/structure/fans/tiny,
/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/east{
id_tag = "DS_BossStorage";
name = "warehouse blast doors"
},
@@ -6883,7 +6883,7 @@
"TK" = (
/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage,
/obj/machinery/door/airlock/highsecurity,
-/obj/machinery/door/poddoor/multi_tile/impassable{
+/obj/machinery/door/poddoor/multi_tile/impassable/directional/south{
id_tag = "DS_Storage"
},
/turf/simulated/floor/plasteel{
@@ -6960,7 +6960,7 @@
},
/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage,
/obj/machinery/door/airlock/highsecurity,
-/obj/machinery/door/poddoor/multi_tile/impassable{
+/obj/machinery/door/poddoor/multi_tile/impassable/directional/south{
id_tag = "DS_Storage"
},
/turf/simulated/floor/plasteel{
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/freighter.dmm b/_maps/map_files/RandomRuins/SpaceRuins/freighter.dmm
index d802a3f506a..c91ff595726 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/freighter.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/freighter.dmm
@@ -63,7 +63,7 @@
/turf/simulated/floor/plasteel,
/area/ruin/space/powered)
"jM" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/east{
id_tag = "freighterblastdoor1"
},
/obj/structure/fans/tiny,
@@ -456,9 +456,7 @@
/turf/simulated/floor/wood,
/area/ruin/space/powered)
"Je" = (
-/obj/machinery/door/airlock/multi_tile/glass{
- dir = 1
- },
+/obj/machinery/door/airlock/multi_tile/glass/directional/north,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
index 915147433db..de79d938e48 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
@@ -679,7 +679,7 @@
/turf/simulated/floor/plating/airless,
/area/ruin/space/mech_transport)
"Vp" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/east{
id_tag = "mechtransport_ext"
},
/turf/simulated/floor/plasteel/dark,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm
index d238d330e0b..8039056279e 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm
@@ -391,13 +391,13 @@
/area/ruin/space/moonbase19)
"ba" = (
/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19,
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/turf/simulated/floor/plasteel{
icon_state = "freezerfloor"
},
/area/ruin/space/moonbase19)
"bb" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/turf/simulated/floor/plasteel{
icon_state = "darkfull";
dir = 8
@@ -2586,7 +2586,7 @@
/area/ruin/space/moonbase19)
"ij" = (
/obj/structure/fans/tiny,
-/obj/machinery/door/poddoor/multi_tile/impassable/four_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/quad/directional/north{
id_tag = "awaycargogate"
},
/turf/simulated/floor/catwalk,
@@ -10797,7 +10797,7 @@
/area/ruin/space/moonbase19)
"RD" = (
/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19,
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/structure/barricade/wooden/crude{
layer = 4
},
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
index e9b2e77f3b3..b46358e1f0a 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
@@ -4500,7 +4500,7 @@
/turf/template_noop,
/area/space/nearstation)
"rU" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/double/directional/east{
name = "prototype vault blast doors";
desc = "A heavy duty blast door that opens mechanically. It was hermetically sealed when the crew went into cryostasis.";
id_tag = "prototype_vault"
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/sieged_lab.dmm b/_maps/map_files/RandomRuins/SpaceRuins/sieged_lab.dmm
index b83a5f4a67c..25395fd4825 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/sieged_lab.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/sieged_lab.dmm
@@ -492,7 +492,7 @@
"xV" = (
/obj/machinery/door/airlock/maintenance_hatch,
/obj/effect/mapping_helpers/airlock/access/all/command/general,
-/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/double/directional/east{
id_tag = "SL_EndRoom"
},
/turf/simulated/floor/plasteel{
@@ -777,7 +777,7 @@
},
/area/ruin/space/sieged_lab)
"La" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "neutral"
@@ -1054,7 +1054,7 @@
name = "Executive Suite"
},
/obj/effect/mapping_helpers/airlock/access/all/command/general,
-/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/double/directional/north{
id_tag = "SL_EndRoom"
},
/turf/simulated/floor/plasteel,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
index 01a80fecb24..898bdfe01ce 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
@@ -214,7 +214,7 @@
},
/area/ruin/space/powered/bar)
"aX" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "black"
@@ -234,9 +234,7 @@
/turf/template_noop,
/area/space/nearstation)
"ba" = (
-/obj/machinery/door/airlock/multi_tile/glass{
- dir = 1
- },
+/obj/machinery/door/airlock/multi_tile/glass/directional/north,
/obj/structure/fans/tiny,
/turf/simulated/floor/plasteel{
dir = 10;
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm
index b50d10ceffd..c798f73a54f 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm
@@ -313,7 +313,7 @@
},
/area/syndicate_depot/core)
"aZ" = (
-/obj/machinery/door/poddoor/multi_tile/two_tile_hor,
+/obj/machinery/door/poddoor/multi_tile/double/directional/east,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
index bbddbcf8206..091801afcfb 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
@@ -1775,7 +1775,7 @@
layer = 2.9;
name = "Security Wing Lockdown"
},
-/obj/machinery/door/airlock/multi_tile/glass{
+/obj/machinery/door/airlock/multi_tile/glass/directional/east{
name = "Security Wing"
},
/turf/simulated/floor/plasteel{
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm b/_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm
index 436c3992151..949c449827f 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm
@@ -157,9 +157,7 @@
/turf/simulated/floor/wood,
/area/shuttle/abandoned)
"tV" = (
-/obj/machinery/door/airlock/multi_tile/glass{
- dir = 1
- },
+/obj/machinery/door/airlock/multi_tile/glass/directional/north,
/turf/simulated/floor/mineral/plastitanium,
/area/shuttle/abandoned)
"uo" = (
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm b/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm
index 16ef68a4c69..0734a5d061d 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm
@@ -576,7 +576,7 @@
"uH" = (
/obj/structure/fans/tiny,
/obj/effect/turf_decal/delivery,
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/east{
id_tag = "cargoshipblastdoor1"
},
/turf/simulated/floor/plating,
diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm
index 977f8c55744..6d4926d9423 100644
--- a/_maps/map_files/generic/centcomm.dmm
+++ b/_maps/map_files/generic/centcomm.dmm
@@ -780,7 +780,7 @@
/turf/simulated/floor/carpet/purple,
/area/wizard_station)
"cV" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/double/directional/north{
name = "Syndicate Base Blast Door"
},
/turf/simulated/floor/plasteel/dark,
@@ -3055,7 +3055,7 @@
/turf/simulated/wall/indestructible/opsglass,
/area/syndicate_mothership/jail)
"lh" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/double/directional/north{
id_tag = "nukeop_base";
name = "Syndicate Base Docking Area Blast Door"
},
@@ -4220,7 +4220,7 @@
},
/area/centcom/specops)
"oQ" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/four_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/quad/directional/north{
name = "Trading Satellite Central Access"
},
/turf/simulated/floor/plating/airless,
@@ -5331,7 +5331,7 @@
/area/syndicate_mothership)
"sE" = (
/obj/effect/mapping_helpers/airlock/access/all/syndicate,
-/obj/machinery/door/airlock/multi_tile/glass{
+/obj/machinery/door/airlock/multi_tile/glass/directional/east{
name = "Equipment Room"
},
/turf/simulated/floor/plasteel{
@@ -7873,7 +7873,7 @@
/turf/simulated/floor/plasteel,
/area/centcom/evac)
"Ck" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/effect/mapping_helpers/airlock/autoname,
/turf/simulated/floor/wood,
/area/ghost_bar)
@@ -10157,7 +10157,7 @@
/area/ghost_bar)
"Kb" = (
/obj/effect/turf_decal/delivery,
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/east{
id_tag = "sec";
name = "CentCom Security"
},
@@ -10197,7 +10197,7 @@
/area/centcom/specops)
"Ki" = (
/obj/effect/turf_decal/delivery,
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/east{
id_tag = "CC";
name = "Thunderdome Access"
},
@@ -11537,7 +11537,7 @@
/turf/simulated/floor/plasteel/dark,
/area/centcom/specops)
"OB" = (
-/obj/machinery/door/airlock/multi_tile/glass{
+/obj/machinery/door/airlock/multi_tile/glass/directional/east{
name = "Badmin's Bar"
},
/turf/simulated/floor/carpet/arcade,
@@ -12049,7 +12049,7 @@
/turf/simulated/floor/mineral/plastitanium/red,
/area/shuttle/administration)
"Qh" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/four_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/quad/directional/east{
name = "Special Operations Engineering Storage";
id_tag = "SpecopsEngineering"
},
@@ -12103,7 +12103,7 @@
/area/centcom/specops)
"Qs" = (
/obj/effect/turf_decal/delivery,
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/north{
id_tag = "CCTELE";
name = "Specops Teleporter"
},
@@ -12549,7 +12549,7 @@
},
/area/centcom/control)
"RW" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/east{
id_tag = "specopsoffice";
name = "Privacy Shield"
},
@@ -13428,7 +13428,7 @@
/turf/simulated/floor/plasteel/dark,
/area/centcom/specops)
"VD" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/impassable/double/directional/east{
id_tag = "CCDOCK2";
name = "Special Operations Secondary Dock"
},
@@ -13968,7 +13968,7 @@
},
/area/centcom/evac)
"Xh" = (
-/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/double/directional/north{
id_tag = "specopsoffice";
name = "Privacy Shield"
},
@@ -13978,7 +13978,7 @@
/turf/simulated/floor/transparent/glass,
/area/centcom/specops)
"Xk" = (
-/obj/machinery/door/airlock/multi_tile/glass{
+/obj/machinery/door/airlock/multi_tile/glass/directional/east{
name = "Badmin's Bar"
},
/turf/simulated/floor/wood,
@@ -13996,7 +13996,7 @@
/area/shuttle/escape)
"Xn" = (
/obj/effect/turf_decal/delivery,
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/north{
id_tag = "SpecopsFerry";
name = "Special Operations Ferry Hangar"
},
@@ -14726,7 +14726,7 @@
/area/centcom/specops)
"ZF" = (
/obj/effect/turf_decal/delivery,
-/obj/machinery/door/poddoor/multi_tile/impassable/four_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/impassable/quad/directional/north{
id_tag = "ASSAULT";
name = "Assault Armor"
},
diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm
index a3d2b62c902..085c7a42f5d 100644
--- a/_maps/map_files/stations/boxstation.dmm
+++ b/_maps/map_files/stations/boxstation.dmm
@@ -11642,7 +11642,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/effect/mapping_helpers/airlock/autoname,
/turf/simulated/floor/carpet/arcade,
/area/station/public/arcade)
@@ -16210,9 +16210,7 @@
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/garden)
"bdI" = (
-/obj/machinery/door/airlock/multi_tile/glass{
- dir = 1
- },
+/obj/machinery/door/airlock/multi_tile/glass/directional/north,
/obj/effect/mapping_helpers/airlock/autoname,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -20864,15 +20862,6 @@
/obj/structure/chair/comfy/black,
/turf/simulated/floor/wood,
/area/station/service/library)
-"brz" = (
-/obj/structure/closet/walllocker/emerglocker/directional/north,
-/obj/structure/rack{
- dir = 8;
- layer = 2.9
- },
-/obj/item/extinguisher,
-/turf/simulated/floor/plating,
-/area/station/public/storage/emergency/port)
"brA" = (
/obj/structure/chair/office/dark,
/obj/effect/landmark/start/librarian,
@@ -44798,7 +44787,7 @@
/area/station/public/dorms)
"djg" = (
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/effect/mapping_helpers/airlock/autoname,
/turf/simulated/floor/plasteel{
dir = 8;
@@ -50168,6 +50157,14 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plating,
/area/station/maintenance/aft)
+"eOg" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/economy/atm/directional/west,
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "redcorner"
+ },
+/area/station/security/lobby)
"eOh" = (
/obj/machinery/economy/vending/cigarette,
/obj/structure/window/reinforced,
@@ -52648,6 +52645,11 @@
icon_state = "white"
},
/area/station/maintenance/asmaint)
+"gaW" = (
+/obj/effect/spawner/random/blood/often,
+/obj/machinery/economy/atm/directional/north,
+/turf/simulated/floor/wood,
+/area/station/maintenance/apmaint2)
"gba" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
@@ -59752,14 +59754,6 @@
},
/turf/simulated/floor/plasteel,
/area/station/science/xenobiology)
-"jPg" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/economy/atm/directional/west,
-/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "redcorner"
- },
-/area/station/security/lobby)
"jPk" = (
/obj/structure/cable{
icon_state = "0-2"
@@ -61169,13 +61163,6 @@
/obj/effect/mapping_helpers/turfs/rust/maybe,
/turf/simulated/wall/r_wall,
/area/station/engineering/gravitygenerator)
-"kyJ" = (
-/obj/machinery/economy/atm/directional/north,
-/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "yellowcorner"
- },
-/area/station/hallway/primary/aft/south)
"kzB" = (
/obj/effect/spawner/random/food_or_drink/three_course_meal,
/obj/structure/closet/crate/freezer,
@@ -64117,6 +64104,10 @@
},
/turf/simulated/floor/plating,
/area/station/maintenance/fpmaint2)
+"lVm" = (
+/obj/item/kirbyplants/large,
+/turf/simulated/floor/wood,
+/area/station/service/bar)
"lVr" = (
/obj/machinery/atmospherics/pipe/simple/visible/supply{
dir = 10
@@ -67917,6 +67908,15 @@
},
/turf/simulated/floor/plating,
/area/station/maintenance/aft)
+"nZt" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel,
+/area/station/hallway/secondary/entry/north)
"nZF" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/research{
@@ -73249,12 +73249,6 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plating,
/area/station/maintenance/aft)
-"qEe" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/station/hallway/secondary/entry/north)
"qEg" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -74794,10 +74788,6 @@
icon_state = "dark"
},
/area/station/telecomms/chamber)
-"rsw" = (
-/obj/item/kirbyplants/large,
-/turf/simulated/floor/wood,
-/area/station/service/bar)
"rsz" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -75224,6 +75214,13 @@
},
/turf/simulated/floor/plating,
/area/station/maintenance/aft)
+"rED" = (
+/obj/machinery/economy/atm/directional/north,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "yellowcorner"
+ },
+/area/station/hallway/primary/aft/south)
"rET" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
@@ -80483,7 +80480,7 @@
},
/area/station/science/robotics)
"uxZ" = (
-/obj/machinery/door/airlock/multi_tile{
+/obj/machinery/door/airlock/multi_tile/directional/east{
name = "maintenance access"
},
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
@@ -82559,6 +82556,12 @@
},
/turf/simulated/floor/wood,
/area/station/command/office/ntrep)
+"vGS" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel,
+/area/station/hallway/secondary/entry/north)
"vHd" = (
/obj/effect/spawner/window/reinforced/grilled,
/obj/structure/cable{
@@ -82705,15 +82708,6 @@
icon_state = "bluecorner"
},
/area/station/hallway/secondary/exit)
-"vKU" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/station/hallway/secondary/entry/north)
"vLb" = (
/obj/effect/spawner/window/reinforced/grilled,
/obj/structure/cable{
@@ -84219,6 +84213,15 @@
icon_state = "whitehall"
},
/area/station/hallway/primary/starboard/west)
+"wBH" = (
+/obj/structure/closet/walllocker/emerglocker/directional/north,
+/obj/structure/rack{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/item/extinguisher,
+/turf/simulated/floor/plating,
+/area/station/public/storage/emergency/port)
"wCg" = (
/obj/structure/cable,
/obj/structure/cable{
@@ -85606,11 +85609,6 @@
},
/turf/simulated/floor/plasteel,
/area/station/maintenance/assembly_line)
-"xnt" = (
-/obj/effect/spawner/random/blood/often,
-/obj/machinery/economy/atm/directional/north,
-/turf/simulated/floor/wood,
-/area/station/maintenance/apmaint2)
"xnF" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -97668,7 +97666,7 @@ aJP
aRm
aOR
aQa
-qEe
+vGS
aMD
fay
fay
@@ -98696,7 +98694,7 @@ aJR
aRV
aOR
aQa
-vKU
+nZt
aRd
nff
aUm
@@ -108991,7 +108989,7 @@ bgA
blO
iPh
blR
-brz
+wBH
bsD
bui
blR
@@ -110064,7 +110062,7 @@ gwb
uWp
tGO
cgQ
-xnt
+gaW
xRm
lnh
kym
@@ -115975,7 +115973,7 @@ cBp
cAL
cDY
cvx
-kyJ
+rED
mqV
ePP
ePP
@@ -116414,7 +116412,7 @@ avd
axD
axA
ayj
-jPg
+eOg
azP
aBY
aCv
@@ -124160,7 +124158,7 @@ bqk
bqk
bqk
bAV
-rsw
+lVm
aUS
bAo
bHy
diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm
index 1693eabff8d..a150528f3e3 100644
--- a/_maps/map_files/stations/cerestation.dmm
+++ b/_maps/map_files/stations/cerestation.dmm
@@ -9625,7 +9625,7 @@
/turf/simulated/floor/plasteel,
/area/station/public/toilet/lockerroom)
"bvF" = (
-/obj/machinery/door/poddoor/multi_tile/two_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/double/directional/east{
name = "Command Emergency EVA Storage";
id_tag = "commandeva"
},
@@ -24102,7 +24102,7 @@
},
/area/station/hallway/primary/aft/west)
"dnY" = (
-/obj/machinery/door/poddoor/multi_tile/two_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/double/directional/north{
name = "Medical Emergency EVA Storage";
id_tag = "medeva"
},
@@ -28778,7 +28778,7 @@
/area/station/security/permabrig)
"epT" = (
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/effect/mapping_helpers/airlock/autoname,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -38598,7 +38598,7 @@
},
/area/station/hallway/primary/aft/east)
"gPT" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/machinery/door/firedoor,
/obj/effect/mapping_helpers/airlock/autoname,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -40685,7 +40685,7 @@
/turf/simulated/floor/engine,
/area/station/hallway/spacebridge/scidock)
"hre" = (
-/obj/machinery/door/poddoor/multi_tile/two_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/double/directional/east{
name = "Cargo Emergency EVA Storage";
id_tag = "cargoeva"
},
@@ -45480,9 +45480,7 @@
/area/station/hallway/primary/fore/north)
"iwy" = (
/obj/effect/mapping_helpers/airlock/autoname,
-/obj/machinery/door/airlock/multi_tile/glass{
- dir = 2
- },
+/obj/machinery/door/airlock/multi_tile/glass/directional/south,
/obj/machinery/door/firedoor,
/turf/simulated/floor/wood,
/area/station/service/bar)
@@ -60280,7 +60278,7 @@
/obj/structure/cable/orange{
icon_state = "1-2"
},
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/effect/mapping_helpers/airlock/autoname,
/turf/simulated/floor/plasteel,
/area/station/public/locker)
@@ -65011,7 +65009,7 @@
},
/area/station/engineering/control)
"mUX" = (
-/obj/machinery/door/poddoor/multi_tile/three_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/triple/directional/east{
name = "Civilian Emergency EVA Storage";
id_tag = "civeva"
},
@@ -67066,7 +67064,7 @@
/turf/simulated/floor/wood,
/area/station/medical/psych)
"nvX" = (
-/obj/machinery/door/poddoor/multi_tile/two_tile_ver{
+/obj/machinery/door/poddoor/multi_tile/double/directional/north{
id_tag = "arrivalseva";
name = "Arrivals Emergency EVA Storage"
},
@@ -83252,7 +83250,7 @@
},
/area/station/hallway/primary/fore/east)
"rrI" = (
-/obj/machinery/door/poddoor/multi_tile/two_tile_hor{
+/obj/machinery/door/poddoor/multi_tile/double/directional/east{
name = "Science Emergency EVA Storage";
id_tag = "scieva"
},
@@ -84874,7 +84872,7 @@
},
/area/station/hallway/primary/central/north)
"rMg" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/effect/mapping_helpers/airlock/autoname,
/obj/machinery/door/firedoor,
/turf/simulated/floor/plasteel{
@@ -106267,7 +106265,7 @@
/turf/simulated/floor/wood,
/area/station/command/office/hos)
"wMQ" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/effect/mapping_helpers/airlock/autoname,
/obj/machinery/door/firedoor,
/turf/simulated/floor/plasteel{
diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm
index 35cf7c69cd4..5a70e414b17 100644
--- a/_maps/map_files/stations/deltastation.dmm
+++ b/_maps/map_files/stations/deltastation.dmm
@@ -35701,7 +35701,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/effect/mapping_helpers/airlock/autoname,
/turf/simulated/floor/carpet/arcade,
/area/station/public/arcade)
@@ -73836,7 +73836,7 @@
"oll" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/door/airlock/multi_tile/glass{
+/obj/machinery/door/airlock/multi_tile/glass/directional/east{
name = "Cryogenic Dormitories"
},
/obj/structure/cable{
diff --git a/_maps/map_files/stations/emeraldstation.dmm b/_maps/map_files/stations/emeraldstation.dmm
index ca6af59ae96..baf0841327f 100644
--- a/_maps/map_files/stations/emeraldstation.dmm
+++ b/_maps/map_files/stations/emeraldstation.dmm
@@ -65671,7 +65671,7 @@
/turf/simulated/floor/plating,
/area/station/maintenance/security/fore)
"nib" = (
-/obj/machinery/door/airlock/multi_tile/glass,
+/obj/machinery/door/airlock/multi_tile/glass/directional/east,
/obj/machinery/door/firedoor,
/obj/effect/mapping_helpers/airlock/autoname,
/turf/simulated/floor/plasteel{
@@ -92475,7 +92475,7 @@
/turf/simulated/floor/plating,
/area/station/maintenance/aft2)
"svF" = (
-/obj/machinery/door/airlock/multi_tile{
+/obj/machinery/door/airlock/multi_tile/directional/east{
name = "maintenance access"
},
/obj/machinery/atmospherics/pipe/simple/hidden/cyan,
@@ -94639,7 +94639,7 @@
},
/area/station/legal/lawoffice)
"sSv" = (
-/obj/machinery/door/airlock/multi_tile/glass{
+/obj/machinery/door/airlock/multi_tile/glass/directional/east{
locked = 1
},
/obj/structure/barricade/wooden,
@@ -103957,7 +103957,7 @@
/turf/simulated/floor/bluegrid,
/area/station/telecomms/computer)
"uJn" = (
-/obj/machinery/door/airlock/multi_tile{
+/obj/machinery/door/airlock/multi_tile/directional/east{
name = "maintenance access"
},
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
diff --git a/code/__DEFINES/mappers.dm b/code/__DEFINES/mappers.dm
index 5ac32e9468f..adff62e6900 100644
--- a/code/__DEFINES/mappers.dm
+++ b/code/__DEFINES/mappers.dm
@@ -33,3 +33,18 @@
dir = WEST; \
pixel_x = offset_west; \
}
+
+#define MAPPING_DIRECTIONAL_HELPERS_MULTITILE(path, offset) ##path/directional/north {\
+ dir = NORTH; \
+} \
+##path/directional/south {\
+ dir = SOUTH; \
+ pixel_y = -offset; \
+} \
+##path/directional/east {\
+ dir = EAST; \
+} \
+##path/directional/west {\
+ dir = WEST; \
+ pixel_x = -offset; \
+}
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index a4dfbcf41c5..2a1d596cd9d 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1330,7 +1330,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
operating = NONE
recalculate_atmos_connectivity()
if(safe)
- CheckForMobs()
+ check_for_mobs()
return TRUE
/obj/machinery/door/airlock/lock(forced=0)
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index 1ff5eca4d53..d3565431b1a 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -654,7 +654,6 @@
//Terribly sorry for the code doubling, but things go derpy otherwise.
/obj/machinery/door/airlock/multi_tile
name = "large airlock"
- dir = EAST
width = 2
icon = 'icons/obj/doors/airlocks/glass_large/glass_large.dmi'
overlays_file = 'icons/obj/doors/airlocks/glass_large/overlays.dmi'
@@ -662,9 +661,13 @@
assemblytype = /obj/structure/door_assembly/multi_tile
paintable = FALSE
+MAPPING_DIRECTIONAL_HELPERS_MULTITILE(/obj/machinery/door/airlock/multi_tile, 32)
+
/obj/machinery/door/airlock/multi_tile/narsie_act()
return
+MAPPING_DIRECTIONAL_HELPERS_MULTITILE(/obj/machinery/door/airlock/multi_tile/glass, 32)
+
/obj/machinery/door/airlock/multi_tile/glass
opacity = FALSE
glass = TRUE
@@ -678,17 +681,38 @@
opacity = TRUE
anchored = TRUE
invisibility = INVISIBILITY_MAXIMUM
+ obj_integrity = INFINITY // our parent airlock/assembly will handle that
//atmos_canpass = CANPASS_DENSITY
/// The door/airlock this fluff panel is attached to
var/obj/machinery/door/filled_airlock
+ /// The assembly this fluff panel is attached to
+ var/obj/structure/door_assembly/filled_assembly
/obj/airlock_filler_object/Bumped(atom/A)
- if(isnull(filled_airlock))
- stack_trace("Someone bumped into an airlock filler with no parent airlock specified!")
- return filled_airlock.Bumped(A)
+ if(filled_airlock)
+ return filled_airlock.Bumped(A)
+ if(filled_assembly)
+ return filled_assembly.Bumped(A)
+ else
+ stack_trace("Someone bumped into an airlock filler with no parent airlock/assembly specified!")
/obj/airlock_filler_object/Destroy()
filled_airlock = null
+ filled_assembly = null
+ return ..()
+
+/obj/airlock_filler_object/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = TRUE, attack_dir, armour_penetration_flat = 0, armour_penetration_percentage = 0)
+ if(filled_airlock)
+ filled_airlock.take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir)
+ else if(filled_assembly)
+ filled_assembly.take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir)
+ return ..()
+
+/obj/airlock_filler_object/ex_act(severity)
+ if(filled_airlock)
+ filled_airlock.ex_act(severity)
+ else if(filled_assembly)
+ filled_assembly.ex_act(severity)
return ..()
/// Multi-tile airlocks pair with a filler panel, if one goes so does the other.
@@ -699,18 +723,31 @@
filled_airlock = parent_airlock
RegisterSignal(filled_airlock, COMSIG_PARENT_QDELETING, PROC_REF(no_airlock))
+/obj/airlock_filler_object/proc/pair_assembly(obj/structure/door_assembly/parent_assembly)
+ if(isnull(parent_assembly))
+ stack_trace("Attempted to pair an airlock filler with no parent assembly specified!")
+
+ filled_assembly = parent_assembly
+ RegisterSignal(filled_assembly, COMSIG_PARENT_QDELETING, PROC_REF(no_assembly))
+
/obj/airlock_filler_object/proc/no_airlock()
UnregisterSignal(filled_airlock)
qdel(src)
+/obj/airlock_filler_object/proc/no_assembly()
+ UnregisterSignal(filled_assembly)
+ qdel(src)
+
/// Multi-tile airlocks (using a filler panel) have special handling for movables with PASS_FLAG_GLASS
/obj/airlock_filler_object/CanPass(atom/movable/mover, border_dir)
+ if(mover == filled_assembly)
+ return TRUE
. = ..()
if(.)
return
if(istype(mover))
- return !opacity
+ return !density
/obj/airlock_filler_object/singularity_act()
return
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 03816be6f74..143de7aee6e 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -53,6 +53,8 @@
/// How much this door reduces superconductivity to when closed.
var/superconductivity = DOOR_HEAT_TRANSFER_COEFFICIENT
+ /// So explosion doesn't deal extra damage for multitile airlocks
+ COOLDOWN_DECLARE(explosion_cooldown)
/obj/machinery/door/Initialize(mapload)
@@ -88,6 +90,13 @@
return
update_icon()
+/obj/machinery/door/ex_act()
+ if(width > 1 && fillers)
+ if(!COOLDOWN_FINISHED(src, explosion_cooldown))
+ return
+ COOLDOWN_START(src, explosion_cooldown, 1 SECONDS)
+ return ..()
+
/obj/machinery/door/Destroy()
density = FALSE
recalculate_atmos_connectivity()
@@ -425,33 +434,42 @@
recalculate_atmos_connectivity()
update_freelook_sight()
if(safe)
- CheckForMobs()
+ check_for_mobs()
else
crush()
return TRUE
-/obj/machinery/door/proc/CheckForMobs()
- if(locate(/mob/living) in get_turf(src))
- sleep(1)
- open()
+/obj/machinery/door/proc/get_airlock_turfs()
+ var/list/airlock_turfs = list(get_turf(src))
+ if(width > 1 && fillers)
+ for(var/obj/F in fillers)
+ airlock_turfs |= get_turf(F)
+ return airlock_turfs
+
+/obj/machinery/door/proc/check_for_mobs()
+ for(var/turf/T in get_airlock_turfs())
+ if(locate(/mob/living) in T)
+ sleep(1)
+ open()
+ break
/obj/machinery/door/proc/crush()
- for(var/mob/living/L in get_turf(src))
- L.visible_message("[src] closes on [L], crushing [L.p_them()]!", "[src] closes on you and crushes you!")
- if(isalien(L)) //For xenos
- L.adjustBruteLoss(DOOR_CRUSH_DAMAGE * 1.5) //Xenos go into crit after aproximately the same amount of crushes as humans.
- L.emote("roar")
- else if(ishuman(L)) //For humans
- L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
- if(L.stat == CONSCIOUS)
- L.emote("scream")
- L.Weaken(10 SECONDS)
- else //for simple_animals & borgs
- L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
- var/turf/location = get_turf(src)
- L.add_splatter_floor(location)
- for(var/obj/mecha/M in get_turf(src))
- M.take_damage(DOOR_CRUSH_DAMAGE)
+ for(var/turf/T in get_airlock_turfs())
+ for(var/mob/living/L in T)
+ L.visible_message("[src] closes on [L], crushing [L.p_them()]!", "[src] closes on you and crushes you!")
+ if(isalien(L)) //For xenos
+ L.adjustBruteLoss(DOOR_CRUSH_DAMAGE * 1.5) //Xenos go into crit after aproximately the same amount of crushes as humans.
+ L.emote("roar")
+ else if(ishuman(L)) //For humans
+ L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
+ if(L.stat == CONSCIOUS)
+ L.emote("scream")
+ L.Weaken(10 SECONDS)
+ else //for simple_animals & borgs
+ L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
+ L.add_splatter_floor(T)
+ for(var/obj/mecha/M in T)
+ M.take_damage(DOOR_CRUSH_DAMAGE)
/obj/machinery/door/proc/requiresID()
return 1
@@ -529,11 +547,6 @@
* Checks which way the airlock is facing and adjusts the direction accordingly.
* For use with multi-tile airlocks.
*/
-/obj/machinery/door/proc/get_adjusted_dir(dir)
- if(dir in list(EAST, WEST))
- return EAST
- else
- return NORTH
/**
* Sets the bounds of the airlock. For use with multi-tile airlocks.
@@ -550,25 +563,41 @@
if(dir in list(EAST, WEST))
bound_width = width * world.icon_size
bound_height = world.icon_size
+ bound_y = 0
+ pixel_y = 0
+ if(dir == WEST)
+ bound_x = -(width - 1) * world.icon_size
+ pixel_x = -(width - 1) * world.icon_size
+ else
+ bound_x = 0
+ pixel_x = 0
+
else
bound_width = world.icon_size
bound_height = width * world.icon_size
+ bound_x = 0
+ pixel_x = 0
+ if(dir == SOUTH)
+ bound_y = -(width - 1) * world.icon_size
+ pixel_y = -(width - 1) * world.icon_size
+ else
+ bound_y = 0
+ pixel_y = 0
LAZYINITLIST(fillers)
- var/adjusted_dir = get_adjusted_dir(dir)
var/obj/last_filler = src
- for(var/i = 1, i < width, i++)
+ for(var/i in 1 to width)
var/obj/airlock_filler_object/filler
if(length(fillers) < i)
- filler = new
+ filler = new(src)
filler.pair_airlock(src)
fillers.Add(filler)
else
filler = fillers[i]
- filler.loc = get_step(last_filler, adjusted_dir)
+ filler.loc = get_step(last_filler, dir)
filler.density = density
filler.set_opacity(opacity)
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index ef430a2d96a..57b7f51f27c 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -92,41 +92,33 @@
layer = CLOSED_BLASTDOOR_LAYER
closingLayer = CLOSED_BLASTDOOR_LAYER
-/obj/machinery/door/poddoor/multi_tile/four_tile_ver
- icon = 'icons/obj/doors/1x4blast_vert.dmi'
- width = 4
- dir = NORTH
+MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/door/poddoor/multi_tile, 0, 0)
-/obj/machinery/door/poddoor/multi_tile/three_tile_ver
- icon = 'icons/obj/doors/1x3blast_vert.dmi'
- width = 3
- dir = NORTH
-
-/obj/machinery/door/poddoor/multi_tile/two_tile_ver
- icon = 'icons/obj/doors/1x2blast_vert.dmi'
+/obj/machinery/door/poddoor/multi_tile/double
+ icon = 'icons/obj/doors/blastdoor_1x2.dmi'
width = 2
- dir = NORTH
-/obj/machinery/door/poddoor/multi_tile/four_tile_hor
- icon = 'icons/obj/doors/1x4blast_hor.dmi'
- width = 4
- dir = EAST
+MAPPING_DIRECTIONAL_HELPERS_MULTITILE(/obj/machinery/door/poddoor/multi_tile/double, 32)
-/obj/machinery/door/poddoor/multi_tile/three_tile_hor
- icon = 'icons/obj/doors/1x3blast_hor.dmi'
+/obj/machinery/door/poddoor/multi_tile/triple
+ icon = 'icons/obj/doors/blastdoor_1x3.dmi'
width = 3
- dir = EAST
-/obj/machinery/door/poddoor/multi_tile/two_tile_hor
- icon = 'icons/obj/doors/1x2blast_hor.dmi'
- width = 2
- dir = EAST
+MAPPING_DIRECTIONAL_HELPERS_MULTITILE(/obj/machinery/door/poddoor/multi_tile/triple, 64)
+
+/obj/machinery/door/poddoor/multi_tile/quad
+ icon = 'icons/obj/doors/blastdoor_1x4.dmi'
+ width = 4
+
+MAPPING_DIRECTIONAL_HELPERS_MULTITILE(/obj/machinery/door/poddoor/multi_tile/quad, 96)
/obj/machinery/door/poddoor/multi_tile/impassable
desc = "A heavy duty blast door that opens mechanically. Looks even tougher than usual."
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
move_resist = INFINITY
+MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/door/poddoor/multi_tile/impassable, 0, 0)
+
/obj/machinery/door/poddoor/multi_tile/impassable/hostile_lockdown()
return
@@ -137,32 +129,20 @@
to_chat(user, "The electronic systems in this door are far too advanced for your primitive hacking peripherals.")
return
-/obj/machinery/door/poddoor/multi_tile/impassable/four_tile_ver
- icon = 'icons/obj/doors/1x4blast_vert.dmi'
- width = 4
- dir = NORTH
-
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_ver
- icon = 'icons/obj/doors/1x3blast_vert.dmi'
- width = 3
- dir = NORTH
-
-/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_ver
- icon = 'icons/obj/doors/1x2blast_vert.dmi'
+/obj/machinery/door/poddoor/multi_tile/impassable/double
+ icon = 'icons/obj/doors/blastdoor_1x2.dmi'
width = 2
- dir = NORTH
-/obj/machinery/door/poddoor/multi_tile/impassable/four_tile_hor
- icon = 'icons/obj/doors/1x4blast_hor.dmi'
- width = 4
- dir = EAST
+MAPPING_DIRECTIONAL_HELPERS_MULTITILE(/obj/machinery/door/poddoor/multi_tile/impassable/double, 32)
-/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor
- icon = 'icons/obj/doors/1x3blast_hor.dmi'
+/obj/machinery/door/poddoor/multi_tile/impassable/triple
+ icon = 'icons/obj/doors/blastdoor_1x3.dmi'
width = 3
- dir = EAST
-/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_hor
- icon = 'icons/obj/doors/1x2blast_hor.dmi'
- width = 2
- dir = EAST
+MAPPING_DIRECTIONAL_HELPERS_MULTITILE(/obj/machinery/door/poddoor/multi_tile/impassable/triple, 64)
+
+/obj/machinery/door/poddoor/multi_tile/impassable/quad
+ icon = 'icons/obj/doors/blastdoor_1x4.dmi'
+ width = 4
+
+MAPPING_DIRECTIONAL_HELPERS_MULTITILE(/obj/machinery/door/poddoor/multi_tile/impassable/quad, 96)
diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm
index 8d5035018f0..11c51720ae1 100644
--- a/code/game/objects/structures/door_assembly_types.dm
+++ b/code/game/objects/structures/door_assembly_types.dm
@@ -136,29 +136,80 @@
icon = 'icons/obj/doors/airlocks/glass_large/glass_large.dmi'
base_name = "large airlock"
overlays_file = 'icons/obj/doors/airlocks/glass_large/overlays.dmi'
- dir = EAST
var/width = 2
+ var/list/fillers
airlock_type = /obj/machinery/door/airlock/multi_tile
glass_type = /obj/machinery/door/airlock/multi_tile/glass
material_amt = 8
/obj/structure/door_assembly/multi_tile/Initialize(mapload)
. = ..()
- if(dir in list(EAST, WEST))
- bound_width = width * world.icon_size
- bound_height = world.icon_size
- else
- bound_width = world.icon_size
- bound_height = width * world.icon_size
+ update_bounds()
-/obj/structure/door_assembly/multi_tile/Move()
+/obj/structure/door_assembly/multi_tile/Move(new_loc, new_dir)
. = ..()
+ update_bounds()
+
+/obj/structure/door_assembly/multi_tile/start_pulling(atom/movable/AM, state, force, show_message)
+ . = ..()
+ if(fillers)
+ for(var/i in 1 to width)
+ var/obj/airlock_filler_object/filler = fillers[i]
+ filler.density = FALSE
+
+/obj/structure/door_assembly/multi_tile/stop_pulling()
+ . = ..()
+ if(fillers)
+ for(var/i in 1 to width)
+ var/obj/airlock_filler_object/filler = fillers[i]
+ filler.density = TRUE
+
+/obj/structure/door_assembly/multi_tile/proc/update_bounds()
+ if(width <= 1)
+ return
+
if(dir in list(EAST, WEST))
bound_width = width * world.icon_size
bound_height = world.icon_size
+ bound_y = 0
+ pixel_y = 0
+ if(dir == WEST)
+ bound_x = -(width - 1) * world.icon_size
+ pixel_x = -(width - 1) * world.icon_size
+ else
+ bound_x = 0
+ pixel_x = 0
+
else
bound_width = world.icon_size
bound_height = width * world.icon_size
+ bound_x = 0
+ pixel_x = 0
+ if(dir == SOUTH)
+ bound_y = -(width - 1) * world.icon_size
+ pixel_y = -(width - 1) * world.icon_size
+ else
+ bound_y = 0
+ pixel_y = 0
+
+ QDEL_LIST_CONTENTS(fillers)
+ LAZYINITLIST(fillers)
+
+ var/obj/last_filler = src
+ for(var/i in 1 to width)
+ var/obj/airlock_filler_object/filler
+
+ if(length(fillers) < i)
+ filler = new(src)
+ filler.pair_assembly(src)
+ fillers += filler
+ else
+ filler = fillers[i]
+
+ filler.loc = get_step(last_filler, dir)
+ filler.set_opacity(opacity)
+
+ last_filler = filler
/obj/structure/door_assembly/door_assembly_cult
name = "cult airlock assembly"
diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/shuttle_rotate.dm
index 1c169406929..d1a6a0a836b 100644
--- a/code/modules/shuttle/shuttle_rotate.dm
+++ b/code/modules/shuttle/shuttle_rotate.dm
@@ -97,3 +97,12 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate
/obj/machinery/gravity_generator/shuttleRotate(rotation, params)
params = NONE
return ..()
+
+// Updates airlocks' icon
+/obj/machinery/door/shuttleRotate(rotation, params)
+ ..()
+ update_bounds()
+
+/obj/structure/door_assembly/multi_tile/shuttleRotate(rotation, params)
+ ..()
+ update_bounds()
diff --git a/icons/obj/doors/1x2blast_hor.dmi b/icons/obj/doors/1x2blast_hor.dmi
deleted file mode 100644
index fa6338b9abb..00000000000
Binary files a/icons/obj/doors/1x2blast_hor.dmi and /dev/null differ
diff --git a/icons/obj/doors/1x2blast_vert.dmi b/icons/obj/doors/1x2blast_vert.dmi
deleted file mode 100644
index 93550ef3e63..00000000000
Binary files a/icons/obj/doors/1x2blast_vert.dmi and /dev/null differ
diff --git a/icons/obj/doors/1x3blast_hor.dmi b/icons/obj/doors/1x3blast_hor.dmi
deleted file mode 100644
index 2f2b0e79143..00000000000
Binary files a/icons/obj/doors/1x3blast_hor.dmi and /dev/null differ
diff --git a/icons/obj/doors/1x3blast_vert.dmi b/icons/obj/doors/1x3blast_vert.dmi
deleted file mode 100644
index f5fb5414f92..00000000000
Binary files a/icons/obj/doors/1x3blast_vert.dmi and /dev/null differ
diff --git a/icons/obj/doors/1x4blast_hor.dmi b/icons/obj/doors/1x4blast_hor.dmi
deleted file mode 100644
index d9d09df282a..00000000000
Binary files a/icons/obj/doors/1x4blast_hor.dmi and /dev/null differ
diff --git a/icons/obj/doors/1x4blast_vert.dmi b/icons/obj/doors/1x4blast_vert.dmi
deleted file mode 100644
index a40c611b6d4..00000000000
Binary files a/icons/obj/doors/1x4blast_vert.dmi and /dev/null differ
diff --git a/icons/obj/doors/airlocks/glass_large/glass_large.dmi b/icons/obj/doors/airlocks/glass_large/glass_large.dmi
index 5d394c0b0cf..692335b89e1 100644
Binary files a/icons/obj/doors/airlocks/glass_large/glass_large.dmi and b/icons/obj/doors/airlocks/glass_large/glass_large.dmi differ
diff --git a/icons/obj/doors/airlocks/glass_large/overlays.dmi b/icons/obj/doors/airlocks/glass_large/overlays.dmi
index 60242e95f92..3a4c3cb7f90 100644
Binary files a/icons/obj/doors/airlocks/glass_large/overlays.dmi and b/icons/obj/doors/airlocks/glass_large/overlays.dmi differ
diff --git a/icons/obj/doors/blastdoor.dmi b/icons/obj/doors/blastdoor.dmi
index fa3d6457e97..f17e80ee47a 100644
Binary files a/icons/obj/doors/blastdoor.dmi and b/icons/obj/doors/blastdoor.dmi differ
diff --git a/icons/obj/doors/blastdoor_1x2.dmi b/icons/obj/doors/blastdoor_1x2.dmi
new file mode 100644
index 00000000000..8e9eb954468
Binary files /dev/null and b/icons/obj/doors/blastdoor_1x2.dmi differ
diff --git a/icons/obj/doors/blastdoor_1x3.dmi b/icons/obj/doors/blastdoor_1x3.dmi
new file mode 100644
index 00000000000..e1947750ef2
Binary files /dev/null and b/icons/obj/doors/blastdoor_1x3.dmi differ
diff --git a/icons/obj/doors/blastdoor_1x4.dmi b/icons/obj/doors/blastdoor_1x4.dmi
new file mode 100644
index 00000000000..8b8b0d77f3a
Binary files /dev/null and b/icons/obj/doors/blastdoor_1x4.dmi differ
diff --git a/icons/obj/doors/door2x1glass.dmi b/icons/obj/doors/door2x1glass.dmi
index e8c7fad6c93..f2da356e500 100644
Binary files a/icons/obj/doors/door2x1glass.dmi and b/icons/obj/doors/door2x1glass.dmi differ
diff --git a/icons/obj/doors/door_assembly2x1.dmi b/icons/obj/doors/door_assembly2x1.dmi
index 2406867df0c..0b83b172504 100644
Binary files a/icons/obj/doors/door_assembly2x1.dmi and b/icons/obj/doors/door_assembly2x1.dmi differ
diff --git a/tools/UpdatePaths/Scripts/28928_directional_doors.txt b/tools/UpdatePaths/Scripts/28928_directional_doors.txt
new file mode 100644
index 00000000000..16a0a331a73
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/28928_directional_doors.txt
@@ -0,0 +1,30 @@
+/obj/machinery/door/poddoor/multi_tile/four_tile_ver : /obj/machinery/door/poddoor/multi_tile/quad/directional/north{@OLD}
+/obj/machinery/door/poddoor/multi_tile/three_tile_ver : /obj/machinery/door/poddoor/multi_tile/triple/directional/north{@OLD}
+/obj/machinery/door/poddoor/multi_tile/two_tile_ver : /obj/machinery/door/poddoor/multi_tile/double/directional/north{@OLD}
+
+/obj/machinery/door/poddoor/multi_tile/four_tile_hor : /obj/machinery/door/poddoor/multi_tile/quad/directional/east{@OLD}
+/obj/machinery/door/poddoor/multi_tile/three_tile_hor : /obj/machinery/door/poddoor/multi_tile/triple/directional/east{@OLD}
+/obj/machinery/door/poddoor/multi_tile/two_tile_hor : /obj/machinery/door/poddoor/multi_tile/double/directional/east{@OLD}
+
+/obj/machinery/door/poddoor/multi_tile/impassable/four_tile_ver : /obj/machinery/door/poddoor/multi_tile/impassable/quad/directional/north{@OLD}
+/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_ver : /obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/north{@OLD}
+/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_ver : /obj/machinery/door/poddoor/multi_tile/impassable/double/directional/north{@OLD}
+
+/obj/machinery/door/poddoor/multi_tile/impassable/four_tile_hor : /obj/machinery/door/poddoor/multi_tile/impassable/quad/directional/east{@OLD}
+/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor : /obj/machinery/door/poddoor/multi_tile/impassable/triple/directional/east{@OLD}
+/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_hor : /obj/machinery/door/poddoor/multi_tile/impassable/double/directional/east{@OLD}
+
+/obj/machinery/door/airlock/multi_tile{dir=1} : /obj/machinery/door/airlock/multi_tile/directional/north{@OLD;dir=@SKIP}
+/obj/machinery/door/airlock/multi_tile{dir=2} : /obj/machinery/door/airlock/multi_tile/directional/south{@OLD;dir=@SKIP}
+/obj/machinery/door/airlock/multi_tile{dir=4} : /obj/machinery/door/airlock/multi_tile/directional/east{@OLD;dir=@SKIP}
+/obj/machinery/door/airlock/multi_tile{dir=8} : /obj/machinery/door/airlock/multi_tile/directional/west{@OLD;dir=@SKIP}
+/obj/machinery/door/airlock/multi_tile : /obj/machinery/door/airlock/multi_tile/directional/east{@OLD;dir=@SKIP}
+
+/obj/machinery/door/airlock/multi_tile/glass{dir=1} : /obj/machinery/door/airlock/multi_tile/glass/directional/north{@OLD;dir=@SKIP}
+/obj/machinery/door/airlock/multi_tile/glass{dir=2} : /obj/machinery/door/airlock/multi_tile/glass/directional/south{@OLD;dir=@SKIP}
+/obj/machinery/door/airlock/multi_tile/glass{dir=4} : /obj/machinery/door/airlock/multi_tile/glass/directional/east{@OLD;dir=@SKIP}
+/obj/machinery/door/airlock/multi_tile/glass{dir=8} : /obj/machinery/door/airlock/multi_tile/glass/directional/west{@OLD;dir=@SKIP}
+/obj/machinery/door/airlock/multi_tile/glass : /obj/machinery/door/airlock/multi_tile/glass/directional/east{@OLD;dir=@SKIP}
+
+/obj/machinery/door/poddoor/multi_tile : /obj/machinery/door/poddoor/multi_tile/directional/south{@OLD;dir=@SKIP}
+/obj/machinery/door/poddoor/multi_tile/impassable : /obj/machinery/door/poddoor/multi_tile/impassable/directional/south{@OLD;dir=@SKIP}
diff --git a/tools/maplint/lints/directional_airlocks.yml b/tools/maplint/lints/directional_airlocks.yml
new file mode 100644
index 00000000000..4b37590be75
--- /dev/null
+++ b/tools/maplint/lints/directional_airlocks.yml
@@ -0,0 +1,45 @@
+help: "Use the specific directional subtypes for this poddoor. Run 28928_directional_doors.txt to fix this."
+/obj/machinery/door/poddoor/multi_tile:
+ banned_variables:
+ - pixel_x
+ - pixel_y
+ - dir
+=/obj/machinery/door/poddoor/multi_tile/double:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/double/directional:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/triple:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/triple/directional:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/quad:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/quad/directional:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/impassable:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/impassable/double:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/impassable/double/directional:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/impassable/triple:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/impassable/triple/directional:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/impassable/quad:
+ banned: TRUE
+=/obj/machinery/door/poddoor/multi_tile/impassable/quad/directional:
+ banned: TRUE
+/obj/machinery/door/airlock/multi_tile:
+ banned_variables:
+ - pixel_x
+ - pixel_y
+ - dir
+=/obj/machinery/door/airlock/multi_tile:
+ banned: TRUE
+=/obj/machinery/door/airlock/multi_tile/directional:
+ banned: TRUE
+=/obj/machinery/door/airlock/multi_tile/glass:
+ banned: TRUE
+=/obj/machinery/door/airlock/multi_tile/glass/directional:
+ banned: TRUE