From e48f4ddbf38ce7ec3ee889aacec2335529a21431 Mon Sep 17 00:00:00 2001 From: kyunkyunkyun <120701975+kyunkyunkyun@users.noreply.github.com> Date: Sat, 26 Apr 2025 23:06:38 +0500 Subject: [PATCH] Make sinks/toilets/showers directional for mapping (#28940) * update watercloset.dm (again) * add missing returns and armor check * updatepaths * maybe now * try this * should be better * paths * sleep doesn't work * is it better * he slips xdd * this * come on * ok i can't beat the grab --- .../LavaRuins/lavaland_biodome_winter.dmm | 8 +- .../lavaland_surface_althland_excavation.dmm | 4 +- .../LavaRuins/lavaland_surface_eden.dmm | 6 +- .../LavaRuins/lavaland_surface_nt.dmm | 25 +- .../LavaRuins/lavaland_surface_seed_vault.dmm | 29 +- .../lavaland_surface_shuttlecrash.dmm | 7 +- .../SpaceRuins/abandoned_engi_sat.dmm | 19 +- .../RandomRuins/SpaceRuins/casino.dmm | 13 +- .../RandomRuins/SpaceRuins/deepstorage.dmm | 36 +- _maps/map_files/RandomRuins/SpaceRuins/dj.dmm | 14 +- .../RandomRuins/SpaceRuins/listeningpost.dmm | 13 +- .../RandomRuins/SpaceRuins/meatpackers.dmm | 14 +- .../RandomRuins/SpaceRuins/moonoutpost19.dmm | 49 +- .../RandomRuins/SpaceRuins/oldstation.dmm | 29 +- .../RandomRuins/SpaceRuins/rocky_motel.dmm | 19 +- .../RandomRuins/SpaceRuins/sieged_lab.dmm | 9 +- .../RandomRuins/SpaceRuins/spacebar.dmm | 20 +- .../SpaceRuins/submaps/rocky_motel_submap.dmm | 6 +- .../SpaceRuins/submaps/sieged_lab_submaps.dmm | 4 +- .../SpaceRuins/syndie_space_base.dmm | 20 +- .../RandomRuins/SpaceRuins/syndiedepot.dmm | 9 +- .../SpaceRuins/turretedoutpost.dmm | 11 +- .../map_files/RandomRuins/SpaceRuins/ussp.dmm | 46 +- _maps/map_files/generic/centcomm.dmm | 98 +--- _maps/map_files/shuttles/admin_hospital.dmm | 11 +- _maps/map_files/shuttles/emergency_bar.dmm | 16 +- .../shuttles/emergency_cherenkov.dmm | 8 +- _maps/map_files/stations/boxstation.dmm | 371 ++++----------- _maps/map_files/stations/cerestation.dmm | 277 +++-------- _maps/map_files/stations/deltastation.dmm | 260 +++-------- _maps/map_files/stations/emeraldstation.dmm | 337 +++---------- _maps/map_files/stations/metastation.dmm | 219 ++------- _maps/map_files/templates/biodome_beach.dmm | 17 +- _maps/map_files/templates/shelter_2.dmm | 39 +- code/__DEFINES/mappers.dm | 18 + code/game/objects/structures/watercloset.dm | 442 +++++++++--------- .../test_attack_chain_watercloset.dm | 85 ++++ code/tests/game_tests.dm | 1 + icons/obj/watercloset.dmi | Bin 15118 -> 15320 bytes .../Scripts/28940_directional_watercloset.txt | 25 + .../maplint/lints/directional_watercloset.yml | 36 ++ 41 files changed, 865 insertions(+), 1805 deletions(-) create mode 100644 code/tests/attack_chain/test_attack_chain_watercloset.dm create mode 100644 tools/UpdatePaths/Scripts/28940_directional_watercloset.txt create mode 100644 tools/maplint/lints/directional_watercloset.yml diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm index 2ee5cb13371..5720ef32047 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm @@ -40,11 +40,11 @@ /turf/simulated/floor/plating, /area/ruin/powered/snow_biodome) "ai" = ( -/obj/machinery/shower, +/obj/machinery/shower/directional/north, /turf/simulated/floor/plating, /area/ruin/powered/snow_biodome) "aj" = ( -/obj/structure/sink, +/obj/structure/sink/directional/north, /obj/machinery/light/small{ dir = 1 }, @@ -65,9 +65,7 @@ /turf/simulated/floor/plating, /area/ruin/powered/snow_biodome) "an" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/plating, /area/ruin/powered/snow_biodome) "ao" = ( 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 00d96dd7467..93ffa2bdff6 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm @@ -1318,9 +1318,7 @@ /area/ruin/unpowered/althland_excavation) "Pe" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/effect/mapping_helpers/turfs/damage, /turf/simulated/floor/plating/lavaland_air, /area/ruin/unpowered/althland_excavation) diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_eden.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_eden.dmm index 0de8d02a939..c67b3f82254 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_eden.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_eden.dmm @@ -274,11 +274,7 @@ /turf/simulated/floor/grass/jungle/lavaland_air, /area/ruin/unpowered/misc_lavaruin) "sU" = ( -/obj/structure/sink/kitchen{ - dir = 4; - pixel_y = 3; - pixel_x = -13 - }, +/obj/structure/sink/kitchen/directional/west, /obj/effect/decal/cleanable/flour, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/wood/lavaland_air, diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_nt.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_nt.dmm index c614f565197..839f6983aa8 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_nt.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_nt.dmm @@ -683,9 +683,7 @@ }, /area/mine/laborcamp) "ep" = ( -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/effect/turf_decal/box, /turf/simulated/floor/plasteel{ dir = 6; @@ -3140,10 +3138,7 @@ }, /area/mine/outpost/cafeteria) "qZ" = ( -/obj/structure/sink/kitchen/old{ - pixel_y = -10; - dir = 1 - }, +/obj/structure/sink/kitchen/old/directional/south, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "darkredyellowfull" @@ -4449,9 +4444,7 @@ /area/mine/laborcamp) "yr" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/effect/turf_decal/box, /turf/simulated/floor/plasteel{ icon_state = "yellowsiding" @@ -5721,9 +5714,7 @@ /area/mine/laborcamp) "FF" = ( /obj/effect/turf_decal/delivery/white/hollow, -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/machinery/camera{ c_tag = "Mining Outpost - Main Airlock"; network = list("Mining Outpost"); @@ -7996,9 +7987,7 @@ }, /area/mine/outpost/airlock) "RG" = ( -/obj/structure/sink/kitchen{ - pixel_y = 24 - }, +/obj/structure/sink/kitchen/directional/north, /turf/simulated/floor/plasteel{ icon_regular_floor = "yellowsiding"; icon_state = "tranquillite" @@ -8231,9 +8220,7 @@ /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/outpost/catwalk) "SR" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery/white/hollow, /obj/structure/sign/poster/official/random/directional/north, /obj/machinery/light_switch{ diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index eec3746a98f..dfc60c5b632 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -3,9 +3,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel/freezer, /area/ruin/powered/seedvault) "al" = ( @@ -45,16 +43,11 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/sink{ - pixel_y = -4; - dir = 1 - }, +/obj/structure/sink/directional/south, /turf/simulated/floor/plasteel/freezer, /area/ruin/powered/seedvault) "dX" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel/freezer, /area/ruin/powered/seedvault) "ed" = ( @@ -156,10 +149,7 @@ /turf/simulated/wall/r_wall, /area/ruin/powered/seedvault) "nt" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel/freezer, /area/ruin/powered/seedvault) "oy" = ( @@ -411,11 +401,7 @@ /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "Uh" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel/freezer, /area/ruin/powered/seedvault) "Vu" = ( @@ -441,10 +427,7 @@ /turf/simulated/floor/plasteel/freezer, /area/ruin/powered/seedvault) "XC" = ( -/obj/structure/sink{ - pixel_y = -4; - dir = 1 - }, +/obj/structure/sink/directional/south, /turf/simulated/floor/plasteel/freezer, /area/ruin/powered/seedvault) "XF" = ( diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_shuttlecrash.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_shuttlecrash.dmm index e64f6a181d6..ab375631d04 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_shuttlecrash.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_shuttlecrash.dmm @@ -313,7 +313,7 @@ }, /area/ruin/unpowered/misc_lavaruin) "zG" = ( -/obj/structure/toilet, +/obj/structure/toilet/directional/north, /turf/simulated/floor/mineral/titanium, /area/ruin/unpowered/misc_lavaruin) "zM" = ( @@ -342,10 +342,7 @@ /turf/simulated/floor/mineral/titanium/blue, /area/ruin/unpowered/misc_lavaruin) "AC" = ( -/obj/structure/sink{ - pixel_x = 12; - dir = 4 - }, +/obj/structure/sink/directional/east, /obj/item/mounted/mirror{ icon_state = "mirror_broke"; pixel_y = -32 diff --git a/_maps/map_files/RandomRuins/SpaceRuins/abandoned_engi_sat.dmm b/_maps/map_files/RandomRuins/SpaceRuins/abandoned_engi_sat.dmm index 7c68fc49551..e16ffc6786b 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/abandoned_engi_sat.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/abandoned_engi_sat.dmm @@ -285,10 +285,7 @@ /turf/simulated/wall/r_wall, /area/ruin/space/abandoned_engi_sat) "jk" = ( -/obj/machinery/shower{ - dir = 4; - pixel_x = 5 - }, +/obj/machinery/shower/directional/west, /obj/structure/curtain/open/shower/engineering, /turf/simulated/floor/plasteel{ icon_state = "cmo" @@ -1080,9 +1077,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/abandoned_engi_sat) "LL" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /turf/simulated/floor/plasteel{ icon_state = "vault"; dir = 5 @@ -1222,10 +1217,7 @@ /turf/template_noop, /area/ruin/space/abandoned_engi_sat) "QJ" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ icon_state = "vault"; dir = 5 @@ -1431,10 +1423,7 @@ /turf/simulated/floor/plating, /area/ruin/space/abandoned_engi_sat) "ZS" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/sign/poster/random/directional/east, /turf/simulated/floor/plasteel, /area/ruin/space/abandoned_engi_sat) diff --git a/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm b/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm index a84cec5e815..e3cd9f2febb 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm @@ -98,10 +98,7 @@ /turf/simulated/floor/carpet/black, /area/ruin/space/powered/casino/floor) "cy" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -6 - }, +/obj/structure/sink/directional/south, /obj/structure/mirror{ pixel_y = -32 }, @@ -799,9 +796,7 @@ /turf/template_noop, /area/template_noop) "wn" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 8 }, @@ -1187,9 +1182,7 @@ /turf/simulated/floor/carpet/black, /area/ruin/space/powered/casino/floor) "Hq" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 8 }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm index fff32296b73..01a3c06fc5e 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm @@ -1166,10 +1166,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/deepstorage) "fD" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -4 - }, +/obj/structure/sink/directional/south, /obj/structure/mirror{ broken = 1; desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!"; @@ -1701,11 +1698,7 @@ }, /area/ruin/space/deepstorage) "jo" = ( -/obj/machinery/shower{ - dir = 8; - pixel_x = -4; - pixel_y = -4 - }, +/obj/machinery/shower/directional/east, /obj/structure/curtain/open/shower, /obj/item/soap, /obj/effect/decal/cleanable/dirt, @@ -4861,11 +4854,7 @@ /area/ruin/space/deepstorage) "Dx" = ( /obj/structure/window/reinforced/tinted, -/obj/machinery/shower{ - dir = 8; - pixel_x = -4; - pixel_y = -4 - }, +/obj/machinery/shower/directional/east, /obj/structure/curtain/open/shower, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -4986,11 +4975,7 @@ /area/ruin/space/deepstorage) "Eu" = ( /obj/structure/window/reinforced/tinted, -/obj/machinery/shower{ - dir = 8; - pixel_x = -4; - pixel_y = -4 - }, +/obj/machinery/shower/directional/east, /obj/structure/curtain/open/shower, /obj/item/bikehorn/rubberducky, /turf/simulated/floor/plasteel{ @@ -5633,9 +5618,7 @@ }, /area/ruin/space/deepstorage) "Kg" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 8 @@ -5687,9 +5670,7 @@ }, /area/ruin/space/deepstorage) "Kx" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 8 }, @@ -7023,10 +7004,7 @@ }, /area/ruin/space/deepstorage) "Uv" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -4 - }, +/obj/structure/sink/directional/south, /obj/structure/mirror{ pixel_y = -28 }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/dj.dmm b/_maps/map_files/RandomRuins/SpaceRuins/dj.dmm index da3e14074d5..791e60450cd 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/dj.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/dj.dmm @@ -687,11 +687,7 @@ dir = 4; pixel_x = -32 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/pool/spaceloot/syndicate/mixed, /turf/simulated/floor/plasteel{ @@ -716,9 +712,7 @@ }, /area/ruin/space/djstation) "bT" = ( -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /obj/structure/curtain/open/shower, /obj/structure/window/reinforced, /obj/item/soap/deluxe/laundry, @@ -964,9 +958,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/djstation) "MM" = ( -/obj/structure/toilet{ - pixel_y = 11 - }, +/obj/structure/toilet/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm index f8ac4b5cfe7..42324cac85c 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm @@ -76,10 +76,7 @@ }, /area/ruin/space/syndicate_listening_station/asteroid) "hQ" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -492,9 +489,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/syndicate_listening_station) "KM" = ( -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /obj/item/soap/syndie, /obj/item/bikehorn/rubberducky, /obj/structure/curtain/open/shower/security, @@ -653,9 +648,7 @@ }, /area/ruin/space/syndicate_listening_station/asteroid) "Xm" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /turf/simulated/floor/mineral/silver, /area/ruin/space/syndicate_listening_station) "Xz" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/meatpackers.dmm b/_maps/map_files/RandomRuins/SpaceRuins/meatpackers.dmm index e37a0611c77..4d8c7fc05ac 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/meatpackers.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/meatpackers.dmm @@ -470,9 +470,7 @@ }, /area/ruin/unpowered/bmp_ship/midship) "bW" = ( -/obj/structure/sink{ - pixel_y = 12 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" @@ -2057,9 +2055,7 @@ }, /area/ruin/unpowered/bmp_ship/aft) "hg" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/light/small{ dir = 1 }, @@ -2084,11 +2080,7 @@ /turf/simulated/floor/plasteel, /area/ruin/unpowered/bmp_ship/aft) "hk" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm index 075436bfc75..d238d330e0b 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm @@ -93,9 +93,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/moonbase19) "ap" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/noslip, @@ -198,9 +196,7 @@ }, /area/ruin/space/moonbase19) "aD" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plasteel{ @@ -1507,10 +1503,7 @@ /obj/structure/mirror{ pixel_x = -28 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -2082,9 +2075,7 @@ }, /area/ruin/space/moonbase19) "gM" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/machinery/light/small{ dir = 8 }, @@ -5061,11 +5052,7 @@ }, /area/ruin/space/moonbase19) "rl" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = -2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ icon_state = "darkblue"; dir = 4 @@ -6900,9 +6887,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/structure/curtain/open/shower, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -7987,9 +7972,7 @@ }, /area/ruin/space/moonbase19) "Ey" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/noslip, /area/ruin/space/moonbase19) @@ -8164,10 +8147,7 @@ /turf/simulated/floor/engine, /area/ruin/space/moonbase19) "Fp" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor"; temperature = 273.15 @@ -11755,9 +11735,7 @@ }, /area/ruin/space/moonbase19) "VX" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/light/small{ @@ -12288,10 +12266,7 @@ /obj/structure/mirror{ pixel_x = -28 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -12310,9 +12285,7 @@ }, /area/ruin/space/moonbase19) "Yu" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/effect/decal/cleanable/vomit/green, /mob/living/simple_animal/hostile/alien, /turf/simulated/floor/plasteel{ diff --git a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm index edddeac388b..081aeea54af 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm @@ -199,9 +199,7 @@ /area/ruin/ancientstation) "aJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/toilet{ - pixel_y = 12 - }, +/obj/structure/toilet/directional/north, /turf/simulated/floor/plasteel/white, /area/ruin/ancientstation) "aK" = ( @@ -254,10 +252,7 @@ name = "dusty mirror"; pixel_x = 26 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel/white, /area/ruin/ancientstation) "aR" = ( @@ -314,9 +309,7 @@ /area/ruin/ancientstation/comm) "bb" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/machinery/door/window/classic/reversed{ dir = 8 }, @@ -389,9 +382,7 @@ "bm" = ( /obj/effect/decal/cleanable/dirt, /obj/item/soap/nanotrasen, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/machinery/door/window/classic/normal{ dir = 8 }, @@ -1664,9 +1655,7 @@ /area/ruin/ancientstation) "fg" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "red" @@ -2372,9 +2361,7 @@ /area/ruin/ancientstation/comm) "gX" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, /area/ruin/ancientstation/rnd) @@ -5884,9 +5871,7 @@ /area/ruin/ancientstation/rnd) "IP" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/rocky_motel.dmm b/_maps/map_files/RandomRuins/SpaceRuins/rocky_motel.dmm index 52c49d85aee..b40789f790b 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/rocky_motel.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/rocky_motel.dmm @@ -27,10 +27,7 @@ /turf/simulated/floor/wood, /area/ruin/space/rocky_motel) "cT" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -374,9 +371,7 @@ /turf/simulated/floor/plating/asteroid/airless, /area/ruin/space/rocky_motel/asteroid) "Fc" = ( -/obj/structure/sink{ - pixel_y = 25 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/vault, /area/ruin/space/rocky_motel) "Ff" = ( @@ -625,11 +620,7 @@ "Ub" = ( /obj/structure/curtain/open/shower, /obj/item/soap, -/obj/machinery/shower{ - dir = 4; - pixel_y = -4; - pixel_x = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -762,9 +753,7 @@ /turf/simulated/wall, /area/ruin/space/rocky_motel) "Zz" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/sieged_lab.dmm b/_maps/map_files/RandomRuins/SpaceRuins/sieged_lab.dmm index e4973cfcbf4..b83a5f4a67c 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/sieged_lab.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/sieged_lab.dmm @@ -164,9 +164,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/sieged_lab) "kA" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -654,10 +652,7 @@ /turf/simulated/floor/wood, /area/ruin/space/sieged_lab) "Eo" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm index 4fa31d186e5..01a80fecb24 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm @@ -207,11 +207,7 @@ /obj/structure/mirror{ pixel_x = -28 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = -8 - }, +/obj/structure/sink/directional/west, /obj/effect/spawner/random/cobweb/left/rare, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -314,11 +310,7 @@ /obj/structure/mirror{ pixel_x = -28 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = -8 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -670,9 +662,7 @@ /turf/simulated/floor/mineral/titanium/blue/airless, /area/ruin/space/powered) "CN" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -689,9 +679,7 @@ /turf/simulated/floor/plating/airless, /area/ruin/space/powered) "DT" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/item/wrench, /turf/simulated/floor/plasteel{ icon_state = "dark" diff --git a/_maps/map_files/RandomRuins/SpaceRuins/submaps/rocky_motel_submap.dmm b/_maps/map_files/RandomRuins/SpaceRuins/submaps/rocky_motel_submap.dmm index 560e13bafba..2a9260e805d 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/submaps/rocky_motel_submap.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/submaps/rocky_motel_submap.dmm @@ -327,11 +327,7 @@ /area/template_noop) "Kr" = ( /obj/item/soap/syndie, -/obj/machinery/shower{ - dir = 4; - pixel_y = -4; - pixel_x = 4 - }, +/obj/machinery/shower/directional/west, /obj/structure/curtain/open/shower, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" diff --git a/_maps/map_files/RandomRuins/SpaceRuins/submaps/sieged_lab_submaps.dmm b/_maps/map_files/RandomRuins/SpaceRuins/submaps/sieged_lab_submaps.dmm index f0fab13debe..9c80cb0e358 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/submaps/sieged_lab_submaps.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/submaps/sieged_lab_submaps.dmm @@ -1979,9 +1979,7 @@ /turf/simulated/floor/plating/airless, /area/template_noop) "Qa" = ( -/obj/structure/sink{ - pixel_y = 19 - }, +/obj/structure/sink/directional/north, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/plasteel{ dir = 1; diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm index 91fc320b5fa..1a5a0b879ae 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm @@ -245,9 +245,7 @@ /turf/simulated/floor/grass, /area/ruin/unpowered/syndicate_space_base/service) "bO" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/box/white, /turf/simulated/floor/wood, @@ -1195,10 +1193,7 @@ name = "east bump"; pixel_x = 27 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/box/white, /turf/simulated/floor/plasteel{ @@ -3854,11 +3849,7 @@ /turf/simulated/floor/plating, /area/ruin/unpowered/syndicate_space_base/atmos) "wf" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/box/white, /turf/simulated/floor/wood, @@ -7142,10 +7133,7 @@ /area/ruin/unpowered/syndicate_space_base/arrivals) "QO" = ( /obj/item/storage/box/monkeycubes/syndicate, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/light_switch{ dir = 8; pixel_x = 24; diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm index cdcdf7e822e..b50d10ceffd 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm @@ -771,10 +771,7 @@ /turf/simulated/floor/mineral/silver, /area/syndicate_depot/core) "cr" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/mineral/silver, /area/syndicate_depot/core) "cs" = ( @@ -885,9 +882,7 @@ }, /area/syndicate_depot/core) "cE" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/mineral/silver, /area/syndicate_depot/core) "cF" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm b/_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm index 203d8aea28a..29a7fc0eb28 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm @@ -425,10 +425,7 @@ /turf/simulated/floor/plating, /area/ruin/space/turreted_outpost) "Kd" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ pixel_x = -28 }, @@ -473,7 +470,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/toilet, +/obj/structure/toilet/directional/north, /turf/simulated/floor/plasteel/freezer, /area/ruin/space/turreted_outpost) "Oc" = ( @@ -498,9 +495,7 @@ /turf/simulated/floor/plating, /area/ruin/space/turreted_outpost) "OU" = ( -/obj/machinery/shower{ - pixel_y = 24 - }, +/obj/machinery/shower/directional/north, /obj/structure/curtain/open/shower/security, /obj/item/soap/syndie, /obj/item/bikehorn/rubberducky, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm index 6876289a51c..bbddbcf8206 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm @@ -682,7 +682,7 @@ /area/ruin/space/derelict/bridge) "bR" = ( /obj/structure/curtain/open, -/obj/structure/toilet, +/obj/structure/toilet/directional/north, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" @@ -815,9 +815,7 @@ }, /area/ruin/space/derelict/crew_quarters) "ck" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/structure/curtain/open/shower, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -912,10 +910,7 @@ }, /area/ruin/space/derelict/bridge) "cy" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ dir = 4; pixel_x = -32 @@ -1044,10 +1039,7 @@ /area/ruin/space/derelict/arrival) "cO" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - dir = 4; - pixel_x = 5 - }, +/obj/machinery/shower/directional/west, /obj/structure/window/reinforced{ dir = 1 }, @@ -2469,9 +2461,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/structure/curtain/open/shower, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" @@ -2821,11 +2811,7 @@ }, /area/ruin/space/derelict/arrival) "hw" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "purple" @@ -2947,11 +2933,7 @@ }, /area/ruin/space/derelict/arrival) "hN" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purple" @@ -4884,9 +4866,7 @@ /turf/template_noop, /area/ruin/space/derelict/hallway/primary) "ne" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/structure/curtain/open/shower, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -4974,9 +4954,7 @@ /turf/simulated/floor/plasteel/white, /area/ruin/space/derelict/hallway/primary) "ns" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/structure/curtain/open/shower, /obj/structure/window/reinforced, /obj/effect/decal/cleanable/dirt, @@ -5045,11 +5023,7 @@ /turf/simulated/floor/plasteel/white, /area/ruin/space/derelict/hallway/primary) "nC" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12; - pixel_y = 2 - }, +/obj/structure/sink/directional/east, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/white, /area/ruin/space/derelict/hallway/primary) diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm index e21503b6ca3..977f8c55744 100644 --- a/_maps/map_files/generic/centcomm.dmm +++ b/_maps/map_files/generic/centcomm.dmm @@ -982,16 +982,12 @@ }, /area/holodeck/source_basketball) "dH" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/plating, /area/centcom) "dI" = ( /obj/effect/decal/cleanable/cobweb2, -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/plating, /area/centcom) "dJ" = ( @@ -1065,9 +1061,7 @@ /area/holodeck/source_basketball) "eb" = ( /obj/effect/decal/cleanable/blood, -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/plating, /area/centcom) "ec" = ( @@ -1281,10 +1275,7 @@ /turf/simulated/floor/pod/dark, /area/syndicate_mothership) "eW" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ icon_state = "bar" }, @@ -3736,9 +3727,7 @@ /obj/machinery/door/window/reinforced/reversed{ name = "Tactical Toilet" }, -/obj/structure/toilet{ - pixel_y = 13 - }, +/obj/structure/toilet/directional/north, /turf/simulated/floor/plasteel/freezer, /area/syndicate_mothership) "np" = ( @@ -4315,10 +4304,7 @@ /turf/simulated/wall/r_wall, /area/start) "pi" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror/magic/nuclear{ pixel_x = 28 }, @@ -5913,10 +5899,7 @@ /obj/structure/mirror{ pixel_x = 28 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) "uJ" = ( @@ -6459,10 +6442,7 @@ /obj/structure/mirror{ pixel_x = 28 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel/freezer, /area/trader_station/sol) "wE" = ( @@ -6506,9 +6486,7 @@ /turf/simulated/floor/plasteel, /area/admin) "wI" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/structure/window/reinforced/tinted, /obj/machinery/door/window{ dir = 8; @@ -6631,9 +6609,7 @@ /turf/simulated/floor/carpet, /area/admin) "xa" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/structure/window/reinforced/tinted{ dir = 1 }, @@ -6988,10 +6964,7 @@ }, /area/centcom/evac) "yI" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 32 }, @@ -7154,10 +7127,7 @@ /turf/simulated/floor/wood, /area/wizard_station) "zw" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 32 }, @@ -7925,10 +7895,7 @@ /turf/simulated/floor/wood, /area/ghost_bar) "Cp" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -7952,9 +7919,7 @@ /area/admin) "Ct" = ( /obj/effect/decal/cleanable/blood, -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/plasteel/dark, /area/admin) "Cu" = ( @@ -8353,9 +8318,7 @@ /obj/structure/window/reinforced/tinted{ dir = 1 }, -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/door/window{ dir = 8; name = "Toilet"; @@ -8803,10 +8766,7 @@ /obj/structure/curtain/open/shower/security, /obj/item/soap/syndie, /obj/item/bikehorn/rubberducky/captainducky, -/obj/machinery/shower{ - dir = 1; - pixel_y = -2 - }, +/obj/machinery/shower/directional/south, /turf/simulated/floor/plasteel/freezer, /area/syndicate_mothership) "FB" = ( @@ -9390,9 +9350,7 @@ }, /area/syndicate_mothership) "Hy" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/plasteel/dark, /area/admin) "Hz" = ( @@ -9427,10 +9385,7 @@ }, /area/ghost_bar) "HE" = ( -/obj/machinery/shower{ - dir = 4; - pixel_y = -2 - }, +/obj/machinery/shower/directional/west, /obj/structure/curtain/open/shower, /turf/simulated/floor/plasteel/freezer, /area/ghost_bar) @@ -10514,9 +10469,7 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/specops) "Lc" = ( -/obj/structure/toilet{ - pixel_y = 13 - }, +/obj/structure/toilet/directional/north, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) "Le" = ( @@ -10683,9 +10636,7 @@ }, /area/ghost_bar) "LG" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -11650,10 +11601,7 @@ /area/space/nearstation/centcom) "OL" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - dir = 1; - pixel_y = -2 - }, +/obj/machinery/shower/directional/south, /obj/structure/window/basic{ dir = 1 }, @@ -12332,9 +12280,7 @@ /turf/simulated/floor/plasteel/dark, /area/centcom/specops) "QZ" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/structure/window/reinforced/tinted{ dir = 1 }, diff --git a/_maps/map_files/shuttles/admin_hospital.dmm b/_maps/map_files/shuttles/admin_hospital.dmm index 0dc262a957e..1107280fbd1 100644 --- a/_maps/map_files/shuttles/admin_hospital.dmm +++ b/_maps/map_files/shuttles/admin_hospital.dmm @@ -278,11 +278,7 @@ /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bt" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bv" = ( @@ -362,10 +358,7 @@ /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bJ" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bL" = ( diff --git a/_maps/map_files/shuttles/emergency_bar.dmm b/_maps/map_files/shuttles/emergency_bar.dmm index 30e5462092c..6517dbd5ec2 100644 --- a/_maps/map_files/shuttles/emergency_bar.dmm +++ b/_maps/map_files/shuttles/emergency_bar.dmm @@ -56,9 +56,7 @@ /turf/simulated/floor/wood, /area/shuttle/escape) "ao" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/light/small, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -924,9 +922,7 @@ dir = 1 }, /obj/item/soap/deluxe, -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -944,9 +940,7 @@ /obj/structure/mirror{ pixel_y = 35 }, -/obj/structure/sink{ - pixel_y = 14 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -1055,9 +1049,7 @@ "SW" = ( /obj/structure/curtain/open/shower, /obj/item/bikehorn/rubberducky, -/obj/machinery/shower{ - pixel_y = 22 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, diff --git a/_maps/map_files/shuttles/emergency_cherenkov.dmm b/_maps/map_files/shuttles/emergency_cherenkov.dmm index 56dbaabcc87..3a00fcedc7d 100644 --- a/_maps/map_files/shuttles/emergency_cherenkov.dmm +++ b/_maps/map_files/shuttles/emergency_cherenkov.dmm @@ -175,9 +175,7 @@ /turf/simulated/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) "fS" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/noslip, /area/shuttle/escape) @@ -1579,9 +1577,7 @@ /turf/simulated/floor/pod/dark, /area/shuttle/escape) "YP" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/noslip, /area/shuttle/escape) diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index 0d7b9f056a4..ccf3ac978a5 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -242,9 +242,7 @@ }, /area/station/security/main) "acB" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/structure/curtain/open/shower/security, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -271,10 +269,7 @@ }, /area/station/security/main) "acE" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ pixel_x = -28 }, @@ -361,9 +356,7 @@ /turf/simulated/floor/grass, /area/station/security/permabrig) "acS" = ( -/obj/structure/toilet{ - dir = 1 - }, +/obj/structure/toilet/directional/south, /obj/machinery/light/small, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -3095,15 +3088,11 @@ }, /area/station/security/storage) "amK" = ( -/obj/structure/sink/kitchen/old{ - pixel_y = 28 - }, +/obj/structure/sink/kitchen/old/directional/north, /turf/simulated/floor/plating, /area/station/maintenance/fore) "amL" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/structure/curtain/open/shower, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -4223,9 +4212,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "aqr" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/light/small{ dir = 4 }, @@ -5879,10 +5866,7 @@ }, /area/station/security/processing) "avC" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/item/soap, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) @@ -6233,9 +6217,7 @@ /turf/space, /area/station/engineering/solar/fore_starboard) "awS" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -7772,9 +7754,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/abandonedbar) "aBW" = ( -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /obj/machinery/light_construct/small{ dir = 4 }, @@ -13260,9 +13240,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sink{ - pixel_y = 25 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/garden) "aUx" = ( @@ -13278,9 +13256,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "aUz" = ( -/obj/structure/sink{ - pixel_y = 25 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/garden) "aUA" = ( @@ -18049,11 +18025,7 @@ /turf/simulated/floor/wood, /area/station/service/bar) "bja" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/machinery/light_switch{ dir = 4; name = "west bump"; @@ -18066,11 +18038,7 @@ /turf/simulated/floor/wood, /area/station/service/bar) "bjd" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -19127,9 +19095,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/port/east) "bmt" = ( -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -19853,11 +19819,7 @@ /area/station/service/bar) "bou" = ( /obj/item/reagent_containers/glass/bucket, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -20406,10 +20368,7 @@ }, /area/station/service/hydroponics) "bqb" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -22435,9 +22394,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/south) "bwP" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 8 }, @@ -22602,10 +22559,7 @@ c_tag = "Hydroponics South"; dir = 8 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/item/reagent_containers/glass/bucket, /obj/machinery/light_switch{ dir = 8; @@ -22709,10 +22663,7 @@ }, /area/station/public/toilet/lockerroom) "byo" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ icon_state = "1-2" @@ -22926,9 +22877,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/exit) "bzu" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 8 }, @@ -23069,9 +23018,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/exit) "bzP" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ @@ -23872,10 +23819,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/south) "bDv" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -24111,10 +24055,7 @@ /turf/simulated/wall, /area/station/medical/reception) "bEz" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -25067,10 +25008,7 @@ /turf/simulated/floor/plating, /area/station/medical/chemistry) "bIi" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 8; @@ -25124,10 +25062,7 @@ /turf/simulated/floor/plating, /area/station/medical/reception) "bIs" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -25500,10 +25435,7 @@ /area/station/supply/sorting) "bJF" = ( /obj/machinery/firealarm/directional/west, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteyellow" @@ -30102,10 +30034,7 @@ }, /area/station/science/robotics) "ccj" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -30381,9 +30310,7 @@ }, /area/station/science/robotics) "cdG" = ( -/obj/machinery/shower{ - pixel_y = 8 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/break_room) @@ -31882,10 +31809,7 @@ /area/station/medical/medbay3) "cjG" = ( /obj/machinery/firealarm/directional/east, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -32234,10 +32158,7 @@ }, /area/station/medical/virology) "cll" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/camera{ c_tag = "Virology Module North"; dir = 5 @@ -32352,9 +32273,7 @@ }, /area/station/medical/virology) "clU" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -32993,9 +32912,7 @@ }, /area/station/supply/miningdock) "coi" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitegreen" @@ -34286,10 +34203,7 @@ /turf/simulated/wall/r_wall, /area/station/engineering/control) "ctk" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/light_switch{ dir = 8; name = "east bump"; @@ -35189,9 +35103,7 @@ /turf/simulated/floor/plating, /area/station/command/bridge) "cxn" = ( -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery/white/hollow, /turf/simulated/floor/noslip, /area/station/medical/surgery) @@ -35355,10 +35267,7 @@ name = "east bump"; pixel_x = 28 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/iv_drip, /turf/simulated/floor/plasteel{ dir = 8; @@ -38168,10 +38077,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel, /area/station/engineering/break_room) "cIi" = ( @@ -41575,10 +41481,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "cVv" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ pixel_x = -28 }, @@ -41790,9 +41693,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "cWr" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ dir = 8; @@ -42139,9 +42040,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "cXO" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) @@ -44608,9 +44507,7 @@ }, /area/station/public/toilet/unisex) "dhV" = ( -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" }, @@ -47853,9 +47750,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/purple{ dir = 4 }, -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "dHd" = ( @@ -50102,9 +49997,7 @@ dir = 1; name = "Shower" }, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/item/bikehorn/rubberducky/captainducky, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -51704,10 +51597,7 @@ c_tag = "Research Access"; network = list("Research","SS13") }, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitepurple" @@ -52338,10 +52228,7 @@ /turf/space, /area/space/nearstation) "fOF" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ pixel_x = -28 }, @@ -53679,9 +53566,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/fpmaint2) "gyt" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/newscaster/directional/north, /obj/machinery/door_control{ id = "toilet_unit1"; @@ -54092,9 +53977,7 @@ }, /area/station/engineering/control) "gKN" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -54578,9 +54461,7 @@ "gVD" = ( /obj/effect/decal/cleanable/blood/xeno, /obj/item/restraints/handcuffs/cable/blue, -/obj/structure/sink/kitchen/old{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/old/directional/north, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "gVE" = ( @@ -56356,10 +56237,7 @@ /turf/simulated/floor/plasteel, /area/station/science/xenobiology) "hTK" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -59169,11 +59047,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/asmaint) "jum" = ( -/obj/machinery/shower{ - dir = 8; - pixel_x = -4; - pixel_y = -4 - }, +/obj/machinery/shower/directional/east, /obj/structure/curtain/open/shower, /obj/structure/window/reinforced/tinted, /turf/simulated/floor/plasteel{ @@ -59921,10 +59795,7 @@ "jPZ" = ( /obj/structure/sign/poster/official/cleanliness/directional/east, /obj/effect/decal/cleanable/dirt, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" }, @@ -60142,10 +60013,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "jTV" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ pixel_x = -28 }, @@ -61253,9 +61121,7 @@ "kwZ" = ( /obj/structure/curtain/open/shower, /obj/effect/decal/cleanable/dirt, -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -61347,9 +61213,7 @@ "kAp" = ( /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/delivery/white/hollow, -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -62312,10 +62176,7 @@ }, /area/station/security/permabrig) "kXA" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ pixel_x = -26; pixel_y = 3 @@ -62829,10 +62690,7 @@ }, /area/station/maintenance/asmaint) "llD" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -63228,9 +63086,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/assembly_line) "luh" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -63498,10 +63354,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "lDi" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, @@ -66500,9 +66353,7 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/tools/auxiliary) "nfE" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/noslip, /area/station/engineering/control) "ngD" = ( @@ -66571,10 +66422,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "niP" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -67578,11 +67426,7 @@ /area/station/maintenance/asmaint) "nNe" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - dir = 8; - pixel_x = -4; - pixel_y = -4 - }, +/obj/machinery/shower/directional/east, /obj/structure/window/reinforced/tinted, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -68961,10 +68805,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "oto" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -69479,10 +69320,7 @@ }, /area/station/medical/storage) "oGi" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -69562,10 +69400,7 @@ }, /area/station/medical/virology) "oHA" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -71675,10 +71510,7 @@ /turf/simulated/floor/plating, /area/station/security/main) "pPr" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -72973,9 +72805,7 @@ /area/station/legal/courtroom/gallery) "qup" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - pixel_y = 8 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "qvf" = ( @@ -73122,9 +72952,7 @@ /area/station/maintenance/storage) "qyf" = ( /obj/structure/sign/poster/official/random/directional/east, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ dir = 4; @@ -75656,10 +75484,7 @@ /area/station/hallway/secondary/exit) "rLK" = ( /obj/machinery/newscaster/directional/west, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -75821,9 +75646,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "rRa" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 4 }, @@ -76560,9 +76383,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "smL" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/newscaster/directional/north, /obj/effect/landmark/spawner/nukedisc_respawn, /turf/simulated/floor/plating, @@ -77771,10 +77592,7 @@ /turf/simulated/wall, /area/station/science/hallway) "sSX" = ( -/obj/structure/sink/kitchen/old{ - dir = 4; - pixel_x = -12 - }, +/obj/structure/sink/kitchen/old/directional/west, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/grass, /area/station/security/permabrig) @@ -78158,9 +77976,7 @@ /turf/simulated/floor/engine/airless, /area/station/science/toxins/test) "tfv" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/white/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -78221,10 +78037,7 @@ "tia" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/sink/kitchen/old{ - dir = 8; - pixel_x = 12 - }, +/obj/structure/sink/kitchen/old/directional/east, /turf/simulated/floor/plasteel{ icon_state = "bar" }, @@ -79471,9 +79284,7 @@ /turf/simulated/floor/wood, /area/station/command/office/captain) "tQJ" = ( -/obj/machinery/shower{ - pixel_y = 8 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/noslip, /area/station/engineering/control) "tRp" = ( @@ -79506,9 +79317,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "tRw" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -81439,9 +81248,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "uWf" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/camera{ c_tag = "Prison Solitary 2"; dir = 8; @@ -82645,9 +82452,7 @@ /area/station/maintenance/asmaint) "vDY" = ( /obj/effect/turf_decal/delivery/red/hollow, -/obj/machinery/shower{ - pixel_y = 16 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/noslip, /area/station/security/prisonlockers) "vEm" = ( @@ -82675,10 +82480,7 @@ }, /area/station/science/genetics) "vEA" = ( -/obj/structure/sink/kitchen/old{ - dir = 8; - pixel_x = 12 - }, +/obj/structure/sink/kitchen/old/directional/east, /obj/item/reagent_containers/glass/bucket, /obj/item/radio/intercom/locked/prison{ name = "Prison Intercom (General)"; @@ -83968,9 +83770,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "woA" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ dir = 4; @@ -84418,11 +84218,7 @@ /turf/simulated/floor/engine, /area/station/science/misc_lab) "wAW" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -84576,10 +84372,7 @@ /area/station/hallway/primary/central/se) "wEP" = ( /obj/machinery/newscaster/directional/east, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ pixel_x = -28 }, @@ -84973,9 +84766,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 8f877b6b1d5..72d5a33d2a3 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -567,9 +567,7 @@ /area/station/engineering/engine/supermatter) "adI" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -584,9 +582,7 @@ /area/station/engineering/engine/supermatter) "adS" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /obj/item/bikehorn/rubberducky, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -1878,9 +1874,7 @@ }, /area/station/medical/storage) "aoC" = ( -/obj/structure/toilet{ - pixel_y = 6 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 4 }, @@ -2297,9 +2291,7 @@ /area/station/command/office/hos) "asv" = ( /obj/structure/curtain, -/obj/machinery/shower{ - pixel_y = 24 - }, +/obj/machinery/shower/directional/north, /obj/item/bikehorn/rubberducky/captainducky, /turf/simulated/floor/plasteel/freezer, /area/station/command/office/captain) @@ -2630,11 +2622,7 @@ /turf/simulated/floor/carpet/royalblack, /area/station/command/office/captain) "auW" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ pixel_x = -32 }, @@ -2695,9 +2683,7 @@ }, /area/station/security/brig) "avk" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/light/small{ dir = 1 }, @@ -5217,9 +5203,7 @@ /turf/simulated/mineral/ancient, /area/station/security/permabrig) "aTB" = ( -/obj/machinery/shower{ - pixel_y = 24 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -6783,10 +6767,7 @@ /obj/structure/mirror{ pixel_x = 28 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/sign/poster/official/cleanliness/directional/south, /turf/simulated/floor/plasteel/freezer, /area/station/medical/virology) @@ -8306,10 +8287,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/sign/poster/official/cleanliness/directional/west, /turf/simulated/floor/plasteel{ dir = 8; @@ -11374,9 +11352,7 @@ /turf/simulated/floor/plating, /area/station/engineering/control) "bFr" = ( -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery/red/hollow, /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -11398,9 +11374,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery/red/hollow, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -12423,9 +12397,7 @@ /area/station/engineering/gravitygenerator) "bKZ" = ( /obj/effect/turf_decal/delivery/red/hollow, -/obj/machinery/shower{ - pixel_y = 22 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/noslip, /area/station/medical/cloning) "bLz" = ( @@ -19508,9 +19480,7 @@ }, /area/station/maintenance/fsmaint) "cHT" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -20599,10 +20569,7 @@ }, /area/station/maintenance/fore2) "cPa" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -23650,9 +23617,7 @@ /area/station/security/storage) "diM" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/structure/window/reinforced/tinted/frosted{ dir = 1 }, @@ -25943,9 +25908,7 @@ }, /area/station/maintenance/port2) "dEg" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /mob/living/carbon/human/monkey, /turf/simulated/floor/grass, /area/station/science/genetics) @@ -26180,9 +26143,7 @@ /area/station/maintenance/apmaint) "dHT" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/structure/window/reinforced/tinted/frosted{ dir = 1 }, @@ -30531,9 +30492,7 @@ /turf/simulated/floor/catwalk, /area/station/maintenance/fsmaint) "eJD" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/mapping_helpers/turfs/burn, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -34887,9 +34846,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/door_control{ id = "b1"; name = "Privacy Bolts"; @@ -35996,9 +35953,7 @@ pixel_y = 28; name = "custom placement" }, -/obj/structure/toilet{ - pixel_y = 6 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 8 }, @@ -37881,9 +37836,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "gFd" = ( -/obj/machinery/shower{ - pixel_y = 24 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/noslip, /area/station/medical/virology) @@ -40405,10 +40358,7 @@ }, /area/station/hallway/primary/fore/north) "hnr" = ( -/obj/structure/sink/kitchen{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/kitchen/directional/south, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -40842,9 +40792,7 @@ /turf/simulated/floor/plating, /area/station/hallway/spacebridge/sercom) "hsc" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ icon_state = "darkgreenfull" }, @@ -40980,9 +40928,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/door_control{ id = "b2"; name = "Privacy Bolts"; @@ -41096,9 +41042,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/disposal/west) "huJ" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/light/small{ dir = 1 }, @@ -44143,9 +44087,7 @@ /turf/simulated/floor/plating, /area/station/hallway/primary/fore/north) "iek" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/noslip, /area/station/medical/cryo) @@ -44333,9 +44275,7 @@ /area/shuttle/arrival/station) "igH" = ( /obj/structure/curtain/open/shower/security, -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/structure/window/reinforced{ dir = 4 }, @@ -46356,9 +46296,7 @@ "iFW" = ( /obj/structure/window/reinforced/tinted/frosted, /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/item/bikehorn/rubberducky, /turf/simulated/floor/plasteel/freezer, /area/station/public/toilet/lockerroom) @@ -48891,10 +48829,7 @@ }, /area/station/public/storage/tools) "jiG" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/mirror{ pixel_x = -28 }, @@ -49160,9 +49095,7 @@ }, /area/station/maintenance/fore) "jmy" = ( -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/noslip, /area/station/medical/surgery) @@ -55096,11 +55029,7 @@ }, /area/station/engineering/gravitygenerator) "kBz" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, @@ -56895,9 +56824,7 @@ "kXH" = ( /obj/item/soap/nanotrasen, /obj/item/bikehorn/rubberducky, -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/structure/curtain/open/shower/security, /turf/simulated/floor/plasteel/freezer, /area/station/security/storage) @@ -58722,10 +58649,7 @@ /area/shuttle/pod_2) "lsW" = ( /obj/structure/flora/ausbushes/brflowers, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/grass, /area/station/service/hydroponics) "lta" = ( @@ -59873,9 +59797,7 @@ }, /area/station/medical/cryo) "lFz" = ( -/obj/structure/toilet{ - pixel_y = 6 - }, +/obj/structure/toilet/directional/north, /obj/machinery/door_control{ id = "fb2"; name = "Privacy Bolts"; @@ -67398,9 +67320,7 @@ "nyG" = ( /obj/structure/window/reinforced/tinted/frosted, /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /turf/simulated/floor/plasteel/freezer, /area/station/public/toilet/lockerroom) "nyI" = ( @@ -67525,9 +67445,7 @@ /turf/simulated/floor/wood, /area/station/public/vacant_office) "nBp" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel/freezer, /area/station/security/storage) "nBA" = ( @@ -71028,10 +70946,7 @@ dir = 1 }, /mob/living/carbon/human/monkey, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ icon_state = "whitegreenfull" }, @@ -71469,9 +71384,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/disposal) "ozg" = ( -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /turf/simulated/floor/plasteel/freezer, /area/station/service/kitchen) "ozk" = ( @@ -73226,10 +73139,7 @@ }, /area/station/maintenance/starboard) "oVM" = ( -/obj/structure/sink/kitchen/old{ - dir = 8; - pixel_x = 12 - }, +/obj/structure/sink/kitchen/old/directional/east, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/security/permabrig) @@ -77730,9 +77640,7 @@ /turf/simulated/floor/wood, /area/station/public/vacant_office) "pWT" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /obj/effect/spawner/random/dirt/often, /turf/simulated/floor/plasteel/freezer, /area/station/maintenance/gambling_den) @@ -78110,10 +78018,7 @@ }, /area/station/maintenance/starboard) "qcC" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/wood, /area/station/public/pet_store) "qcE" = ( @@ -79424,10 +79329,7 @@ dir = 1 }, /mob/living/carbon/human/monkey, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ icon_state = "whitegreenfull" }, @@ -79886,10 +79788,7 @@ }, /area/station/security/lobby) "qyG" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, @@ -80106,9 +80005,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/effect/turf_decal/delivery/red/hollow, /obj/structure/disposalpipe/segment{ dir = 4 @@ -82174,10 +82071,7 @@ /area/station/hallway/primary/fore/east) "raF" = ( /obj/effect/spawner/random/dirt/frequent, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -85246,10 +85140,7 @@ }, /area/station/medical/sleeper) "rOP" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/sign/poster/official/cleanliness/directional/west, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -88337,10 +88228,7 @@ /turf/simulated/floor/catwalk, /area/station/engineering/transmission_laser) "szL" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, @@ -89700,9 +89588,7 @@ /area/station/security/detective) "sOA" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel/white, /area/station/science/hallway) @@ -92621,11 +92507,7 @@ /turf/simulated/floor/plasteel/freezer, /area/station/public/toilet/unisex) "tzy" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ icon_state = "darkgreenfull" }, @@ -95351,10 +95233,7 @@ }, /area/station/supply/storage) "uhb" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/cleanliness/directional/west, /turf/simulated/floor/plasteel{ @@ -98016,9 +97895,7 @@ }, /area/station/medical/medbay3) "uNh" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/plasteel/freezer, /area/station/public/toilet/unisex) "uNp" = ( @@ -98948,10 +98825,7 @@ }, /area/station/medical/medbay3) "uZP" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/light/small, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -100058,9 +99932,7 @@ /area/station/hallway/primary/aft/east) "vnj" = ( /obj/effect/turf_decal/delivery/red/hollow, -/obj/machinery/shower{ - pixel_y = 16 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/noslip, /area/station/security/prisonlockers) "vno" = ( @@ -101349,10 +101221,7 @@ }, /area/station/maintenance/starboard) "vCs" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkpurple" @@ -101969,9 +101838,7 @@ }, /area/station/public/locker) "vKD" = ( -/obj/structure/toilet{ - pixel_y = 6 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 8 }, @@ -102655,10 +102522,7 @@ name = "east bump"; pixel_x = 28 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel/freezer, /area/station/public/toilet/unisex) "vSy" = ( @@ -103950,9 +103814,7 @@ }, /area/station/hallway/spacebridge/servsci) "wkH" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue" @@ -104322,9 +104184,7 @@ }, /area/station/science/robotics/chargebay) "wnP" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port2) @@ -104459,10 +104319,7 @@ }, /area/station/maintenance/port2) "wpH" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -104811,9 +104668,7 @@ /obj/structure/mirror{ pixel_x = 32 }, -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel/freezer, /area/station/security/storage) "wtn" = ( @@ -105073,9 +104928,7 @@ /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "wvB" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/light/small{ dir = 4 }, @@ -106742,9 +106595,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "wPJ" = ( -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/noslip, /area/station/engineering/control) "wPV" = ( @@ -107216,9 +107067,7 @@ }, /area/station/public/quantum/service) "wWs" = ( -/obj/machinery/shower{ - pixel_y = 22 - }, +/obj/machinery/shower/directional/north, /obj/structure/curtain/open/shower, /obj/item/soap/nanotrasen, /obj/item/bikehorn/rubberducky, diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index 0993078db00..0b4a98deea6 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -2111,9 +2111,7 @@ /turf/simulated/floor/plasteel/white/side, /area/station/maintenance/fore2) "aog" = ( -/obj/structure/sink/kitchen/old{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/old/directional/north, /obj/machinery/newscaster/directional/east, /obj/effect/decal/cleanable/cobweb2, /turf/simulated/floor/plasteel{ @@ -2128,9 +2126,7 @@ /turf/simulated/floor/plasteel/white/side, /area/station/maintenance/fore2) "aoi" = ( -/obj/structure/sink/kitchen/old{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/old/directional/north, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/white/side, /area/station/maintenance/fore2) @@ -5501,9 +5497,7 @@ }, /area/station/public/toilet/unisex) "azt" = ( -/obj/structure/sink{ - pixel_y = 25 - }, +/obj/structure/sink/directional/north, /obj/structure/mirror{ pixel_x = 28 }, @@ -6099,9 +6093,7 @@ /area/station/supply/storage) "aBb" = ( /obj/machinery/light/small, -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/door_control{ id = "toilet_unit1"; name = "Door Bolt Control"; @@ -6635,9 +6627,7 @@ }, /area/station/supply/storage) "aCP" = ( -/obj/structure/sink{ - pixel_y = 25 - }, +/obj/structure/sink/directional/north, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -7661,9 +7651,7 @@ /turf/simulated/floor/wood, /area/station/service/clown) "aGx" = ( -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/service/bar) "aGy" = ( @@ -7796,10 +7784,7 @@ /turf/simulated/wall/r_wall, /area/station/maintenance/incinerator) "aHb" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel, /area/station/maintenance/abandoned_garden) "aHc" = ( @@ -8406,9 +8391,7 @@ /area/station/supply/storage) "aIQ" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/item/soap/nanotrasen, /obj/item/bikehorn/rubberducky, /turf/simulated/floor/plasteel{ @@ -9533,9 +9516,7 @@ name = "south bump"; pixel_y = -28 }, -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/noslip, /area/station/engineering/controlroom) "aMM" = ( @@ -10239,9 +10220,7 @@ }, /area/station/supply/storage) "aPE" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/noslip, /area/station/engineering/controlroom) "aPF" = ( @@ -10599,9 +10578,7 @@ }, /area/station/hallway/primary/port/north) "aRa" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/structure/extinguisher_cabinet{ name = "south bump"; pixel_y = -30 @@ -12299,9 +12276,7 @@ "aWW" = ( /obj/machinery/alarm/directional/south, /obj/effect/turf_decal/delivery/red/hollow, -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/noslip, /area/station/security/prisonlockers) "aXa" = ( @@ -15032,10 +15007,7 @@ }, /area/station/service/hydroponics) "bje" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 8; @@ -18012,9 +17984,7 @@ }, /area/station/service/hydroponics) "buX" = ( -/obj/machinery/shower{ - pixel_y = 22 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/noslip, /area/station/engineering/equipmentstorage) "buY" = ( @@ -25574,9 +25544,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, @@ -25584,9 +25552,7 @@ /turf/simulated/floor/plasteel/white, /area/station/command/office/captain/bedroom) "bVb" = ( -/obj/machinery/shower{ - pixel_y = 22 - }, +/obj/machinery/shower/directional/north, /obj/structure/curtain/open/shower, /obj/item/soap/deluxe, /obj/item/bikehorn/rubberducky/captainducky, @@ -26079,10 +26045,7 @@ /turf/simulated/floor/plasteel/white, /area/station/command/office/captain/bedroom) "bWZ" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel/white, /area/station/command/office/captain/bedroom) "bXa" = ( @@ -33163,10 +33126,7 @@ }, /area/station/public/locker) "cwe" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/plasteel{ icon_state = "green"; @@ -33996,9 +33956,7 @@ }, /area/station/hallway/primary/central/se) "cyB" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/plasteel/freezer, /area/station/public/toilet/lockerroom) "cyC" = ( @@ -34009,9 +33967,7 @@ /turf/simulated/floor/plasteel/freezer, /area/station/public/toilet/lockerroom) "cyD" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /turf/simulated/floor/plasteel/freezer, /area/station/public/toilet/lockerroom) "cyE" = ( @@ -35715,17 +35671,12 @@ }, /area/station/hallway/primary/port/north) "cEj" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/public/toilet/lockerroom) "cEo" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/light/small, /obj/effect/decal/cleanable/vomit, /turf/simulated/floor/plating, @@ -35936,9 +35887,7 @@ }, /area/station/hallway/primary/central) "cFb" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/light/small, /obj/effect/landmark/start/assistant, /obj/effect/turf_decal/delivery/hollow, @@ -41118,10 +41067,7 @@ /area/station/science/rnd) "cYD" = ( /obj/machinery/alarm/directional/west, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/camera{ c_tag = "Chemistry North"; dir = 4; @@ -42626,9 +42572,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/starboard) "der" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 8; @@ -42882,10 +42826,7 @@ /turf/simulated/wall/r_wall, /area/station/command/office/rd) "dfl" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -44935,10 +44876,7 @@ /turf/simulated/floor/carpet, /area/station/maintenance/starboard) "dos" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/carpet, /area/station/maintenance/starboard) "dot" = ( @@ -46390,10 +46328,7 @@ /obj/structure/mirror{ pixel_x = 32 }, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkpurple" @@ -48552,10 +48487,7 @@ /obj/structure/mirror{ pixel_x = -32 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -48676,9 +48608,7 @@ /turf/simulated/floor/plating/airless, /area/station/engineering/control) "dJr" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /obj/structure/disposalpipe/junction/y{ dir = 2 }, @@ -54581,11 +54511,7 @@ /turf/simulated/floor/engine/n2, /area/station/engineering/atmos) "ffg" = ( -/obj/machinery/shower{ - dir = 4; - pixel_y = -4; - pixel_x = 5 - }, +/obj/machinery/shower/directional/west, /obj/structure/curtain/open/shower, /obj/structure/window/reinforced/tinted, /turf/simulated/floor/plasteel{ @@ -58124,10 +58050,7 @@ /turf/simulated/floor/plating/airless, /area/space/nearstation) "gLq" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/directional/south, /turf/simulated/floor/plasteel{ icon_state = "whitegreen" }, @@ -58346,9 +58269,7 @@ "gPc" = ( /obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/delivery/white/hollow, -/obj/machinery/shower{ - pixel_y = 8 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/noslip, /area/station/medical/surgery) "gPh" = ( @@ -58823,10 +58744,7 @@ }, /area/station/hallway/primary/central/north) "hgR" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whiteblue" @@ -59487,10 +59405,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/aisat) "hwE" = ( -/obj/structure/sink/kitchen{ - dir = 1; - pixel_y = -5 - }, +/obj/structure/sink/kitchen/directional/south, /turf/simulated/floor/plasteel{ icon_state = "darkgreenfull" }, @@ -60034,9 +59949,7 @@ /turf/simulated/floor/plasteel/stairs, /area/station/science/lobby) "hJS" = ( -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /turf/simulated/floor/noslip, /area/station/maintenance/fore) "hJY" = ( @@ -61211,9 +61124,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "ilF" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/effect/decal/cleanable/blood/old, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) @@ -63508,11 +63419,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/break_room) "jnp" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/effect/mapping_helpers/turfs/damage, /turf/simulated/floor/wood, /area/station/maintenance/apmaint) @@ -64630,9 +64537,7 @@ /area/station/security/storage) "jRi" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /obj/item/clothing/suit/chef/classic, /obj/item/clothing/head/chefhat, /turf/simulated/floor/plasteel{ @@ -64877,9 +64782,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "jVd" = ( -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /turf/simulated/floor/plasteel{ icon_state = "tranquillite" }, @@ -68250,9 +68153,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "lAO" = ( -/obj/structure/sink/kitchen/old{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/old/directional/north, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "lAX" = ( @@ -69131,9 +69032,7 @@ "lZr" = ( /obj/item/soap/nanotrasen, /obj/item/bikehorn/rubberducky, -/obj/machinery/shower{ - pixel_y = 22 - }, +/obj/machinery/shower/directional/north, /obj/machinery/light/small{ dir = 4 }, @@ -72243,10 +72142,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue" @@ -75846,10 +75742,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "pax" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/directional/south, /obj/machinery/light{ dir = 4 }, @@ -77178,9 +77071,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "pFr" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, @@ -77734,10 +77625,7 @@ name = "west bump"; pixel_x = -28 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/light_switch{ name = "north bump"; pixel_y = 24 @@ -78605,9 +78493,7 @@ }, /area/station/security/permabrig) "qmS" = ( -/obj/machinery/shower{ - pixel_y = 8 - }, +/obj/machinery/shower/directional/north, /obj/structure/curtain/open/shower, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) @@ -82790,11 +82676,7 @@ }, /area/station/hallway/secondary/entry/south) "saM" = ( -/obj/machinery/shower{ - dir = 4; - pixel_y = -4; - pixel_x = 5 - }, +/obj/machinery/shower/directional/west, /obj/structure/curtain/open/shower, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -83573,9 +83455,7 @@ }, /area/station/service/janitor) "spp" = ( -/obj/structure/sink{ - pixel_y = 25 - }, +/obj/structure/sink/directional/north, /obj/effect/spawner/random/blood/maybe, /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plasteel{ @@ -83823,10 +83703,7 @@ dir = 1; name = "Monkey Pen" }, -/obj/structure/sink{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/directional/south, /turf/simulated/floor/grass, /area/station/science/genetics) "ssL" = ( @@ -85386,9 +85263,7 @@ }, /area/station/public/fitness) "tby" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/white/hollow, /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ @@ -85397,9 +85272,7 @@ }, /area/station/medical/sleeper) "tbO" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light/small{ dir = 4 }, @@ -86036,9 +85909,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "tpR" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ dir = 5; @@ -87059,9 +86930,7 @@ /turf/simulated/wall/r_wall, /area/station/maintenance/fsmaint) "tMJ" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/white/hollow, /obj/structure/disposalpipe/segment{ dir = 4 @@ -88100,10 +87969,7 @@ /turf/simulated/floor/plasteel, /area/station/science/storage) "ueK" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -88774,9 +88640,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "uvp" = ( -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -89179,9 +89043,7 @@ /obj/structure/mirror{ pixel_y = 28 }, -/obj/structure/sink{ - pixel_y = 14 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -91245,9 +91107,7 @@ /turf/simulated/floor/engine, /area/station/engineering/controlroom) "vBL" = ( -/obj/structure/sink/kitchen/old{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/old/directional/north, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 1; @@ -91921,9 +91781,7 @@ }, /area/station/engineering/break_room/secondary) "vOH" = ( -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/light/small{ dir = 4 }, diff --git a/_maps/map_files/stations/emeraldstation.dmm b/_maps/map_files/stations/emeraldstation.dmm index 38bc805bc5e..88abbc70d04 100644 --- a/_maps/map_files/stations/emeraldstation.dmm +++ b/_maps/map_files/stations/emeraldstation.dmm @@ -1287,9 +1287,7 @@ }, /area/station/security/brig) "aoM" = ( -/obj/structure/sink{ - pixel_y = 22 - }, +/obj/structure/sink/directional/north, /obj/machinery/camera/autoname{ dir = 6; c_tag = "Medbay Primary Storage" @@ -2599,10 +2597,7 @@ }, /area/station/service/chapel/funeral) "aCl" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/directional/south, /obj/effect/turf_decal/delivery/blue/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -3635,8 +3630,7 @@ /turf/simulated/floor/wood, /area/station/public/vacant_office) "aND" = ( -/obj/machinery/shower{ - dir = 8; +/obj/machinery/shower/directional/east{ name = "emergency shower" }, /turf/simulated/floor/noslip, @@ -9369,10 +9363,7 @@ "bQW" = ( /obj/structure/flora/ausbushes/leafybush, /obj/structure/flora/ausbushes/brflowers, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/grass/no_creep, /area/station/science/genetics) "bQX" = ( @@ -13788,9 +13779,7 @@ /turf/simulated/wall, /area/station/science/research) "cLp" = ( -/obj/structure/toilet{ - dir = 1 - }, +/obj/structure/toilet/directional/south, /obj/effect/spawner/random/dirt/maybe, /obj/machinery/light/small{ dir = 8 @@ -15003,11 +14992,7 @@ }, /area/station/hallway/primary/fore/north) "cZM" = ( -/obj/structure/sink/kitchen{ - dir = 4; - pixel_y = 3; - pixel_x = -13 - }, +/obj/structure/sink/kitchen/directional/west, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -23078,9 +23063,7 @@ }, /area/station/science/xenobiology) "eGv" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ icon_state = "whitegreencorner" @@ -24441,9 +24424,7 @@ }, /area/station/security/permabrig) "eVD" = ( -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/item/radio/intercom{ name = "south bump"; pixel_y = -28 @@ -27501,9 +27482,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "fxn" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) @@ -29800,11 +29779,7 @@ /turf/simulated/floor/wood, /area/station/service/bar) "fUo" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/grass, /area/station/service/kitchen) "fUr" = ( @@ -31866,10 +31841,7 @@ /area/station/security/interrogation) "gpY" = ( /obj/item/wrench, -/obj/structure/sink{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/directional/south, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -32133,10 +32105,7 @@ /turf/simulated/floor/wood, /area/station/command/office/hop) "gth" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/plasteel{ dir = 4; @@ -33705,9 +33674,7 @@ }, /area/station/service/kitchen) "gJG" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, /obj/effect/spawner/random/maintenance, @@ -33716,10 +33683,7 @@ }, /area/station/maintenance/starboard) "gJU" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -34072,10 +34036,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos/asteroid_filtering) "gOg" = ( -/obj/structure/sink/kitchen{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/kitchen/directional/south, /turf/simulated/floor/plasteel, /area/station/security/permabrig) "gOr" = ( @@ -34756,9 +34717,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "gWn" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/flasher{ id = "Perma Cell 4"; pixel_x = -22 @@ -35095,10 +35054,7 @@ /turf/simulated/floor/wood, /area/station/legal/courtroom) "gZk" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/directional/south, /turf/simulated/floor/plasteel, /area/station/engineering/break_room) "gZo" = ( @@ -36475,10 +36431,7 @@ }, /area/station/hallway/secondary/entry) "hmX" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_y = 28 }, @@ -36706,9 +36659,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) "hoR" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -37007,9 +36958,7 @@ }, /area/station/security/prisonlockers) "hsh" = ( -/obj/structure/toilet{ - dir = 1 - }, +/obj/structure/toilet/directional/south, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -38079,9 +38028,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/security/aft_starboard) "hBo" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery, /obj/machinery/camera{ c_tag = "Virology Airlock" @@ -42222,9 +42169,7 @@ /obj/structure/mirror{ pixel_y = 34 }, -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -43893,9 +43838,7 @@ }, /area/station/engineering/engine) "iKS" = ( -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /turf/simulated/floor/noslip, /area/station/medical/cryo) "iLb" = ( @@ -46399,10 +46342,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft2) "jkX" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/sign/poster/official/cleanliness/directional/east, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -49175,9 +49115,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "jMs" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -50241,7 +50179,7 @@ }, /area/station/medical/reception) "jXg" = ( -/obj/structure/toilet, +/obj/structure/toilet/directional/north, /obj/effect/landmark/spawner/rev, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -50318,9 +50256,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "jYM" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -52436,9 +52372,7 @@ /turf/simulated/floor/grass, /area/station/hallway/secondary/exit) "kuB" = ( -/obj/structure/toilet{ - dir = 1 - }, +/obj/structure/toilet/directional/south, /obj/machinery/light/small, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -52642,9 +52576,7 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "kxp" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/decal/cleanable/blood/tracks, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -53388,11 +53320,7 @@ "kGK" = ( /obj/structure/window/reinforced/tinted, /obj/structure/curtain/open/shower, -/obj/machinery/shower{ - dir = 4; - pixel_y = -4; - pixel_x = 5 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -55916,10 +55844,7 @@ }, /area/station/service/hydroponics) "lhT" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/directional/south, /obj/effect/turf_decal/delivery/blue/hollow, /obj/item/reagent_containers/glass/bucket, /obj/item/radio/intercom{ @@ -58396,9 +58321,7 @@ /obj/structure/mirror{ pixel_y = 33 }, -/obj/structure/sink{ - pixel_y = 22 - }, +/obj/structure/sink/directional/north, /obj/effect/spawner/random/dirt/maybe, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" @@ -58468,9 +58391,7 @@ /turf/simulated/floor/wood, /area/station/hallway/secondary/exit) "lHr" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/hollow, /obj/item/radio/intercom{ name = "west bump"; @@ -58588,10 +58509,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "lJz" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ dir = 6; @@ -60303,11 +60221,7 @@ /turf/simulated/floor/engine, /area/station/engineering/engine) "mdh" = ( -/obj/machinery/shower{ - dir = 4; - pixel_y = -4; - pixel_x = 5 - }, +/obj/machinery/shower/directional/west, /obj/structure/curtain/open/shower, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -62182,9 +62096,7 @@ /turf/simulated/floor/carpet/grimey, /area/station/security/detective) "mxc" = ( -/obj/machinery/shower{ - pixel_y = 8 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ dir = 9; @@ -62299,10 +62211,7 @@ /turf/simulated/floor/carpet/black, /area/station/service/chapel) "myB" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -64377,9 +64286,7 @@ }, /area/station/legal/courtroom) "mUA" = ( -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /obj/effect/turf_decal/delivery/hollow, /obj/structure/cable{ icon_state = "4-8" @@ -66382,9 +66289,7 @@ /area/station/maintenance/apmaint) "npy" = ( /obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/noslip, /area/station/security/prisonlockers) @@ -66791,9 +66696,7 @@ /obj/structure/mirror{ pixel_y = 33 }, -/obj/structure/sink{ - pixel_y = 22 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" }, @@ -66919,9 +66822,7 @@ /obj/structure/mirror{ pixel_y = 33 }, -/obj/structure/sink{ - pixel_y = 22 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -67171,9 +67072,7 @@ }, /area/station/public/construction) "nxB" = ( -/obj/structure/toilet{ - dir = 1 - }, +/obj/structure/toilet/directional/south, /obj/effect/decal/cleanable/dirt, /obj/machinery/newscaster/directional/west, /obj/effect/spawner/random/maintenance, @@ -69865,9 +69764,7 @@ /turf/simulated/floor/plating, /area/station/security/warden) "nWW" = ( -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /obj/effect/turf_decal/box, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" @@ -72622,11 +72519,7 @@ /turf/simulated/floor/plasteel, /area/station/command/bridge) "oyk" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/structure/sign/poster/official/cleanliness/directional/west, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -75146,10 +75039,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/ne) "oWG" = ( -/obj/structure/sink/kitchen/old{ - dir = 4; - pixel_x = -12 - }, +/obj/structure/sink/kitchen/old/directional/west, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" }, @@ -76105,9 +75995,7 @@ /turf/simulated/wall, /area/station/legal/courtroom) "pfG" = ( -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/noslip, /area/station/medical/surgery) "pfK" = ( @@ -77158,10 +77046,9 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "ppH" = ( -/obj/structure/sink/kitchen{ +/obj/structure/sink/kitchen/directional/north{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "old sink"; - pixel_y = 25 + name = "old sink" }, /mob/living/simple_animal/cockroach, /obj/effect/spawner/random/maintenance, @@ -77974,9 +77861,7 @@ }, /area/station/hallway/primary/central/ne) "pzW" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/item/bikehorn/rubberducky, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -78245,11 +78130,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/apmaint2) "pCJ" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/structure/sign/poster/contraband/random/directional/west, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) @@ -80928,9 +80809,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "qes" = ( -/obj/machinery/shower{ - pixel_y = 20 - }, +/obj/machinery/shower/directional/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -81357,9 +81236,7 @@ }, /area/station/hallway/primary/fore) "qjT" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/machinery/door/window/classic/reversed{ dir = 8; name = "Shower" @@ -81371,9 +81248,7 @@ }, /area/station/command/office/captain/bedroom) "qkb" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -81657,9 +81532,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/security/aft_port) "qnD" = ( -/obj/structure/sink{ - pixel_y = 22 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whiteyellow" @@ -82544,9 +82417,7 @@ pixel_y = -25; specialfunctions = 4 }, -/obj/structure/toilet{ - dir = 8 - }, +/obj/structure/toilet/directional/east, /obj/machinery/light/small{ dir = 1 }, @@ -83628,9 +83499,7 @@ /area/station/science/xenobiology) "qJf" = ( /obj/structure/curtain/open/shower/security, -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -86399,14 +86268,6 @@ icon_state = "dark" }, /area/station/public/construction) -"rke" = ( -/obj/machinery/shower{ - pixel_y = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/station/security/permabrig) "rkg" = ( /obj/machinery/door/airlock/virology/glass{ name = "Monkey Pen" @@ -87184,9 +87045,7 @@ }, /area/station/security/permabrig) "rtb" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/sink/directional/north, /obj/item/razor{ pixel_x = -4; pixel_y = 2 @@ -89633,9 +89492,7 @@ /turf/simulated/wall, /area/station/medical/paramedic) "rQV" = ( -/obj/structure/sink{ - pixel_y = 25 - }, +/obj/structure/sink/directional/north, /obj/structure/closet/cardboard, /turf/simulated/floor/plasteel, /area/station/public/pet_store) @@ -90626,10 +90483,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft2) "rZl" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/grass, /area/station/service/kitchen) @@ -90959,11 +90813,7 @@ /turf/simulated/wall, /area/station/hallway/primary/aft) "sdM" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitegreen" @@ -91412,10 +91262,7 @@ /turf/simulated/wall, /area/station/maintenance/fpmaint) "sit" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/extinguisher_cabinet{ name = "south bump"; pixel_y = -30 @@ -91882,10 +91729,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/security/fore) "smT" = ( -/obj/structure/sink/kitchen{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/kitchen/directional/south, /obj/effect/mapping_helpers/turfs/damage, /turf/simulated/floor/wood, /area/station/maintenance/abandonedbar) @@ -97783,9 +97627,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/apmaint2) "tua" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -98141,9 +97983,7 @@ /turf/simulated/floor/plasteel, /area/station/public/locker) "tzh" = ( -/obj/structure/sink{ - pixel_y = 22 - }, +/obj/structure/sink/directional/north, /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ dir = 1; @@ -103156,10 +102996,9 @@ "uzX" = ( /obj/item/clothing/head/chefhat, /obj/effect/decal/cleanable/blood/old, -/obj/structure/sink/kitchen{ +/obj/structure/sink/kitchen/directional/north{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "old sink"; - pixel_y = 25 + name = "old sink" }, /turf/simulated/floor/plasteel{ icon_state = "red" @@ -105034,10 +104873,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, -/obj/structure/sink{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/directional/south, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -110302,10 +110138,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/south) "vVz" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) "vVE" = ( @@ -112974,9 +112807,7 @@ }, /area/station/science/research) "wxK" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/break_room) @@ -113629,10 +113460,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/assembly_line) "wGM" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -116305,10 +116133,7 @@ }, /area/station/public/dorms) "xjA" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/machinery/firealarm/directional/east, /turf/simulated/floor/plasteel{ dir = 5; @@ -116497,11 +116322,7 @@ /turf/simulated/floor/plasteel, /area/station/medical/paramedic) "xma" = ( -/obj/structure/sink/kitchen{ - dir = 8; - pixel_y = 3; - pixel_x = 12 - }, +/obj/structure/sink/kitchen/directional/east, /obj/machinery/door_control{ id = "kitchendiner"; name = "Kitchen Diner Shutters Control"; @@ -116709,9 +116530,7 @@ /turf/simulated/floor/wood, /area/station/service/bar) "xnS" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -121199,9 +121018,7 @@ /turf/space, /area/space/nearstation) "yiq" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/machinery/flasher{ id = "Perma Cell 2"; pixel_x = -22 @@ -176612,7 +176429,7 @@ jnP aZS aZS fjJ -rke +qes hfE oXJ eTx @@ -176869,7 +176686,7 @@ jnP jnP jnP fjJ -rke +qes hfE hfE hfE @@ -177126,7 +176943,7 @@ jnP jnP jnP fjJ -rke +qes hfE hgN hfE diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index c7031af00f8..89ce884a41b 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -2692,9 +2692,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, @@ -3817,9 +3815,7 @@ }, /area/station/public/sleep) "ayj" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/machinery/door/window/classic/reversed{ dir = 4; name = "Shower" @@ -5817,9 +5813,7 @@ /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/noslip, /area/station/security/prisonlockers) @@ -8259,10 +8253,7 @@ /obj/structure/mirror{ pixel_y = -34 }, -/obj/structure/sink/kitchen/old{ - pixel_y = -8; - dir = 1 - }, +/obj/structure/sink/kitchen/old/directional/south, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -16431,9 +16422,7 @@ }, /area/station/command/bridge) "bqn" = ( -/obj/structure/sink{ - pixel_y = 17 - }, +/obj/structure/sink/directional/north, /obj/structure/mirror{ pixel_y = 34 }, @@ -16442,9 +16431,7 @@ }, /area/station/command/office/captain/bedroom) "bqo" = ( -/obj/structure/toilet{ - pixel_y = 13 - }, +/obj/structure/toilet/directional/north, /obj/machinery/light, /obj/machinery/light_switch{ dir = 1; @@ -21537,9 +21524,7 @@ /turf/simulated/floor/carpet, /area/station/public/vacant_office) "bHk" = ( -/obj/structure/sink{ - pixel_y = 22 - }, +/obj/structure/sink/directional/north, /obj/structure/cable{ icon_state = "2-8" }, @@ -23412,9 +23397,7 @@ /area/station/hallway/secondary/entry/north) "bOy" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" }, @@ -27443,11 +27426,7 @@ /area/station/service/chapel/office) "ceP" = ( /obj/effect/turf_decal/delivery, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/machinery/light/small, /turf/simulated/floor/plasteel, /area/station/service/hydroponics) @@ -28492,9 +28471,7 @@ /area/station/engineering/atmos/control) "ciF" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sink/kitchen/old{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/old/directional/north, /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) "ciH" = ( @@ -29880,9 +29857,7 @@ }, /area/station/medical/cryo) "cpH" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/effect/turf_decal/delivery/blue/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -30149,10 +30124,7 @@ /turf/simulated/floor/engine/air, /area/station/engineering/atmos) "cqS" = ( -/obj/structure/sink/kitchen/old{ - dir = 4; - pixel_x = -12 - }, +/obj/structure/sink/kitchen/old/directional/west, /obj/structure/mirror{ pixel_x = -28 }, @@ -30565,9 +30537,7 @@ }, /area/station/medical/exam_room) "csJ" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/delivery/blue/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -31119,11 +31089,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/structure/cable{ icon_state = "1-2" }, @@ -34233,8 +34199,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cIM" = ( -/obj/machinery/shower{ - pixel_y = 8; +/obj/machinery/shower/directional/north{ on = 1 }, /obj/effect/turf_decal/box, @@ -34255,11 +34220,7 @@ }, /area/station/command/office/cmo) "cIS" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -39160,9 +39121,7 @@ /turf/simulated/floor/carpet/red, /area/station/maintenance/asmaint) "drL" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/noslip, /area/station/engineering/control) "dsf" = ( @@ -39763,10 +39722,7 @@ /area/station/security/permabrig) "dGO" = ( /obj/item/reagent_containers/glass/bucket, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "green" @@ -42832,10 +42788,7 @@ }, /area/station/hallway/secondary/exit) "eXd" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -43033,11 +42986,7 @@ /area/station/service/janitor) "fbt" = ( /obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -45912,9 +45861,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "ggM" = ( -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -46031,9 +45978,7 @@ network = list("Prison","SS13") }, /obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, @@ -47048,11 +46993,7 @@ pixel_x = 3; pixel_y = -3 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/sink/directional/west, /turf/simulated/floor/grass/no_creep, /area/station/maintenance/medmaint) "gIJ" = ( @@ -48398,9 +48339,7 @@ }, /area/station/science/xenobiology) "hnI" = ( -/obj/structure/sink{ - pixel_y = 17 - }, +/obj/structure/sink/directional/north, /obj/effect/turf_decal/delivery/hollow, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/cleanliness/directional/east, @@ -48894,10 +48833,7 @@ /area/station/medical/surgery/primary) "hzV" = ( /obj/machinery/alarm/directional/east, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9 }, @@ -49867,9 +49803,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/starboard) "hTx" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -50761,10 +50695,7 @@ }, /area/station/hallway/secondary/entry/lounge) "inq" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/light_switch{ dir = 8; name = "east bump"; @@ -53187,10 +53118,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "jvr" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -53417,10 +53345,7 @@ }, /area/station/hallway/primary/starboard/east) "jCz" = ( -/obj/structure/sink/kitchen{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/kitchen/directional/south, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -56403,9 +56328,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "kLT" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, @@ -56456,9 +56379,7 @@ }, /area/station/medical/medbay) "kMZ" = ( -/obj/machinery/shower{ - pixel_y = 12 - }, +/obj/machinery/shower/directional/north, /obj/item/radio/intercom{ name = "east bump"; pixel_x = 28 @@ -56999,9 +56920,7 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/directional/north, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -58365,9 +58284,7 @@ /area/station/aisat) "lCA" = ( /mob/living/simple_animal/mouse/brown/tom, -/obj/structure/sink{ - pixel_y = 22 - }, +/obj/structure/sink/directional/north, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "lCO" = ( @@ -58405,8 +58322,7 @@ }, /area/station/hallway/primary/central/north) "lDq" = ( -/obj/machinery/shower{ - dir = 8; +/obj/machinery/shower/directional/east{ name = "emergency shower" }, /obj/machinery/atmospherics/pipe/simple/visible/purple, @@ -58498,9 +58414,7 @@ }, /area/station/engineering/break_room) "lFm" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -59034,10 +58948,7 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/alarm/directional/east, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteyellow" @@ -61261,10 +61172,7 @@ }, /area/station/science/toxins/mixing) "mNu" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -8 - }, +/obj/structure/sink/directional/south, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -70124,9 +70032,7 @@ /turf/simulated/floor/plasteel, /area/station/security/brig) "qAh" = ( -/obj/structure/sink{ - pixel_y = 22 - }, +/obj/structure/sink/directional/north, /obj/structure/sign/poster/official/cleanliness/directional/west, /turf/simulated/floor/plasteel{ dir = 9; @@ -70240,10 +70146,7 @@ /area/station/hallway/primary/central/south) "qCm" = ( /obj/structure/flora/ausbushes/fernybush, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /mob/living/carbon/human/monkey, /turf/simulated/floor/grass/no_creep, /area/station/science/genetics) @@ -71709,10 +71612,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/garden) "rkU" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/light/small, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -73804,9 +73704,7 @@ }, /area/station/security/main) "saw" = ( -/obj/structure/sink/kitchen/old{ - pixel_y = 25 - }, +/obj/structure/sink/kitchen/old/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" @@ -74900,10 +74798,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port2) "sBQ" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, +/obj/structure/sink/directional/east, /obj/machinery/light_switch{ dir = 8; name = "east bump"; @@ -75871,10 +75766,7 @@ /obj/structure/mirror{ pixel_y = -34 }, -/obj/structure/sink/kitchen/old{ - pixel_y = -8; - dir = 1 - }, +/obj/structure/sink/kitchen/old/directional/south, /obj/structure/sign/poster/official/random/directional/west, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -79992,9 +79884,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/fore/north) "uNl" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +/obj/structure/toilet/directional/north, /obj/effect/landmark/spawner/nukedisc_respawn, /obj/machinery/light/small, /obj/machinery/door_control{ @@ -81943,9 +81833,7 @@ }, /area/station/service/chapel) "vCe" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -83798,9 +83686,7 @@ /turf/simulated/floor/plasteel, /area/station/security/range) "wxR" = ( -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -84632,9 +84518,7 @@ }, /area/station/public/sleep) "wSy" = ( -/obj/machinery/shower{ - pixel_y = 8 - }, +/obj/machinery/shower/directional/north, /obj/item/radio/intercom{ name = "north bump"; pixel_y = 28 @@ -84851,10 +84735,7 @@ /turf/simulated/floor/plasteel, /area/station/security/permabrig) "wXy" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, +/obj/structure/sink/directional/west, /obj/machinery/light_switch{ dir = 4; name = "west bump"; @@ -87258,9 +87139,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/machinery/shower{ - dir = 1 - }, +/obj/machinery/shower/directional/south, /obj/effect/turf_decal/siding{ dir = 9 }, diff --git a/_maps/map_files/templates/biodome_beach.dmm b/_maps/map_files/templates/biodome_beach.dmm index 66859c86710..a834e42917c 100644 --- a/_maps/map_files/templates/biodome_beach.dmm +++ b/_maps/map_files/templates/biodome_beach.dmm @@ -70,17 +70,12 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/toilet{ - dir = 4 - }, +/obj/structure/toilet/directional/west, /obj/effect/turf_decal/sand, /turf/simulated/floor/plating, /area/ruin/powered/beach) "ao" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, +/obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = 28 }, @@ -264,9 +259,7 @@ /turf/simulated/floor/beach/sand, /area/ruin/powered/beach) "bo" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/sand, /turf/simulated/floor/pod/light, /area/ruin/powered/beach) @@ -456,9 +449,7 @@ /turf/simulated/floor/beach/sand, /area/ruin/powered/beach) "qT" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/shower/directional/east, /turf/simulated/floor/pod/light, /area/ruin/powered/beach) "sp" = ( diff --git a/_maps/map_files/templates/shelter_2.dmm b/_maps/map_files/templates/shelter_2.dmm index da889651ccc..8f1345ed27d 100644 --- a/_maps/map_files/templates/shelter_2.dmm +++ b/_maps/map_files/templates/shelter_2.dmm @@ -54,24 +54,10 @@ /obj/machinery/kitchen_machine/microwave, /turf/simulated/floor/carpet/black, /area/survivalpod/luxurypod) -"al" = ( -/obj/structure/sink/kitchen{ - dir = 4; - pixel_x = -11 - }, -/turf/simulated/floor/carpet/black, -/area/survivalpod/luxurypod) "am" = ( /obj/structure/sign/mining/survival, /turf/simulated/wall/mineral/titanium/survival, /area/survivalpod/luxurypod) -"an" = ( -/obj/structure/curtain/black, -/obj/machinery/shower{ - pixel_y = 20 - }, -/turf/simulated/floor/pod, -/area/survivalpod/luxurypod) "ao" = ( /obj/structure/window/reinforced/survival_pod{ dir = 8; @@ -131,12 +117,6 @@ }, /turf/simulated/wall/mineral/titanium/survival, /area/survivalpod/luxurypod) -"ay" = ( -/obj/structure/toilet/secret{ - pixel_y = 12 - }, -/turf/simulated/floor/pod, -/area/survivalpod/luxurypod) "az" = ( /obj/structure/window/reinforced/survival_pod{ dir = 1 @@ -184,6 +164,19 @@ /obj/machinery/economy/vending/wallmed/directional/west, /turf/simulated/floor/pod, /area/survivalpod/luxurypod) +"aL" = ( +/obj/structure/sink/kitchen/directional/west, +/turf/simulated/floor/carpet/black, +/area/survivalpod/luxurypod) +"hp" = ( +/obj/structure/toilet/directional/north, +/turf/simulated/floor/pod, +/area/survivalpod/luxurypod) +"pv" = ( +/obj/structure/curtain/black, +/obj/machinery/shower/directional/north, +/turf/simulated/floor/pod, +/area/survivalpod/luxurypod) (1,1,1) = {" aa @@ -200,7 +193,7 @@ ah aF aj ak -al +aL am "} (3,1,1) = {" @@ -223,7 +216,7 @@ aw "} (5,1,1) = {" aa -an +pv ao aq ar @@ -232,7 +225,7 @@ aa "} (6,1,1) = {" ag -ay +hp az aA aB diff --git a/code/__DEFINES/mappers.dm b/code/__DEFINES/mappers.dm index 5d5afcfadb7..5ac32e9468f 100644 --- a/code/__DEFINES/mappers.dm +++ b/code/__DEFINES/mappers.dm @@ -15,3 +15,21 @@ dir = WEST; \ pixel_x = -offset_x; \ } + +// If we want to set custom offset to each cardinal direction +#define MAPPING_DIRECTIONAL_HELPERS_CUSTOM(path, offset_north, offset_south, offset_east, offset_west) ##path/directional/north {\ + dir = NORTH; \ + pixel_y = offset_north; \ +} \ +##path/directional/south {\ + dir = SOUTH; \ + pixel_y = offset_south; \ +} \ +##path/directional/east {\ + dir = EAST; \ + pixel_x = offset_east; \ +} \ +##path/directional/west {\ + dir = WEST; \ + pixel_x = offset_west; \ +} diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index f2e7efb79ce..c17e9267421 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -11,12 +11,18 @@ var/cistern = FALSE //if the cistern bit is open var/w_items = 0 //the combined w_class of all the items in the cistern var/mob/living/swirlie = null //the mob being given a swirlie + new_attack_chain = TRUE +MAPPING_DIRECTIONAL_HELPERS_CUSTOM(/obj/structure/toilet, 8, -8, 0, 0) + +/obj/structure/toilet/New(loc) + ..() + update_icon() // updates pixel offsets /obj/structure/toilet/Initialize(mapload) . = ..() open = prob(50) - update_icon() + update_icon() // just setting open = TRUE doesn't change the icon /obj/structure/toilet/Destroy() swirlie = null @@ -25,9 +31,11 @@ /obj/structure/toilet/attack_hand(mob/living/user) if(swirlie) user.changeNext_move(CLICK_CD_MELEE) - playsound(src.loc, "swing_hit", 25, 1) - swirlie.visible_message("[user] slams the toilet seat onto [swirlie]'s head!", "[user] slams the toilet seat onto [swirlie]'s head!", "You hear reverberating porcelain.") - swirlie.apply_damage(5, BRUTE, BODY_ZONE_HEAD) + playsound(src.loc, "swing_hit", 25, TRUE) + user.visible_message("[user] slams the toilet seat onto [swirlie]'s head!", + "You slam the toilet seat onto [swirlie]'s head!", + "You hear reverberating porcelain.") + swirlie.apply_damage(5, BRUTE, BODY_ZONE_HEAD, swirlie.run_armor_check(BODY_ZONE_HEAD, MELEE)) return if(cistern && !open) @@ -54,77 +62,87 @@ pixel_y = 0 layer = OBJ_LAYER else - if(dir == SOUTH) + if(dir == NORTH) pixel_x = 0 pixel_y = 8 - if(dir == NORTH) + if(dir == SOUTH) pixel_x = 0 pixel_y = -8 layer = FLY_LAYER -/obj/structure/toilet/attackby__legacy__attackchain(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/reagent_containers)) +/obj/structure/toilet/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/reagent_containers)) if(!open) - return - var/obj/item/reagent_containers/RG = I - if(RG.is_refillable()) - if(RG.reagents.holder_full()) - to_chat(user, "[RG] is full.") + return ITEM_INTERACT_COMPLETE + var/obj/item/reagent_containers/container = used + if(container.is_refillable()) + if(container.reagents.holder_full()) + to_chat(user, "[container] is full.") else - RG.reagents.add_reagent("toiletwater", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) - to_chat(user, "You fill [RG] from [src]. Gross.") - return + container.reagents.add_reagent("toiletwater", min(container.volume - container.reagents.total_volume, container.amount_per_transfer_from_this)) + to_chat(user, "You fill [container] from [src]. Gross.") + return ITEM_INTERACT_COMPLETE - if(istype(I, /obj/item/grab)) + if(istype(used, /obj/item/grab)) user.changeNext_move(CLICK_CD_MELEE) - var/obj/item/grab/G = I + var/obj/item/grab/G = used if(HAS_TRAIT(user, TRAIT_PACIFISM)) to_chat(user, "Swirling [G.affecting] might hurt them!") - return + return ITEM_INTERACT_COMPLETE if(!G.confirm()) - return + return ITEM_INTERACT_COMPLETE if(isliving(G.affecting)) - var/mob/living/GM = G.affecting + var/mob/living/target = G.affecting if(G.state >= GRAB_AGGRESSIVE) - if(GM.loc != get_turf(src)) - to_chat(user, "[GM] needs to be on [src]!") - return + if(target.loc != get_turf(src)) + to_chat(user, "[target] needs to be on [src]!") + return ITEM_INTERACT_COMPLETE if(!swirlie) if(open) - GM.visible_message("[user] starts to give [GM] a swirlie!", "[user] starts to give [GM] a swirlie...") - swirlie = GM - if(do_after(user, 30, 0, target = src)) - GM.visible_message("[user] gives [GM] a swirlie!", "[user] gives [GM] a swirlie!", "You hear a toilet flushing.") - if(iscarbon(GM)) - var/mob/living/carbon/C = GM + user.visible_message("[user] starts to give [target] a swirlie!", + "You start to give [target] a swirlie...") + swirlie = target + if(do_after(user, 3 SECONDS, FALSE, target = src)) + user.visible_message("[user] gives [target] a swirlie!", + "You give [target] a swirlie!", + "You hear a toilet flushing.") + if(iscarbon(target)) + var/mob/living/carbon/C = target if(!C.internal) C.adjustOxyLoss(5) else - GM.adjustOxyLoss(5) + target.adjustOxyLoss(5) swirlie = null else - playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) - GM.visible_message("[user] slams [GM.name]'s head into [src]!", "[user] slams [GM.name]'s head into [src]!") - GM.apply_damage(5, BRUTE, BODY_ZONE_HEAD) + playsound(src.loc, 'sound/effects/bang.ogg', 25, TRUE) + user.visible_message("[user] slams [target]'s head into [src]!", + "You slam [target]'s head into [src]!") + target.apply_damage(5, BRUTE, BODY_ZONE_HEAD, target.run_armor_check(BODY_ZONE_HEAD, MELEE)) + return ITEM_INTERACT_COMPLETE else to_chat(user, "You need a tighter grip!") - if(istype(I, /obj/item/flamethrower)) - var/obj/item/flamethrower/big_lighter = I + return ITEM_INTERACT_COMPLETE + + if(istype(used, /obj/item/flamethrower)) + var/obj/item/flamethrower/big_lighter = used if(!big_lighter.lit) - to_chat(user, "The flamethrower isn't lit!") - return + to_chat(user, "[big_lighter] isn't lit!") + return ITEM_INTERACT_COMPLETE big_lighter.default_ignite(loc, 0.01) if(!cistern) //Just changes what message you get, since fire_act handles the open cistern too. - user.visible_message("[user] torches the contents of the top of the toilet with [big_lighter]!", "You torch the top of the toilet with [big_lighter]! Whoops.") - return - - user.visible_message("[user] torches the contents of the cistern with [big_lighter]!", "You torch the contents of the cistern with [big_lighter]!") - return + user.visible_message("[user] torches the contents of the top of the toilet with [big_lighter]!", + "You torch the top of the toilet with [big_lighter]! Whoops.") + return ITEM_INTERACT_COMPLETE + user.visible_message("[user] torches the contents of the cistern with [big_lighter]!", + "You torch the contents of the cistern with [big_lighter]!") + return ITEM_INTERACT_COMPLETE if(cistern) update_contents_weight_class() - stash_goods(I, user) - return + stash_goods(used, user) + return ITEM_INTERACT_COMPLETE + + return ..() /obj/structure/toilet/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay) ..() @@ -140,19 +158,21 @@ new_total_weight += I.w_class w_items = new_total_weight -/obj/structure/toilet/crowbar_act(mob/user, obj/item/I) +/obj/structure/toilet/crowbar_act(mob/living/user, obj/item/I) . = TRUE if(!I.tool_use_check(user, 0)) return to_chat(user, "You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]...") - playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, 1) + playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, TRUE) if(I.use_tool(src, user, 30, volume = I.tool_volume)) - user.visible_message("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!", "You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!", "You hear grinding porcelain.") + user.visible_message("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!", + "You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!", + "You hear grinding porcelain.") cistern = !cistern update_icon() return -/obj/structure/toilet/wrench_act(mob/user, obj/item/I) +/obj/structure/toilet/wrench_act(mob/living/user, obj/item/I) . = TRUE if(!I.tool_use_check(user, 0)) return @@ -162,8 +182,7 @@ if(anchored) choices += "Disconnect" else - choices += "Connect" - choices += "Rotate" + choices += list("Connect", "Rotate") var/response = tgui_input_list(user, "What do you want to do?", "[src]", choices) if(!Adjacent(user) || !response) //moved away or cancelled @@ -172,18 +191,22 @@ if("Stash") stash_goods(I, user) if("Disconnect") - user.visible_message("[user] starts disconnecting [src].", "You begin disconnecting [src]...") + user.visible_message("[user] starts disconnecting [src].", + "You begin disconnecting [src]...") if(I.use_tool(src, user, 40, volume = I.tool_volume)) if(!loc || !anchored) return - user.visible_message("[user] disconnects [src]!", "You disconnect [src]!") + user.visible_message("[user] disconnects [src]!", + "You disconnect [src]!") anchored = FALSE if("Connect") - user.visible_message("[user] starts connecting [src].", "You begin connecting [src]...") + user.visible_message("[user] starts connecting [src].", + "You begin connecting [src]...") if(I.use_tool(src, user, 40, volume = I.tool_volume)) if(!loc || anchored) return - user.visible_message("[user] connects [src]!", "You connect [src]!") + user.visible_message("[user] connects [src]!", + "You connect [src]!") anchored = TRUE if("Rotate") var/list/dir_choices = list("North" = NORTH, "East" = EAST, "South" = SOUTH, "West" = WEST) @@ -191,7 +214,7 @@ if(!selected) return dir = dir_choices[selected] - update_icon() //is this necessary? probably not + update_icon() //is this necessary? probably not // yes it is /obj/structure/toilet/proc/stash_goods(obj/item/I, mob/user) if(!I) @@ -209,18 +232,6 @@ update_contents_weight_class() to_chat(user, "You carefully place [I] into the cistern.") -/obj/structure/toilet/secret - var/secret_type = null - -/obj/structure/toilet/secret/Initialize(mapload) - . = ..() - if(secret_type) - var/obj/item/secret = new secret_type(src) - secret.desc += " It's a secret!" - w_items += secret.w_class - - - /obj/structure/urinal name = "urinal" desc = "The HU-452, an experimental urinal." @@ -228,48 +239,55 @@ icon_state = "urinal" density = FALSE anchored = TRUE + new_attack_chain = TRUE - -/obj/structure/urinal/attackby__legacy__attackchain(obj/item/I, mob/user, params) - if(istype(I, /obj/item/grab)) - var/obj/item/grab/G = I +/obj/structure/urinal/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/grab)) + var/obj/item/grab/G = used if(!G.confirm()) - return + return ITEM_INTERACT_COMPLETE if(HAS_TRAIT(user, TRAIT_PACIFISM)) to_chat(user, "Slamming [G.affecting] into [src] might hurt them!") - return + return ITEM_INTERACT_COMPLETE if(isliving(G.affecting)) - var/mob/living/GM = G.affecting + var/mob/living/target = G.affecting if(G.state >= GRAB_AGGRESSIVE) - if(GM.loc != get_turf(src)) - to_chat(user, "[GM.name] needs to be on [src].") - return + if(target.loc != get_turf(src)) + to_chat(user, "[target] needs to be on [src].") + return ITEM_INTERACT_COMPLETE user.changeNext_move(CLICK_CD_MELEE) - playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) - user.visible_message("[user] slams [GM]'s head into [src]!", "You slam [GM]'s head into [src]!") - GM.apply_damage(8, BRUTE, BODY_ZONE_HEAD) + playsound(src.loc, 'sound/effects/bang.ogg', 25, TRUE) + user.visible_message("[user] slams [target]'s head into [src]!", + "You slam [target]'s head into [src]!") + target.apply_damage(8, BRUTE, BODY_ZONE_HEAD, target.run_armor_check(BODY_ZONE_HEAD, MELEE)) else to_chat(user, "You need a tighter grip!") + return ITEM_INTERACT_COMPLETE + return ..() -/obj/structure/urinal/wrench_act(mob/user, obj/item/I) +/obj/structure/urinal/wrench_act(mob/living/user, obj/item/I) . = TRUE if(!I.tool_use_check(user, 0)) return if(anchored) - user.visible_message("[user] begins disconnecting [src]...", "You begin to disconnect [src]...") + user.visible_message("[user] begins disconnecting [src]...", + "You begin to disconnect [src]...") if(I.use_tool(src, user, 40, volume = I.tool_volume)) if(!loc || !anchored) return - user.visible_message("[user] disconnects [src]!", "You disconnect [src]!") + user.visible_message("[user] disconnects [src]!", + "You disconnect [src]!") anchored = FALSE pixel_x = 0 pixel_y = 0 else - user.visible_message("[user] begins connecting [src]...", "You begin to connect [src]...") + user.visible_message("[user] begins connecting [src]...", + "You begin to connect [src]...") if(I.use_tool(src, user, 40, volume = I.tool_volume)) if(!loc || anchored) return - user.visible_message("[user] connects [src]!", "You connect [src]!") + user.visible_message("[user] connects [src]!", + "You connect [src]!") anchored = TRUE pixel_x = 0 pixel_y = 32 @@ -292,20 +310,16 @@ var/current_temperature = SHOWER_NORMAL ///What sound will be played on loop when the shower is on and pouring water. var/datum/looping_sound/showering/soundloop + new_attack_chain = TRUE + +MAPPING_DIRECTIONAL_HELPERS_CUSTOM(/obj/machinery/shower, 16, -5, 0, 0) /obj/machinery/shower/New(turf/T, newdir = SOUTH, building = FALSE) ..() soundloop = new(list(src), FALSE) if(building) dir = newdir - pixel_x = 0 - pixel_y = 0 - switch(newdir) - if(SOUTH) - pixel_y = 16 - if(NORTH) - pixel_y = -5 - layer = FLY_LAYER + update_icon() /obj/machinery/shower/Initialize(mapload) . = ..() @@ -321,6 +335,17 @@ QDEL_IN(mist, 25 SECONDS) return ..() +/obj/machinery/shower/update_icon_state() + layer = OBJ_LAYER + pixel_x = 0 + pixel_y = 0 + switch(dir) + if(NORTH) + pixel_y = 16 + if(SOUTH) + pixel_y = -5 + layer = FLY_LAYER + //add heat controls? when emagged, you can freeze to death in it? /obj/effect/mist @@ -336,6 +361,8 @@ update_icon() handle_mist() add_fingerprint(M) + M.visible_message("[M] turns [src] [on ? "on" : "off"].", + "You turn [src] [on ? "on" : "off"].") if(on) START_PROCESSING(SSmachines, src) process() @@ -353,7 +380,7 @@ return ..() -/obj/machinery/shower/wrench_act(mob/user, obj/item/I) +/obj/machinery/shower/wrench_act(mob/living/user, obj/item/I) ..() to_chat(user, "You begin to adjust the temperature valve with [I].") if(I.use_tool(src, user, 50)) @@ -364,19 +391,22 @@ current_temperature = SHOWER_BOILING if(SHOWER_BOILING) current_temperature = SHOWER_NORMAL - user.visible_message("[user] adjusts the shower with \the [I].", "You adjust the shower with \the [I] to [current_temperature] temperature.") + user.visible_message("[user] adjusts the shower with \the [I].", + "You adjust the shower with \the [I] to [current_temperature] temperature.") add_hiddenprint(user) handle_mist() return TRUE -/obj/machinery/shower/welder_act(mob/user, obj/item/I) +/obj/machinery/shower/welder_act(mob/living/user, obj/item/I) . = TRUE if(on) to_chat(user, "Turn [src] off before you attempt to cut it loose.") return if(!I.tool_use_check(user, 0)) return - visible_message("[user] begins slicing [src] free...", "You begin slicing [src] free...", "You hear welding.") + visible_message("[user] begins slicing [src] free...", + "You begin slicing [src] free...", + "You hear welding.") if(I.use_tool(src, user, 40, volume = I.tool_volume)) user.visible_message("[user] cuts [src] loose!", "You cut [src] loose!") var/obj/item/mounted/shower/S = new /obj/item/mounted/shower(get_turf(user)) @@ -482,7 +512,7 @@ icon = 'icons/obj/watercloset.dmi' icon_state = "rubberducky" item_state = "rubberducky" - honk_sounds = list('sound/items/squeaktoy.ogg' = 1) + honk_sounds = list('sound/items/squeaktoy.ogg') attack_verb = list("quacked", "squeaked") /obj/item/bikehorn/rubberducky/captainducky @@ -490,122 +520,113 @@ desc = "Captain's favorite rubber ducky. This one squeaks with power." icon_state = "cap_rubber_ducky" +#define SINK_BUSY (1 << 0) // Something's being washed at the moment +#define SINK_MOVEABLE (1 << 1) // if the sink can be disconnected and moved + /obj/structure/sink name = "sink" icon = 'icons/obj/watercloset.dmi' icon_state = "sink" desc = "A sink used for washing one's hands and face." anchored = TRUE - var/busy = FALSE //Something's being washed at the moment - var/can_move = 1 //if the sink can be disconnected and moved - var/can_rotate = 1 //if the sink can be rotated to face alternate directions + var/sink_flags = SINK_MOVEABLE + new_attack_chain = TRUE -/obj/structure/sink/attack_hand(mob/user as mob) - if(!user || !istype(user)) - return - if(!iscarbon(user)) - return - if(!Adjacent(user)) +MAPPING_DIRECTIONAL_HELPERS_CUSTOM(/obj/structure/sink, 18, -4, 0, 0) + +/obj/structure/sink/New(loc) + ..() + update_icon() // updates pixel offsets + +/obj/structure/sink/attack_hand(mob/living/carbon/human/user) + if(..()) return if(!anchored) to_chat(user, "[src] isn't connected, wrench it into position first!") return - if(ishuman(user)) - var/mob/living/carbon/human/H = user - var/obj/item/organ/external/temp = H.bodyparts_by_name["r_hand"] - if(user.hand) - temp = H.bodyparts_by_name["l_hand"] - if(temp && !temp.is_usable()) - to_chat(user, "You try to move your [temp.name], but cannot!") - return - if(busy) + var/obj/item/organ/external/temp = user.bodyparts_by_name["r_hand"] + if(user.hand) + temp = user.bodyparts_by_name["l_hand"] + if(temp && !temp.is_usable()) + to_chat(user, "You try to move your [temp], but cannot!") + return + if(sink_flags & SINK_BUSY) to_chat(user, "Someone's already washing here.") return + var/selected_area = parse_zone(user.zone_selected) - var/washing_face = 0 + var/washing_face = FALSE if(selected_area in list("head", "mouth", "eyes")) - washing_face = 1 + washing_face = TRUE + sink_flags |= SINK_BUSY user.visible_message("[user] starts washing [user.p_their()] [washing_face ? "face" : "hands"]...", \ "You start washing your [washing_face ? "face" : "hands"]...") - busy = TRUE - - if(!do_after(user, 40, target = src)) - busy = FALSE + if(!do_after(user, 4 SECONDS, target = src)) + sink_flags &= ~SINK_BUSY return - busy = FALSE - - user.visible_message("[user] washes [user.p_their()] [washing_face ? "face" : "hands"] using [src].", \ - "You wash your [washing_face ? "face" : "hands"] using [src].") if(washing_face) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.lip_style = null //Washes off lipstick - H.lip_color = initial(H.lip_color) - H.regenerate_icons() - H.AdjustDrowsy(-rand(4 SECONDS, 6 SECONDS)) //Washing your face wakes you up if you're falling asleep + user.lip_style = null // Washes off lipstick + user.lip_color = initial(user.lip_color) + user.regenerate_icons() + user.AdjustDrowsy(-rand(4 SECONDS, 6 SECONDS)) // Washing your face wakes you up if you're falling asleep else user.clean_blood() + sink_flags &= ~SINK_BUSY + user.visible_message("[user] washes [user.p_their()] [washing_face ? "face" : "hands"] using [src].", \ + "You wash your [washing_face ? "face" : "hands"] using [src].") - -/obj/structure/sink/attackby__legacy__attackchain(obj/item/O, mob/user, params) - if(busy) +/obj/structure/sink/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(sink_flags & SINK_BUSY) to_chat(user, "Someone's already washing here!") - return - - if(!(istype(O))) - return - + return ITEM_INTERACT_COMPLETE if(!anchored) to_chat(user, "[src] isn't connected, wrench it into position first!") - return + return ITEM_INTERACT_COMPLETE + sink_flags |= SINK_BUSY + if(used.wash(user, src)) + used.water_act(20, COLD_WATER_TEMPERATURE, src) + sink_flags &= ~SINK_BUSY + return ITEM_INTERACT_COMPLETE - busy = TRUE - var/wateract = 0 - wateract = O.wash(user, src) - busy = FALSE - if(wateract) - O.water_act(20, COLD_WATER_TEMPERATURE, src) - -/obj/structure/sink/wrench_act(mob/user, obj/item/I) +/obj/structure/sink/wrench_act(mob/living/user, obj/item/I) + if(!(sink_flags & SINK_MOVEABLE)) // we can't move it, let's just wash our wrench now + return NONE . = TRUE if(!I.tool_use_check(user, 0)) return - var/choices = list() + var/list/choices if(anchored) - choices += "Wash" - if(can_move) - choices += "Disconnect" + choices += list("Wash", "Disconnect") else - choices += "Connect" - if(can_rotate) - choices += "Rotate" - + choices += list("Connect", "Rotate") var/response = tgui_input_list(user, "What do you want to do?", "[src]", choices) - if(!Adjacent(user) || !response) //moved away or cancelled + if(!Adjacent(user) || !response) // moved away or cancelled return switch(response) if("Wash") - busy = TRUE - var/wateract = 0 - wateract = (I.wash(user, src)) - busy = FALSE - if(wateract) + sink_flags |= SINK_BUSY + if(I.wash(user, src)) I.water_act(20, COLD_WATER_TEMPERATURE, src) + sink_flags &= ~SINK_BUSY if("Disconnect") - user.visible_message("[user] starts disconnecting [src].", "You begin disconnecting [src]...") + user.visible_message("[user] starts disconnecting [src].", + "You begin disconnecting [src]...") if(I.use_tool(src, user, 40, volume = I.tool_volume)) if(!loc || !anchored) return - user.visible_message("[user] disconnects [src]!", "You disconnect [src]!") + user.visible_message("[user] disconnects [src]!", + "You disconnect [src]!") anchored = FALSE if("Connect") - user.visible_message("[user] starts connecting [src].", "You begin connecting [src]...") + user.visible_message("[user] starts connecting [src].", + "You begin connecting [src]...") if(I.use_tool(src, user, 40, volume = I.tool_volume)) if(!loc || anchored) return - user.visible_message("[user] connects [src]!", "You connect [src]!") + user.visible_message("[user] connects [src]!", + "You connect [src]!") anchored = TRUE if("Rotate") var/list/dir_choices = list("North" = NORTH, "East" = EAST, "South" = SOUTH, "West" = WEST) @@ -613,66 +634,62 @@ if(!selected) return dir = dir_choices[selected] - update_icon() //is this necessary? probably not + update_icon() //is this necessary? probably not // yes it is /obj/structure/sink/update_icon_state() layer = OBJ_LAYER - if(!anchored) - pixel_x = 0 - pixel_y = 0 - else - //the following code will probably want to be updated in the future to be less reliant on hardcoded offsets based on the can_move/can_rotate values - if(!can_move) //puddles - return - if(!can_rotate) //kitchen sinks - pixel_x = 0 - pixel_y = 28 - return - else //normal sinks - if(dir == NORTH || dir == SOUTH) - pixel_x = 0 - pixel_y = (dir == NORTH) ? -5 : 30 - if(dir == NORTH) - layer = FLY_LAYER - else - pixel_x = (dir == EAST) ? 12 : -12 - pixel_y = 0 - + pixel_x = 0 + pixel_y = 0 + if(!(sink_flags & SINK_MOVEABLE)) // puddles - don't need an offset + return + if(anchored) + switch(dir) + if(NORTH) + pixel_y = 18 + if(SOUTH) + pixel_y = -4 + layer = FLY_LAYER /obj/structure/sink/kitchen name = "kitchen sink" icon_state = "sink_alt" - can_rotate = 0 +MAPPING_DIRECTIONAL_HELPERS_CUSTOM(/obj/structure/sink/kitchen, 18, -4, 0, 0) + +/obj/structure/sink/kitchen/old + name = "old sink" + desc = "A sink used for washing one's hands and face. It looks rusty and home-made." + +MAPPING_DIRECTIONAL_HELPERS_CUSTOM(/obj/structure/sink/kitchen/old, 18, -4, 0, 0) /// splishy splashy ^_^ /obj/structure/sink/puddle name = "puddle" desc = "A puddle of clean water. Looks refreshing." icon_state = "puddle" - can_move = 0 - can_rotate = 0 resistance_flags = UNACIDABLE + sink_flags = 0 -/obj/structure/sink/puddle/attack_hand(mob/M as mob) +/obj/structure/sink/puddle/attack_hand(mob/living/carbon/human/user) icon_state = "puddle-splash" ..() - icon_state = "puddle" + if(!(sink_flags & SINK_BUSY)) // so if we click puddle while someone uses it, it doesn't reset its pretty animation + icon_state = "puddle" -/obj/structure/sink/puddle/attackby__legacy__attackchain(obj/item/O as obj, mob/user as mob, params) +/obj/structure/sink/puddle/item_interaction(mob/living/user, obj/item/used, list/modifiers) icon_state = "puddle-splash" ..() - icon_state = "puddle" + if(!(sink_flags & SINK_BUSY)) // so if we click puddle while someone uses it, it doesn't reset its pretty animation + icon_state = "puddle" + return ITEM_INTERACT_COMPLETE -/obj/structure/sink/kitchen/old - name = "old sink" - desc = "A sink used for washing one's hands and face. It looks rusty and home-made." +#undef SINK_BUSY +#undef SINK_MOVEABLE ////////////////////////////////// // Bathroom Fixture Items // ////////////////////////////////// - /obj/item/mounted/shower name = "shower fixture" desc = "A self-adhering shower fixture. Simply stick to a wall, no plumber needed!" @@ -684,17 +701,16 @@ //overriding this because we don't care about other items on the wall, but still need to do adjacent checks if(!on_wall || !user) return - if(!(get_dir(on_wall, user) in GLOB.cardinal)) + if(!(get_dir(user, on_wall) in GLOB.cardinal)) to_chat(user, "You need to be standing next to a wall to place \the [src].") return - return 1 + return TRUE /obj/item/mounted/shower/do_build(turf/on_wall, mob/user) - var/obj/machinery/shower/S = new /obj/machinery/shower(get_turf(user), get_dir(on_wall, user), 1) + var/obj/machinery/shower/S = new /obj/machinery/shower(get_turf(user), user.dir, TRUE) transfer_prints_to(S, TRUE) qdel(src) - /obj/item/bathroom_parts name = "toilet in a box" desc = "An entire toilet in a box, straight from Space Sweden. It has an unpronounceable name." @@ -703,6 +719,7 @@ w_class = WEIGHT_CLASS_BULKY var/result = /obj/structure/toilet var/result_name = "toilet" + new_attack_chain = TRUE /obj/item/bathroom_parts/urinal name = "urinal in a box" @@ -718,17 +735,18 @@ ..() desc = "An entire [result_name] in a box, straight from Space Sweden. It has an [pick("unpronounceable", "overly accented", "entirely gibberish", "oddly normal-sounding")] name." -/obj/item/bathroom_parts/attack_self__legacy__attackchain(mob/user) +/obj/item/bathroom_parts/activate_self(mob/user) + if(..()) + return var/turf/T = get_turf(user) if(!T) to_chat(user, "You can't build that here!") return - if(result in T.contents) - to_chat(user, "There's already \an [result_name] here.") - return - user.visible_message("[user] begins assembling a new [result_name].", "You begin assembling a new [result_name].") - if(do_after(user, 30, target = user)) - user.visible_message("[user] finishes building a new [result_name]!", "You finish building a new [result_name]!") + user.visible_message("[user] begins assembling a new [result_name].", + "You begin assembling a new [result_name].") + if(do_after(user, 3 SECONDS, target = user)) + user.visible_message("[user] finishes building a new [result_name]!", + "You finish building a new [result_name]!") var/obj/structure/S = new result(T) S.anchored = FALSE S.dir = user.dir diff --git a/code/tests/attack_chain/test_attack_chain_watercloset.dm b/code/tests/attack_chain/test_attack_chain_watercloset.dm new file mode 100644 index 00000000000..e44dcf30501 --- /dev/null +++ b/code/tests/attack_chain/test_attack_chain_watercloset.dm @@ -0,0 +1,85 @@ +/datum/game_test/attack_chain_toilet/Run() + var/datum/test_puppeteer/player = new(src) + + var/obj/structure/toilet/toilet = player.spawn_obj_nearby(/obj/structure/toilet, EAST) + toilet.open = TRUE + var/obj/item/reagent_containers/glass/beaker = player.spawn_obj_in_hand(/obj/item/reagent_containers/glass/beaker) + player.use_item_in_hand() + player.click_on(toilet) + TEST_ASSERT_NOT_CHATLOG(player, "You fill") + player.use_item_in_hand() + player.click_on(toilet) + TEST_ASSERT_LAST_CHATLOG(player, "You fill") + player.put_away(beaker) + + var/obj/item/flamethrower = player.spawn_obj_in_hand(/obj/item/flamethrower/full/tank) + player.use_item_in_hand() + player.click_on(toilet) + TEST_ASSERT_LAST_CHATLOG(player, "You torch") + player.use_item_in_hand() + player.put_away(flamethrower) + + var/obj/item/crowbar = player.spawn_obj_in_hand(/obj/item/crowbar) + player.click_on(toilet) + TEST_ASSERT_LAST_CHATLOG(player, "You lift") + player.puppet.swap_hand() + player.click_on(toilet) + player.click_on(toilet) + TEST_ASSERT_LAST_CHATLOG(player, "The cistern is empty") + var/obj/item/storage/box = player.spawn_obj_in_hand(/obj/item/storage/box) + player.click_on(toilet) + TEST_ASSERT_LAST_CHATLOG(player, "You carefully") + player.click_on(toilet) + TEST_ASSERT_LAST_CHATLOG(player, "You find") + player.puppet.swap_hand() + player.click_on(toilet) + TEST_ASSERT_LAST_CHATLOG(player, "You replace") + +/datum/game_test/attack_chain_shower/Run() + var/datum/test_puppeteer/player = new(src) + + var/obj/machinery/shower = player.spawn_obj_nearby(/obj/machinery/shower, EAST) + player.click_on(shower) + TEST_ASSERT_LAST_CHATLOG(player, "You turn") + + var/obj/item/wrench = player.spawn_obj_in_hand(/obj/item/wrench) + player.click_on(shower) + TEST_ASSERT_LAST_CHATLOG(player, "You adjust") + + player.put_away(wrench) + player.spawn_obj_in_hand(/obj/item/analyzer) + player.click_on(shower) + TEST_ASSERT_LAST_CHATLOG(player, "The water temperature") + + player.puppet.swap_hand() + var/obj/item/welder = player.spawn_obj_in_hand(/obj/item/weldingtool) + player.use_item_in_hand() + player.click_on(shower) + TEST_ASSERT_LAST_CHATLOG(player, "Turn") + player.put_away(welder) + player.click_on(shower) + TEST_ASSERT_LAST_CHATLOG(player, "You turn") + player.retrieve(welder) + player.click_on(shower) + TEST_ASSERT_LAST_CHATLOG(player, "You cut") + player.put_away(welder) + qdel(player) + +/datum/game_test/attack_chain_sink/Run() + var/datum/test_puppeteer/player = new(src) + + var/obj/structure/sink = player.spawn_obj_nearby(/obj/structure/sink, SOUTH) + sink.anchored = FALSE + player.click_on(sink) + TEST_ASSERT_LAST_CHATLOG(player, "The sink isn't") + sink.anchored = TRUE + player.click_on(sink) + TEST_ASSERT_LAST_CHATLOG(player, "You wash your") + player.spawn_obj_in_hand(/obj/item/crowbar) + player.click_on(sink) + TEST_ASSERT_LAST_CHATLOG(player, "You wash the") + + player.puppet.swap_hand() + player.spawn_obj_in_hand(/obj/item/bathroom_parts/sink) + player.use_item_in_hand() + TEST_ASSERT_LAST_CHATLOG(player, "You finish") diff --git a/code/tests/game_tests.dm b/code/tests/game_tests.dm index 03f191b9e13..6ebc37c096d 100644 --- a/code/tests/game_tests.dm +++ b/code/tests/game_tests.dm @@ -18,6 +18,7 @@ #include "attack_chain\test_attack_chain_stunbaton.dm" #include "attack_chain\test_attack_chain_turf.dm" #include "attack_chain\test_attack_chain_vehicles.dm" +#include "attack_chain\test_attack_chain_watercloset.dm" #include "games\test_cards.dm" #include "jobs\test_job_globals.dm" #include "test_aicard_icons.dm" diff --git a/icons/obj/watercloset.dmi b/icons/obj/watercloset.dmi index 4bddc45e11e27556544a07da2b7a8be464b17eec..9564291cc8c127da1db3f3c20cd7eb67e0b47618 100644 GIT binary patch delta 15124 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