diff --git a/.github/workflows/discord_discussions.yml b/.github/workflows/discord_discussions.yml index 7f894fa18ca..68876aed185 100644 --- a/.github/workflows/discord_discussions.yml +++ b/.github/workflows/discord_discussions.yml @@ -28,7 +28,7 @@ jobs: exit 1 - name: Setup dotnet - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: dotnet-version: 8.0.x dotnet-quality: ga diff --git a/.github/workflows/run_linters.yml b/.github/workflows/run_linters.yml index 81c963c25ed..68ded6a10c9 100644 --- a/.github/workflows/run_linters.yml +++ b/.github/workflows/run_linters.yml @@ -39,7 +39,7 @@ jobs: path: tools/icon_cutter/cache key: ${{ runner.os }}-cutter-${{ hashFiles('dependencies.sh') }} - name: Setup .NET SDK - uses: actions/setup-dotnet@v4.2.0 + uses: actions/setup-dotnet@v5 with: dotnet-version: 9.x - name: Install OpenDream diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 1f2ff17b818..26d6102a9e1 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: repo-token: ${{ secrets.BUBBERBOT_PAT }} stale-pr-message: "This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself" diff --git a/.github/workflows/tgs_test.yml b/.github/workflows/tgs_test.yml index 6c689ae7d1a..feb89bac9c0 100644 --- a/.github/workflows/tgs_test.yml +++ b/.github/workflows/tgs_test.yml @@ -59,7 +59,7 @@ jobs: - 5000:5000 #Can't use env here for some reason steps: - name: Setup dotnet - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: dotnet-version: 8.0.x diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm index cb8c915cb07..5989fd054ac 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm @@ -672,8 +672,7 @@ }, /obj/structure/flora/bush, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output{ - dir = 1; - chamber_id = "syndielab_biodome" + dir = 1 }, /turf/open/floor/grass{ initial_gas_mix = "o2=1000;n2=1100;TEMP=280" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm index ae743175f17..d03c2800eea 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm @@ -70,8 +70,7 @@ "dC" = ( /obj/structure/sign/warning/fire/directional/north, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input{ - dir = 4; - chamber_id = "lizardgaslava" + dir = 4 }, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=30000;TEMP=293.15" @@ -134,8 +133,7 @@ /area/ruin/thelizardsgas_lavaland) "fO" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output{ - dir = 8; - chamber_id = "lizardgaslava" + dir = 8 }, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=30000;TEMP=293.15" @@ -401,8 +399,7 @@ "rv" = ( /obj/structure/sign/warning/fire/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output{ - dir = 8; - chamber_id = "lizardgaslava" + dir = 8 }, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=30000;TEMP=293.15" @@ -649,8 +646,7 @@ /area/ruin/thelizardsgas_lavaland) "BU" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input{ - dir = 4; - chamber_id = "lizardgaslava" + dir = 4 }, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=30000;TEMP=293.15" @@ -882,8 +878,7 @@ /area/ruin/thelizardsgas_lavaland) "JK" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output{ - dir = 8; - chamber_id = "lizardgaslava" + dir = 8 }, /obj/item/toy/plush/lizard_plushie/space/green{ desc = "A famous lizard, in plushy form."; diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index bbc09f38f59..bd903799d9f 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -1515,8 +1515,7 @@ /area/ruin/syndicate_lava_base/medbay) "lP" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "lavalandsyndieo2" + dir = 8 }, /turf/open/floor/engine/o2, /area/ruin/syndicate_lava_base/engineering) @@ -1774,8 +1773,7 @@ /area/ruin/syndicate_lava_base/engineering) "nR" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "lavalandsyndieplasma" + dir = 8 }, /turf/open/floor/engine/plasma, /area/ruin/syndicate_lava_base/engineering) @@ -1881,7 +1879,6 @@ /area/ruin/syndicate_lava_base/engineering) "oM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lavalandsyndien2"; dir = 8 }, /turf/open/floor/engine/n2, @@ -2664,8 +2661,7 @@ /area/ruin/syndicate_lava_base/engineering) "zU" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "lavalandsyndien2" + dir = 8 }, /turf/open/floor/engine/n2, /area/ruin/syndicate_lava_base/engineering) @@ -2678,7 +2674,6 @@ /area/ruin/syndicate_lava_base/bar) "Ab" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lavalandsyndieo2"; dir = 8 }, /turf/open/floor/engine/o2, @@ -3382,9 +3377,7 @@ /turf/open/floor/carpet/red, /area/ruin/syndicate_lava_base/dormitories) "JV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lavalandsyndieco2" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/co2, /area/ruin/syndicate_lava_base/engineering) "Ks" = ( @@ -3868,7 +3861,6 @@ /area/ruin/syndicate_lava_base/main) "Ry" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lavalandsyndieplasma"; dir = 8 }, /turf/open/floor/engine/plasma, @@ -4104,9 +4096,7 @@ /turf/open/floor/iron/dark, /area/ruin/syndicate_lava_base/main) "Uw" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "lavalandsyndieco2" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/engine/co2, /area/ruin/syndicate_lava_base/engineering) "Uz" = ( diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_1.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_1.dmm index dc6cea464f7..efdb18e781a 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_1.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_1.dmm @@ -31,9 +31,8 @@ /area/ruin/space/djstation) "v" = ( /obj/structure/toilet{ - pixel_y = 8 + dir = 1 }, -/obj/machinery/duct, /obj/machinery/light/small/directional/south, /turf/open/floor/iron/freezer, /area/ruin/space/djstation) diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_2.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_2.dmm index 4a1dac457b1..ef304f1d930 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_2.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_2.dmm @@ -4,9 +4,6 @@ /area/template_noop) "d" = ( /obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/textured, -/area/ruin/space/djstation) -"f" = ( /obj/structure/sink/directional/west, /turf/open/floor/iron/dark/textured, /area/ruin/space/djstation) @@ -95,7 +92,7 @@ Y a i M -f +Z d V i diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_3.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_3.dmm index 956b5efe787..9102b5e7acc 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_3.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_3.dmm @@ -15,7 +15,6 @@ /obj/structure/toilet{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/ruin/space/djstation) "d" = ( diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm index 4980b772566..289f1e6f188 100644 --- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm +++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm @@ -1333,7 +1333,6 @@ /area/ruin/space/has_grav/dangerous_research/lab) "rA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "asrc_b"; dir = 8 }, /turf/open/floor/engine/air, @@ -3714,7 +3713,6 @@ /area/ruin/space/has_grav/dangerous_research) "Xb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "asrc_a"; dir = 8 }, /turf/open/floor/engine/airless, diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index f9235a874b0..9f560335da0 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -1048,7 +1048,6 @@ /area/ruin/space/has_grav/deepstorage/power) "fC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "deepo2"; dir = 8 }, /turf/open/floor/plating/airless, @@ -1196,13 +1195,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/ruin/space/has_grav/deepstorage/power) -"gv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "deepn2"; - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/deepstorage/power) "gw" = ( /obj/machinery/sleeper{ dir = 4 @@ -1286,7 +1278,6 @@ /area/ruin/space/has_grav/deepstorage/power) "gP" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "deepn2"; dir = 8 }, /turf/open/floor/plating/airless, @@ -1581,13 +1572,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/cafeteria, /area/ruin/space/has_grav/deepstorage/kitchen) -"qm" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "deepo2"; - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/deepstorage/power) "qq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 1 @@ -4507,9 +4491,9 @@ fb fp fC fL -qm +gP fp -gv +fC gD gP fp diff --git a/_maps/RandomRuins/SpaceRuins/interdyne.dmm b/_maps/RandomRuins/SpaceRuins/interdyne.dmm index 6df9519ce8f..ae2a3578e2f 100644 --- a/_maps/RandomRuins/SpaceRuins/interdyne.dmm +++ b/_maps/RandomRuins/SpaceRuins/interdyne.dmm @@ -464,7 +464,6 @@ /area/ruin/space/has_grav/interdyne) "tm" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "interdyne_atmos"; dir = 1; pipe_color = "#0000FF" }, diff --git a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm index 729e9ddf044..0d2dc322660 100644 --- a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm +++ b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm @@ -135,7 +135,6 @@ /obj/effect/decal/cleanable/blood/old, /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation1"; dir = 1 }, /turf/open/floor/plating, @@ -151,7 +150,6 @@ "aB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation2"; dir = 1 }, /turf/open/floor/plating, @@ -351,7 +349,6 @@ "bk" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation3"; dir = 4 }, /turf/open/floor/plating, @@ -477,7 +474,6 @@ /obj/effect/decal/cleanable/blood/old, /obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation4"; dir = 4 }, /turf/open/floor/plating, @@ -538,9 +534,7 @@ "bP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation6" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/plating, /area/ruin/space/has_grav/powered/cat_man) "bQ" = ( @@ -678,7 +672,6 @@ /area/ruin/space/has_grav/powered/cat_man) "cl" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "catstationsupply"; dir = 8 }, /turf/open/floor/plating/airless, @@ -801,9 +794,7 @@ /area/ruin/space/has_grav/powered/cat_man) "jc" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation5" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/plating, /area/ruin/space/has_grav/powered/cat_man) "lQ" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 34cebf81db1..a318ac21998 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -6358,8 +6358,7 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - dir = 8; - chamber_id = "beta-o2" + dir = 8 }, /turf/open/floor/engine/o2, /area/ruin/space/ancientstation/beta/atmos) @@ -7778,8 +7777,7 @@ "TB" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "beta-o2" + dir = 8 }, /obj/machinery/light/small/directional/north, /turf/open/floor/engine/o2, @@ -8202,8 +8200,7 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - dir = 8; - chamber_id = "beta-n2" + dir = 8 }, /turf/open/floor/engine/n2, /area/ruin/space/ancientstation/beta/atmos) @@ -8295,8 +8292,7 @@ "XA" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "beta-n2" + dir = 8 }, /obj/machinery/light/small/directional/south, /turf/open/floor/engine/n2, diff --git a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm index 82da41ac206..98831dd9d2b 100644 --- a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm @@ -1806,9 +1806,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/ks13/science/ordnance_hall) "rN" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "ks13" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/engine/air{ initial_gas_mix = "o2=20000;n2=80000;TEMP=293.15" }, @@ -4914,9 +4912,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/ks13/science/genetics) "HU" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "ks13-2" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/engine/airless, /area/ruin/space/ks13/engineering/atmos) "HV" = ( @@ -5860,9 +5856,7 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "Nf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "ks13" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/air{ initial_gas_mix = "o2=20000;n2=80000;TEMP=293.15" }, @@ -6505,9 +6499,7 @@ /turf/open/floor/iron/airless, /area/ruin/space/ks13/service/cafe) "Qq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "ks13-2" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/airless, /area/ruin/space/ks13/engineering/atmos) "Qr" = ( diff --git a/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm b/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm index b07e336ac44..05d7ab995c5 100644 --- a/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm +++ b/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm @@ -126,9 +126,7 @@ /turf/open/floor/iron/white/side, /area/ruin/space/has_grav/thelizardsgas) "kS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lizardgas" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=35000;TEMP=293.15" }, @@ -478,7 +476,6 @@ /area/ruin/space/has_grav/thelizardsgas) "Uh" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "lizardgas"; dir = 4 }, /turf/open/floor/engine/plasma{ diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 8cffa52e6e3..8c4f46d49b9 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -4906,42 +4906,36 @@ /area/awaymission/snowdin/cave/cavern) "rM" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "snowdinmix"; dir = 1 }, /turf/open/floor/engine/plasma, /area/awaymission/snowdin/post/engineering) "rN" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "snowdinmix"; dir = 1 }, /turf/open/floor/engine/plasma, /area/awaymission/snowdin/post/engineering) "rO" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "snowdino2"; dir = 1 }, /turf/open/floor/engine/o2, /area/awaymission/snowdin/post/engineering) "rP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "snowdino2"; dir = 1 }, /turf/open/floor/engine/o2, /area/awaymission/snowdin/post/engineering) "rQ" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "snowdinn2"; dir = 1 }, /turf/open/floor/engine/n2, /area/awaymission/snowdin/post/engineering) "rR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "snowdinn2"; dir = 1 }, /turf/open/floor/engine/n2, @@ -5125,7 +5119,6 @@ /area/awaymission/snowdin/post/engineering) "sC" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "snowdinincin"; dir = 1 }, /turf/open/floor/engine/vacuum, diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 25dbeb28cc1..12aa7f7458b 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -4078,15 +4078,11 @@ /turf/open/floor/iron/dark, /area/awaymission/undergroundoutpost45/engineering) "pE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "uo45air" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/air, /area/awaymission/undergroundoutpost45/engineering) "pF" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "uo45air" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/engine/air, /area/awaymission/undergroundoutpost45/engineering) "pG" = ( @@ -4915,7 +4911,6 @@ /area/awaymission/undergroundoutpost45/engineering) "sr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "uo45mix"; dir = 8 }, /turf/open/floor/engine/vacuum, @@ -5086,7 +5081,6 @@ /area/awaymission/undergroundoutpost45/engineering) "te" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "uo45mix"; dir = 8 }, /turf/open/floor/engine/vacuum, @@ -5624,28 +5618,24 @@ /area/awaymission/undergroundoutpost45/engineering) "vd" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "uo45n2"; dir = 1 }, /turf/open/floor/engine/n2, /area/awaymission/undergroundoutpost45/engineering) "ve" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "uo45n2"; dir = 1 }, /turf/open/floor/engine/n2, /area/awaymission/undergroundoutpost45/engineering) "vf" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "uo45o2"; dir = 1 }, /turf/open/floor/engine/o2, /area/awaymission/undergroundoutpost45/engineering) "vg" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "uo45o2"; dir = 1 }, /turf/open/floor/engine/o2, diff --git a/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm b/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm index 6fcc26c20fd..96f971eab3d 100644 --- a/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm +++ b/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm @@ -7,7 +7,7 @@ /obj/effect/turf_decal/siding/blue{ dir = 4 }, -/turf/open/floor/iron/dark/telecomms, +/turf/open/floor/catwalk_floor, /area/station/science/server) "aat" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -588,6 +588,7 @@ dir = 9 }, /obj/machinery/light_switch/directional/east, +/obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/station/science/server) "akt" = ( @@ -761,13 +762,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/warden) -"amk" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/closet/crate/trashcart/laundry, -/obj/effect/spawner/random/clothing/costume, -/obj/effect/spawner/random/clothing/backpack, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "ams" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/siding/blue/corner{ @@ -1076,6 +1070,7 @@ /obj/item/storage/belt/utility/full{ pixel_y = 1 }, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/white/textured_corner{ dir = 8 }, @@ -2605,6 +2600,13 @@ }, /turf/open/floor/glass, /area/station/service/kitchen) +"aQx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "aQz" = ( /obj/structure/table, /turf/open/floor/iron/dark/textured, @@ -2635,7 +2637,7 @@ dir = 8 }, /obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/telecomms, +/turf/open/floor/catwalk_floor, /area/station/science/server) "aRg" = ( /obj/machinery/door/airlock/maintenance, @@ -2686,6 +2688,9 @@ }, /turf/open/openspace, /area/station/command/gateway) +"aSW" = ( +/turf/closed/wall, +/area/station/service/hydroponics/garden/abandoned) "aSX" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -2756,6 +2761,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"aUe" = ( +/obj/item/tank/internals/plasma/empty, +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "aUl" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -2873,17 +2889,6 @@ }, /turf/open/floor/wood, /area/station/maintenance/starboard/central) -"aVv" = ( -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "aVy" = ( /obj/structure/sign/directions/security/directional/north{ dir = 2; @@ -2902,6 +2907,21 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/smooth_large, /area/station/service/hydroponics) +"aVL" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/north, +/obj/machinery/camera/autoname/directional/north{ + network = list("ss13","medbay"); + c_tag = "Medbay - Lobby" + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "aVN" = ( /turf/closed/wall, /area/station/command/teleporter) @@ -4621,6 +4641,10 @@ }, /turf/open/floor/iron, /area/station/science/research) +"bvY" = ( +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/wood, +/area/station/ai_monitored/command/storage/eva) "bvZ" = ( /obj/structure/railing{ dir = 8 @@ -5052,6 +5076,14 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"bCx" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "bCC" = ( /obj/machinery/suit_storage_unit/captain, /obj/machinery/status_display/evac/directional/north, @@ -5197,6 +5229,13 @@ /obj/structure/cable, /turf/open/floor/iron/textured_large, /area/station/security/prison/rec) +"bEJ" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "bES" = ( /obj/effect/turf_decal/siding/blue{ dir = 1 @@ -6811,6 +6850,15 @@ /obj/structure/table, /turf/open/floor/plating, /area/station/maintenance/disposal) +"caQ" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, +/obj/machinery/autolathe, +/obj/structure/sign/poster/official/do_not_question/directional/north, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/cargo/storage) "caS" = ( /obj/structure/railing, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7412,6 +7460,10 @@ }, /turf/open/floor/wood/large, /area/station/service/kitchen) +"ckE" = ( +/obj/machinery/hydroponics/soil, +/turf/open/misc/sandy_dirt, +/area/station/service/hydroponics/garden/abandoned) "ckG" = ( /obj/structure/table, /obj/item/clothing/glasses/sunglasses/big{ @@ -8393,10 +8445,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_recreation) -"cyY" = ( -/obj/machinery/hydroponics/soil, -/turf/open/misc/sandy_dirt, -/area/station/service/hydroponics/garden/abandoned) "czk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8508,11 +8556,6 @@ /obj/machinery/light/directional, /turf/open/floor/iron/dark/smooth_large, /area/station/service/hydroponics) -"cAs" = ( -/obj/structure/disposalpipe/segment, -/obj/item/banner/command/mundane, -/turf/open/floor/plating, -/area/station/maintenance/port) "cAv" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -9224,30 +9267,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port) -"cJi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/cultivator, -/obj/item/reagent_containers/cup/bottle/nutrient/rh{ - pixel_x = 10; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/bottle/nutrient/ez{ - pixel_x = 10; - pixel_y = -4 - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/item/reagent_containers/spray/pestspray{ - pixel_x = 10; - pixel_y = -14 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "cJk" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/shrink_cw, /obj/effect/turf_decal/trimline/dark_blue/filled/mid_joiner, @@ -10449,6 +10468,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"ddx" = ( +/obj/structure/disposalpipe/segment, +/obj/item/banner/command/mundane, +/turf/open/floor/plating, +/area/station/maintenance/port) "ddz" = ( /obj/effect/turf_decal/siding/white, /obj/item/kirbyplants/organic/plant21{ @@ -12425,13 +12449,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/service/cafeteria) -"dJx" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/washing_machine, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "dJB" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /obj/machinery/door/poddoor/shutters/preopen{ @@ -12583,6 +12600,14 @@ }, /turf/open/floor/iron/textured, /area/station/cargo/storage) +"dLb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "dLl" = ( /obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4, /obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, @@ -12653,14 +12678,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating/airless, /area/station/maintenance/starboard/lesser) -"dMK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/frame/machine/secured, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "dMM" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -12846,13 +12863,6 @@ }, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/medical/coldroom) -"dOC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "dOG" = ( /obj/structure/cable, /turf/closed/wall/r_wall, @@ -12975,13 +12985,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/station/science/robotics) -"dRo" = ( -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "dRU" = ( /obj/structure/table/wood, /obj/effect/spawner/random/maintenance, @@ -13510,14 +13513,6 @@ /obj/machinery/computer/mechpad, /turf/open/floor/iron/smooth, /area/station/science/robotics) -"dYN" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/siding/purple, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/science/lab) "dYY" = ( /obj/structure/railing/corner/end/flip{ dir = 8 @@ -13675,6 +13670,14 @@ "eap" = ( /turf/closed/wall, /area/station/hallway/secondary/entry) +"eas" = ( +/obj/machinery/wall_healer/directional/east, +/obj/machinery/camera/autoname/directional/east, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/medical) "eaw" = ( /obj/effect/turf_decal/siding/brown, /obj/effect/turf_decal/siding/brown/corner{ @@ -13840,6 +13843,7 @@ }, /obj/effect/landmark/start/hangover, /obj/effect/spawner/random/trash/graffiti, +/obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/construction) "ecC" = ( @@ -13973,6 +13977,13 @@ /obj/effect/landmark/start/depsec/science, /turf/open/openspace, /area/station/security/checkpoint/science) +"eet" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "eeA" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -14712,14 +14723,6 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/ai_monitored/turret_protected/aisat_interior) -"epX" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular, -/obj/structure/cable, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/medical) "epY" = ( /obj/structure/plaque/static_plaque/golden/commission/efficiency{ pixel_y = 32 @@ -14782,6 +14785,14 @@ }, /turf/open/floor/engine/hull/air, /area/station/maintenance/port/aft) +"eqU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "eqV" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/turf_decal/bot, @@ -14874,14 +14885,6 @@ }, /turf/open/openspace, /area/station/service/library) -"erQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "esb" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -14982,19 +14985,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/detectives_office/private_investigators_office) -"euA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/closet/crate/hydroponics, -/obj/effect/spawner/random/food_or_drink/plant_produce, -/obj/effect/spawner/random/food_or_drink/seed_flowers, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "euD" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -15162,6 +15152,9 @@ dir = 1 }, /obj/effect/turf_decal/trimline/purple/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, /area/station/science/lab) "exM" = ( @@ -15940,12 +15933,6 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/iron/dark/smooth_large, /area/station/security/lockers) -"eLk" = ( -/obj/structure/table, -/obj/machinery/firealarm/directional/west, -/obj/effect/spawner/random/clothing/gloves, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "eLl" = ( /obj/machinery/door/airlock/command{ name = "Captain's Office" @@ -16049,10 +16036,6 @@ /obj/item/airlock_painter, /turf/open/floor/iron/smooth, /area/station/engineering/main) -"eNm" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "eNx" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 4 @@ -17070,14 +17053,6 @@ /obj/structure/window/reinforced/plasma/spawner/directional/north, /turf/open/space/basic, /area/space/nearstation) -"fdi" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/sign/directions/science/directional/south, -/turf/open/floor/iron, -/area/station/science/lab) "fdl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17615,6 +17590,10 @@ /obj/effect/spawner/random/structure/crate_loot, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"flo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "flD" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron/dark, @@ -17803,14 +17782,6 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/department/science/central) -"foP" = ( -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "foR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -17903,6 +17874,12 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/space_hut) +"fpM" = ( +/obj/structure/table, +/obj/machinery/firealarm/directional/west, +/obj/effect/spawner/random/clothing/gloves, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "fpN" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 1 @@ -18433,9 +18410,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/medical/coldroom) -"fxX" = ( -/turf/closed/wall, -/area/station/service/hydroponics/garden/abandoned) "fxY" = ( /obj/machinery/vending/cigarette, /obj/structure/disposalpipe/segment{ @@ -18652,7 +18626,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/corner{ +/obj/effect/turf_decal/trimline/purple/arrow_ccw{ dir = 8 }, /turf/open/floor/iron, @@ -19382,6 +19356,13 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) +"fMC" = ( +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "fMS" = ( /obj/effect/turf_decal/siding/dark/inner_corner{ dir = 8 @@ -20103,6 +20084,14 @@ }, /turf/open/floor/plating, /area/station/service/kitchen/abandoned) +"fWc" = ( +/obj/structure/closet/secure_closet/personal, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/obj/machinery/status_display/ai/directional/south, +/obj/effect/spawner/random/clothing/backpack, +/turf/open/floor/iron, +/area/station/commons/dorms) "fWt" = ( /obj/effect/turf_decal/trimline/yellow/arrow_ccw{ dir = 4 @@ -20482,12 +20471,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/commons/storage/primary) -"gbv" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/structure/sign/poster/official/work_for_a_future/directional/south, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron, -/area/station/science/research) "gby" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21029,6 +21012,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/command/bridge) +"giM" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) "giT" = ( /obj/machinery/camera/autoname/directional/south, /turf/open/floor/glass, @@ -22178,16 +22168,6 @@ /obj/structure/table/wood, /turf/open/floor/wood, /area/station/command/heads_quarters/cmo) -"gBc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "gBf" = ( /obj/structure/lattice/catwalk, /obj/item/stack/rods, @@ -22414,14 +22394,6 @@ }, /turf/open/floor/carpet, /area/station/maintenance/starboard/lesser) -"gEJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "gEN" = ( /obj/machinery/porta_turret/ai{ dir = 4 @@ -22431,6 +22403,17 @@ }, /turf/open/floor/engine/hull/reinforced/air, /area/station/ai_monitored/turret_protected/ai) +"gFa" = ( +/obj/structure/table/reinforced, +/obj/item/plant_analyzer, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "gFi" = ( /obj/structure/closet/secure_closet/research_director, /obj/item/clothing/head/soft/purple, @@ -22441,6 +22424,12 @@ /obj/structure/closet/emcloset, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"gFm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/closed/wall, +/area/station/service/hydroponics/garden/abandoned) "gFo" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 9 @@ -22905,19 +22894,6 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/space/openspace, /area/space/nearstation) -"gMZ" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -5; - pixel_y = 4 - }, -/obj/item/stamp/head/hop{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/hop) "gNf" = ( /obj/structure/light_construct/directional/east, /obj/effect/mapping_helpers/broken_floor, @@ -23061,19 +23037,6 @@ /obj/machinery/drone_dispenser, /turf/open/floor/iron/dark/smooth_large, /area/station/science/lab) -"gPh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/storage/bag/plants, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "gPu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -23356,6 +23319,18 @@ /obj/effect/spawner/random/maintenance/no_decals, /turf/open/floor/engine/hull, /area/space/nearstation) +"gSS" = ( +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/directions/engineering/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "gSX" = ( /obj/machinery/plumbing/sender, /obj/effect/decal/cleanable/dirt, @@ -23387,6 +23362,14 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/medical/medbay/central) +"gTH" = ( +/obj/structure/table, +/obj/item/reagent_containers/cup/glass/mug{ + pixel_x = -3; + pixel_y = 4 + }, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "gTL" = ( /obj/machinery/door/airlock/public/glass{ name = "Circle Center" @@ -23449,13 +23432,6 @@ /obj/structure/cable, /turf/open/floor/carpet, /area/station/command/corporate_showroom) -"gUR" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "gVi" = ( /obj/structure/window/spawner/directional/west, /turf/open/floor/plating, @@ -24065,6 +24041,15 @@ /obj/effect/turf_decal/trimline/yellow/warning, /turf/open/floor/engine/hull, /area/space/nearstation) +"heb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/banner/blue{ + inspiration_available = 0 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/eighties, +/area/station/maintenance/hallway/abandoned_recreation) "hei" = ( /obj/structure/chair{ dir = 8 @@ -24339,6 +24324,16 @@ }, /turf/open/floor/wood, /area/station/commons/dorms) +"hip" = ( +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) "hiu" = ( /obj/effect/spawner/random/trash/mess, /turf/open/floor/engine/hull/air, @@ -25558,15 +25553,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/central) -"hBj" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/machinery/autolathe, -/obj/structure/sign/poster/official/do_not_question/directional/north, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) "hBu" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{ @@ -26350,6 +26336,13 @@ dir = 4 }, /area/station/tcommsat/server) +"hLN" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/service/hydroponics/garden/abandoned) "hLT" = ( /obj/docking_port/stationary/escape_pod{ dir = 8 @@ -26964,15 +26957,6 @@ }, /turf/open/floor/plating, /area/station/construction/storage_wing) -"hTF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/item/vending_refill/hydroseeds, -/obj/structure/frame/machine/secured, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "hTI" = ( /obj/machinery/light/directional/south, /obj/effect/landmark/firealarm_sanity, @@ -27136,6 +27120,17 @@ dir = 1 }, /area/station/ai_monitored/turret_protected/aisat/foyer) +"hWU" = ( +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "hXc" = ( /obj/effect/turf_decal/plaque{ icon_state = "L3" @@ -27571,6 +27566,9 @@ /obj/effect/turf_decal/siding/purple{ dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, /area/station/science/lab) "idq" = ( @@ -27666,6 +27664,10 @@ }, /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/light/directional/south, +/obj/structure/sign/directions/science/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, /area/station/science/lab) "igc" = ( @@ -27751,14 +27753,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark/textured_large, /area/station/medical/virology) -"ihn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "ihv" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/wood{ @@ -27836,16 +27830,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/eighties, /area/station/maintenance/hallway/abandoned_recreation) -"iiT" = ( -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/obj/machinery/space_heater, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "iiV" = ( /obj/structure/table/wood/poker, /obj/effect/spawner/random/entertainment/cigarette_pack, @@ -27861,14 +27845,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark/textured_large, /area/station/medical/virology) -"iji" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/mug{ - pixel_x = -3; - pixel_y = 4 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "ijl" = ( /obj/structure/cable, /obj/item/restraints/legcuffs/beartrap/prearmed{ @@ -28573,12 +28549,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"itU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/closed/wall, -/area/station/service/hydroponics/garden/abandoned) "itV" = ( /obj/item/stack/sheet/mineral/wood{ pixel_x = -5; @@ -28952,10 +28922,7 @@ /area/station/engineering/atmos/upper) "izU" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/arrow_ccw, /turf/open/floor/iron/sepia, /area/station/hallway/secondary/construction) "izW" = ( @@ -29578,6 +29545,19 @@ dir = 4 }, /area/station/hallway/primary/fore) +"iIs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/biogenerator, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "iIu" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating/airless, @@ -30655,13 +30635,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"iZD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "iZI" = ( /obj/machinery/computer/bank_machine, /obj/machinery/light_switch/directional/west{ @@ -31552,24 +31525,6 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"jmG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/button/door/directional/north{ - id = "hydropony_shutters"; - name = "hydroponics shutters control"; - pixel_x = 10; - pixel_y = 30; - req_access = list("hydroponics") - }, -/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/north, -/obj/structure/sink/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/hydroponics) "jmQ" = ( /obj/effect/spawner/random/trash/grime, /turf/open/floor/plating, @@ -32384,10 +32339,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"jyf" = ( -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/wood, -/area/station/hallway/secondary/service) "jyl" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing, @@ -32486,17 +32437,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/commons/dorms) -"jyZ" = ( -/obj/item/tank/internals/plasma/empty, -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "jzi" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/wood, @@ -32673,7 +32613,7 @@ }, /obj/machinery/light/small/directional/north, /obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/telecomms, +/turf/open/floor/catwalk_floor, /area/station/science/server) "jBt" = ( /obj/effect/landmark/event_spawn, @@ -32853,6 +32793,11 @@ }, /turf/open/openspace, /area/station/maintenance/starboard/lesser) +"jDr" = ( +/obj/item/radio/intercom/directional/north, +/obj/effect/spawner/random/clothing/wardrobe_closet_colored, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "jDx" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -33278,6 +33223,12 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/ai_monitored/turret_protected/aisat_interior) +"jJZ" = ( +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "jKe" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, @@ -33612,11 +33563,6 @@ /obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, /turf/open/floor/wood/large, /area/station/service/library) -"jPB" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "jPC" = ( /obj/effect/turf_decal/siding/dark{ dir = 5 @@ -34314,14 +34260,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) -"kbi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "kbj" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, @@ -34525,15 +34463,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/openspace, /area/station/hallway/primary/starboard) -"kdV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/arrow_ccw{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "keh" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark/textured_large, @@ -34561,6 +34490,13 @@ /obj/effect/turf_decal/siding/white/corner, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) +"kew" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "key" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -34878,11 +34814,6 @@ /obj/structure/sign/poster/ripped/directional/north, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"kjl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "kjF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/junction/yjunction{ @@ -35390,6 +35321,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/security/courtroom) +"kpE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/seed_extractor, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "kpJ" = ( /obj/structure/lattice/catwalk, /obj/machinery/power/tracker, @@ -36408,10 +36347,6 @@ dir = 8 }, /area/station/tcommsat/server) -"kEn" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/service/hydroponics/garden/abandoned) "kEw" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -37570,6 +37505,14 @@ /obj/machinery/suit_storage_unit/engine, /turf/open/floor/iron/dark, /area/station/engineering/storage) +"kYT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "kYU" = ( /obj/machinery/air_sensor/engine_chamber, /turf/open/floor/engine, @@ -38789,16 +38732,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"luD" = ( -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "luI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -41089,18 +41022,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"mcs" = ( -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/directions/engineering/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "mcB" = ( /obj/structure/table/wood, /obj/item/food/grown/poppy{ @@ -41168,13 +41089,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured, /area/station/cargo/warehouse) -"mdn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/banner/red{ - inspiration_available = 0 - }, -/turf/open/floor/eighties, -/area/station/maintenance/hallway/abandoned_recreation) "mdp" = ( /obj/structure/closet, /obj/effect/turf_decal/tile/purple/opposingcorners, @@ -41182,6 +41096,18 @@ /obj/item/mop, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"mdw" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/purple/arrow_ccw{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "mdx" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, @@ -41624,6 +41550,14 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"mju" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "mjB" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -41637,6 +41571,13 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating/airless, /area/station/maintenance/port/aft) +"mkd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/banner/red{ + inspiration_available = 0 + }, +/turf/open/floor/eighties, +/area/station/maintenance/hallway/abandoned_recreation) "mke" = ( /obj/structure/table, /obj/item/binoculars, @@ -41647,6 +41588,13 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/glass, /area/station/commons/fitness/recreation) +"mkv" = ( +/obj/structure/table, +/obj/structure/bedsheetbin/empty{ + pixel_y = 6 + }, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "mkI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42325,6 +42273,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_large, /area/station/security/prison/rec) +"muC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Garden" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "muF" = ( /obj/structure/disposalpipe/segment, /obj/machinery/camera/autoname/directional/north, @@ -44290,10 +44252,6 @@ /obj/structure/railing, /turf/open/openspace, /area/station/engineering/atmos/upper) -"nck" = ( -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/large, -/area/station/hallway/primary/central) "nct" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -44385,6 +44343,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/science/lab) "nec" = ( @@ -44614,15 +44573,6 @@ /obj/effect/mapping_helpers/mail_sorting/service/law_office, /turf/open/floor/iron/large, /area/station/hallway/primary/central) -"nhD" = ( -/obj/structure/table/glass, -/obj/machinery/vending/wallmed/directional/west, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/item/storage/medkit/advanced, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "nhE" = ( /obj/structure/sign/poster/contraband/communist_state/directional/north, /obj/effect/decal/cleanable/crayon{ @@ -44835,6 +44785,13 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/large, /area/station/hallway/primary/central) +"nkZ" = ( +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "nld" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -45625,7 +45582,7 @@ /obj/effect/turf_decal/siding/blue{ dir = 8 }, -/turf/open/floor/iron/dark/telecomms, +/turf/open/floor/catwalk_floor, /area/station/science/server) "nvB" = ( /obj/structure/window/reinforced/spawner/directional/west, @@ -45839,6 +45796,13 @@ /obj/effect/spawner/random/clothing/funny_hats, /turf/open/floor/plating, /area/station/maintenance/port) +"nym" = ( +/obj/structure/table, +/obj/effect/spawner/random/bureaucracy/paper, +/obj/item/pen, +/obj/structure/sign/poster/contraband/missing_gloves/directional/west, +/turf/open/floor/wood, +/area/station/commons/dorms) "nyw" = ( /obj/machinery/light/small/directional/east, /obj/machinery/air_sensor/nitrous_tank, @@ -46122,6 +46086,7 @@ /obj/machinery/firealarm/directional/west{ pixel_y = -3 }, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron, /area/station/science/lab) "nCg" = ( @@ -46180,6 +46145,12 @@ /obj/effect/mapping_helpers/mail_sorting/science/research, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"nCC" = ( +/obj/machinery/light/directional/north, +/obj/machinery/light_switch/directional/north, +/obj/structure/closet/wardrobe/white, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "nCI" = ( /obj/machinery/component_printer, /obj/effect/turf_decal/bot_white, @@ -46567,7 +46538,6 @@ pixel_x = 8; pixel_y = 2 }, -/obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/science/lab) "nIA" = ( @@ -47815,13 +47785,6 @@ }, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) -"oai" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) "oaj" = ( /turf/closed/wall, /area/station/security/medical) @@ -47989,6 +47952,15 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/brig) +"ocT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/sink/kitchen/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "odd" = ( /obj/structure/railing{ dir = 1 @@ -48555,9 +48527,6 @@ /obj/effect/turf_decal/siding/purple/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /turf/open/floor/iron, /area/station/science/lab) "omO" = ( @@ -49690,12 +49659,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/hallway/secondary/entry) -"oEA" = ( -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "oEI" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/cup/glass/mug/britcup{ @@ -49850,10 +49813,8 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/security/office) -"oHh" = ( -/obj/machinery/light/directional/north, -/obj/machinery/light_switch/directional/north, -/obj/structure/closet/wardrobe/white, +"oHs" = ( +/obj/structure/closet/wardrobe/grey, /turf/open/floor/iron/cafeteria, /area/station/commons/locker) "oHu" = ( @@ -50969,13 +50930,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/openspace, /area/station/maintenance/port/aft) -"oXS" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/service/hydroponics/garden/abandoned) "oXT" = ( /obj/effect/turf_decal/stripes/asteroid/corner{ dir = 8 @@ -52405,6 +52359,7 @@ }, /obj/effect/turf_decal/siding/purple, /obj/machinery/camera/autoname/directional/north, +/obj/machinery/light_switch/directional/north, /turf/open/floor/iron, /area/station/science/lab) "puR" = ( @@ -53765,6 +53720,13 @@ }, /turf/open/floor/iron/textured_large, /area/station/medical/virology) +"pOF" = ( +/obj/structure/closet/secure_closet/personal, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/obj/effect/spawner/random/clothing/backpack, +/turf/open/floor/iron, +/area/station/commons/dorms) "pOM" = ( /obj/structure/railing{ dir = 1 @@ -53987,6 +53949,10 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/ce) +"pQh" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/service/hydroponics/garden/abandoned) "pQq" = ( /obj/structure/table, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -54217,15 +54183,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_large, /area/station/security/brig) -"pST" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/soda_cans/cola{ - pixel_x = -4; - pixel_y = 9 - }, -/obj/effect/spawner/random/entertainment/coin, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "pSY" = ( /obj/structure/railing/corner/end{ dir = 8 @@ -54247,13 +54204,6 @@ }, /turf/open/floor/wood/large, /area/station/medical/psychology) -"pTp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/arrow_ccw, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "pTu" = ( /obj/machinery/door/airlock/wood{ name = "Service Hall" @@ -54564,6 +54514,12 @@ /obj/structure/table, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_recreation) +"qau" = ( +/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/structure/sign/poster/official/work_for_a_future/directional/south, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/science/research) "qaI" = ( /obj/structure/table/reinforced, /obj/item/flashlight/lamp, @@ -54738,6 +54694,16 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/eighties, /area/station/maintenance/hallway/abandoned_recreation) +"qeb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/corner, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "qec" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55485,6 +55451,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"qoN" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/lab) "qoX" = ( /obj/machinery/mineral/stacking_machine{ input_dir = 2; @@ -55654,6 +55630,11 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/service/hydroponics) +"qrN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "qrP" = ( /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/dark/textured_large, @@ -55822,17 +55803,6 @@ /obj/effect/spawner/random/structure/shipping_container, /turf/open/floor/iron, /area/station/construction/storage_wing) -"quW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/paper/guides/jobs/hydroponics, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "qvd" = ( /obj/structure/railing{ dir = 9 @@ -56903,22 +56873,14 @@ }, /turf/open/openspace, /area/station/service/library) -"qMa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 +"qMe" = ( +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" }, -/obj/item/hatchet{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/crowbar, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "qMi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -57108,6 +57070,16 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"qPy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "qPB" = ( /obj/structure/mannequin/skeleton, /turf/open/floor/iron/dark/textured_large, @@ -57176,6 +57148,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/command/bridge) +"qQj" = ( +/obj/item/radio/intercom/directional/south, +/obj/structure/closet/crate/trashcart/laundry, +/obj/effect/spawner/random/clothing/costume, +/obj/effect/spawner/random/clothing/backpack, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "qQx" = ( /obj/structure/reagent_dispensers/wall/peppertank/directional/north, /obj/effect/turf_decal/stripes/end, @@ -57828,13 +57807,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/construction) -"rad" = ( -/obj/structure/table, -/obj/effect/spawner/random/bureaucracy/paper, -/obj/item/pen, -/obj/structure/sign/poster/contraband/missing_gloves/directional/west, -/turf/open/floor/wood, -/area/station/commons/dorms) "rah" = ( /obj/structure/rack, /obj/item/reagent_containers/cup/bottle/iron{ @@ -59334,14 +59306,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/sorting) -"rwe" = ( -/obj/structure/closet/secure_closet/personal, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/shoes/winterboots, -/obj/machinery/status_display/ai/directional/south, -/obj/effect/spawner/random/clothing/backpack, -/turf/open/floor/iron, -/area/station/commons/dorms) "rwh" = ( /turf/closed/wall/r_wall, /area/station/security/medical) @@ -59584,6 +59548,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood, /area/station/maintenance/hallway/abandoned_recreation) +"rAs" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/lab) "rAD" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -59925,17 +59893,6 @@ }, /turf/open/floor/wood, /area/station/hallway/secondary/service) -"rFp" = ( -/obj/machinery/vending/wallmed/directional/west{ - pixel_x = 27 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/east, -/turf/open/floor/wood, -/area/station/command/gateway) "rFq" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -60171,6 +60128,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"rIS" = ( +/obj/machinery/wall_healer/directional/west{ + pixel_x = 27 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/east, +/turf/open/floor/wood, +/area/station/command/gateway) "rIU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60227,6 +60195,7 @@ id_tag = "restroom_3"; name = "Toilet Unit" }, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "rJo" = ( @@ -60406,6 +60375,11 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/textured_large, /area/station/security/prison) +"rMe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "rMj" = ( /turf/open/floor/engine/hull/air, /area/station/maintenance/starboard/lesser) @@ -60550,9 +60524,6 @@ /obj/effect/turf_decal/siding/purple{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /turf/open/floor/iron, /area/station/science/lab) "rPn" = ( @@ -60755,14 +60726,6 @@ /obj/effect/turf_decal/tile/brown/fourcorners, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"rRQ" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/siding/purple, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/station/science/lab) "rRW" = ( /obj/item/ammo_casing/spent{ pixel_x = 7; @@ -60791,6 +60754,13 @@ dir = 4 }, /area/station/medical/pharmacy) +"rSu" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/washing_machine, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "rTa" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -61145,13 +61115,6 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology/hallway) -"rYa" = ( -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "rYd" = ( /obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 @@ -61231,11 +61194,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"sax" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "saE" = ( /obj/machinery/door/airlock/public/glass{ name = "Community Center" @@ -61804,6 +61762,17 @@ /obj/machinery/light/blacklight/directional/west, /turf/open/floor/eighties, /area/station/maintenance/hallway/abandoned_recreation) +"shX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/paper/guides/jobs/hydroponics, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "sij" = ( /obj/structure/reflector/double{ dir = 6 @@ -62176,16 +62145,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/textured_large, /area/station/medical/abandoned) -"spm" = ( -/obj/effect/decal/cleanable/glitter{ - color = "ff8080" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "spr" = ( /obj/structure/table, /obj/item/hand_labeler{ @@ -63561,6 +63520,20 @@ }, /turf/open/floor/iron/dark, /area/station/science/cytology) +"sLB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "sLC" = ( /obj/structure/lattice/catwalk, /turf/open/floor/engine/hull/air, @@ -63701,19 +63674,6 @@ }, /turf/open/floor/engine/hull/air, /area/station/medical/medbay/central) -"sOb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/arrow_ccw{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "sOl" = ( /obj/effect/spawner/random/trash/mess, /obj/item/stack/rods/two, @@ -63729,6 +63689,13 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/turret_protected/aisat_interior) +"sOw" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/closet/crate/trashcart/laundry, +/obj/effect/spawner/random/clothing/backpack, +/obj/effect/spawner/random/clothing/backpack, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "sOz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -64063,15 +64030,6 @@ "sTv" = ( /turf/closed/wall, /area/station/security/courtroom) -"sTK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/banner/blue{ - inspiration_available = 0 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/eighties, -/area/station/maintenance/hallway/abandoned_recreation) "sTT" = ( /obj/structure/railing/corner/end/flip{ dir = 4 @@ -64161,26 +64119,17 @@ /obj/machinery/vending/cigarette, /turf/open/floor/iron, /area/station/engineering/lobby) +"sUF" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) "sUM" = ( /obj/effect/turf_decal/box/white{ color = "#EFB341" }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) -"sUR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock{ - name = "Garden" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "sUV" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -64219,6 +64168,7 @@ id_tag = "restroom_2"; name = "Toilet Unit" }, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "sVA" = ( @@ -64638,17 +64588,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"tcv" = ( -/obj/structure/table/reinforced, -/obj/item/plant_analyzer, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "tcw" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 10 @@ -64671,13 +64610,6 @@ /obj/effect/spawner/random/structure/shipping_container, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"tcW" = ( -/obj/structure/closet/secure_closet/personal, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/shoes/winterboots, -/obj/effect/spawner/random/clothing/backpack, -/turf/open/floor/iron, -/area/station/commons/dorms) "tda" = ( /obj/item/pen, /obj/item/pen/blue, @@ -64876,14 +64808,6 @@ /obj/effect/mapping_helpers/mail_sorting/medbay/general, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"tgL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/arrow_ccw, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "tgT" = ( /obj/machinery/holopad, /turf/open/floor/iron/dark, @@ -65407,21 +65331,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/security/lockers) -"toE" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/north, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay"); - c_tag = "Medbay - Lobby" - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "toH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67608,10 +67517,6 @@ "tYh" = ( /turf/open/floor/plating/airless, /area/station/maintenance/space_hut) -"tYi" = ( -/obj/structure/closet/wardrobe/grey, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "tYl" = ( /obj/structure/closet/crate/silvercrate, /obj/machinery/camera/motion{ @@ -68267,6 +68172,9 @@ /obj/effect/turf_decal/siding/purple/corner{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, /area/station/science/lab) "uiH" = ( @@ -69668,19 +69576,6 @@ "uAE" = ( /turf/open/floor/iron/dark, /area/station/security/range) -"uAF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/biogenerator, -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "uAO" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -70099,10 +69994,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"uGp" = ( -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/wood, -/area/station/ai_monitored/command/storage/eva) "uGt" = ( /obj/structure/tank_holder/extinguisher, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -70511,15 +70402,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/science/ordnance/storage) -"uLC" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay"); - c_tag = "Medbay - Upper Morgue" - }, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/dark/textured_large, -/area/station/medical/morgue) "uLL" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -70638,6 +70520,15 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/port) +"uOx" = ( +/obj/structure/table/glass, +/obj/machinery/wall_healer/directional/west, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "uOC" = ( /obj/machinery/vending/wardrobe/hydro_wardrobe, /turf/open/floor/iron/dark/smooth_large, @@ -71186,13 +71077,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/security/detectives_office/private_investigators_office) -"uXW" = ( -/obj/structure/table, -/obj/structure/bedsheetbin/empty{ - pixel_y = 6 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "uXZ" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance/three, @@ -71802,20 +71686,6 @@ /obj/structure/closet/bombcloset/security, /turf/open/floor/iron/dark, /area/station/security/office) -"vhF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "vhJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/red/opposingcorners{ @@ -72265,6 +72135,15 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/wood, /area/station/security/detectives_office) +"voe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/item/vending_refill/hydroseeds, +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "vof" = ( /obj/effect/landmark/carpspawn, /turf/open/space/openspace, @@ -72364,11 +72243,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"vpp" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/spawner/random/clothing/wardrobe_closet_colored, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "vpt" = ( /obj/structure/chair/pew/right{ dir = 4 @@ -72775,6 +72649,22 @@ /obj/structure/light_construct/directional/east, /turf/open/floor/iron, /area/station/maintenance/starboard/central) +"vwa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/item/hatchet{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/crowbar, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "vwb" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -73311,14 +73201,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/service/kitchen/abandoned) -"vEp" = ( -/obj/machinery/vending/wallmed/directional/east, -/obj/machinery/camera/autoname/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/medical) "vEF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -73658,6 +73540,16 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"vKc" = ( +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "vKg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /turf/open/floor/iron/dark/textured, @@ -73713,6 +73605,24 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/commons/locker) +"vKZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/button/door/directional/north{ + id = "hydropony_shutters"; + name = "hydroponics shutters control"; + pixel_x = 10; + pixel_y = 30; + req_access = list("hydroponics") + }, +/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/north, +/obj/structure/sink/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/service/hydroponics) "vLb" = ( /obj/structure/lattice/catwalk, /obj/structure/railing, @@ -75655,13 +75565,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/construction/mining/aux_base) -"wnJ" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "wnO" = ( /turf/open/openspace, /area/station/medical/psychology) @@ -75836,13 +75739,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/wood, /area/station/service/library) -"wqE" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/closet/crate/trashcart/laundry, -/obj/effect/spawner/random/clothing/backpack, -/obj/effect/spawner/random/clothing/backpack, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "wqI" = ( /obj/effect/spawner/random/trash/botanical_waste, /turf/open/floor/plating, @@ -76122,13 +76018,6 @@ /obj/effect/spawner/random/entertainment/dice, /turf/open/floor/wood/large, /area/station/service/library) -"wvm" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "wvw" = ( /obj/machinery/conveyor{ dir = 8; @@ -77306,6 +77195,7 @@ id_tag = "restroom_1"; name = "Toilet Unit" }, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "wOr" = ( @@ -77338,6 +77228,18 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark/textured_large, /area/station/medical/morgue) +"wOO" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/airlock/research{ + name = "R&D's Backdoor" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/lab) "wOR" = ( /obj/machinery/light/small/directional/north, /obj/machinery/status_display/evac/directional/north, @@ -77356,18 +77258,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/storage/tcomms) -"wPb" = ( -/obj/machinery/door/airlock/research{ - name = "R&D's Backdoor" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron, -/area/station/science/lab) "wPf" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/effect/landmark/event_spawn, @@ -77439,6 +77329,30 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"wQw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/cultivator, +/obj/item/reagent_containers/cup/bottle/nutrient/rh{ + pixel_x = 10; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/bottle/nutrient/ez{ + pixel_x = 10; + pixel_y = -4 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/item/reagent_containers/spray/pestspray{ + pixel_x = 10; + pixel_y = -14 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "wQD" = ( /obj/machinery/light/small/directional/east, /obj/item/solar_assembly, @@ -78238,6 +78152,15 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/openspace, /area/station/hallway/primary/port) +"xck" = ( +/obj/machinery/airalarm/directional/east, +/obj/machinery/camera/autoname/directional/east{ + network = list("ss13","medbay"); + c_tag = "Medbay - Upper Morgue" + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/iron/dark/textured_large, +/area/station/medical/morgue) "xcx" = ( /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark/smooth_large, @@ -78438,6 +78361,16 @@ /obj/effect/turf_decal/tile/brown/full, /turf/open/floor/iron/large, /area/station/maintenance/starboard/lesser) +"xfn" = ( +/obj/effect/decal/cleanable/glitter{ + color = "ff8080" + }, +/obj/machinery/space_heater, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "xfq" = ( /obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/tile/yellow/opposingcorners{ @@ -78556,13 +78489,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/service/hydroponics) -"xhT" = ( -/obj/structure/table, -/obj/structure/bedsheetbin{ - pixel_y = 6 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "xhX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -78907,6 +78833,14 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark/smooth_large, /area/station/security/courtroom) +"xot" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/structure/table/glass, +/obj/item/storage/medkit/regular, +/obj/structure/cable, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/medical) "xoF" = ( /obj/structure/railing, /obj/effect/turf_decal/trimline/purple/filled/line, @@ -79186,14 +79120,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/cytology) -"xss" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "xsv" = ( /obj/machinery/light/cold/directional/south, /turf/open/floor/engine, @@ -79613,6 +79539,10 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"xAt" = ( +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/wood, +/area/station/hallway/secondary/service) "xAu" = ( /turf/closed/wall, /area/station/medical/chemistry) @@ -79860,6 +79790,10 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"xDR" = ( +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/large, +/area/station/hallway/primary/central) "xDW" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -80173,13 +80107,24 @@ /obj/effect/spawner/random/structure/grille, /turf/open/space/openspace, /area/space/nearstation) +"xIl" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 4 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/science/lab) "xIp" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 }, /obj/effect/landmark/start/hangover, -/obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/construction) "xIJ" = ( @@ -80515,6 +80460,19 @@ /obj/effect/spawner/random/entertainment, /turf/open/floor/plating, /area/station/maintenance/port) +"xNN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/closet/crate/hydroponics, +/obj/effect/spawner/random/food_or_drink/plant_produce, +/obj/effect/spawner/random/food_or_drink/seed_flowers, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "xNV" = ( /obj/structure/railing{ dir = 1 @@ -80681,6 +80639,19 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/engineering/lobby) +"xRn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/storage/bag/plants, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "xRI" = ( /obj/machinery/conveyor{ dir = 8; @@ -80791,6 +80762,14 @@ /obj/structure/table, /turf/open/floor/iron/dark, /area/station/engineering/storage) +"xSv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden/abandoned) "xSz" = ( /obj/machinery/door/firedoor, /turf/open/floor/engine/hull/air, @@ -81255,6 +81234,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/station/command/heads_quarters/ce) +"xYf" = ( +/obj/structure/table, +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_x = -4; + pixel_y = 9 + }, +/obj/effect/spawner/random/entertainment/coin, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "xYh" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -81278,6 +81266,19 @@ /obj/effect/turf_decal/siding/thinplating/corner, /turf/open/floor/wood/large, /area/station/service/library) +"xYn" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/stamp/head/hop{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/structure/cable, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/hop) "xYy" = ( /obj/machinery/nuclearbomb/selfdestruct, /obj/machinery/light/directional/east, @@ -81305,7 +81306,6 @@ dir = 1 }, /obj/effect/turf_decal/tile/purple/half, -/obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white/textured_half, /area/station/science/robotics) "xZn" = ( @@ -81644,6 +81644,13 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/captain/private) +"yeu" = ( +/obj/structure/table, +/obj/structure/bedsheetbin{ + pixel_y = 6 + }, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "yeA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -81711,15 +81718,6 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"yfu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/sink/kitchen/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "yfv" = ( /obj/structure/table/wood, /obj/item/binoculars{ @@ -81913,16 +81911,6 @@ /obj/structure/chair, /turf/open/floor/iron/dark/smooth_large, /area/station/security/interrogation) -"yiw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden/abandoned) "yiy" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance/two, @@ -107379,7 +107367,7 @@ gPW xRU xOn xAj -jyf +xAt own wik uxl @@ -107630,7 +107618,7 @@ jBd lOd nKj jIX -sTK +heb vYH cFL xAj @@ -109219,7 +109207,7 @@ bFe rPE srD jDx -cAs +ddx ovx tRJ dWj @@ -113051,7 +113039,7 @@ kZo hMd ozk pen -rFp +rIS szz oTK tQI @@ -113069,7 +113057,7 @@ fLr iLm fLr pEO -toE +aVL sGy xeM ujD @@ -113300,7 +113288,7 @@ dDX vuO ugN tGb -gMZ +xYn loc ltm kRk @@ -114067,7 +114055,7 @@ bOk bOk wrI fjt -nck +xDR vuO ilg wmy @@ -115839,7 +115827,7 @@ wVd lBg nhR iol -gUR +eet jMr ibK jqv @@ -116112,10 +116100,10 @@ nyA jph dcE dTL -tYi -pST -eLk -iji +oHs +xYf +fpM +gTH dCm jqo eaw @@ -116369,10 +116357,10 @@ iOE jph heR dTL -vpp +jDr oNp sPC -wqE +sOw dCm rpL lHY @@ -116434,8 +116422,8 @@ xgC ihW pRG qnW -jkr -rRQ +tNP +yfK noJ pgp ntN @@ -116626,10 +116614,10 @@ jph jph dcE dTL -oHh +nCC sjO skC -amk +qQj dCm dCE bLf @@ -116691,13 +116679,13 @@ neB nwd hsx xYS -jkr -qgj +tNP +yfK nIu gal fwp lei -fdi +lmc fAl lGy ajB @@ -116883,10 +116871,10 @@ heR dcE dcE dTL -dJx +rSu uzN oqd -uXW +mkv dCm nZb ayn @@ -116955,9 +116943,9 @@ miO rPd rPd omG -wPb -sOb -kdV +fAl +pcR +uxt jbW qnM wKb @@ -117143,7 +117131,7 @@ dTL uNG jQu oqd -xhT +yeu dCm emL bXg @@ -117206,15 +117194,15 @@ gXG gXG gXG jkr -dYN -ntN +qgj +rAs grd ntN rkW lmc fAl -pcR -pTp +bCx +uxt sQJ wKb wKb @@ -117471,7 +117459,7 @@ gPd qyA fAl pcR -tgL +ajB nLp wKb mWI @@ -117726,9 +117714,9 @@ gal vWv vWv lmc -fAl +tNP mgh -pTp +uxt cOe wKb cpD @@ -117980,11 +117968,11 @@ uGP kxo iCa lbe -idj +xIl idj uix -fAl -wnJ +tNP +pcR izU dxN cWU @@ -118240,9 +118228,9 @@ uZS vMR oof exo -fAl +tNP pcR -pTp +uxt xaz bQe qYi @@ -118499,7 +118487,7 @@ nCI ifV fAl lGy -tgL +ajB xaz bQe iLy @@ -118753,9 +118741,9 @@ ntN bEw rOk uPL -exo -fAl -pcR +qoN +wOO +mdw fAI jpp vQH @@ -119707,7 +119695,7 @@ pRO mcY tFy qNn -rad +nym clF pRO ntw @@ -120484,7 +120472,7 @@ pRO tqQ ccZ qMN -tcW +pOF dCm tMZ idM @@ -120741,7 +120729,7 @@ pRO gnw qAd vfe -rwe +fWc dCm cNO idM @@ -120998,7 +120986,7 @@ cVN cVN dux ezT -tcW +pOF dCm ade rdl @@ -121255,7 +121243,7 @@ olU olU laK ffR -tcW +pOF dCm cNO dCm @@ -122092,7 +122080,7 @@ hFi hFi hFi hFi -kjl +rMe gnT hFi hFi @@ -122570,7 +122558,7 @@ iYq caE dUe oDH -wvm +bEJ iKT oDH oDH @@ -122626,8 +122614,8 @@ cMb lue vnp hFi -quW -ihn +shX +mju vvc exj qZZ @@ -122879,12 +122867,12 @@ aLd aLd cWU cWU -fxX -fxX -kEn -kEn -sUR -fxX +aSW +aSW +pQh +pQh +muC +aSW uVg uVg dEB @@ -123086,7 +123074,7 @@ qgr xiy lmt qPj -hBj +caQ gNy qgI lMT @@ -123136,12 +123124,12 @@ mTH cWU cWU msr -fxX -euA -xss -yfu -vhF -cyY +aSW +xNN +xSv +ocT +sLB +ckE uVg dEk xLQ @@ -123393,12 +123381,12 @@ jmh qdA wOx vcm -kEn -hTF -sax -gEJ -gBc -cyY +pQh +voe +qrN +dLb +qPy +ckE uVg viT bwI @@ -123650,12 +123638,12 @@ jmh dlt wKl rNT -kEn -dMK -sax -erQ -yiw -cyY +pQh +eqU +qrN +kYT +qeb +ckE uVg wZW xNr @@ -123907,12 +123895,12 @@ jmh qdA wOx tVR -kEn -kbi -eNm -dOC -uAF -fxX +pQh +kpE +flo +aQx +iIs +aSW uVg uVg pWZ @@ -124164,12 +124152,12 @@ jmh rOn iXD kiu -itU -tcv -cJi -qMa -gPh -fxX +gFm +gFa +wQw +vwa +xRn +aSW jjG uVg ucl @@ -124422,10 +124410,10 @@ qdA xZP aKk wKb -kEn -kEn -kEn -oXS +pQh +pQh +pQh +hLN wKb wKb uVg @@ -124686,7 +124674,7 @@ koi boq wKb jCK -aVv +hWU moI lRp wKb @@ -124939,10 +124927,10 @@ eEv eEv eEv wKb -iiT +xfn aWb tCE -mcs +gSS wKb wKb wKb @@ -125198,8 +125186,8 @@ wKb wKb wKb rlR -luD -jyZ +hip +aUe wKb hhN pss @@ -125452,7 +125440,7 @@ hZf wKb eEv eEv -iZD +kew wUu sfL pwQ @@ -125707,13 +125695,13 @@ vlc mgY mgY wKb -dRo +nkZ wep eEv ebQ diA xqo -spm +vKc wKb lmL jyA @@ -125964,8 +125952,8 @@ wKb yfj nuZ wKb -rYa -oEA +fMC +jJZ trK msK ina @@ -126225,7 +126213,7 @@ wKb wKb wKb wKb -foP +qMe ilV bvG wKb @@ -126403,7 +126391,7 @@ xSq irJ grE rTW -oai +giM dPD dPD sNK @@ -127762,7 +127750,7 @@ jmh wKb dGu gdG -jPB +sUF jcQ jcQ jcQ @@ -167552,7 +167540,7 @@ tlL jhO muJ qFA -epX +xot kUq uJi kUq @@ -168064,7 +168052,7 @@ nlO iGy ohb rwh -vEp +eas sFc aCE pIt @@ -170599,7 +170587,7 @@ eIJ eIJ nKj ipm -mdn +mkd lOd gPW wKg @@ -173952,7 +173940,7 @@ tnb hRX hRX hRX -jmG +vKZ xyF pME rjE @@ -176807,7 +176795,7 @@ iPl dfn fbC kza -uLC +xck qPB eHu yly @@ -178846,7 +178834,7 @@ uxq izh iGI xCI -nhD +uOx qVO qVO sLY @@ -180633,7 +180621,7 @@ dUb dUb dUb drX -uGp +bvY vzx xvN iJc @@ -182475,7 +182463,7 @@ cwP xWT dTc vsK -gbv +qau soU soU soU diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 503c883a062..6115bb04679 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -1631,6 +1631,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/toilet/locker) "asv" = ( @@ -5730,7 +5731,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/vomit/old, /obj/structure/toilet{ - dir = 8 + dir = 1 }, /obj/machinery/light/small/directional/south, /obj/effect/landmark/start/hangover, @@ -7388,6 +7389,10 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron, /area/station/commons/lounge) +"bNS" = ( +/obj/machinery/duct, +/turf/closed/wall, +/area/station/medical/break_room) "bNT" = ( /obj/effect/turf_decal/trimline/neutral/warning{ dir = 8 @@ -7553,6 +7558,22 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"bQy" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/wiki/cytology{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/obj/item/seeds/soya{ + pixel_x = 11; + pixel_y = -2 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron, +/area/station/science/xenobiology) "bQz" = ( /obj/item/kirbyplants/random, /obj/machinery/newscaster/directional/south, @@ -9691,15 +9712,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/atmos/hfr_room) -"cpE" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/cup/bottle/morphine, -/obj/item/reagent_containers/syringe, -/obj/machinery/status_display/evac/directional/east, -/obj/machinery/vending/wallmed/directional/north, -/obj/effect/turf_decal/siding/dark_red, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) "cpG" = ( /obj/structure/sign/poster/contraband/kudzu/directional/west, /obj/machinery/light/small/directional/west, @@ -11461,13 +11473,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/plating, /area/station/commons/toilet/locker) -"cNX" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "cOb" = ( /obj/machinery/duct, /obj/effect/decal/cleanable/dirt, @@ -13940,6 +13945,12 @@ /obj/effect/mapping_helpers/mail_sorting/science/xenobiology, /turf/open/floor/iron, /area/station/science/xenobiology) +"duR" = ( +/obj/structure/bed/medical/emergency, +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "duV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14173,12 +14184,6 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/iron/dark, /area/station/service/theater) -"dxo" = ( -/obj/structure/bed/medical/emergency, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "dxr" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -16026,6 +16031,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/library) +"dWH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster/directional/south, +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/turf/open/floor/iron, +/area/station/cargo/storage) "dWO" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -16038,6 +16053,17 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"dWU" = ( +/mob/living/simple_animal/bot/mulebot, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + location = "QM #4" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/cargo/storage) "dXd" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch" @@ -16833,6 +16859,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"eib" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "eif" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 @@ -17729,6 +17763,23 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"euG" = ( +/obj/structure/table/glass, +/obj/item/storage/medkit/regular, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -15; + pixel_y = 2 + }, +/obj/item/reagent_containers/cup/bottle/multiver, +/obj/item/reagent_containers/syringe, +/obj/structure/sign/poster/official/cleanliness/directional/east, +/obj/machinery/wall_healer/directional/north, +/obj/effect/turf_decal/siding/dark_red, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/medical) "euK" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -19016,6 +19067,15 @@ }, /turf/open/floor/iron, /area/station/commons/toilet/locker) +"eLa" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/cup/bottle/morphine, +/obj/item/reagent_containers/syringe, +/obj/machinery/status_display/evac/directional/east, +/obj/machinery/wall_healer/directional/north, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) "eLb" = ( /obj/machinery/air_sensor/plasma_tank, /turf/open/floor/engine/plasma, @@ -19663,6 +19723,14 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/cargo/storage) +"eSZ" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/wall_healer/directional/west, +/obj/machinery/light/small/broken/directional/west, +/turf/open/floor/plating, +/area/station/medical/abandoned) "eTv" = ( /obj/structure/closet/crate/trashcart, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21267,14 +21335,6 @@ /obj/structure/chair/office, /turf/open/floor/iron/grimy, /area/station/tcommsat/computer) -"foc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "foh" = ( /obj/machinery/atmospherics/components/binary/volume_pump{ name = "Ports to Distro" @@ -22462,11 +22522,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) -"fDV" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) "fEd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/warning/vacuum/directional/west, @@ -24268,14 +24323,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"gab" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "gae" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -24994,13 +25041,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"gic" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) "gii" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -26692,23 +26732,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"gBA" = ( -/obj/structure/table/glass, -/obj/item/storage/medkit/regular, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -15; - pixel_y = 2 - }, -/obj/item/reagent_containers/cup/bottle/multiver, -/obj/item/reagent_containers/syringe, -/obj/structure/sign/poster/official/cleanliness/directional/east, -/obj/machinery/vending/wallmed/directional/north, -/obj/effect/turf_decal/siding/dark_red, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/medical) "gBB" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -27188,7 +27211,7 @@ "gGT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/toilet{ - dir = 8 + dir = 4 }, /obj/machinery/newscaster/directional/west, /obj/machinery/button/door/directional/south{ @@ -27536,16 +27559,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/explab) -"gLz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/turf/open/floor/iron, -/area/station/cargo/storage) "gLH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, @@ -30572,15 +30585,6 @@ /obj/effect/turf_decal/bot/left, /turf/open/floor/iron/kitchen_coldroom/dark, /area/station/service/kitchen/coldroom) -"hBL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/vending/wallmed/directional/west, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) "hBT" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -33516,6 +33520,19 @@ }, /turf/open/floor/iron, /area/station/security/courtroom) +"inY" = ( +/obj/structure/filingcabinet/white, +/obj/item/toy/figure/psychologist{ + pixel_x = -1; + pixel_y = 15 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/station/medical/psychology) "ioe" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -34106,17 +34123,6 @@ "ivA" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/captain/private) -"ivB" = ( -/mob/living/simple_animal/bot/mulebot, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=4"; - location = "QM #4" - }, -/obj/effect/turf_decal/delivery, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) "ivH" = ( /obj/machinery/light/small/directional/south, /obj/structure/sign/warning/radiation/directional/south, @@ -34591,6 +34597,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark/textured, /area/station/science/robotics/lab) +"iCJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/item/radio/intercom/directional/south, +/obj/machinery/firealarm/directional/west{ + pixel_y = -30 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "iCO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35972,14 +35988,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/carpet/royalblack, /area/station/service/chapel/office) -"iVl" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/vending/wallmed/directional/west, -/obj/machinery/light/small/broken/directional/west, -/turf/open/floor/plating, -/area/station/medical/abandoned) "iVo" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/bot, @@ -39400,22 +39408,6 @@ }, /turf/open/floor/iron, /area/station/commons/storage/tools) -"jJC" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/cytology{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 1 - }, -/obj/item/seeds/soya{ - pixel_x = 11; - pixel_y = -2 - }, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron, -/area/station/science/xenobiology) "jJD" = ( /obj/machinery/bookbinder, /obj/effect/turf_decal/bot_white, @@ -42815,6 +42807,19 @@ /obj/machinery/hydroponics/soil/rich, /turf/open/floor/grass, /area/station/service/hydroponics/garden) +"kBv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "kBz" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -44952,6 +44957,11 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"lfy" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit) "lfz" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -45422,14 +45432,6 @@ }, /turf/closed/wall/r_wall, /area/station/maintenance/starboard/aft) -"lky" = ( -/obj/structure/filingcabinet/white, -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/sorting) "lkF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -46584,11 +46586,6 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology) -"lzh" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) "lzo" = ( /obj/machinery/atmospherics/components/binary/pump, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -47545,15 +47542,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) -"lJM" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron, -/area/station/cargo/office) "lJN" = ( /obj/machinery/requests_console/directional/west{ department = "Research Director's Desk"; @@ -48746,13 +48734,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/maintenance/port/fore) -"mbA" = ( -/obj/structure/bed/medical/emergency, -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "mbR" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -50505,6 +50486,10 @@ /obj/item/paper_bin, /turf/open/floor/carpet, /area/station/command/meeting_room/council) +"mxX" = ( +/obj/machinery/duct, +/turf/closed/wall, +/area/station/science/breakroom) "mxY" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/north, @@ -50919,14 +50904,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"mDl" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/item/storage/medkit/advanced, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "mDo" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53521,6 +53498,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"nlT" = ( +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "nma" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -53913,6 +53898,15 @@ /obj/effect/mapping_helpers/airalarm/tlv_no_checks, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"nsa" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron, +/area/station/cargo/office) "nsd" = ( /obj/structure/table, /obj/item/rcl/pre_loaded, @@ -55230,6 +55224,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"nIG" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Departures Lounge - Fore Starboard"; + dir = 6; + name = "departures camera" + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/secondary/exit/departure_lounge) "nIQ" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/structure/mirror/directional/east, @@ -56991,17 +56995,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) -"ohH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/south, -/obj/machinery/light/directional/south, -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/turf/open/floor/iron, -/area/station/cargo/storage) "ohI" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -57628,17 +57621,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/station/command/gateway) -"ooL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/engineering/lobby) "ooQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -64624,19 +64606,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/secondary/exit) -"pYr" = ( -/obj/structure/filingcabinet/white, -/obj/item/toy/figure/psychologist{ - pixel_x = -1; - pixel_y = 15 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/station/medical/psychology) "pYD" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/north, @@ -64977,6 +64946,14 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"qcq" = ( +/obj/structure/filingcabinet/white, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/sorting) "qcu" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod 3"; @@ -66301,6 +66278,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/toilet/locker) "qvi" = ( @@ -67327,16 +67305,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"qHo" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Departures Lounge - Fore Starboard"; - dir = 6; - name = "departures camera" - }, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron/dark/corner, -/area/station/hallway/secondary/exit/departure_lounge) "qHs" = ( /obj/structure/statue/sandstone/venus{ dir = 1; @@ -67603,7 +67571,7 @@ "qKz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/toilet{ - dir = 8 + dir = 1 }, /obj/machinery/light/small/directional/south, /obj/effect/turf_decal/bot, @@ -68137,6 +68105,17 @@ }, /turf/open/floor/iron, /area/station/security/processing) +"qRv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/status_display/ai/directional/south, +/obj/machinery/light/directional/south, +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/turf/open/floor/iron, +/area/station/cargo/storage) "qRx" = ( /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, @@ -68289,6 +68268,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/processing) +"qTi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "qTs" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -68906,6 +68894,13 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/dark/side, /area/station/engineering/lobby) +"reh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) "rem" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/sign/poster/random/directional/west, @@ -69844,6 +69839,10 @@ }, /turf/open/floor/iron/grimy, /area/station/service/library) +"roq" = ( +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/white, +/area/station/science/research) "rov" = ( /turf/closed/wall/r_wall, /area/station/engineering/lobby) @@ -69895,6 +69894,16 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"rpz" = ( +/obj/structure/closet/boxinggloves, +/obj/effect/landmark/start/hangover/closet, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) "rpZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -70569,13 +70578,6 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/smooth_large, /area/station/service/chapel/funeral) -"ryU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) "ryY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70993,6 +70995,11 @@ /obj/item/reagent_containers/cup/watering_can, /turf/open/floor/iron, /area/station/service/kitchen) +"rES" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "rEU" = ( /obj/structure/disposalpipe/segment, /obj/effect/spawner/random/structure/steam_vent, @@ -71101,6 +71108,15 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/hallway) +"rGI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/wall_healer/directional/west, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit) "rGU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -79313,16 +79329,6 @@ dir = 8 }, /area/station/service/kitchen/abandoned) -"tEW" = ( -/obj/structure/closet/boxinggloves, -/obj/effect/landmark/start/hangover/closet, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) "tEX" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -79971,10 +79977,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/crew_quarters/bar) -"tNg" = ( -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/white, -/area/station/science/research) "tNq" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -81540,6 +81542,17 @@ /obj/effect/spawner/random/engineering/canister, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"ufO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/engineering/lobby) "ufR" = ( /turf/closed/wall/r_wall, /area/station/security/warden) @@ -82943,6 +82956,13 @@ /obj/effect/mapping_helpers/airlock/access/all/command/captain, /turf/open/floor/wood, /area/station/command/heads_quarters/captain) +"uxv" = ( +/obj/structure/bed/medical/emergency, +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/directional/south, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "uxA" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -83574,6 +83594,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/port) +"uEG" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "uEJ" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -85278,24 +85305,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"uZQ" = ( -/obj/structure/rack, -/obj/item/stack/medical/gauze, -/obj/item/stack/medical/suture, -/obj/item/stack/medical/mesh, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/syringe/multiver, -/obj/machinery/camera/directional/west{ - c_tag = "Bridge - Gateway Atrium"; - name = "command camera" - }, -/obj/effect/turf_decal/bot, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/command/gateway) "uZV" = ( /obj/effect/turf_decal/plaque{ icon_state = "L6" @@ -85678,6 +85687,24 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/iron, /area/station/science/research/abandoned) +"vfu" = ( +/obj/structure/rack, +/obj/item/stack/medical/gauze, +/obj/item/stack/medical/suture, +/obj/item/stack/medical/mesh, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/syringe/multiver, +/obj/machinery/camera/directional/west{ + c_tag = "Bridge - Gateway Atrium"; + name = "command camera" + }, +/obj/effect/turf_decal/bot, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/command/gateway) "vfw" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -87110,15 +87137,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) -"vyr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "vys" = ( /obj/structure/flora/bush/jungle/c/style_random, /turf/open/misc/grass, @@ -89345,6 +89363,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"wdr" = ( +/obj/item/radio/intercom/directional/east, +/obj/machinery/newscaster/directional/south, +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted, +/turf/open/floor/iron, +/area/station/cargo/office) "wdu" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -89559,13 +89584,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"wfK" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/newscaster/directional/south, -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/turf/open/floor/iron, -/area/station/cargo/office) "wfP" = ( /obj/machinery/computer/exodrone_control_console, /obj/effect/turf_decal/stripes/line{ @@ -89605,6 +89623,14 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"wgl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "wgn" = ( /obj/structure/closet/masks, /obj/effect/turf_decal/bot, @@ -91296,19 +91322,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/chapel) -"wAR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "wAT" = ( /obj/effect/spawner/random/structure/crate, /obj/structure/disposalpipe/segment, @@ -122127,7 +122140,7 @@ uCa aTz ygM fzF -ooL +ufO sys rCE uWj @@ -122677,7 +122690,7 @@ rZw iQF eRr pTC -jJC +bQy fpt uOF sPk @@ -126753,7 +126766,7 @@ laP xfq kEg gxL -vyr +qTi nAb vxZ fix @@ -131588,7 +131601,7 @@ cGM tMN qMS sQn -gic +uEG sjt aaY sAY @@ -131914,7 +131927,7 @@ uyB qSd kqM tXO -lzh +rES khb khb khb @@ -132205,7 +132218,7 @@ fDF fDF peU cHO -aAj +mxX qQM jYk vsV @@ -133485,7 +133498,7 @@ fMZ bXG xdN sYK -tNg +roq qmd qbg xfU @@ -134202,7 +134215,7 @@ qYo qYo qYo diL -gab +nlT drj bog kZd @@ -135743,7 +135756,7 @@ xms aaa wyH fIx -mDl +eib cQv drj bog @@ -135969,7 +135982,7 @@ kVP gyW ryg mGF -ryU +reh kVP iIO rrr @@ -137779,7 +137792,7 @@ qAV xSx xGC qAV -lJM +nsa mzb lkm mfK @@ -138357,7 +138370,7 @@ svO cSD mgE sKd -cNX +iCJ uNY iKg lke @@ -138852,14 +138865,14 @@ vIQ vIQ vIQ vIQ -wAR +kBv pBH ksK liC mrK oVI cng -uZQ +vfu bhP bmt ksK @@ -139385,7 +139398,7 @@ gnb dnj eiw fNm -mbA +uxv uNY keH jtz @@ -139642,7 +139655,7 @@ dOc iso rMf rmo -dxo +duR uNY eQC gQl @@ -140096,7 +140109,7 @@ lMK vwg wRf vKl -wfK +wdr hoC yfI wAl @@ -140176,7 +140189,7 @@ biv nPz oDE tUG -pYr +inY dki hIy dki @@ -140355,7 +140368,7 @@ toS hoC hoC hoC -lky +qcq erZ jwt rcI @@ -140442,7 +140455,7 @@ cky dki lvZ jQB -lvZ +bNS lvZ pkg lvZ @@ -141108,7 +141121,7 @@ wHa fEo dIx tuZ -ivB +dWU mIA dgU nZK @@ -141450,7 +141463,7 @@ slE rHI dju dju -hBL +rGI vvh dju oXR @@ -141637,7 +141650,7 @@ qUG qUG fEm oSv -gLz +dWH xhW eAu fOz @@ -141894,7 +141907,7 @@ dbx olY gDv cNf -ohH +qRv xhW xhW nPo @@ -141972,7 +141985,7 @@ tIV tIV tIV mhW -fDV +lfy pYp tIV tIV @@ -142247,7 +142260,7 @@ bMh nyb jdg pPN -qHo +nIG hQF hQF hQF @@ -147317,7 +147330,7 @@ mVO nHs lkS nHs -foc +wgl whm sQL huv @@ -148571,7 +148584,7 @@ mSe pMa caH mSe -cpE +eLa xqc eEi vtt @@ -149160,7 +149173,7 @@ okj uKK iuA wHQ -iVl +eSZ rhw eDJ qMf @@ -150893,7 +150906,7 @@ iCo krO guZ lET -gBA +euG fQo aNh pWT @@ -151458,7 +151471,7 @@ cau mJx vNm wgn -tEW +rpz wvL qNK ujd diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index f97e3c5571b..fad31a747e3 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -1782,19 +1782,6 @@ dir = 1 }, /area/station/medical/morgue) -"axm" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/east, -/obj/machinery/light_switch/directional/east{ - pixel_x = 23 - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) "axr" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -3731,12 +3718,6 @@ dir = 1 }, /area/mine/eva/lower) -"aZG" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "aZH" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/junction{ dir = 8 @@ -4004,6 +3985,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/xenobiology) +"bcL" = ( +/obj/machinery/door/airlock{ + id_tag = "Toilet1"; + name = "Unit 1" + }, +/obj/machinery/duct, +/turf/open/floor/iron/textured, +/area/station/commons/toilet) "bcN" = ( /turf/closed/wall/r_wall, /area/station/hallway/primary/central) @@ -4106,10 +4095,6 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/wood, /area/station/service/library) -"bdW" = ( -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron, -/area/station/cargo/storage) "bea" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating/icemoon, @@ -5623,6 +5608,16 @@ dir = 5 }, /area/station/maintenance/port/aft) +"byh" = ( +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/camera/directional/south{ + c_tag = "Starboard Primary Hallway Center" + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "byl" = ( /obj/machinery/conveyor{ dir = 4; @@ -6229,6 +6224,14 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/station/command/bridge) +"bGm" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/bridge) "bGn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6594,12 +6597,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) -"bLt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron/white/textured, -/area/station/security/medical) "bLz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11639,6 +11636,12 @@ "dfB" = ( /turf/open/floor/iron/white/corner, /area/station/hallway/primary/starboard) +"dfF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "dfQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /obj/effect/spawner/structure/window/reinforced, @@ -14032,6 +14035,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"dON" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/machinery/camera/directional/east{ + c_tag = "Engineering Lobby" + }, +/obj/structure/window/spawner/directional/north, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) "dOY" = ( /obj/effect/spawner/random/vending/snackvend, /obj/effect/turf_decal/tile/red/half, @@ -14608,15 +14620,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"dYd" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/sorting) "dYj" = ( /obj/machinery/airalarm/directional/north, /obj/structure/cable, @@ -16121,6 +16124,10 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"eug" = ( +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "euq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17873,6 +17880,14 @@ /obj/effect/decal/cleanable/blood/gibs/robot_debris, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/bitrunning/den) +"eVo" = ( +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/white/corner, +/area/station/hallway/secondary/exit/departure_lounge) "eVp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -17884,6 +17899,13 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"eVz" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "eVC" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 9 @@ -19089,6 +19111,18 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/atmos/mix) +"fmD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/commons/fitness) "fmU" = ( /obj/structure/railing/corner{ dir = 4 @@ -19771,10 +19805,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) -"fyq" = ( -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "fyr" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ @@ -20717,14 +20747,6 @@ /obj/effect/spawner/random/entertainment/money_small, /turf/open/floor/wood/large, /area/station/commons/lounge) -"fME" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "fNa" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset, @@ -26639,6 +26661,19 @@ /obj/structure/sign/xenobio_guide/directional/north, /turf/open/openspace, /area/station/science/xenobiology) +"hzi" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/east, +/obj/machinery/light_switch/directional/east{ + pixel_x = 23 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "hzo" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28178,6 +28213,10 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) +"hUv" = ( +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/white, +/area/station/science/research) "hUx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29696,6 +29735,11 @@ /obj/effect/mapping_helpers/airlock/access/all/security/detective, /turf/open/floor/iron/grimy, /area/station/security/detectives_office) +"irs" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "iry" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -29918,6 +29962,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) +"iuz" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/command/bridge) "iuD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31756,13 +31806,6 @@ /obj/structure/sign/warning/radiation/rad_area/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"iYe" = ( -/obj/item/kirbyplants/random, -/obj/machinery/vending/wallmed/directional/west, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "iYq" = ( /obj/structure/railing/corner{ dir = 4 @@ -32131,6 +32174,15 @@ }, /turf/open/floor/iron, /area/station/security/brig/upper) +"jcw" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "jcA" = ( /obj/machinery/light/small/directional/north, /obj/structure/sign/departments/cargo/directional/north, @@ -35252,6 +35304,15 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/storage/mining) +"jYG" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/sorting) "jYH" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 9 @@ -35482,15 +35543,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/maintenance/fore) -"kbS" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "kcc" = ( /obj/machinery/camera/directional/west{ c_tag = "Security - Infirmary" @@ -38687,6 +38739,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) +"kWc" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "kWh" = ( /obj/machinery/holopad/secure, /turf/open/floor/iron/dark/smooth_large, @@ -39882,6 +39940,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/mechbay) +"lmN" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "lmQ" = ( /obj/effect/turf_decal/tile/bar{ dir = 4 @@ -43649,13 +43714,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"msG" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet2"; - name = "Unit 2" - }, -/turf/open/floor/iron/textured, -/area/station/commons/toilet) "msN" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/closed/wall/r_wall, @@ -44008,6 +44066,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/cmo) +"myy" = ( +/obj/structure/table/reinforced, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron, +/area/station/command/bridge) "myE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44231,13 +44294,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/engine, /area/station/science/explab) -"mBm" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet1"; - name = "Unit 1" - }, -/turf/open/floor/iron/textured, -/area/station/commons/toilet) "mBr" = ( /obj/item/toy/plush/lizard_plushie{ name = "Wines-And-Dines"; @@ -46750,6 +46806,14 @@ /obj/machinery/holopad, /turf/open/floor/carpet, /area/station/command/heads_quarters/hop) +"nnW" = ( +/obj/machinery/door/airlock{ + id_tag = "Toilet2"; + name = "Unit 2" + }, +/obj/machinery/duct, +/turf/open/floor/iron/textured, +/area/station/commons/toilet) "nof" = ( /obj/machinery/newscaster/directional/east, /turf/open/floor/stone, @@ -47808,6 +47872,11 @@ /obj/structure/rack, /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen) +"nBu" = ( +/obj/effect/landmark/start/hangover, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "nBE" = ( /obj/machinery/light/small/directional/east, /obj/effect/turf_decal/weather/snow/corner{ @@ -49878,6 +49947,17 @@ /obj/effect/turf_decal/tile/blue/full, /turf/open/floor/iron/large, /area/station/medical/treatment_center) +"oeX" = ( +/obj/machinery/medical_kiosk, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/sign/departments/medbay/alt/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = 26 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "ofc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/pink/visible, /turf/open/floor/plating, @@ -50008,14 +50088,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"ohb" = ( -/obj/machinery/medical_kiosk, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/sign/departments/medbay/alt/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "ohp" = ( /turf/open/floor/glass, /area/station/maintenance/department/medical/central) @@ -52731,13 +52803,6 @@ "oQY" = ( /turf/open/floor/iron/white, /area/station/medical/virology) -"oRb" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "oRk" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -59118,11 +59183,6 @@ /obj/effect/mapping_helpers/airlock/access/all/service/janitor, /turf/open/floor/iron, /area/station/service/janitor) -"qGd" = ( -/obj/structure/table/reinforced, -/obj/item/storage/medkit/advanced, -/turf/open/floor/iron, -/area/station/command/bridge) "qGg" = ( /obj/structure/rack, /obj/item/pickaxe, @@ -60160,6 +60220,13 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics/garden) +"qTp" = ( +/obj/item/kirbyplants/random, +/obj/machinery/wall_healer/directional/west, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "qTs" = ( /turf/open/floor/iron/showroomfloor, /area/station/security/prison/mess) @@ -61864,13 +61931,6 @@ /obj/effect/spawner/structure/window/hollow/reinforced/end, /turf/open/floor/plating, /area/mine/eva) -"rsa" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) "rsf" = ( /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, @@ -64052,10 +64112,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) -"rZw" = ( -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/white, -/area/station/science/research) "rZE" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8 @@ -68593,12 +68649,6 @@ /obj/structure/rack, /turf/open/floor/plating, /area/mine/eva/lower) -"tnk" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/command/bridge) "tnp" = ( /obj/structure/table, /obj/item/folder/blue{ @@ -68739,6 +68789,13 @@ /obj/machinery/light/directional/south, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"tpp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "tpG" = ( /obj/machinery/door/firedoor, /obj/effect/landmark/navigate_destination, @@ -72934,6 +72991,10 @@ "uBi" = ( /turf/closed/wall, /area/station/ai_monitored/turret_protected/ai) +"uBm" = ( +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/cargo/storage) "uBs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -74213,6 +74274,10 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"uVw" = ( +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "uVC" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -76280,14 +76345,6 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/iron/recharge_floor, /area/station/science/robotics/mechbay) -"vAd" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/white/corner, -/area/station/hallway/secondary/exit/departure_lounge) "vAm" = ( /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -79301,15 +79358,6 @@ /obj/structure/noticeboard/directional/north, /turf/open/floor/iron/dark, /area/station/service/chapel) -"wyN" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/machinery/camera/directional/east{ - c_tag = "Engineering Lobby" - }, -/obj/structure/window/spawner/directional/north, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) "wyO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -82452,18 +82500,6 @@ /obj/machinery/light/blacklight/directional/east, /turf/open/floor/wood, /area/station/service/library) -"xsW" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/machinery/duct, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/commons/fitness) "xtc" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 @@ -83580,14 +83616,6 @@ /obj/machinery/status_display/evac/directional/south, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"xHm" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/command/bridge) "xHq" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Entrance" @@ -84519,15 +84547,6 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/wood, /area/station/command/meeting_room) -"xVv" = ( -/obj/structure/cable, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/purple, -/obj/machinery/camera/directional/south{ - c_tag = "Starboard Primary Hallway Center" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "xVB" = ( /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix{ dir = 8 @@ -84612,10 +84631,6 @@ /obj/item/plate, /turf/open/floor/iron, /area/station/security/prison/mess) -"xWG" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "xWM" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -187194,7 +187209,7 @@ ugs ttb bjU bOO -axm +hzi wZr kwe gkT @@ -233165,7 +233180,7 @@ nrM oCO kxs lsi -fyq +uVw qnj qnj qnj @@ -237562,7 +237577,7 @@ iaF iaF ajw ajw -bdW +uBm pBE pBE uYc @@ -239072,7 +239087,7 @@ sDl hDU dAQ fVU -iYe +qTp hDU gpp aJA @@ -240375,7 +240390,7 @@ ozH bZg gst hYG -dYd +jYG dOw dOw yhe @@ -245285,7 +245300,7 @@ pvg nQW vsz fdy -oRb +eVz wHX nbi qzu @@ -245749,7 +245764,7 @@ gtB tny dLo ctj -aZG +kWc wYZ aKI peq @@ -246789,11 +246804,11 @@ nfk utR tmQ qnV -qGd +myy cEv lhv iGH -xHm +bGm ybv ybv ybv @@ -247008,7 +247023,7 @@ xmO deY bUx kdT -bLt +dfF syN cAC mWM @@ -247564,7 +247579,7 @@ qWZ ydk tGF iUT -tnk +iuz lpM rCD uEm @@ -248125,7 +248140,7 @@ gJN ckX iub inn -wyN +dON vfU pdV gyR @@ -248357,7 +248372,7 @@ frN mhQ pzb iuv -rsa +tpp cvS ewi cvS @@ -248838,7 +248853,7 @@ pBs eYF sNj fKR -hsB +eug uja ise iuv @@ -249095,7 +249110,7 @@ pBs uja uja uja -hsB +eug uja wJk iuv @@ -249351,8 +249366,8 @@ oiz pBs uja kDz -mBm -twU +bcL +nBu uja uPT poL @@ -249609,7 +249624,7 @@ kqP uja uja uja -hsB +eug uja ehq kOq @@ -249865,8 +249880,8 @@ aJi eCT uja oUO -msG -xWG +nnW +irs uja kyL hNU @@ -250624,7 +250639,7 @@ ugA hNp tFI eHb -xsW +fmD bdp nmH tiI @@ -253482,7 +253497,7 @@ qbG onP jyp hgh -kbS +jcw xxg ehU uau @@ -254767,7 +254782,7 @@ nOj vwO gnT hgh -ohb +oeX mTS obu mjI @@ -255022,7 +255037,7 @@ cpY lkr lso vwO -fME +lmN nKa dqO icA @@ -258106,7 +258121,7 @@ kKL kdF qGV hUx -xVv +byh sZF sZF sZF @@ -262500,7 +262515,7 @@ via aYJ lAw aYJ -rZw +hUv wib eLr hAm @@ -265560,7 +265575,7 @@ xBU iVU iFX qRr -vAd +eVo omh wDr elw diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 6ed4d714f67..a4894f556a4 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -118,12 +118,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet, /area/station/service/library) -"acG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) "acU" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -207,14 +201,14 @@ }, /turf/open/floor/iron, /area/station/engineering/main) -"aeA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"aez" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/machinery/duct, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) +/turf/open/floor/iron/dark/textured, +/area/station/medical/cryo) "afj" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -503,6 +497,22 @@ /obj/machinery/vending/drugs, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) +"ajK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white/smooth_half, +/area/station/medical/cryo) "aks" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral{ @@ -584,15 +594,6 @@ }, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain/private) -"alp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/cable, -/obj/structure/sign/eyechart/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/cryo) "alu" = ( /obj/effect/turf_decal/bot, /obj/effect/spawner/random/structure/crate, @@ -809,15 +810,6 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) -"aoH" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/contraband/random/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "apg" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, @@ -936,6 +928,19 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"ark" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "art" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1079,16 +1084,6 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) -"auO" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/cargo/storage) "ava" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/item/storage/box/lights/mixed, @@ -1223,6 +1218,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/maintenance/port/aft) +"axK" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "axO" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -1402,6 +1407,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/command/gateway) +"aAQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "aAS" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -1622,14 +1637,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"aEs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "aEv" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/cleanable/dirt, @@ -1642,6 +1649,18 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/construction/storage_wing) +"aEN" = ( +/obj/item/folder/white{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/structure/table/glass, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "aEW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -1666,6 +1685,10 @@ /obj/effect/spawner/random/bureaucracy/paper, /turf/open/floor/wood, /area/station/commons/dorms) +"aFz" = ( +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "aFI" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -1715,15 +1738,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark, /area/station/security/office) -"aGr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "aGD" = ( /obj/structure/closet/crate/coffin, /obj/machinery/door/window/left/directional/east{ @@ -1917,6 +1931,20 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/main) +"aJm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/spawner/random/maintenance/three, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) +"aJn" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "aJv" = ( /obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, @@ -2132,14 +2160,6 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/dark, /area/station/command/bridge) -"aMH" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "aMW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2421,12 +2441,6 @@ /obj/item/pen, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"aRD" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/commons/toilet/auxiliary) "aRI" = ( /turf/open/floor/circuit/green, /area/station/science/robotics/mechbay) @@ -2687,6 +2701,25 @@ "aXa" = ( /turf/closed/wall, /area/station/security/prison/mess) +"aXE" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Service Maintenance" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "service-passthrough" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "aXF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed, @@ -2886,25 +2919,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"bam" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door_buttons/airlock_controller{ - idExterior = "virology_airlock_exterior"; - idInterior = "virology_airlock_interior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Console"; - pixel_x = 24; - pixel_y = -24; - req_access = list("virology") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "bar" = ( /obj/structure/table, /obj/item/reagent_containers/cup/beaker{ @@ -2987,6 +3001,12 @@ }, /turf/open/floor/iron, /area/station/engineering/break_room) +"bbt" = ( +/obj/structure/girder, +/obj/effect/spawner/random/structure/grille, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "bbT" = ( /obj/structure/closet/crate, /obj/item/stack/cable_coil, @@ -3069,6 +3089,15 @@ /obj/effect/turf_decal/siding, /turf/open/floor/iron, /area/station/science/lab) +"bdy" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/surgery/theatre) "bdE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -3152,6 +3181,14 @@ }, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) +"bfg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/surgery/aft) "bfj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3289,13 +3326,6 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) -"bhh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/janitor) "bhl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance/three, @@ -3620,6 +3650,19 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/white, /area/station/medical/office) +"bns" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Prison Cafeteria" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) "bnx" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -3762,11 +3805,6 @@ dir = 4 }, /area/station/service/chapel) -"bpg" = ( -/obj/structure/sign/warning/hot_temp/directional/south, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "bpq" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -3824,13 +3862,6 @@ /obj/structure/sign/poster/contraband/random/directional/west, /turf/open/floor/wood, /area/station/service/theater) -"bpZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "bqg" = ( /obj/structure/cable, /obj/structure/sign/poster/official/random/directional/east, @@ -3854,6 +3885,19 @@ /obj/item/cigarette/pipe, /turf/open/floor/wood, /area/station/commons/lounge) +"bqJ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/cytology) "bqX" = ( /turf/closed/wall/r_wall, /area/station/medical/chemistry) @@ -3966,12 +4010,42 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/service/theater) +"bsE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4 + }, +/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "bsZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"btn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "btx" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -4154,6 +4228,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) +"bwi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "bwr" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -4174,19 +4253,6 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/plating/airless, /area/space/nearstation) -"bwJ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "bwN" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron, @@ -4216,6 +4282,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/locker) +"bxq" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "bxr" = ( /obj/structure/sign/warning/electric_shock/directional/east, /turf/open/space/basic, @@ -4354,13 +4431,6 @@ }, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) -"bzQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/hydroponics) "bzV" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -4415,11 +4485,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"bAU" = ( -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "bAV" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -4486,6 +4551,27 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/robotics/lab) +"bCh" = ( +/obj/structure/toilet{ + pixel_y = 8; + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/newscaster/directional/south, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/west{ + id = "Toilet1"; + name = "Lock Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/effect/spawner/random/trash/graffiti{ + pixel_x = -32; + spawn_loot_chance = 50 + }, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "bCo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, @@ -4510,6 +4596,12 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"bCE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/maintenance/port/aft) "bCM" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -4723,14 +4815,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron, /area/station/cargo/warehouse) -"bGy" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/machinery/light/cold/directional/north, -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/iron/white, -/area/station/medical/virology) "bGC" = ( /turf/closed/wall, /area/station/hallway/primary/central) @@ -4907,16 +4991,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"bJu" = ( -/obj/structure/sign/poster/official/cleanliness/directional/west, -/obj/structure/sink/directional/south, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 1 - }, -/obj/structure/mirror/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) "bJG" = ( /obj/machinery/modular_computer/preset/id{ dir = 4 @@ -5305,6 +5379,13 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/security/brig) +"bRG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/commons/toilet/auxiliary) "bRH" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -5332,14 +5413,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"bRX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) "bSb" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -5519,11 +5592,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/dark, /area/station/command/bridge) -"bVw" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/station/maintenance/fore) "bVx" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -5538,6 +5606,36 @@ /obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron/white, /area/station/security/prison/mess) +"bVK" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + id_tag = "virology_airlock_interior"; + name = "Virology Interior Airlock" + }, +/obj/machinery/door_buttons/access_button{ + idDoor = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = 8; + pixel_y = -24; + req_access = list("virology") + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "bWe" = ( /obj/structure/table/glass, /obj/structure/reagent_dispensers/wall/virusfood/directional/west, @@ -5570,20 +5668,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) -"bWy" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "bWM" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/tile/blue, @@ -5856,11 +5940,6 @@ "cbz" = ( /turf/closed/wall, /area/station/cargo/storage) -"cbT" = ( -/obj/structure/urinal/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "ccc" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -5935,19 +6014,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"cep" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "ces" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/processor/slime, @@ -5999,6 +6065,15 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/hallway/primary/central) +"cfc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "cfe" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=8-Central-to-Aft"; @@ -6091,15 +6166,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/medical/break_room) -"chB" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "chH" = ( /obj/structure/chair/stool/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6307,14 +6373,6 @@ "clQ" = ( /turf/closed/wall, /area/station/command/teleporter) -"clY" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "cml" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -6338,6 +6396,11 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) +"cmE" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "cmH" = ( /obj/item/bodypart/leg/left, /turf/open/floor/plating/airless, @@ -6392,6 +6455,16 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) +"cnJ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/cargo/storage) "cnK" = ( /turf/closed/wall, /area/station/engineering/main) @@ -6626,6 +6699,14 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/entry) +"crl" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/item/radio/intercom/prison/directional/west, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "crr" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -6643,6 +6724,14 @@ }, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms) +"csb" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "csn" = ( /obj/effect/turf_decal/bot_white/right, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -6755,6 +6844,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) +"cue" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "cuh" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall, @@ -8025,13 +8124,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"cRD" = ( -/obj/item/storage/bag/trash, -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/security/prison/safe) "cRU" = ( /obj/structure/bed, /obj/item/bedsheet/captain, @@ -8100,14 +8192,6 @@ }, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"cSS" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "cTj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8161,6 +8245,15 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"cUf" = ( +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "cUk" = ( /obj/effect/spawner/random/vending/snackvend, /obj/structure/disposalpipe/segment{ @@ -8185,14 +8278,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/wood, /area/station/commons/dorms) -"cUC" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/cigbutt/roach, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "cUH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -8347,6 +8432,11 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/science/robotics/mechbay) +"cXs" = ( +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/prison) "cXw" = ( /obj/machinery/holopad, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -8663,6 +8753,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"ddK" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "ddO" = ( /obj/effect/turf_decal/trimline/green/filled/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8706,15 +8807,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, /area/station/command/bridge) -"dez" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "deD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8775,11 +8867,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/service/theater) -"deY" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) "dfa" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -9060,13 +9147,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"diu" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "diC" = ( /obj/machinery/door/airlock/maintenance{ name = "Atmospherics Maintenance" @@ -9214,11 +9294,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port) -"dmd" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) "dme" = ( /obj/effect/turf_decal/arrows{ dir = 1 @@ -9284,12 +9359,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"doj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "dox" = ( /obj/structure/rack, /obj/item/screwdriver{ @@ -9705,14 +9774,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"duV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/trash/soap{ - spawn_scatter_radius = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) "duW" = ( /obj/machinery/computer/security, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9731,10 +9792,6 @@ /obj/machinery/recharge_station, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"dvk" = ( -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/plating, -/area/station/maintenance/port) "dvn" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -10042,16 +10099,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"dDf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "dDo" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, @@ -10151,28 +10198,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"dEQ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door_buttons/airlock_controller{ - idExterior = "xeno_airlock_exterior"; - idInterior = "xeno_airlock_interior"; - idSelf = "xeno_airlock_control"; - name = "Access Console"; - pixel_x = -25; - pixel_y = -25; - req_access = list("xenobiology") - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/cytology) "dEV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -10260,6 +10285,16 @@ /obj/effect/mapping_helpers/airlock/access/all/command/gateway, /turf/open/floor/iron, /area/station/command/gateway) +"dGv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/surgery/theatre) "dGD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -10474,6 +10509,11 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"dKO" = ( +/obj/structure/urinal/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "dKY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -10642,6 +10682,16 @@ }, /turf/open/floor/iron, /area/station/security/courtroom) +"dMX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "dMY" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue/half/contrasted, @@ -10662,6 +10712,22 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"dNC" = ( +/obj/machinery/light/small/dim/directional/west, +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/security/prison/safe) +"dNS" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "dNX" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -10759,6 +10825,13 @@ /obj/effect/turf_decal/stripes/red/line, /turf/open/floor/engine, /area/station/science/cytology) +"dPJ" = ( +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "dPL" = ( /obj/structure/filingcabinet/security{ pixel_x = 4 @@ -10963,6 +11036,11 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) +"dSp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/engineering/atmospherics_portable, +/turf/open/floor/plating, +/area/station/maintenance/port) "dSt" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ @@ -11006,12 +11084,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/maintenance/port/aft) -"dSS" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "dTi" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -11127,17 +11199,6 @@ }, /turf/open/floor/plating, /area/station/engineering/main) -"dVk" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "dVm" = ( /obj/effect/landmark/start/cook, /obj/machinery/duct, @@ -11658,15 +11719,6 @@ "edu" = ( /turf/closed/wall/r_wall, /area/station/maintenance/solars/starboard/aft) -"edz" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Surgery C Maintenance" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/aft/greater) "edC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12316,6 +12368,18 @@ }, /turf/open/floor/carpet, /area/station/command/bridge) +"enf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "eni" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ @@ -12501,15 +12565,6 @@ /obj/structure/cable, /turf/open/space/basic, /area/station/solars/port/fore) -"eqh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "eqn" = ( /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -12616,19 +12671,6 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/cargo/lobby) -"erW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) "esd" = ( /obj/item/reagent_containers/cup/glass/drinkingglass{ pixel_x = 4; @@ -13157,15 +13199,6 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) -"eBX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "eCg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -13814,13 +13847,6 @@ /obj/machinery/vending/wardrobe/coroner_wardrobe, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"eNA" = ( -/obj/effect/spawner/random/entertainment/arcade, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/delivery, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) "eNR" = ( /turf/closed/wall, /area/station/ai_monitored/aisat/exterior) @@ -13880,12 +13906,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron, /area/station/security/brig) -"eOG" = ( -/obj/structure/girder, -/obj/effect/spawner/random/structure/grille, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "eOJ" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -13920,20 +13940,17 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/science/robotics/mechbay) -"ePB" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "viro-passthrough" +"ePA" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/button/door/directional/south{ + id = "FitnessShower"; + name = "Lock Control"; + normaldoorcontrol = 1; + specialfunctions = 4 }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, -/turf/open/floor/plating, -/area/station/medical/medbay/central) +/turf/open/floor/iron/freezer, +/area/station/commons/fitness/recreation) "ePN" = ( /obj/structure/chair{ dir = 8 @@ -13944,14 +13961,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"ePS" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "ePT" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -14063,16 +14072,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) -"eRJ" = ( -/obj/machinery/door/airlock/hatch{ - name = "Xenobiology Maintenance" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "eRR" = ( /obj/structure/table, /obj/item/screwdriver{ @@ -14132,6 +14131,16 @@ }, /turf/open/floor/wood/large, /area/station/service/theater) +"eSR" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "eTg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14147,6 +14156,20 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"eTs" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "eTt" = ( /obj/structure/cable, /obj/structure/table/wood/fancy/black, @@ -14186,13 +14209,6 @@ }, /turf/open/floor/iron, /area/station/engineering/main) -"eUc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "eUe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ @@ -14278,6 +14294,14 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"eVU" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "eVX" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -14534,13 +14558,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"eZO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/contraband/random/directional/north, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "eZR" = ( /obj/structure/displaycase/labcage, /turf/open/floor/engine, @@ -14833,6 +14850,23 @@ initial_gas_mix = "TEMP=2.7" }, /area/space/nearstation) +"ffS" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/virology/glass{ + name = "Virology Lab" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "ffU" = ( /obj/effect/turf_decal/siding/purple, /obj/machinery/camera/directional/south{ @@ -14844,14 +14878,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"ffZ" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/hangover, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/commons/toilet/auxiliary) "fgl" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -14864,13 +14890,6 @@ /mob/living/basic/goose/vomit, /turf/open/floor/wood, /area/station/maintenance/port/aft) -"fgr" = ( -/obj/structure/chair/stool/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/event_spawn, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "fgu" = ( /obj/machinery/light/directional/south, /obj/effect/spawner/random/vending/colavend, @@ -14959,6 +14978,14 @@ /obj/effect/spawner/random/maintenance/three, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"fhA" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "fhB" = ( /obj/machinery/holopad, /obj/structure/cable, @@ -15082,16 +15109,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"fiY" = ( -/obj/machinery/door/airlock{ - name = "Hydroponics Backroom" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "fjb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15146,15 +15163,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) -"fkb" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) "fkd" = ( /obj/structure/table/wood, /obj/item/paper_bin{ @@ -15169,6 +15177,18 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/research) +"fkk" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/trimline/purple, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "fkl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -15201,20 +15221,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"fkK" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Primary Treatment Centre" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "fkP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/airalarm/directional/west, @@ -15279,22 +15285,6 @@ }, /turf/open/floor/wood, /area/station/service/library) -"fly" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "viro-passthrough" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/medical/medbay/central) "flB" = ( /obj/machinery/computer/holodeck{ dir = 4 @@ -15680,6 +15670,19 @@ dir = 8 }, /area/station/service/chapel/office) +"frs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology/hallway) "frt" = ( /obj/structure/rack, /obj/item/gun/energy/ionrifle, @@ -15787,11 +15790,6 @@ /obj/structure/sign/warning/pods, /turf/closed/wall, /area/station/commons/locker) -"ftS" = ( -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "fuc" = ( /obj/structure/frame/machine{ anchored = 1 @@ -15897,6 +15895,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"fxT" = ( +/obj/machinery/door/airlock/wood{ + doorClose = 'sound/effects/doorcreaky.ogg'; + doorOpen = 'sound/effects/doorcreaky.ogg'; + name = "The Gobetting Barmaid" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "fxW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/yellow/filled/line, @@ -16013,6 +16022,17 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron, /area/station/security/checkpoint/engineering) +"fAo" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/unres, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "fAt" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -16256,6 +16276,17 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) +"fFq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "fFu" = ( /obj/machinery/door/airlock/maintenance{ name = "Storage Room" @@ -16363,6 +16394,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"fGP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) "fGR" = ( /obj/machinery/camera/directional/east{ c_tag = "Atmospherics Tank - N2" @@ -16378,6 +16416,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) +"fGW" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "fHd" = ( /obj/machinery/power/shieldwallgen, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -16833,14 +16881,6 @@ /obj/item/food/snowcones/clown, /turf/open/floor/fake_snow, /area/station/maintenance/port/aft) -"fRh" = ( -/obj/machinery/door/window/left/directional/south{ - name = "Permabrig Kitchen" - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) "fRl" = ( /obj/structure/table, /obj/item/storage/crayons, @@ -16861,6 +16901,14 @@ }, /turf/open/floor/iron, /area/station/command/teleporter) +"fRG" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/commons/toilet/auxiliary) "fRS" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -16906,14 +16954,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"fSS" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "fSY" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -17670,12 +17710,6 @@ }, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) -"gir" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/light/small/directional/west, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/commons/toilet/auxiliary) "giw" = ( /obj/structure/sign/warning/docking/directional/north, /turf/open/space/basic, @@ -17709,6 +17743,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/commons/lounge) +"gjt" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/firealarm_sanity, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "gjv" = ( /obj/machinery/door/window/left/directional/west{ name = "Maximum Security Test Chamber"; @@ -17787,13 +17832,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"gkV" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, -/obj/structure/light_construct/small/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/aft/greater) "gle" = ( /obj/structure/table/glass, /obj/structure/disposalpipe/segment{ @@ -18079,6 +18117,21 @@ /obj/structure/chair/wood/wings, /turf/open/floor/carpet, /area/station/service/theater) +"gpv" = ( +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Custodial Closet" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/service/janitor, +/obj/effect/landmark/navigate_destination/janitor, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "gpB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, @@ -18290,6 +18343,14 @@ "gtb" = ( /turf/open/floor/iron/white, /area/station/medical/pharmacy) +"gtk" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/airalarm/directional/west, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "gtm" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18303,12 +18364,16 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"gtp" = ( -/obj/structure/cable, +"gtH" = ( +/obj/machinery/door/airlock{ + name = "Prison Showers" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/security/prison/shower) "gtR" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/green{ @@ -18335,20 +18400,28 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) +"gub" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "guo" = ( /obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"guA" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 +"guq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) +/turf/open/floor/plating, +/area/station/maintenance/port) "guC" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -18366,6 +18439,21 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) +"guI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/reagent_containers/cup/bucket{ + pixel_x = -6; + pixel_y = 27 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/service/janitor) "guL" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -18641,15 +18729,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/command/corporate_showroom) -"gzk" = ( -/obj/machinery/shower/directional/south, -/obj/structure/curtain, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/obj/machinery/door/window/left/directional/south{ - name = "Shower" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/fitness/recreation) "gzm" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; @@ -18729,20 +18808,26 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) +"gAH" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/floor, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "gAI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"gAS" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/sink/kitchen/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "gAT" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/closed/wall/r_wall, @@ -18787,6 +18872,26 @@ "gBD" = ( /turf/closed/wall/r_wall, /area/station/command/teleporter) +"gBK" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/newscaster/directional/east, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/south{ + id = "Toilet4"; + name = "Lock Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/effect/spawner/random/trash/graffiti{ + pixel_y = -32; + spawn_loot_chance = 50 + }, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "gBY" = ( /obj/structure/closet/emcloset, /obj/machinery/light/small/directional/west, @@ -18859,32 +18964,11 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos) -"gDt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery/aft) "gDv" = ( /obj/item/kirbyplants, /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central) -"gDB" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/virology/glass{ - name = "Containment Cells" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "gDH" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -18964,6 +19048,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/warehouse) +"gEF" = ( +/obj/structure/rack, +/obj/item/clothing/gloves/color/fyellow, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "gEG" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/science/maintenance, @@ -19154,6 +19244,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"gHK" = ( +/obj/effect/spawner/random/entertainment/arcade, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/delivery, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "gHY" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -19292,22 +19389,6 @@ /obj/machinery/power/smes, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) -"gJR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "gJV" = ( /obj/machinery/light/small/directional/south, /obj/effect/turf_decal/tile/purple, @@ -19604,13 +19685,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/engine, /area/station/science/xenobiology) -"gOL" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "gOO" = ( /obj/effect/decal/cleanable/shreds, /turf/open/floor/plating, @@ -19674,6 +19748,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain/private) +"gPY" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "gQa" = ( /obj/effect/turf_decal/siding/thinplating_new/corner, /obj/effect/turf_decal/trimline/brown/filled/corner, @@ -19762,6 +19848,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/fore) +"gTn" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "gTo" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -19981,6 +20073,14 @@ /obj/structure/bed/medical/emergency, /turf/open/floor/iron/white, /area/station/security/medical) +"gXd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/service/janitor) "gXe" = ( /obj/structure/mirror/directional/west, /obj/item/lipstick/black, @@ -20184,6 +20284,12 @@ /obj/item/pen/invisible, /turf/open/floor/engine/cult, /area/station/service/library) +"haE" = ( +/obj/structure/mirror/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/commons/toilet/auxiliary) "haP" = ( /obj/structure/chair{ dir = 1 @@ -20555,12 +20661,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) -"hiv" = ( -/obj/structure/kitchenspike_frame, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "hiy" = ( /obj/machinery/igniter/incinerator_atmos, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, @@ -20638,21 +20738,6 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"hjz" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2 - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/mail_sorting/service/janitor_closet, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "hjG" = ( /obj/machinery/door/airlock/maintenance{ name = "Morgue Maintenance" @@ -20822,15 +20907,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"hlG" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "hlN" = ( /obj/structure/frame/machine{ anchored = 1 @@ -20871,6 +20947,14 @@ }, /turf/open/floor/iron, /area/station/security/brig) +"hmy" = ( +/obj/machinery/door/window/left/directional/south{ + name = "Permabrig Kitchen" + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) "hnn" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ dir = 4 @@ -20920,14 +21004,6 @@ /obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"hol" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "hor" = ( /obj/machinery/door/airlock/maintenance{ name = "Warehouse Maintenance" @@ -21008,13 +21084,6 @@ }, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"hpS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "hqb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/burnt_floor, @@ -21043,13 +21112,6 @@ /obj/machinery/telecomms/bus/preset_four, /turf/open/floor/circuit/telecomms/mainframe, /area/station/tcommsat/server) -"hqG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "hqL" = ( /obj/machinery/light_switch/directional/east, /obj/machinery/shower/directional/west{ @@ -21459,6 +21521,31 @@ /obj/machinery/status_display/evac/directional/south, /turf/open/floor/iron, /area/station/service/hydroponics) +"hxz" = ( +/obj/item/reagent_containers/spray/plantbgone{ + pixel_y = 3 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 13; + pixel_y = 5 + }, +/obj/item/watertank, +/obj/item/grenade/chem_grenade/antiweed, +/obj/structure/table/glass, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/sign/poster/official/random/directional/south, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/service/hydroponics) "hxB" = ( /obj/item/kirbyplants/organic/plant21, /turf/open/floor/iron/grimy, @@ -21647,6 +21734,14 @@ /obj/structure/table, /turf/open/floor/iron, /area/station/security/prison/visit) +"hAN" = ( +/obj/structure/cable, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "hAW" = ( /obj/machinery/camera/directional/south{ c_tag = "Research Director's Office - Observation Cage"; @@ -21688,6 +21783,12 @@ }, /turf/open/floor/iron/white, /area/station/command/heads_quarters/rd) +"hBC" = ( +/obj/structure/kitchenspike_frame, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "hBD" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/airlock_pump{ @@ -21765,6 +21866,13 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"hCo" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/white, +/area/station/science/research) "hCt" = ( /obj/structure/chair/office/light{ dir = 8 @@ -21943,15 +22051,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"hGR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) "hHd" = ( /obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21961,21 +22060,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"hHh" = ( -/obj/structure/cable, -/obj/machinery/camera/directional/east{ - c_tag = "Xenobiology Lab - Central West"; - network = list("ss13","rd","xeno") - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/button/door/directional/east{ - id = "XenoPens"; - name = "Xenobiology Shutters"; - req_access = list("xenobiology") - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "hHt" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/dark/visible{ dir = 4 @@ -22021,6 +22105,17 @@ }, /turf/open/floor/iron, /area/station/cargo/lobby) +"hIx" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/box/white{ + color = "#52B4E9" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/medical_doctor, +/obj/effect/landmark/event_spawn, +/obj/machinery/duct, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/surgery/aft) "hIJ" = ( /obj/structure/cable, /obj/machinery/chem_heater/withbuffer, @@ -22035,14 +22130,6 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/iron, /area/station/security/office) -"hIT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "hIW" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/effect/decal/cleanable/blood/oil/slippery, @@ -22105,14 +22192,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/tcommsat/server) -"hJM" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "hJO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ @@ -22347,6 +22426,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"hOR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/trash/soap{ + spawn_scatter_radius = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/security/prison/shower) "hPk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -22628,6 +22715,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"hSP" = ( +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "hSQ" = ( /obj/structure/bodycontainer/morgue/beeper_off{ dir = 8 @@ -22773,26 +22864,6 @@ /obj/effect/landmark/navigate_destination, /turf/open/floor/iron/white, /area/station/medical/virology) -"hVX" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/newscaster/directional/south, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/start/hangover, -/obj/machinery/button/door/directional/west{ - id = "Toilet2"; - name = "Lock Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32; - spawn_loot_chance = 50 - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "hVY" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22846,17 +22917,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/research) -"hXm" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "hXn" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 9 @@ -22876,14 +22936,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"hXE" = ( -/obj/structure/table, -/obj/item/toy/plush/slimeplushie{ - name = "Nanners" - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "hXJ" = ( /obj/structure/closet/secure_closet/security/sec, /obj/structure/cable, @@ -22916,13 +22968,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/warehouse) -"hYp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) "hYr" = ( /obj/machinery/holopad, /obj/structure/cable, @@ -23063,14 +23108,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/morgue) -"hZM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/mob/living/basic/lizard/wags_his_tail, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/service/janitor) "hZO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -23179,6 +23216,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"ibW" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) "ibX" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -23289,13 +23334,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/prison) -"ien" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/white, -/area/station/science/research) "iep" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -23343,15 +23381,6 @@ }, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/pumproom) -"ieN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "ieV" = ( /turf/closed/wall/r_wall, /area/station/security/holding_cell) @@ -23405,27 +23434,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"ifS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"igb" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "igh" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -23600,13 +23608,6 @@ }, /turf/open/floor/carpet, /area/station/command/heads_quarters/hop) -"iiH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "iiL" = ( /obj/machinery/air_sensor/mix_tank, /turf/open/floor/engine/vacuum, @@ -23798,19 +23799,6 @@ /obj/structure/window/spawner/directional/south, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"ilw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "ilx" = ( /obj/structure/closet/emcloset, /obj/effect/landmark/start/hangover/closet, @@ -24243,12 +24231,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/construction/storage_wing) -"isG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) "isI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -24320,6 +24302,17 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/research) +"itW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "itY" = ( /obj/machinery/door/poddoor/preopen{ id = "Engineering"; @@ -24346,6 +24339,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"iuB" = ( +/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "iva" = ( /obj/machinery/door/airlock/maintenance{ name = "Security Maintenance" @@ -24561,6 +24559,25 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"iyC" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door_buttons/airlock_controller{ + idExterior = "virology_airlock_exterior"; + idInterior = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Console"; + pixel_x = 24; + pixel_y = -24; + req_access = list("virology") + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "iyV" = ( /obj/structure/disposalpipe/segment, /obj/machinery/navbeacon{ @@ -24666,6 +24683,10 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/wood/large, /area/station/command/heads_quarters/qm) +"izJ" = ( +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "izZ" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 @@ -24748,14 +24769,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) -"iAL" = ( -/obj/effect/landmark/start/botanist, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/hydroponics) "iAN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -24856,6 +24869,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) +"iCX" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "iDe" = ( /obj/structure/table, /obj/item/reagent_containers/cup/glass/drinkingglass, @@ -25007,11 +25029,6 @@ }, /turf/open/floor/iron, /area/station/security/office) -"iGn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "iGq" = ( /obj/structure/lattice, /obj/item/broken_bottle, @@ -25082,6 +25099,14 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/engine, /area/station/science/xenobiology) +"iHO" = ( +/obj/machinery/door/airlock{ + id_tag = "Toilet2"; + name = "Unit 2" + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "iId" = ( /obj/machinery/conveyor{ id = "mining" @@ -25386,6 +25411,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"iMQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/mob/living/basic/lizard/wags_his_tail, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/service/janitor) "iMR" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -25414,11 +25447,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating/airless, /area/space/nearstation) -"iNj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) +"iNo" = ( +/obj/structure/filingcabinet/white, +/obj/machinery/camera/directional/south{ + c_tag = "Medbay Psychology Office"; + network = list("ss13","medbay") + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/parquet, +/area/station/medical/psychology) "iNB" = ( /obj/machinery/firealarm/directional/east, /obj/structure/table/glass, @@ -25483,16 +25520,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/white, /area/station/medical/virology) -"iOy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock{ - id_tag = "AuxShower"; - name = "Showers" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/commons/toilet/auxiliary) "iOD" = ( /obj/machinery/atmospherics/components/binary/tank_compressor{ dir = 8 @@ -25658,15 +25685,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/commons/dorms) -"iQD" = ( -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/contraband/random/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "iQF" = ( /obj/machinery/door/poddoor/shutters{ id = "supplybridge" @@ -25683,16 +25701,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) -"iQM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "iQP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -25713,6 +25721,20 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/white, /area/station/science/research) +"iRf" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"iRg" = ( +/obj/structure/chair/stool/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/event_spawn, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "iRh" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -25738,26 +25760,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"iRw" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/engineering_guide{ - pixel_x = -2 - }, -/obj/item/trash/can{ - pixel_x = -8 - }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/engineering/break_room) "iRy" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, @@ -25843,6 +25845,17 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"iTH" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "iTO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -25906,6 +25919,14 @@ "iUv" = ( /turf/closed/wall/r_wall, /area/station/security/prison) +"iUJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "iVi" = ( /obj/machinery/door/airlock{ id_tag = "Cabin6"; @@ -26280,6 +26301,10 @@ /obj/effect/decal/cleanable/blood/oil/slippery, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"jaM" = ( +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/maintenance/port) "jaO" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 6 @@ -26310,18 +26335,6 @@ }, /turf/open/floor/engine, /area/station/science/cytology) -"jbf" = ( -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "jbg" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -26455,14 +26468,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark/telecomms, /area/station/science/server) -"jdY" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Storage Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "jdZ" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -26760,6 +26765,21 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology) +"jjm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/holopad, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/cytology) "jjn" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -26906,15 +26926,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) -"jlF" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "jlJ" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -26928,6 +26939,11 @@ "jlU" = ( /turf/closed/wall/r_wall, /area/station/science/xenobiology) +"jlY" = ( +/obj/structure/urinal/directional/north, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "jmc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -26945,13 +26961,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) -"jmo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "jmq" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -27236,6 +27245,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"jrp" = ( +/obj/structure/cable, +/obj/effect/spawner/random/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "jrI" = ( /obj/machinery/door/poddoor/massdriver_trash, /obj/machinery/atmos_shield_gen/active{ @@ -27313,6 +27331,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) +"jsq" = ( +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/structure/light_construct/small/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/aft/greater) "jsr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27632,16 +27657,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"jxn" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "jxv" = ( /obj/structure/table/wood, /obj/machinery/fax{ @@ -27651,6 +27666,19 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/wood, /area/station/command/heads_quarters/captain/private) +"jxH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "jxM" = ( /obj/item/radio/intercom/directional/west{ pixel_y = -10 @@ -27778,6 +27806,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"jzw" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "jzD" = ( /obj/machinery/holopad/secure, /turf/open/floor/iron/dark, @@ -28086,15 +28120,6 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) -"jFT" = ( -/obj/structure/filingcabinet/white, -/obj/machinery/camera/directional/south{ - c_tag = "Medbay Psychology Office"; - network = list("ss13","medbay") - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) "jFZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -28184,6 +28209,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/port) +"jGG" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/box/white{ + color = "#52B4E9" + }, +/obj/machinery/duct, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/treatment_center) "jGN" = ( /obj/machinery/computer/station_alert/station_only{ dir = 1 @@ -28484,17 +28517,6 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/hop) -"jLS" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "jMb" = ( /obj/structure/railing{ dir = 10 @@ -28551,17 +28573,6 @@ }, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/storage/gas) -"jMW" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "jMY" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ @@ -28783,13 +28794,6 @@ /obj/effect/mapping_helpers/airlock/access/any/command/general, /turf/open/floor/iron/dark, /area/station/command/bridge) -"jQT" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "jRb" = ( /obj/structure/table/reinforced, /obj/effect/spawner/random/trash/food_packaging, @@ -28891,17 +28895,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) -"jSM" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "jTi" = ( /obj/machinery/hydroponics/soil, /obj/machinery/camera/directional/west{ @@ -29104,6 +29097,12 @@ }, /turf/open/floor/iron, /area/station/security/brig) +"jVx" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "jVy" = ( /obj/machinery/portable_atmospherics/pump/lil_pump, /obj/effect/turf_decal/siding/purple{ @@ -29296,25 +29295,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space/basic, /area/space/nearstation) -"jZD" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Service Maintenance" - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "service-passthrough" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "jZP" = ( /obj/effect/turf_decal/siding/purple{ dir = 5 @@ -30100,6 +30080,13 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/wood, /area/station/service/library) +"knf" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "knt" = ( /obj/machinery/mech_bay_recharge_port, /obj/structure/cable, @@ -30239,17 +30226,6 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) -"kqe" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/medical_doctor, -/obj/effect/landmark/event_spawn, -/obj/machinery/duct, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery/aft) "kqh" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/effect/turf_decal/trimline/brown/line, @@ -30331,6 +30307,13 @@ "krL" = ( /turf/open/floor/wood, /area/station/command/corporate_showroom) +"krM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "krN" = ( /obj/structure/table, /obj/effect/turf_decal/bot, @@ -30668,36 +30651,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"kyi" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/virology{ - autoclose = 0; - frequency = 1449; - id_tag = "virology_airlock_interior"; - name = "Virology Interior Airlock" - }, -/obj/machinery/door_buttons/access_button{ - idDoor = "virology_airlock_interior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Button"; - pixel_x = 8; - pixel_y = -24; - req_access = list("virology") - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "kym" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -30910,12 +30863,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/genetics) -"kBA" = ( -/obj/structure/rack, -/obj/item/clothing/gloves/color/fyellow, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "kBQ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc/auto_name/directional/north, @@ -30936,17 +30883,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/command/teleporter) -"kBV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "kCq" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/modular_computer/preset/engineering, @@ -31011,15 +30947,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron, /area/station/security/brig) -"kDm" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Observation Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "kDp" = ( /obj/machinery/light/directional/north, /obj/structure/sign/warning/secure_area/directional/north, @@ -31116,12 +31043,6 @@ }, /turf/open/floor/iron, /area/station/construction/mining/aux_base) -"kFi" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "kFp" = ( /obj/structure/cable, /obj/effect/landmark/event_spawn, @@ -31343,13 +31264,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"kJI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/commons/toilet/auxiliary) "kJO" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -31442,12 +31356,6 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron/white, /area/station/security/prison) -"kKK" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "kKO" = ( /obj/structure/fake_stairs/directional/east, /obj/structure/cable, @@ -31586,6 +31494,15 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/iron, /area/station/hallway/primary/central) +"kMo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/structure/cable, +/obj/structure/sign/eyechart/directional/west, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "kMr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/siding/wood{ @@ -31852,29 +31769,18 @@ /obj/machinery/announcement_system, /turf/open/floor/iron/grimy, /area/station/tcommsat/computer) +"kRy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/sink/directional/east, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "kRA" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port) -"kRI" = ( -/obj/machinery/door/airlock{ - name = "Prison Showers" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"kRN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/aft/greater) "kRV" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -31984,6 +31890,15 @@ /obj/item/pen, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) +"kTZ" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "kUb" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater/on, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -32327,13 +32242,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/ordnance/office) -"kZd" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "kZk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32390,12 +32298,31 @@ /obj/structure/closet/crate, /turf/open/floor/iron, /area/station/cargo/warehouse) +"kZQ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "laa" = ( /obj/machinery/light/directional/east, /turf/open/floor/iron/chapel{ dir = 1 }, /area/station/service/chapel) +"laf" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "lah" = ( /obj/structure/rack, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32627,6 +32554,11 @@ /obj/structure/cable, /turf/open/floor/iron/textured, /area/station/medical/chem_storage) +"lfm" = ( +/obj/machinery/light_switch/directional/north, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/security/prison/shower) "lfu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32942,6 +32874,11 @@ dir = 8 }, /area/station/medical/morgue) +"lmn" = ( +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "lmx" = ( /obj/machinery/light_switch/directional/west, /obj/effect/decal/cleanable/cobweb, @@ -32980,6 +32917,13 @@ /obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"lmT" = ( +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "lnc" = ( /turf/closed/wall, /area/station/commons/dorms) @@ -32997,6 +32941,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/hallway/primary/fore) +"lnM" = ( +/obj/item/reagent_containers/cup/bucket, +/obj/item/mop, +/obj/item/reagent_containers/cup/bottle/ammonia, +/obj/structure/cable, +/mob/living/basic/mouse/brown/tom, +/turf/open/floor/plating, +/area/station/security/prison/safe) "lnP" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, @@ -33081,6 +33033,22 @@ /obj/machinery/biogenerator, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"lpN" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "viro-passthrough" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/medical/medbay/central) "lpR" = ( /obj/structure/table, /obj/effect/turf_decal/siding{ @@ -33319,6 +33287,16 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"ltX" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/service/hydroponics) "lug" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33348,10 +33326,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) -"luw" = ( -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "luF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ @@ -33366,20 +33340,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/checkpoint/medical) -"luU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail{ - dir = 4 - }, -/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "luV" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -33418,13 +33378,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/security/medical) -"lvU" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet4"; - name = "Unit 4" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "lvZ" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -33889,6 +33842,9 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"lHH" = ( +/turf/open/floor/iron/freezer, +/area/station/commons/fitness/recreation) "lHK" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -33905,43 +33861,6 @@ /obj/machinery/atmospherics/components/unary/thermomachine/freezer, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"lIf" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "XenoPens"; - name = "Xenobiology Lockdown" - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/science/xenobiology) -"lIg" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research{ - autoclose = 0; - frequency = 1449; - id_tag = "xeno_airlock_interior"; - name = "Xenobiology Lab Internal Airlock" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) "lIB" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33968,26 +33887,6 @@ }, /turf/open/floor/iron/grimy, /area/station/tcommsat/computer) -"lJm" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/newscaster/directional/south, -/obj/effect/landmark/start/assistant, -/obj/effect/landmark/start/hangover, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32; - spawn_loot_chance = 50 - }, -/obj/machinery/button/door/directional/west{ - id = "Toilet3"; - name = "Lock Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "lJn" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/computer/security/telescreen/entertainment/directional/north, @@ -34052,6 +33951,15 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"lLw" = ( +/obj/machinery/shower/directional/south, +/obj/structure/curtain, +/obj/structure/window/reinforced/tinted/spawner/directional/west, +/obj/machinery/door/window/left/directional/south{ + name = "Shower" + }, +/turf/open/floor/iron/freezer, +/area/station/commons/fitness/recreation) "lLB" = ( /obj/structure/table/glass, /obj/item/wrench, @@ -34182,6 +34090,12 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"lNf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "lNh" = ( /obj/machinery/door/airlock/security/glass{ name = "Prison Sanitarium" @@ -34291,31 +34205,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"lOW" = ( -/obj/item/reagent_containers/spray/plantbgone{ - pixel_y = 3 - }, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 13; - pixel_y = 5 - }, -/obj/item/watertank, -/obj/item/grenade/chem_grenade/antiweed, -/obj/structure/table/glass, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/hydroponics) "lOZ" = ( /obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, @@ -34342,21 +34231,6 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, /area/station/security/office) -"lPm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/reagent_containers/cup/bucket{ - pixel_x = -6; - pixel_y = 27 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/janitor) "lPn" = ( /obj/machinery/light/small/dim/directional/north, /obj/structure/rack, @@ -34542,14 +34416,6 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"lTm" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "lTq" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -34689,18 +34555,6 @@ }, /turf/open/floor/iron, /area/station/command/gateway) -"lVm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/cryo) "lVp" = ( /turf/closed/wall, /area/station/cargo/lobby) @@ -35243,6 +35097,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/command/heads_quarters/hos) +"mfb" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "mfd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, @@ -35338,6 +35203,14 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) +"mhs" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "mhA" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -35559,6 +35432,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"mma" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/service/janitor) "mml" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot_white, @@ -35582,11 +35462,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/white, /area/station/security/prison) -"mmB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "mmF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -35603,14 +35478,6 @@ }, /turf/open/floor/iron/checker, /area/station/science/research) -"mmL" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "mmR" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -36058,10 +35925,16 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/commons/dorms) -"muc" = ( -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +"mtZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail, +/obj/effect/mapping_helpers/mail_sorting/medbay/virology, +/obj/effect/turf_decal/tile/green/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "mui" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36167,6 +36040,11 @@ /obj/machinery/light/floor, /turf/open/floor/iron, /area/station/engineering/atmos) +"mvv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "mvN" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line, @@ -36221,6 +36099,14 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) +"mwm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/aft/greater) "mwo" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -36576,6 +36462,14 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/commons/dorms) +"mCV" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "mCZ" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 9 @@ -36671,6 +36565,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"mEx" = ( +/obj/structure/reagent_dispensers/plumbed, +/obj/effect/spawner/random/maintenance/three, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "mEG" = ( /obj/structure/closet/secure_closet/security/engine, /obj/machinery/airalarm/directional/east, @@ -36861,6 +36760,16 @@ /obj/item/clothing/gloves/color/yellow, /turf/open/floor/iron, /area/station/engineering/main) +"mHl" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "mHy" = ( /obj/structure/rack, /turf/open/floor/plating, @@ -37137,19 +37046,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"mMq" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Prison Cafeteria" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) "mMu" = ( /obj/machinery/camera/directional/south{ c_tag = "Theater - Backstage" @@ -37221,17 +37117,6 @@ /obj/machinery/camera/directional/north, /turf/open/floor/iron, /area/station/commons/storage/tools) -"mNx" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "mNE" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -37290,17 +37175,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"mPi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail{ - dir = 1 - }, -/obj/effect/mapping_helpers/mail_sorting/medbay/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "mPw" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -37355,20 +37229,6 @@ }, /turf/open/floor/iron, /area/station/construction/storage_wing) -"mPO" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "mPT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37614,6 +37474,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"mTg" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/hatch{ + name = "Observation Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "mTk" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -37713,14 +37582,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/purple/visible, /turf/open/floor/plating, /area/station/engineering/atmos) -"mVK" = ( -/obj/structure/cable, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "mVW" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -37749,6 +37610,19 @@ }, /turf/open/space/basic, /area/space/nearstation) +"mWA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "mWU" = ( /turf/open/floor/iron, /area/station/maintenance/space_hut) @@ -37985,17 +37859,6 @@ /obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) -"mZV" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/firealarm_sanity, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "mZW" = ( /obj/machinery/light/small/directional/east, /obj/machinery/firealarm/directional/east, @@ -38289,6 +38152,13 @@ "nfs" = ( /turf/open/floor/engine, /area/station/command/heads_quarters/rd) +"nft" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "nfy" = ( /obj/structure/table, /obj/item/paper_bin, @@ -38602,22 +38472,6 @@ /obj/effect/mapping_helpers/airlock/access/any/command/general, /turf/open/floor/wood, /area/station/command/corporate_showroom) -"nmv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white/smooth_half, -/area/station/medical/cryo) "nmF" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plating, @@ -38834,6 +38688,12 @@ }, /turf/open/floor/wood, /area/station/commons/dorms) +"npe" = ( +/obj/item/kirbyplants, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "npv" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -39093,14 +38953,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"nsW" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/food_or_drink/booze{ - spawn_random_offset = 1 - }, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) "nsZ" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -39144,12 +38996,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/medical/storage) -"ntl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "ntm" = ( /obj/machinery/door/airlock/maintenance{ name = "Disposal Access" @@ -39480,14 +39326,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison/work) -"nyr" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/item/storage/medkit/advanced, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "nyu" = ( /obj/effect/turf_decal/tile/brown/fourcorners, /obj/machinery/door/airlock/security/glass{ @@ -39515,22 +39353,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/entry) -"nyQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/cytology) "nyV" = ( /obj/structure/extinguisher_cabinet/directional/west, /obj/effect/turf_decal/tile/red{ @@ -39706,16 +39528,13 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"nCh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +"nCc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, /obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/surgery/aft) "nCr" = ( /obj/machinery/status_display/ai/directional/east, /turf/open/floor/iron/white, @@ -39771,6 +39590,17 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/security/prison) +"nCL" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "nCQ" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{ dir = 4 @@ -40073,16 +39903,6 @@ /obj/effect/turf_decal/siding/purple/corner, /turf/open/floor/iron/white, /area/station/science/cytology) -"nIh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) "nIj" = ( /obj/structure/easel, /turf/open/floor/plating, @@ -40245,26 +40065,6 @@ /obj/machinery/light/small/dim/directional/south, /turf/open/floor/plating, /area/station/maintenance/port) -"nKO" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/light/small/directional/east, -/obj/machinery/newscaster/directional/east, -/obj/effect/landmark/start/assistant, -/obj/effect/landmark/start/hangover, -/obj/machinery/button/door/directional/south{ - id = "Toilet4"; - name = "Lock Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32; - spawn_loot_chance = 50 - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "nLq" = ( /obj/machinery/airalarm/directional/south, /turf/open/floor/wood, @@ -40273,12 +40073,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) -"nLJ" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "nLZ" = ( /obj/item/toy/beach_ball/branded, /turf/open/space/basic, @@ -40316,13 +40110,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"nMT" = ( -/obj/effect/spawner/random/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "nMV" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -40331,14 +40118,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron, /area/station/security/range) -"nNb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/service/janitor) "nNe" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -40682,18 +40461,6 @@ /obj/effect/turf_decal/trimline/dark_red/filled/line, /turf/open/floor/iron, /area/station/security/warden) -"nTL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "nUp" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -40865,6 +40632,16 @@ /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) +"nYL" = ( +/obj/machinery/door/airlock/hatch{ + name = "Xenobiology Maintenance" + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "nYU" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -41353,6 +41130,14 @@ /obj/effect/turf_decal/tile/green/fourcorners, /turf/open/floor/iron/showroomfloor, /area/station/maintenance/starboard/lesser) +"ohY" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/aft/greater) "ohZ" = ( /obj/machinery/suit_storage_unit/rd, /obj/effect/turf_decal/stripes/line{ @@ -41389,6 +41174,11 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/genetics) +"oiz" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/station/maintenance/fore) "oiI" = ( /obj/machinery/air_sensor/nitrous_tank, /turf/open/floor/engine/n2o, @@ -41666,13 +41456,6 @@ "oor" = ( /turf/closed/wall, /area/station/security/checkpoint/supply) -"oos" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet1"; - name = "Unit 1" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "ooz" = ( /obj/structure/closet/emcloset, /obj/machinery/camera/directional/west{ @@ -41855,15 +41638,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) -"osb" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "osc" = ( /obj/structure/cable, /obj/effect/spawner/random/decoration/showcase, @@ -42056,11 +41830,6 @@ /obj/item/reagent_containers/cup/glass/bottle/goldschlager, /turf/open/space/basic, /area/space/nearstation) -"ouz" = ( -/obj/item/kirbyplants, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "ouM" = ( /obj/structure/sign/painting/library{ pixel_y = -32 @@ -42117,12 +41886,6 @@ }, /turf/closed/wall/r_wall, /area/station/engineering/atmos/storage/gas) -"ovj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "ovK" = ( /obj/structure/closet/secure_closet/hop, /turf/open/floor/wood, @@ -42296,6 +42059,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"oyW" = ( +/obj/machinery/door/airlock{ + id_tag = "Toilet1"; + name = "Unit 1" + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "oyY" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -42323,16 +42094,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"ozQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction/flip, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "ozX" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42715,6 +42476,20 @@ /obj/effect/mapping_helpers/airlock/access/all/science/ordnance, /turf/open/floor/plating, /area/station/science/ordnance) +"oGf" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "viro-passthrough" + }, +/obj/effect/mapping_helpers/airlock/unres, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/medical/medbay/central) "oGj" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/effect/turf_decal/box, @@ -43065,6 +42840,11 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/engineering) +"oMs" = ( +/obj/machinery/duct, +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/station/maintenance/port) "oMx" = ( /obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, /obj/machinery/door/airlock/maintenance{ @@ -43399,12 +43179,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"oTC" = ( -/obj/structure/urinal/directional/north, -/obj/structure/cable, -/obj/machinery/light/floor, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "oTD" = ( /obj/structure/frame/computer, /turf/open/floor/plating/airless, @@ -43434,11 +43208,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"oUl" = ( -/obj/machinery/light/small/dim/directional/west, -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/plating, -/area/station/security/prison/safe) "oUy" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line, @@ -43464,6 +43233,14 @@ /obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"oUE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) "oUK" = ( /obj/structure/table, /obj/item/electronics/apc, @@ -43490,11 +43267,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"oVF" = ( -/obj/structure/urinal/directional/north, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "oVL" = ( /obj/structure/table, /obj/item/folder, @@ -43515,6 +43287,17 @@ }, /turf/open/floor/iron, /area/station/security/courtroom) +"oWa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/navigate_destination, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "oWc" = ( /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, @@ -43713,6 +43496,11 @@ /obj/structure/window/spawner/directional/south, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) +"oZL" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) "oZN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, @@ -43726,6 +43514,21 @@ /obj/effect/turf_decal/trimline/blue/filled/mid_joiner, /turf/open/floor/iron/white/smooth_large, /area/station/medical/surgery/theatre) +"oZZ" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2 + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/mail_sorting/service/janitor_closet, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "pab" = ( /obj/structure/table, /obj/item/stock_parts/subspace/ansible, @@ -43919,12 +43722,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/service/hydroponics) -"pdB" = ( -/obj/effect/decal/cleanable/dirt, +"pdx" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/cigbutt/roach, /turf/open/floor/iron, -/area/station/commons/toilet/auxiliary) +/area/station/maintenance/starboard/greater) "pdI" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -44084,6 +43889,15 @@ }, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) +"pgM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "pgU" = ( /obj/structure/chair{ dir = 4 @@ -44455,6 +44269,17 @@ /obj/effect/turf_decal/caution, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"pnx" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "pnD" = ( /obj/machinery/airalarm/directional/north, /obj/effect/spawner/random/structure/closet_private, @@ -44623,6 +44448,14 @@ /obj/machinery/module_duplicator, /turf/open/floor/iron/white, /area/station/science/explab) +"pqz" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Storage Room" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "pqH" = ( /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark, @@ -44707,17 +44540,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"psk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "psl" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -44827,14 +44649,6 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron/dark, /area/station/security/lockers) -"ptn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery/aft) "pts" = ( /obj/machinery/light_switch/directional/west, /obj/effect/turf_decal/trimline/neutral/warning{ @@ -45249,20 +45063,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/white, /area/station/medical/office) -"pCe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) "pCh" = ( /obj/machinery/camera/directional/east{ c_tag = "Prison Laundry"; @@ -45276,14 +45076,6 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/cafeteria, /area/station/security/prison) -"pCj" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/aft/greater) "pCk" = ( /obj/machinery/airalarm/directional/west, /obj/effect/mapping_helpers/burnt_floor, @@ -45390,15 +45182,6 @@ /obj/effect/landmark/start/botanist, /turf/open/floor/iron, /area/station/service/hydroponics) -"pEF" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "pEG" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/corner{ @@ -45500,17 +45283,6 @@ dir = 1 }, /area/station/engineering/atmos/storage/gas) -"pGC" = ( -/obj/structure/table, -/obj/item/clothing/gloves/latex, -/obj/item/clothing/mask/surgical, -/obj/item/reagent_containers/spray/cleaner, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/white, -/area/station/security/medical) "pGH" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ @@ -45571,6 +45343,14 @@ }, /turf/open/floor/iron, /area/station/engineering/break_room) +"pHt" = ( +/obj/structure/table, +/obj/item/toy/plush/slimeplushie{ + name = "Nanners" + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "pHv" = ( /obj/machinery/door/airlock/maintenance{ name = "Surgery Maintenance" @@ -45702,6 +45482,13 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/bitrunning/den) +"pJu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/security/prison/shower) "pJv" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/north, @@ -45822,12 +45609,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"pLY" = ( -/obj/structure/chair/stool/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) "pMd" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/engine/n2, @@ -45893,6 +45674,16 @@ /obj/machinery/telecomms/receiver/preset_right, /turf/open/floor/circuit/green/telecomms/mainframe, /area/station/tcommsat/server) +"pNf" = ( +/obj/machinery/door/airlock{ + name = "Hydroponics Backroom" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "pNk" = ( /obj/structure/extinguisher_cabinet/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46017,6 +45808,13 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/port) +"pON" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "pPh" = ( /obj/structure/closet/secure_closet/miner, /obj/item/clothing/suit/hooded/wintercoat/miner, @@ -46077,6 +45875,15 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron, /area/station/security/prison/safe) +"pQj" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "pQr" = ( /obj/effect/spawner/random/trash/garbage, /obj/effect/landmark/generic_maintenance_landmark, @@ -46198,6 +46005,14 @@ /obj/item/reagent_containers/spray/pepper, /turf/open/floor/iron, /area/station/security/execution/transfer) +"pSa" = ( +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "pSl" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 @@ -46337,14 +46152,6 @@ /obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"pUE" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/airalarm/directional/west, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "pUM" = ( /obj/structure/table, /obj/effect/turf_decal/siding/white/corner, @@ -46419,14 +46226,6 @@ /obj/effect/spawner/random/entertainment/deck, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"pVY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "pVZ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -46513,6 +46312,17 @@ /obj/machinery/atmospherics/components/unary/airlock_pump/unbolt_only, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) +"pWX" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "pXh" = ( /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, @@ -46619,6 +46429,10 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison) +"pZr" = ( +/obj/machinery/duct, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/aft) "pZG" = ( /obj/machinery/power/solar_control{ id = "forestarboard"; @@ -46822,17 +46636,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) -"qdO" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/structure/sink/kitchen/directional/east, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "qdT" = ( /obj/effect/turf_decal/siding/red, /obj/effect/landmark/start/depsec/science, @@ -46845,14 +46648,6 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/plating, /area/station/maintenance/central) -"qea" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/commons/toilet/auxiliary) "qeo" = ( /obj/machinery/newscaster/directional/north, /obj/structure/dresser, @@ -47002,6 +46797,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"qgn" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "qgt" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/camera/directional/north{ @@ -47157,6 +46961,15 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"qiD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "qiH" = ( /obj/machinery/light/small/directional/west, /obj/machinery/airalarm/directional/west, @@ -47176,16 +46989,6 @@ /obj/item/food/pie/cream, /turf/open/floor/wood/large, /area/station/service/theater) -"qjb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "qjf" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -47254,6 +47057,18 @@ /obj/item/reagent_containers/cup/soda_cans/monkey_energy, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"qkq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology/hallway) "qkA" = ( /obj/machinery/computer/security, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -47443,14 +47258,6 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/fore) -"qod" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) "qos" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -47484,14 +47291,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"qoM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) "qoR" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -47792,6 +47591,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/storage) +"qvC" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "qvJ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -47822,17 +47630,6 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"qwc" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "qwh" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -47886,6 +47683,12 @@ dir = 1 }, /area/station/service/chapel) +"qxr" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "qxt" = ( /obj/effect/turf_decal/bot, /turf/open/floor/engine, @@ -47975,6 +47778,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"qzf" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "qzg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /obj/machinery/meter/layer4, @@ -48076,6 +47887,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/prison) +"qBo" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/research{ + autoclose = 0; + frequency = 1449; + id_tag = "xeno_airlock_interior"; + name = "Xenobiology Lab Internal Airlock" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology/hallway) "qBq" = ( /obj/structure/rack, /obj/effect/landmark/blobstart, @@ -48222,13 +48053,6 @@ /obj/machinery/status_display/ai/directional/east, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) -"qDl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "qDy" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -48250,10 +48074,6 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/entry) -"qDG" = ( -/obj/machinery/duct, -/turf/open/floor/carpet/green, -/area/station/maintenance/port/aft) "qDS" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -48542,17 +48362,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"qJC" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/aft/greater) "qJU" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -48922,6 +48731,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"qOT" = ( +/obj/item/storage/bag/trash, +/obj/machinery/airalarm/directional/west, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/security/prison/safe) "qOV" = ( /obj/structure/table, /obj/item/reagent_containers/condiment/saltshaker{ @@ -49765,6 +49581,27 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/commons/locker) +"rbI" = ( +/obj/structure/toilet{ + pixel_y = 8; + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/newscaster/directional/south, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, +/obj/effect/spawner/random/trash/graffiti{ + pixel_x = -32; + spawn_loot_chance = 50 + }, +/obj/machinery/button/door/directional/west{ + id = "Toilet3"; + name = "Lock Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "rcq" = ( /obj/machinery/atmospherics/pipe/layer_manifold/purple/visible, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer5{ @@ -49837,26 +49674,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"rdT" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/newscaster/directional/south, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/start/hangover, -/obj/machinery/button/door/directional/west{ - id = "Toilet1"; - name = "Lock Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32; - spawn_loot_chance = 50 - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "rea" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 5 @@ -49941,19 +49758,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"rfm" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "rft" = ( /turf/closed/wall/r_wall, /area/station/security/prison/mess) @@ -49971,11 +49775,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"rgJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "rgS" = ( /obj/machinery/modular_computer/preset/civilian{ dir = 1 @@ -50382,20 +50181,6 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron, /area/station/science/research) -"rnt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "rnX" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/machinery/firealarm/directional/east, @@ -50505,11 +50290,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron, /area/station/security/range) -"rqy" = ( -/obj/structure/reagent_dispensers/plumbed, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "rqK" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/east, @@ -50533,6 +50313,14 @@ /obj/effect/spawner/random/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"rru" = ( +/obj/structure/table/glass, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "rrz" = ( /obj/machinery/chem_dispenser/drinks/beer{ dir = 1 @@ -50805,16 +50593,6 @@ /obj/structure/chair/stool/directional/north, /turf/open/floor/wood, /area/station/maintenance/port/aft) -"ruD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail, -/obj/effect/mapping_helpers/mail_sorting/medbay/virology, -/obj/effect/turf_decal/tile/green/half/contrasted, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "ruP" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -51138,21 +50916,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/engine, /area/station/science/xenobiology) -"rzD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/cytology) "rzJ" = ( /obj/effect/landmark/start/lawyer, /turf/open/floor/iron, @@ -51184,6 +50947,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) +"rAa" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Storage Room" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "rAo" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/watertank, @@ -51212,12 +50988,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"rAV" = ( -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/commons/toilet/auxiliary) "rAW" = ( /turf/closed/wall, /area/station/security/prison/work) @@ -51266,13 +51036,6 @@ }, /turf/open/floor/iron, /area/station/science/explab) -"rCC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) "rCW" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -51415,17 +51178,23 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"rFA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/plating, -/area/station/maintenance/port) "rFB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, /turf/open/floor/wood, /area/station/service/library) +"rFO" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/structure/sink/kitchen/directional/east, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) "rFR" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -51623,11 +51392,6 @@ }, /turf/open/floor/iron, /area/station/engineering/break_room) -"rJe" = ( -/obj/machinery/light_switch/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) "rJh" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/secure_safe/directional/west, @@ -52121,15 +51885,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"rQU" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "rRm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52250,6 +52005,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/evidence) +"rTF" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Surgery C Maintenance" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/aft/greater) "rTL" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -52267,17 +52031,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) -"rTZ" = ( -/obj/machinery/door/airlock/wood{ - doorClose = 'sound/effects/doorcreaky.ogg'; - doorOpen = 'sound/effects/doorcreaky.ogg'; - name = "The Gobetting Barmaid" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "rUo" = ( /obj/structure/bed, /obj/effect/spawner/random/bedsheet, @@ -52350,6 +52103,14 @@ }, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) +"rUU" = ( +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 + }, +/obj/machinery/light/cold/directional/north, +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/iron/white, +/area/station/medical/virology) "rVb" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -52405,10 +52166,22 @@ /obj/effect/turf_decal/trimline/purple/filled/warning, /turf/open/floor/iron, /area/station/science/lab) +"rVY" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "rVZ" = ( /obj/structure/cable, /turf/open/floor/grass, /area/station/medical/virology) +"rWf" = ( +/obj/structure/urinal/directional/north, +/obj/structure/cable, +/obj/machinery/light/floor, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "rWi" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/open/floor/engine/n2, @@ -53045,6 +52818,13 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"sie" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "sik" = ( /obj/structure/railing/corner/end{ dir = 4 @@ -53061,19 +52841,6 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"sis" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/cytology) "siu" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -53368,6 +53135,12 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"soa" = ( +/obj/structure/sign/poster/official/random/directional/south, +/obj/machinery/light/small/directional/west, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/commons/toilet/auxiliary) "sof" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -53570,6 +53343,20 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) +"stD" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Primary Treatment Centre" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "stI" = ( /obj/effect/turf_decal/delivery, /obj/structure/table, @@ -53685,6 +53472,16 @@ /obj/structure/sign/warning/fire/directional/east, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"svO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "svQ" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/unres{ @@ -53735,6 +53532,14 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"swR" = ( +/obj/machinery/door/airlock{ + name = "Cleaning Closet" + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "swV" = ( /obj/effect/turf_decal/trimline/purple/line{ dir = 4 @@ -53744,6 +53549,14 @@ }, /turf/open/floor/iron/white, /area/station/science/research) +"sxf" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "sxg" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron/white/side, @@ -53792,6 +53605,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/brig) +"syg" = ( +/obj/structure/table/wood, +/obj/effect/spawner/random/food_or_drink/booze{ + spawn_random_offset = 1 + }, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/maintenance/port/aft) "syh" = ( /obj/machinery/door/poddoor/shutters{ id = "maintwarehouse" @@ -54589,6 +54410,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) +"sMo" = ( +/obj/structure/sign/poster/official/cleanliness/directional/west, +/obj/structure/sink/directional/south, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/mirror/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/white, +/area/station/medical/virology) "sMB" = ( /obj/machinery/door/window/brigdoor/security/cell/left/directional/south{ id = "Cell 1"; @@ -54609,15 +54440,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"sME" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "sMS" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -54748,6 +54570,19 @@ /obj/structure/light_construct/directional/east, /turf/open/floor/wood, /area/station/commons/vacant_room/office) +"sOM" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "sOP" = ( /obj/structure/rack, /obj/item/toy/plush/lizard_plushie/green{ @@ -54787,6 +54622,17 @@ /obj/effect/landmark/navigate_destination, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) +"sPq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "sPy" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -54844,14 +54690,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) -"sQj" = ( -/obj/item/reagent_containers/cup/bucket, -/obj/item/mop, -/obj/item/reagent_containers/cup/bottle/ammonia, -/obj/structure/cable, -/mob/living/basic/mouse/brown/tom, -/turf/open/floor/plating, -/area/station/security/prison/safe) "sQq" = ( /obj/structure/closet/crate/hydroponics, /obj/item/paper/guides/jobs/hydroponics, @@ -55090,6 +54928,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"sTA" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "sTK" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/tile/blue/half/contrasted, @@ -55319,6 +55164,17 @@ "sWV" = ( /turf/closed/wall/r_wall, /area/station/security/detectives_office) +"sWZ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/aft/greater) "sXe" = ( /obj/effect/landmark/start/station_engineer, /obj/machinery/light/directional/west, @@ -55434,6 +55290,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/science/xenobiology) +"tak" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "tar" = ( /obj/machinery/medical_kiosk, /obj/effect/turf_decal/tile/blue/half/contrasted, @@ -55516,10 +55379,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"tbc" = ( -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "tbd" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, @@ -55533,6 +55392,13 @@ }, /turf/open/floor/iron, /area/station/commons/lounge) +"tbm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "tbp" = ( /obj/machinery/door/airlock/command/glass{ name = "Server Access" @@ -55821,6 +55687,21 @@ dir = 8 }, /area/station/medical/morgue) +"thT" = ( +/obj/structure/cable, +/obj/machinery/camera/directional/east{ + c_tag = "Xenobiology Lab - Central West"; + network = list("ss13","rd","xeno") + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/button/door/directional/east{ + id = "XenoPens"; + name = "Xenobiology Shutters"; + req_access = list("xenobiology") + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "thY" = ( /obj/effect/spawner/random/structure/grille, /obj/effect/turf_decal/stripes/line{ @@ -56082,6 +55963,16 @@ dir = 4 }, /area/station/service/chapel) +"tmI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + id_tag = "AuxShower"; + name = "Showers" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/commons/toilet/auxiliary) "tmK" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -56242,17 +56133,6 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) -"tpl" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "tpn" = ( /obj/machinery/light/small/directional/west, /obj/machinery/camera/directional/west{ @@ -56548,6 +56428,12 @@ }, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"tub" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) "tug" = ( /obj/structure/extinguisher_cabinet/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56624,6 +56510,22 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"twu" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/cytology) "twy" = ( /obj/effect/turf_decal/siding/purple, /turf/open/floor/iron/dark, @@ -56704,6 +56606,14 @@ /obj/machinery/vending/cigarette, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"txP" = ( +/obj/effect/landmark/start/botanist, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/service/hydroponics) "tyj" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -56751,13 +56661,6 @@ /obj/structure/statue/snow/snowman, /turf/open/floor/fake_snow, /area/station/maintenance/port/aft) -"tzD" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet3"; - name = "Unit 3" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "tzE" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -57035,6 +56938,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/science/research) +"tEy" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sink/kitchen/directional/west, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) "tEP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -57378,6 +57289,28 @@ /obj/structure/sign/warning/electric_shock/directional/south, /turf/open/space/basic, /area/space/nearstation) +"tLc" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door_buttons/airlock_controller{ + idExterior = "xeno_airlock_exterior"; + idInterior = "xeno_airlock_interior"; + idSelf = "xeno_airlock_control"; + name = "Access Console"; + pixel_x = -25; + pixel_y = -25; + req_access = list("xenobiology") + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/cytology) "tLd" = ( /obj/structure/chair/office{ dir = 8 @@ -57451,19 +57384,6 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) -"tLS" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Storage Room" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "tMe" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/machinery/light/small/directional/east, @@ -58113,6 +58033,20 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"tXk" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "tXq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, @@ -58526,18 +58460,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"ucn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) "uco" = ( /obj/machinery/holopad, /obj/structure/cable, @@ -58561,6 +58483,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/smooth_large, /area/station/medical/surgery/theatre) +"udp" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "udD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58591,6 +58521,13 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/iron, /area/station/hallway/primary/central) +"udO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/service/hydroponics) "udU" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/brown{ @@ -58800,17 +58737,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"uiN" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 1 - }, -/obj/effect/mapping_helpers/mail_sorting/medbay/virology, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/firealarm_sanity, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "uiR" = ( /obj/machinery/portable_atmospherics/canister/anesthetic_mix, /obj/effect/turf_decal/box/white{ @@ -58852,6 +58778,14 @@ /obj/structure/mirror/directional/east, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) +"ujP" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "ukc" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ @@ -59060,6 +58994,14 @@ }, /turf/open/floor/iron, /area/station/security/brig) +"uom" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "uor" = ( /obj/machinery/door/poddoor{ id = "QMLoaddoor2"; @@ -59097,16 +59039,6 @@ /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"uoE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "uoM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/brig{ @@ -59117,21 +59049,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) -"uoU" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Custodial Closet" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/service/janitor, -/obj/effect/landmark/navigate_destination/janitor, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "upe" = ( /obj/machinery/camera/directional/east{ c_tag = "Interrogation room"; @@ -59140,17 +59057,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"upG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "upM" = ( /obj/machinery/door/firedoor, /obj/structure/cable, @@ -59319,11 +59225,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"usa" = ( -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/security/prison) "usg" = ( /obj/item/radio/intercom/directional/south, /obj/structure/table/reinforced, @@ -59491,17 +59392,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/service/bar) -"utT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "utY" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59586,6 +59476,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"uvP" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/virology/glass{ + name = "Containment Cells" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/obj/effect/turf_decal/tile/green/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "uwa" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59671,6 +59575,10 @@ /obj/machinery/meter, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"uxA" = ( +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "uxS" = ( /turf/open/floor/wood, /area/station/maintenance/port/aft) @@ -60140,6 +60048,20 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) +"uFr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/surgery/aft) "uFw" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -60242,6 +60164,11 @@ /obj/effect/spawner/random/techstorage/ai_all, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) +"uGx" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/security/prison/shower) "uGz" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/binary/pump/on/layer4{ @@ -60266,16 +60193,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"uGP" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/hydroponics) "uGU" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -60334,11 +60251,6 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) -"uHB" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/vending/autodrobe, -/turf/open/floor/plating, -/area/station/maintenance/port) "uHD" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/disposalpipe/segment, @@ -60381,6 +60293,18 @@ /obj/machinery/light/small/dim/directional/north, /turf/open/floor/plating, /area/station/maintenance/port) +"uIM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "uIP" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -60617,6 +60541,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/security/execution/transfer) +"uNd" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "uNl" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 4 @@ -60627,6 +60561,23 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"uNs" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "XenoPens"; + name = "Xenobiology Lockdown" + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/science/xenobiology) "uND" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -60640,6 +60591,15 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron, /area/station/service/janitor) +"uNO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology/hallway) "uNS" = ( /obj/effect/spawner/random/trash/box, /turf/open/floor/plating, @@ -60814,6 +60774,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"uQW" = ( +/obj/machinery/door/airlock{ + id_tag = "Toilet4"; + name = "Unit 4" + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "uRa" = ( /obj/machinery/door/airlock/external{ name = "Solar Maintenance" @@ -60913,6 +60881,17 @@ }, /turf/open/floor/iron, /area/station/cargo/warehouse) +"uSV" = ( +/obj/structure/table, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/mask/surgical, +/obj/item/reagent_containers/spray/cleaner, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/white, +/area/station/security/medical) "uTj" = ( /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/dark, @@ -61197,11 +61176,6 @@ "uYi" = ( /turf/open/floor/plating/airless, /area/station/solars/starboard/aft) -"uYj" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "uYl" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -61569,6 +61543,14 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"veS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/surgery/theatre) "vfa" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -61631,6 +61613,15 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"vgu" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "vgv" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -62062,23 +62053,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"vna" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/virology/glass{ - name = "Virology Lab" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "vnk" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -62258,6 +62232,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"vpR" = ( +/obj/structure/mirror/directional/west, +/obj/structure/sink/directional/east, +/turf/open/floor/iron/freezer, +/area/station/commons/fitness/recreation) "vqj" = ( /obj/machinery/computer/atmos_alert/station_only{ dir = 1 @@ -62357,6 +62336,12 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, /area/station/security/checkpoint/customs) +"vsr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/commons/toilet/auxiliary) "vsG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ @@ -62532,10 +62517,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"vuf" = ( -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/security/prison) "vun" = ( /turf/closed/wall, /area/station/medical/storage) @@ -62704,17 +62685,6 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/entry) -"vxB" = ( -/obj/structure/bed/medical/emergency, -/obj/machinery/camera/directional/west{ - c_tag = "Gateway - Atrium" - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/command/gateway) "vxC" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 @@ -62918,13 +62888,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"vAg" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "vAH" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -63018,6 +62981,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/gravity_generator) +"vCu" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/sign/poster/official/random/directional/west, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/commons/toilet/auxiliary) "vCC" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -63606,14 +63577,6 @@ }, /turf/open/floor/iron, /area/station/command/gateway) -"vNk" = ( -/obj/machinery/door/airlock{ - name = "Cleaning Closet" - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) "vNp" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -63657,6 +63620,17 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark/textured_large, /area/station/science/cytology) +"vOJ" = ( +/obj/structure/bed/medical/emergency, +/obj/machinery/camera/directional/west{ + c_tag = "Gateway - Atrium" + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/command/gateway) "vOK" = ( /obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot, @@ -63741,6 +63715,14 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/security/office) +"vPZ" = ( +/obj/machinery/door/airlock{ + id_tag = "Toilet3"; + name = "Unit 3" + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "vQb" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -63863,6 +63845,16 @@ /obj/machinery/light/floor, /turf/open/floor/iron, /area/station/commons/locker) +"vRk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/junction/flip, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "vRr" = ( /obj/effect/turf_decal/trimline/brown/corner{ dir = 1 @@ -63971,13 +63963,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) -"vSU" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet2"; - name = "Unit 2" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "vTf" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ dir = 8 @@ -63994,14 +63979,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/commons/dorms) -"vTu" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/obj/machinery/duct, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/treatment_center) "vTC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/iv_drip, @@ -64110,6 +64087,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) +"vVz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "vVE" = ( /obj/machinery/camera/motion/directional/east{ c_tag = "MiniSat Maintenance"; @@ -64216,18 +64201,6 @@ }, /turf/open/floor/catwalk_floor/iron, /area/station/cargo/storage) -"vWE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/trimline/purple, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "vWF" = ( /obj/structure/cable, /obj/machinery/holopad, @@ -64244,6 +64217,17 @@ }, /turf/open/floor/circuit/green/off, /area/station/science/research) +"vXg" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/medbay/virology, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/firealarm_sanity, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "vXj" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 @@ -64679,15 +64663,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"weo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "wep" = ( /obj/structure/sign/departments/chemistry/directional/east, /obj/machinery/camera/directional/east{ @@ -64728,11 +64703,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, /area/station/maintenance/central) -"weM" = ( -/obj/machinery/duct, -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/station/maintenance/port) "wfm" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -64806,15 +64776,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"wga" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, +"wfZ" = ( +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) +/turf/open/floor/plating, +/area/station/commons/toilet/auxiliary) "wgf" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet/firecloset, @@ -65172,10 +65139,6 @@ "wmL" = ( /turf/closed/wall/r_wall, /area/station/science/xenobiology/hallway) -"wmS" = ( -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port) "wmT" = ( /obj/machinery/shower/directional/east, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -65315,14 +65278,6 @@ /obj/structure/table/wood, /turf/open/floor/carpet, /area/station/command/corporate_showroom) -"wpq" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "wpr" = ( /obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/stripes/line{ @@ -65394,6 +65349,15 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) +"wra" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "wrc" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -65788,16 +65752,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"wxr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "wxF" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -65825,13 +65779,6 @@ }, /turf/open/floor/iron, /area/station/security/brig) -"wxT" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "wyn" = ( /obj/machinery/hydroponics/soil, /obj/item/shovel/spade, @@ -65881,18 +65828,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"wyH" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "wyJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, @@ -65993,6 +65928,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"wAX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/sorting/mail{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/medbay/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "wBe" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 @@ -66304,6 +66250,11 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/central) +"wGf" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/vending/autodrobe, +/turf/open/floor/plating, +/area/station/maintenance/port) "wGz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/light_construct/directional/east, @@ -66649,11 +66600,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"wOP" = ( -/obj/structure/mirror/directional/west, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/freezer, -/area/station/commons/fitness/recreation) "wOR" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67217,6 +67163,11 @@ }, /turf/open/floor/grass, /area/station/science/research) +"wZh" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "wZk" = ( /obj/machinery/light_switch/directional/north, /obj/structure/showcase/cyborg/old{ @@ -67224,6 +67175,11 @@ }, /turf/open/floor/iron/grimy, /area/station/tcommsat/computer) +"wZl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/maintenance/port/aft) "wZo" = ( /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -67357,6 +67313,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/warehouse) +"xcp" = ( +/obj/effect/spawner/random/maintenance, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "xcv" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67420,6 +67383,11 @@ "xdJ" = ( /turf/closed/wall, /area/station/medical/surgery/aft) +"xdQ" = ( +/obj/structure/sign/warning/hot_temp/directional/south, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "xdX" = ( /obj/machinery/door/firedoor, /obj/structure/cable, @@ -67624,6 +67592,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/storage) +"xgz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "xgB" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -67827,6 +67800,12 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/psychology) +"xjK" = ( +/obj/structure/chair/stool/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/maintenance/port/aft) "xkj" = ( /obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67875,6 +67854,10 @@ /obj/structure/cable/layer3, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/satellite) +"xkB" = ( +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/prison) "xkE" = ( /obj/machinery/recharge_station, /obj/effect/landmark/start/hangover, @@ -68008,6 +67991,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"xnn" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/wiki/engineering_hacking{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/engineering_guide{ + pixel_x = -2 + }, +/obj/item/trash/can{ + pixel_x = -8 + }, +/obj/machinery/firealarm/directional/south, +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/engineering/break_room) "xno" = ( /obj/machinery/atmospherics/components/trinary/mixer{ dir = 4 @@ -68220,9 +68223,6 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/station/service/bar) -"xqY" = ( -/turf/open/floor/iron/freezer, -/area/station/commons/fitness/recreation) "xrd" = ( /obj/machinery/door/morgue{ name = "Private Study"; @@ -68453,6 +68453,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/closed/wall/r_wall, /area/station/maintenance/aft/lesser) +"xuY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "xvd" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery, @@ -68979,20 +68988,19 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"xDA" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "xDD" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 9 }, /turf/open/floor/engine, /area/station/science/cytology) -"xDE" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/item/radio/intercom/prison/directional/west, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/prison) "xDF" = ( /obj/machinery/atmospherics/components/unary/airlock_pump{ dir = 4 @@ -69592,16 +69600,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"xQf" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "xQh" = ( /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/white, @@ -69722,6 +69720,15 @@ /obj/machinery/atmospherics/components/unary/airlock_pump/unbolt_only, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"xSn" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "xSO" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -70086,17 +70093,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating/airless, /area/space/nearstation) -"xYL" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/button/door/directional/south{ - id = "FitnessShower"; - name = "Lock Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/fitness/recreation) "xYM" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -70265,17 +70261,6 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"ybw" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "yby" = ( /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/chapel, @@ -70625,11 +70610,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/carpet, /area/station/command/corporate_showroom) -"ygK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) "ygR" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 4 @@ -70691,6 +70671,13 @@ }, /turf/open/floor/plating, /area/station/cargo/sorting) +"yhO" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/prison) "yia" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -70783,6 +70770,27 @@ /obj/structure/window/spawner/directional/west, /turf/open/floor/carpet, /area/station/service/theater) +"ykz" = ( +/obj/structure/toilet{ + pixel_y = 8; + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/newscaster/directional/south, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/west{ + id = "Toilet2"; + name = "Lock Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/effect/spawner/random/trash/graffiti{ + pixel_x = -32; + spawn_loot_chance = 50 + }, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "ykI" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/engine{ @@ -84404,7 +84412,7 @@ jUm cXW cXW bLm -qDG +pZr uxS uxS fgn @@ -84661,7 +84669,7 @@ uke bLm cXW cXW -qDG +pZr oBA ruz ehn @@ -84910,7 +84918,7 @@ vXH rHE uGz vXH -rFA +dSp tYi giT jUb @@ -84918,7 +84926,7 @@ esd htr htr dSQ -nsW +syg dbm ruz uxS @@ -85175,8 +85183,8 @@ xqn uxS fQZ ehv -pLY -fgr +xjK +iRg uxS ehn uxS @@ -85433,7 +85441,7 @@ fQD uxS uxS qKs -ieN +cfc dqN uxS uxS @@ -85690,7 +85698,7 @@ ruz ehn uxS uxS -rgJ +bwi uxS uxS uxS @@ -85947,7 +85955,7 @@ coJ uxS fNI uxS -isG +bCE wGz uxS uxS @@ -85965,12 +85973,12 @@ jUb aaa xjH aWC -wxr -pVY -pVY -ruD -gDB -ybw +mHl +vVz +vVz +mtZ +uvP +pWX eYE hcR gqV @@ -86204,7 +86212,7 @@ hWD etv jUb fYq -ygK +wZl jUb dyd jXO @@ -86222,7 +86230,7 @@ jUb aaa xjH ocN -rfm +ark uGq iam kHk @@ -86461,7 +86469,7 @@ jUb jUb jUb jUb -rTZ +fxT jUb jUb jUb @@ -86479,7 +86487,7 @@ jUb lMJ xjH xjH -vna +ffS xjH xjH xjH @@ -86707,18 +86715,18 @@ njE fHV pOa flN -eUc -hJM -jMW -qjb -hol -wxT -iQM -clY -iQD -wxT -aoH -wxT +sTA +mhs +fAo +aAQ +ujP +tbm +dMX +qzf +jrp +tbm +wra +tbm jUb cBc aFf @@ -86736,7 +86744,7 @@ jUb aaa aaa rKQ -jxn +eSR rKQ aaa aaa @@ -86963,15 +86971,15 @@ sOF fkd eDC pOa -dvk -bpZ +jaM +xDA jUb jUb jUb jUb jUb jUb -eOG +bbt jUb jUb jUb @@ -86993,7 +87001,7 @@ jUb aaa aaa rKQ -mZV +gjt rKQ aaa aaa @@ -87204,7 +87212,7 @@ fcq jPE auh crr -dDf +svO crr qer crr @@ -87221,14 +87229,14 @@ pOa pOa pOa pOa -ovj +kZQ jUb xIK bar nBp -tbc -jdY -bAU +hSP +pqz +iuB jUb oSy gwK @@ -87250,7 +87258,7 @@ jUb aaa aaa rKQ -bam +iyC rKQ aaa aaa @@ -87478,12 +87486,12 @@ gXe vwi tql pOa -nMT +xcp jUb tWr qKs -gOL -hiv +dPJ +hBC jUb nYy jUb @@ -87507,7 +87515,7 @@ jUb jUb xjH xjH -kyi +bVK xjH xjH lMJ @@ -87727,15 +87735,15 @@ fjD fjD fjD fjD -pdB -kJI +vsr +bRG pOa vZE ivx gDZ lEu pOa -eZO +pON jUb qno fms @@ -87763,8 +87771,8 @@ nsa jUb tzt xjH -bJu -cep +sMo +sOM jXn xjH aaa @@ -87980,11 +87988,11 @@ iOc qwG fjD rEj -qea +vCu cwc kXa fjD -iOy +tmI fjD pOa cIW @@ -87992,7 +88000,7 @@ tKj tYi vXH pOa -qDl +tak jUb tXX dqN @@ -88020,8 +88028,8 @@ nsa jUb huF xjH -bGy -jxn +rUU +eSR vYJ xjH aaa @@ -88237,19 +88245,19 @@ iOc mAs fjD aOo -rAV -pdB -ffZ -pdB -aRD -gir -weM -wmS -iGn +haE +vsr +fRG +vsr +wfZ +soa +oMs +aFz +mvv sNM tYi pOa -ovj +kZQ jUb ilQ oVn @@ -88502,11 +88510,11 @@ fjD hsF pOa vJY -iGn -iGn -kKK -tLS -aGr +mvv +mvv +rVY +rAa +guq jUb sal gvg @@ -88760,7 +88768,7 @@ oyx pOa xgG vJY -uHB +wGf wev pOa uOH @@ -88785,15 +88793,15 @@ kZv xNq xLB mbx -mPi -aMH -jlF -hXm -pEF -ePB -upG -uiN -mNx +wAX +eVU +qvC +nCL +iCX +oGf +sPq +vXg +iTH bhS tSw tSw @@ -89042,7 +89050,7 @@ jUb jUb jUb jUb -wyH +gPY jUb jUb fLe @@ -89050,10 +89058,10 @@ jUb gll azE xxU -dVk -fly -qJC -pCj +bxq +lpN +sWZ +ohY rKf tSw laL @@ -89310,10 +89318,10 @@ erF xTw bhS fqR -kRN +mwm drm tSw -gkV +jsq tSw wxF tSw @@ -89567,7 +89575,7 @@ tzE ucc tSw tSw -edz +rTF tSw tSw tSw @@ -89824,7 +89832,7 @@ wSv fuA aPq fVa -pCe +uFr vZb tBJ tnG @@ -90061,9 +90069,9 @@ jUb jUb mqz pHv -qoM -nIh -fkb +veS +dGv +bdy izl rps eme @@ -90081,7 +90089,7 @@ oBO ieH vDc miX -ptn +bfg iAu tBJ cxw @@ -90338,7 +90346,7 @@ tFr nMf bIv miX -kqe +hIx qOk tBJ gIB @@ -90536,7 +90544,7 @@ ksM lQf wsx dsJ -auO +cnJ dtw lzD hIW @@ -90595,7 +90603,7 @@ kHg nMf vDc aRk -gDt +nCc msC tBJ gLY @@ -90996,11 +91004,11 @@ tKa tGX aXa iSl -deY -fRh -deY -deY -acG +oZL +hmy +oZL +oZL +tub eJp bmB aXa @@ -91257,7 +91265,7 @@ lds mzm hXQ bVF -hYp +fGP aJK liL kKZ @@ -91341,8 +91349,8 @@ cIW pOa mpV izs -lVm -alp +uIM +kMo grm sSp wvP @@ -91352,7 +91360,7 @@ ckE ckE oJD oPv -mmB +wZh xtu rvb ver @@ -91514,7 +91522,7 @@ kKZ aXa aXa iDe -qod +oUE aij oGZ aXa @@ -91597,8 +91605,8 @@ kir vXH pOa xYM -bRX -nmv +aez +ajK aSe jeL jxc @@ -91771,7 +91779,7 @@ vjF kZF aXa aXa -mMq +bns aXa aXa aXa @@ -91866,7 +91874,7 @@ mtj buN lTR bHE -vTu +jGG agZ rvb mhm @@ -92025,18 +92033,18 @@ wBn iFz eyX qYd -kZd -pUE -diu -guA -diu -diu -xDE -mmL -sME -igb -ePS -rQU +lmT +gtk +yhO +axK +yhO +yhO +crl +pSa +cUf +csb +uom +xSn cji vjF ejR @@ -92282,7 +92290,7 @@ hwZ rGe wtw tcW -tpl +mfb axO tcW tcW @@ -92293,7 +92301,7 @@ tcW tcW odh tcW -tpl +mfb qAX bhN wBe @@ -92378,8 +92386,8 @@ bHE vWv hMq hMq -hIT -dSS +sxf +jVx nKE xtu rvb @@ -92402,7 +92410,7 @@ yiJ sfA eQO xjI -jFT +iNo tSw tAH nwT @@ -92539,7 +92547,7 @@ tGX fwf ihb ihb -kRI +gtH ihb ihb mzI @@ -92550,7 +92558,7 @@ wZz wZz wZz oUU -vuf +xkB rDr wIM aCQ @@ -92635,7 +92643,7 @@ pSl eUN jpU jpU -iNj +xgz qXh ehg hgu @@ -92796,18 +92804,18 @@ qig ocG ihb pGZ -rCC +pJu mAe ihb nyf uZa nEZ wZz -oUl -cRD -vNk -usa -vuf +dNC +qOT +swR +cXs +xkB oDX dfB aCQ @@ -92892,7 +92900,7 @@ ppG nuO xQC ckE -lTm +iUJ bJk mpk pyU @@ -93052,16 +93060,16 @@ dAc lyu qDg ihb -rJe -duV -dmd +lfm +hOR +uGx ihb pEI jDB ybd wZz tIE -sQj +lnM wZz xwf fBY @@ -93149,7 +93157,7 @@ sSp jxc jfn jxc -fkK +stD jxc sSp sSp @@ -93663,7 +93671,7 @@ iFi eUW iFi iFi -gtp +gTn fod uVx jso @@ -94618,7 +94626,7 @@ qJi mzL hAL nRZ -pGC +uSV jDf gWT vaH @@ -95693,7 +95701,7 @@ jLQ fgS jrk dhX -jLS +dNS gBD twl bcx @@ -95716,7 +95724,7 @@ nBB nbT xxU tFr -ouz +npe eIO eIO eIO @@ -96517,7 +96525,7 @@ wnW tSw oBD iUm -eNA +gHK hPk xMz xMz @@ -96966,8 +96974,8 @@ tKN lMJ dsQ mZL -jbf -nyr +aEN +rru acf hmq dJX @@ -97980,7 +97988,7 @@ lKZ dNX iVA mlK -vAg +iRf dNX nyV dNX @@ -98556,7 +98564,7 @@ dXQ gmt qsx gmt -uYj +cmE uzk gmt qhx @@ -100067,7 +100075,7 @@ kmZ buL pha sdp -vxB +vOJ erl pbS eny @@ -103626,11 +103634,11 @@ ilh tWE edQ ilh -lJm +rbI dIO -hVX +ykz dIO -rdT +bCh dIO hxt qRk @@ -103883,11 +103891,11 @@ ilh qhR xAR ilh -tzD +vPZ dIO -vSU +iHO dIO -oos +oyW dIO dTv qRk @@ -104397,8 +104405,8 @@ nja icC eCn ilh -cbT -ntl +dKO +lNf fLz ujM cwF @@ -104466,7 +104474,7 @@ aBX iio kjG gwf -ien +hCo mMX rhe rPA @@ -104654,8 +104662,8 @@ ilh ilh ilh ilh -oTC -hqG +rWf +nft dIO dIO dIO @@ -104893,7 +104901,7 @@ szp szp szp ilh -bVw +oiz mVr jCj ihX @@ -104911,11 +104919,11 @@ xnU mgE xnU dIO -oVF -weo -fLz -lvU -nKO +jlY +vgu +kAF +uQW +gBK dIO aqa rNJ @@ -105147,8 +105155,8 @@ lMJ lMJ lMJ szp -xqY -wOP +lHH +vpR ilh ipG gKc @@ -105169,7 +105177,7 @@ yfw eek wst mPE -jmo +knf gGf dIO dIO @@ -105404,8 +105412,8 @@ aaa aaa aaa nvn -gzk -xYL +lLw +ePA ilh gfe aDR @@ -105716,14 +105724,14 @@ fGH fhQ sFB mal -qdO +rFO pmZ qdI ttF sRY wDh uIs -gJR +btn gsr pUA wFM @@ -105923,7 +105931,7 @@ peF liO sSs gkM -aeA +ibW uKL uKL mKu @@ -107005,7 +107013,7 @@ cfA mqu mJk itg -gAS +tEy nEB uIs bjl @@ -107524,7 +107532,7 @@ tQC gsP phS huG -rnt +eTs ydS kCZ nKI @@ -107761,7 +107769,7 @@ xww xww aEr sDs -uoE +cue obG gUe yks @@ -108044,10 +108052,10 @@ foB siz lKp unL -bwJ -wpq -wpq -hjz +laf +aJn +aJn +oZZ hWx ekG tUn @@ -108298,13 +108306,13 @@ huG gPq wYB qlL -bzQ -lOW +udO +hxz unL -xQf +uNd unL unL -uoU +gpv unL tUn tUn @@ -108555,13 +108563,13 @@ huG dhs wYB uXS -iAL +txP bnE unL -chB +kTZ unL iMF -lPm +guI uND slc tUn @@ -108812,13 +108820,13 @@ unL aLu unL xII -uGP +ltX kbR vOK -jSM +pnx unL kbN -nNb +gXd szJ heS tUn @@ -109069,14 +109077,14 @@ unL gmi unL unL -fiY +pNf unL unL -nCh +fGW unL vtI -bhh -hZM +mma +iMQ rAo tUn iLn @@ -109326,10 +109334,10 @@ nGo aBM unL lPy -ozQ -wpq -aEs -eqh +vRk +aJn +fhA +gub unL gjF sjB @@ -109579,11 +109587,11 @@ unL unL wOF esH -cUC +pdx xcO -jZD -mPO -utT +aXE +tXk +itW kGv xZb fWA @@ -109840,9 +109848,9 @@ dQy pDR unL unL -nTL +enf hCl -doj +aJm hum jCx cZF @@ -110096,8 +110104,8 @@ unL unL unL unL -luw -kBV +izJ +fFq izp goZ fWA @@ -110353,8 +110361,8 @@ uxt tcn iOm unL -rqy -ilw +mEx +mWA isl fWA fWA @@ -110869,7 +110877,7 @@ hCl mAJ dXe xrW -bpg +xdQ hum tSY jKA @@ -111582,7 +111590,7 @@ hMQ qXB qXB kpI -kBA +gEF qcP wrn qXB @@ -111924,7 +111932,7 @@ aaa aaa wmL apS -ucn +qkq ooz wmL aaa @@ -112181,7 +112189,7 @@ aaa aaa wmL cvO -hGR +uNO hUd uWk aaa @@ -112438,7 +112446,7 @@ aaa aaa wmL jkX -erW +frs dFo wmL aaa @@ -112650,7 +112658,7 @@ dFH ygb pEG cAj -iRw +xnn peM wUM cZw @@ -112695,7 +112703,7 @@ oMA lSw wmL gUS -lIg +qBo gUS wmL lSw @@ -112952,7 +112960,7 @@ oMA eYu agN bXs -dEQ +tLc juH pJA hLJ @@ -113209,7 +113217,7 @@ myr xfm nHG hjw -sis +bqJ hzL wNO tml @@ -113466,7 +113474,7 @@ vOz tsy sRa ppC -nyQ +twu mKD hxY nae @@ -113723,7 +113731,7 @@ ePT syV jsi eoZ -rzD +jjm nui wWV onD @@ -113980,7 +113988,7 @@ jlU jlU rsz lVB -luU +bsE uHD hEw jlU @@ -114237,7 +114245,7 @@ plp gog fUx pst -vWE +fkk vuK yag hFz @@ -114494,7 +114502,7 @@ mtu jfS bQQ lVB -psk +oWa iWc ces elm @@ -114751,7 +114759,7 @@ dVv gog jjj jNo -bWy +gAH klK aDQ hFz @@ -115008,7 +115016,7 @@ iTQ vGq avx vBf -lIf +uNs tIP qQJ vGq @@ -115259,16 +115267,16 @@ hbK hbK rMu xiL -iiH +krM fdZ mMK mMK mMK mMK -ifS +jxH tMI pwZ -hpS +kRy fdZ fdZ jvX @@ -115522,16 +115530,16 @@ amV vVx kyh iwO -osb -kFi -hHh -kFi -jQT -wga -eBX -eRJ -qwc -mVK +pQj +jzw +thT +jzw +sie +pgM +qiD +nYL +ddK +hAN wrc aaa aaa @@ -115788,7 +115796,7 @@ xVu idA xiL xiL -ftS +lmn wrc aaa aaa @@ -116045,7 +116053,7 @@ oQJ xlH mCj xiL -ftS +lmn hbK aaa aaa @@ -116302,7 +116310,7 @@ pDl uYP ljF xiL -ftS +lmn wrc lMJ lMJ @@ -116559,7 +116567,7 @@ gkC xlH mtu xiL -ftS +lmn hbK aaa aaa @@ -116816,7 +116824,7 @@ xVu idA xiL xiL -ftS +lmn wrc aaa aaa @@ -117072,8 +117080,8 @@ psc eTI rKg xiL -ftS -ftS +lmn +lmn wrc aaa aaa @@ -117329,7 +117337,7 @@ wFy ohD bZb xiL -ftS +lmn hbK hbK lMJ @@ -117586,7 +117594,7 @@ toM eOP hWa xiL -ftS +lmn wrc aaa aaa @@ -117843,7 +117851,7 @@ fff mtu ljF xiL -ftS +lmn wrc aaa aaa @@ -118100,7 +118108,7 @@ fff mtu lWM xiL -ftS +lmn hbK lMJ lMJ @@ -118357,7 +118365,7 @@ xiL xiL xiL xiL -ftS +lmn hbK aaa aaa @@ -118611,10 +118619,10 @@ mCu kgW jlU xiL -nLJ -ftS -ftS -mVK +qxr +lmn +lmn +hAN hbK aaa aaa @@ -118868,7 +118876,7 @@ xkv nET jlU iOJ -ftS +lmn rDf rDf utD @@ -119125,7 +119133,7 @@ nnc hdy aWp eSb -fSS +udp wHd uLa hbK @@ -119382,7 +119390,7 @@ kcu kcu jlU hbK -kDm +mTg hbK hbK hbK @@ -119638,9 +119646,9 @@ gyK kcu kcu jlU -hlG -cSS -dez +qgn +mCV +xuY hbK aaa aaa @@ -119895,8 +119903,8 @@ jQz nJr kcu jlU -muc -hXE +uxA +pHt lUS hbK aaa diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 1351c9d8694..538b38ba037 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -557,6 +557,7 @@ /obj/machinery/mech_bay_recharge_port{ dir = 2 }, +/obj/machinery/airalarm/directional/east, /turf/open/floor/plating, /area/mine/mechbay) "di" = ( @@ -736,6 +737,7 @@ dir = 4 }, /obj/machinery/light/directional/west, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/edge{ dir = 4 }, @@ -912,6 +914,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/brown/fourcorners, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark, /area/mine/production) "fD" = ( @@ -1238,6 +1241,7 @@ /obj/structure/cable, /obj/machinery/light/directional/south, /obj/effect/turf_decal/trimline/red/filled/line, +/obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark/smooth_edge{ dir = 1 }, @@ -1346,6 +1350,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, +/obj/machinery/wall_healer/directional/north, /turf/open/floor/iron/white, /area/mine/medical) "hD" = ( @@ -2016,6 +2021,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, +/obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark/smooth_edge, /area/mine/eva) "lh" = ( @@ -2217,6 +2223,7 @@ dir = 8 }, /obj/machinery/light/directional/east, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron, /area/mine/lounge) "lP" = ( @@ -2650,6 +2657,7 @@ /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/tile/brown/fourcorners, /obj/machinery/light/directional/west, +/obj/machinery/wall_healer/directional/west, /turf/open/floor/iron/dark, /area/mine/production) "nl" = ( @@ -2908,6 +2916,7 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 }, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark/smooth_edge{ dir = 4 }, @@ -3630,7 +3639,6 @@ /area/mine/cafeteria) "sX" = ( /obj/machinery/mechpad, -/obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 9 }, @@ -3731,6 +3739,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/white/smooth_corner, /area/mine/medical) "tE" = ( @@ -4206,6 +4215,7 @@ /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/checker, /area/mine/cafeteria) "wr" = ( @@ -4328,6 +4338,7 @@ dir = 10 }, /obj/effect/turf_decal/trimline/blue/filled/warning, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark, /area/mine/hydroponics) "xt" = ( @@ -5900,6 +5911,8 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, /turf/open/floor/iron/dark/smooth_edge{ dir = 8 }, @@ -6414,6 +6427,7 @@ /obj/item/mining_scanner, /obj/item/flashlight, /obj/item/clothing/glasses/meson, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark, /area/mine/storage/public) "Kp" = ( @@ -6558,6 +6572,7 @@ /obj/effect/turf_decal/trimline/red/filled/mid_joiner{ dir = 8 }, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark/textured_edge{ dir = 4 }, @@ -6758,6 +6773,7 @@ "Mc" = ( /obj/structure/chair/wood/wings, /obj/machinery/light/small/directional/east, +/obj/item/radio/intercom/directional/east, /turf/open/floor/carpet/neon/simple/red/nodots, /area/mine/cafeteria) "Me" = ( @@ -7349,6 +7365,7 @@ dir = 4 }, /obj/machinery/light/small/directional/east, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/textured_edge{ dir = 8 }, @@ -8574,7 +8591,6 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "WJ" = ( -/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 5 @@ -8947,6 +8963,13 @@ dir = 1 }, /area/mine/laborcamp/quarters) +"YD" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/dark, +/area/mine/production) "YF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9034,6 +9057,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron, /area/mine/cafeteria) "Zp" = ( @@ -49223,7 +49247,7 @@ RY RY dQ Cg -lb +YD pK Ob IL diff --git a/_maps/map_files/NebulaStation/NebulaStation.dmm b/_maps/map_files/NebulaStation/NebulaStation.dmm index dcdf808c474..d6250e9941a 100644 --- a/_maps/map_files/NebulaStation/NebulaStation.dmm +++ b/_maps/map_files/NebulaStation/NebulaStation.dmm @@ -1437,6 +1437,23 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/textured_large, /area/station/maintenance/starboard/central) +"akP" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 5 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/computer/crew{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "akT" = ( /obj/structure/sign/warning/directional/south, /obj/structure/hedge, @@ -2681,6 +2698,20 @@ }, /turf/open/floor/iron/white, /area/station/security/medical) +"aun" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/structure/table/reinforced/rglass, +/obj/effect/turf_decal/trimline/blue/line, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/computer/security/telescreen/cmo/directional/north, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "aup" = ( /obj/machinery/door/airlock{ name = "Unisex Restrooms" @@ -7015,6 +7046,14 @@ }, /turf/open/floor/iron/dark/small, /area/station/engineering/atmos) +"bca" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/structure/hedge, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "bcd" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery, @@ -13152,14 +13191,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/small, /area/station/engineering/main) -"bXO" = ( -/obj/machinery/vending/medical, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/storage) "bXP" = ( /obj/machinery/door/airlock/medical{ name = "Padded Cell"; @@ -18411,23 +18442,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/cargo/lobby) -"cMW" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/vending/wallmed/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/spawner/random/maintenance, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "cMY" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/effect/turf_decal/trimline/green/filled/line, @@ -23712,12 +23726,6 @@ }, /turf/open/floor/iron/white/small, /area/station/science/research) -"dAN" = ( -/obj/effect/turf_decal/siding/white/corner, -/obj/effect/turf_decal/trimline/green/line, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/checker, -/area/station/hallway/primary/port) "dAO" = ( /obj/machinery/door/poddoor/shutters{ id = "teleportershutters"; @@ -26607,6 +26615,7 @@ name = "Unit 3" }, /obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/duct, /turf/open/floor/iron/dark/diagonal, /area/station/commons/toilet/restrooms) "dXP" = ( @@ -26874,13 +26883,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/lower) -"dZC" = ( -/obj/effect/turf_decal/siding/dark_red, -/obj/machinery/vending/wallmed/directional/north, -/obj/item/kirbyplants/random, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/security/execution/transfer) "dZF" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -36023,6 +36025,7 @@ name = "Unit 2" }, /obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/duct, /turf/open/floor/iron/dark/diagonal, /area/station/commons/toilet/restrooms) "frS" = ( @@ -44361,6 +44364,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/turret_protected/ai_upload_foyer) +"gCz" = ( +/obj/machinery/wall_healer/directional/west{ + pixel_x = -26 + }, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/bot_white{ + color = "#52B4E9" + }, +/obj/structure/bed/medical/emergency, +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/structure/railing, +/obj/effect/turf_decal/siding, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "gCB" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 @@ -47899,6 +47916,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/thinplating_new/light/corner, +/obj/machinery/duct, /turf/open/floor/iron/white/herringbone, /area/station/commons/toilet/restrooms) "hdD" = ( @@ -50088,6 +50106,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, /turf/open/floor/iron/white/herringbone, /area/station/commons/toilet/restrooms) "htW" = ( @@ -50469,6 +50488,20 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/dark, /area/station/command) +"hwT" = ( +/obj/effect/turf_decal/trimline/purple/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/white, +/area/station/science/lower) "hwY" = ( /obj/structure/cable, /obj/structure/railing{ @@ -50593,6 +50626,7 @@ name = "Unit 1" }, /obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/duct, /turf/open/floor/iron/dark/diagonal, /area/station/commons/toilet/restrooms) "hxD" = ( @@ -53815,22 +53849,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry) -"hWH" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/cargo/lower) "hWJ" = ( /obj/machinery/holopad/secure, /obj/effect/turf_decal/box/white{ @@ -54959,12 +54977,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"ifb" = ( -/obj/effect/turf_decal/trimline/yellow, -/obj/machinery/light/floor, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) "ifj" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -55746,15 +55758,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/large, /area/station/service/theater) -"ilC" = ( -/obj/structure/table/optable, -/obj/machinery/vending/wallmed/directional/north, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/siding{ - dir = 5 - }, -/turf/open/floor/iron/white/herringbone, -/area/station/command/heads_quarters/cmo) "ilH" = ( /obj/structure/table/glass, /obj/item/storage/box/syringes, @@ -62818,6 +62821,15 @@ }, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) +"jqs" = ( +/obj/structure/table/optable, +/obj/machinery/wall_healer/directional/north, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/siding{ + dir = 5 + }, +/turf/open/floor/iron/white/herringbone, +/area/station/command/heads_quarters/cmo) "jqy" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/catwalk_floor/iron_dark, @@ -65248,19 +65260,6 @@ /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) -"jGU" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/obj/structure/filingcabinet/white, -/obj/structure/cable, -/obj/item/radio/intercom/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/cargo/office) "jGW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67593,23 +67592,6 @@ /obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/dark/small, /area/station/command/gateway) -"kal" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 5 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/computer/crew{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "kam" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /obj/structure/cable, @@ -73932,12 +73914,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"kSZ" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/bot_white, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/hallway/secondary/command) "kTa" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/broken_flooring/singular/directional/east, @@ -75699,20 +75675,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron/dark, /area/station/medical/virology) -"ljq" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/white, -/area/station/science/lower) "ljt" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -78205,6 +78167,17 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"lBD" = ( +/obj/machinery/light_switch/directional/west, +/obj/structure/table/glass, +/obj/machinery/computer/records/medical/laptop, +/obj/machinery/wall_healer/directional/north, +/obj/effect/turf_decal/trimline/dark_red/filled/line{ + dir = 9 + }, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/white, +/area/station/security/medical) "lBP" = ( /obj/effect/turf_decal/tile/dark_blue, /obj/effect/turf_decal/siding/dark{ @@ -81376,14 +81349,6 @@ /obj/structure/table/glass, /turf/open/floor/iron/dark/textured_edge, /area/station/security/prison) -"mdl" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/hedge, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "mdm" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/bot, @@ -84784,26 +84749,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"mDV" = ( -/obj/machinery/light/directional/west, -/obj/structure/bed/medical/emergency, -/obj/effect/turf_decal/bot_white{ - color = "#52B4E9" - }, -/obj/machinery/vending/wallmed/directional/west{ - pixel_x = -26 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/siding{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "mDW" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -97176,17 +97121,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"ovQ" = ( -/obj/machinery/light_switch/directional/west, -/obj/structure/table/glass, -/obj/machinery/computer/records/medical/laptop, -/obj/machinery/vending/wallmed/directional/north, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 9 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/white, -/area/station/security/medical) "ovR" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, @@ -98591,20 +98525,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"oGT" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "oGW" = ( /obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ @@ -102050,6 +101970,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron/white/herringbone, /area/station/commons/toilet/restrooms) "pem" = ( @@ -102305,6 +102226,23 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/central) +"pfS" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/wall_healer/directional/south, +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/obj/effect/spawner/random/maintenance, +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "pfY" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 10 @@ -107482,20 +107420,6 @@ dir = 1 }, /area/station/engineering/atmos) -"pRT" = ( -/obj/machinery/vending/wallmed/directional/west{ - pixel_x = -26 - }, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/bot_white{ - color = "#52B4E9" - }, -/obj/structure/bed/medical/emergency, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/railing, -/obj/effect/turf_decal/siding, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "pRX" = ( /obj/structure/chair/sofa/bench/right, /turf/open/floor/glass/reinforced, @@ -108689,6 +108613,7 @@ /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron/white/herringbone, /area/station/commons/toilet/restrooms) "qbN" = ( @@ -111316,6 +111241,26 @@ /obj/structure/sign/poster/contraband/random/directional/east, /turf/open/openspace, /area/station/maintenance/port/fore) +"qxn" = ( +/obj/machinery/light/directional/west, +/obj/structure/bed/medical/emergency, +/obj/effect/turf_decal/bot_white{ + color = "#52B4E9" + }, +/obj/machinery/wall_healer/directional/west{ + pixel_x = -26 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "qxo" = ( /obj/structure/chair/sofa/corp/left, /obj/structure/cable, @@ -113901,6 +113846,15 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/small, /area/station/engineering/atmos) +"qQp" = ( +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/structure/sign/poster/official/get_your_legs/directional/north, +/turf/open/floor/wood/parquet, +/area/station/medical/psychology) "qQq" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 @@ -114910,6 +114864,12 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/secondary/command) +"qZF" = ( +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/dark/textured_large, +/area/station/hallway/secondary/service) "qZM" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -117069,6 +117029,14 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark, /area/station/science/lower) +"rpy" = ( +/obj/machinery/vending/medical, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/dark/textured, +/area/station/medical/storage) "rpD" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/turf_decal/stripes/line{ @@ -117645,6 +117613,12 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter) +"rtp" = ( +/obj/effect/turf_decal/trimline/yellow, +/obj/machinery/light/floor, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) "rty" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, @@ -125297,22 +125271,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) -"sCX" = ( -/obj/effect/turf_decal/siding/dark, -/obj/effect/turf_decal/trimline/dark_blue/filled/line, -/obj/structure/rack, -/obj/item/stack/medical/gauze, -/obj/item/stack/medical/mesh, -/obj/item/stack/medical/suture, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/syringe/multiver, -/obj/machinery/vending/wallmed/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "sDa" = ( /obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 8 @@ -126027,12 +125985,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/execution/education) -"sIQ" = ( -/obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/service) "sIT" = ( /obj/structure/railing/corner{ dir = 1 @@ -130013,20 +129965,6 @@ /obj/effect/turf_decal/trimline/dark/corner, /turf/open/floor/iron/dark/textured_corner, /area/station/science/genetics) -"tog" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/computer/security/telescreen/cmo/directional/north, -/obj/item/storage/medkit/advanced, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "toh" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -133749,6 +133687,12 @@ }, /turf/open/floor/iron/textured, /area/station/hallway/primary/starboard) +"tNF" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/spawner/random/vending/colavend, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "tNK" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/effect/decal/cleanable/glass, @@ -136387,15 +136331,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/aisat/exterior) -"ujm" = ( -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/structure/sign/poster/official/get_your_legs/directional/north, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) "ujo" = ( /obj/structure/table/optable, /obj/machinery/light/small/directional/north, @@ -136686,6 +136621,19 @@ /obj/structure/table/wood/fancy/black, /turf/open/floor/wood/large, /area/station/service/kitchen/diner) +"umE" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/structure/filingcabinet/white, +/obj/structure/cable, +/obj/item/radio/intercom/directional/north, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/dark, +/area/station/cargo/office) "umI" = ( /obj/structure/table/reinforced/rglass, /obj/item/paper_bin{ @@ -137156,6 +137104,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/cargo) +"uqB" = ( +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/bot_white, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/hallway/secondary/command) "uqH" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -142295,6 +142249,12 @@ /obj/effect/turf_decal/trimline/blue, /turf/open/floor/iron/white/textured, /area/station/commons/fitness/recreation/pool) +"vee" = ( +/obj/effect/turf_decal/siding/white/corner, +/obj/effect/turf_decal/trimline/green/line, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/checker, +/area/station/hallway/primary/port) "veh" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/north, @@ -145239,12 +145199,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/gateway) -"vyK" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/spawner/random/vending/colavend, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) "vyM" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 4 @@ -146472,6 +146426,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) +"vIL" = ( +/obj/effect/turf_decal/siding/dark_red, +/obj/machinery/wall_healer/directional/north, +/obj/item/kirbyplants/random, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/security/execution/transfer) "vIM" = ( /obj/effect/turf_decal/siding/purple{ dir = 8 @@ -148556,6 +148517,22 @@ /obj/structure/railing, /turf/open/floor/iron/dark/textured, /area/station/engineering/engine_smes) +"waz" = ( +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/trimline/dark_blue/filled/line, +/obj/structure/rack, +/obj/item/stack/medical/gauze, +/obj/item/stack/medical/mesh, +/obj/item/stack/medical/suture, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/syringe/multiver, +/obj/machinery/wall_healer/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "waE" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -157038,6 +157015,20 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"xrm" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "xrq" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -157180,6 +157171,7 @@ dir = 8 }, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/white/herringbone, /area/station/commons/toilet/restrooms) "xsN" = ( @@ -160361,6 +160353,22 @@ }, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"xRb" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/cargo/lower) "xRc" = ( /obj/structure/table/glass, /obj/structure/window/spawner/directional/south, @@ -178205,7 +178213,7 @@ dPz rob euQ rPv -vyK +tNF tKx vdJ qgY @@ -191277,7 +191285,7 @@ fGC fGC fGC eof -ilC +jqs kEs lnD pAa @@ -197986,7 +197994,7 @@ viw gmA uWg awW -mdl +bca vyw aww pcR @@ -198194,7 +198202,7 @@ oZM oZM oZM mqG -hWH +xRb gXY osL xnF @@ -201826,7 +201834,7 @@ oyn mLr jkp seD -ljq +hwT mwq sMC upM @@ -203167,7 +203175,7 @@ sgp lbg nVK nEQ -ovQ +lBD dKQ qnH suG @@ -216245,7 +216253,7 @@ ccC ccC uak uak -tog +aun pHI tsk nUp @@ -216502,7 +216510,7 @@ gym gym gym uak -kal +akP pNr aoh vNa @@ -242981,7 +242989,7 @@ xDF ajW gGl hbN -sIQ +qZF bLu mDH xOa @@ -252233,7 +252241,7 @@ bwC vdN odr hYK -dAN +vee naa naa sax @@ -253987,7 +253995,7 @@ niR ihf kdm nkZ -bXO +rpy axH rXn pPJ @@ -255815,7 +255823,7 @@ xlX uxU iWJ ykO -cMW +pfS bwC bwC kef @@ -258363,11 +258371,11 @@ nox fVk uVd kCn -pRT +gCz jgD tDe rft -mDV +qxn pAH uVd jxl @@ -259369,7 +259377,7 @@ vyr ufN qze nhR -jGU +umE oCd wUK lbm @@ -260153,7 +260161,7 @@ tvq pxg pqa bxI -ujm +qQp mTe hLY afs @@ -262204,7 +262212,7 @@ jdi gYc tnJ aDo -oGT +xrm yhV aYc aYc @@ -262546,7 +262554,7 @@ eHT gFi eeG uWW -ifb +rtp iOj mMr cAe @@ -268194,7 +268202,7 @@ nlQ bAk uyy wYi -dZC +vIL qYy saU iaN @@ -274844,7 +274852,7 @@ xyo xWq eIH exz -kSZ +uqB eNS xjE vcF @@ -283076,7 +283084,7 @@ gJa mQG bqJ eKI -sCX +waz tUn tUn txW diff --git a/_maps/map_files/debug/gateway_test.dmm b/_maps/map_files/debug/gateway_test.dmm index d136530a07b..83c8511828f 100644 --- a/_maps/map_files/debug/gateway_test.dmm +++ b/_maps/map_files/debug/gateway_test.dmm @@ -34,7 +34,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/directional/west, /turf/open/indestructible, /area/misc/testroom/gateway_room) "j" = ( diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index cf6f7ce1f10..dfcce8dc3b2 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -425,6 +425,11 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/control) +"bW" = ( +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/ferry) "bZ" = ( /obj/effect/turf_decal/tile/green, /obj/effect/light_emitter/thunderdome, @@ -974,13 +979,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, /area/centcom/central_command_areas/evacuation/ship) -"eq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/bot, -/obj/machinery/status_display/evac/directional/east, -/turf/open/floor/iron, -/area/centcom/central_command_areas/supply) "et" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -1117,12 +1115,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood/tile, /area/centcom/central_command_areas/evacuation/ship) -"eY" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/ferry) "fa" = ( /obj/machinery/status_display/evac/directional/south, /obj/effect/turf_decal/tile/green{ @@ -2113,12 +2105,6 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/supply) -"ju" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/centcom/central_command_areas/supply) "jv" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -2500,6 +2486,17 @@ }, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/evacuation/ship) +"lj" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/fourcolor, +/obj/machinery/wall_healer/directional/north{ + use_power = 0 + }, +/obj/machinery/computer/security/telescreen/entertainment/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/admin) "ln" = ( /obj/machinery/light/directional/south, /obj/effect/turf_decal/tile/brown/half/contrasted, @@ -2943,11 +2940,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin) -"nB" = ( -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/ferry) "nC" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security" @@ -3567,14 +3559,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin/storage) -"qn" = ( -/obj/structure/filingcabinet/white, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/centcom/central_command_areas/supply) "qo" = ( /obj/structure/table/reinforced, /obj/item/folder, @@ -5280,6 +5264,13 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/centcom/tdome/observation) +"xI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/iron, +/area/centcom/central_command_areas/supply) "xN" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, @@ -6929,6 +6920,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/courtroom) +"Fm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/centcom/central_command_areas/supply) "Fo" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -9220,6 +9217,14 @@ }, /turf/open/floor/iron/grimy, /area/centcom/central_command_areas/admin) +"Rm" = ( +/obj/structure/filingcabinet/white, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/centcom/central_command_areas/supply) "Rn" = ( /obj/structure/table/wood, /obj/item/clipboard, @@ -9364,6 +9369,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/control) +"RT" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/ferry) "RV" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, @@ -9598,6 +9609,11 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin) +"Th" = ( +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/supply) "Tj" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/cup/glass/bottle/whiskey{ @@ -9646,12 +9662,6 @@ }, /turf/open/floor/iron/dark, /area/centcom/tdome/observation) -"Tq" = ( -/obj/structure/filingcabinet/white, -/obj/machinery/status_display/evac/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/supply) "Ts" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, @@ -9792,6 +9802,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin/storage) +"Ud" = ( +/obj/structure/filingcabinet/white, +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/supply) "Uf" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, @@ -9923,6 +9939,16 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/centcom/central_command_areas/admin/storage) +"UK" = ( +/obj/structure/closet/secure_closet/ert_med, +/obj/machinery/wall_healer/directional/south{ + use_power = 0 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/iron, +/area/centcom/central_command_areas/armory) "UM" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 @@ -10079,16 +10105,6 @@ }, /turf/open/floor/iron, /area/centcom/tdome/observation) -"Vu" = ( -/obj/structure/closet/secure_closet/ert_med, -/obj/machinery/vending/wallmed/directional/south{ - use_power = 0 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/centcom/central_command_areas/armory) "Vv" = ( /obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 4 @@ -10522,11 +10538,6 @@ }, /turf/open/floor/wood, /area/centcom/central_command_areas/admin) -"XA" = ( -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/supply) "XC" = ( /obj/machinery/vending/snack, /obj/effect/turf_decal/delivery, @@ -10969,17 +10980,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/control) -"ZT" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen/fourcolor, -/obj/machinery/vending/wallmed/directional/north{ - use_power = 0 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) "ZX" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security" @@ -46625,7 +46625,7 @@ aa aa aa oe -nB +bW su ts pR @@ -46882,7 +46882,7 @@ aa aa aa mD -eY +RT sv tt PH @@ -50217,7 +50217,7 @@ iF iF iF On -ZT +lj To WX Ur @@ -50753,7 +50753,7 @@ bH bH sE sE -Vu +UK Ya aa aa @@ -51249,7 +51249,7 @@ yd GL oT FO -Tq +Ud YU Sh Ps @@ -51506,7 +51506,7 @@ hz mi pj nm -XA +Th Sx Nn yi @@ -52020,7 +52020,7 @@ os iR oJ lo -qn +Rm YU YU YU @@ -53029,8 +53029,8 @@ iS iZ Gl jq -ju -eq +Fm +xI vY jN jQ diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 8c0ae9617e5..7aa0b2872fd 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -2755,10 +2755,6 @@ }, /turf/open/floor/iron, /area/station/engineering/break_room) -"anb" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) "anj" = ( /obj/effect/turf_decal/stripes/end{ dir = 8 @@ -9318,6 +9314,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) +"ceA" = ( +/obj/item/experi_scanner{ + pixel_x = 5 + }, +/obj/item/experi_scanner, +/obj/item/experi_scanner{ + pixel_x = -5 + }, +/obj/structure/table/glass, +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron/white, +/area/station/science/research) "ceF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -10087,6 +10096,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos) +"csR" = ( +/obj/machinery/door/airlock{ + name = "Unit 4"; + id_tag = "Toilet4" + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "cta" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -10554,6 +10571,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"cAK" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) "cBo" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -10677,10 +10698,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/warehouse) -"cDZ" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "cEb" = ( /obj/structure/railing{ dir = 8 @@ -10832,6 +10849,15 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/explab) +"cFZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/computer/records/medical, +/obj/machinery/light/cold/directional/north, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "cGc" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -10925,6 +10951,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"cHY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/pump/off/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "cHZ" = ( /obj/structure/railing, /turf/open/floor/glass/reinforced, @@ -12018,12 +12054,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"dbe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance) "dbo" = ( /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -13164,13 +13194,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/security/prison/workout) -"dwj" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "dwk" = ( /obj/effect/mapping_helpers/airlock/access/all/service/general, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -13448,6 +13471,14 @@ /obj/machinery/light/dim/directional/west, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) +"dAM" = ( +/obj/machinery/door/airlock{ + name = "Unit 2"; + id_tag = "Toilet2" + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "dAR" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/bot, @@ -14630,11 +14661,6 @@ }, /turf/open/floor/carpet, /area/station/cargo/miningdock) -"dUP" = ( -/obj/machinery/light/directional/east, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) "dUT" = ( /turf/closed/wall, /area/station/science/lower) @@ -15522,13 +15548,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"enF" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "eor" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 8 @@ -16362,22 +16381,6 @@ }, /turf/open/floor/iron, /area/station/service/theater) -"eEk" = ( -/obj/machinery/button/elevator/directional/north{ - id = "tram_xeno_lift" - }, -/obj/machinery/lift_indicator/directional/north{ - linked_elevator_id = "tram_xeno_lift" - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 5 - }, -/obj/machinery/light/directional/north, -/obj/machinery/door/window/elevator/left/directional/east{ - transport_linked_id = "tram_xeno_lift" - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "eEl" = ( /obj/machinery/meter/monitored/distro_loop, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, @@ -16851,15 +16854,18 @@ /obj/effect/turf_decal/trimline/tram/filled/warning, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) -"eOA" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 +"eOG" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = 8; + pixel_y = 4 }, -/obj/machinery/door/window/elevator/right/directional/west{ - transport_linked_id = "tram_xeno_lift" +/obj/item/radio/intercom/directional/west, +/obj/item/storage/medkit/regular{ + pixel_x = -6 }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) +/turf/open/floor/iron, +/area/station/command/bridge) "eOL" = ( /obj/structure/table/wood, /obj/item/instrument/violin, @@ -17264,6 +17270,25 @@ "eVz" = ( /turf/open/floor/grass, /area/station/service/hydroponics) +"eVB" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/machinery/camera/directional/east{ + network = list("ss13","medbay"); + c_tag = "Medical - Surgery B" + }, +/obj/machinery/wall_healer/directional/north, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/machinery/light_switch/directional/east{ + pixel_x = 22; + pixel_y = -9 + }, +/turf/open/floor/iron/white, +/area/station/medical/surgery/aft) "eVC" = ( /obj/effect/spawner/random/decoration/showcase, /obj/structure/window/reinforced/spawner/directional/north, @@ -17378,26 +17403,6 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) -"eXH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/camera/directional/south{ - network = list("ss13","rd"); - c_tag = "Science - Xenobiology South" - }, -/obj/structure/closet{ - anchored = 1; - name = "Cold protection gear" - }, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "eXL" = ( /obj/effect/turf_decal/siding/thinplating/corner, /obj/structure/railing/corner, @@ -17723,13 +17728,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) -"ffE" = ( -/obj/machinery/door/airlock{ - name = "Unit 1"; - id_tag = "Toilet1" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "ffL" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17977,15 +17975,6 @@ }, /turf/open/floor/iron/dark/airless, /area/station/science/ordnance/freezerchamber) -"fjq" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/machinery/door/window/elevator/left/directional/east{ - transport_linked_id = "tram_xeno_lift" - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "fju" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner, /obj/effect/decal/cleanable/dirt, @@ -17997,6 +17986,15 @@ }, /turf/open/floor/iron, /area/station/maintenance/tram/left) +"fjA" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 8 + }, +/obj/machinery/door/window/elevator/right/directional/west{ + transport_linked_id = "tram_xeno_lift" + }, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "fjN" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -18470,24 +18468,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/science/ordnance/storage) -"fsm" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/obj/structure/ladder, -/obj/machinery/elevator_control_panel/directional/south{ - linked_elevator_id = "tram_xeno_lift"; - pixel_x = 31; - pixel_y = -31 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "fss" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18951,12 +18931,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/cargo/warehouse) -"fCo" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) "fCy" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/engine, @@ -18980,6 +18954,14 @@ /obj/machinery/light/warm/directional/west, /turf/open/floor/iron, /area/station/cargo/miningdock/cafeteria) +"fCX" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/computer/crew, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "fDg" = ( /obj/structure/table, /obj/item/clothing/gloves/boxing, @@ -20389,13 +20371,6 @@ /obj/machinery/air_sensor/nitrous_tank, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) -"gdz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "gdC" = ( /obj/machinery/door/airlock{ name = "Private Stall 2"; @@ -20506,19 +20481,6 @@ /obj/structure/fluff/iced_abductor, /turf/open/misc/asteroid/airless, /area/station/asteroid) -"gfY" = ( -/obj/item/experi_scanner{ - pixel_x = 5 - }, -/obj/item/experi_scanner, -/obj/item/experi_scanner{ - pixel_x = -5 - }, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron/white, -/area/station/science/research) "gga" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Server Room" @@ -21908,6 +21870,22 @@ }, /turf/open/floor/iron/white, /area/station/science/research) +"gFa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/reagent_dispensers/watertank, +/obj/item/extinguisher{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/extinguisher, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "gFf" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/hallway) @@ -22228,15 +22206,6 @@ }, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) -"gMG" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/light/directional/east, -/obj/machinery/smartfridge/extract/preloaded, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "gMH" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -22289,6 +22258,21 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/central/lesser) +"gNr" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/storage/box/monkeycubes{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = 6; + pixel_y = 4 + }, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "gNy" = ( /turf/open/floor/iron/dark/herringbone, /area/station/commons/vacant_room) @@ -23698,6 +23682,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"hox" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) "hoA" = ( /obj/effect/landmark/firealarm_sanity, /turf/open/openspace, @@ -24110,16 +24101,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/tram/right) -"hAQ" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 9 - }, -/obj/machinery/light/directional/north, -/obj/machinery/door/window/elevator/right/directional/west{ - transport_linked_id = "tram_xeno_lift" - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "hAR" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -24581,6 +24562,28 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/plating, /area/station/engineering/atmos) +"hIY" = ( +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/mmi{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = -2 + }, +/turf/open/floor/iron, +/area/station/science/explab) "hJa" = ( /obj/structure/table, /obj/item/electronics/apc, @@ -25512,13 +25515,6 @@ }, /turf/open/floor/iron, /area/station/security/brig) -"iab" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) "iae" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -25673,6 +25669,12 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) +"idn" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input{ + dir = 4 + }, +/turf/open/floor/engine/o2, +/area/station/science/ordnance/storage) "idz" = ( /obj/effect/turf_decal/trimline/green/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26888,13 +26890,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"iCe" = ( -/obj/machinery/door/airlock{ - name = "Unit 2"; - id_tag = "Toilet2" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "iCh" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 @@ -26995,6 +26990,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/commons/lounge) +"iEx" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "iEz" = ( /obj/structure/lattice, /obj/machinery/camera/motion{ @@ -27194,6 +27196,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/service/bar/backroom) +"iIv" = ( +/obj/machinery/door/airlock{ + name = "Unit 3"; + id_tag = "Toilet3" + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "iIH" = ( /obj/machinery/power/terminal{ dir = 8 @@ -27593,14 +27603,6 @@ }, /turf/open/floor/iron, /area/station/security/prison) -"iPT" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/commons/dorms/laundry) "iQC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/sorting/mail/flip{ @@ -27616,6 +27618,22 @@ /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, /turf/open/floor/iron, /area/station/engineering/atmos) +"iQG" = ( +/obj/machinery/button/elevator/directional/north{ + id = "tram_xeno_lift" + }, +/obj/machinery/lift_indicator/directional/north{ + linked_elevator_id = "tram_xeno_lift" + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 5 + }, +/obj/machinery/light/directional/north, +/obj/machinery/door/window/elevator/left/directional/east{ + transport_linked_id = "tram_xeno_lift" + }, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "iQH" = ( /obj/machinery/computer/security/mining{ dir = 1 @@ -28547,15 +28565,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"jgx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "jgy" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -29830,22 +29839,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/maintenance/port/central) -"jAo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/reagent_dispensers/watertank, -/obj/item/extinguisher{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/extinguisher, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "jAt" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, @@ -30138,6 +30131,12 @@ }, /turf/open/space/openspace, /area/station/solars/starboard/fore) +"jGx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/science/ordnance) "jGD" = ( /obj/structure/chair{ dir = 1 @@ -30686,6 +30685,14 @@ /obj/item/trash/flare, /turf/open/misc/asteroid, /area/station/medical/chemistry) +"jRf" = ( +/obj/machinery/door/airlock{ + name = "Unit 1"; + id_tag = "Toilet1" + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "jRo" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -31108,18 +31115,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"jYd" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "jYe" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -32100,10 +32095,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"kla" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) "kli" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -32904,6 +32895,12 @@ }, /turf/open/space/openspace, /area/space) +"kza" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/iron/white, +/area/station/science/ordnance) "kzg" = ( /obj/structure/table, /obj/machinery/recharger, @@ -34339,6 +34336,11 @@ /obj/effect/turf_decal/trimline/neutral/filled/corner, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"kVJ" = ( +/obj/machinery/light/cold/directional/north, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "kVP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34522,6 +34524,13 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/white, /area/station/science/lower) +"kZa" = ( +/obj/machinery/camera/directional/south{ + pixel_x = 21; + pixel_y = 0 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "kZh" = ( /turf/open/floor/eighties/red, /area/station/commons/fitness/recreation/entertainment) @@ -34941,16 +34950,6 @@ /obj/machinery/telecomms/server/presets/security, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"lis" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/binary/pump/off/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "liC" = ( /obj/machinery/porta_turret/ai{ dir = 4 @@ -35797,13 +35796,6 @@ }, /turf/open/floor/iron, /area/station/cargo/office) -"lvU" = ( -/obj/machinery/camera/directional/north{ - network = list("ss13","rd","xeno"); - c_tag = "Science - Xenobiology Lower Containment Chamber" - }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) "lwd" = ( /obj/machinery/door/airlock/security{ name = "Security Checkpoint" @@ -35862,6 +35854,15 @@ }, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) +"lxd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "lxi" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/cable, @@ -36018,6 +36019,11 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"lyQ" = ( +/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/machinery/processor/slime, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "lyR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36353,13 +36359,6 @@ dir = 4 }, /area/station/service/chapel) -"lEt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output{ - dir = 8; - chamber_id = "o2ordance" - }, -/turf/open/floor/engine/o2, -/area/station/science/ordnance/storage) "lED" = ( /obj/effect/turf_decal/trimline/red/corner{ dir = 4 @@ -36794,13 +36793,6 @@ /obj/structure/tank_holder/extinguisher, /turf/open/floor/iron, /area/station/cargo/office) -"lMw" = ( -/obj/machinery/door/airlock{ - name = "Unit 3"; - id_tag = "Toilet3" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "lMJ" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -37204,6 +37196,10 @@ }, /turf/open/floor/iron, /area/station/security/prison/safe) +"lTo" = ( +/obj/machinery/atmospherics/pipe/smart/simple/supply, +/turf/closed/wall, +/area/station/science/ordnance) "lTs" = ( /turf/closed/wall/r_wall, /area/station/maintenance/solars/starboard/fore) @@ -37605,14 +37601,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"mad" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/computer/records/medical, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "mai" = ( /obj/machinery/holopad, /obj/effect/landmark/start/scientist, @@ -38108,26 +38096,6 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/qm) -"mib" = ( -/obj/structure/table, -/obj/item/multitool/circuit{ - pixel_x = -7; - pixel_y = 0 - }, -/obj/item/multitool/circuit{ - pixel_x = 0; - pixel_y = 0 - }, -/obj/item/multitool/circuit{ - pixel_x = 7; - pixel_y = 0 - }, -/obj/machinery/camera/directional/south{ - network = list("ss13","rd"); - c_tag = "Science - Testing Lab" - }, -/turf/open/floor/iron, -/area/station/science/explab) "min" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -38631,6 +38599,11 @@ /obj/machinery/teleport/hub, /turf/open/floor/circuit, /area/station/command/teleporter) +"msF" = ( +/obj/structure/filingcabinet/white, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/carpet, +/area/station/medical/psychology) "msS" = ( /turf/open/openspace, /area/station/maintenance/solars/port) @@ -39951,6 +39924,12 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/white, /area/station/medical/storage) +"mVN" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 4 + }, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) "mVS" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/door/window/left/directional/west{ @@ -39964,6 +39943,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"mVW" = ( +/obj/structure/table/glass, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/item/reagent_containers/cup/bottle/multiver, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/white, +/area/station/security/medical) "mWj" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/donkpockets, @@ -41031,6 +41020,11 @@ /obj/structure/lattice, /turf/open/openspace, /area/station/hallway/primary/tram/center) +"nnM" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "nnQ" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -41364,6 +41358,10 @@ /obj/effect/landmark/navigate_destination/chemfactory, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"nuu" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) "nuw" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -42000,18 +41998,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"nFU" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/box/red, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance) "nFZ" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/camera/directional/east{ @@ -43622,6 +43608,16 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"ojn" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/item/stack/medical/mesh, +/obj/item/stack/medical/gauze, +/obj/structure/table/glass, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "ojI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43730,17 +43726,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/service/library) -"ols" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/bed/medical/emergency, -/obj/machinery/camera/directional/south{ - network = list("ss13","medbay"); - c_tag = "Medical - Lobby" - }, -/obj/effect/turf_decal/bot, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "olG" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 @@ -43931,12 +43916,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/security/brig) -"oqe" = ( -/obj/structure/filingcabinet/white, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron, -/area/station/cargo/sorting) "oqh" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -44202,6 +44181,24 @@ /obj/machinery/meter, /turf/closed/wall/r_wall, /area/station/engineering/atmos) +"ovA" = ( +/obj/structure/table/glass, +/obj/item/stack/medical/mesh, +/obj/item/stack/medical/gauze, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/machinery/camera/directional/east{ + network = list("ss13","medbay"); + c_tag = "Medical - Treatment South-East" + }, +/obj/machinery/wall_healer/directional/east, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "ovL" = ( /turf/open/floor/iron, /area/station/hallway/secondary/service) @@ -45460,26 +45457,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/commons/vacant_room/office) -"oXl" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/camera/directional/south{ - network = list("ss13","rd"); - c_tag = "Science - Mixing Lab" - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "ordnanceburn" - }, -/obj/machinery/computer/atmos_control/ordnancemix{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance) "oXq" = ( /obj/machinery/door/poddoor/shutters{ name = "MiniSat Teleport Access"; @@ -48064,6 +48041,26 @@ "pQx" = ( /turf/open/misc/asteroid/dug, /area/station/science/explab) +"pQy" = ( +/obj/structure/table, +/obj/item/multitool/circuit{ + pixel_x = -7; + pixel_y = 0 + }, +/obj/item/multitool/circuit{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/multitool/circuit{ + pixel_x = 7; + pixel_y = 0 + }, +/obj/machinery/camera/directional/south{ + network = list("ss13","rd"); + c_tag = "Science - Testing Lab" + }, +/turf/open/floor/iron, +/area/station/science/explab) "pQF" = ( /obj/structure/table, /obj/machinery/reagentgrinder, @@ -48179,6 +48176,15 @@ /obj/structure/sign/departments/evac/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/exit) +"pUi" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 + }, +/obj/machinery/door/window/elevator/left/directional/east{ + transport_linked_id = "tram_xeno_lift" + }, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "pUj" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 10 @@ -49333,12 +49339,6 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) -"qpb" = ( -/obj/structure/closet/secure_closet/exile, -/obj/effect/turf_decal/bot, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/command/gateway) "qpj" = ( /obj/structure/chair/stool/bar/directional/east, /obj/effect/landmark/start/prisoner, @@ -49465,13 +49465,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/hallway/secondary/exit) -"qrW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "qsa" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -49607,6 +49600,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/freezer, /area/station/commons/toilet) +"qul" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output{ + dir = 8 + }, +/turf/open/floor/engine/o2, +/area/station/science/ordnance/storage) "qup" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -50245,6 +50244,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/maintenance/disposal) +"qHa" = ( +/obj/machinery/light/directional/east, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) "qHe" = ( /obj/machinery/camera/directional/north{ c_tag = "Secure - Gateway" @@ -50342,13 +50346,6 @@ }, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) -"qIf" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/computer/crew, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "qIq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/machinery/light/directional/west, @@ -51081,6 +51078,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/hydroponics) +"qWf" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/box/red, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/science/ordnance) "qWy" = ( /obj/item/kirbyplants/random, /obj/machinery/newscaster/directional/south, @@ -51223,13 +51232,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) -"qYx" = ( -/obj/machinery/door/airlock{ - name = "Unit 5"; - id_tag = "Toilet5" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "qYJ" = ( /obj/machinery/flasher/directional/north{ id = "AI" @@ -51461,13 +51463,6 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"rbY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) "rci" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -51553,24 +51548,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"rdJ" = ( -/obj/structure/table/glass, -/obj/item/stack/medical/mesh, -/obj/item/stack/medical/gauze, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/machinery/camera/directional/east{ - network = list("ss13","medbay"); - c_tag = "Medical - Treatment South-East" - }, -/obj/machinery/vending/wallmed/directional/east, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "rdN" = ( /obj/machinery/mech_bay_recharge_port{ dir = 1 @@ -51651,6 +51628,10 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"rfi" = ( +/obj/machinery/camera/directional/north, +/turf/open/floor/engine, +/area/station/science/xenobiology) "rfQ" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -52019,13 +52000,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"rlX" = ( -/obj/machinery/door/airlock{ - name = "Unit 4"; - id_tag = "Toilet4" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "rlZ" = ( /obj/machinery/camera/directional/west{ c_tag = "Hallway - Starboard Tram Platform North" @@ -52258,6 +52232,26 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/catwalk_floor, /area/station/hallway/primary/tram/center) +"roQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/camera/directional/south{ + network = list("ss13","rd"); + c_tag = "Science - Xenobiology South" + }, +/obj/structure/closet{ + anchored = 1; + name = "Cold protection gear" + }, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/clothing/suit/hooded/wintercoat/science, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "roR" = ( /turf/closed/wall, /area/station/science/breakroom) @@ -52565,10 +52559,6 @@ /obj/structure/lattice, /turf/open/openspace, /area/station/hallway/primary/tram/left) -"rvS" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply, -/turf/closed/wall, -/area/station/science/ordnance) "rvY" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52692,21 +52682,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/white, /area/station/science/research) -"rxY" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/item/storage/box/monkeycubes{ - pixel_x = -5; - pixel_y = 1 - }, -/obj/item/storage/box/monkeycubes{ - pixel_x = 6; - pixel_y = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "ryc" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/airless, @@ -53044,6 +53019,13 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"rFD" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "rGj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/cafeteria, @@ -53233,6 +53215,14 @@ /obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/dark, /area/station/science/explab) +"rKH" = ( +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) "rKL" = ( /obj/machinery/newscaster/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53299,7 +53289,15 @@ }, /turf/open/floor/engine/hull, /area/station/solars/port) -"rLz" = ( +"rLB" = ( +/obj/machinery/power/smes{ + charge = 5e+06 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/commons/vacant_room) +"rLG" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 }, @@ -53313,14 +53311,6 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance) -"rLB" = ( -/obj/machinery/power/smes{ - charge = 5e+06 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/commons/vacant_room) "rLP" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 8 @@ -53464,14 +53454,6 @@ }, /turf/open/floor/iron, /area/station/science/lab) -"rNW" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron, -/area/station/engineering/break_room) "rOh" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -53588,6 +53570,11 @@ }, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"rPv" = ( +/obj/machinery/light/small/dim/directional/south, +/obj/machinery/camera/directional/south, +/turf/open/floor/engine, +/area/station/science/xenobiology) "rPH" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -54592,25 +54579,6 @@ dir = 4 }, /area/station/service/theater) -"siE" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/camera/directional/east{ - network = list("ss13","medbay"); - c_tag = "Medical - Surgery B" - }, -/obj/machinery/vending/wallmed/directional/north, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, -/obj/machinery/light_switch/directional/east{ - pixel_x = 22; - pixel_y = -9 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) "siF" = ( /obj/machinery/bouldertech/refinery, /obj/machinery/conveyor{ @@ -55004,18 +54972,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/greater) -"sob" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/item/radio/intercom/directional/west, -/obj/item/storage/medkit/advanced{ - pixel_x = -6 - }, -/turf/open/floor/iron, -/area/station/command/bridge) "soe" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -55026,28 +54982,6 @@ "soq" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/science) -"soQ" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/table, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/mmi{ - pixel_x = -1; - pixel_y = 5 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 8; - pixel_y = -2 - }, -/turf/open/floor/iron, -/area/station/science/explab) "spk" = ( /obj/machinery/power/terminal{ dir = 1 @@ -55501,6 +55435,27 @@ }, /turf/open/floor/carpet, /area/station/commons/vacant_room/office) +"sva" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + name = "Research and Development Shutter"; + dir = 8; + id = "rndlab1" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/left/directional/east{ + name = "Research Lab Desk"; + req_access = list("science") + }, +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/door/window/left/directional/west{ + name = "Robotics Desk"; + req_access = list("robotics") + }, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/lab) "svc" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -57065,12 +57020,6 @@ }, /turf/open/floor/carpet, /area/station/service/chapel) -"sZy" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/station/science/ordnance) "sZA" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/emp_proof/directional/south{ @@ -58277,6 +58226,12 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"twv" = ( +/obj/machinery/atmospherics/pipe/smart/simple/supply{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/station/science/ordnance) "twz" = ( /turf/open/openspace, /area/station/hallway/secondary/entry) @@ -58386,13 +58341,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"txW" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input{ - dir = 4; - chamber_id = "o2ordance" - }, -/turf/open/floor/engine/o2, -/area/station/science/ordnance/storage) "tyi" = ( /obj/structure/table, /obj/machinery/button/door{ @@ -58777,6 +58725,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/chapel/office) +"tEx" = ( +/obj/machinery/camera/directional/north{ + network = list("ss13","rd","xeno"); + c_tag = "Science - Xenobiology Lower Containment Chamber" + }, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) "tED" = ( /obj/effect/turf_decal/tile/neutral/tram, /obj/effect/turf_decal/stripes/white/line, @@ -59765,16 +59720,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/garden) -"tWO" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/item/reagent_containers/cup/bottle/multiver, -/obj/item/reagent_containers/cup/bottle/epinephrine, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/white, -/area/station/security/medical) "tWX" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -59996,13 +59941,6 @@ /obj/machinery/light/floor, /turf/open/floor/iron, /area/station/ai_monitored/security/armory) -"ubr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/directional/south, -/turf/open/floor/engine, -/area/station/science/xenobiology) "ubt" = ( /obj/structure/chair/office/light{ dir = 1 @@ -60103,6 +60041,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/execution/transfer) +"udg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/science/explab) "udk" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -60139,6 +60086,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"udu" = ( +/obj/machinery/duct, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "udO" = ( /obj/structure/chair/stool/bar/directional/south, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -60334,13 +60293,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms/laundry) -"uhm" = ( -/obj/machinery/camera/directional/south{ - pixel_x = 21; - pixel_y = 0 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "uhs" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -60579,27 +60531,6 @@ /obj/item/multitool, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"ukp" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Research and Development Shutter"; - dir = 8; - id = "rndlab1" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/left/directional/east{ - name = "Research Lab Desk"; - req_access = list("science") - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/door/window/left/directional/west{ - name = "Robotics Desk"; - req_access = list("robotics") - }, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/lab) "ukq" = ( /turf/closed/wall/r_wall, /area/station/engineering/storage/tech) @@ -60831,6 +60762,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/grimy, /area/station/service/library/lounge) +"une" = ( +/obj/structure/closet/secure_closet/exile, +/obj/effect/turf_decal/bot, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/command/gateway) "ung" = ( /obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron, @@ -60925,6 +60862,13 @@ /obj/structure/cable, /turf/open/floor/iron/grimy, /area/station/ai_monitored/turret_protected/aisat/foyer) +"upf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/directional/south, +/turf/open/floor/engine, +/area/station/science/xenobiology) "upj" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/item/radio/intercom/directional/south, @@ -61216,16 +61160,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"utN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/directional/north{ - pixel_x = 21; - pixel_y = 0 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "utP" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/machinery/camera/emp_proof/directional/west{ @@ -62146,6 +62080,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/virology) +"uHp" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron, +/area/station/engineering/break_room) "uHz" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -62202,10 +62144,6 @@ /obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark/small, /area/station/commons/vacant_room) -"uHS" = ( -/obj/machinery/camera/directional/north, -/turf/open/floor/engine, -/area/station/science/xenobiology) "uHT" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/neutral/filled/warning, @@ -62645,10 +62583,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"uOY" = ( -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "uOZ" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "CO2 Outlet Pump"; @@ -62731,13 +62665,6 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/station/cargo/miningdock/cafeteria) -"uRW" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) "uSe" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -62983,6 +62910,26 @@ /obj/item/pen, /turf/open/floor/iron/grimy, /area/station/service/library/lounge) +"uXn" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/camera/directional/south{ + network = list("ss13","rd"); + c_tag = "Science - Mixing Lab" + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/obj/effect/mapping_helpers/airalarm/link{ + chamber_id = "ordnanceburn" + }, +/obj/machinery/computer/atmos_control/ordnancemix{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/science/ordnance) "uXr" = ( /obj/structure/table, /obj/item/stack/cable_coil{ @@ -63262,12 +63209,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/checkpoint/medical) -"vbo" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 4 - }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) "vbt" = ( /obj/machinery/computer/atmos_control/oxygen_tank{ atmos_chambers = list(o2ordance="Oxygen Supply") @@ -63505,6 +63446,18 @@ }, /turf/open/floor/plating/elevatorshaft, /area/station/security/execution/transfer) +"vfC" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/structure/bed/medical/emergency, +/obj/machinery/camera/directional/south{ + network = list("ss13","medbay"); + c_tag = "Medical - Lobby" + }, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/start/hangover, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "vfD" = ( /obj/structure/holosign/barrier/atmos/tram, /obj/effect/turf_decal/tile/neutral/tram, @@ -64184,6 +64137,12 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/office) +"vro" = ( +/obj/structure/filingcabinet/white, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/brown/fourcorners, +/turf/open/floor/iron, +/area/station/cargo/sorting) "vrq" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -64740,6 +64699,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/tram/mid) +"vBl" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/light/directional/east, +/obj/machinery/smartfridge/extract/preloaded, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "vBn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -65520,6 +65488,16 @@ /obj/machinery/telecomms/server/presets/supply, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"vOW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/directional/north{ + pixel_x = 21; + pixel_y = 0 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "vPg" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 1 @@ -65650,11 +65628,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos) -"vRR" = ( -/obj/machinery/light/small/dim/directional/south, -/obj/machinery/camera/directional/south, -/turf/open/floor/engine, -/area/station/science/xenobiology) "vRV" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, @@ -65903,6 +65876,24 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"vWT" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 6 + }, +/obj/structure/ladder, +/obj/machinery/elevator_control_panel/directional/south{ + linked_elevator_id = "tram_xeno_lift"; + pixel_x = 31; + pixel_y = -31 + }, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "vXL" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /turf/open/floor/iron, @@ -66824,6 +66815,13 @@ /obj/machinery/light/floor, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) +"wpr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) "wpH" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 8 @@ -66922,12 +66920,24 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"wrw" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 +"wrz" = ( +/obj/structure/rack, +/obj/structure/table, +/obj/machinery/computer/security/telescreen/test_chamber/directional/north, +/obj/item/grenade/chem_grenade{ + pixel_x = -7; + pixel_y = 7 }, -/turf/open/floor/iron/white, -/area/station/science/ordnance) +/obj/item/grenade/chem_grenade{ + pixel_x = -7; + pixel_y = 1 + }, +/obj/item/storage/box/beakers{ + pixel_x = 5; + pixel_y = 3 + }, +/turf/open/floor/iron/dark, +/area/station/science/explab) "wrJ" = ( /obj/structure/railing{ dir = 4 @@ -67227,6 +67237,13 @@ /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/closed/wall/r_wall, /area/station/engineering/atmos) +"wxn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "wxu" = ( /obj/machinery/destructive_scanner, /obj/effect/turf_decal/trimline/purple/filled/warning{ @@ -67249,6 +67266,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/drone_bay) +"wxA" = ( +/obj/machinery/door/airlock{ + name = "Unit 5"; + id_tag = "Toilet5" + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "wxE" = ( /obj/structure/disposaloutlet{ dir = 4 @@ -67589,11 +67614,6 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"wCZ" = ( -/obj/structure/filingcabinet/white, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/carpet, -/area/station/medical/psychology) "wDh" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper, @@ -69959,15 +69979,6 @@ }, /turf/open/floor/wood/large, /area/station/service/barber) -"xzv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/explab) "xzI" = ( /obj/machinery/vending/games, /obj/structure/sign/clock/directional/north, @@ -70058,6 +70069,12 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"xAM" = ( +/obj/machinery/atmospherics/pipe/smart/simple/supply{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/station/science/ordnance/burnchamber) "xAR" = ( /obj/machinery/door/airlock/security{ name = "Prison Workshop" @@ -70169,6 +70186,16 @@ /obj/effect/turf_decal/trimline/neutral/filled/line, /turf/open/floor/iron, /area/station/hallway/primary/tram/center) +"xCr" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 9 + }, +/obj/machinery/light/directional/north, +/obj/machinery/door/window/elevator/right/directional/west{ + transport_linked_id = "tram_xeno_lift" + }, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "xCs" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -70422,16 +70449,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/construction/mining/aux_base) -"xKf" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/item/stack/medical/mesh, -/obj/item/stack/medical/gauze, -/obj/structure/table/glass, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "xKt" = ( /turf/closed/wall/r_wall, /area/station/maintenance/solars/port) @@ -71494,24 +71511,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/dorms) -"ydX" = ( -/obj/structure/rack, -/obj/structure/table, -/obj/machinery/computer/security/telescreen/test_chamber/directional/north, -/obj/item/grenade/chem_grenade{ - pixel_x = -7; - pixel_y = 7 - }, -/obj/item/grenade/chem_grenade{ - pixel_x = -7; - pixel_y = 1 - }, -/obj/item/storage/box/beakers{ - pixel_x = 5; - pixel_y = 3 - }, -/turf/open/floor/iron/dark, -/area/station/science/explab) "yeg" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Atmos to Loop"; @@ -72021,11 +72020,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"ymc" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/processor/slime, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "ymj" = ( /obj/structure/cable/layer1, /obj/effect/turf_decal/sand/plating, @@ -85038,7 +85032,7 @@ thi alR pAv veV -uOY +kVJ hAD veV mCQ @@ -85295,7 +85289,7 @@ thi rnL pAv veV -cDZ +nnM hAD veV veV @@ -85552,7 +85546,7 @@ apC apC veV veV -hAD +alT hAD veV pdr @@ -85808,14 +85802,14 @@ abM abM apC nmk -ffE -hAD +jRf +alT hAD veV veV kMD -hAD -rlX +alT +csR oEl apC abM @@ -86066,7 +86060,7 @@ abM apC veV veV -uOY +kVJ hAD veV fNx @@ -86322,14 +86316,14 @@ abM abM apC paH -iCe -hAD +dAM +alT hAD veV veV kMD -hAD -qYx +alT +wxA rgT apC abM @@ -86580,7 +86574,7 @@ abM apC veV veV -hAD +alT hAD ubY ubY @@ -86836,8 +86830,8 @@ abM abM apC lYZ -lMw -hAD +iIv +alT hAD hAD hAD @@ -103504,7 +103498,7 @@ snQ iRL oXU gRY -jYd +udu cWZ cWZ lbL @@ -104567,7 +104561,7 @@ fal aks lJv ulV -rNW +uHp rsz sjM unn @@ -115388,7 +115382,7 @@ rwb qVr bfH bfH -ubr +upf qVr aaa aaa @@ -116151,7 +116145,7 @@ oNT dUT gdC qVr -uHS +rfi oxe ahk hdA @@ -116165,7 +116159,7 @@ sml bfH bfH oxe -ubr +upf qVr aaa aaa @@ -116927,8 +116921,8 @@ mBm dHc pYZ aqB -gMG -rxY +vBl +gNr lym pph aet @@ -117188,11 +117182,11 @@ jiQ asv asv jiQ -eEk +iQG uHF hjM tjP -eXH +roQ qVr qVr qVr @@ -117440,7 +117434,7 @@ qVr qCW whn xcM -ymc +lyQ asv mln tjz @@ -117710,7 +117704,7 @@ eGt bql bfH bfH -vRR +rPv qVr aaa aaa @@ -118157,7 +118151,7 @@ uGW uGW njI kjN -dwj +iEx qxm iLu oys @@ -118216,11 +118210,11 @@ jiQ asv asv jiQ -hAQ +xCr gJY coM bgH -jAo +gFa qVr qVr qVr @@ -118724,7 +118718,7 @@ qVr qVr kkx cJP -jgx +lxd mLE dGs dGs @@ -119235,7 +119229,7 @@ ebs hFH tYB qVr -utN +vOW oxe bfH bfH @@ -119249,7 +119243,7 @@ uAF ahk hdA oxe -uhm +kZa qVr aaa aaa @@ -119474,7 +119468,7 @@ cJS nhj cVU oRz -mib +pQy sQZ nhj prI @@ -119729,7 +119723,7 @@ owO owO cJS rKD -xzv +udg cFW cFW nEB @@ -119985,8 +119979,8 @@ sQZ sQZ sQZ sQZ -ydX -soQ +wrz +hIY tVK vIF yeZ @@ -120012,7 +120006,7 @@ bOi dUT aaa qVr -utN +vOW bfH bfH qVr @@ -122561,7 +122555,7 @@ aaa aaa dfz mpd -lEt +qul glc xRm pAT @@ -122817,7 +122811,7 @@ aaa aaa aaa dfz -txW +idn iMt glc xRm @@ -123083,13 +123077,13 @@ dhM pUC fXK lyC -rbY -iab +wpr +hox dfz vqO edP edP -oXl +uXn hBl hBl gkD @@ -123340,8 +123334,8 @@ wrn ure bKT bqU -dUP -anb +qHa +nuu dfz uCz wRv @@ -123859,8 +123853,8 @@ lkK aeg gPB qOo -wrw -dbe +kza +jGx aej oAn aej @@ -124116,9 +124110,9 @@ qjp frV xwi vJC -nFU -rLz -fCo +qWf +rLG +xAM eOZ gkD gkD @@ -124374,8 +124368,8 @@ frV frT ryK jLH -rvS -sZy +lTo +twv aaa aaa aaa @@ -148496,7 +148490,7 @@ dFP dFP dFP dFP -gdz +wxn dFP ste mtr @@ -151807,7 +151801,7 @@ dTL mjM kBO tBO -tWO +mVW qZy run ayR @@ -153101,7 +153095,7 @@ yji rbT ndP pwm -qpb +une hAv dxC bsP @@ -154914,7 +154908,7 @@ aQO gPA hbV dbJ -sob +eOG eSH wJy xgZ @@ -155449,7 +155443,7 @@ lyx rIg qIs fSr -iPT +rKH rVp rVp vgZ @@ -167026,7 +167020,7 @@ lWu tTN net xRx -siE +eVB hsh gnM apC @@ -169584,9 +169578,9 @@ sSt jEK eoE xck -ols +vfC wyd -enF +dyI aHP aKq aKP @@ -170614,7 +170608,7 @@ rks rks wyd wyd -qrW +dyI gMT uHB jtr @@ -170625,7 +170619,7 @@ qDF uwk oXz gNE -rdJ +ovA jtr jtr jtr @@ -170870,7 +170864,7 @@ eSz eSz eSz qNI -qIf +fCX lEL qPd iTt @@ -171127,7 +171121,7 @@ eSz eSz eSz qNI -mad +cFZ jVw qPd jVw @@ -171384,7 +171378,7 @@ fWX eSz eSz qNI -xKf +ojn pps sqT sTF @@ -172936,7 +172930,7 @@ rcD nPe nPe nPe -wCZ +msF ugt aNa gCI @@ -182180,7 +182174,7 @@ vnu sRZ oxL wwP -ukp +sva wwP wwP wwP @@ -182462,7 +182456,7 @@ tBo tBo qVr gYw -lis +cHY aLR sjT xfL @@ -182713,8 +182707,8 @@ pbH mAL nKU qVr -lvU -vbo +tEx +mVN tBo tBo qVr @@ -182724,8 +182718,8 @@ itq qyQ qyQ gun -fjq -fsm +pUi +vWT qVr aaa aaa @@ -183227,7 +183221,7 @@ qKE chE pHX qVr -kla +cAK ttj hLj ttj @@ -183752,7 +183746,7 @@ ecg rUh rUh wAs -eOA +fjA aDn qVr aaa @@ -184980,7 +184974,7 @@ lmZ noc aBg jur -oqe +vro ipm fur pMd @@ -185272,7 +185266,7 @@ dpB nZO kvt wtw -gfY +ceA syv hrh ieV @@ -189368,7 +189362,7 @@ kIo kIo qSm orX -uRW +rFD fmy aac aac diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index 36aa0093653..a0574691242 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -588,6 +588,7 @@ id_tag = "u5"; name = "Unit 5" }, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "ajQ" = ( @@ -3932,16 +3933,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/bridge) -"brQ" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/lobby) "brS" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/cable, @@ -4114,18 +4105,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) -"bvt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/tank_dispenser/oxygen{ - pixel_x = -1; - pixel_y = 2 - }, -/obj/machinery/vending/wallmed/directional/south, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron, -/area/station/command/gateway) "bvD" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -4986,6 +4965,12 @@ "bJX" = ( /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"bKa" = ( +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/white/smooth_half{ + dir = 8 + }, +/area/station/science/xenobiology) "bKK" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/neutral{ @@ -7806,6 +7791,14 @@ dir = 8 }, /area/station/service/chapel) +"cPb" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/cmo) "cPc" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/north, @@ -8100,6 +8093,11 @@ /obj/machinery/light/dim/directional/south, /turf/open/floor/wood, /area/station/service/library) +"cTK" = ( +/obj/structure/cable, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/white, +/area/station/science/research) "cTX" = ( /obj/machinery/computer/crew{ dir = 1 @@ -8990,18 +8988,6 @@ /obj/machinery/meter/layer2, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"djc" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/vending/wallmed/directional/west, -/obj/structure/disposalpipe/segment, -/obj/machinery/shower/directional/east, -/obj/structure/fluff/shower_drain, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) "dje" = ( /obj/structure/chair/sofa/bench/right{ dir = 8 @@ -10708,6 +10694,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/sorting) +"dMp" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/engineering/lobby) "dMC" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -12081,6 +12077,16 @@ /obj/structure/flora/bush/fullgrass/style_random, /turf/open/floor/grass, /area/station/science/research) +"ekf" = ( +/obj/effect/turf_decal/trimline/blue/arrow_ccw{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/medbay/lobby) "eki" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -12222,16 +12228,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"emO" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/engineering/lobby) "eng" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18020,14 +18016,6 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/textured, /area/station/hallway/primary/central) -"gpT" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, -/obj/item/storage/medkit/advanced, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "gpV" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/red/opposingcorners, @@ -22005,12 +21993,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"hGC" = ( -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/bot_red, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) "hGE" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -30250,6 +30232,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "kub" = ( @@ -31193,13 +31176,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"kKU" = ( -/obj/structure/ladder, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "kLi" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/station/maintenance/department/medical/central) @@ -32265,6 +32241,13 @@ /obj/machinery/portable_atmospherics/pump, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"led" = ( +/obj/structure/ladder, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/dark_green/opposingcorners, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "les" = ( /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -33738,6 +33721,25 @@ "lFG" = ( /turf/open/floor/glass, /area/station/command/meeting_room) +"lFH" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -14 + }, +/obj/item/storage/medkit/regular{ + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/trunk/multiz{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/white, +/area/station/security/medical) "lFK" = ( /obj/structure/chair, /obj/effect/turf_decal/stripes/line{ @@ -34579,7 +34581,7 @@ /obj/machinery/elevator_control_panel{ linked_elevator_id = "aisat"; pixel_x = 32; - preset_destination_names = list(2 = "Telecomms", 3 = "AI Core") + preset_destination_names = list("2" = "Telecomms", "3" = "AI Core") }, /turf/open/openspace, /area/station/ai_monitored/turret_protected/aisat_interior) @@ -36358,6 +36360,18 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"mAD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/tank_dispenser/oxygen{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/machinery/wall_healer/directional/south, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron, +/area/station/command/gateway) "mAF" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, @@ -37581,6 +37595,13 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/station/service/bar) +"mXi" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "mXj" = ( /obj/machinery/door/poddoor/shutters{ id = "warehouse"; @@ -38917,6 +38938,15 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/cargo/miningoffice) +"nux" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "nuC" = ( /obj/effect/turf_decal/tile/brown/anticorner/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39385,6 +39415,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "nDC" = ( @@ -41961,13 +41992,6 @@ /obj/machinery/meter, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"oDo" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/east, -/turf/open/floor/iron, -/area/station/cargo/storage) "oDC" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42219,12 +42243,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/lobby) -"oHh" = ( -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/white/smooth_half{ - dir = 8 - }, -/area/station/science/xenobiology) "oHi" = ( /obj/structure/cable, /turf/open/floor/grass, @@ -42720,6 +42738,15 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/carpet/purple, /area/station/service/library) +"oPE" = ( +/obj/effect/turf_decal/tile/neutral/half{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/edge{ + dir = 8 + }, +/area/station/hallway/secondary/exit/departure_lounge) "oPL" = ( /obj/item/clothing/head/chameleon/broken, /turf/open/misc/asteroid/airless, @@ -43819,6 +43846,7 @@ /area/station/solars/starboard/fore) "pik" = ( /obj/item/radio/intercom/directional/west, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "piE" = ( @@ -44671,6 +44699,12 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/commons/locker) +"pwB" = ( +/obj/structure/filingcabinet/white, +/obj/effect/turf_decal/bot_red, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/textured_large, +/area/station/cargo/sorting) "pwE" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 @@ -47512,6 +47546,7 @@ id_tag = "u2"; name = "Unit 2" }, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "qsI" = ( @@ -52014,6 +52049,7 @@ id_tag = "u4"; name = "Unit 4" }, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "rUu" = ( @@ -52485,6 +52521,7 @@ id_tag = "u1"; name = "Unit 1" }, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "saa" = ( @@ -53858,6 +53895,7 @@ "swe" = ( /obj/structure/urinal/directional/north, /obj/machinery/light/small/dim/directional/east, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "swi" = ( @@ -54460,6 +54498,7 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "sGV" = ( +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "sHa" = ( @@ -56338,13 +56377,6 @@ }, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/captain/private) -"toN" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) "toT" = ( /obj/machinery/telecomms/bus/preset_two, /turf/open/floor/circuit/green/telecomms/mainframe, @@ -57439,15 +57471,6 @@ dir = 8 }, /area/station/command/meeting_room) -"tIk" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) "tIr" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -59521,6 +59544,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/robotics/lab) +"usc" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/cargo/storage) "usq" = ( /obj/effect/turf_decal/tile/red, /obj/structure/disposalpipe/junction{ @@ -63419,6 +63449,7 @@ /obj/structure/urinal/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "vPP" = ( @@ -63470,6 +63501,18 @@ }, /turf/open/floor/engine, /area/station/medical/chemistry) +"vQt" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/wall_healer/directional/west, +/obj/structure/disposalpipe/segment, +/obj/machinery/shower/directional/east, +/obj/structure/fluff/shower_drain, +/turf/open/floor/iron/white/textured, +/area/station/medical/treatment_center) "vQw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters{ @@ -63482,15 +63525,6 @@ "vQB" = ( /turf/closed/wall, /area/station/cargo/boutique) -"vQR" = ( -/obj/effect/turf_decal/tile/neutral/half{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/edge{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) "vQT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -64679,14 +64713,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"wnT" = ( -/obj/structure/filingcabinet/white, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") - }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) "wnX" = ( /obj/machinery/power/supermatter_crystal/engine, /turf/open/floor/engine, @@ -66657,6 +66683,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/main) +"wWB" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 1 + }, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "wWD" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -66883,14 +66917,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"xas" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/siding/blue{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) "xay" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -68339,6 +68365,7 @@ id_tag = "u3"; name = "Unit 3" }, +/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) "xzP" = ( @@ -68536,25 +68563,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/parquet, /area/station/cargo/boutique) -"xCE" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/table, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -14 - }, -/obj/item/storage/medkit/regular{ - pixel_y = 5 - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/trunk/multiz{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/white, -/area/station/security/medical) "xCI" = ( /obj/structure/broken_flooring/side/directional/east, /obj/effect/decal/cleanable/dirt/dust, @@ -68879,11 +68887,6 @@ /obj/structure/window/fulltile, /turf/open/misc/asteroid, /area/station/asteroid) -"xIR" = ( -/obj/structure/cable, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/white, -/area/station/science/research) "xIV" = ( /turf/closed/wall/r_wall, /area/station/engineering/supermatter) @@ -70309,6 +70312,14 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"yjC" = ( +/obj/structure/filingcabinet/white, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/camera/autoname/directional/south{ + network = list("ss13","medbay") + }, +/turf/open/floor/wood/parquet, +/area/station/medical/psychology) "yjH" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted, @@ -83237,7 +83248,7 @@ vhW wkg iyb wrU -djc +vQt ryE wrU wrU @@ -85238,7 +85249,7 @@ mmy uYI wMn cpB -xCE +lFH luz hqN eSS @@ -85785,7 +85796,7 @@ fXZ gli gli gli -oDo +usc gli gli hgi @@ -88603,7 +88614,7 @@ sUn kRM wBw rKW -hGC +pwB uWl iDs fad @@ -88892,7 +88903,7 @@ qfB fPs gpF avU -brQ +ekf vFH crg lwI @@ -91438,7 +91449,7 @@ bAw aYQ wEW noF -bvt +mAD bAw kxZ fMZ @@ -94764,7 +94775,7 @@ eEa kmu kmu xJe -toN +mXi wSi kmu rqj @@ -94809,7 +94820,7 @@ oKy rbH dMU kGF -vQR +oPE yiO tiT pCJ @@ -98590,7 +98601,7 @@ cLf cLf bqX cQP -gpT +wWB eon sZK sZK @@ -103513,7 +103524,7 @@ nxG nxG nxG hjJ -tIk +nux glH iAE xAm @@ -107608,7 +107619,7 @@ lNV svL cPt ixU -xIR +cTK dfM pBn cPo @@ -109963,7 +109974,7 @@ dpU jco oss vEZ -emO +dMp vEZ vEZ hmz @@ -149546,7 +149557,7 @@ egv tqV tqV njM -wnT +yjC fnh qxG jOB @@ -154173,7 +154184,7 @@ oRR nAs wYY tSn -xas +cPb xhJ mfP xOF @@ -159804,7 +159815,7 @@ qDQ vkR lRN hCs -kKU +led cmw xtG lIr @@ -188841,7 +188852,7 @@ jEt aMf rdn xSW -oHh +bKa wnA wnA wnA diff --git a/_maps/minigame/deathmatch/maint_mania.dmm b/_maps/minigame/deathmatch/maint_mania.dmm index b742b695c14..2433686e673 100644 --- a/_maps/minigame/deathmatch/maint_mania.dmm +++ b/_maps/minigame/deathmatch/maint_mania.dmm @@ -14,7 +14,7 @@ /turf/open/indestructible, /area/deathmatch) "cx" = ( -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /turf/open/indestructible, /area/deathmatch) "cy" = ( diff --git a/_maps/shuttles/arrival_catwalk.dmm b/_maps/shuttles/arrival_catwalk.dmm index 837bfc84157..e50d54a186a 100644 --- a/_maps/shuttles/arrival_catwalk.dmm +++ b/_maps/shuttles/arrival_catwalk.dmm @@ -226,7 +226,7 @@ /area/shuttle/arrival) "CA" = ( /obj/effect/turf_decal/trimline/yellow/arrow_cw, -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /obj/effect/turf_decal/trimline/dark_blue/corner{ dir = 4 }, diff --git a/_maps/shuttles/arrival_delta.dmm b/_maps/shuttles/arrival_delta.dmm index 527b50f66c3..8fab8347725 100644 --- a/_maps/shuttles/arrival_delta.dmm +++ b/_maps/shuttles/arrival_delta.dmm @@ -326,7 +326,7 @@ /turf/open/floor/iron, /area/shuttle/arrival) "uH" = ( -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /obj/effect/turf_decal/tile/neutral/fourcorners, diff --git a/_maps/shuttles/arrival_kilo.dmm b/_maps/shuttles/arrival_kilo.dmm index b59cf8d160d..2776589602e 100644 --- a/_maps/shuttles/arrival_kilo.dmm +++ b/_maps/shuttles/arrival_kilo.dmm @@ -149,7 +149,7 @@ /turf/open/floor/grass, /area/shuttle/arrival) "aA" = ( -/obj/machinery/vending/wallmed/directional/west{ +/obj/machinery/wall_healer/free/directional/west{ use_power = 0 }, /obj/effect/turf_decal/tile/blue/opposingcorners, diff --git a/_maps/shuttles/emergency_asteroid.dmm b/_maps/shuttles/emergency_asteroid.dmm index 9bfcf599bb2..3a9cd128fa5 100644 --- a/_maps/shuttles/emergency_asteroid.dmm +++ b/_maps/shuttles/emergency_asteroid.dmm @@ -271,7 +271,7 @@ /area/shuttle/escape) "bz" = ( /obj/machinery/stasis, -/obj/machinery/vending/wallmed/directional/east{ +/obj/machinery/wall_healer/free/directional/east{ use_power = 0 }, /turf/open/floor/mineral/titanium/white, @@ -387,7 +387,7 @@ /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) "JM" = ( -/obj/machinery/vending/wallmed{ +/obj/machinery/wall_healer/free{ name = "Emergency NanoMed"; use_power = 0 }, diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index 848f487020f..6df05e530ff 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -468,7 +468,7 @@ /area/shuttle/escape) "ca" = ( /obj/machinery/light/directional/south, -/obj/machinery/vending/wallmed/directional/south{ +/obj/machinery/wall_healer/free/directional/south{ use_power = 0 }, /obj/effect/turf_decal/tile/bar/opposingcorners, diff --git a/_maps/shuttles/emergency_bballhooper.dmm b/_maps/shuttles/emergency_bballhooper.dmm index 49972dccae1..1d8fa1e0a8e 100644 --- a/_maps/shuttles/emergency_bballhooper.dmm +++ b/_maps/shuttles/emergency_bballhooper.dmm @@ -972,7 +972,7 @@ /obj/machinery/shower/directional/west{ name = "emergency shower" }, -/obj/machinery/vending/wallmed/directional/east{ +/obj/machinery/wall_healer/free/directional/east{ name = "Hooper's First Medical Kit" }, /obj/machinery/light/small/directional/east, diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm index fd82a5b0e2b..609e2a749f3 100644 --- a/_maps/shuttles/emergency_birdboat.dmm +++ b/_maps/shuttles/emergency_birdboat.dmm @@ -255,7 +255,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "iP" = ( -/obj/machinery/vending/wallmed/directional/south{ +/obj/machinery/wall_healer/free/directional/south{ use_power = 0 }, /turf/open/floor/mineral/titanium, diff --git a/_maps/shuttles/emergency_box.dmm b/_maps/shuttles/emergency_box.dmm index 38cdf4e6fec..60815016f83 100644 --- a/_maps/shuttles/emergency_box.dmm +++ b/_maps/shuttles/emergency_box.dmm @@ -303,7 +303,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "Dk" = ( -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /turf/open/floor/mineral/titanium, diff --git a/_maps/shuttles/emergency_casino.dmm b/_maps/shuttles/emergency_casino.dmm index c1332f0ef1d..c91d4e781d9 100644 --- a/_maps/shuttles/emergency_casino.dmm +++ b/_maps/shuttles/emergency_casino.dmm @@ -404,7 +404,7 @@ pixel_x = 2; pixel_y = 7 }, -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /turf/open/floor/carpet/green, /area/shuttle/escape) "mn" = ( @@ -448,7 +448,7 @@ /obj/item/canvas, /obj/item/canvas, /obj/item/canvas, -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /obj/machinery/light/directional/north, /turf/open/floor/sepia, /area/shuttle/escape) @@ -571,7 +571,7 @@ /area/shuttle/escape) "qn" = ( /obj/machinery/stasis, -/obj/machinery/vending/wallmed/directional/east, +/obj/machinery/wall_healer/free/directional/east, /obj/machinery/light/directional/north, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) @@ -1352,7 +1352,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "VT" = ( -/obj/machinery/vending/wallmed/directional/east, +/obj/machinery/wall_healer/free/directional/east, /turf/open/floor/carpet/green, /area/shuttle/escape) "Wp" = ( diff --git a/_maps/shuttles/emergency_catwalk.dmm b/_maps/shuttles/emergency_catwalk.dmm index 4ed285c7964..71f1d21923d 100644 --- a/_maps/shuttles/emergency_catwalk.dmm +++ b/_maps/shuttles/emergency_catwalk.dmm @@ -710,7 +710,7 @@ dir = 1 }, /obj/effect/turf_decal/bot, -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /turf/open/floor/iron, /area/shuttle/escape) "Mj" = ( @@ -994,7 +994,7 @@ /turf/open/floor/iron, /area/shuttle/escape) "We" = ( -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/shuttle/escape) "WL" = ( diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index dccdcc4b139..72de7bc50d4 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -511,7 +511,7 @@ "cu" = ( /obj/machinery/light/directional/east, /obj/machinery/stasis, -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ diff --git a/_maps/shuttles/emergency_clown.dmm b/_maps/shuttles/emergency_clown.dmm index fc943e5287b..656d34288b2 100644 --- a/_maps/shuttles/emergency_clown.dmm +++ b/_maps/shuttles/emergency_clown.dmm @@ -307,7 +307,7 @@ /area/shuttle/escape) "RX" = ( /obj/item/toy/snappop/phoenix, -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /turf/open/floor/bluespace, diff --git a/_maps/shuttles/emergency_cruise.dmm b/_maps/shuttles/emergency_cruise.dmm index a60230a988a..0741cab25b5 100644 --- a/_maps/shuttles/emergency_cruise.dmm +++ b/_maps/shuttles/emergency_cruise.dmm @@ -384,7 +384,7 @@ pixel_x = 4; pixel_y = -1 }, -/obj/machinery/vending/wallmed/directional/east, +/obj/machinery/wall_healer/free/directional/east, /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 @@ -932,7 +932,7 @@ /obj/structure/chair/sofa/bench/right{ dir = 8 }, -/obj/machinery/vending/wallmed/directional/east, +/obj/machinery/wall_healer/free/directional/east, /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/shuttle/escape) @@ -2054,7 +2054,7 @@ /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 4 }, -/obj/machinery/vending/wallmed/directional/south, +/obj/machinery/wall_healer/free/directional/south, /turf/open/floor/iron/dark/small, /area/shuttle/escape) "Cu" = ( diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index 854f76f7a15..da90701ec5a 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -1067,7 +1067,7 @@ dir = 8 }, /obj/effect/turf_decal/bot, -/obj/machinery/vending/wallmed/directional/east{ +/obj/machinery/wall_healer/free/directional/east{ use_power = 0 }, /turf/open/floor/iron, diff --git a/_maps/shuttles/emergency_donut.dmm b/_maps/shuttles/emergency_donut.dmm index 27f9cd7f1ac..1ea139604ab 100644 --- a/_maps/shuttles/emergency_donut.dmm +++ b/_maps/shuttles/emergency_donut.dmm @@ -402,14 +402,14 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "JG" = ( -/obj/machinery/vending/wallmed/directional/south{ +/obj/machinery/wall_healer/free/directional/south{ use_power = 0 }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "KN" = ( /obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/vending/wallmed/directional/south{ +/obj/machinery/wall_healer/free/directional/south{ use_power = 0 }, /turf/open/floor/mineral/titanium, diff --git a/_maps/shuttles/emergency_fish.dmm b/_maps/shuttles/emergency_fish.dmm index 43ec2aa1620..2ed11465b3a 100644 --- a/_maps/shuttles/emergency_fish.dmm +++ b/_maps/shuttles/emergency_fish.dmm @@ -260,7 +260,7 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "pa" = ( -/obj/machinery/vending/wallmed/directional/south, +/obj/machinery/wall_healer/free/directional/south, /obj/structure/railing{ dir = 1 }, @@ -300,7 +300,7 @@ /turf/open/floor/mineral/titanium/tiled/white, /area/shuttle/escape) "qG" = ( -/obj/machinery/vending/wallmed/directional/east, +/obj/machinery/wall_healer/free/directional/east, /obj/structure/chair/comfy/shuttle{ dir = 8 }, @@ -662,7 +662,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "Mp" = ( -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -704,7 +704,7 @@ /area/shuttle/escape) "OR" = ( /obj/machinery/light/directional/north, -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /obj/effect/turf_decal/tile/dark/anticorner/contrasted{ @@ -835,7 +835,7 @@ /turf/template_noop, /area/template_noop) "Vo" = ( -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/dark/half/contrasted{ dir = 8 @@ -895,7 +895,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) "Ys" = ( -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /obj/effect/turf_decal/tile/dark/half/contrasted{ diff --git a/_maps/shuttles/emergency_goon.dmm b/_maps/shuttles/emergency_goon.dmm index 63cbc0dfc80..04c732eafbe 100644 --- a/_maps/shuttles/emergency_goon.dmm +++ b/_maps/shuttles/emergency_goon.dmm @@ -41,7 +41,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 4 }, -/obj/machinery/vending/wallmed/directional/south{ +/obj/machinery/wall_healer/free/directional/south{ use_power = 0 }, /turf/open/floor/mineral/plastitanium/red, @@ -176,7 +176,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 4 }, -/obj/machinery/vending/wallmed/directional/west{ +/obj/machinery/wall_healer/free/directional/west{ use_power = 0 }, /obj/machinery/light/directional/west, @@ -222,7 +222,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "Z" = ( -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /turf/open/floor/mineral/titanium/white, diff --git a/_maps/shuttles/emergency_humpback.dmm b/_maps/shuttles/emergency_humpback.dmm index d93055c1e83..527741ea48f 100644 --- a/_maps/shuttles/emergency_humpback.dmm +++ b/_maps/shuttles/emergency_humpback.dmm @@ -126,7 +126,7 @@ /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) "he" = ( -/obj/machinery/vending/wallmed/directional/east, +/obj/machinery/wall_healer/free/directional/east, /turf/open/floor/wood/large, /area/shuttle/escape) "hk" = ( @@ -297,7 +297,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 4 }, -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "rL" = ( @@ -513,8 +513,7 @@ /area/shuttle/escape) "Dj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output{ - dir = 1; - chamber_id = "evacair" + dir = 1 }, /obj/machinery/light/small/directional/east, /turf/open/floor/engine/air, diff --git a/_maps/shuttles/emergency_kilo.dmm b/_maps/shuttles/emergency_kilo.dmm index 1c8148a774a..43f92baecdf 100644 --- a/_maps/shuttles/emergency_kilo.dmm +++ b/_maps/shuttles/emergency_kilo.dmm @@ -906,7 +906,7 @@ /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) "Br" = ( -/obj/machinery/vending/wallmed/directional/east{ +/obj/machinery/wall_healer/free/directional/east{ use_power = 0 }, /obj/effect/turf_decal/stripes/line{ @@ -1227,7 +1227,7 @@ /area/shuttle/escape) "TQ" = ( /obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/vending/wallmed/directional/east{ +/obj/machinery/wall_healer/free/directional/east{ use_power = 0 }, /obj/effect/turf_decal/stripes/line{ diff --git a/_maps/shuttles/emergency_lance.dmm b/_maps/shuttles/emergency_lance.dmm index d39e66077bb..3b8dbea2cc7 100644 --- a/_maps/shuttles/emergency_lance.dmm +++ b/_maps/shuttles/emergency_lance.dmm @@ -223,7 +223,7 @@ /turf/open/floor/iron/dark/textured, /area/shuttle/escape) "hu" = ( -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /obj/effect/turf_decal/tile/dark_blue{ dir = 8 }, @@ -1076,7 +1076,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "In" = ( -/obj/machinery/vending/wallmed/directional/south, +/obj/machinery/wall_healer/free/directional/south, /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 4 }, @@ -1240,7 +1240,7 @@ }, /area/shuttle/escape) "MA" = ( -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 4 }, diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index 0114f3579e2..e42af97eb2e 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -61,7 +61,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "ek" = ( -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /obj/machinery/iv_drip, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape/luxury) @@ -864,7 +864,7 @@ /turf/open/floor/iron, /area/shuttle/escape) "Jd" = ( -/obj/machinery/vending/wallmed/directional/south, +/obj/machinery/wall_healer/free/directional/south, /turf/open/floor/carpet/orange, /area/shuttle/escape/luxury) "JB" = ( @@ -994,7 +994,7 @@ /area/shuttle/escape) "Nu" = ( /obj/structure/chair/comfy/shuttle, -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /turf/open/floor/carpet/red, /area/shuttle/escape/brig) "Om" = ( @@ -1170,7 +1170,7 @@ /turf/open/floor/iron, /area/shuttle/escape) "Wx" = ( -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /turf/open/floor/carpet/blue, /area/shuttle/escape/luxury) "WF" = ( diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm index f1064a77fda..b2fdab9a9a9 100644 --- a/_maps/shuttles/emergency_meta.dmm +++ b/_maps/shuttles/emergency_meta.dmm @@ -621,7 +621,7 @@ /area/shuttle/escape) "qi" = ( /obj/structure/chair/comfy/shuttle, -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /turf/open/floor/mineral/titanium/blue, @@ -741,7 +741,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 1 }, -/obj/machinery/vending/wallmed/directional/south{ +/obj/machinery/wall_healer/free/directional/south{ use_power = 0 }, /turf/open/floor/mineral/titanium/blue, diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency_mini.dmm index 89579283e93..e75faab75e5 100644 --- a/_maps/shuttles/emergency_mini.dmm +++ b/_maps/shuttles/emergency_mini.dmm @@ -128,7 +128,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "F" = ( -/obj/machinery/vending/wallmed/directional/east{ +/obj/machinery/wall_healer/free/directional/east{ use_power = 0 }, /obj/machinery/light/small/directional/east, @@ -221,7 +221,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 4 }, -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "W" = ( diff --git a/_maps/shuttles/emergency_nebula.dmm b/_maps/shuttles/emergency_nebula.dmm index a0dd9202b56..4a8fb7ecd97 100644 --- a/_maps/shuttles/emergency_nebula.dmm +++ b/_maps/shuttles/emergency_nebula.dmm @@ -807,7 +807,7 @@ dir = 8 }, /obj/effect/turf_decal/bot, -/obj/machinery/vending/wallmed/directional/east{ +/obj/machinery/wall_healer/free/directional/east{ use_power = 0 }, /obj/machinery/light/directional/east, diff --git a/_maps/shuttles/emergency_northstar.dmm b/_maps/shuttles/emergency_northstar.dmm index 672dd9b58e2..d90758fe7d9 100644 --- a/_maps/shuttles/emergency_northstar.dmm +++ b/_maps/shuttles/emergency_northstar.dmm @@ -3,7 +3,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 8 }, -/obj/machinery/vending/wallmed/directional/east{ +/obj/machinery/wall_healer/free/directional/east{ use_power = 0 }, /turf/open/floor/iron/smooth_edge{ @@ -386,7 +386,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 4 }, -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape) "Jd" = ( diff --git a/_maps/shuttles/emergency_omega.dmm b/_maps/shuttles/emergency_omega.dmm index 7a183d4ac44..dcd1f6e4643 100644 --- a/_maps/shuttles/emergency_omega.dmm +++ b/_maps/shuttles/emergency_omega.dmm @@ -247,7 +247,7 @@ /obj/machinery/stasis{ dir = 4 }, -/obj/machinery/vending/wallmed/directional/west{ +/obj/machinery/wall_healer/free/directional/west{ use_power = 0 }, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -500,7 +500,7 @@ dir = 8 }, /obj/effect/turf_decal/bot, -/obj/machinery/vending/wallmed/directional/east{ +/obj/machinery/wall_healer/free/directional/east{ use_power = 0 }, /obj/machinery/light/small/directional/east, @@ -571,7 +571,7 @@ dir = 4 }, /obj/effect/turf_decal/bot, -/obj/machinery/vending/wallmed/directional/west{ +/obj/machinery/wall_healer/free/directional/west{ use_power = 0 }, /turf/open/floor/iron, diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency_pubby.dmm index 84780e4332b..b0b75da383a 100644 --- a/_maps/shuttles/emergency_pubby.dmm +++ b/_maps/shuttles/emergency_pubby.dmm @@ -590,7 +590,7 @@ /obj/structure/table/glass, /obj/item/storage/medkit/regular, /obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /obj/effect/turf_decal/tile/blue/opposingcorners{ diff --git a/_maps/shuttles/emergency_scrapheap/classic_aft3.dmm b/_maps/shuttles/emergency_scrapheap/classic_aft3.dmm index 4eca7aeb766..3c69660fbed 100644 --- a/_maps/shuttles/emergency_scrapheap/classic_aft3.dmm +++ b/_maps/shuttles/emergency_scrapheap/classic_aft3.dmm @@ -242,7 +242,7 @@ dir = 4 }, /obj/effect/decal/cleanable/blood/drip, -/obj/machinery/vending/wallmed/directional/south{ +/obj/machinery/wall_healer/free/directional/south{ use_power = 0 }, /turf/template_noop, diff --git a/_maps/shuttles/emergency_shadow.dmm b/_maps/shuttles/emergency_shadow.dmm index 731ad7bd2dd..f75edd678b3 100644 --- a/_maps/shuttles/emergency_shadow.dmm +++ b/_maps/shuttles/emergency_shadow.dmm @@ -789,7 +789,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape/brig) "IR" = ( -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron/dark/textured_large, /area/shuttle/escape) @@ -1037,7 +1037,7 @@ /turf/open/floor/iron/dark/textured_large, /area/shuttle/escape) "Ux" = ( -/obj/machinery/vending/wallmed/directional/south, +/obj/machinery/wall_healer/free/directional/south, /obj/effect/turf_decal/trimline/neutral/line{ dir = 1 }, diff --git a/_maps/shuttles/emergency_tram.dmm b/_maps/shuttles/emergency_tram.dmm index 38b2608865b..7ab45a766ff 100644 --- a/_maps/shuttles/emergency_tram.dmm +++ b/_maps/shuttles/emergency_tram.dmm @@ -119,7 +119,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aF" = ( -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /turf/open/floor/mineral/titanium, @@ -216,7 +216,7 @@ /area/shuttle/escape) "ba" = ( /obj/machinery/shower/directional/south, -/obj/machinery/vending/wallmed/directional/north{ +/obj/machinery/wall_healer/free/directional/north{ use_power = 0 }, /turf/open/floor/mineral/titanium/white, diff --git a/_maps/shuttles/emergency_tranquility.dmm b/_maps/shuttles/emergency_tranquility.dmm index e44665e39c7..8498e51bbf1 100644 --- a/_maps/shuttles/emergency_tranquility.dmm +++ b/_maps/shuttles/emergency_tranquility.dmm @@ -920,7 +920,7 @@ /turf/open/floor/wood, /area/shuttle/escape) "rK" = ( -/obj/machinery/vending/wallmed/directional/south, +/obj/machinery/wall_healer/free/directional/south, /turf/open/floor/iron/chapel, /area/shuttle/escape) "rL" = ( @@ -1072,7 +1072,7 @@ /turf/open/floor/stone, /area/shuttle/escape) "vx" = ( -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /turf/open/floor/catwalk_floor, /area/shuttle/escape) "vy" = ( @@ -1370,7 +1370,7 @@ dir = 9 }, /mob/living/basic/bot/cleanbot, -/obj/machinery/vending/wallmed/directional/south, +/obj/machinery/wall_healer/free/directional/south, /turf/open/floor/wood, /area/shuttle/escape) "Ac" = ( diff --git a/_maps/shuttles/emergency_venture.dmm b/_maps/shuttles/emergency_venture.dmm index 29ad2a695d1..1bf7fb0c567 100644 --- a/_maps/shuttles/emergency_venture.dmm +++ b/_maps/shuttles/emergency_venture.dmm @@ -249,7 +249,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /turf/open/floor/iron/herringbone, /area/shuttle/escape) "lW" = ( @@ -573,7 +573,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 8 }, -/obj/machinery/vending/wallmed/directional/east, +/obj/machinery/wall_healer/free/directional/east, /obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 4 }, @@ -605,7 +605,7 @@ /area/shuttle/escape) "Gt" = ( /obj/structure/chair/comfy/shuttle, -/obj/machinery/vending/wallmed/directional/north, +/obj/machinery/wall_healer/free/directional/north, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "GM" = ( @@ -752,7 +752,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) "Ru" = ( -/obj/machinery/vending/wallmed/directional/west, +/obj/machinery/wall_healer/free/directional/west, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, diff --git a/_maps/shuttles/emergency_wawa.dmm b/_maps/shuttles/emergency_wawa.dmm index 46d2a986938..de864edd745 100644 --- a/_maps/shuttles/emergency_wawa.dmm +++ b/_maps/shuttles/emergency_wawa.dmm @@ -435,7 +435,7 @@ /turf/open/floor/iron/checker, /area/shuttle/escape) "lP" = ( -/obj/machinery/vending/wallmed/directional/south, +/obj/machinery/wall_healer/free/directional/south, /turf/open/floor/catwalk_floor, /area/shuttle/escape) "mT" = ( diff --git a/_maps/templates/lazy_templates/nukie_base.dmm b/_maps/templates/lazy_templates/nukie_base.dmm index 846234583c9..5fd2cb52633 100644 --- a/_maps/templates/lazy_templates/nukie_base.dmm +++ b/_maps/templates/lazy_templates/nukie_base.dmm @@ -2100,7 +2100,6 @@ /area/centcom/syndicate_mothership) "wY" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "nukiebase"; desc = "Has a valve and pump attached to it. Slightly more menacing than Nanotrasen's standard."; dir = 1; name = "syndicate air injector" diff --git a/_maps/virtual_domains/meta_central.dmm b/_maps/virtual_domains/meta_central.dmm index 005bdda22f2..440f002970d 100644 --- a/_maps/virtual_domains/meta_central.dmm +++ b/_maps/virtual_domains/meta_central.dmm @@ -18,11 +18,6 @@ }, /turf/open/floor/iron, /area/virtual_domain) -"ad" = ( -/obj/effect/decal/cleanable/blood/gibs/xeno/up, -/obj/structure/alien/weeds, -/turf/open/floor/plating, -/area/virtual_domain) "ai" = ( /obj/structure/broken_flooring/corner/always_floorplane/directional/south, /turf/open/floor/plating, @@ -42,6 +37,16 @@ }, /turf/open/floor/plating, /area/virtual_domain) +"at" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/item/storage/box/mothic_rations{ + pixel_x = 6; + pixel_y = -9 + }, +/turf/open/floor/iron/dark, +/area/virtual_domain) "au" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -168,23 +173,6 @@ /obj/effect/mob_spawn/corpse/human/doctor, /turf/open/indestructible/meat, /area/virtual_domain) -"bp" = ( -/obj/structure/bed/dogbed/renault, -/mob/living/basic/pet/fox, -/obj/item/stack/spacecash/c1000{ - pixel_x = 5; - pixel_y = 15 - }, -/obj/item/storage/briefcase/secure/syndie{ - pixel_x = -6; - pixel_y = 13 - }, -/obj/item/stack/sheet/mineral/diamond{ - pixel_x = 9; - pixel_y = 9 - }, -/turf/open/floor/carpet, -/area/virtual_domain) "br" = ( /obj/effect/spawner/random/decoration/showcase, /obj/structure/window/reinforced/spawner/directional/south, @@ -274,6 +262,14 @@ /obj/effect/turf_decal/caution/red, /turf/open/floor/iron, /area/virtual_domain) +"ch" = ( +/obj/structure/table/wood, +/obj/machinery/light/directional/south, +/obj/item/papercutter{ + pixel_x = -4 + }, +/turf/open/floor/wood, +/area/virtual_domain) "cj" = ( /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/tile/neutral{ @@ -283,6 +279,25 @@ /obj/structure/spider/stickyweb, /turf/open/floor/iron, /area/virtual_domain) +"ck" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L3" + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "w"; + pixel_x = -17; + pixel_y = -15 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "e"; + pixel_x = -2; + pixel_y = -16 + }, +/obj/effect/decal/cleanable/blood{ + pixel_y = -13 + }, +/turf/open/floor/iron, +/area/virtual_domain) "cp" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -512,6 +527,12 @@ }, /turf/open/floor/iron, /area/virtual_domain) +"ei" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/iron, +/area/virtual_domain) "ej" = ( /obj/structure/flora/bush/jungle/a/style_random, /obj/structure/flora/bush/sparsegrass/style_random, @@ -523,15 +544,6 @@ }, /turf/open/floor/plating, /area/virtual_domain) -"en" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/disposalpipe/broken{ - dir = 8 - }, -/turf/open/floor/iron, -/area/virtual_domain) "ep" = ( /obj/structure/table/wood, /obj/item/storage/briefcase/secure{ @@ -555,20 +567,6 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/virtual_domain) -"ev" = ( -/obj/item/bodybag{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 9; - pixel_y = -5 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plating, -/area/virtual_domain) "ey" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -674,6 +672,14 @@ /obj/effect/spawner/random/maintenance/no_decals/seven, /turf/open/floor/iron, /area/virtual_domain) +"fn" = ( +/obj/item/camera/detective{ + pixel_x = 9; + pixel_y = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain) "fr" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -681,19 +687,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/virtual_domain) -"fv" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/decal/cleanable/blood/gibs/robot_debris/limb, -/obj/machinery/exoscanner, -/obj/effect/turf_decal/bot_red, -/turf/open/floor/iron, -/area/virtual_domain) -"fw" = ( -/obj/effect/decal/cleanable/blood/xeno, -/obj/structure/alien/weeds, -/turf/open/floor/plating, -/area/virtual_domain) "fz" = ( /obj/machinery/pdapainter{ pixel_y = 2 @@ -709,6 +702,21 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/iron, /area/virtual_domain) +"fC" = ( +/obj/structure/rack, +/obj/item/wrench, +/obj/item/screwdriver, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/item/flashlight/flare/candle/infinite{ + icon_state = "candle2_lit"; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/floor/iron, +/area/virtual_domain) "fD" = ( /obj/structure/table/reinforced, /obj/effect/spawner/random/armory/laser_gun, @@ -758,15 +766,6 @@ /obj/effect/decal/cleanable/glass, /turf/open/floor/iron, /area/virtual_domain) -"fZ" = ( -/obj/item/storage/box/lights/mixed, -/obj/item/flashlight/flare/candle/infinite{ - icon_state = "candle2_lit"; - pixel_x = -17; - pixel_y = 16 - }, -/turf/open/floor/plating, -/area/virtual_domain) "gb" = ( /obj/structure/flora/rock/pile/jungle, /turf/open/misc/grass/jungle, @@ -894,15 +893,6 @@ /obj/effect/spawner/random/trash, /turf/open/floor/iron, /area/virtual_domain) -"hv" = ( -/obj/structure/bed/medical/emergency, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/west, -/obj/effect/mob_spawn/corpse/human/assistant, -/turf/open/floor/iron, -/area/virtual_domain) "hw" = ( /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/iron, @@ -933,6 +923,11 @@ }, /turf/open/floor/iron, /area/virtual_domain) +"hT" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/core, +/obj/structure/alien/weeds, +/turf/open/floor/plating, +/area/virtual_domain) "hU" = ( /obj/structure/frame/computer, /turf/open/floor/iron/dark, @@ -1052,6 +1047,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/virtual_domain) +"iY" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/status_display/evac/directional/east, +/obj/item/stock_parts/subspace/crystal{ + pixel_x = 6; + pixel_y = -12 + }, +/turf/open/floor/iron/dark, +/area/virtual_domain) "iZ" = ( /obj/item/storage/box/mothic_rations{ pixel_y = -7 @@ -1091,13 +1096,6 @@ /obj/item/clothing/mask/facehugger/dead, /turf/open/floor/iron/dark, /area/virtual_domain) -"jq" = ( -/obj/item/clothing/head/cone{ - pixel_x = 7; - pixel_y = -5 - }, -/turf/open/floor/plating, -/area/virtual_domain) "jt" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/tile/neutral{ @@ -1168,6 +1166,10 @@ /obj/structure/spider/stickyweb, /turf/open/floor/iron, /area/virtual_domain) +"jX" = ( +/obj/machinery/photocopier/prebuilt, +/turf/open/floor/carpet, +/area/virtual_domain) "kc" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/mine/gas/plasma, @@ -1242,28 +1244,6 @@ /obj/structure/alien/weeds, /turf/open/floor/plating, /area/virtual_domain) -"kF" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/glasses/night{ - pixel_x = 5; - pixel_y = 7 - }, -/obj/item/clothing/glasses/night, -/obj/item/clothing/glasses/night{ - pixel_x = -5; - pixel_y = -3 - }, -/turf/template_noop, -/area/virtual_domain/safehouse) -"kH" = ( -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/clothing/head/cone{ - pixel_x = 1; - pixel_y = 3 - }, -/turf/open/floor/iron/dark, -/area/virtual_domain) "kI" = ( /obj/effect/landmark/bitrunning/mob_segment, /turf/open/floor/iron, @@ -1301,6 +1281,25 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/virtual_domain) +"kR" = ( +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/oil{ + icon_state = "floor5" + }, +/turf/open/floor/iron, +/area/virtual_domain) +"kU" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/broken{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain) "kW" = ( /obj/structure/table, /obj/machinery/airalarm/directional/west, @@ -1361,18 +1360,6 @@ /obj/item/pickaxe/rusted, /turf/open/floor/iron, /area/virtual_domain) -"ly" = ( -/obj/item/clothing/head/cone{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/storage/toolbox/electrical{ - pixel_x = -2; - pixel_y = -5 - }, -/turf/open/floor/plating, -/area/virtual_domain) "lC" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -1436,6 +1423,36 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/dark, /area/virtual_domain) +"lM" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L6" + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "c"; + pixel_x = -11; + pixel_y = 16 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "o"; + pixel_x = 4; + pixel_y = 16 + }, +/turf/open/floor/iron, +/area/virtual_domain) +"lN" = ( +/obj/item/bodybag{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 9; + pixel_y = -5 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain) "lQ" = ( /obj/structure/spacevine{ can_spread = 0 @@ -1493,6 +1510,14 @@ }, /turf/open/floor/iron/dark, /area/virtual_domain) +"mj" = ( +/obj/item/flashlight/flare/candle/infinite{ + icon_state = "candle3_lit"; + pixel_x = -13; + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/virtual_domain) "mo" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -1750,17 +1775,6 @@ }, /turf/open/floor/iron, /area/virtual_domain) -"pa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/item/flashlight/flare/candle/infinite{ - icon_state = "candle3_lit"; - pixel_x = 13; - pixel_y = 8 - }, -/obj/item/trash/candle, -/turf/open/floor/plating, -/area/virtual_domain) "pb" = ( /obj/item/radio/intercom/directional/north{ pixel_y = 34 @@ -1786,6 +1800,24 @@ /obj/structure/barricade/sandbags, /turf/open/floor/plating, /area/virtual_domain) +"pp" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/oil{ + icon_state = "floor6" + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/item/modular_computer/laptop{ + icon_state = "laptop"; + pixel_x = 2; + pixel_y = 12 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/virtual_domain) "pr" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 @@ -1831,11 +1863,9 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/iron, /area/virtual_domain) -"pG" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/effect/turf_decal/tile/neutral, +"pH" = ( /obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/iron, +/turf/open/floor/wood, /area/virtual_domain) "pJ" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ @@ -1904,15 +1934,6 @@ }, /turf/open/floor/iron, /area/virtual_domain) -"qg" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/syringe/lethal/execution, -/obj/item/reagent_containers/syringe/lethal/execution{ - pixel_x = -4; - pixel_y = 7 - }, -/turf/open/floor/carpet, -/area/virtual_domain) "qk" = ( /obj/structure/chair/comfy/beige, /turf/open/floor/carpet, @@ -2124,14 +2145,6 @@ /obj/effect/spawner/random/trash, /turf/open/floor/carpet, /area/virtual_domain) -"rM" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/item/clothing/head/cone{ - pixel_x = 1; - pixel_y = 3 - }, -/turf/open/floor/plating, -/area/virtual_domain) "rO" = ( /obj/item/disk/nuclear/fake/obvious, /turf/open/floor/carpet, @@ -2180,14 +2193,6 @@ /obj/structure/flora/rock/icy, /turf/open/floor/iron/dark, /area/virtual_domain) -"sg" = ( -/obj/effect/decal/cleanable/blood/gibs/robot_debris/old, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/fluff/paper/stack{ - dir = 4 - }, -/turf/open/floor/iron, -/area/virtual_domain) "si" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -2291,6 +2296,23 @@ }, /turf/open/floor/iron, /area/virtual_domain) +"tj" = ( +/obj/structure/bed/dogbed/renault, +/mob/living/basic/pet/fox, +/obj/item/stack/spacecash/c1000{ + pixel_x = 5; + pixel_y = 15 + }, +/obj/item/storage/briefcase/secure/syndie{ + pixel_x = -6; + pixel_y = 13 + }, +/obj/item/stack/sheet/mineral/diamond{ + pixel_x = 9; + pixel_y = 9 + }, +/turf/open/floor/carpet, +/area/virtual_domain) "tk" = ( /obj/machinery/button/door/directional/west{ id = "bridge blast"; @@ -2462,25 +2484,6 @@ }, /turf/closed/wall, /area/virtual_domain) -"uu" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L3" - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "w"; - pixel_x = -17; - pixel_y = -15 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "e"; - pixel_x = -2; - pixel_y = -16 - }, -/obj/effect/decal/cleanable/blood{ - pixel_y = -13 - }, -/turf/open/floor/iron, -/area/virtual_domain) "uw" = ( /obj/item/clothing/shoes/magboots{ pixel_x = -4; @@ -2817,17 +2820,6 @@ /obj/effect/decal/cleanable/glass, /turf/open/floor/iron/dark, /area/virtual_domain) -"xD" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/virtual_domain) -"xH" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/wood, -/area/virtual_domain) "xI" = ( /obj/item/disk/data{ pixel_x = 9; @@ -2888,6 +2880,13 @@ }, /turf/open/floor/iron, /area/virtual_domain) +"yq" = ( +/obj/structure/filingcabinet/chestdrawer{ + pixel_x = 7; + pixel_y = 2 + }, +/turf/open/floor/carpet, +/area/virtual_domain) "yt" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/grille/broken, @@ -2917,6 +2916,11 @@ "yz" = ( /turf/closed/indestructible/fakedoor, /area/virtual_domain) +"yB" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/up, +/obj/structure/alien/weeds, +/turf/open/floor/plating, +/area/virtual_domain) "yC" = ( /obj/structure/showcase/machinery/tv/broken, /turf/open/floor/carpet, @@ -3052,20 +3056,14 @@ /obj/item/papercutter, /turf/open/floor/iron/dark, /area/virtual_domain) -"zD" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L7" - }, +"zB" = ( +/obj/structure/broken_flooring/side/directional/north, /obj/effect/decal/cleanable/crayon{ - icon_state = "e"; - pixel_x = 1; - pixel_y = -16 + icon_state = "m"; + pixel_x = -13; + pixel_y = 17 }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "guy"; - pixel_y = -5 - }, -/turf/open/floor/iron, +/turf/open/floor/plating, /area/virtual_domain) "zE" = ( /obj/machinery/holopad, @@ -3116,6 +3114,13 @@ /obj/structure/closet/body_bag, /turf/open/floor/iron, /area/virtual_domain) +"Ad" = ( +/obj/item/clothing/head/cone{ + pixel_x = 7; + pixel_y = -5 + }, +/turf/open/floor/plating, +/area/virtual_domain) "Ah" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -3157,6 +3162,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_dark, /area/virtual_domain) +"AD" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/item/clothing/head/cone{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/open/floor/plating, +/area/virtual_domain) "AM" = ( /obj/structure/fluff/paper/stack{ dir = 1 @@ -3289,16 +3302,6 @@ }, /turf/open/floor/iron, /area/virtual_domain) -"BC" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/oil{ - icon_state = "floor5" - }, -/turf/open/floor/iron, -/area/virtual_domain) "BF" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -3306,15 +3309,6 @@ /obj/effect/turf_decal/trimline/blue/filled/warning/corner, /turf/open/floor/iron, /area/virtual_domain) -"BH" = ( -/obj/item/clothing/head/cone{ - pixel_x = 6; - pixel_y = 2 - }, -/obj/effect/decal/cleanable/glass, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/virtual_domain) "BJ" = ( /obj/effect/turf_decal/plaque{ icon_state = "L1" @@ -3401,6 +3395,14 @@ /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/iron, /area/virtual_domain) +"Cs" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/decal/cleanable/blood/gibs/robot_debris/limb, +/obj/machinery/exoscanner, +/obj/effect/turf_decal/bot_red, +/turf/open/floor/iron, +/area/virtual_domain) "Cw" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/stool/directional/west, @@ -3479,6 +3481,15 @@ /obj/structure/spider/stickyweb, /turf/open/floor/iron, /area/virtual_domain) +"Dc" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/clothing/head/cone{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/open/floor/iron/dark, +/area/virtual_domain) "Dk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -3638,13 +3649,6 @@ "EH" = ( /turf/open/misc/grass/jungle, /area/virtual_domain) -"EJ" = ( -/obj/structure/filingcabinet/chestdrawer{ - pixel_x = 7; - pixel_y = 2 - }, -/turf/open/floor/carpet, -/area/virtual_domain) "EK" = ( /obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/tile/neutral{ @@ -3670,6 +3674,51 @@ }, /turf/open/floor/iron/dark, /area/virtual_domain) +"EV" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L7" + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "e"; + pixel_x = 1; + pixel_y = -16 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "guy"; + pixel_y = -5 + }, +/turf/open/floor/iron, +/area/virtual_domain) +"Fa" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/glasses/night{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night{ + pixel_x = -5; + pixel_y = -3 + }, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Fc" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/item/clothing/suit/bio_suit/virology, +/obj/item/clothing/head/bio_hood/virology{ + pixel_x = 8; + pixel_y = 10 + }, +/obj/effect/turf_decal/trimline/blue/filled/warning, +/obj/structure/sign/warning/biohazard/directional/north, +/turf/open/floor/iron, +/area/virtual_domain) +"Fd" = ( +/turf/open/space/basic, +/area/space/virtual_domain) "Ff" = ( /obj/machinery/firealarm/directional/south, /obj/structure/railing{ @@ -3910,11 +3959,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/virtual_domain) -"GZ" = ( -/obj/effect/decal/cleanable/blood/gibs/xeno/down, -/obj/structure/alien/weeds, -/turf/open/floor/plating, -/area/virtual_domain) "Hb" = ( /obj/effect/spawner/random/trash, /turf/open/floor/iron, @@ -3927,6 +3971,14 @@ "Hd" = ( /turf/open/floor/iron, /area/virtual_domain) +"Hg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/flashlight/flare/candle/infinite{ + icon_state = "candle2_lit"; + pixel_y = -9 + }, +/turf/open/floor/iron, +/area/virtual_domain) "Hh" = ( /obj/machinery/shower/directional/south, /obj/structure/curtain, @@ -4006,6 +4058,17 @@ /obj/structure/holosign/barrier/engineering, /turf/open/floor/plating, /area/virtual_domain) +"HS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/item/flashlight/flare/candle/infinite{ + icon_state = "candle3_lit"; + pixel_x = 13; + pixel_y = 8 + }, +/obj/item/trash/candle, +/turf/open/floor/plating, +/area/virtual_domain) "HX" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /obj/structure/window/reinforced/spawner/directional/south, @@ -4058,6 +4121,13 @@ /obj/item/spear/explosive, /turf/open/floor/iron/dark, /area/virtual_domain) +"IB" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/gibs/robot_debris, +/turf/open/floor/iron, +/area/virtual_domain) "IC" = ( /obj/structure/railing{ dir = 4 @@ -4077,9 +4147,6 @@ /obj/effect/decal/cleanable/confetti, /turf/open/floor/iron, /area/virtual_domain) -"IK" = ( -/turf/open/space/basic, -/area/space/virtual_domain) "IL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -4125,6 +4192,11 @@ }, /turf/open/floor/plating, /area/virtual_domain) +"IY" = ( +/obj/effect/decal/cleanable/blood/xeno, +/obj/structure/alien/weeds, +/turf/open/floor/plating, +/area/virtual_domain) "Jh" = ( /obj/machinery/door/window/left/directional/north{ name = "Captain's Bedroom" @@ -4217,20 +4289,6 @@ }, /turf/open/floor/iron, /area/virtual_domain) -"Kg" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/item/clothing/suit/bio_suit/virology, -/obj/item/clothing/head/bio_hood/virology{ - pixel_x = 8; - pixel_y = 10 - }, -/obj/effect/turf_decal/trimline/blue/filled/warning, -/obj/structure/sign/warning/biohazard/directional/north, -/turf/open/floor/iron, -/area/virtual_domain) "Kh" = ( /obj/structure/chair/office{ dir = 8 @@ -4283,29 +4341,10 @@ /obj/structure/plaque/static_plaque/golden/commission/meta, /turf/open/floor/iron, /area/virtual_domain) -"Kx" = ( -/obj/structure/broken_flooring/side/directional/north, -/obj/effect/decal/cleanable/crayon{ - icon_state = "m"; - pixel_x = -13; - pixel_y = 17 - }, -/turf/open/floor/plating, -/area/virtual_domain) "KA" = ( /obj/item/chair, /turf/open/floor/iron, /area/virtual_domain) -"KE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/item/storage/box/mothic_rations{ - pixel_x = 6; - pixel_y = -9 - }, -/turf/open/floor/iron/dark, -/area/virtual_domain) "KF" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/mapping_helpers/broken_floor, @@ -4390,22 +4429,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/virtual_domain) -"Ly" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L6" - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "c"; - pixel_x = -11; - pixel_y = 16 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "o"; - pixel_x = 4; - pixel_y = 16 - }, -/turf/open/floor/iron, -/area/virtual_domain) "Lz" = ( /obj/effect/decal/cleanable/confetti, /obj/machinery/jukebox/disco{ @@ -4414,24 +4437,6 @@ }, /turf/open/floor/iron, /area/virtual_domain) -"LA" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/oil{ - icon_state = "floor6" - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/item/modular_computer/laptop{ - icon_state = "laptop"; - pixel_x = 2; - pixel_y = 12 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/virtual_domain) "LB" = ( /obj/structure/lattice, /obj/item/gun/ballistic/rifle/boltaction/surplus, @@ -4769,6 +4774,11 @@ }, /turf/open/floor/iron, /area/virtual_domain) +"NW" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/down, +/obj/structure/alien/weeds, +/turf/open/floor/plating, +/area/virtual_domain) "NZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -4964,15 +4974,14 @@ }, /turf/open/floor/iron, /area/virtual_domain) -"Pu" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/status_display/evac/directional/east, -/obj/item/stock_parts/subspace/crystal{ - pixel_x = 6; - pixel_y = -12 +"Pr" = ( +/obj/structure/bed/medical/emergency, +/obj/effect/turf_decal/bot{ + dir = 1 }, -/turf/open/floor/iron/dark, +/obj/machinery/wall_healer/free/directional/west, +/obj/effect/mob_spawn/corpse/human/assistant, +/turf/open/floor/iron, /area/virtual_domain) "Py" = ( /obj/machinery/status_display/evac/directional/north, @@ -5032,14 +5041,6 @@ /obj/item/restraints/legcuffs/beartrap/prearmed, /turf/open/floor/iron, /area/virtual_domain) -"Qa" = ( -/obj/structure/table/wood, -/obj/machinery/light/directional/south, -/obj/item/papercutter{ - pixel_x = -4 - }, -/turf/open/floor/wood, -/area/virtual_domain) "Qc" = ( /obj/machinery/firealarm/directional/west, /obj/structure/alien/weeds, @@ -5160,6 +5161,18 @@ }, /turf/open/floor/iron, /area/virtual_domain) +"Rn" = ( +/obj/item/clothing/head/cone{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/storage/toolbox/electrical{ + pixel_x = -2; + pixel_y = -5 + }, +/turf/open/floor/plating, +/area/virtual_domain) "Rx" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -5394,6 +5407,15 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/virtual_domain) +"SY" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/syringe/lethal/execution, +/obj/item/reagent_containers/syringe/lethal/execution{ + pixel_x = -4; + pixel_y = 7 + }, +/turf/open/floor/carpet, +/area/virtual_domain) "Te" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 6 @@ -5401,14 +5423,6 @@ /obj/effect/mob_spawn/corpse/human/doctor, /turf/open/indestructible/meat, /area/virtual_domain) -"Th" = ( -/obj/item/camera/detective{ - pixel_x = 9; - pixel_y = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/virtual_domain) "Tm" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -5568,15 +5582,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/virtual_domain) -"UB" = ( -/obj/item/clothing/head/cone{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/structure/grille/broken, -/obj/structure/cable, -/turf/open/floor/plating, -/area/virtual_domain) "UF" = ( /obj/structure/flora/bush/jungle/a/style_random, /obj/item/banner/science, @@ -5605,14 +5610,6 @@ /obj/effect/mob_spawn/corpse/human/scientist, /turf/open/misc/grass/jungle, /area/virtual_domain) -"UW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/flashlight/flare/candle/infinite{ - icon_state = "candle2_lit"; - pixel_y = -9 - }, -/turf/open/floor/iron, -/area/virtual_domain) "Ve" = ( /obj/item/radio/intercom/directional/west, /obj/effect/turf_decal/tile/neutral{ @@ -5636,6 +5633,14 @@ "Vs" = ( /turf/closed/indestructible/rock, /area/virtual_domain) +"Vt" = ( +/obj/effect/decal/cleanable/blood/gibs/robot_debris/old, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/fluff/paper/stack{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain) "Vw" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, @@ -5654,6 +5659,15 @@ /obj/item/trash/flare, /turf/open/floor/carpet, /area/virtual_domain) +"VH" = ( +/obj/item/storage/box/lights/mixed, +/obj/item/flashlight/flare/candle/infinite{ + icon_state = "candle2_lit"; + pixel_x = -17; + pixel_y = 16 + }, +/turf/open/floor/plating, +/area/virtual_domain) "VO" = ( /obj/machinery/door/airlock{ name = "Central Emergency Storage" @@ -5718,13 +5732,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/virtual_domain) -"WD" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/gibs/robot_debris, -/turf/open/floor/iron, -/area/virtual_domain) "WF" = ( /obj/structure/table/wood, /obj/machinery/button/ticket_machine{ @@ -5905,11 +5912,6 @@ /obj/item/stack/cable_coil/cut, /turf/open/floor/iron, /area/virtual_domain) -"XQ" = ( -/obj/effect/decal/cleanable/blood/gibs/xeno/core, -/obj/structure/alien/weeds, -/turf/open/floor/plating, -/area/virtual_domain) "XW" = ( /obj/structure/frame/machine/secured, /obj/structure/marker_beacon/teal, @@ -5927,14 +5929,6 @@ }, /turf/open/floor/iron/dark, /area/virtual_domain) -"Ye" = ( -/obj/item/flashlight/flare/candle/infinite{ - icon_state = "candle3_lit"; - pixel_x = -13; - pixel_y = 8 - }, -/turf/open/floor/plating, -/area/virtual_domain) "Yf" = ( /obj/machinery/recharger{ pixel_x = 2; @@ -5952,21 +5946,6 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/virtual_domain) -"Yj" = ( -/obj/structure/rack, -/obj/item/wrench, -/obj/item/screwdriver, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/item/flashlight/flare/candle/infinite{ - icon_state = "candle2_lit"; - pixel_x = 17; - pixel_y = 16 - }, -/turf/open/floor/iron, -/area/virtual_domain) "Yl" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/closed/indestructible/binary, @@ -6032,9 +6011,14 @@ /obj/structure/frame/machine/secured, /turf/open/floor/iron, /area/virtual_domain) -"YF" = ( -/obj/machinery/photocopier/prebuilt, -/turf/open/floor/carpet, +"YD" = ( +/obj/item/clothing/head/cone{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/glass, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, /area/virtual_domain) "YG" = ( /obj/effect/mapping_helpers/broken_floor, @@ -6146,6 +6130,13 @@ /obj/effect/spawner/random/vending/colavend, /turf/open/floor/iron/dark, /area/virtual_domain) +"Zx" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/virtual_domain) "ZC" = ( /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/misc/grass/jungle, @@ -6164,6 +6155,15 @@ }, /turf/open/floor/iron, /area/virtual_domain) +"ZH" = ( +/obj/item/clothing/head/cone{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/structure/grille/broken, +/obj/structure/cable, +/turf/open/floor/plating, +/area/virtual_domain) "ZK" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ @@ -6358,7 +6358,7 @@ ps ps ps ps -xD +Zx Ii ps HM @@ -6406,7 +6406,7 @@ xK ux CM KR -en +kU ro ps HM @@ -6676,7 +6676,7 @@ uS Yf nY GS -YF +jX Ue ZF uS @@ -6712,21 +6712,21 @@ uz HM uS uS -LA +pp Mz uY ps iv dl -pa -Yj +HS +fC uS uS uS uS ML DP -Qa +ch uS ND AP @@ -6762,10 +6762,10 @@ HM uS gM CL -fv +Cs ps ps -UW +Hg tf fh ps @@ -6808,14 +6808,14 @@ uz uz HM HH -WD +IB Kl -pG +ei ps Yi vA -Ye -fZ +mj +VH lJ Oq uS @@ -6837,7 +6837,7 @@ ps ps ps uS -Kg +Fc BZ hz ps @@ -6857,7 +6857,7 @@ uz HM uS nU -sg +Vt bs VO ey @@ -6879,9 +6879,9 @@ Ed uS kW lL -ad +yB Qc -GZ +NW DQ Pk uS @@ -6904,7 +6904,7 @@ uz uz HM uS -BC +kR Yt uD ps @@ -6917,7 +6917,7 @@ uf uS cD Kh -EJ +yq WF uS YB @@ -6976,7 +6976,7 @@ IS jm cW Cd -fw +IY Lm jD IH @@ -7071,7 +7071,7 @@ tu uS uS dE -XQ +hT cW cW ps @@ -7169,7 +7169,7 @@ hZ hZ uS Yo -xH +pH pK ep FF @@ -7178,13 +7178,13 @@ FR Hd Ka ps -IK -IK -IK -IK -IK -IK -IK +Fd +Fd +Fd +Fd +Fd +Fd +Fd ps HM "} @@ -7195,9 +7195,9 @@ RV BJ Xp Ol -jq +Ad vw -UB +ZH uk NG aA @@ -7232,7 +7232,7 @@ hX hX hX Ls -IK +Fd ps HM "} @@ -7270,17 +7270,17 @@ Ie Oh uS Qp -uu +ck Pa oD pB hX zQ -kF +Fa hX hX hX -IK +Fd ps HM "} @@ -7319,7 +7319,7 @@ Zh an PC pA -Ly +lM Bp LD hX @@ -7328,7 +7328,7 @@ hX hX hX hX -IK +Fd ps HM "} @@ -7354,7 +7354,7 @@ JP kg zo zx -rM +AD iy Kw yH @@ -7366,8 +7366,8 @@ Km fh MS mt -zD -Kx +EV +zB Io vw hX @@ -7376,7 +7376,7 @@ fD Cx hX hX -IK +Fd ps HM "} @@ -7402,7 +7402,7 @@ nw se xW lk -jq +Ad CJ Hd KA @@ -7424,7 +7424,7 @@ hX hX hX hX -IK +Fd ps HM "} @@ -7472,7 +7472,7 @@ hX Ca hX hX -IK +Fd ps HM "} @@ -7520,7 +7520,7 @@ hX hX hX rs -IK +Fd ps HM "} @@ -7562,13 +7562,13 @@ Hd aC Uo lE -IK -IK -IK -IK -IK -IK -IK +Fd +Fd +Fd +Fd +Fd +Fd +Fd ps HM "} @@ -7585,7 +7585,7 @@ kp Mo Kn Ss -KE +at yy HC ps @@ -7696,7 +7696,7 @@ Nh zg Fj NO -hv +Pr uA yN Ff @@ -7769,7 +7769,7 @@ uz HM yz Ny -Th +fn Mq uS uS @@ -7927,8 +7927,8 @@ XJ Iq sA MJ -qg -bp +SY +tj uS dd ai @@ -8031,8 +8031,8 @@ Ol Gn uS Nq -Pu -kH +iY +Dc dC jz qr @@ -8062,7 +8062,7 @@ yE Oi SN Oi -BH +YD zO sz ps @@ -8155,7 +8155,7 @@ KM dd Hd lU -ly +Rn Oi Oi AM @@ -8205,7 +8205,7 @@ kI nS FZ bw -ev +lN IC SC gj diff --git a/code/__DEFINES/ai/ai_blackboard.dm b/code/__DEFINES/ai/ai_blackboard.dm index 1b94abc95c1..ebcd71345ee 100644 --- a/code/__DEFINES/ai/ai_blackboard.dm +++ b/code/__DEFINES/ai/ai_blackboard.dm @@ -171,8 +171,8 @@ ///Mob the MOD is trying to attach to #define BB_MOD_TARGET "BB_mod_target" -///The implant the AI was created from -#define BB_MOD_IMPLANT "BB_mod_implant" +///The module the AI was created from +#define BB_MOD_MODULE "BB_mod_module" ///Range for a MOD AI controller. #define MOD_AI_RANGE 200 diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index f480f085d25..519ab24e474 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -124,6 +124,7 @@ #define COLOR_SCIENCE_PINK "#C96DBF" #define COLOR_MOSTLY_PURE_PINK "#E4005B" #define COLOR_ADMIN_PINK "#D100D1" +#define COLOR_TONGUE_PINK "#ff6ea0" #define COLOR_BLUSH_PINK "#DE5D83" #define COLOR_FADED_PINK "#ff80d5" #define COLOR_MAGENTA "#FF00FF" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm index 1f261db129a..522a5b72f55 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm @@ -70,6 +70,8 @@ #define COMSIG_ATOM_EXITED "atom_exited" ///from base of atom/movable/Moved(): (atom/movable/gone, direction) #define COMSIG_ATOM_ABSTRACT_EXITED "atom_abstract_exited" +///from base of atom/Exited(): (atom/exited, direction) +#define COMSIG_ATOM_EXITING "atom_exiting" ///from base of atom/Bumped(): (/atom/movable) (the one that gets bumped) #define COMSIG_ATOM_BUMPED "atom_bumped" ///from base of atom/has_gravity(): (turf/location, list/forced_gravities) diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index 844d72bc62f..d09d74c5098 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -29,8 +29,8 @@ #define COMSIG_MACHINERY_SET_OCCUPANT "machinery_set_occupant" ///from /obj/machinery/destructive_scanner/proc/open(aggressive): Runs when the destructive scanner scans a group of objects. (list/scanned_atoms) #define COMSIG_MACHINERY_DESTRUCTIVE_SCAN "machinery_destructive_scan" -///from /obj/machinery/computer/arcade/prizevend(mob/user, prizes = 1) -#define COMSIG_ARCADE_PRIZEVEND "arcade_prizevend" +///from /obj/machinery/computer/arcade/victory_tickets(tickets, sound = TRUE) +#define COMSIG_ARCADE_VICTORY "arcade_victory" ///from /datum/controller/subsystem/air/proc/start_processing_machine: () #define COMSIG_MACHINERY_START_PROCESSING_AIR "start_processing_air" ///from /datum/controller/subsystem/air/proc/stop_processing_machine: () @@ -521,9 +521,6 @@ /// from /obj/item/detective_scanner/scan(): (mob/user, list/extra_data) #define COMSIG_DETECTIVE_SCANNED "det_scanned" -/// from /obj/machinery/mineral/ore_redemption/pickup_item when it successfully picks something up -#define COMSIG_ORM_COLLECTED_ORE "orm_collected_ore" - /// from /obj/plunger_act when an object is being plungered #define COMSIG_PLUNGER_ACT "plunger_act" diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 773605f3146..2d449961864 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -86,7 +86,7 @@ DEFINE_BITFIELD(no_equip_flags, list( ITEM_SLOT_MASK | ITEM_SLOT_HEAD | ITEM_SLOT_FEET | ITEM_SLOT_ID | ITEM_SLOT_BELT | ITEM_SLOT_BACK | ITEM_SLOT_NECK ) //Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. -//Make sure to update check_obscured_slots() if you add more. +//Make sure to update obscured_slots if you add more. #define HIDEGLOVES (1<<0) #define HIDESUITSTORAGE (1<<1) #define HIDEJUMPSUIT (1<<2) //these first four are only used in exterior suits diff --git a/code/__DEFINES/mod.dm b/code/__DEFINES/mod.dm index 1a4bed1ca99..5760dc5a05f 100644 --- a/code/__DEFINES/mod.dm +++ b/code/__DEFINES/mod.dm @@ -7,6 +7,9 @@ /// Default time for a part of the suit to seal. #define MOD_ACTIVATION_STEP_TIME (1 SECONDS) +/// How likely the UI is to fail when malfunctioning +#define MOD_MALFUNCTION_PROB 75 + /// Passive module, just acts when put in naturally. #define MODULE_PASSIVE 0 /// Usable module, does something when you press a button. @@ -22,6 +25,8 @@ #define MODULE_ALLOW_INCAPACITATED (1<<1) /// This module can be used while the suit is off #define MODULE_ALLOW_INACTIVE (1<<2) +/// This module can be used (by button) while the suit is unworn +#define MODULE_ALLOW_UNWORN (1<<3) #define UNSEALED_LAYER "unsealed_layer" #define SEALED_LAYER "sealed_layer" diff --git a/code/__HELPERS/levels.dm b/code/__HELPERS/levels.dm index 14d65a929dc..6818978d7d1 100644 --- a/code/__HELPERS/levels.dm +++ b/code/__HELPERS/levels.dm @@ -52,10 +52,14 @@ // Central Command is definitely in space return FALSE - if(what.onSyndieBase()) + if(what.onSyndieBase() && !what.on_escaped_shuttle()) // Syndicate recon outpost is on some moon or something return TRUE + if(is_reserved_level(what_turf.z)) + // Reserved levels are primarily shuttles aside from syndie base + return FALSE + // Finally, more specific checks are ran for edge cases, such as lazily loaded map templates or away missions. Not perfect. return istype(what_turf) && what_turf.planetary_atmos && what_turf.has_gravity() diff --git a/code/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm index 7aaca3e7556..cc907f1bc49 100644 --- a/code/__HELPERS/pronouns.dm +++ b/code/__HELPERS/pronouns.dm @@ -413,8 +413,8 @@ /mob/living/carbon/human/get_visible_gender() if(HAS_TRAIT(src, TRAIT_UNKNOWN)) return PLURAL - var/face_hidden = (wear_mask?.flags_inv & HIDEFACE) || (head?.flags_inv & HIDEFACE) - if(face_hidden && (check_obscured_slots() & ITEM_SLOT_ICLOTHING)) + // If both face and uniform are hidden, can't assess gender + if(obscured_slots & (HIDEFACE|HIDEJUMPSUIT) == (HIDEFACE|HIDEJUMPSUIT)) return PLURAL return gender diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 9a7e6cdc6b1..12343014bc4 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -207,28 +207,39 @@ DEFINE_BITFIELD(item_flags, list( "NO_BLOOD_ON_ITEM" = NO_BLOOD_ON_ITEM, )) -DEFINE_BITFIELD(flags_inv, list( - "HIDEEARS" = HIDEEARS, - "HIDEEYES" = HIDEEYES, - "HIDEFACE" = HIDEFACE, - "HIDEFACIALHAIR" = HIDEFACIALHAIR, - "HIDEGLOVES" = HIDEGLOVES, - "HIDEHAIR" = HIDEHAIR, - "HIDEHEADGEAR" = HIDEHEADGEAR, - "HIDEJUMPSUIT" = HIDEJUMPSUIT, - "HIDEMASK" = HIDEMASK, - "HIDEBELT" = HIDEBELT, - "HIDENECK" = HIDENECK, - "HIDESHOES" = HIDESHOES, - "HIDESNOUT" = HIDESNOUT, - "HIDESUITSTORAGE" = HIDESUITSTORAGE, - "HIDEMUTWINGS" = HIDEMUTWINGS, - "HIDEANTENNAE" = HIDEANTENNAE, - "SHOWSPRITEEARS" = SHOWSPRITEEARS, // SKYRAT EDIT ADDITION START - "HIDETAIL" = HIDETAIL, - "HIDESPINE" = HIDESPINE, - "HIDESEXTOY" = HIDESEXTOY, // SKYRAT EDIT ADDITION END -)) +#define HIDEFLAGS_BITFIELD list( \ + "HIDEEARS" = HIDEEARS, \ + "HIDEEYES" = HIDEEYES, \ + "HIDEFACE" = HIDEFACE, \ + "HIDEFACIALHAIR" = HIDEFACIALHAIR, \ + "HIDEGLOVES" = HIDEGLOVES, \ + "HIDEHAIR" = HIDEHAIR, \ + "HIDEHEADGEAR" = HIDEHEADGEAR, \ + "HIDEJUMPSUIT" = HIDEJUMPSUIT, \ + "HIDEMASK" = HIDEMASK, \ + "HIDEBELT" = HIDEBELT, \ + "HIDENECK" = HIDENECK, \ + "HIDESHOES" = HIDESHOES, \ + "HIDESNOUT" = HIDESNOUT, \ + "HIDESUITSTORAGE" = HIDESUITSTORAGE, \ + "HIDEMUTWINGS" = HIDEMUTWINGS, \ + "HIDEANTENNAE" = HIDEANTENNAE, \ + "SHOWSPRITEEARS" = SHOWSPRITEEARS, \ // SKYRAT EDIT ADDITION START + "HIDETAIL" = HIDETAIL, \ + "HIDESPINE" = HIDESPINE, \ + "HIDESEXTOY" = HIDESEXTOY, \ // SKYRAT EDIT ADDITION END +) + +/// Item obscured flags +DEFINE_BITFIELD(flags_inv, HIDEFLAGS_BITFIELD) +/// Item coverage flags +DEFINE_BITFIELD(transparent_protection, HIDEFLAGS_BITFIELD) +/// Mob obscured flags +DEFINE_BITFIELD(obscured_slots, HIDEFLAGS_BITFIELD) +/// Mob covered flags +DEFINE_BITFIELD(covered_slots, HIDEFLAGS_BITFIELD) + +#undef HIDEFLAGS_BITFIELD DEFINE_BITFIELD(strict_coverage_zones, list( "HAIR_APPENDAGE_FRONT" = HAIR_APPENDAGE_FRONT, diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 3434f8a0c9f..826f525d9fa 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -412,6 +412,9 @@ GLOBAL_LIST_INIT(maintenance_loot, list( GLOB.oddity_loot = maint_oddity_weight, )) +//Loot pool that is copied from maint loot but doesn't get changed due to holidays +GLOBAL_LIST_INIT(dumpster_loot, GLOB.maintenance_loot.Copy()) + GLOBAL_LIST_INIT(ratking_trash, list(//Garbage: used by the regal rat mob when spawning garbage. /obj/item/cigbutt, /obj/item/trash/candy, diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 561e903d418..e4a800a41aa 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -65,7 +65,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_MOVE_GROUND" = TRAIT_MOVE_GROUND, "TRAIT_MOVE_PHASING" = TRAIT_MOVE_PHASING, "TRAIT_MOVE_UPSIDE_DOWN" = TRAIT_MOVE_UPSIDE_DOWN, - "TRAIT_MOVE_UPSIDE_DOWN" = TRAIT_MOVE_UPSIDE_DOWN, "TRAIT_MOVE_VENTCRAWLING" = TRAIT_MOVE_VENTCRAWLING, "TRAIT_NOT_BARFABLE" = TRAIT_NOT_BARFABLE, "TRAIT_NOT_ENGRAVABLE" = TRAIT_NOT_ENGRAVABLE, diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index c3ce31d9d3d..e26eb16f6cc 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -72,8 +72,6 @@ if(screen.needs_offsetting) screen.plane = GET_NEW_PLANE(initial(screen.plane), offset) -INITIALIZE_IMMEDIATE(/atom/movable/screen/fullscreen) - /atom/movable/screen/fullscreen icon = 'icons/hud/screen_full.dmi' icon_state = "default" diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index f2aaf01850d..01262c0efd4 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -304,7 +304,7 @@ var/mob/living/carbon/human/human_mob = mymob if(istype(human_mob)) blocked_slots |= human_mob.dna?.species?.no_equip_flags - if(isnull(human_mob.w_uniform) && !HAS_TRAIT(human_mob, TRAIT_NO_JUMPSUIT)) + if((isnull(human_mob.w_uniform) || !(human_mob.w_uniform.item_flags & IN_INVENTORY)) && !HAS_TRAIT(human_mob, TRAIT_NO_JUMPSUIT)) var/obj/item/bodypart/chest = human_mob.get_bodypart(BODY_ZONE_CHEST) if(isnull(chest) || IS_ORGANIC_LIMB(chest)) blocked_slots |= ITEM_SLOT_ID|ITEM_SLOT_BELT @@ -314,7 +314,7 @@ var/obj/item/bodypart/right_leg = human_mob.get_bodypart(BODY_ZONE_R_LEG) if(isnull(right_leg) || IS_ORGANIC_LIMB(right_leg)) blocked_slots |= ITEM_SLOT_RPOCKET - if(isnull(human_mob.wear_suit)) + if(isnull(human_mob.wear_suit) || !(human_mob.wear_suit.item_flags & IN_INVENTORY)) blocked_slots |= ITEM_SLOT_SUITSTORE if(human_mob.num_hands <= 0) blocked_slots |= ITEM_SLOT_GLOVES diff --git a/code/controllers/subsystem/dynamic/dynamic_testing.dm b/code/controllers/subsystem/dynamic/dynamic_testing.dm index 5df1e3d2977..c1b5c3df005 100644 --- a/code/controllers/subsystem/dynamic/dynamic_testing.dm +++ b/code/controllers/subsystem/dynamic/dynamic_testing.dm @@ -70,14 +70,14 @@ ADMIN_VERB(dynamic_tester, R_DEBUG, "Dynamic Tester", "See dynamic probabilities switch(action) if("set_num_players") var/old_num = num_players - num_players = text2num(params["num_players"]) + num_players = max(text2num(params["num_players"]), 1) if(old_num != num_players) update_reports() return TRUE if("set_tier") var/old_tier = tier - tier = text2num(params["tier"]) + tier = max(text2num(params["tier"]), 1) if(old_tier != tier) update_reports() return TRUE diff --git a/code/datums/ai/objects/mod.dm b/code/datums/ai/objects/mod.dm index 2b4c1f7e2b0..46b41adb1c8 100644 --- a/code/datums/ai/objects/mod.dm +++ b/code/datums/ai/objects/mod.dm @@ -1,8 +1,8 @@ -/// An AI controller for the MODsuit pathfinder module. It's activated by implant and attaches itself to the user. +/// An AI controller for the MODsuit pathfinder module. It's activated by module and attaches itself to the user. /datum/ai_controller/mod blackboard = list( BB_MOD_TARGET, - BB_MOD_IMPLANT, + BB_MOD_MODULE, ) can_idle = FALSE max_target_distance = MOD_AI_RANGE //a little spicy but its one specific item that summons it, and it doesn't run otherwise @@ -25,7 +25,7 @@ /datum/ai_controller/mod/SelectBehaviors(seconds_per_tick) current_behaviors = list() - if(blackboard[BB_MOD_TARGET] && blackboard[BB_MOD_IMPLANT]) + if(blackboard[BB_MOD_TARGET] && blackboard[BB_MOD_MODULE]) queue_behavior(/datum/ai_behavior/mod_attach) /datum/ai_controller/mod/get_access() @@ -37,12 +37,12 @@ /datum/ai_behavior/mod_attach/perform(seconds_per_tick, datum/ai_controller/controller) if(!controller.pawn.Adjacent(controller.blackboard[BB_MOD_TARGET])) return AI_BEHAVIOR_DELAY - var/obj/item/implant/mod/implant = controller.blackboard[BB_MOD_IMPLANT] - implant.module.attach(controller.blackboard[BB_MOD_TARGET]) + var/obj/item/mod/module/pathfinder/module = controller.blackboard[BB_MOD_MODULE] + module.attach(controller.blackboard[BB_MOD_TARGET]) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED /datum/ai_behavior/mod_attach/finish_action(datum/ai_controller/controller, succeeded) . = ..() controller.clear_blackboard_key(BB_MOD_TARGET) - var/obj/item/implant/mod/implant = controller.blackboard[BB_MOD_IMPLANT] - implant.end_recall(succeeded) + var/obj/item/mod/module/pathfinder/module = controller.blackboard[BB_MOD_MODULE] + module.end_recall(succeeded) diff --git a/code/datums/bodypart_overlays/emote_bodypart_overlay.dm b/code/datums/bodypart_overlays/emote_bodypart_overlay.dm index 4b0998d43e2..32d301a18b1 100644 --- a/code/datums/bodypart_overlays/emote_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/emote_bodypart_overlay.dm @@ -49,6 +49,13 @@ bodypart.add_bodypart_overlay(overlay) return overlay +/datum/bodypart_overlay/simple/emote/tongue + icon_state = "tongue" + draw_color = COLOR_TONGUE_PINK + layers = EXTERNAL_ADJACENT + offset_key = OFFSET_FACE + attached_body_zone = BODY_ZONE_HEAD + /datum/bodypart_overlay/simple/emote/blush icon_state = "blush" draw_color = COLOR_BLUSH_PINK diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm index 0f4b5d8321e..4dc7a7feeb6 100644 --- a/code/datums/components/bloodysoles.dm +++ b/code/datums/components/bloodysoles.dm @@ -43,7 +43,7 @@ * Returns true if the parent item is obscured by something else that the wielder is wearing */ /datum/component/bloodysoles/proc/is_obscured() - return (wielder.check_covered_slots() & equipped_slot) || is_under_feet_covered() + return (hidden_slots_to_inventory_slots(wielder.covered_slots) & equipped_slot) || is_under_feet_covered() /** * Returns true if the parent item is worn in the ITEM_SLOT_ICLOTHING slot and the diff --git a/code/datums/components/connect_range.dm b/code/datums/components/connect_range.dm index 2a9225523d3..e001261ab12 100644 --- a/code/datums/components/connect_range.dm +++ b/code/datums/components/connect_range.dm @@ -26,8 +26,8 @@ return COMPONENT_INCOMPATIBLE src.connections = connections src.range = range - set_tracked(tracked) src.works_in_containers = works_in_containers + set_tracked(tracked) /datum/component/connect_range/Destroy() set_tracked(null) diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index c9a16ba6481..5652c173ce5 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -244,7 +244,7 @@ var/found_behaviors = contents[CONTENTS_TOOL_BEHAVIOUR] for(var/behavior in recipe.tool_behaviors) - recipe_time += found_behaviors[behavior] + recipe_time += dynamic_recipe_time * found_behaviors[behavior] // BUBBER EDIT ADDITION BEGIN - Construction skill var/mob/crafting_mob = crafter var/skill_modifier = 1 diff --git a/code/datums/components/crafting/entertainment.dm b/code/datums/components/crafting/entertainment.dm index 486551f1e30..16054766d3c 100644 --- a/code/datums/components/crafting/entertainment.dm +++ b/code/datums/components/crafting/entertainment.dm @@ -257,3 +257,15 @@ time = 30 SECONDS category = CAT_ENTERTAINMENT crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED + +/datum/crafting_recipe/crackpipe + name = "Glass Pipe" + result = /obj/item/cigarette/pipe/crackpipe + time = 5 SECONDS + reqs = list( + /obj/item/stack/sheet/glass = 3, + ) + tool_paths = list( + /obj/item/screwdriver, + ) + category = CAT_ENTERTAINMENT diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm index 1881a837897..4007976994b 100644 --- a/code/datums/components/crafting/equipment.dm +++ b/code/datums/components/crafting/equipment.dm @@ -156,6 +156,9 @@ /obj/item/flashlight = 2, /obj/item/restraints/handcuffs/cable = 1 ) + blacklist = list( + /obj/item/flashlight/lamp/space_bubble, + ) category = CAT_EQUIPMENT /datum/crafting_recipe/flashlight_eyes/New() diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm index 24c391a32aa..fbd6aa44f64 100644 --- a/code/datums/components/crafting/ranged_weapon.dm +++ b/code/datums/components/crafting/ranged_weapon.dm @@ -21,7 +21,7 @@ /datum/crafting_recipe/receiver name = "Modular Rifle Receiver" - tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER, TOOL_SAW) + tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER) result = /obj/item/weaponcrafting/receiver reqs = list( /obj/item/stack/sheet/iron = 5, diff --git a/code/datums/components/cuff_n_stun.dm b/code/datums/components/cuff_n_stun.dm index fda9618e93c..6f9355cb6f1 100644 --- a/code/datums/components/cuff_n_stun.dm +++ b/code/datums/components/cuff_n_stun.dm @@ -82,7 +82,6 @@ if(!do_after(parent, handcuff_timer, human_target)) return human_target.set_handcuffed(new handcuff_type(human_target)) - human_target.update_handcuffed() post_arrest_callback?.Invoke(human_target) /datum/component/stun_n_cuff/proc/stun_target(mob/living/carbon/human_target) diff --git a/code/datums/components/lockable_storage.dm b/code/datums/components/lockable_storage.dm index b6bf81cef9d..456bac0c45d 100644 --- a/code/datums/components/lockable_storage.dm +++ b/code/datums/components/lockable_storage.dm @@ -88,7 +88,10 @@ /datum/component/lockable_storage/proc/on_requesting_context_from_item(datum/source, list/context, obj/item/held_item, mob/user) SIGNAL_HANDLER if(isnull(held_item)) - context[SCREENTIP_CONTEXT_LMB] = "Open storage" + if(source in user.held_items) + context[SCREENTIP_CONTEXT_LMB] = "Open storage" + return CONTEXTUAL_SCREENTIP_SET + context[SCREENTIP_CONTEXT_RMB] = "Open storage" return CONTEXTUAL_SCREENTIP_SET if(can_hack_open) diff --git a/code/datums/components/payment.dm b/code/datums/components/payment.dm index edb9762ba7e..97cb86e08fb 100644 --- a/code/datums/components/payment.dm +++ b/code/datums/components/payment.dm @@ -102,7 +102,7 @@ return FALSE if(physical_cash_total < total_cost) - to_chat(user, span_notice("Insufficient funds. Aborting.")) + to_chat(user, span_warning("Insufficient funds. Aborting.")) return FALSE for(var/obj/cash_object in counted_money) qdel(cash_object) diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm index d3fd5f5ad87..d2414cc5af0 100644 --- a/code/datums/components/plumbing/_plumbing.dm +++ b/code/datums/components/plumbing/_plumbing.dm @@ -46,9 +46,7 @@ set_recipient_reagents_holder(custom_receiver ? custom_receiver : parent_movable.reagents) if(start) - //We're registering here because I need to check whether we start active or not, and this is just easier - //Should be called after we finished. Done this way because other networks need to finish setting up aswell - RegisterSignal(parent, COMSIG_COMPONENT_ADDED, PROC_REF(enable)) + enable() /datum/component/plumbing/RegisterWithParent() RegisterSignals(parent, list(COMSIG_MOVABLE_MOVED, COMSIG_QDELETING), PROC_REF(disable)) @@ -60,7 +58,7 @@ /datum/component/plumbing/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_MOVABLE_MOVED, COMSIG_QDELETING, COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH, COMSIG_OBJ_HIDE, \ - COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_ATOM_DIR_CHANGE, COMSIG_MOVABLE_CHANGE_DUCT_LAYER, COMSIG_COMPONENT_ADDED)) + COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_ATOM_DIR_CHANGE, COMSIG_MOVABLE_CHANGE_DUCT_LAYER)) REMOVE_TRAIT(parent, TRAIT_UNDERFLOOR, REF(src)) /datum/component/plumbing/Destroy() @@ -233,10 +231,8 @@ duct.update_appearance() ///settle wherever we are, and start behaving like a piece of plumbing -/datum/component/plumbing/proc/enable(obj/object, datum/component/component) - SIGNAL_HANDLER - if(active || (component && component != src)) - UnregisterSignal(parent, list(COMSIG_COMPONENT_ADDED)) +/datum/component/plumbing/proc/enable() + if(active) return update_dir() diff --git a/code/datums/components/splattercasting.dm b/code/datums/components/splattercasting.dm index eafc9629a83..cc11afbf789 100644 --- a/code/datums/components/splattercasting.dm +++ b/code/datums/components/splattercasting.dm @@ -75,7 +75,7 @@ return //normal cooldown spell has - var/cooldown_remaining = spell.next_use_time - world.time + var/cooldown_remaining = max(spell.next_use_time - world.time,0) //how much we discount, we make the spell cost 1/10th of its actual cooldown var/new_cooldown = cooldown_remaining / 10 //convert how much cooldown that spell saved into blood cost diff --git a/code/datums/components/tether.dm b/code/datums/components/tether.dm index cbbd2b1c18f..b2aedaeb9ff 100644 --- a/code/datums/components/tether.dm +++ b/code/datums/components/tether.dm @@ -19,6 +19,8 @@ var/tether_trait_source /// If TRUE, only add TRAIT_TETHER_ATTACHED to our parent var/no_target_trait + /// Are we currently attempting to forcefully shorten the tether? + var/force_moving_target = FALSE /datum/component/tether/Initialize(atom/tether_target, max_dist = 7, tether_name, atom/embed_target = null, start_distance = null, \ parent_module = null, tether_trait_source = null, no_target_trait = FALSE) @@ -71,22 +73,22 @@ UnregisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED)) if (!isnull(tether_trait_source)) REMOVE_TRAIT(parent, TRAIT_TETHER_ATTACHED, tether_trait_source) - if (!QDELETED(tether_target)) - UnregisterSignal(tether_target, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED, COMSIG_QDELETING)) - if (!isnull(tether_trait_source) && !no_target_trait) - REMOVE_TRAIT(tether_target, TRAIT_TETHER_ATTACHED, tether_trait_source) - SEND_SIGNAL(tether_target, COMSIG_ATOM_TETHER_SNAPPED, tether_trait_source) if (!QDELETED(tether_beam)) UnregisterSignal(tether_beam.visuals, list(COMSIG_CLICK, COMSIG_QDELETING)) qdel(tether_beam) if (!QDELETED(embed_target)) UnregisterSignal(embed_target, list(COMSIG_ITEM_UNEMBEDDED, COMSIG_QDELETING)) + if (!QDELETED(tether_target)) + UnregisterSignal(tether_target, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED, COMSIG_QDELETING)) + if (!isnull(tether_trait_source) && !no_target_trait) + REMOVE_TRAIT(tether_target, TRAIT_TETHER_ATTACHED, tether_trait_source) + SEND_SIGNAL(tether_target, COMSIG_ATOM_TETHER_SNAPPED, tether_trait_source) SEND_SIGNAL(parent, COMSIG_ATOM_TETHER_SNAPPED, tether_trait_source) /datum/component/tether/proc/check_tether(atom/source, new_loc) SIGNAL_HANDLER - if (check_snap()) + if (check_snap(is_moving = TRUE)) return if (!isturf(new_loc)) @@ -96,50 +98,162 @@ // If this was called, we know its a movable var/atom/movable/movable_source = source var/atom/movable/anchor = (source == tether_target ? parent : tether_target) - if (get_dist(anchor, new_loc) > cur_dist) - if (!istype(anchor) || anchor.anchored || !(!anchor.anchored && anchor.move_resist <= movable_source.move_force && anchor.Move(get_step_towards(anchor, new_loc)))) + + // Ignore distance limitations if we're attempting to move the other part of the tether + if (get_dist(anchor, new_loc) > cur_dist && !force_moving_target) + if (!istype(anchor) || anchor.anchored || anchor.move_resist > movable_source.move_force) to_chat(source, span_warning("[tether_name] runs out of slack and prevents you from moving!")) return COMPONENT_MOVABLE_BLOCK_PRE_MOVE - var/atom/blocker - var/anchor_dir = get_dir(source, anchor) - for (var/turf/line_turf in get_line(anchor, new_loc)) - if (line_turf.density && line_turf != anchor.loc && line_turf != source.loc) - blocker = line_turf - break - if (line_turf == anchor.loc || line_turf == source.loc) - for (var/atom/in_turf in line_turf) - if ((in_turf.flags_1 & ON_BORDER_1) && (in_turf.dir & anchor_dir)) - blocker = in_turf - break - else - for (var/atom/in_turf in line_turf) - if (in_turf.density && in_turf != source && in_turf != tether_target) - blocker = in_turf - break + force_moving_target = TRUE + if (!try_adjust_position(anchor, new_loc, source)) + force_moving_target = FALSE + to_chat(source, span_warning("[tether_name] runs out of slack and prevents you from moving!")) + return COMPONENT_MOVABLE_BLOCK_PRE_MOVE - if (!isnull(blocker)) - break + force_moving_target = FALSE + var/atom/blocker = check_line(anchor, new_loc, list(source)) if (blocker) - to_chat(source, span_warning("[tether_name] catches on [blocker] and prevents you from moving!")) - return COMPONENT_MOVABLE_BLOCK_PRE_MOVE + if (!istype(anchor) || anchor.anchored || anchor.move_resist > movable_source.move_force) + to_chat(source, span_warning("[tether_name] runs out of slack and prevents you from moving!")) + return COMPONENT_MOVABLE_BLOCK_PRE_MOVE - if (get_dist(anchor, new_loc) != cur_dist || !ismovable(source)) + // If the tether would snag on something when we move, see if we could move to the side to get LOS back + if (!try_adjust_position(anchor, new_loc, source)) + to_chat(source, span_warning("[tether_name] catches on [blocker] and prevents you from moving!")) + return COMPONENT_MOVABLE_BLOCK_PRE_MOVE + + if (get_dist(anchor, new_loc) != cur_dist || !ismovable(source) || force_moving_target) return var/datum/drift_handler/handler = movable_source.drift_handler - if (isnull(handler)) - return - handler.remove_angle_force(get_angle(anchor, source)) + if (handler) + handler.remove_angle_force(get_angle(anchor, source)) -/datum/component/tether/proc/check_snap() +/// Try adjust the anchor's position to move closer to the target or regain LOS +/// true_source is an optional argument in case we're looking for a LOS/closer turf to a new location rather than the actual owner, and need to ignore them +/datum/component/tether/proc/try_adjust_position(atom/movable/anchor, atom/target, atom/true_source) + if (!istype(anchor) || anchor.anchored) + return FALSE + + if (anchor.x == target.x && anchor.y == target.y) + return TRUE + + var/datum/can_pass_info/pass_info = new(no_id = TRUE) + pass_info.pass_flags = anchor.pass_flags + pass_info.movement_type = anchor.movement_type + if (isliving(anchor)) + var/mob/living/living_anchor = anchor + pass_info.is_living = TRUE + pass_info.mob_size = living_anchor.mob_size + pass_info.incorporeal_move = living_anchor.incorporeal_move + pass_info.is_bot = isbot(living_anchor) + + var/list/pass_turfs = list() + var/turf/anchor_turf = get_turf(anchor) + + var/primary_cardinal = null + if (abs(anchor.x - target.x) > abs(anchor.y - target.y)) + primary_cardinal = anchor.x > target.x ? WEST : EAST + else + primary_cardinal = anchor.y > target.y ? SOUTH : NORTH + + var/anchor_dir = get_dir(anchor, target) + if (primary_cardinal == anchor_dir) + pass_turfs += get_step(anchor, primary_cardinal) + else if (get_dist(anchor, get_step(target, REVERSE_DIR(primary_cardinal))) >= get_dist(anchor, get_step(target, REVERSE_DIR(anchor_dir)))) + pass_turfs += get_step(anchor, anchor_dir) + pass_turfs += get_step(anchor, primary_cardinal) + else + pass_turfs += get_step(anchor, primary_cardinal) + pass_turfs += get_step(anchor, anchor_dir) + + // Make a list of secondary dirs to try and sidestep into if we cannot go in our main direction + var/list/match_dirs = null + if (primary_cardinal == NORTH || primary_cardinal == SOUTH) + match_dirs = list(EAST, WEST) + else + match_dirs = list(NORTH, SOUTH) + + for (var/match_dir in match_dirs) + if ((match_dir & primary_cardinal) != anchor_dir) + pass_turfs += get_step(anchor, match_dir | primary_cardinal) + + for (var/match_dir in match_dirs) + pass_turfs += get_step(anchor, match_dir) + + // The final list is something like (direct path, main cardinal, diagonals to main cardinal, 90* dirs to the main cardinal) + // Whichever one we manage to move onto first is our pick + + var/list/turf_cache = list() + for (var/turf/pass_turf in pass_turfs) // keep the typecheck in case we accidentally go out of map bounds + if (pass_turf.density || get_dist(pass_turf, target) > cur_dist) + continue + if (anchor_turf.LinkBlockedWithAccess(pass_turf, pass_info)) + continue + if (check_line(pass_turf, target, list(anchor, true_source), turf_cache)) + continue + if (anchor.Move(pass_turf)) + return TRUE + return FALSE + +/// Check LOS availibility of a tile, returns a blocking atom, if any +/// turf_cache could be used to reduce the amount of calculations if multiple lines are cast and expected to have multiple shared turfs +/// by sharing located results +/datum/component/tether/proc/check_line(atom/start, atom/end, list/to_ignore, list/turf_cache = list()) + var/turf/start_loc = get_turf(start) + var/turf/end_loc = get_turf(end) + var/start_dir = get_dir(start_loc, end_loc) + var/end_dir = REVERSE_DIR(start_dir) + var/list/turf/turf_line = get_line(start_loc, end_loc) + for (var/turf/line_turf in turf_line) + if (turf_cache[line_turf]) + return turf_cache[line_turf] + + if (line_turf.density && line_turf != start_loc && line_turf != end_loc) + turf_cache[line_turf] = line_turf + return line_turf + + if (line_turf == start_loc) + for (var/atom/in_turf in line_turf) + if (in_turf.density && (in_turf.flags_1 & ON_BORDER_1) && (in_turf.dir & start_dir) && in_turf != start && !(in_turf in to_ignore)) + turf_cache[line_turf] = in_turf + return in_turf + continue + + if (line_turf == end_loc) + for (var/atom/in_turf in line_turf) + if (in_turf.density && (in_turf.flags_1 & ON_BORDER_1) && (in_turf.dir & end_dir) && in_turf != end && !(in_turf in to_ignore)) + turf_cache[line_turf] = in_turf + return in_turf + continue + + for (var/atom/in_turf in line_turf) + if (!in_turf.density || (in_turf in to_ignore)) + continue + if ((in_turf.flags_1 & ON_BORDER_1)) + // If the tether is in a straight line, we can ignore border objects parallel to us + if (!(in_turf.dir & start_dir) && !(in_turf.dir & end_dir)) + continue + // Also ignore objects that we don't intersect with + if (!(get_step(in_turf, in_turf.dir) in turf_line)) + continue + + turf_cache[line_turf] = in_turf + return in_turf + + turf_cache[line_turf] = null + +/datum/component/tether/proc/check_snap(atom/movable/source, atom/old_loc, dir, forced, list/old_locs, is_moving = FALSE) SIGNAL_HANDLER var/atom/atom_target = parent // Something broke us out, snap the tether if (get_dist(atom_target, tether_target) > cur_dist + 1 || !isturf(atom_target.loc) || !isturf(tether_target.loc) || atom_target.z != tether_target.z) snap() + else if (!is_moving && check_line(atom_target, tether_target) && !(try_adjust_position(atom_target, tether_target) || try_adjust_position(tether_target, atom_target))) + snap() /datum/component/tether/proc/snap() SIGNAL_HANDLER diff --git a/code/datums/components/toggle_attached_clothing.dm b/code/datums/components/toggle_attached_clothing.dm index 87af014396e..a251fd0e38a 100644 --- a/code/datums/components/toggle_attached_clothing.dm +++ b/code/datums/components/toggle_attached_clothing.dm @@ -140,7 +140,6 @@ parent_gear.icon_state = "[initial(parent_gear.post_init_icon_state) || initial(parent_gear.icon_state)][parent_icon_state_suffix]" parent_gear.worn_icon_state = parent_gear.icon_state parent_gear.update_slot_icon() - wearer.update_obscured_slots(deployable.flags_inv) wearer.update_mob_action_buttons() /// Undeploy gear if it moves slots somehow diff --git a/code/datums/elements/crusher_loot.dm b/code/datums/elements/crusher_loot.dm index 9e5c166374b..bc2c23d130c 100644 --- a/code/datums/elements/crusher_loot.dm +++ b/code/datums/elements/crusher_loot.dm @@ -50,5 +50,8 @@ /datum/element/crusher_loot/proc/make_path(mob/living/target, path) if(drop_immediately) new path(get_turf(target)) - else - target.guaranteed_butcher_results[path] = 1 + return + + if (!target.guaranteed_butcher_results) + target.guaranteed_butcher_results = list() + target.guaranteed_butcher_results[path] = 1 diff --git a/code/datums/elements/elevation.dm b/code/datums/elements/elevation.dm index 80a9bbe323c..304d79ad160 100644 --- a/code/datums/elements/elevation.dm +++ b/code/datums/elements/elevation.dm @@ -17,16 +17,16 @@ src.pixel_shift = pixel_shift - RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + RegisterSignal(target, COMSIG_ATOM_ENTERING, PROC_REF(on_source_entering)) + RegisterSignal(target, COMSIG_ATOM_EXITING, PROC_REF(on_source_exiting)) var/atom/atom_target = target register_turf(atom_target, atom_target.loc) /datum/element/elevation/Detach(atom/movable/source) - UnregisterSignal(source, COMSIG_MOVABLE_MOVED) + UnregisterSignal(source, list(COMSIG_ATOM_ENTERING, COMSIG_ATOM_EXITING)) unregister_turf(source, source.loc) REMOVE_TRAIT(source, TRAIT_ELEVATING_OBJECT, ref(src)) - UnregisterSignal(source, COMSIG_MOVABLE_MOVED) return ..() /datum/element/elevation/proc/reset_elevation(turf/target) @@ -45,10 +45,13 @@ SIGNAL_HANDLER current_values[ELEVATION_MAX_PIXEL_SHIFT] = max(current_values[ELEVATION_MAX_PIXEL_SHIFT], pixel_shift) -/datum/element/elevation/proc/on_moved(atom/movable/source, atom/oldloc) +/datum/element/elevation/proc/on_source_entering(atom/movable/source, atom/entering, atom/old_loc) SIGNAL_HANDLER - unregister_turf(source, oldloc) - register_turf(source, source.loc) + register_turf(source, entering) + +/datum/element/elevation/proc/on_source_exiting(atom/movable/source, atom/exiting) + SIGNAL_HANDLER + unregister_turf(source, exiting) /datum/element/elevation/proc/register_turf(atom/movable/source, atom/location) if(!isturf(location)) @@ -67,17 +70,15 @@ UnregisterSignal(location, list(COMSIG_TURF_RESET_ELEVATION, COMSIG_TURF_CHANGE)) reset_elevation(location) -///Changing or destroying the turf detaches the element, also we need to reapply the traits since they don't get passed down. +/// When a turf with elevated objects changes, we need to unregister all the elevating objects on it. When a turf Initializes(), +/// it calls Entered() on all of its moveable contents, which will invoke on_source_entering(), which will register each elevating +/// object with the new turf. We need to do this because turfs do not keep their traits when changed, and so the check for +/// TRAIT_TURF_HAS_ELEVATED_OBJ above will fail and cause override runtimes when we attempt to register the signals again. /datum/element/elevation/proc/pre_change_turf(turf/changed, path, list/new_baseturfs, flags, list/post_change_callbacks) SIGNAL_HANDLER - var/list/trait_sources = GET_TRAIT_SOURCES(changed, TRAIT_TURF_HAS_ELEVATED_OBJ(pixel_shift)) - trait_sources = trait_sources.Copy() - post_change_callbacks += CALLBACK(src, PROC_REF(post_change_turf), trait_sources) - -/datum/element/elevation/proc/post_change_turf(list/trait_sources, turf/changed) - for(var/source in trait_sources) - ADD_TRAIT(changed, TRAIT_TURF_HAS_ELEVATED_OBJ(pixel_shift), source) - reset_elevation(changed) + for (var/atom/movable/content as anything in changed) + if(HAS_TRAIT_FROM(content, TRAIT_ELEVATING_OBJECT, ref(src))) + unregister_turf(content, changed) #define ELEVATE_TIME 0.2 SECONDS #define ELEVATION_SOURCE(datum) "elevation_[REF(datum)]" diff --git a/code/datums/elements/strippable.dm b/code/datums/elements/strippable.dm index ff18519e0d6..6a61fe5abfb 100644 --- a/code/datums/elements/strippable.dm +++ b/code/datums/elements/strippable.dm @@ -269,10 +269,10 @@ return STRIPPABLE_OBSCURING_NONE var/mob/living/carbon/carbon_source = source - if (carbon_source.check_obscured_slots() & item_slot) + if (hidden_slots_to_inventory_slots(carbon_source.obscured_slots) & item_slot) return STRIPPABLE_OBSCURING_COMPLETELY - if (carbon_source.check_covered_slots() & item_slot) + if (hidden_slots_to_inventory_slots(carbon_source.covered_slots) & item_slot) return STRIPPABLE_OBSCURING_INACCESSIBLE return STRIPPABLE_OBSCURING_NONE diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index c1ea1cf239e..86e1d6d88b5 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -741,7 +741,7 @@ Unless you know what you're doing, only use the first three numbers. They're in MAT_CATEGORY_ITEM_MATERIAL = TRUE, MAT_CATEGORY_ITEM_MATERIAL_COMPLEMENTARY = TRUE, ) - sheet_type = /obj/item/stack/sheet/sandblock + ore_type = /obj/item/stack/ore/glass value_per_unit = 2 / SHEET_MATERIAL_AMOUNT strength_modifier = 0.5 integrity_modifier = 0.1 diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index d8de1879f47..9b5c9bf50d0 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -123,8 +123,7 @@ if(ishuman(possible_throwable)) var/mob/living/carbon/human/human_throwable = possible_throwable - //if(human_throwable.wear_suit && (human_throwable.wear_suit.flags_inv & HIDEJUMPSUIT)) // ORIGINAL - if(human_throwable.wear_suit && (human_throwable.wear_suit.flags_inv & HIDETAIL)) // SKYRAT EDIT CHANGE + if(human_throwable.obscured_slots & HIDETAIL) // SKYRAT EDIT - PREVIOUS: if(human_throwable.obscured_slots & HIDEJUMPSUIT) to_chat(user, span_warning("You can't reach [human_throwable]'s tail through [human_throwable.p_their()] [human_throwable.wear_suit.name]!")) return diff --git a/code/datums/proximity_monitor/fields/bubble.dm b/code/datums/proximity_monitor/fields/bubble.dm new file mode 100644 index 00000000000..d62abfa1ce2 --- /dev/null +++ b/code/datums/proximity_monitor/fields/bubble.dm @@ -0,0 +1,150 @@ +#define CHANGING_OFFSET "changing_offset" +#define OVERLAY_DATA "overlay_data" +#define STARTING_POSITION "starting_position" +#define ANIMATE_DAMPENER_TIME 1.5 SECONDS + +//Only use square radius for this! +/datum/proximity_monitor/advanced/bubble + edge_is_a_field = TRUE + + ///Assoc list of every direction and the image it'll take, so we can form a large radius. + var/list/effect_direction_images + ///list of all the visual effects we keep track of + var/list/edgeturf_effects = list() + ///atom that contains all the fields in its vis_contents + var/atom/movable/field_effect_holder/my_movable + +/datum/proximity_monitor/advanced/bubble/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, atom/projector) + . = ..() + setup_effect_directions() + if(_host != projector) + RegisterSignal(projector, COMSIG_QDELETING, PROC_REF(on_projector_del)) + var/atom/movable/movable_host = _host + my_movable = new(get_turf(movable_host)) + my_movable.transform = my_movable.transform.Scale(current_range, current_range) + my_movable.set_glide_size(movable_host.glide_size) + draw_effect() + +/datum/proximity_monitor/advanced/bubble/Destroy() + for(var/coordinates in edgeturf_effects) + var/obj/effect/overlay/vis/field/effect_to_remove = edgeturf_effects[coordinates] + edgeturf_effects -= coordinates + effect_to_remove.set_wobbly(wobble_duration = ANIMATE_DAMPENER_TIME) + animate(effect_to_remove, alpha = 0, time = ANIMATE_DAMPENER_TIME, flags = ANIMATION_PARALLEL) + QDEL_IN(my_movable, ANIMATE_DAMPENER_TIME) + my_movable = null + return ..() + +/datum/proximity_monitor/advanced/bubble/proc/setup_effect_directions() + effect_direction_images = list( + "[SOUTH]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south"), + "[NORTH]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north"), + "[WEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_west"), + "[EAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_east"), + "[NORTHWEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northwest"), + "[SOUTHWEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southwest"), + "[NORTHEAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northeast"), + "[SOUTHEAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast"), + ) + +/datum/proximity_monitor/advanced/bubble/on_moved(atom/movable/source, atom/old_loc) + . = ..() + my_movable.forceMove(get_turf(source)) + +/datum/proximity_monitor/advanced/bubble/on_z_change(datum/source) + recalculate_field(full_recalc = TRUE) + +///rendering all the field visuals. first we render the corners, then we connect them +/datum/proximity_monitor/advanced/bubble/proc/draw_effect() + var/max_pixel_offset = current_range * ICON_SIZE_ALL + var/top_right_corner = list(effect_direction_images["[NORTHEAST]"], max_pixel_offset, max_pixel_offset) + var/top_left_corner = list(effect_direction_images["[NORTHWEST]"], -max_pixel_offset, max_pixel_offset) + var/bottom_left_corner = list(effect_direction_images["[SOUTHWEST]"], -max_pixel_offset, -max_pixel_offset) + var/bottom_right_corner = list(effect_direction_images["[SOUTHEAST]"], max_pixel_offset, -max_pixel_offset) + + var/list/corners = list(top_right_corner, top_left_corner, bottom_left_corner, bottom_right_corner) + for(var/corner in corners) + draw_corner(corner) + + var/list/corners_to_connect = list( + list(OVERLAY_DATA = effect_direction_images["[NORTH]"], CHANGING_OFFSET = "x_offset", STARTING_POSITION = max_pixel_offset), + list(OVERLAY_DATA = effect_direction_images["[SOUTH]"], CHANGING_OFFSET = "x_offset", STARTING_POSITION = -max_pixel_offset), + list(OVERLAY_DATA = effect_direction_images["[WEST]"], CHANGING_OFFSET = "y_offset", STARTING_POSITION = -max_pixel_offset), + list(OVERLAY_DATA = effect_direction_images["[EAST]"], CHANGING_OFFSET = "y_offset", STARTING_POSITION = max_pixel_offset), + ) + for(var/direction in corners_to_connect) + draw_edge(direction, max_pixel_offset) + +///rendering the corners +/datum/proximity_monitor/advanced/bubble/proc/draw_corner(list/corner_data) + var/obj/effect/overlay/vis/field/corner_effect = new() + var/image/image_overlay = corner_data[1] + corner_effect.icon = image_overlay.icon + corner_effect.icon_state = image_overlay.icon_state + corner_effect.alpha = 0 + corner_effect.pixel_x = corner_data[2] + corner_effect.pixel_y = corner_data[3] + add_effect_to_host(corner_effect) + +///connecting the corners to one another +/datum/proximity_monitor/advanced/bubble/proc/draw_edge(list/edge_data, target_offset) + var/starting_offset = edge_data[STARTING_POSITION] + var/current_offset = (-1 * target_offset) + ICON_SIZE_ALL + var/image/overlay = edge_data[OVERLAY_DATA] + while(current_offset != target_offset) + var/obj/effect/overlay/vis/field/edge_effect = new() + edge_effect.alpha = 0 + edge_effect.icon = overlay.icon + edge_effect.icon_state = overlay.icon_state + + if(edge_data[CHANGING_OFFSET] == "x_offset") + edge_effect.pixel_y = starting_offset + edge_effect.pixel_x = current_offset + else + edge_effect.pixel_x = starting_offset + edge_effect.pixel_y = current_offset + add_effect_to_host(edge_effect) + current_offset += ICON_SIZE_ALL + +///handles adding the visual effect's data +/datum/proximity_monitor/advanced/bubble/proc/add_effect_to_host(obj/effect/overlay/vis/field/effect_to_add) + my_movable.vis_contents += effect_to_add + var/coordinate_x = effect_to_add.pixel_x / ICON_SIZE_ALL + var/coordinate_y = effect_to_add.pixel_y / ICON_SIZE_ALL + effect_to_add.transform = effect_to_add.transform.Scale(1 / current_range, 1 / current_range) + edgeturf_effects["[coordinate_x],[coordinate_y]"] = effect_to_add + effect_to_add.set_wobbly(wobble_duration = ANIMATE_DAMPENER_TIME) + animate(effect_to_add, alpha = 255, time = ANIMATE_DAMPENER_TIME, flags = ANIMATION_PARALLEL) + +/datum/proximity_monitor/advanced/bubble/proc/on_projector_del(datum/source) + SIGNAL_HANDLER + qdel(src) + +/obj/effect/overlay/vis/field + appearance_flags = PIXEL_SCALE|LONG_GLIDE + vis_flags = parent_type::vis_flags | VIS_INHERIT_PLANE + ///are we currently WOBBLING + var/wobbling_effect = FALSE + +/obj/effect/overlay/vis/field/proc/set_wobbly(wobble_duration) + if(wobbling_effect) + return + wobbling_effect = TRUE + apply_wibbly_filters(src) + addtimer(CALLBACK(src, PROC_REF(remove_wobbly)), wobble_duration) + +/obj/effect/overlay/vis/field/proc/remove_wobbly() + if(QDELETED(src)) + return + remove_wibbly_filters(src, remove_duration = 0.25 SECONDS) + addtimer(VARSET_CALLBACK(src, wobbling_effect, FALSE), 0.25 SECONDS) + +/atom/movable/field_effect_holder + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + appearance_flags = PIXEL_SCALE|LONG_GLIDE + plane = ABOVE_GAME_PLANE + +#undef CHANGING_OFFSET +#undef OVERLAY_DATA +#undef STARTING_POSITION +#undef ANIMATE_DAMPENER_TIME diff --git a/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm index 3185872efad..5c4237dc94f 100644 --- a/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm +++ b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm @@ -1,96 +1,66 @@ -#define CHANGING_OFFSET "changing_offset" -#define OVERLAY_DATA "overlay_data" -#define STARTING_POSITION "starting_position" -#define ANIMATE_DAMPENER_TIME 1.5 SECONDS - //Projectile dampening field that slows projectiles and lowers their damage for an energy cost deducted every 1/5 second. -//Only use square radius for this! -/datum/proximity_monitor/advanced/projectile_dampener - edge_is_a_field = TRUE - var/static/list/effect_direction_images = list( - "[SOUTH]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south"), - "[NORTH]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north"), - "[WEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_west"), - "[EAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_east"), - "[NORTHWEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northwest"), - "[SOUTHWEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southwest"), - "[NORTHEAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northeast"), - "[SOUTHEAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast"), - ) +/datum/proximity_monitor/advanced/bubble/projectile_dampener var/static/image/generic_edge = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_generic") ///overlay we apply to caught bullets var/static/image/new_bullet_overlay= image('icons/effects/fields.dmi', "projectile_dampen_effect") - ///list of all the visual effects we keep track of - var/list/edgeturf_effects = list() - ///atom that contains all the fields in its vis_contents - var/atom/movable/field_effect_holder/my_movable /// datum that holds the effects we apply on caught bullets var/datum/dampener_projectile_effects/bullet_effects -/datum/proximity_monitor/advanced/projectile_dampener/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, atom/projector, datum/dampener_projectile_effects/effects_typepath) - ..() - RegisterSignal(projector, COMSIG_QDELETING, PROC_REF(on_projector_del)) - var/atom/movable/movable_host = _host - my_movable = new(get_turf(_host)) - my_movable.transform = my_movable.transform.Scale(current_range, current_range) - my_movable.set_glide_size(movable_host.glide_size) - bullet_effects = effects_typepath ? new effects_typepath() : new - draw_effect() - -/datum/proximity_monitor/advanced/projectile_dampener/on_moved(atom/movable/source, atom/old_loc) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, atom/projector, datum/dampener_projectile_effects/effects_typepath) . = ..() - my_movable.Move(source.loc, get_dir(my_movable.loc, source.loc), source.glide_size) + bullet_effects = effects_typepath ? new effects_typepath() : new -/datum/proximity_monitor/advanced/projectile_dampener/on_z_change(datum/source) - recalculate_field(full_recalc = TRUE) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/Destroy() + bullet_effects = null + return ..() -/datum/proximity_monitor/advanced/projectile_dampener/field_edge_crossed(atom/movable/movable, turf/location, turf/old_location) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/field_edge_crossed(atom/movable/movable, turf/location, turf/old_location) . = ..() if(!isprojectile(movable)) return determine_wobble(location) -/datum/proximity_monitor/advanced/projectile_dampener/field_edge_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/field_edge_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) . = ..() if(!isprojectile(movable)) return determine_wobble(old_location) -/datum/proximity_monitor/advanced/projectile_dampener/field_turf_crossed(atom/movable/movable, turf/old_location, turf/new_location) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/field_turf_crossed(atom/movable/movable, turf/old_location, turf/new_location) if(!isprojectile(movable) || HAS_TRAIT_FROM(movable, TRAIT_GOT_DAMPENED, REF(src))) return catch_bullet_effect(movable) -/datum/proximity_monitor/advanced/projectile_dampener/field_turf_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) - if(!isprojectile(movable) || get_dist(new_location, host) <= current_range) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/field_turf_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) + if(!isprojectile(movable) || get_dist(new_location, host) <= (edge_is_a_field ? current_range : current_range - 1)) return release_bullet_effect(movable) -/datum/proximity_monitor/advanced/projectile_dampener/setup_field_turf(turf/target) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/setup_field_turf(turf/target) for(var/atom/possible_projectile in target) if(isprojectile(possible_projectile)) catch_bullet_effect(possible_projectile) -/datum/proximity_monitor/advanced/projectile_dampener/cleanup_field_turf(turf/target) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/cleanup_field_turf(turf/target) for(var/atom/possible_projectile in target) if(isprojectile(possible_projectile) && HAS_TRAIT_FROM(possible_projectile, TRAIT_GOT_DAMPENED, REF(src))) release_bullet_effect(possible_projectile) ///proc that applies the wobbly effect on point of bullet entry -/datum/proximity_monitor/advanced/projectile_dampener/proc/determine_wobble(turf/location) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/proc/determine_wobble(turf/location) var/coord_x = location.x - host.x var/coord_y = location.y - host.y var/obj/effect/overlay/vis/field/my_field = edgeturf_effects["[coord_x],[coord_y]"] my_field?.set_wobbly(0.15 SECONDS) -/datum/proximity_monitor/advanced/projectile_dampener/proc/projectile_overlay_updated(atom/source, list/overlays) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/proc/projectile_overlay_updated(atom/source, list/overlays) SIGNAL_HANDLER if(!isnull(new_bullet_overlay) && HAS_TRAIT_FROM(source, TRAIT_GOT_DAMPENED, REF(src))) overlays += new_bullet_overlay ///a bullet has entered our field, apply the dampening effects to it -/datum/proximity_monitor/advanced/projectile_dampener/proc/catch_bullet_effect(obj/projectile/bullet) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/proc/catch_bullet_effect(obj/projectile/bullet) ADD_TRAIT(bullet,TRAIT_GOT_DAMPENED, REF(src)) RegisterSignal(bullet, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(projectile_overlay_updated)) SEND_SIGNAL(src, COMSIG_DAMPENER_CAPTURE, bullet) @@ -98,141 +68,35 @@ bullet.update_appearance() ///removing the effects after it has exited our field -/datum/proximity_monitor/advanced/projectile_dampener/proc/release_bullet_effect(obj/projectile/bullet) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/proc/release_bullet_effect(obj/projectile/bullet) REMOVE_TRAIT(bullet, TRAIT_GOT_DAMPENED, REF(src)) SEND_SIGNAL(src, COMSIG_DAMPENER_RELEASE, bullet) bullet_effects.remove_effects(bullet) bullet.update_appearance() UnregisterSignal(bullet, COMSIG_ATOM_UPDATE_OVERLAYS) -///rendering all the field visuals. first we render the corners, then we connect them -/datum/proximity_monitor/advanced/projectile_dampener/proc/draw_effect() - var/max_pixel_offset = current_range * ICON_SIZE_ALL - var/top_right_corner = list(effect_direction_images["[NORTHEAST]"], max_pixel_offset, max_pixel_offset) - var/top_left_corner = list(effect_direction_images["[NORTHWEST]"], -max_pixel_offset, max_pixel_offset) - var/bottom_left_corner = list(effect_direction_images["[SOUTHWEST]"], -max_pixel_offset, -max_pixel_offset) - var/bottom_right_corner = list(effect_direction_images["[SOUTHEAST]"], max_pixel_offset, -max_pixel_offset) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/peaceborg - var/list/corners = list(top_right_corner, top_left_corner, bottom_left_corner, bottom_right_corner) - for(var/corner in corners) - draw_corner(corner) - - var/list/corners_to_connect = list( - list(OVERLAY_DATA = effect_direction_images["[NORTH]"], CHANGING_OFFSET = "x_offset", STARTING_POSITION = max_pixel_offset), - list(OVERLAY_DATA = effect_direction_images["[SOUTH]"], CHANGING_OFFSET = "x_offset", STARTING_POSITION = -max_pixel_offset), - list(OVERLAY_DATA = effect_direction_images["[WEST]"], CHANGING_OFFSET = "y_offset", STARTING_POSITION = -max_pixel_offset), - list(OVERLAY_DATA = effect_direction_images["[EAST]"], CHANGING_OFFSET = "y_offset", STARTING_POSITION = max_pixel_offset), - ) - for(var/direction in corners_to_connect) - draw_edge(direction, max_pixel_offset) - -///rendering the corners -/datum/proximity_monitor/advanced/projectile_dampener/proc/draw_corner(list/corner_data) - var/obj/effect/overlay/vis/field/corner_effect = new() - var/image/image_overlay = corner_data[1] - corner_effect.icon = image_overlay.icon - corner_effect.icon_state = image_overlay.icon_state - corner_effect.alpha = 0 - corner_effect.pixel_x = corner_data[2] - corner_effect.pixel_y = corner_data[3] - add_effect_to_host(corner_effect) - -///connecting the corners to one another -/datum/proximity_monitor/advanced/projectile_dampener/proc/draw_edge(list/edge_data, target_offset) - var/starting_offset = edge_data[STARTING_POSITION] - var/current_offset = (-1 * target_offset) + ICON_SIZE_ALL - var/image/overlay = edge_data[OVERLAY_DATA] - while(current_offset != target_offset) - var/obj/effect/overlay/vis/field/edge_effect = new() - edge_effect.alpha = 0 - edge_effect.icon = overlay.icon - edge_effect.icon_state = overlay.icon_state - - if(edge_data[CHANGING_OFFSET] == "x_offset") - edge_effect.pixel_y = starting_offset - edge_effect.pixel_x = current_offset - else - edge_effect.pixel_x = starting_offset - edge_effect.pixel_y = current_offset - add_effect_to_host(edge_effect) - current_offset += ICON_SIZE_ALL - -///handles adding the visual effect's data -/datum/proximity_monitor/advanced/projectile_dampener/proc/add_effect_to_host(obj/effect/overlay/vis/field/effect_to_add) - my_movable.vis_contents += effect_to_add - var/coordinate_x = effect_to_add.pixel_x / ICON_SIZE_ALL - var/coordinate_y = effect_to_add.pixel_y / ICON_SIZE_ALL - effect_to_add.transform = effect_to_add.transform.Scale(1 / current_range, 1 / current_range) - edgeturf_effects["[coordinate_x],[coordinate_y]"] = effect_to_add - effect_to_add.set_wobbly(wobble_duration = ANIMATE_DAMPENER_TIME) - animate(effect_to_add, alpha = 255, time = ANIMATE_DAMPENER_TIME, flags = ANIMATION_PARALLEL) - -/datum/proximity_monitor/advanced/projectile_dampener/proc/on_projector_del(datum/source) - SIGNAL_HANDLER - qdel(src) - -/datum/proximity_monitor/advanced/projectile_dampener/Destroy() - for(var/coordinates in edgeturf_effects) - var/obj/effect/overlay/vis/field/effect_to_remove = edgeturf_effects[coordinates] - edgeturf_effects -= coordinates - effect_to_remove.set_wobbly(wobble_duration = ANIMATE_DAMPENER_TIME) - animate(effect_to_remove, alpha = 0, time = ANIMATE_DAMPENER_TIME, flags = ANIMATION_PARALLEL) - QDEL_IN(my_movable, ANIMATE_DAMPENER_TIME) - my_movable = null - bullet_effects = null - return ..() - -/datum/proximity_monitor/advanced/projectile_dampener/peaceborg - -/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/field_turf_crossed(atom/movable/movable, turf/old_location, turf/new_location) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/peaceborg/field_turf_crossed(atom/movable/movable, turf/old_location, turf/new_location) . = ..() if(!iscyborg(movable) || !HAS_TRAIT_FROM(movable, TRAIT_GOT_DAMPENED, REF(src))) ADD_TRAIT(movable, TRAIT_GOT_DAMPENED, REF(src)) -/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/field_turf_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) - if(!iscyborg(movable) || get_dist(new_location, host) <= current_range) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/peaceborg/field_turf_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) + if(!iscyborg(movable) || get_dist(new_location, host) <= (edge_is_a_field ? current_range : current_range - 1)) return REMOVE_TRAIT(movable, TRAIT_GOT_DAMPENED, REF(src)) -/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/setup_field_turf(turf/target) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/peaceborg/setup_field_turf(turf/target) for(var/atom/interesting_atom as anything in target) if(iscyborg(interesting_atom)) ADD_TRAIT(interesting_atom, TRAIT_GOT_DAMPENED, REF(src)) if(isprojectile(interesting_atom)) catch_bullet_effect(interesting_atom) -/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/cleanup_field_turf(turf/target) +/datum/proximity_monitor/advanced/bubble/projectile_dampener/peaceborg/cleanup_field_turf(turf/target) for(var/atom/interesting_atom as anything in target) if(iscyborg(interesting_atom)) REMOVE_TRAIT(interesting_atom, TRAIT_GOT_DAMPENED, REF(src)) if(isprojectile(interesting_atom)) release_bullet_effect(interesting_atom) - -/obj/effect/overlay/vis/field - appearance_flags = PIXEL_SCALE|LONG_GLIDE - vis_flags = parent_type::vis_flags | VIS_INHERIT_PLANE - ///are we currently WOBBLING - var/wobbling_effect = FALSE - -/obj/effect/overlay/vis/field/proc/set_wobbly(wobble_duration) - if(wobbling_effect) - return - wobbling_effect = TRUE - apply_wibbly_filters(src) - addtimer(CALLBACK(src, PROC_REF(remove_wobbly)), wobble_duration) - -/obj/effect/overlay/vis/field/proc/remove_wobbly() - if(QDELETED(src)) - return - remove_wibbly_filters(src, remove_duration = 0.25 SECONDS) - addtimer(VARSET_CALLBACK(src, wobbling_effect, FALSE), 0.25 SECONDS) - -/atom/movable/field_effect_holder - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - appearance_flags = PIXEL_SCALE|LONG_GLIDE - plane = ABOVE_GAME_PLANE - -#undef CHANGING_OFFSET -#undef OVERLAY_DATA -#undef STARTING_POSITION -#undef ANIMATE_DAMPENER_TIME diff --git a/code/datums/proximity_monitor/fields/space_protection.dm b/code/datums/proximity_monitor/fields/space_protection.dm new file mode 100644 index 00000000000..005b4fa86d8 --- /dev/null +++ b/code/datums/proximity_monitor/fields/space_protection.dm @@ -0,0 +1,48 @@ +//Bubble that grants space protection to those inside of it. +/datum/proximity_monitor/advanced/bubble/space_protection + edge_is_a_field = FALSE + ///List of all traits that's given to mobs in the field, which is our "space proof" we grant. + var/static/list/traits_to_give = list( + TRAIT_RESISTCOLD, + TRAIT_RESISTLOWPRESSURE, + TRAIT_NOBREATH, + ) + +/datum/proximity_monitor/advanced/bubble/space_protection/setup_effect_directions() + effect_direction_images = list( + "[SOUTH]" = image('icons/effects/fields.dmi', icon_state = "space_protection_south"), + "[NORTH]" = image('icons/effects/fields.dmi', icon_state = "space_protection_north"), + "[WEST]" = image('icons/effects/fields.dmi', icon_state = "space_protection_west"), + "[EAST]" = image('icons/effects/fields.dmi', icon_state = "space_protection_east"), + "[NORTHWEST]" = image('icons/effects/fields.dmi', icon_state = "space_protection_northwest"), + "[SOUTHWEST]" = image('icons/effects/fields.dmi', icon_state = "space_protection_southwest"), + "[NORTHEAST]" = image('icons/effects/fields.dmi', icon_state = "space_protection_northeast"), + "[SOUTHEAST]" = image('icons/effects/fields.dmi', icon_state = "space_protection_southeast"), + ) + +/datum/proximity_monitor/advanced/bubble/space_protection/field_turf_crossed(atom/movable/movable, turf/old_location, turf/new_location) + if(!isliving(movable) || HAS_TRAIT_FROM(movable, traits_to_give[1], REF(src))) + return + give_space_immunity(movable) + +/datum/proximity_monitor/advanced/bubble/space_protection/field_turf_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) + if(!isliving(movable) || get_dist(new_location, host) <= (edge_is_a_field ? current_range : current_range - 1)) + return + remove_space_immunity(movable) + +/datum/proximity_monitor/advanced/bubble/space_protection/setup_field_turf(turf/target) + for(var/mob/possible_mob in target) + give_space_immunity(possible_mob) + +/datum/proximity_monitor/advanced/bubble/space_protection/cleanup_field_turf(turf/target) + for(var/mob/possible_mob in target) + if(HAS_TRAIT_FROM(possible_mob, traits_to_give[1], REF(src))) + remove_space_immunity(possible_mob) + +///a mob has entered our field, apply the space protection to them. +/datum/proximity_monitor/advanced/bubble/space_protection/proc/give_space_immunity(mob/living/new_immunne) + new_immunne.add_traits(traits_to_give, REF(src)) + +///removing the effects after the mob has exited our field. +/datum/proximity_monitor/advanced/bubble/space_protection/proc/remove_space_immunity(mob/living/no_longer_immune) + no_longer_immune.remove_traits(traits_to_give, REF(src)) diff --git a/code/datums/quirks/negative_quirks/allergic.dm b/code/datums/quirks/negative_quirks/allergic.dm index 018ff8264bf..59e4080602c 100644 --- a/code/datums/quirks/negative_quirks/allergic.dm +++ b/code/datums/quirks/negative_quirks/allergic.dm @@ -23,7 +23,7 @@ /datum/reagent/medicine/sansufentanyl, /datum/reagent/medicine/salglu_solution, /datum/reagent/medicine/albuterol, - /datum/reagent/medicine/coagulant //Bubber edit: adds coagulant + /datum/reagent/medicine/coagulant, //Bubber edit: adds coagulant ) var/allergy_string diff --git a/code/datums/status_effects/debuffs/drunk.dm b/code/datums/status_effects/debuffs/drunk.dm index d5b7b5dfe6f..67c491874d6 100644 --- a/code/datums/status_effects/debuffs/drunk.dm +++ b/code/datums/status_effects/debuffs/drunk.dm @@ -35,9 +35,7 @@ // Having your face covered conceals your drunkness if(iscarbon(owner)) var/mob/living/carbon/carbon_owner = owner - if(carbon_owner.wear_mask?.flags_inv & HIDEFACE) - return null - if(carbon_owner.head?.flags_inv & HIDEFACE) + if(carbon_owner.obscured_slots & HIDEFACE) return null // .01s are used in case the drunk value ends up to be a small decimal. diff --git a/code/datums/wires/_wires.dm b/code/datums/wires/_wires.dm index 6e40b719b72..b53bb64183b 100644 --- a/code/datums/wires/_wires.dm +++ b/code/datums/wires/_wires.dm @@ -257,12 +257,13 @@ /datum/wires/proc/interact(mob/user) if(!interactable(user)) - return + return FALSE ui_interact(user) for(var/A in assemblies) var/obj/item/I = assemblies[A] if(istype(I) && I.on_found(user)) - return + break + return TRUE /** * Checks whether wire assignments should be revealed. diff --git a/code/datums/wounds/scars/_scars.dm b/code/datums/wounds/scars/_scars.dm index 2fdd92b82d0..d5125521787 100644 --- a/code/datums/wounds/scars/_scars.dm +++ b/code/datums/wounds/scars/_scars.dm @@ -178,7 +178,7 @@ var/mob/living/carbon/human/human_victim = victim if(istype(limb, /obj/item/bodypart/head)) - if((human_victim.wear_mask && (human_victim.wear_mask.flags_inv & HIDEFACE)) || (human_victim.head && (human_victim.head.flags_inv & HIDEFACE))) + if(human_victim.obscured_slots & HIDEFACE) return FALSE else if(limb.scars_covered_by_clothes) var/num_covers = LAZYLEN(human_victim.get_clothing_on_part(limb)) diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm index f258d275f63..98689464b62 100644 --- a/code/game/atom/_atom.dm +++ b/code/game/atom/_atom.dm @@ -615,6 +615,7 @@ */ /atom/Exited(atom/movable/gone, direction) SEND_SIGNAL(src, COMSIG_ATOM_EXITED, gone, direction) + SEND_SIGNAL(gone, COMSIG_ATOM_EXITING, src, direction) ///Return atom temperature /atom/proc/return_temperature() diff --git a/code/game/machinery/computer/arcade/_arcade.dm b/code/game/machinery/computer/arcade/_arcade.dm index 9f93648fbb2..9ff6763dc63 100644 --- a/code/game/machinery/computer/arcade/_arcade.dm +++ b/code/game/machinery/computer/arcade/_arcade.dm @@ -77,7 +77,6 @@ ///Dispenses the proper prizes and gives them a positive mood event. If valid, has a small chance to give a pulse rifle. /obj/machinery/computer/arcade/proc/prizevend(mob/living/user, prizes = 1) - SEND_SIGNAL(src, COMSIG_ARCADE_PRIZEVEND, user, prizes) if(user.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && HAS_TRAIT(user, TRAIT_GAMERGOD)) visible_message(span_notice("[user] inputs an intense cheat code!"),\ span_notice("You hear a flurry of buttons being pressed.")) @@ -99,3 +98,10 @@ var/atom/movable/the_prize = new prizeselect(get_turf(src)) playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) visible_message(span_notice("[src] dispenses [the_prize]!"), span_notice("You hear a chime and a clunk.")) + +/obj/machinery/computer/arcade/proc/victory_tickets(tickets, sound = TRUE) + SEND_SIGNAL(src, COMSIG_ARCADE_VICTORY) + visible_message(span_notice("[src] dispenses [tickets] ticket\s!")) + new /obj/item/stack/arcadeticket((get_turf(src)), tickets) + if(sound) + playsound(loc, 'sound/machines/arcade/win.ogg', 40) diff --git a/code/game/machinery/computer/arcade/amputation.dm b/code/game/machinery/computer/arcade/amputation.dm index b61c460398e..d425cd5eba5 100644 --- a/code/game/machinery/computer/arcade/amputation.dm +++ b/code/game/machinery/computer/arcade/amputation.dm @@ -23,9 +23,7 @@ qdel(chopchop) user.mind?.adjust_experience(/datum/skill/gaming, 100) user.won_game() - playsound(src, 'sound/machines/arcade/win.ogg', 50, TRUE) - new /obj/item/stack/arcadeticket((get_turf(src)), rand(6,10)) - to_chat(user, span_notice("[src] dispenses a handful of tickets!")) + victory_tickets(rand(6,10)) return if(!do_they_still_have_that_hand(user, chopchop)) to_chat(user, span_warning("The guillotine drops, but your hand seems to be gone already!")) diff --git a/code/game/machinery/computer/arcade/battle.dm b/code/game/machinery/computer/arcade/battle.dm index 142d85370c9..9cbec4430fb 100644 --- a/code/game/machinery/computer/arcade/battle.dm +++ b/code/game/machinery/computer/arcade/battle.dm @@ -232,8 +232,7 @@ message_admins("[ADMIN_LOOKUPFLW(user)] has outbombed Cuban Pete and been awarded a bomb.") user.log_message("outbombed Cuban Pete and has been awarded a bomb.", LOG_GAME) else - visible_message(span_notice("[src] dispenses 2 tickets!")) - new /obj/item/stack/arcadeticket((get_turf(src)), 2) + victory_tickets(2,FALSE) player_gold += enemy_gold_reward if(user) var/exp_gained = DEFAULT_EXP_GAIN * all_worlds[player_current_world] diff --git a/code/game/machinery/computer/arcade/orion.dm b/code/game/machinery/computer/arcade/orion.dm index 72bf0cb1e51..6c2945cb126 100644 --- a/code/game/machinery/computer/arcade/orion.dm +++ b/code/game/machinery/computer/arcade/orion.dm @@ -470,8 +470,7 @@ message_admins("[ADMIN_LOOKUPFLW(user)] made it to Orion on an emagged machine and got an explosive toy ship.") user.log_message("made it to Orion on an emagged machine and got an explosive toy ship.", LOG_GAME) else - new /obj/item/stack/arcadeticket((get_turf(src)), 2) - to_chat(user, span_notice("[src] dispenses 2 tickets!")) + victory_tickets(2) obj_flags &= ~EMAGGED name = initial(name) desc = initial(desc) diff --git a/code/game/machinery/computer/atmos_computers/__identifiers.dm b/code/game/machinery/computer/atmos_computers/__identifiers.dm index be1f01aecb5..222f59ed197 100644 --- a/code/game/machinery/computer/atmos_computers/__identifiers.dm +++ b/code/game/machinery/computer/atmos_computers/__identifiers.dm @@ -32,14 +32,6 @@ #define ATMOS_GAS_MONITOR_WASTE "waste" #define ATMOS_GAS_MONITOR_ENGINE "engine" -///maps an air sensor's chamber id to its input valve[ i.e. outlet_injector] id -#define CHAMBER_INPUT_FROM_ID(chamber_id) ((chamber_id) + "_in") -///maps an air sensor's chamber id to its output valve[i.e. vent pump] id -#define CHAMBER_OUTPUT_FROM_ID(chamber_id) ((chamber_id) + "_out") - -///list of all air sensor's created round start -GLOBAL_LIST_EMPTY(map_loaded_sensors) - // Human-readble names of these funny tags. GLOBAL_LIST_INIT(station_gas_chambers, list( ATMOS_GAS_MONITOR_O2 = "Oxygen Supply", diff --git a/code/game/machinery/computer/atmos_computers/_air_sensor.dm b/code/game/machinery/computer/atmos_computers/_air_sensor.dm index 3101d728b87..ad870c9520b 100644 --- a/code/game/machinery/computer/atmos_computers/_air_sensor.dm +++ b/code/game/machinery/computer/atmos_computers/_air_sensor.dm @@ -1,3 +1,8 @@ +///Indicator for inlet port +#define INLET 1 +///Indicator for outlet port +#define OUTLET 2 + /// Gas tank air sensor. /// These always hook to monitors, be mindful of them /obj/machinery/air_sensor @@ -7,7 +12,6 @@ resistance_flags = FIRE_PROOF power_channel = AREA_USAGE_ENVIRON active_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 1.5 - var/on = TRUE /// The unique string that represents which atmos chamber to associate with. var/chamber_id @@ -17,16 +21,12 @@ var/outlet_id /// The air alarm connected to this sensor var/obj/machinery/airalarm/connected_airalarm + ///Is this sensor on + var/on = TRUE /obj/machinery/air_sensor/Initialize(mapload) id_tag = assign_random_name() - //this global list of air sensors is available to all station monitering consoles round start and to new consoles made during the round - if(mapload) - GLOB.map_loaded_sensors[chamber_id] = id_tag - inlet_id = CHAMBER_INPUT_FROM_ID(chamber_id) - outlet_id = CHAMBER_OUTPUT_FROM_ID(chamber_id) - var/static/list/multitool_tips = list( TOOL_MULTITOOL = list( SCREENTIP_CONTEXT_LMB = "Link logged injectors/vents", @@ -37,6 +37,56 @@ return ..() +/obj/machinery/air_sensor/post_machine_initialize() + . = ..() + + //auto connect to any inlet & outlet devices within a 4 diameter radius from this sensor + for(var/obj/machinery/atmospherics/components/unary/device in oview(4, src)) + if(inlet_id && outlet_id) + break + configure(device) + +/** + * Connects an injector or an vent pump to this air sensor. Must be on the same z level as sensor + * return what type of port was configured or NONE for no op + * + * Arguments + * * obj/machinery/atmospherics/components/unary/port - the device we are trying to connect to this sensor + * * reconfigure - if TRUE it will override existing ports if they are already registered +*/ +/obj/machinery/air_sensor/proc/configure(obj/machinery/atmospherics/components/unary/port, reconfigure = FALSE) + PRIVATE_PROC(TRUE) + if(!istype(port) || port.z != z) + return NONE + + if(istype(port, /obj/machinery/atmospherics/components/unary/outlet_injector)) + if(!reconfigure && inlet_id) + return INLET + var/obj/machinery/atmospherics/components/unary/outlet_injector/input = port + //only configure non maploaded injectors cause they already have a preset config + if(input.type == /obj/machinery/atmospherics/components/unary/outlet_injector) + input.volume_rate = MAX_TRANSFER_RATE + inlet_id = input.id_tag + return INLET + + else if(istype(port, /obj/machinery/atmospherics/components/unary/vent_pump)) + if(!reconfigure && outlet_id) + return OUTLET + var/obj/machinery/atmospherics/components/unary/vent_pump/output = port + //only configure non maploaded vent pumps cause they already have a preset config + if(output.type == /obj/machinery/atmospherics/components/unary/vent_pump) + //so its no longer controlled by air alarm + output.disconnect_from_area() + //configuration copied from /obj/machinery/atmospherics/components/unary/vent_pump/siphon but with max pressure + output.pump_direction = ATMOS_DIRECTION_SIPHONING + output.pressure_checks = ATMOS_INTERNAL_BOUND + output.internal_pressure_bound = MAX_OUTPUT_PRESSURE + output.external_pressure_bound = 0 + //finally assign it to this sensor + outlet_id = output.id_tag + return OUTLET + return NONE + /obj/machinery/air_sensor/Destroy() reset() return ..() @@ -66,7 +116,7 @@ . = ..() //switched off version of this air sensor but still anchored to the ground - var/obj/item/air_sensor/sensor = new(drop_location(), inlet_id, outlet_id) + var/obj/item/air_sensor/sensor = new(drop_location()) sensor.set_anchored(TRUE) sensor.balloon_alert(user, "sensor turned off") @@ -88,36 +138,21 @@ ///right click with multi tool to disconnect everything /obj/machinery/air_sensor/multitool_act_secondary(mob/living/user, obj/item/tool) - balloon_alert(user, "reset ports") reset() + balloon_alert(user, "ports reset") return TRUE /obj/machinery/air_sensor/multitool_act(mob/living/user, obj/item/multitool/multi_tool) . = ..() - if(istype(multi_tool.buffer, /obj/machinery/atmospherics/components/unary/outlet_injector)) - var/obj/machinery/atmospherics/components/unary/outlet_injector/input = multi_tool.buffer - inlet_id = input.id_tag - multi_tool.set_buffer(src) - balloon_alert(user, "connected to input") - - else if(istype(multi_tool.buffer, /obj/machinery/atmospherics/components/unary/vent_pump)) - var/obj/machinery/atmospherics/components/unary/vent_pump/output = multi_tool.buffer - //so its no longer controlled by air alarm - output.disconnect_from_area() - //configuration copied from /obj/machinery/atmospherics/components/unary/vent_pump/siphon but with max pressure - output.pump_direction = ATMOS_DIRECTION_SIPHONING - output.pressure_checks = ATMOS_INTERNAL_BOUND - output.internal_pressure_bound = MAX_OUTPUT_PRESSURE - output.external_pressure_bound = 0 - //finally assign it to this sensor - outlet_id = output.id_tag - multi_tool.set_buffer(src) - balloon_alert(user, "connected to output") - - else - multi_tool.set_buffer(src) - balloon_alert(user, "sensor added to buffer") + var/type = configure(multi_tool.buffer, TRUE) + switch(type) + if(INLET, OUTLET) + var/port = "[type == INLET ? "input" : "output"] port" + user.balloon_alert(user, "[port] configured") + to_chat(user, span_notice("[src] has connected [multi_tool.buffer] to its [port].")) + to_chat(user, span_notice("[src] has been added to multitool buffer.")) + multi_tool.set_buffer(src) return ITEM_INTERACT_SUCCESS @@ -133,16 +168,10 @@ icon = 'icons/obj/wallmounts.dmi' icon_state = "gsensor0" custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT) - /// The injector linked with this sensor - var/input_id - /// The vent pump linked with this sensor - var/output_id /obj/item/air_sensor/Initialize(mapload, inlet, outlet) . = ..() register_context() - input_id = inlet - output_id = outlet /obj/item/air_sensor/add_context(atom/source, list/context, obj/item/held_item, mob/user) if(isnull(held_item)) @@ -205,8 +234,6 @@ //make real air sensor in its place var/obj/machinery/air_sensor/new_sensor = new sensor(get_turf(src)) - new_sensor.inlet_id = input_id - new_sensor.outlet_id = output_id new_sensor.balloon_alert(user, "sensor turned on") qdel(src) @@ -231,3 +258,6 @@ /obj/item/air_sensor/atom_deconstruct(disassembled) new /obj/item/analyzer(loc) new /obj/item/stack/sheet/iron(loc) + +#undef INLET +#undef OUTLET diff --git a/code/game/machinery/computer/atmos_computers/_atmos_control.dm b/code/game/machinery/computer/atmos_computers/_atmos_control.dm index 25e51738611..a785cd50456 100644 --- a/code/game/machinery/computer/atmos_computers/_atmos_control.dm +++ b/code/game/machinery/computer/atmos_computers/_atmos_control.dm @@ -9,55 +9,67 @@ /// Which sensors do we want to listen to. /// Assoc of list[chamber_id] = readable_chamber_name - var/list/atmos_chambers - - /// Used when control = FALSE to store the original atmos chambers so they dont get lost when reconnecting - var/list/always_displayed_chambers - + var/list/atmos_chambers = list() + /// list of all sensors[key is chamber id, value is id of air sensor linked to this chamber] monitered by this computer + var/list/connected_sensors = list() /// Whether we can actually adjust the chambers or not. var/control = TRUE /// Whether we are allowed to reconnect. var/reconnecting = TRUE + ///OUur last reconnected chamber + VAR_PRIVATE/last_chamber_id = "" - /// Was this computer multitooled before. If so copy the list connected_sensors as it now maintain's its own sensors independent of the map loaded one's - var/was_multi_tooled = FALSE - - /// list of all sensors[key is chamber id, value is id of air sensor linked to this chamber] monitered by this computer - var/list/connected_sensors - -/obj/machinery/computer/atmos_control/Initialize(mapload, obj/item/circuitboard/C) +/obj/machinery/computer/atmos_control/post_machine_initialize() . = ..() - var/static/list/multitool_tips = list( - TOOL_MULTITOOL = list( - SCREENTIP_CONTEXT_LMB = "Link Sensor", - ) - ) - AddElement(/datum/element/contextual_screentip_tools, multitool_tips) + scan() - //all newly constructed/round start computers by default have access to this list - connected_sensors = GLOB.map_loaded_sensors +///Scans the z level for new air sensors & monitors +/obj/machinery/computer/atmos_control/proc/scan() + PRIVATE_PROC(TRUE) - //special case for the station monitering console. We dont want to loose these chambers during reconnecting - if(!control && !isnull(atmos_chambers)) - always_displayed_chambers = atmos_chambers.Copy() - -/obj/machinery/computer/atmos_control/examine(mob/user) - . = ..() - . += span_notice("Use a multitool to link a air sensor to this computer") + //collect all sensors that are the closest to this computer + var/list/closest_sensors = list() + var/turf/comp_turf = get_turf(src) + for(var/obj/machinery/sensor as anything in (SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/air_sensor) + SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/meter/monitored))) + //same z level + if(sensor.z != z) + continue + //infer chamber id + var/chamber_id = "" + if(istype(sensor, /obj/machinery/air_sensor)) + var/obj/machinery/air_sensor/air_sense = sensor + chamber_id = air_sense.chamber_id + else + var/obj/machinery/meter/monitored/meter = sensor + chamber_id = meter.chamber_id + //track & collect closest sensors + if(!closest_sensors[chamber_id]) + closest_sensors[chamber_id] = sensor + continue + var/obj/machinery/target = closest_sensors[chamber_id] + if(get_dist(comp_turf, get_turf(sensor)) < get_dist(comp_turf, get_turf(target))) + closest_sensors[chamber_id] = sensor + //convert sensor list to id tags + connected_sensors.Cut() + for(var/chamber_id in closest_sensors) + var/obj/machinery/target = closest_sensors[chamber_id] + connected_sensors[chamber_id] = target.id_tag /// Reconnect only works for station based chambers. /obj/machinery/computer/atmos_control/proc/reconnect(mob/user) if(!reconnecting) return FALSE + scan() + // We only prompt the user with the sensors that are actually available. var/available_devices = list() - for (var/chamber_identifier in connected_sensors) //this sensor was destroyed at the time of reconnecting var/obj/machinery/sensor = GLOB.objects_by_id_tag[connected_sensors[chamber_identifier]] if(QDELETED(sensor)) + connected_sensors -= chamber_identifier continue //non master computers don't have access to these station moniters. Only done to give master computer's special access to these chambers and make them feel special or something @@ -76,33 +88,14 @@ if(isnull(new_id)) return FALSE - atmos_chambers = list() - //these are chambers we always want to display even after reconnecting - if(always_displayed_chambers) - for(var/chamber_id in always_displayed_chambers) - atmos_chambers[chamber_id] = always_displayed_chambers[chamber_id] + atmos_chambers -= last_chamber_id atmos_chambers[new_id] = new_name + last_chamber_id = new_id name = new_name + (control ? " Control" : " Monitor") return TRUE -/obj/machinery/computer/atmos_control/multitool_act(mob/living/user, obj/item/multitool/multi_tool) - . = ..() - - if(istype(multi_tool.buffer, /obj/machinery/air_sensor)) - var/obj/machinery/air_sensor/sensor = multi_tool.buffer - //computers reference a global map loaded list of sensor's but as soon a user attempt's to edit it, make a copy of that list so other computers aren't affected - if(!was_multi_tooled) - connected_sensors = connected_sensors.Copy() - was_multi_tooled = TRUE - //register the sensor's unique ID with its assositated chamber - connected_sensors[sensor.chamber_id] = sensor.id_tag - user.balloon_alert(user, "sensor connected to [src]") - return ITEM_INTERACT_SUCCESS - - return - /obj/machinery/computer/atmos_control/ui_interact(mob/user, datum/tgui/ui) . = ..() ui = SStgui.try_update_ui(user, src, ui) @@ -158,7 +151,6 @@ return var/chamber = params["chamber"] - switch(action) if("toggle_input") if (!(chamber in atmos_chambers)) @@ -174,6 +166,8 @@ input.on = !input.on input.update_appearance(UPDATE_ICON) + return TRUE + if("toggle_output") if (!(chamber in atmos_chambers)) return TRUE @@ -188,6 +182,8 @@ output.on = !output.on output.update_appearance(UPDATE_ICON) + return TRUE + if("adjust_input") if (!(chamber in atmos_chambers)) return TRUE @@ -206,6 +202,8 @@ target = clamp(target, 0, MAX_TRANSFER_RATE) input.volume_rate = clamp(target, 0, min(input.airs[1].volume, MAX_TRANSFER_RATE)) + return TRUE + if("adjust_output") if (!(chamber in atmos_chambers)) return TRUE @@ -224,10 +222,11 @@ target = clamp(target, 0, ATMOS_PUMP_MAX_PRESSURE) output.internal_pressure_bound = target - if("reconnect") - reconnect(usr) + return TRUE - return TRUE + if("reconnect") + reconnect(ui.user) + return TRUE /obj/machinery/computer/atmos_control/nocontrol control = FALSE diff --git a/code/game/machinery/computer/atmos_computers/inlets.dm b/code/game/machinery/computer/atmos_computers/inlets.dm index 474ccae2c14..06b4f8fdc99 100644 --- a/code/game/machinery/computer/atmos_computers/inlets.dm +++ b/code/game/machinery/computer/atmos_computers/inlets.dm @@ -1,8 +1,6 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/monitored on = TRUE volume_rate = MAX_TRANSFER_RATE - /// The air sensor type this injector is linked to - var/chamber_id /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/layer2 piping_layer = 2 @@ -12,108 +10,79 @@ piping_layer = 4 icon_state = "inje_map-4" -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/Initialize(mapload) - id_tag = CHAMBER_INPUT_FROM_ID(chamber_id) - return ..() - /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input name = "plasma tank input injector" - chamber_id = ATMOS_GAS_MONITOR_PLAS /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input name = "oxygen tank input injector" - chamber_id = ATMOS_GAS_MONITOR_O2 /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrogen_input name = "nitrogen tank input injector" - chamber_id = ATMOS_GAS_MONITOR_N2 /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/mix_input name = "mix tank input injector" - chamber_id = ATMOS_GAS_MONITOR_MIX /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrous_input name = "nitrous oxide tank input injector" - chamber_id = ATMOS_GAS_MONITOR_N2O /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/air_input name = "air mix tank input injector" - chamber_id = ATMOS_GAS_MONITOR_AIR /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/carbon_input name = "carbon dioxide tank input injector" - chamber_id = ATMOS_GAS_MONITOR_CO2 /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/bz_input name = "bz tank input injector" - chamber_id = ATMOS_GAS_MONITOR_BZ /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/freon_input name = "freon tank input injector" - chamber_id = ATMOS_GAS_MONITOR_FREON /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/halon_input name = "halon tank input injector" - chamber_id = ATMOS_GAS_MONITOR_HALON /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/healium_input name = "healium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_HEALIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/hydrogen_input name = "hydrogen tank input injector" - chamber_id = ATMOS_GAS_MONITOR_H2 /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/hypernoblium_input name = "hypernoblium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_HYPERNOBLIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/miasma_input name = "miasma tank input injector" - chamber_id = ATMOS_GAS_MONITOR_MIASMA /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrium_input name = "nitrium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_NITRIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/pluoxium_input name = "pluoxium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_PLUOXIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/proto_nitrate_input name = "proto-nitrate tank input injector" - chamber_id = ATMOS_GAS_MONITOR_PROTO_NITRATE /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/tritium_input name = "tritium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_TRITIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/water_vapor_input name = "water vapor tank input injector" - chamber_id = ATMOS_GAS_MONITOR_H2O /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/zauker_input name = "zauker tank input injector" - chamber_id = ATMOS_GAS_MONITOR_ZAUKER /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/helium_input name = "helium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_HELIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/antinoblium_input name = "antinoblium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_ANTINOBLIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/incinerator_input name = "incinerator chamber input injector" - chamber_id = ATMOS_GAS_MONITOR_INCINERATOR /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input on = FALSE name = "ordnance burn chamber input injector" - chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_BURN /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input on = FALSE name = "ordnance freezer chamber input injector" - chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_FREEZER diff --git a/code/game/machinery/computer/atmos_computers/meters.dm b/code/game/machinery/computer/atmos_computers/meters.dm index e2316401820..9b0872b07c4 100644 --- a/code/game/machinery/computer/atmos_computers/meters.dm +++ b/code/game/machinery/computer/atmos_computers/meters.dm @@ -1,12 +1,10 @@ /obj/machinery/meter/monitored + flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1 /// The unique string that represents which atmos chamber to associate with. var/chamber_id - flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1 /obj/machinery/meter/monitored/Initialize(mapload, new_piping_layer) id_tag = assign_random_name() - if(mapload) - GLOB.map_loaded_sensors[chamber_id] = id_tag return ..() /obj/machinery/meter/monitored/layer2 diff --git a/code/game/machinery/computer/atmos_computers/outlets.dm b/code/game/machinery/computer/atmos_computers/outlets.dm index 529a83d7219..a3d93d16a87 100644 --- a/code/game/machinery/computer/atmos_computers/outlets.dm +++ b/code/game/machinery/computer/atmos_computers/outlets.dm @@ -3,106 +3,81 @@ icon_state = "vent_map_siphon_on-3" /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/Initialize(mapload) - id_tag = CHAMBER_OUTPUT_FROM_ID(chamber_id) . = ..() //we dont want people messing with these special vents using the air alarm interface disconnect_from_area() /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output name = "plasma tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_PLAS /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output name = "oxygen tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_O2 /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrogen_output name = "nitrogen tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_N2 /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output name = "mix tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_MIX /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrous_output name = "nitrous oxide tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_N2O /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/carbon_output name = "carbon dioxide tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_CO2 /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/bz_output name = "bz tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_BZ /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/freon_output name = "freon tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_FREON /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/halon_output name = "halon tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_HALON /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/healium_output name = "healium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_HEALIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/hydrogen_output name = "hydrogen tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_H2 /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/hypernoblium_output name = "hypernoblium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_HYPERNOBLIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/miasma_output name = "miasma tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_MIASMA /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrium_output name = "nitrium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_NITRIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/pluoxium_output name = "pluoxium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_PLUOXIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/proto_nitrate_output name = "proto-nitrate tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_PROTO_NITRATE /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/tritium_output name = "tritium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_TRITIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/water_vapor_output name = "water vapor tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_H2O /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/zauker_output name = "zauker tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_ZAUKER /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/helium_output name = "helium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_HELIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/antinoblium_output name = "antinoblium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_ANTINOBLIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/incinerator_output name = "incinerator chamber output inlet" - chamber_id = ATMOS_GAS_MONITOR_INCINERATOR /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/ordnance_burn_chamber_output name = "ordnance burn chamber output inlet" - chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_BURN /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/ordnance_freezer_chamber_output name = "ordnance freezer chamber output inlet" - chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_FREEZER /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored on = TRUE @@ -110,11 +85,9 @@ // Same as the rest, but bigger volume. /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/Initialize(mapload) - id_tag = CHAMBER_OUTPUT_FROM_ID(chamber_id) . = ..() //we dont want people messing with these special vents using the air alarm interface disconnect_from_area() /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output name = "air mix tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_AIR diff --git a/code/game/machinery/medipen_refiller.dm b/code/game/machinery/medipen_refiller.dm index fd000f048e9..816759bbbce 100644 --- a/code/game/machinery/medipen_refiller.dm +++ b/code/game/machinery/medipen_refiller.dm @@ -110,10 +110,12 @@ /obj/machinery/medipen_refiller/plunger_act(obj/item/plunger/attacking_plunger, mob/living/user, reinforced) user.balloon_alert_to_viewers("furiously plunging...", "plunging medipen refiller...") - if(do_after(user, 3 SECONDS, target = src)) - user.balloon_alert_to_viewers("finished plunging") - reagents.expose(get_turf(src), TOUCH) - reagents.clear_reagents() + if(!do_after(user, 3 SECONDS, target = src)) + return TRUE + user.balloon_alert_to_viewers("finished plunging") + reagents.expose(get_turf(src), TOUCH) + reagents.clear_reagents() + return TRUE /obj/machinery/medipen_refiller/wrench_act(mob/living/user, obj/item/tool) default_unfasten_wrench(user, tool) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 7734e98b949..58123bc2323 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -324,55 +324,61 @@ DEFINE_BITFIELD(turret_flags, list( balloon_alert(user, "saved to multitool buffer") return ITEM_INTERACT_SUCCESS -/obj/machinery/porta_turret/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(machine_stat & BROKEN) - if(I.tool_behaviour == TOOL_CROWBAR) - //If the turret is destroyed, you can remove it with a crowbar to - //try and salvage its components - to_chat(user, span_notice("You begin prying the metal coverings off...")) - if(I.use_tool(src, user, 20)) - if(prob(70)) - if(stored_gun) - stored_gun.forceMove(loc) - stored_gun = null - to_chat(user, span_notice("You remove the turret and salvage some components.")) - if(prob(50)) - new /obj/item/stack/sheet/iron(loc, rand(1,4)) - if(prob(50)) - new /obj/item/assembly/prox_sensor(loc) - else - to_chat(user, span_notice("You remove the turret but did not manage to salvage anything.")) - qdel(src) +/obj/machinery/porta_turret/crowbar_act(mob/living/user, obj/item/tool) + if(!(machine_stat & BROKEN)) + return NONE - else if((I.tool_behaviour == TOOL_WRENCH) && (!on)) - if(raised) - return - - //This code handles moving the turret around. After all, it's a portable turret! - if(!anchored && !isinspace()) - set_anchored(TRUE) - RemoveInvisibility(id=type) - update_appearance() - to_chat(user, span_notice("You secure the exterior bolts on the turret.")) - if(has_cover) - cover = new /obj/machinery/porta_turret_cover(loc) //create a new turret. While this is handled in process(), this is to workaround a bug where the turret becomes invisible for a split second - cover.parent_turret = src //make the cover's parent src - else if(anchored) - set_anchored(FALSE) - to_chat(user, span_notice("You unsecure the exterior bolts on the turret.")) - power_change() - SetInvisibility(INVISIBILITY_NONE, id=type) - qdel(cover) //deletes the cover, and the turret instance itself becomes its own cover. - - else if(I.GetID()) - //Behavior lock/unlock mangement - if(allowed(user)) - locked = !locked - to_chat(user, span_notice("Controls are now [locked ? "locked" : "unlocked"].")) - else - to_chat(user, span_alert("Access denied.")) + //If the turret is destroyed, you can remove it with a crowbar to + //try and salvage its components + to_chat(user, span_notice("You begin prying the metal coverings off...")) + if(!tool.use_tool(src, user, 20)) + return ITEM_INTERACT_BLOCKING + if(prob(70)) + if(stored_gun) + stored_gun.forceMove(loc) + stored_gun = null + to_chat(user, span_notice("You remove the turret and salvage some components.")) + if(prob(50)) + new /obj/item/stack/sheet/iron(loc, rand(1,4)) + if(prob(50)) + new /obj/item/assembly/prox_sensor(loc) else - return ..() + to_chat(user, span_notice("You remove the turret but did not manage to salvage anything.")) + qdel(src) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/porta_turret/wrench_act(mob/living/user, obj/item/tool) + if(on || raised) + return NONE + + //This code handles moving the turret around. After all, it's a portable turret! + if(!anchored && !isinspace()) + set_anchored(TRUE) + RemoveInvisibility(id=type) + update_appearance() + to_chat(user, span_notice("You secure the exterior bolts on the turret.")) + if(has_cover) + cover = new /obj/machinery/porta_turret_cover(loc) //create a new turret. While this is handled in process(), this is to workaround a bug where the turret becomes invisible for a split second + cover.parent_turret = src //make the cover's parent src + else if(anchored) + set_anchored(FALSE) + to_chat(user, span_notice("You unsecure the exterior bolts on the turret.")) + power_change() + SetInvisibility(INVISIBILITY_NONE, id=type) + qdel(cover) //deletes the cover, and the turret instance itself becomes its own cover. + return ITEM_INTERACT_SUCCESS + +/obj/machinery/porta_turret/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!tool.GetID()) + return NONE + + //Behavior lock/unlock mangement + if(!allowed(user)) + to_chat(user, span_alert("Access denied.")) + return ITEM_INTERACT_BLOCKING + locked = !locked + to_chat(user, span_notice("Controls are now [locked ? "locked" : "unlocked"].")) + return ITEM_INTERACT_SUCCESS /obj/machinery/porta_turret/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index 9ce769c1ddc..268c9e36714 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -37,40 +37,41 @@ return ..() || parent_turret.attack_ghost(user) /obj/machinery/porta_turret_cover/multitool_act(mob/living/user, obj/item/multitool/multi_tool) - . = NONE if(parent_turret.locked) - return + user.balloon_alert(user, "controls locked") + return ITEM_INTERACT_BLOCKING multi_tool.set_buffer(parent_turret) balloon_alert(user, "saved to multitool buffer") return ITEM_INTERACT_SUCCESS -/obj/machinery/porta_turret_cover/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(I.tool_behaviour == TOOL_WRENCH && !parent_turret.on) - if(parent_turret.raised) - return - if(!parent_turret.anchored) - parent_turret.set_anchored(TRUE) - to_chat(user, span_notice("You secure the exterior bolts on the turret.")) - parent_turret.SetInvisibility(INVISIBILITY_MAXIMUM, id=parent_turret.type, priority=INVISIBILITY_PRIORITY_TURRET_COVER) - parent_turret.update_appearance() - else - parent_turret.set_anchored(FALSE) - to_chat(user, span_notice("You unsecure the exterior bolts on the turret.")) - parent_turret.SetInvisibility(INVISIBILITY_NONE, id=parent_turret.type, priority=INVISIBILITY_PRIORITY_TURRET_COVER) - parent_turret.update_appearance() - qdel(src) - return +/obj/machinery/porta_turret_cover/wrench_act(mob/living/user, obj/item/tool) + if(parent_turret.on || parent_turret.raised) + return NONE - if(I.GetID()) - if(parent_turret.allowed(user)) - parent_turret.locked = !parent_turret.locked - to_chat(user, span_notice("Controls are now [parent_turret.locked ? "locked" : "unlocked"].")) - else - to_chat(user, span_notice("Access denied.")) - return + if(parent_turret.anchored) + parent_turret.set_anchored(FALSE) + to_chat(user, span_notice("You unsecure the exterior bolts on the turret.")) + parent_turret.SetInvisibility(INVISIBILITY_NONE, id=parent_turret.type, priority=INVISIBILITY_PRIORITY_TURRET_COVER) + parent_turret.update_appearance() + qdel(src) + return ITEM_INTERACT_SUCCESS - return ..() + parent_turret.set_anchored(TRUE) + to_chat(user, span_notice("You secure the exterior bolts on the turret.")) + parent_turret.SetInvisibility(INVISIBILITY_MAXIMUM, id=parent_turret.type, priority=INVISIBILITY_PRIORITY_TURRET_COVER) + parent_turret.update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/machinery/porta_turret_cover/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!tool.GetID()) + return NONE + if(!parent_turret.allowed(user)) + to_chat(user, span_notice("Access denied.")) + return ITEM_INTERACT_BLOCKING + parent_turret.locked = !parent_turret.locked + to_chat(user, span_notice("Controls are now [parent_turret.locked ? "locked" : "unlocked"].")) + return ITEM_INTERACT_SUCCESS /obj/machinery/porta_turret_cover/attacked_by(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) return parent_turret.attacked_by(I, user, modifiers) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index b330881242c..a655972eb3b 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -6,12 +6,15 @@ desc = "A charging dock for energy based weaponry, PDAs, and other devices." circuit = /obj/item/circuitboard/machine/recharger pass_flags = PASSTABLE + /// The item currently inserted into the charger var/obj/item/charging = null + /// How good the capacitor is at charging the item var/recharge_coeff = 1 - var/using_power = FALSE //Did we put power into "charging" last process()? - ///Did we finish recharging the currently inserted item? + /// Did we put power into "charging" last process()? + var/using_power = FALSE + /// Did we finish recharging the currently inserted item? var/finished_recharging = FALSE - + /// List of items that can be recharged var/static/list/allowed_devices = typecacheof(list( /obj/item/gun/energy, /obj/item/melee/baton/security, @@ -83,29 +86,28 @@ update_appearance() return ..() -/obj/machinery/recharger/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(!is_type_in_typecache(attacking_item, allowed_devices)) - return ..() +/obj/machinery/recharger/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!is_type_in_typecache(tool, allowed_devices)) + return NONE if(!anchored) to_chat(user, span_notice("[src] isn't connected to anything!")) - return TRUE + return ITEM_INTERACT_BLOCKING if(charging || panel_open) - return TRUE + return ITEM_INTERACT_BLOCKING var/area/our_area = get_area(src) //Check to make sure user's not in space doing it, and that the area got proper power. if(!isarea(our_area) || our_area.power_equip == 0) - to_chat(user, span_notice("[src] blinks red as you try to insert [attacking_item].")) - return TRUE + to_chat(user, span_notice("[src] blinks red as you try to insert [tool].")) + return ITEM_INTERACT_BLOCKING - if (istype(attacking_item, /obj/item/gun/energy)) - var/obj/item/gun/energy/energy_gun = attacking_item + if(istype(tool, /obj/item/gun/energy)) + var/obj/item/gun/energy/energy_gun = tool if(!energy_gun.can_charge) to_chat(user, span_notice("Your gun has no external power connector.")) - return TRUE - - user.transferItemToLoc(attacking_item, src) - return TRUE + return ITEM_INTERACT_BLOCKING + user.transferItemToLoc(tool, src) + return ITEM_INTERACT_SUCCESS /obj/machinery/recharger/wrench_act(mob/living/user, obj/item/tool) if(charging) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index af163f21a80..dcbc5aa0e41 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -178,6 +178,14 @@ not_eaten += 1 continue + // Prevent blindly deconstructing locked secure closets (head closets, important departmental orders, etc.) + // unless they have already been unlocked to prevent exploiting the recycler to bypass closet access. + if (iscloset(thing)) + var/obj/structure/closet/as_closet = thing + if (as_closet.secure && as_closet.locked) + not_eaten += 1 + continue + if (istype(thing, /obj/item/organ/brain) || istype(thing, /obj/item/dullahan_relay)) living_detected = TRUE @@ -215,7 +223,17 @@ for(var/i = length(nom); i >= 1; i--) if(!is_operational) //we ran out of power after recycling a large amount to items, time to stop break - use_energy(active_power_usage / (recycle_item(nom[i]) ? 1 : 2)) //recycling stuff that produces no material takes just half the power + var/full_power_usage = TRUE + var/obj/nom_obj = nom[i] + if (isitem(nom_obj)) + // Whether or not items consume full power depends on if they produced a material when recycled. + full_power_usage = recycle_item(nom_obj) + else + // When a non-item is eaten, we deconstruct it with dismantled = FALSE so that + // it and its contents aren't just deleted. These always consume full power. + nom_obj.deconstruct(FALSE) + use_energy(active_power_usage / (full_power_usage ? 1 : 2)) + if(nom.len && sound) playsound(src, item_recycle_sound, (50 + nom.len * 5), TRUE, nom.len, ignore_walls = (nom.len - 10)) // As a substitute for playing 50 sounds at once. if(not_eaten) diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index 90fe826136b..470d791080a 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -8,8 +8,8 @@ #define SMALL_PRIZE 400 #define BIG_PRIZE 1000 #define JACKPOT 10000 -#define SPIN_TIME 65 //As always, deciseconds. -#define REEL_DEACTIVATE_DELAY 7 +#define SPIN_TIME 36 //As always, deciseconds. +#define REEL_DEACTIVATE_DELAY 4 #define JACKPOT_SEVENS FA_ICON_7 #define HOLOCHIP 1 #define COIN 2 diff --git a/code/game/machinery/wall_healer.dm b/code/game/machinery/wall_healer.dm new file mode 100644 index 00000000000..89de765ecbe --- /dev/null +++ b/code/game/machinery/wall_healer.dm @@ -0,0 +1,566 @@ +/// A wall mounted machine that heals chip damage for a price +/obj/machinery/wall_healer + name = "\improper Deforest First Aid Station" + desc = "A wall-mounted first aid station, designed to treat minor injuries - just stick your hand in and try to relax." + icon = 'icons/obj/machines/wall_healer.dmi' + icon_state = "wall_healer" + base_icon_state = "wall_healer" + density = FALSE + interaction_flags_atom = INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND // manually handled + payment_department = ACCOUNT_MED + max_integrity = 150 + armor_type = /datum/armor/obj_machinery/wall_healer + + /// Cost per bandage dispensed. Note, always disregarded on red alert. + var/per_bandage_cost = (/obj/item/stack/medical/gauze::custom_price) / (/obj/item/stack/medical/gauze::amount) + /// Number of bandages to dispense on rmb. Never recharges but can be restocked. + var/num_bandages = 5 + /// Lazylist of bandages that have been restocked into the wall healer. + VAR_PRIVATE/list/stocked_bandages + + /// Cost per unit of healing applied. + /// Note: disregarded on red alert. + var/per_heal_cost = 2.5 + /// Amount of brute healing pooled + VAR_PRIVATE/brute_healing = MAX_LIVING_HEALTH * 0.4 + /// Amount of burn healing pooled + VAR_PRIVATE/burn_healing = MAX_LIVING_HEALTH * 0.4 + /// Amount of toxin healing pooled + VAR_PRIVATE/tox_healing = MAX_LIVING_HEALTH * 0.3 + /// Amount of blood to restore + VAR_PRIVATE/blood_healing = BLOOD_VOLUME_NORMAL * 0.1 + + /// Current mob using the wall healer + VAR_PRIVATE/mob/living/current_user + /// Current hand of the mob using the wall healer, if any (can be unset if in use by a simplemob, for example) + VAR_PRIVATE/obj/item/bodypart/current_hand + /// Ref of the last user to touch the wall healer - only set when there is no active user + VAR_PRIVATE/last_user_ref + /// Bar that props above the healer to show time until next injection + VAR_PRIVATE/datum/progressbar/wall_healer/injection_bar + + /// How long it takes to recharge the wall healer + var/recharge_cd_length = 30 SECONDS + /// How long it takes between injections + var/injection_cd_length = 4 SECONDS + /// Cooldown between chem recharges + COOLDOWN_DECLARE(recharge_cooldown) + /// Cooldown between chem injections + COOLDOWN_DECLARE(injection_cooldown) + /// Only sends messages every X injections to the same user to avoid spam + VAR_PRIVATE/antispam_counter = 0 + +/datum/armor/obj_machinery/wall_healer + melee = 50 + bullet = 30 + laser = 30 + energy = 40 + bomb = 10 + fire = 80 + acid = 80 + +/obj/machinery/wall_healer/Initialize(mapload) + . = ..() + if(!mapload) + brute_healing = 0 + burn_healing = 0 + tox_healing = 0 + blood_healing = 0 + update_appearance() + init_payment() + register_context() + +/obj/machinery/wall_healer/Destroy() + clear_using_mob() + QDEL_LAZYLIST(stocked_bandages) + return ..() + +/obj/machinery/wall_healer/add_context(atom/source, list/context, obj/item/held_item, mob/user) + if(isnull(held_item)) + context[SCREENTIP_CONTEXT_LMB] = "Heal self" + context[SCREENTIP_CONTEXT_RMB] = "Get gauze" + return CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/stack/medical/gauze)) + context[SCREENTIP_CONTEXT_LMB] = "Restock" + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/wall_healer/proc/refill_healing_pool(percent = 100) + var/amount_refilled = 0 + + var/pre_brute_healing = brute_healing + brute_healing = min(brute_healing + initial(brute_healing) * (percent / 100), initial(brute_healing)) + amount_refilled += brute_healing - pre_brute_healing + + var/pre_burn_healing = burn_healing + burn_healing = min(burn_healing + initial(burn_healing) * (percent / 100), initial(burn_healing)) + amount_refilled += burn_healing - pre_burn_healing + + var/pre_tox_healing = tox_healing + tox_healing = min(tox_healing + initial(tox_healing) * (percent / 100), initial(tox_healing)) + amount_refilled += tox_healing - pre_tox_healing + + var/pre_blood_healing = blood_healing + blood_healing = min(blood_healing + initial(blood_healing) * (percent / 100), initial(blood_healing)) + amount_refilled += blood_healing - pre_blood_healing + + if(amount_refilled > 0) + update_appearance() + + return amount_refilled + +/obj/machinery/wall_healer/proc/init_payment() + // Cost depends on service (so just use 0 here) + AddComponent(/datum/component/payment, 0, SSeconomy.get_dep_account(ACCOUNT_MED), PAYMENT_FRIENDLY) + desc += " Charges by the second, though all costs are waived on red alert." + +/obj/machinery/wall_healer/examine(mob/user) + . = ..() + var/total_bandages = num_bandages + LAZYLEN(stocked_bandages) + . += span_notice("It has [total_bandages] bandage\s stocked.\ + [total_bandages ? " [is_free(user) ? "Purchase" : "Retrieve"] a bandage with [EXAMINE_HINT("right-click")]." : ""]") + if(current_user) + . += span_notice("[current_user] currently [current_hand ? "has [current_user.p_their()] [current_hand.plaintext_zone] in" : "is using"] it.") + +/obj/machinery/wall_healer/update_overlays() + . = ..() + + var/brute_state = 7 - round(7 * (brute_healing / initial(brute_healing)), 1) + var/mutable_appearance/brute = mutable_appearance(icon, "bar[brute_state]", alpha = src.alpha, appearance_flags = RESET_COLOR) + brute.color = /datum/reagent/medicine/c2/libital::color + // no offset necessary + . += brute + + var/burn_state = 7 - round(7 * (burn_healing / initial(burn_healing)), 1) + var/mutable_appearance/burn = mutable_appearance(icon, "bar[burn_state]", alpha = src.alpha, appearance_flags = RESET_COLOR) + burn.color = /datum/reagent/medicine/c2/aiuri::color + burn.pixel_w += 4 + . += burn + + var/tox_state = 7 - round(7 * (tox_healing / initial(tox_healing)), 1) + var/mutable_appearance/tox = mutable_appearance(icon, "bar[tox_state]", alpha = src.alpha, appearance_flags = RESET_COLOR) + tox.color = /datum/reagent/medicine/c2/syriniver::color + tox.pixel_w += 8 + . += tox + + var/blood_state = 7 - round(7 * (blood_healing / initial(blood_healing)), 1) + var/mutable_appearance/blood = mutable_appearance(icon, "bar[blood_state]", alpha = src.alpha, appearance_flags = RESET_COLOR) + blood.color = /datum/reagent/blood::color + blood.pixel_w += 12 + . += blood + + if(is_operational) + . += emissive_appearance(icon, "bar_emissive", src, alpha = src.alpha) + . += mutable_appearance(icon, "bar_shadow", alpha = src.alpha, appearance_flags = RESET_COLOR) + +/obj/machinery/wall_healer/emag_act(mob/user, obj/item/card/emag/emag_card) + if(obj_flags & EMAGGED) + return FALSE + + playsound(src, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + visible_message(span_warning("Sparks fly out of [src]!")) + balloon_alert(user, "safeties disabled") + obj_flags |= EMAGGED + return TRUE + +/// We want user to be right up to the wall mount to use it +/// However people may often map the machine over a table +/// In those contexts, they should be allowed to reach over the table +/obj/machinery/wall_healer/proc/loc_check(mob/checking) + var/turf/turf_loc = get_turf(src) + if(turf_loc.is_blocked_turf()) + return checking.Adjacent(turf_loc) + return checking.loc == turf_loc + +/obj/machinery/wall_healer/mouse_drop_receive(atom/dropped, mob/user, params) + . = ..() + if(.) + return . + if(!isliving(user) || !ishuman(dropped)) + balloon_alert(user, "incompatible!") + return FALSE + var/mob/living/who_put_user_in = user + var/mob/living/new_user = dropped + if(!loc_check(new_user)) + balloon_alert(who_put_user_in, "[new_user == who_put_user_in ? "get" : "bring [new_user.p_them()]"] closer!") + return FALSE + + if(do_after(user, 1 SECONDS, src)) + other_put_users_hand_in(new_user, who_put_user_in) + return TRUE + +/obj/machinery/wall_healer/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(.) + return . + if(!ishuman(user)) + balloon_alert(user, "incompatible!") + return FALSE + if(!loc_check(user)) + balloon_alert(user, "get closer!") + return FALSE + if(do_after(user, 0.5 SECONDS, src)) + user_put_in_own_hand(user) + return TRUE + +/obj/machinery/wall_healer/proc/user_put_in_own_hand(mob/living/user) + if(user == current_user) + clear_using_mob() + if(user.get_active_hand() == current_hand) + user.visible_message( + span_notice("[user] removes [user.p_their()] hand from [src]."), + span_notice("You remove your hand from [src]."), + span_hear("You hear a click."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ) + else + add_fingerprint(user) + user.visible_message( + span_notice("[user] removes [user.p_their()] hand from [src] and puts it in [user.p_their()] other hand."), + span_notice("You remove your hand from [src] and put it in your other hand."), + span_hear("You hear a click."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ) + set_using_mob(user) + return + else if(current_user) + user.visible_message( + span_notice("[user] tries to put [user.p_their()] hand in [src], but [current_user] is already using it."), + span_notice("You try to put your hand in [src], but [current_user] is already using it."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ) + return + + add_fingerprint(user) + if(is_operational) + user.visible_message( + span_notice("[user] puts [user.p_their()] hand in [src], and immediately some kind of sensor scans [user.p_their()] arm."), + span_notice("You put your hand in [src], and immediately some kind of sensor scans your arm."), + span_hear("You hear a click."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ) + else + user.visible_message( + span_notice("[user] puts [user.p_their()] hand in [src], but it doesn't respond. Seems to be out of order."), + span_notice("You put your hand in [src], but it doesn't respond."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ) + set_using_mob(user) + +/obj/machinery/wall_healer/proc/other_put_users_hand_in(mob/living/user, mob/living/who_put_user_in) + if(who_put_user_in == user) + return user_put_in_own_hand(user) + + if(current_user == user) + clear_using_mob() + if(user.get_active_hand() == current_hand) + to_chat(who_put_user_in, span_notice("You remove [user]'s hand from [src].")) + user.visible_message( + span_notice("[who_put_user_in] removes [user]'s hand from [src]."), + span_notice("[who_put_user_in] remove your hand from [src]."), + span_hear("You hear a click."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ignored_mobs = who_put_user_in, + ) + else + to_chat(who_put_user_in, span_notice("You remove [user]'s hand from [src] and put it in [user.p_their()] other hand.")) + user.visible_message( + span_notice("[who_put_user_in] removes [user.p_their()] hand from [src] and puts it in [user.p_their()] other hand."), + span_notice("[who_put_user_in] removes your hand from [src] and puts it in your other hand."), + span_hear("You hear a click."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ignored_mobs = who_put_user_in, + ) + add_fingerprint(user) + set_using_mob(who_put_user_in) + return + + if(current_user) + to_chat(who_put_user_in, span_notice("You try to put [user]'s hand in [src], but [current_user] is already using it.")) + user.visible_message( + span_notice("[who_put_user_in] tries to put [user]'s hand in [src], but [current_user] is already using it."), + span_notice("[who_put_user_in] tries to put your hand in [src], but [current_user] is already using it."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ignored_mobs = who_put_user_in, + ) + return + + add_fingerprint(who_put_user_in) + if(is_operational) + to_chat(who_put_user_in, span_notice("You put [user]'s hand in [src], and immediately some kind of sensor scans [user.p_their()] arm.")) + user.visible_message( + span_notice("[who_put_user_in] puts [user.p_their()] hand in [src], and immediately some kind of sensor scans [user.p_their()] arm."), + span_notice("[who_put_user_in] puts your hand in [src], and immediately some kind of sensor scans your arm."), + span_hear("You hear a click."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ignored_mobs = who_put_user_in, + ) + else + to_chat(who_put_user_in, span_notice("You put [user]'s hand in [src], but it doesn't respond. Seems to be out of order.")) + user.visible_message( + span_notice("[who_put_user_in] puts [user.p_their()] hand in [src], but it doesn't respond. Seems to be out of order."), + span_notice("[who_put_user_in] puts your hand in [src], but it doesn't respond."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ignored_mobs = who_put_user_in, + ) + set_using_mob(user) + +/obj/machinery/wall_healer/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. != SECONDARY_ATTACK_CALL_NORMAL || !isliving(user)) + return . + var/mob/living/living_user = user + if(!is_operational) + to_chat(user, span_warning("You try to retrieve some gauze, but [src] doesn't respond.")) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(num_bandages + LAZYLEN(stocked_bandages) <= 0) + to_chat(user, span_warning("You try to retrieve some gauze, but [src] seems to be out of stock.")) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(attempt_charge(src, user, extra_fees = floor(per_bandage_cost)) & COMPONENT_OBJ_CANCEL_CHARGE) + if(!living_user.get_idcard()) + to_chat(user, span_warning("No ID card found. Aborting.")) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if((obj_flags & EMAGGED) && prob(99)) + to_chat(user, span_warning("You try to retrieve some gauze, but it gets all jammed up in the access port.")) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + + var/obj/item/stack/medical/gauze/bandage = LAZYACCESS(stocked_bandages, 1) + if(isnull(bandage)) + num_bandages-- + bandage = new(user.drop_location(), 1) + user.put_in_hands(bandage) + user.visible_message( + span_notice("[user] retrieves [bandage] from [src]."), + span_notice("You retrieve [bandage] from [src]."), + span_hear("You hear a click."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ) + playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/machinery/wall_healer/on_deconstruction(disassembled) + var/atom/drop_loc = drop_location() + for(var/obj/item/stack/medical/gauze/bandage as anything in stocked_bandages) + bandage.forceMove(drop_loc) + new /obj/item/stack/medical/gauze(drop_loc, num_bandages) + +/obj/machinery/wall_healer/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/medical/gauze)) + return NONE + if(!user.temporarilyRemoveItemFromInventory(tool)) + to_chat(user, span_warning("You try to restock [src] with [tool], but it seems stuck to your hand.")) + return ITEM_INTERACT_BLOCKING + user.visible_message( + span_notice("[user] restocks [src] with [tool]."), + span_notice("You restock [src] with [tool]."), + span_hear("You hear a click."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ) + var/obj/item/stack/medical/gauze/bandage = tool + while(bandage.amount > 1) + var/obj/item/stack/medical/gauze/split_bandage = bandage.split_stack(1) + LAZYADD(stocked_bandages, split_bandage) + split_bandage.forceMove(src) + LAZYADD(stocked_bandages, bandage) + bandage.forceMove(src) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/wall_healer/proc/set_using_mob(mob/living/user) + if(last_user_ref != REF(user)) + COOLDOWN_RESET(src, injection_cooldown) + + antispam_counter = 0 + last_user_ref = null + + current_user = user + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(user_moved)) + RegisterSignal(user, COMSIG_QDELETING, PROC_REF(clear_using_mob)) + + current_hand = user.get_active_hand() + if(current_hand) + RegisterSignals(current_hand, list(COMSIG_BODYPART_REMOVED, COMSIG_QDELETING), PROC_REF(clear_using_mob)) + + injection_bar = new(user, injection_cd_length, src, COOLDOWN_TIMELEFT(src, injection_cooldown)) + +/obj/machinery/wall_healer/proc/clear_using_mob(...) + SIGNAL_HANDLER + if(current_hand) + UnregisterSignal(current_hand, COMSIG_BODYPART_REMOVED) + UnregisterSignal(current_hand, COMSIG_QDELETING) + current_hand = null + if(current_user) + last_user_ref = REF(current_user) + UnregisterSignal(current_user, COMSIG_MOVABLE_MOVED) + UnregisterSignal(current_user, COMSIG_QDELETING) + UnregisterSignal(current_user, COMSIG_CARBON_REMOVE_LIMB) + current_user = null + QDEL_NULL(injection_bar) + +/obj/machinery/wall_healer/proc/user_moved(...) + SIGNAL_HANDLER + if(current_user.loc == loc) + return + if(!QDELING(current_user)) + current_user.visible_message( + span_notice("[current_user] removes [current_user.p_their()] hand from [src]."), + span_notice("You remove your hand from [src]."), + span_hear("You hear a click."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + vision_distance = 5, + ) + clear_using_mob() + +/obj/machinery/wall_healer/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + if(current_user && current_user.loc != loc) + clear_using_mob() + +/obj/machinery/wall_healer/Exited(atom/movable/gone, direction) + . = ..() + LAZYREMOVE(stocked_bandages, gone) + +/// Checks if the machine is free for the given mob +/obj/machinery/wall_healer/proc/is_free(mob/living/for_who) + if(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED) + return TRUE // always free on red alert + if(!istype(for_who)) + return FALSE + var/obj/item/card/id/card = for_who.get_idcard(TRUE) + if(card?.registered_account?.account_job?.paycheck_department == payment_department) + return TRUE // free for doctors + return FALSE + +/obj/machinery/wall_healer/attempt_charge(atom/sender, atom/target, extra_fees) + if(is_free(target)) + return NONE + return ..() + +/obj/machinery/wall_healer/process() + if(!is_operational) + // puts off recharging until operational again + COOLDOWN_START(src, recharge_cooldown, recharge_cd_length * 0.5) + return + if(isnull(current_user)) + if(COOLDOWN_FINISHED(src, recharge_cooldown) && refill_healing_pool(10)) + COOLDOWN_START(src, recharge_cooldown, recharge_cd_length) + playsound(src, 'sound/machines/defib/defib_ready.ogg', 50, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) + return + + if(!COOLDOWN_FINISHED(src, injection_cooldown)) + return + + COOLDOWN_START(src, injection_cooldown, injection_cd_length) + antispam_counter++ + + var/arm_check = isnull(current_hand) ? (current_user.mob_biotypes & MOB_ORGANIC) : IS_ORGANIC_LIMB(current_hand) + if(!arm_check) + playsound(src, 'sound/machines/defib/defib_saftyOff.ogg', 50, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) + if(antispam_counter % 3 == 1) + to_chat(current_user, span_notice("Nothing happens. Seems [src] doesn't recognize non-organic [current_hand ? "limbs" : "beings"].")) + return + + if(!current_user.can_inject(null, current_hand)) + playsound(src, 'sound/machines/defib/defib_saftyOff.ogg', 50, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) + if(antispam_counter % 3 == 1) + to_chat(current_user, span_notice("Nothing happens. Seems [src] can't find any exposed flesh to work on.")) + return + + if(obj_flags & EMAGGED) + current_user.apply_damage(33, BRUTE, current_hand, sharpness = SHARP_POINTY) + playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) + if(antispam_counter % 2 == 1) + to_chat(current_user, span_warning("You feel a sharp pain as the machine malfunctions, stabbing you with several instruments and needles!")) + use_energy(500 JOULES) + add_mob_blood(current_user) + return + + var/brute_healing_now = round(min(initial(brute_healing) * 0.1, brute_healing, current_user.getBruteLoss()), DAMAGE_PRECISION) + var/burn_healing_now = round(min(initial(burn_healing) * 0.1, burn_healing, current_user.getFireLoss()), DAMAGE_PRECISION) + var/tox_healing_now = round(min(initial(tox_healing) * 0.1, tox_healing, current_user.getToxLoss()), DAMAGE_PRECISION) + var/blood_healing_now = HAS_TRAIT(current_user, TRAIT_NOBLOOD) ? 0 : round(min(initial(blood_healing) * 0.1, blood_healing, max(BLOOD_VOLUME_OKAY - current_user.blood_volume, 0)), 0.1) + + var/cost = round(per_heal_cost * (brute_healing_now + burn_healing_now + tox_healing_now + blood_healing_now), 1) + if(attempt_charge(src, current_user, extra_fees = cost) & COMPONENT_OBJ_CANCEL_CHARGE) + playsound(src, 'sound/machines/defib/defib_saftyOff.ogg', 50, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) + // attempt charge sends a chat message on fail, except if the user has no ID card + if((antispam_counter % 3 == 1) && !current_user.get_idcard()) + to_chat(current_user, span_warning("No ID card found. Aborting.")) + return + + var/amount_healed = 0 + if(brute_healing_now) + amount_healed += current_user.adjustBruteLoss(-brute_healing_now, required_bodytype = BODYTYPE_ORGANIC) + brute_healing -= brute_healing_now + add_mob_blood(current_user) + if(burn_healing_now) + amount_healed += current_user.adjustFireLoss(-burn_healing_now, required_bodytype = BODYTYPE_ORGANIC) + burn_healing -= burn_healing_now + if(tox_healing_now) + amount_healed += current_user.adjustToxLoss(-tox_healing_now, required_biotype = MOB_ORGANIC) + tox_healing -= tox_healing_now + if(blood_healing_now) + current_user.blood_volume += blood_healing_now + amount_healed += blood_healing_now + blood_healing -= blood_healing_now + add_mob_blood(current_user) + + if(amount_healed) + playsound(src, 'sound/machines/defib/defib_SaftyOn.ogg', 50, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) + if(antispam_counter % 2 == 1) + to_chat(current_user, span_notice("Several instruments and syringes work on your [current_hand?.plaintext_zone || "body"]. You feel a bit better.")) + update_appearance() + use_energy(200 JOULES) // just some background power drain. we don't really care about whether this is actually successful + return + + playsound(src, 'sound/machines/defib/defib_saftyOff.ogg', 50, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) + if(antispam_counter % 3 != 1) + return + var/missed_brute_healing = brute_healing_now > 0 && !current_user.getBruteLoss() + var/missed_burn_healing = burn_healing_now > 0 && !current_user.getFireLoss() + var/missed_tox_healing = tox_healing_now > 0 && !current_user.getToxLoss() + var/missed_blood_healing = blood_healing_now > 0 && current_user.blood_volume >= BLOOD_VOLUME_OKAY + if(missed_brute_healing || missed_burn_healing || missed_tox_healing || missed_blood_healing) + to_chat(current_user, span_notice("Nothing happens. Seems like [src] needs to recharge.")) + return + to_chat(current_user, span_notice("Nothing happens. Seems like you're in good enough shape.")) + +/// Subtype of progress bar used by the wall healer to show time until next injection +/// This subtype only exists so we can shove fastprocess processing off of the machine itself +/datum/progressbar/wall_healer + +/datum/progressbar/wall_healer/New(mob/User, goal_number, atom/target, starting_amount) + . = ..() + START_PROCESSING(SSfastprocess, src) + +/datum/progressbar/wall_healer/Destroy() + STOP_PROCESSING(SSfastprocess, src) + return ..() + +/datum/progressbar/wall_healer/process(seconds_per_tick) + var/obj/machinery/wall_healer/healer = bar_loc + if(!istype(healer)) + stack_trace("[type] instantiated on a non-wall-healer target [bar_loc || "null"] ([bar_loc?.type || "null"])") + return PROCESS_KILL + + update(COOLDOWN_FINISHED(healer, injection_cooldown) ? 0 : COOLDOWN_TIMELEFT(healer, injection_cooldown)) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/wall_healer, 32) + +/obj/machinery/wall_healer/free + name = "\improper Deforest Emergency First Aid Station" + +/obj/machinery/wall_healer/free/init_payment() + return + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/wall_healer/free, 32) diff --git a/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm b/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm index 788740e9f32..f3394e21e19 100644 --- a/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm +++ b/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm @@ -151,7 +151,7 @@ info.pass_flags = PASSTABLE | PASSGRILLE | PASSMACHINE | PASSSTRUCTURE for(var/iter_dir in GLOB.cardinals) var/turf/spread_turf = get_step(src, iter_dir) - if(spread_turf?.density || spread_turf.LinkBlockedWithAccess(spread_turf, info)) + if(spread_turf?.density || location.LinkBlockedWithAccess(spread_turf, info)) continue var/obj/effect/particle_effect/fluid/foam/foundfoam = locate() in spread_turf //Don't spread foam where there's already foam! diff --git a/code/game/objects/effects/spawners/random/contraband.dm b/code/game/objects/effects/spawners/random/contraband.dm index d49591d368f..1d56e1e1614 100644 --- a/code/game/objects/effects/spawners/random/contraband.dm +++ b/code/game/objects/effects/spawners/random/contraband.dm @@ -18,6 +18,11 @@ /obj/item/storage/pill_bottle/lsd = 10, /obj/item/storage/pill_bottle/aranesp = 10, /obj/item/storage/pill_bottle/stimulant = 10, + /obj/item/food/drug/saturnx = 5, + /obj/item/food/drug/meth_crystal = 5, + /obj/item/food/drug/opium = 5, + /obj/item/reagent_containers/cup/blastoff_ampoule = 5, + /obj/item/food/drug/moon_rock = 5, /obj/item/storage/fancy/cigarettes/cigpack_syndicate = 10, /obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 10, /obj/item/storage/box/donkpockets = 10, @@ -40,6 +45,8 @@ /obj/item/reagent_containers/cup/bottle/thermite = 20, /obj/item/restraints/legcuffs/beartrap = 10, /obj/item/food/drug/saturnx = 5, + /obj/item/food/drug/meth_crystal = 5, + /obj/item/food/drug/opium = 5, /obj/item/reagent_containers/cup/blastoff_ampoule = 5, /obj/item/food/drug/moon_rock = 5, /obj/item/grenade/empgrenade = 5, @@ -73,9 +80,12 @@ /obj/item/food/drug/saturnx, /obj/item/reagent_containers/cup/blastoff_ampoule, /obj/item/food/drug/moon_rock, + /obj/item/food/drug/meth_crystal, + /obj/item/food/drug/opium, /obj/item/storage/pill_bottle/happy, /obj/item/storage/pill_bottle/lsd, /obj/item/storage/pill_bottle/psicodine, + /obj/item/storage/box/flat/fentanylpatches, ) /obj/effect/spawner/random/contraband/permabrig_weapon diff --git a/code/game/objects/effects/spawners/random/decoration.dm b/code/game/objects/effects/spawners/random/decoration.dm index 35ad503cb27..ffd9f452d78 100644 --- a/code/game/objects/effects/spawners/random/decoration.dm +++ b/code/game/objects/effects/spawners/random/decoration.dm @@ -7,7 +7,7 @@ name = "decoration material spawner" icon_state = "tile" loot = list( - /obj/item/stack/sheet/sandblock{amount = 30} = 25, + /obj/item/stack/ore/glass/thirty = 25, /obj/item/stack/sheet/mineral/wood{amount = 30} = 25, /obj/item/stack/sheet/bronze/thirty = 20, /obj/item/stack/tile/noslip{amount = 20} = 10, diff --git a/code/game/objects/effects/spawners/random/maintenance.dm b/code/game/objects/effects/spawners/random/maintenance.dm index c84f9a550d6..7b293f0cdef 100644 --- a/code/game/objects/effects/spawners/random/maintenance.dm +++ b/code/game/objects/effects/spawners/random/maintenance.dm @@ -1,8 +1,13 @@ +#define MAINT_LOOT "maintenance_loot" +#define DUMPSTER_LOOT "dumpster_loot" + /obj/effect/spawner/random/maintenance name = "maintenance loot spawner" desc = "Come on Lady Luck, spawn me a pair of sunglasses." icon_state = "loot" remove_if_cant_spawn = FALSE //don't remove stuff from the global maint list, which other can use. + /// The global loot list we are going to use to spawn loot from + var/loot_table = MAINT_LOOT // see code/_globalvars/lists/maintenance_loot.dm for loot table /// A subtype of maintenance loot spawner that does not spawn any decals, for when you want to place them on chasm turfs and such @@ -19,7 +24,11 @@ . += span_info("This spawner has an effective loot count of [get_effective_lootcount()].") /obj/effect/spawner/random/maintenance/Initialize(mapload) - loot = GLOB.maintenance_loot + switch(loot_table) + if(MAINT_LOOT) + loot = GLOB.maintenance_loot + if(DUMPSTER_LOOT) + loot = GLOB.dumpster_loot //BUBBERSTATION CHANGE START: EMPTY MAINT LOOT TRAIT ONLY SPAWNS THE BEST LOOT if(HAS_TRAIT(SSstation, STATION_TRAIT_EMPTY_MAINT)) if(prob(80)) @@ -28,15 +37,21 @@ loot = GLOB.rarity_loot else loot = GLOB.oddity_loot - //BUBBERSTATION CHANGE END return ..() /obj/effect/spawner/random/maintenance/skew_loot_weights(list/loot_list, exponent) ///We only need to skew the weights once, since it's a global list used by all maint spawners. var/static/already_done = FALSE - if(loot_list == GLOB.maintenance_loot && already_done) - return + if(already_done) + switch(loot_table) + if(MAINT_LOOT) + if(loot_list == GLOB.maintenance_loot) + return + if(DUMPSTER_LOOT) + if(loot_list == GLOB.dumpster_loot) + return + already_done = TRUE return ..() @@ -136,3 +151,11 @@ /obj/effect/spawner/random/maintenance/no_decals/eight name = "8 x maintenance loot spawner" spawn_loot_count = 8 + +/obj/effect/spawner/random/maintenance/dumpster + name = "dumpster loot spawner" + spawn_loot_count = 3 + loot_table = DUMPSTER_LOOT + +#undef MAINT_LOOT +#undef DUMPSTER_LOOT diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 18fd541da1b..4ebbb3a1c93 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -779,7 +779,6 @@ SEND_SIGNAL(src, COMSIG_ITEM_DROPPED, user) if(!silent) play_drop_sound(DROP_SOUND_VOLUME) - user?.update_equipment(src) /// called just as an item is picked up (loc is not yet changed) /obj/item/proc/pickup(mob/user) @@ -816,7 +815,7 @@ * polling ghosts while it's just being equipped as a visual preview for a dummy. */ /obj/item/proc/visual_equipped(mob/user, slot, initial = FALSE) - return + return TRUE /** * Called by on_equipped. Don't call this directly, we want the ITEM_POST_EQUIPPED signal to be sent after everything else. @@ -842,8 +841,6 @@ item_flags |= IN_INVENTORY RegisterSignals(src, list(SIGNAL_ADDTRAIT(TRAIT_NO_WORN_ICON), SIGNAL_REMOVETRAIT(TRAIT_NO_WORN_ICON)), PROC_REF(update_slot_icon), override = TRUE) - user.update_equipment(src) - if(!initial && (slot_flags & slot) && (play_equip_sound())) return diff --git a/code/game/objects/items/cigarettes.dm b/code/game/objects/items/cigarettes.dm index 9fb0d6c6f33..d3288597a84 100644 --- a/code/game/objects/items/cigarettes.dm +++ b/code/game/objects/items/cigarettes.dm @@ -420,6 +420,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM hitsound = 'sound/items/tools/welder.ogg' damtype = BURN force = 4 + + if(reagents && reagents.has_reagent(/datum/reagent/drug/methamphetamine)) + reagents.flags |= NO_REACT + if(reagents.get_reagent_amount(/datum/reagent/toxin/plasma)) // the plasma explodes when exposed to fire var/datum/effect_system/reagents_explosion/e = new() e.set_up(round(reagents.get_reagent_amount(/datum/reagent/toxin/plasma) / 2.5, 1), get_turf(src), 0, 0) @@ -432,9 +436,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM e.start(src) qdel(src) return - - reagents.flags &= ~(NO_REACT) - reagents.handle_reactions() + // allowing reagents to react after being lit update_appearance(UPDATE_ICON) if(flavor_text) var/turf/T = get_turf(src) @@ -938,14 +940,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM QDEL_NULL(cig_smoke) /obj/item/cigarette/pipe/attackby(obj/item/thing, mob/user, list/modifiers, list/attack_modifiers) - if(!istype(thing, /obj/item/food/grown)) + if(!(istype(thing, /obj/item/food/grown) || istype(thing, /obj/item/food/drug))) return ..() - var/obj/item/food/grown/to_smoke = thing if(packeditem) to_chat(user, span_warning("It is already packed!")) return - if(!HAS_TRAIT(to_smoke, TRAIT_DRIED)) + + var/obj/item/to_smoke = thing + if(istype(to_smoke, /obj/item/food/grown) && !HAS_TRAIT(to_smoke, TRAIT_DRIED)) to_chat(user, span_warning("It has to be dried first!")) return @@ -979,6 +982,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM inhand_icon_on = null inhand_icon_off = null +/obj/item/cigarette/pipe/crackpipe + name = "glass pipe" + desc = "An ergonomic, low-key delivery method for the combusted. This apparatus taught the ancients much wisdom." + icon_state = "crackpipe" + icon_on = "crackpipeon" + icon_off = "crackpipe" + inhand_icon_on = null + inhand_icon_off = null + lung_harm = 2 + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT) + /////////// //ROLLING// /////////// diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 3c876f22b22..220e22f8ade 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -528,7 +528,7 @@ if(istagger) wait_time *= 0.5 - if(!instant && !do_after(user, wait_time, target = target, max_interact_count = 4)) + if(!instant && !do_after(user, wait_time, target = target, max_interact_count = 4, extra_checks = CALLBACK(src, PROC_REF(adjacency_check), user, target))) return ITEM_INTERACT_BLOCKING if(!use_charges(user, cost)) @@ -585,6 +585,13 @@ check_empty(user) return ITEM_INTERACT_SUCCESS +///Checks if the user is still adjacent to the target (used for do_after extra_checks) +/obj/item/toy/crayon/proc/adjacency_check(mob/user, atom/target) + if(!user.Adjacent(target)) + user.balloon_alert(user, "moved too far away!") + return FALSE + return TRUE + /obj/item/toy/crayon/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if (!check_allowed_items(interacting_with)) return NONE diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 73faa99e936..f71aef7836a 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -1079,3 +1079,127 @@ #undef SUCCESS #undef NO_FUEL #undef ALREADY_LIT + +#define SLOWDOWN_ON 1 + +/obj/item/flashlight/lamp/space_bubble + name = "space furnace" + desc = "A heavy furnace capable of forming a temporary bubble that holds in breathable air." + icon_state = "space_lamp" + worn_icon_state = "space_lamp" + inhand_icon_state = "space_lamp" + w_class = WEIGHT_CLASS_HUGE + throw_range = 2 + slot_flags = ITEM_SLOT_BACK + item_flags = SLOWS_WHILE_IN_HAND + heat = 2500 + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2.5, + ) + light_color = LIGHT_COLOR_ORANGE + start_on = FALSE + sound_on = 'sound/effects/fire_puff.ogg' + sound_off = 'sound/items/weapons/gun/bow/bow_fire.ogg' + + ///The timer we track until the bubble deletes itself. + var/bubble_timer + ///The amount of time that the bubble will survive for once turned on. This can't be changed normally but is a var for admins. + var/bubble_duration = (15 MINUTES) + ///Boolean on whether or not a pyroclastic anomaly core has been inserted, allowing the item to be used. + var/installed_pyro_core = FALSE + ///The proximity monitor & visual bubble that grants space protection to people nearby, while active. + var/datum/proximity_monitor/advanced/bubble/space_protection/space_bubble + +/obj/item/flashlight/lamp/space_bubble/Initialize(mapload) + AddElement(/datum/element/update_icon_updates_onmob) + . = ..() + AddComponent(/datum/component/two_handed, require_twohands = TRUE) + update_appearance(UPDATE_DESC) + +/obj/item/flashlight/lamp/space_bubble/Destroy(force) + if(space_bubble) + QDEL_NULL(space_bubble) + return ..() + +/obj/item/flashlight/lamp/space_bubble/init_slapcrafting() + return + +/obj/item/flashlight/lamp/space_bubble/update_icon_state() + . = ..() + if(light_on) + worn_icon_state = "[initial(worn_icon_state)]-on" + else + worn_icon_state = initial(worn_icon_state) + +/obj/item/flashlight/lamp/space_bubble/update_desc(updates) + . = ..() + if(installed_pyro_core) + desc = initial(desc) + return + desc = initial(desc) + " Requires a pyroclastic anomaly core to function." + +/obj/item/flashlight/lamp/space_bubble/get_temperature() + return light_on * heat + +/obj/item/flashlight/lamp/space_bubble/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if(light_on && istype(tool, /obj/item/cigarette)) + var/obj/item/cigarette/cig = tool + if(cig.lit) + return NONE + cig.light(flavor_text = "[user] lights up \the [cig] using the burning coming out of the [src]. Damn.") + return ITEM_INTERACT_SUCCESS + if(!istype(tool, /obj/item/assembly/signaler/anomaly/pyro) || installed_pyro_core) + return NONE + user.balloon_alert(user, "core inserted") + qdel(tool) + installed_pyro_core = TRUE + playsound(src, 'sound/machines/crate/crate_open.ogg', 50, FALSE) + update_appearance(UPDATE_DESC) + return ITEM_INTERACT_SUCCESS + +/obj/item/flashlight/lamp/space_bubble/toggle_light(mob/user) + if(!installed_pyro_core) + user.balloon_alert(user, "core missing!") + return FALSE + var/datum/gas_mixture/environment = loc?.return_air() + var/affected_pressure = environment.return_pressure() + if(!light_on && (affected_pressure < ONE_ATMOSPHERE)) + user.balloon_alert(user, "no pressure!") + return FALSE + . = ..() + if(light_on) + if(istype(space_bubble)) + QDEL_NULL(space_bubble) + bubble_timer = addtimer(CALLBACK(src, PROC_REF(start_bubble_close), "dies down..."), bubble_duration, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE|TIMER_DELETE_ME) + space_bubble = new(src, 4, FALSE, src) + slowdown = SLOWDOWN_ON + drag_slowdown = SLOWDOWN_ON + user.update_equipment_speed_mods() + return + close_bubble(user) + +///Uses an arg for special flavortext to be balloon alerted to everyone, then gives an extra 5 seconds before killing the bubble. +/obj/item/flashlight/lamp/space_bubble/proc/start_bubble_close(special_flavortext) + if(special_flavortext) + balloon_alert_to_viewers(special_flavortext) + var/mob/living/potential_mob = recursive_loc_check(src, /mob/living) || null + addtimer(CALLBACK(src, PROC_REF(toggle_light), potential_mob), 5 SECONDS, TIMER_UNIQUE|TIMER_DELETE_ME) + +///Closes the bubble and cleans up after itself. Optional 'user' arg for the mob turning us off. +/obj/item/flashlight/lamp/space_bubble/proc/close_bubble(mob/user) + QDEL_NULL(space_bubble) + if(bubble_timer) + deltimer(bubble_timer) + slowdown = initial(slowdown) + drag_slowdown = initial(drag_slowdown) + if(user) + user.update_equipment_speed_mods() + +#undef SLOWDOWN_ON + +///Pre-core activated one for admin spawning. +/obj/item/flashlight/lamp/space_bubble/preactivated + installed_pyro_core = TRUE diff --git a/code/game/objects/items/drug_items.dm b/code/game/objects/items/drug_items.dm index df34963621b..aa7feda28a4 100644 --- a/code/game/objects/items/drug_items.dm +++ b/code/game/objects/items/drug_items.dm @@ -81,3 +81,100 @@ /obj/item/reagent_containers/cup/blastoff_ampoule/Initialize(mapload, vol) . = ..() ADD_TRAIT(src, TRAIT_CONTRABAND, INNATE_TRAIT) + +/obj/item/food/drug/meth_crystal + name = "crystal meth" + desc = "A clear, sad, fake looking crystal substance." + icon_state = "meth_crystal1" + tastes = list("awfulness", "burning") + force = 3 + throwforce = 4 + embed_type = /datum/embedding/meth + +/datum/embedding/meth // lmao + embed_chance = 9 + rip_time = 2 SECONDS + COOLDOWN_DECLARE(reagent_message_cd) + ignore_throwspeed_threshold = TRUE + var/transfer_per_second = 0.5 + +/datum/embedding/meth/process_effect(seconds_per_tick) + var/obj/item/rock = parent + if(!istype(rock, /obj/item/food/drug/meth_crystal)) + return + + if(!IS_ORGANIC_LIMB(owner_limb)) + return + + if(!owner?.reagents || !rock.reagents?.total_volume) + return + + rock.reagents.trans_to( + owner, + transfer_per_second * seconds_per_tick, + methods = INJECT, + show_message = SPT_PROB(15, seconds_per_tick) + ) + +/obj/item/food/drug/meth_crystal/Initialize(mapload) + . = ..() + icon_state = pick("meth_crystal1", "meth_crystal2", "meth_crystal3", "meth_crystal4", "meth_crystal5") + ADD_TRAIT(src, TRAIT_CONTRABAND, INNATE_TRAIT) + reagents.add_reagent(/datum/reagent/drug/methamphetamine, 10) + +/obj/item/food/drug/opium + name = "opium" + desc = "A little of it, taken as much as a grain of ervum is a pain-easer, and a sleep-causer, and a digester... \ + but being drank too much it hurts, making spacemen lethargical, and it kills." + icon_state = "opium1" + tastes = list("amber", "a bitter vanilla") + food_reagents = list( + /datum/reagent/medicine/morphine = 10, + /datum/reagent/consumable/sugar = 1 + ) + +/obj/item/food/drug/opium/examine() + . = ..() + if(reagents.get_reagent_amount(/datum/reagent/medicine/morphine) >= 10) + . += span_notice("The opium is large and rich in fragrance; it needs no further refinement.") + else + . += span_notice("The opium is still small, and can be pressed together with more to increase its potency and richness.") + +/obj/item/food/drug/opium/Initialize(mapload) // For narcotics and black market purchases, pure and proper. + . = ..() + icon_state = pick("opium1", "opium2", "opium3", "opium4", "opium5") + ADD_TRAIT(src, TRAIT_CONTRABAND, INNATE_TRAIT) + +/obj/item/food/drug/opium/raw/Initialize(mapload, potency) // Randomizes amount depending upon potency. + . = ..() + reagents.clear_reagents() + var/mult = max(potency / 20, 1) // 20 = base, 100 = 5x, 200 = 10x + reagents.add_reagent(/datum/reagent/medicine/morphine, (rand(4, 25) / 10) * mult) + reagents.add_reagent(/datum/reagent/consumable/sugar, rand(1, 7) / 10) + +/obj/item/food/drug/opium/raw/interact_with_atom(obj/item/I, mob/user) // allows for combining opium up to 10u, refining it until rich and fragrant. + if(istype(I, /obj/item/food/drug/opium/raw)) + var/obj/item/food/drug/opium/raw/other = I + + var/current = reagents.get_reagent_amount(/datum/reagent/medicine/morphine) + if(current >= 10) + to_chat(user, span_notice("This chunk can't hold any more.")) + return TRUE + + var/capacity_left = 10 - current + var/transferred = other.reagents.trans_to(src, capacity_left) + + if(transferred > 0) + var/overflow = reagents.get_reagent_amount(/datum/reagent/medicine/morphine) - 10 + if(overflow > 0) + reagents.trans_to(other, overflow) + + to_chat(user, span_notice("You press the chunks of opium together, enriching them.")) + if(!other.reagents.total_volume) + qdel(other) + else + to_chat(user, span_notice("The opium cannot be pressed together further.")) + + return TRUE + + return ..() diff --git a/code/game/objects/items/food/meatslab.dm b/code/game/objects/items/food/meatslab.dm index e178ee46779..6aef3e7ceb2 100644 --- a/code/game/objects/items/food/meatslab.dm +++ b/code/game/objects/items/food/meatslab.dm @@ -153,6 +153,9 @@ /obj/item/food/meat/slab/human/mutant/skeleton/make_processable() return //skeletons don't have cutlets +/obj/item/food/meat/slab/human/mutant/skeleton/make_grillable() + return + /obj/item/food/meat/slab/human/mutant/zombie name = "meat (rotten)" icon_state = "rottenmeat" diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm index e89391f7887..f798fa66ad8 100644 --- a/code/game/objects/items/manuals.dm +++ b/code/game/objects/items/manuals.dm @@ -12,223 +12,178 @@ starting_author = "Farmer John" // Whoever wrote the paper or book, can be changed by pen or PC. It is not automatically assigned. starting_title = "The Human Harvest: From Seed to Market" //book contents below - starting_content = {" - - - - - -

Growing Humans

- - Why would you want to grow humans? Well, I'm expecting most readers to be in the slave trade, but a few might actually - want to revive fallen comrades. Growing pod people is actually quite simple: -

-

    -
  1. Find a dead person who is in need of revival.
  2. -
  3. Take a blood sample with a syringe (samples of their blood taken BEFORE they died will also work).
  4. -
  5. Inject a packet of replica pod seeds (which can be acquired by either mutating cabbages into replica pods (and then harvesting said replica pods) or by purchasing them from certain corporate entities) with the blood sample.
  6. -
  7. It is imperative to understand that injecting the replica pod plant with blood AFTER it has been planted WILL NOT WORK; you have to inject the SEED PACKET, NOT the TRAY.
  8. -
  9. Plant the seeds.
  10. -
  11. Tend to the replica pod's water and nutrition levels until it is time to harvest the podcloned humanoid.
  12. -
  13. Note that if the corpse's mind (or spirit, or soul, or whatever the hell your local chaplain calls it) is already in a new body or has left this plane of existence entirely, you will just receive seed packets upon harvesting the replica pod plant, not a podperson.
  14. -
-

- It really is that easy! Good luck! - - - - "} + starting_content = "\ +

Growing Humans

\ + \ + Why would you want to grow humans? Well, I'm expecting most readers to be in the slave trade, but a few might actually\ + want to revive fallen comrades. Growing pod people is actually quite simple:\ +

\ +

    \ +
  1. Find a dead person who is in need of revival.
  2. \ +
  3. Take a blood sample with a syringe (samples of their blood taken BEFORE they died will also work).
  4. \ +
  5. Inject a packet of replica pod seeds (which can be acquired by either mutating cabbages into replica pods (and then harvesting said replica pods) or by purchasing them from certain corporate entities) with the blood sample.
  6. \ +
  7. It is imperative to understand that injecting the replica pod plant with blood AFTER it has been planted WILL NOT WORK; you have to inject the SEED PACKET, NOT the TRAY.
  8. \ +
  9. Plant the seeds.
  10. \ +
  11. Tend to the replica pod's water and nutrition levels until it is time to harvest the podcloned humanoid.
  12. \ +
  13. Note that if the corpse's mind (or spirit, or soul, or whatever the hell your local chaplain calls it) is already in a new body or has left this plane of existence entirely, you will just receive seed packets upon harvesting the replica pod plant, not a podperson.
  14. \ +
\ + It really is that easy! Good luck!\ + \ + " /obj/item/book/manual/ripley_build_and_repair name = "APLU \"Ripley\" Construction and Operation Manual" icon_state ="book" starting_author = "Weyland-Yutani Corp" starting_title = "APLU \"Ripley\" Construction and Operation Manual" - starting_content = {" - - - - - -
- Weyland-Yutani - Building Better Worlds -

Autonomous Power Loader Unit \"Ripley\"

-
-

Specifications:

- - -

Construction:

-
    -
  1. Connect all exosuit parts to the chassis frame
  2. -
  3. Connect all hydraulic fittings and tighten them up with a wrench
  4. -
  5. Adjust the servohydraulics with a screwdriver
  6. -
  7. Wire the chassis. (Cable is not included.)
  8. -
  9. Use the wirecutters to remove the excess cable if needed.
  10. -
  11. Install the central control module (Not included. Use supplied datadisk to create one).
  12. -
  13. Secure the mainboard with a screwdriver.
  14. -
  15. Install the peripherals control module (Not included. Use supplied datadisk to create one).
  16. -
  17. Secure the peripherals control module with a screwdriver
  18. -
  19. Install the internal armor plating (Not included due to Nanotrasen regulations. Can be made using 5 iron sheets.)
  20. -
  21. Secure the internal armor plating with a wrench
  22. -
  23. Weld the internal armor plating to the chassis
  24. -
  25. Install the external reinforced armor plating (Not included due to Nanotrasen regulations. Can be made using 5 reinforced iron sheets.)
  26. -
  27. Secure the external reinforced armor plating with a wrench
  28. -
  29. Weld the external reinforced armor plating to the chassis
  30. -
- - - -

Operation

- Please consult the Nanotrasen compendium "Robotics for Dummies". - "} + starting_content = "\ +
\ + Weyland-Yutani - Building Better Worlds\ +

Autonomous Power Loader Unit \"Ripley\"

\ +
\ +

Specifications:

\ + \ + \ +

Construction:

\ +
    \ +
  1. Connect all exosuit parts to the chassis frame
  2. \ +
  3. Connect all hydraulic fittings and tighten them up with a wrench
  4. \ +
  5. Adjust the servohydraulics with a screwdriver
  6. \ +
  7. Wire the chassis. (Cable is not included.)
  8. \ +
  9. Use the wirecutters to remove the excess cable if needed.
  10. \ +
  11. Install the central control module (Not included. Use supplied datadisk to create one).
  12. \ +
  13. Secure the mainboard with a screwdriver.
  14. \ +
  15. Install the peripherals control module (Not included. Use supplied datadisk to create one).
  16. \ +
  17. Secure the peripherals control module with a screwdriver
  18. \ +
  19. Install the internal armor plating (Not included due to Nanotrasen regulations. Can be made using 5 iron sheets.)
  20. \ +
  21. Secure the internal armor plating with a wrench
  22. \ +
  23. Weld the internal armor plating to the chassis
  24. \ +
  25. Install the external reinforced armor plating (Not included due to Nanotrasen regulations. Can be made using 5 reinforced iron sheets.)
  26. \ +
  27. Secure the external reinforced armor plating with a wrench
  28. \ +
  29. Weld the external reinforced armor plating to the chassis
  30. \ + \ +

    Operation

    \ + Please consult the Nanotrasen compendium \"Robotics for Dummies\".\ + " /obj/item/book/manual/chef_recipes name = "Chef Recipes" icon_state = "cooked_book" starting_author = "Lord Frenrir Cageth" starting_title = "Chef Recipes" - starting_content = {" - - - - - - -

    Food for Dummies

    - Here is a guide on basic food recipes and also how to not poison your customers accidentally. - - -

    Basic ingredients preparation:

    - - Dough: 10u water + 15u flour for simple dough.
    - 6u egg yolk + 12 egg white + 15u flour + 5u sugar for cake batter.
    - Doughs can be transformed by using a knife and rolling pin.
    - All doughs can be microwaved.
    - Bowl: Add water to it for soup preparation.
    - Meat: Microwave it, process it, slice it into microwavable cutlets with your knife, or use it raw.
    - Cheese: Add 5u universal enzyme (catalyst) to milk and soy milk to prepare cheese (sliceable) and tofu.
    - Rice: Mix 10u rice with 10u water in a bowl then microwave it. - -

    Custom food:

    - Add ingredients to a base item to prepare a custom meal.
    - The bases are:
    - - bun (burger)
    - - breadslices(sandwich)
    - - plain bread
    - - plain pie
    - - vanilla cake
    - - empty bowl (salad)
    - - bowl with 10u water (soup)
    - - boiled spaghetti
    - - pizza bread
    - - metal rod (kebab) - -

    Table Craft:

    - Put ingredients on table, then click and drag the table onto yourself to see what recipes you can prepare. - -

    Microwave:

    - Use it to cook or boil food ingredients (meats, doughs, egg, spaghetti, donkpocket, etc...). - It can cook multiple items at once. - -

    Processor:

    - Use it to process certain ingredients (meat into meatballs, doughslice into spaghetti, potato into fries,etc...) - -

    Gibber:

    - Stuff an animal in it to grind it into meat. - -

    Meat spike:

    - Stick an animal on it then begin collecting its meat. - - -

    Example recipes:

    - Vanilla Cake: Microwave cake batter.
    - Burger: 1 bun + 1 meat steak
    - Bread: Microwave dough.
    - Waffles: 2 pastry base
    - Popcorn: Microwave corn.
    - Meat Steak: Microwave meat.
    - Meat Pie: 1 plain pie + 1u black pepper + 1u salt + 2 meat cutlets
    - Boiled Spagetti: Microwave spaghetti.
    - Donuts: 1u sugar + 1 pastry base
    - Fries: Process potato. - -

    Sharing your food:

    - You can put your meals on your kitchen counter or load them in the snack vending machines. - - - "} + starting_content = "\ + \ +

    Food for Dummies

    \ + Here is a guide on basic food recipes and also how to not poison your customers accidentally.\ + \ + \ +

    Basic ingredients preparation:

    \ + \ + Dough: 10u water + 15u flour for simple dough.
    \ + 6u egg yolk + 12 egg white + 15u flour + 5u sugar for cake batter.
    \ + Doughs can be transformed by using a knife and rolling pin.
    \ + All doughs can be baked.
    \ + Bowl: Add recipe ingredients and liquid to make soups.
    \ + Meat: Grill it, process it, slice it into grillable cutlets with your knife, or use it raw.
    \ + Cheese: Add 5u universal enzyme (catalyst) to milk and soy milk to prepare cheese (sliceable) and tofu.
    \ + Rice: Mix 10u rice with 10u water then microwave it.\ + \ +

    Custom food:

    \ + Add ingredients to a base item to prepare a custom meal.
    \ + The bases are:
    \ + - bun (burger)
    \ + - breadslices(sandwich)
    \ + - plain bread
    \ + - vanilla cake
    \ + - empty bowl (salad)
    \ + - bowl with liquid (soup)
    \ + - boiled spaghetti
    \ + - pizza bread
    \ + - iron rod (kebab)
    \ + - plain pie
    \ + - seaweed sheet(sushi)
    \ + \ +

    Cooking menu:

    \ + Open the crafting menu and click the cooking tab to see the list of cookable food.\ + \ +

    Microwave:

    \ + Use it to cook or boil food ingredients (egg, spaghetti, donkpocket, etc...).\ + It can cook multiple items at once.\ + \ +

    Processor:

    \ + Use it to process certain ingredients (meat into meatballs, doughslice into spaghetti, etc...)\ + \ +

    Gibber:

    \ + Stuff an animal in it to grind it into meat.\ + \ +

    Meat spike:

    \ + Stick an animal on it then begin collecting its meat.\ + \ + \ +

    Example recipes:

    \ + Vanilla Cake: Bake cake base.
    \ + Burger: 1 bun + 1 patty
    \ + Bread: Bake dough.
    \ + Waffles: 2 pastry base
    \ + Popcorn: Microwave corn.
    \ + Meat Steak: Grill meat.
    \ + Meat Pie: 1 plain pie + 1u black pepper + 1u salt + 1 meat steak
    \ + Boiled Spagetti: Microwave spaghetti.
    \ + Donuts: 1u sugar + 1 pastry base
    \ + Fries: Cut and process potato.\ + \ +

    Sharing your food:

    \ + You can put your meals on your kitchen counter or load them in the snack vending machines.\ + " /obj/item/book/manual/nuclear name = "Fission Mailed: Nuclear Sabotage 101" icon_state ="bookNuclear" starting_author = "Syndicate" starting_title = "Fission Mailed: Nuclear Sabotage 101" - starting_content = {" - - - - - Nuclear Explosives 101:
    - Hello and thank you for choosing the Syndicate for your nuclear information needs.
    - Today's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.
    - First and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE.
    - Pressing any button on the compacted bomb will cause it to extend and bolt itself into place.
    - If this is done to unbolt it one must completely log in which at this time may not be possible.
    - To make the nuclear device functional:
    -
  31. Place the nuclear device in the designated detonation zone.
  32. -
  33. Extend and anchor the nuclear device from its interface.
  34. -
  35. Insert the nuclear authorisation disk into slot.
  36. -
  37. Type numeric authorisation code into the keypad. This should have been provided. Note: If you make a mistake press R to reset the device. -
  38. Press the E button to log onto the device.
  39. - You now have activated the device. To deactivate the buttons at anytime for example when you've already prepped the bomb for detonation remove the auth disk OR press the R on the keypad.
    - Now the bomb CAN ONLY be detonated using the timer. Manual detonation is not an option.
    - Note: Nanotrasen is a pain in the neck.
    - Toggle off the SAFETY.
    - Note: You wouldn't believe how many Syndicate Operatives with doctorates have forgotten this step.
    - So use the - - and + + to set a det time between 5 seconds and 10 minutes.
    - Then press the timer toggle button to start the countdown.
    - Now remove the auth. disk so that the buttons deactivate.
    - Note: THE BOMB IS STILL SET AND WILL DETONATE
    - Now before you remove the disk if you need to move the bomb you can:
    - Toggle off the anchor, move it, and re-anchor.

    - Good luck. Remember the order:
    - Disk, Code, Safety, Timer, Disk, RUN!
    - Intelligence Analysts believe that normal Nanotrasen procedure is for the Captain to secure the nuclear authorisation disk.
    - Good luck! - - "} + starting_content = "\ + Nuclear Explosives 101:
    \ + Hello and thank you for choosing the Syndicate for your nuclear information needs.
    \ + Today's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.
    \ + First and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE.
    \ + Pressing any button on the compacted bomb will cause it to extend and bolt itself into place.
    \ + If this is done to unbolt it one must completely log in which at this time may not be possible.
    \ + To make the nuclear device functional:
    \ +
  40. Place the nuclear device in the designated detonation zone.
  41. \ +
  42. Extend and anchor the nuclear device from its interface.
  43. \ +
  44. Insert the nuclear authorisation disk into slot.
  45. \ +
  46. Type numeric authorisation code into the keypad. This should have been provided. Note: If you make a mistake press R to reset the device.\ +
  47. Press the E button to log onto the device.
  48. \ + You now have activated the device. To deactivate the buttons at anytime for example when you've already prepped the bomb for detonation remove the auth disk OR press the R on the keypad.
    \ + Now the bomb CAN ONLY be detonated using the timer. Manual detonation is not an option.
    \ + Note: Nanotrasen is a pain in the neck.
    \ + Toggle off the SAFETY.
    \ + Note: You wouldn't believe how many Syndicate Operatives with doctorates have forgotten this step.
    \ + So use the - - and + + to set a det time between 5 seconds and 10 minutes.
    \ + Then press the timer toggle button to start the countdown.
    \ + Now remove the auth. disk so that the buttons deactivate.
    \ + Note: THE BOMB IS STILL SET AND WILL DETONATE
    \ + Now before you remove the disk if you need to move the bomb you can:
    \ + Toggle off the anchor, move it, and re-anchor.

    \ + Good luck. Remember the order:
    \ + Disk, Code, Safety, Timer, Disk, RUN!
    \ + Intelligence Analysts believe that normal Nanotrasen procedure is for the Captain to secure the nuclear authorisation disk.
    \ + Good luck!\ + " diff --git a/code/game/objects/items/robot/items/tools.dm b/code/game/objects/items/robot/items/tools.dm index 8351fa1c2a1..b25253dba23 100644 --- a/code/game/objects/items/robot/items/tools.dm +++ b/code/game/objects/items/robot/items/tools.dm @@ -30,7 +30,7 @@ /// The owner of the dampener var/mob/living/silicon/robot/host = null /// The field - var/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/dampening_field + var/datum/proximity_monitor/advanced/bubble/projectile_dampener/peaceborg/dampening_field /// Energy cost per tracked projectile damage amount per second var/projectile_damage_tick_ecost_coefficient = 10 /// Energy cost per tracked projectile per second diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index d33c2f837ac..fad6549cf4a 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -1001,26 +1001,6 @@ GLOBAL_LIST_INIT(pizza_sheet_recipes, list( /obj/item/stack/sheet/pizza/five amount = 5 -/obj/item/stack/sheet/sandblock - name = "blocks of sand" - desc = "You're too old to be playing with sandcastles. Now you build... sandstations." - singular_name = "sand block" - icon_state = "sheet-sandstone" - mats_per_unit = list(/datum/material/sand = SHEET_MATERIAL_AMOUNT) - merge_type = /obj/item/stack/sheet/sandblock - material_type = /datum/material/sand - material_modifier = 1 - drop_sound = SFX_STONE_DROP - pickup_sound = SFX_STONE_PICKUP - -/obj/item/stack/sheet/sandblock/fifty - amount = 50 -/obj/item/stack/sheet/sandblock/twenty - amount = 20 -/obj/item/stack/sheet/sandblock/five - amount = 5 - - /obj/item/stack/sheet/hauntium name = "haunted sheets" desc = "These sheets seem cursed." diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 1394ccf94b8..5f024dc75a4 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -54,9 +54,11 @@ preload = TRUE /obj/item/storage/belt/utility/chief/full/PopulateContents() - SSwardrobe.provide_type(/obj/item/screwdriver/power, src) - SSwardrobe.provide_type(/obj/item/crowbar/power, src) - SSwardrobe.provide_type(/obj/item/weldingtool/experimental, src) + SSwardrobe.provide_type(/obj/item/screwdriver, src) + SSwardrobe.provide_type(/obj/item/wrench, src) + SSwardrobe.provide_type(/obj/item/weldingtool, src) + SSwardrobe.provide_type(/obj/item/crowbar, src) + SSwardrobe.provide_type(/obj/item/wirecutters, src) SSwardrobe.provide_type(/obj/item/multitool, src) SSwardrobe.provide_type(/obj/item/stack/cable_coil, src) SSwardrobe.provide_type(/obj/item/extinguisher/mini, src) @@ -65,9 +67,11 @@ /obj/item/storage/belt/utility/chief/full/get_types_to_preload() var/list/to_preload = list() //Yes this is a pain. Yes this is the point - to_preload += /obj/item/screwdriver/power - to_preload += /obj/item/crowbar/power - to_preload += /obj/item/weldingtool/electric // SKYRAT EDIT - Electric welder + to_preload += /obj/item/screwdriver + to_preload += /obj/item/wrench + to_preload += /obj/item/weldingtool + to_preload += /obj/item/crowbar + to_preload += /obj/item/wirecutters to_preload += /obj/item/multitool to_preload += /obj/item/stack/cable_coil to_preload += /obj/item/extinguisher/mini diff --git a/code/game/objects/items/storage/boxes/flat_boxes.dm b/code/game/objects/items/storage/boxes/flat_boxes.dm index 7320140d4c0..3ffb818f91a 100644 --- a/code/game/objects/items/storage/boxes/flat_boxes.dm +++ b/code/game/objects/items/storage/boxes/flat_boxes.dm @@ -20,3 +20,13 @@ flat_box.pixel_y = pixel_y qdel(src) + +/obj/item/storage/box/flat/fentanylpatches + name = "discrete box" + desc = "A small box containing a set of unmarked transdermal patches." + icon_state = "flat" + +/obj/item/storage/box/flat/fentanylpatches/Initialize(mapload) + . = ..() + for(var/i = 1 to 3) + new /obj/item/reagent_containers/applicator/patch/fent(src) diff --git a/code/game/objects/items/storage/boxes/misc.dm b/code/game/objects/items/storage/boxes/misc.dm index bc9305f72bf..41c958b1398 100644 --- a/code/game/objects/items/storage/boxes/misc.dm +++ b/code/game/objects/items/storage/boxes/misc.dm @@ -56,3 +56,39 @@ new /obj/item/mecha_parts/mecha_tracking(src) new /obj/item/mecha_parts/mecha_tracking(src) new /obj/item/mecha_parts/mecha_tracking(src) + +/obj/item/storage/box/methdealer + name = "box" + desc = "A brown box." + icon_state = "blank_package" + +/obj/item/storage/box/methdealer/PopulateContents() + var/static/list/items_inside = list( + /obj/item/food/drug/meth_crystal = 4, + /obj/item/cigarette/pipe/crackpipe = 2, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/box/opiumdealer + name = "box" + desc = "A brown box." + icon_state = "blank_package" + +/obj/item/storage/box/opiumdealer/PopulateContents() + var/static/list/items_inside = list( + /obj/item/food/drug/opium = 4, + /obj/item/cigarette/pipe/cobpipe = 2, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/box/kronkdealer + name = "box" + desc = "A brown box." + icon_state = "blank_package" + +/obj/item/storage/box/kronkdealer/PopulateContents() + var/static/list/items_inside = list( + /obj/item/food/drug/moon_rock = 4, + /obj/item/cigarette/pipe/crackpipe = 2, + ) + generate_items_inside(items_inside, src) diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index a7fa7552ad5..69b46013a3a 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -27,7 +27,7 @@ /obj/item/storage/lockbox/add_context(atom/source, list/context, obj/item/held_item, mob/user) if(!held_item) return NONE - if(src.broken) + if(broken) return NONE if(!held_item.GetID()) return NONE diff --git a/code/game/objects/items/syndie_spraycan.dm b/code/game/objects/items/syndie_spraycan.dm index 427cc87b657..13ae3097ebf 100644 --- a/code/game/objects/items/syndie_spraycan.dm +++ b/code/game/objects/items/syndie_spraycan.dm @@ -85,7 +85,7 @@ if(HAS_TRAIT(user, TRAIT_TAGGER)) wait_time *= 0.5 - if(!do_after(user, wait_time, target, hidden = TRUE)) + if(!do_after(user, wait_time, target, hidden = TRUE, extra_checks = CALLBACK(src, PROC_REF(adjacency_check), user, target))) user.balloon_alert(user, "interrupted!") drawing_rune = FALSE return FALSE @@ -146,6 +146,13 @@ suicider.AddComponent(/datum/component/face_decal, "spray", EXTERNAL_ADJACENT, paint_color) return OXYLOSS +///Checks if the user is still adjacent to the target (used for do_after extra_checks) +/obj/item/traitor_spraycan/proc/adjacency_check(mob/user, atom/target) + if(!user.Adjacent(target)) + user.balloon_alert(user, "moved too far away!") + return FALSE + return TRUE + /obj/effect/decal/cleanable/traitor_rune name = "syndicate graffiti" desc = "It looks like it's going to be... the Syndicate logo?" diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index 65c89e96b47..f0869fb9a37 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -138,10 +138,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16)) /obj/machinery/shower/plunger_act(obj/item/plunger/attacking_plunger, mob/living/user, reinforced) user.balloon_alert_to_viewers("furiously plunging...", "plunging shower...") - if(do_after(user, 3 SECONDS, target = src)) - user.balloon_alert_to_viewers("finished plunging") - reagents.expose(get_turf(src), TOUCH) //splash on the floor - reagents.clear_reagents() + if(!do_after(user, 3 SECONDS, target = src)) + return TRUE + user.balloon_alert_to_viewers("finished plunging") + reagents.expose(get_turf(src), TOUCH) //splash on the floor + reagents.clear_reagents() + begin_processing() + return TRUE /obj/machinery/shower/attackby(obj/item/tool, mob/user, list/modifiers, list/attack_modifiers) if(istype(tool, /obj/item/stock_parts/water_recycler)) diff --git a/code/game/objects/structures/water_structures/sink.dm b/code/game/objects/structures/water_structures/sink.dm index fdaa20af104..7922f332653 100644 --- a/code/game/objects/structures/water_structures/sink.dm +++ b/code/game/objects/structures/water_structures/sink.dm @@ -159,13 +159,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink, (-14)) O.play_tool_sound(src) has_water_reclaimer = FALSE new/obj/item/stock_parts/water_recycler(get_turf(loc)) - to_chat(user, span_notice("You remove the water reclaimer from [src]")) - return - - if(istype(O, /obj/item/stack/ore/glass)) - new /obj/item/stack/sheet/sandblock(loc) - to_chat(user, span_notice("You wet the sand in the sink and form it into a block.")) - O.use(1) + to_chat(user, span_notice("You remove the water reclaimer from [src].")) return if(istype(O, /obj/item/stock_parts/water_recycler)) diff --git a/code/game/objects/structures/water_structures/toilet.dm b/code/game/objects/structures/water_structures/toilet.dm index c2f1ecb848f..7738a0f6473 100644 --- a/code/game/objects/structures/water_structures/toilet.dm +++ b/code/game/objects/structures/water_structures/toilet.dm @@ -7,45 +7,71 @@ density = FALSE anchored = TRUE - ///Boolean if whether the toilet is currently flushing. + /// Boolean if whether the toilet is currently flushing. var/flushing = FALSE - ///Boolean if the toilet seat is up. + /// Boolean if the toilet seat is up. var/cover_open = FALSE - ///Boolean if the cistern is up, allowing items to be put in/out. + /// Boolean if the cistern is up, allowing items to be put in/out. var/cistern_open = FALSE - ///The combined weight of all items in the cistern put together. + /// The combined weight of all items in the cistern put together. var/w_items = 0 - ///Reference to the mob being given a swirlie. + /// Reference to the mob being given a swirlie. var/mob/living/swirlie - ///The type of material used to build the toilet. + /// The type of material used to build the toilet. var/buildstacktype = /obj/item/stack/sheet/iron - ///How much of the buildstacktype is needed to construct the toilet. + /// How much of the buildstacktype is needed to construct the toilet. var/buildstackamount = 1 - ///Lazylist of items in the cistern. + /// Lazylist of items in the cistern. var/list/cistern_items - ///Lazylist of fish in the toilet, not to be mixed with the items in the cistern. Max of 3 + /// Lazylist of fish in the toilet, not to be mixed with the items in the cistern. Max of 3 var/list/fishes + /// Does the toilet have a water recycler to recollect its water supply? + var/has_water_reclaimer = TRUE + /// Units of water to reclaim per second + var/reclaim_rate = 0.5 + /// What reagent does the toilet flush with + var/reagent_id = /datum/reagent/water + /// How much reagent can the cistern contain + var/reagent_capacity = 200 + /// Item stuck in the basin of the toilet + var/obj/item/stuck_item = null -/obj/structure/toilet/Initialize(mapload) +/obj/structure/toilet/Initialize(mapload, has_water_reclaimer = null) . = ..() cover_open = round(rand(0, 1)) + if(!isnull(has_water_reclaimer)) + src.has_water_reclaimer = has_water_reclaimer update_appearance(UPDATE_ICON) if(mapload && SSmapping.level_trait(z, ZTRAIT_STATION)) AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[/datum/fish_source/toilet]) AddElement(/datum/element/fish_safe_storage) register_context() + create_reagents(reagent_capacity) + if(src.has_water_reclaimer) + reagents.add_reagent(reagent_id, reagent_capacity) + AddComponent(/datum/component/plumbing/simple_demand, extend_pipe_to_edge = TRUE) /obj/structure/toilet/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() if(user.pulling && isliving(user.pulling)) context[SCREENTIP_CONTEXT_LMB] = "Give Swirlie" - else if(cover_open && istype(held_item, /obj/item/fish)) - context[SCREENTIP_CONTEXT_LMB] = "Insert Fish" - else if(cover_open && LAZYLEN(fishes)) - context[SCREENTIP_CONTEXT_LMB] = "Grab Fish" + if(cover_open) + if(isnull(held_item)) + if(LAZYLEN(fishes)) + context[SCREENTIP_CONTEXT_LMB] = "Grab Fish" + else if(istype(held_item, /obj/item/fish)) + context[SCREENTIP_CONTEXT_LMB] = "Insert Fish" + else if(istype(held_item, /obj/item/plunger)) + context[SCREENTIP_CONTEXT_LMB] = "Unclog" + else if(held_item.w_class <= WEIGHT_CLASS_SMALL) + context[SCREENTIP_CONTEXT_LMB] = "Insert Item" else if(cistern_open) if(isnull(held_item)) context[SCREENTIP_CONTEXT_LMB] = "Check Cistern" + else if(held_item.tool_behaviour == TOOL_SCREWDRIVER && has_water_reclaimer) + context[SCREENTIP_CONTEXT_LMB] = "Remove Reclaimer" + else if(istype(held_item, /obj/item/stock_parts/water_recycler) && !has_water_reclaimer) + context[SCREENTIP_CONTEXT_LMB] = "Install Reclaimer" else context[SCREENTIP_CONTEXT_LMB] = "Insert Item" context[SCREENTIP_CONTEXT_RMB] = "Flush" @@ -54,8 +80,14 @@ /obj/structure/toilet/examine(mob/user) . = ..() - if(cover_open && LAZYLEN(fishes)) - . += span_notice("You can see fish in the toilet, you can probably take one out.") + if(cover_open) + if(LAZYLEN(fishes)) + . += span_notice("You can see fish in the toilet, you can probably take one out.") + if(stuck_item) + . += span_notice("There seems to be something small in [src]'s bowl...") + if(cistern_open && has_water_reclaimer) + . += span_notice("A water recycler is installed. Its attached by a pair of screws.") + . += span_notice("Its display states: [reagents.total_volume]/[reagents.maximum_volume] liquids remaining.") /obj/structure/toilet/examine_more(mob/user) . = ..() @@ -66,6 +98,7 @@ . = ..() QDEL_LAZYLIST(fishes) QDEL_LAZYLIST(cistern_items) + QDEL_NULL(stuck_item) /obj/structure/toilet/Exited(atom/movable/gone, direction) . = ..() @@ -101,12 +134,18 @@ if(swirlie) return if(cover_open) + if(!reagents.total_volume) + to_chat(user, span_notice("\The [src] is dry!")) + return grabbed_mob.visible_message(span_danger("[user] starts to give [grabbed_mob] a swirlie!"), span_userdanger("[user] starts to give you a swirlie...")) swirlie = grabbed_mob var/was_alive = (swirlie.stat != DEAD) if(!do_after(user, 3 SECONDS, target = src, timed_action_flags = IGNORE_HELD_ITEM)) swirlie = null return + if(!reagents.total_volume) + to_chat(user, span_notice("\The [src] is dry!")) + return grabbed_mob.visible_message(span_danger("[user] gives [grabbed_mob] a swirlie!"), span_userdanger("[user] gives you a swirlie!"), span_hear("You hear a toilet flushing.")) if(iscarbon(grabbed_mob)) var/mob/living/carbon/carbon_grabbed = grabbed_mob @@ -158,7 +197,25 @@ . = ..() if(flushing) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + + if(reagents.total_volume <= 50) + to_chat(user, span_notice("You press the flush lever, but nothing happens.")) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + flushing = TRUE + var/something_stuck = !isnull(stuck_item) + if(!something_stuck && LAZYLEN(fishes)) + for(var/obj/item/fish/fish as anything in fishes) + if(fish.w_class >= WEIGHT_CLASS_NORMAL) + something_stuck = TRUE + break + + if(something_stuck) + reagents.create_foam(/datum/effect_system/fluid_spread/foam, 10, notification = span_danger("[src] overflows, spilling its cistern's contents everywhere!"), log = TRUE) + else + reagents.remove_all(50) + + begin_reclamation() playsound(src, 'sound/machines/toilet_flush.ogg', cover_open ? 40 : 20, TRUE) if(cover_open && (dir & SOUTH)) update_appearance(UPDATE_OVERLAYS) @@ -183,50 +240,97 @@ else for(var/datum/material/M as anything in custom_materials) new M.sheet_type(loc, FLOOR(custom_materials[M] / SHEET_MATERIAL_AMOUNT, 1)) + if(has_water_reclaimer) + new /obj/item/stock_parts/water_recycler(drop_location()) + if(stuck_item) + stuck_item.forceMove(drop_location()) + +/obj/structure/toilet/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(user.combat_mode) + return NONE -/obj/structure/toilet/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) add_fingerprint(user) - if(cover_open && istype(attacking_item, /obj/item/fish)) + if(cover_open && istype(tool, /obj/item/fish)) if(fishes >= 3) to_chat(user, span_warning("There's too many fishes, flush them down first.")) - return - if(!user.transferItemToLoc(attacking_item, src)) - to_chat(user, span_warning("\The [attacking_item] is stuck to your hand!")) - return - var/obj/item/fish/the_fish = attacking_item + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("\The [tool] is stuck to your hand!")) + return ITEM_INTERACT_BLOCKING + var/obj/item/fish/the_fish = tool if(the_fish.status == FISH_DEAD) - to_chat(user, span_warning("You place [attacking_item] into [src], may it rest in peace.")) + to_chat(user, span_warning("You place [tool] into [src], may it rest in peace.")) else - to_chat(user, span_notice("You place [attacking_item] into [src], hopefully no one will miss it!")) - LAZYADD(fishes, attacking_item) - return + to_chat(user, span_notice("You place [tool] into [src], hopefully no one will miss it!")) + LAZYADD(fishes, tool) + return ITEM_INTERACT_SUCCESS - if(cistern_open && !user.combat_mode) - if(attacking_item.w_class > WEIGHT_CLASS_NORMAL) - to_chat(user, span_warning("[attacking_item] does not fit!")) - return - if(w_items + attacking_item.w_class > WEIGHT_CLASS_HUGE) + if(cistern_open) + if(istype(tool, /obj/item/stock_parts/water_recycler)) + if(has_water_reclaimer) + to_chat(user, span_warning("[src] already has a water recycler installed.")) + return ITEM_INTERACT_BLOCKING + + playsound(src, 'sound/machines/click.ogg', 20, TRUE) + qdel(tool) + has_water_reclaimer = TRUE + begin_reclamation() + return ITEM_INTERACT_SUCCESS + + if(tool.w_class > WEIGHT_CLASS_NORMAL) + to_chat(user, span_warning("[tool] does not fit!")) + return ITEM_INTERACT_BLOCKING + if(w_items + tool.w_class > WEIGHT_CLASS_HUGE) to_chat(user, span_warning("The cistern is full!")) - return - if(!user.transferItemToLoc(attacking_item, src)) - to_chat(user, span_warning("\The [attacking_item] is stuck to your hand, you cannot put it in the cistern!")) - return - LAZYADD(cistern_items, attacking_item) - w_items += attacking_item.w_class - to_chat(user, span_notice("You carefully place [attacking_item] into the cistern.")) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("\The [tool] is stuck to your hand, you cannot put it in the cistern!")) + return ITEM_INTERACT_BLOCKING + LAZYADD(cistern_items, tool) + w_items += tool.w_class + to_chat(user, span_notice("You carefully place [tool] into the cistern.")) + return ITEM_INTERACT_SUCCESS - if(is_reagent_container(attacking_item) && !user.combat_mode) - if (!cover_open) - return - if(istype(attacking_item, /obj/item/food/monkeycube)) - var/obj/item/food/monkeycube/cube = attacking_item - cube.Expand() - return - var/obj/item/reagent_containers/RG = attacking_item - RG.reagents.add_reagent(/datum/reagent/water, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) - to_chat(user, span_notice("You fill [RG] from [src]. Gross.")) - return ..() + if(!cover_open) + return NONE + + if(!is_reagent_container(tool)) + if(tool.w_class > WEIGHT_CLASS_SMALL) + return NONE + + if(stuck_item) + to_chat(user, span_warning("There's already something blocking [src]'s drain pipe!")) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("\The [tool] is stuck to your hand!")) + return ITEM_INTERACT_BLOCKING + + stuck_item = tool + to_chat(user, span_notice("You drop [tool] into [src]'s bowl.")) + return ITEM_INTERACT_SUCCESS + + if(reagents.total_volume <= 0) + to_chat(user, span_notice("\The [src] is dry.")) + return ITEM_INTERACT_BLOCKING + + if(istype(tool, /obj/item/food/monkeycube)) + var/obj/item/food/monkeycube/cube = tool + cube.Expand() + return ITEM_INTERACT_SUCCESS + + var/obj/item/reagent_containers/container = tool + if(!container.is_refillable()) + return NONE + + if(container.reagents.holder_full()) + to_chat(user, span_notice("\The [container] is full.")) + return ITEM_INTERACT_BLOCKING + + reagents.trans_to(container, container.amount_per_transfer_from_this, transferred_by = user) + begin_reclamation() + to_chat(user, span_notice("You fill [container] from [src]. Gross.")) + return ITEM_INTERACT_SUCCESS /obj/structure/toilet/crowbar_act(mob/living/user, obj/item/tool) to_chat(user, span_notice("You start to [cistern_open ? "replace the lid on" : "lift the lid off"] the cistern...")) @@ -240,11 +344,39 @@ update_appearance(UPDATE_ICON_STATE) return ITEM_INTERACT_SUCCESS +/obj/structure/toilet/screwdriver_act(mob/living/user, obj/item/tool) + if(!cistern_open) + to_chat(user, span_warning("You need to open [src]'s cistern first!")) + return ITEM_INTERACT_BLOCKING + + if(!has_water_reclaimer) + to_chat(user, span_warning("\the [src] doesn't have a water reclaimer installed.")) + return ITEM_INTERACT_BLOCKING + + tool.play_tool_sound(src) + has_water_reclaimer = FALSE + new /obj/item/stock_parts/water_recycler(drop_location()) + to_chat(user, span_notice("You remove the water reclaimer from \the [src].")) + return ITEM_INTERACT_SUCCESS + /obj/structure/toilet/wrench_act(mob/living/user, obj/item/tool) tool.play_tool_sound(src) deconstruct() return ITEM_INTERACT_SUCCESS +/obj/structure/toilet/plunger_act(obj/item/plunger/attacking_plunger, mob/living/user, reinforced) + user.balloon_alert_to_viewers("furiously plunging...") + if(!do_after(user, 3 SECONDS, target = src)) + return TRUE + user.balloon_alert_to_viewers("finished plunging") + reagents.expose(get_turf(src), TOUCH) //splash on the floor + reagents.clear_reagents() + begin_reclamation() + if(stuck_item) + stuck_item.forceMove(drop_location()) + stuck_item = null + return TRUE + ///Ends the flushing animation and updates overlays if necessary /obj/structure/toilet/proc/end_flushing() flushing = FALSE @@ -252,9 +384,19 @@ update_appearance(UPDATE_OVERLAYS) QDEL_LAZYLIST(fishes) +/obj/structure/toilet/proc/begin_reclamation() + START_PROCESSING(SSplumbing, src) + +/obj/structure/toilet/process(seconds_per_tick) + // Water reclamation complete? + if(!has_water_reclaimer || reagents.total_volume >= reagents.maximum_volume) + return PROCESS_KILL + reagents.add_reagent(reagent_id, reclaim_rate * seconds_per_tick) + /obj/structure/toilet/greyscale material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS buildstacktype = null + has_water_reclaimer = FALSE /obj/structure/toilet/secret var/secret_type = null diff --git a/code/game/objects/structures/water_structures/water_source.dm b/code/game/objects/structures/water_structures/water_source.dm index 0f2f771612d..fc5411991fc 100644 --- a/code/game/objects/structures/water_structures/water_source.dm +++ b/code/game/objects/structures/water_structures/water_source.dm @@ -94,12 +94,6 @@ playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) return - if(istype(attacking_item, /obj/item/stack/ore/glass)) - new /obj/item/stack/sheet/sandblock(loc) - to_chat(user, span_notice("You wet the sand and form it into a block.")) - attacking_item.use(1) - return - if(!user.combat_mode || (attacking_item.item_flags & NOBLUDGEON)) to_chat(user, span_notice("You start washing [attacking_item]...")) busy = TRUE diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm index 558a89442c6..fdc59759bb8 100644 --- a/code/game/turfs/open/_open.dm +++ b/code/game/turfs/open/_open.dm @@ -137,6 +137,9 @@ if(!destination_z || !destination_x || !destination_y || arrived.pulledby || arrived.currently_z_moving) return + if(SSatoms.initialized == INITIALIZATION_INNEW_MAPLOAD) // we don't want to be transitioning atoms to another z-level while we are still in mapload + return + var/tx = destination_x var/ty = destination_y var/turf/DT = locate(tx, ty, destination_z) @@ -413,7 +416,7 @@ for(var/mob/living/basic/slime/M in src) M.apply_water() - wash(CLEAN_WASH, TRUE) + wash(CLEAN_WASH | CLEAN_RAD, TRUE) return TRUE /turf/open/handle_slip(mob/living/slipper, knockdown_amount, obj/slippable, lube, paralyze_amount, daze_amount, force_drop) diff --git a/code/game/turfs/open/floor/plating.dm b/code/game/turfs/open/floor/plating.dm index 83781b92cbc..8aa5c2ed393 100644 --- a/code/game/turfs/open/floor/plating.dm +++ b/code/game/turfs/open/floor/plating.dm @@ -156,19 +156,22 @@ /turf/open/floor/plating/foam/break_tile() return //jetfuel can't break steel foam... -/turf/open/floor/plating/foam/attackby(obj/item/attacking_item, mob/user, list/modifiers) - if(ismetaltile(attacking_item)) - var/obj/item/stack/tile/tiles = attacking_item - if(!tiles.use(1)) - return - var/obj/lattice = locate(/obj/structure/lattice) in src - if(lattice) - qdel(lattice) - to_chat(user, span_notice("You reinforce the foamed plating with tiling.")) - playsound(src, 'sound/items/weapons/Genhit.ogg', 50, TRUE) - ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) - return +/turf/open/floor/plating/foam/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!ismetaltile(tool)) + return NONE + var/obj/item/stack/tile/tiles = tool + if(!tiles.use(1)) + return ITEM_INTERACT_BLOCKING + var/obj/lattice = locate(/obj/structure/lattice) in src + if(lattice) + qdel(lattice) + to_chat(user, span_notice("You reinforce the foamed plating with tiling.")) + playsound(src, 'sound/items/weapons/Genhit.ogg', 50, TRUE) + ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + return ITEM_INTERACT_SUCCESS + +/turf/open/floor/plating/foam/attackby(obj/item/attacking_item, mob/user, list/modifiers) playsound(src, 'sound/items/weapons/tap.ogg', 100, TRUE) //The attack sound is muffled by the foam itself user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) diff --git a/code/modules/admin/verbs/map_export.dm b/code/modules/admin/verbs/map_export.dm index 0546eb3723c..398f85170fe 100644 --- a/code/modules/admin/verbs/map_export.dm +++ b/code/modules/admin/verbs/map_export.dm @@ -177,7 +177,7 @@ GLOBAL_LIST_INIT(save_file_chars, list( if(istext(value)) //Prevent symbols from being because otherwise you can name something // [";},/obj/item/gun/energy/laser/instakill{name="da epic gun] and spawn yourself an instakill gun. - return "\"[hashtag_newlines_and_tabs("[value]", list("{"="", "}"="", "\""="", ";"="", ","=""))]\"" + return "\"[hashtag_newlines_and_tabs("[value]", list("{"="", "}"="", "\""="", ","=""))]\"" if(isnum(value) || ispath(value)) return "[value]" if(islist(value)) diff --git a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm index 90d2d5a9053..b056ecbef30 100644 --- a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm +++ b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm @@ -445,7 +445,6 @@ Return to step 11 of normal process."} if(do_after(user, time_to_cuff, carbon_victim) && carbon_victim.canBeHandcuffed()) if(!carbon_victim.handcuffed) carbon_victim.set_handcuffed(new /obj/item/restraints/handcuffs/energy/used(carbon_victim)) - carbon_victim.update_handcuffed() to_chat(user, span_notice("You restrain [carbon_victim].")) log_combat(user, carbon_victim, "handcuffed") else diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 42746759a69..9a77b25a6ec 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -582,7 +582,6 @@ if(do_after(user, 3 SECONDS, C)) if(!C.handcuffed) C.set_handcuffed(new /obj/item/restraints/handcuffs/energy/cult/used(C)) - C.update_handcuffed() C.adjust_silence(10 SECONDS) to_chat(user, span_notice("You shackle [C].")) log_combat(user, C, "shackled") diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm index 7b00bdbb80f..82ea0bbe6d1 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -350,13 +350,7 @@ //BUBBERSTATION EDIT END sac_target.visible_message(span_danger("[sac_target] begins to shudder violenty as dark tendrils begin to drag them into thin air!")) sac_target.set_handcuffed(new /obj/item/restraints/handcuffs/energy/cult(sac_target)) - sac_target.update_handcuffed() - - if(sac_target.legcuffed) - sac_target.legcuffed.forceMove(sac_target.drop_location()) - sac_target.legcuffed.dropped(sac_target) - sac_target.legcuffed = null - sac_target.update_worn_legcuffs() + sac_target.dropItemToGround(sac_target.legcuffed, TRUE) sac_target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 85, 150) sac_target.do_jitter_animation() diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index c040e30db3f..ae81c16def1 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -121,7 +121,7 @@ rarity = 500 purchaseable = TRUE base_value = 0.5 - desc = "Water, in gas form. Makes things slippery." + desc = "Water, in gas form. Makes floors slippery and washes items on them." primary_color = "#b0c4de" /datum/gas/hypernoblium diff --git a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm index 01584a79c98..555b02256ea 100644 --- a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm +++ b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm @@ -718,7 +718,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 27) ///Used for air alarm link helper, which connects air alarm to a sensor with corresponding chamber_id /obj/machinery/airalarm/proc/setup_chamber_link() - var/obj/machinery/air_sensor/sensor = GLOB.objects_by_id_tag[GLOB.map_loaded_sensors[air_sensor_chamber_id]] + var/obj/machinery/air_sensor/sensor = null + for(var/obj/machinery/air_sensor/target as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/air_sensor)) + if(target.z == z && target.chamber_id == air_sensor_chamber_id) + sensor = target + break if(isnull(sensor)) log_mapping("[src] at [AREACOORD(src)] tried to connect to a sensor, but no sensor with chamber_id:[air_sensor_chamber_id] found!") return diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index a6029e21109..b5d53035365 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -32,9 +32,6 @@ // ATMOS_INTERNAL_BOUND: Do not pass internal_pressure_bound // NO_BOUND: Do not pass either - /// id of air sensor its connected to - var/chamber_id - ///area this vent is assigned to var/area/assigned_area diff --git a/code/modules/cards/cards.dm b/code/modules/cards/cards.dm index 3a18b36f86d..fbfa2a39658 100644 --- a/code/modules/cards/cards.dm +++ b/code/modules/cards/cards.dm @@ -102,7 +102,10 @@ card_atoms += card if(istype(card_item, /obj/item/toy/cards/cardhand)) - qdel(card_item) + var/obj/item/toy/cards/cardhand/recycled_cardhand = card_item + recycled_cardhand.card_atoms -= cards_to_add + if (!length(recycled_cardhand.fetch_card_atoms())) + qdel(card_item) update_appearance() return cards_to_add diff --git a/code/modules/cargo/markets/market_items/consumables.dm b/code/modules/cargo/markets/market_items/consumables.dm index a8c7c72cd45..e06a9fc0fdb 100644 --- a/code/modules/cargo/markets/market_items/consumables.dm +++ b/code/modules/cargo/markets/market_items/consumables.dm @@ -74,3 +74,69 @@ price_min = CARGO_CRATE_VALUE * 0.25 price_max = CARGO_CRATE_VALUE * 0.75 availability_prob = 90 + +/datum/market_item/consumable/methshipment + name = "Wholesale Methaphemtamine Shipment" + desc = "Dealer quantity! Don't get high on your own supply. Or do. You already bought it." + item = /obj/item/storage/box/methdealer + + stock_min = 1 + stock_max = 3 + price_min = CARGO_CRATE_VALUE * 0.5 + price_max = CARGO_CRATE_VALUE * 1.5 + availability_prob = 25 + +/datum/market_item/consumable/opiumshipment + name = "Wholesale Opium Shipment" + desc = "Are your coworkers stressed? We've got vice in bulk." + item = /obj/item/storage/box/opiumdealer + + stock_min = 1 + stock_max = 3 + price_min = CARGO_CRATE_VALUE * 0.5 + price_max = CARGO_CRATE_VALUE * 1.2 + availability_prob = 35 + +/datum/market_item/consumable/kronkshipment + name = "Wholesale Kronkaine Shipment" + desc = "Warning! Security might actually care about this one!" + item = /obj/item/storage/box/kronkdealer + + stock_min = 1 + stock_max = 3 + price_min = CARGO_CRATE_VALUE * 1 + price_max = CARGO_CRATE_VALUE * 2 + availability_prob = 15 + +/datum/market_item/consumable/methaphetamine + name = "Crystal Meth" + desc = "A big rock, for when you just need a hit." + item = /obj/item/food/drug/meth_crystal + + stock_min = 1 + stock_max = 5 + price_min = CARGO_CRATE_VALUE * 0.4 + price_max = CARGO_CRATE_VALUE * 0.5 + availability_prob = 35 + +/datum/market_item/consumable/heroin + name = "Heroin" + desc = "Chase the dragon." + item = /obj/item/food/drug/opium + + stock_min = 1 + stock_max = 5 + price_min = CARGO_CRATE_VALUE * 0.35 + price_max = CARGO_CRATE_VALUE * 0.5 + availability_prob = 45 + +/datum/market_item/consumable/kronkaine + name = "Kronkaine" + desc = "An 8⁸ ball, this is hardly ever on the market!" + item = /obj/item/food/drug/moon_rock + + stock_min = 1 + stock_max = 2 + price_min = CARGO_CRATE_VALUE * 0.5 + price_max = CARGO_CRATE_VALUE * 1 + availability_prob = 15 diff --git a/code/modules/cargo/packs/imports.dm b/code/modules/cargo/packs/imports.dm index eaccc5748b7..111288a28f6 100644 --- a/code/modules/cargo/packs/imports.dm +++ b/code/modules/cargo/packs/imports.dm @@ -99,7 +99,7 @@ desc = "I'm not sure why you bothered to buy this...and why does it cost so much?" cost = CARGO_CRATE_VALUE * 5 contains = list( - /obj/effect/spawner/random/maintenance/three, + /obj/effect/spawner/random/maintenance/dumpster, /obj/effect/spawner/random/trash/garbage = 5, ) crate_name = "putrid dumpster" diff --git a/code/modules/clothing/chameleon/_chameleon_action.dm b/code/modules/clothing/chameleon/_chameleon_action.dm index d0fdf826991..4befe80fbe8 100644 --- a/code/modules/clothing/chameleon/_chameleon_action.dm +++ b/code/modules/clothing/chameleon/_chameleon_action.dm @@ -120,6 +120,7 @@ if(ismob(chameleon_item.loc)) var/mob/wearer = chameleon_item.loc wearer.update_clothing(chameleon_item.slot_flags | ITEM_SLOT_HANDS) + wearer.refresh_obscured() /datum/action/item_action/chameleon/change/proc/update_item(obj/item/picked_item) PROTECTED_PROC(TRUE) // Call update_look, not this! diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 53bbcbe6377..f388cea8805 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -563,12 +563,12 @@ BLIND // can't see anything if(user.is_holding(src)) user.update_held_items() return TRUE - if(up) - user.update_obscured_slots(visor_flags_inv) user.update_clothing(slot_flags) if(!iscarbon(user)) return TRUE var/mob/living/carbon/carbon_user = user + if(up) + carbon_user.refresh_obscured() if(visor_vars_to_toggle & VISOR_TINT) carbon_user.update_tint() if((visor_flags & (MASKINTERNALS|HEADINTERNALS)) && carbon_user.invalid_internals()) diff --git a/code/modules/clothing/head/animalears.dm b/code/modules/clothing/head/animalears.dm index 77ed57a9083..bcb5ffb63ed 100644 --- a/code/modules/clothing/head/animalears.dm +++ b/code/modules/clothing/head/animalears.dm @@ -10,7 +10,7 @@ if(ishuman(user) && (slot & ITEM_SLOT_HEAD)) update_icon(ALL, user) user.update_worn_head() //Color might have been changed by update_appearance. - ..() + return ..() /obj/item/clothing/head/costume/kitty/update_icon(updates=ALL, mob/living/carbon/human/user) . = ..() diff --git a/code/modules/clothing/masks/animal_masks.dm b/code/modules/clothing/masks/animal_masks.dm index fd900810e67..d3482a2c39e 100644 --- a/code/modules/clothing/masks/animal_masks.dm +++ b/code/modules/clothing/masks/animal_masks.dm @@ -91,6 +91,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list( RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) to_chat(M, span_userdanger("[src] was cursed!")) M.update_worn_mask() + M.refresh_obscured() /obj/item/clothing/mask/animal/proc/clear_curse() REMOVE_TRAIT(src, TRAIT_NODROP, CURSED_MASK_TRAIT) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 2054b751b64..7cfdbfeb8d0 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -248,7 +248,7 @@ var/heart_strength var/pulse_pressure - + var/having_heart_attack = carbon_patient.has_status_effect(/datum/status_effect/heart_attack) var/heart_noises = TRUE var/obj/item/organ/heart/heart = carbon_patient.get_organ_slot(ORGAN_SLOT_HEART) @@ -292,6 +292,8 @@ if(isnull(heart) || !heart.is_beating() || carbon_patient.stat == DEAD) render_list += "You don't hear a heartbeat!\n"//they're dead or their heart isn't beating heart_noises = FALSE + else if(having_heart_attack) + render_list += "You hear a rapid, irregular heartbeat.\n" else if(heart.damage > 10 || carbon_patient.blood_volume <= BLOOD_VOLUME_OKAY) render_list += "You hear a weak heartbeat.\n"//their heart is damaged, or they have critical blood else @@ -304,28 +306,25 @@ user.visible_message(span_notice("[user] presses their hands against [carbon_patient]'s abdomen."), ignored_mobs = user) //assess abdominal organs - if(body_part == BODY_ZONE_PRECISE_GROIN) - var/appendix_okay = TRUE - var/liver_okay = TRUE - if(!liver)//sanity check, ensure the patient actually has a liver - render_list += "You can't feel anything where [target.p_their()] liver would be.\n" + var/appendix_okay = TRUE + var/liver_okay = TRUE + if(!liver)//sanity check, ensure the patient actually has a liver + render_list += "You can't feel anything where [target.p_their()] liver would be.\n" + liver_okay = FALSE + else + if(liver.damage > 10) + render_list += "[target.p_Their()] liver feels firm.\n"//their liver is damaged liver_okay = FALSE - else - if(liver.damage > 10) - render_list += "[target.p_Their()] liver feels firm.\n"//their liver is damaged - liver_okay = FALSE - - if(!appendix)//sanity check, ensure the patient actually has an appendix - render_list += "You can't feel anything where [target.p_their()] appendix would be.\n" + if(!appendix)//sanity check, ensure the patient actually has an appendix + render_list += "You can't feel anything where [target.p_their()] appendix would be.\n" + appendix_okay = FALSE + else + if(appendix.damage > 10 && carbon_patient.stat == CONSCIOUS) + render_list += "[target] screams when you lift your hand from [target.p_their()] appendix!\n"//scream if their appendix is damaged and they're awake + target.emote("scream") appendix_okay = FALSE - else - if(appendix.damage > 10 && carbon_patient.stat == CONSCIOUS) - render_list += "[target] screams when you lift your hand from [target.p_their()] appendix!\n"//scream if their appendix is damaged and they're awake - target.emote("scream") - appendix_okay = FALSE - - if(liver_okay && appendix_okay)//if they have all their organs and have no detectable damage - render_list += "You don't find anything abnormal.\n"//they're okay :D + if(liver_okay && appendix_okay)//if they have all their organs and have no detectable damage + render_list += "You don't find anything abnormal.\n"//they're okay :D if(BODY_ZONE_PRECISE_EYES) balloon_alert(user, "can't do that!") @@ -347,12 +346,14 @@ if(isnull(heart) || !heart.is_beating() || carbon_patient.blood_volume <= BLOOD_VOLUME_OKAY || carbon_patient.stat == DEAD) render_list += "You can't find a pulse!\n"//they're dead, their heart isn't beating, or they have critical blood else - if(heart.damage > 10) - heart_strength = span_danger("irregular")//their heart is damaged + if(having_heart_attack) + heart_strength = span_danger("irregular") + else if(heart.damage > 10) + heart_strength = span_danger("weak")//their heart is damaged else heart_strength = span_notice("regular")//they're okay :D - if(carbon_patient.blood_volume <= BLOOD_VOLUME_SAFE && carbon_patient.blood_volume > BLOOD_VOLUME_OKAY) + if((carbon_patient.blood_volume <= BLOOD_VOLUME_SAFE && carbon_patient.blood_volume > BLOOD_VOLUME_OKAY) || having_heart_attack) pulse_pressure = span_danger("thready")//low blood else pulse_pressure = span_notice("strong")//they're okay :D diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 91fd7df3afb..52216c269d2 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -77,7 +77,7 @@ . += "The [fastening_type] are all knotted together." /obj/item/clothing/shoes/visual_equipped(mob/user, slot) - ..() + . = ..() if(offset && (slot_flags & slot)) user.pixel_z += offset worn_y_dimension -= (offset * 2) diff --git a/code/modules/experisci/experiment/physical_experiments.dm b/code/modules/experisci/experiment/physical_experiments.dm index 60303814e44..11075d1c75e 100644 --- a/code/modules/experisci/experiment/physical_experiments.dm +++ b/code/modules/experisci/experiment/physical_experiments.dm @@ -43,12 +43,12 @@ linked_experiment_handler.announce_message("Incorrect object for experiment.") return FALSE - RegisterSignal(currently_scanned_atom, COMSIG_ARCADE_PRIZEVEND, PROC_REF(win_arcade)) + RegisterSignal(currently_scanned_atom, COMSIG_ARCADE_VICTORY, PROC_REF(win_arcade)) linked_experiment_handler.announce_message("Experiment ready to start.") return TRUE /datum/experiment/physical/arcade_winner/unregister_events() - UnregisterSignal(currently_scanned_atom, COMSIG_ARCADE_PRIZEVEND) + UnregisterSignal(currently_scanned_atom, COMSIG_ARCADE_VICTORY) /datum/experiment/physical/arcade_winner/check_progress() . += EXPERIMENT_PROG_BOOL("Win an arcade game at a tracked arcade cabinet.", is_complete()) diff --git a/code/modules/fishing/fish/types/rift.dm b/code/modules/fishing/fish/types/rift.dm index eb72c82ac44..ba6a0142ed4 100644 --- a/code/modules/fishing/fish/types/rift.dm +++ b/code/modules/fishing/fish/types/rift.dm @@ -722,12 +722,7 @@ icon_state = "babbearfish" /datum/bodypart_overlay/simple/babbearfish/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if((human.head?.flags_inv & HIDEEARS) || (human.wear_mask?.flags_inv & HIDEEARS)) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDEEARS) /obj/item/organ/ears/babbelfish/Initialize(mapload) . = ..() diff --git a/code/modules/fishing/sources/subtypes/surgery.dm b/code/modules/fishing/sources/subtypes/surgery.dm index 3beaa1d2fd9..0ee2b06d856 100644 --- a/code/modules/fishing/sources/subtypes/surgery.dm +++ b/code/modules/fishing/sources/subtypes/surgery.dm @@ -12,9 +12,13 @@ wait_time_range = list(6 SECONDS, 12 SECONDS) /datum/fish_source/surgery/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot, obj/item/fishing_rod/used_rod) + if(reward_path != FISHING_RANDOM_ORGAN) + return ..() + if(istype(fishing_spot, /obj/machinery/fishing_portal_generator)) var/obj/machinery/fishing_portal_generator/portal = fishing_spot fishing_spot = portal.current_linked_atom + if(!iscarbon(fishing_spot)) var/random_type = pick(subtypesof(/obj/item/organ) - GLOB.prototype_organs) return new random_type(spawn_location) diff --git a/code/modules/food_and_drinks/machinery/coffeemaker.dm b/code/modules/food_and_drinks/machinery/coffeemaker.dm index bec5801646e..d2933e0f901 100644 --- a/code/modules/food_and_drinks/machinery/coffeemaker.dm +++ b/code/modules/food_and_drinks/machinery/coffeemaker.dm @@ -160,11 +160,22 @@ /obj/machinery/coffeemaker/proc/replace_pot(mob/living/user, obj/item/reagent_containers/cup/coffeepot/new_coffeepot) if(!user) return FALSE - if(coffeepot) + + // If we're trying to eject/remove the current pot + if(!new_coffeepot) + if(!coffeepot) + balloon_alert(user, "no coffeepot to remove!") + return FALSE try_put_in_hand(coffeepot, user) - if(new_coffeepot) + balloon_alert(user, "coffeepot returned") + coffeepot = null + else + // If we're replacing with a new pot + if(coffeepot) + try_put_in_hand(coffeepot, user) coffeepot = new_coffeepot - balloon_alert(user, "replaced pot") + balloon_alert(user, "coffeepot inserted") + update_appearance(UPDATE_OVERLAYS) return TRUE @@ -183,90 +194,92 @@ default_unfasten_wrench(user, tool) return ITEM_INTERACT_SUCCESS -/obj/machinery/coffeemaker/attackby(obj/item/attack_item, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/machinery/coffeemaker/item_interaction(mob/living/user, obj/item/tool, list/modifiers) //You can only screw open empty grinder - if(!coffeepot && default_deconstruction_screwdriver(user, icon_state, icon_state, attack_item)) - return FALSE + if(!coffeepot && default_deconstruction_screwdriver(user, icon_state, icon_state, tool)) + return ITEM_INTERACT_SUCCESS - if(default_deconstruction_crowbar(attack_item)) - return + if(default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS if(panel_open) //Can't insert objects when its screwed open - return TRUE + return ITEM_INTERACT_BLOCKING - if (istype(attack_item, /obj/item/reagent_containers/cup/coffeepot) && !(attack_item.item_flags & ABSTRACT) && attack_item.is_open_container()) - var/obj/item/reagent_containers/cup/coffeepot/new_pot = attack_item - . = TRUE //no afterattack + if (istype(tool, /obj/item/reagent_containers/cup/coffeepot) && !(tool.item_flags & ABSTRACT) && tool.is_open_container()) + var/obj/item/reagent_containers/cup/coffeepot/new_pot = tool + . = ITEM_INTERACT_SUCCESS //no afterattack if(!user.transferItemToLoc(new_pot, src)) - return TRUE + return ITEM_INTERACT_BLOCKING replace_pot(user, new_pot) update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/reagent_containers/cup/glass/coffee_cup) && !(attack_item.item_flags & ABSTRACT) && attack_item.is_open_container()) - var/obj/item/reagent_containers/cup/glass/coffee_cup/new_cup = attack_item + if (istype(tool, /obj/item/reagent_containers/cup/glass/coffee_cup) && !(tool.item_flags & ABSTRACT) && tool.is_open_container()) + var/obj/item/reagent_containers/cup/glass/coffee_cup/new_cup = tool if(new_cup.reagents.total_volume > 0) balloon_alert(user, "the cup must be empty!") - return + return ITEM_INTERACT_BLOCKING if(coffee_cups >= max_coffee_cups) balloon_alert(user, "the cup holder is full!") - return - if(!user.transferItemToLoc(attack_item, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING coffee_cups++ update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/reagent_containers/condiment/pack/sugar)) - var/obj/item/reagent_containers/condiment/pack/sugar/new_pack = attack_item + if (istype(tool, /obj/item/reagent_containers/condiment/pack/sugar)) + var/obj/item/reagent_containers/condiment/pack/sugar/new_pack = tool if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) balloon_alert(user, "the pack must be full!") - return + return ITEM_INTERACT_BLOCKING if(sugar_packs >= max_sugar_packs) balloon_alert(user, "the sugar compartment is full!") - return - if(!user.transferItemToLoc(attack_item, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING sugar_packs++ update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/reagent_containers/condiment/creamer)) - var/obj/item/reagent_containers/condiment/creamer/new_pack = attack_item + if (istype(tool, /obj/item/reagent_containers/condiment/creamer)) + var/obj/item/reagent_containers/condiment/creamer/new_pack = tool if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) balloon_alert(user, "the pack must be full!") - return + return ITEM_INTERACT_BLOCKING if(creamer_packs >= max_creamer_packs) balloon_alert(user, "the creamer compartment is full!") - return - if(!user.transferItemToLoc(attack_item, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING creamer_packs++ update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/reagent_containers/condiment/pack/astrotame)) - var/obj/item/reagent_containers/condiment/pack/astrotame/new_pack = attack_item + if (istype(tool, /obj/item/reagent_containers/condiment/pack/astrotame)) + var/obj/item/reagent_containers/condiment/pack/astrotame/new_pack = tool if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) balloon_alert(user, "the pack must be full!") - return + return ITEM_INTERACT_BLOCKING else if(sweetener_packs >= max_sweetener_packs) balloon_alert(user, "the sweetener compartment is full!") - return - else if(!user.transferItemToLoc(attack_item, src)) - return + return ITEM_INTERACT_BLOCKING + else if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING sweetener_packs++ update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/coffee_cartridge) && !(attack_item.item_flags & ABSTRACT)) - var/obj/item/coffee_cartridge/new_cartridge = attack_item + if (istype(tool, /obj/item/coffee_cartridge) && !(tool.item_flags & ABSTRACT)) + var/obj/item/coffee_cartridge/new_cartridge = tool if(!user.transferItemToLoc(new_cartridge, src)) - return + return ITEM_INTERACT_BLOCKING replace_cartridge(user, new_cartridge) balloon_alert(user, "added cartridge") update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack + + return NONE // Allow normal attack processing if no special interaction occurred /obj/machinery/coffeemaker/proc/try_brew() if(!cartridge) @@ -582,101 +595,102 @@ return FALSE return TRUE -/obj/machinery/coffeemaker/impressa/attackby(obj/item/attack_item, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/machinery/coffeemaker/impressa/item_interaction(mob/living/user, obj/item/tool, list/modifiers) //You can only screw open empty grinder - if(!coffeepot && default_deconstruction_screwdriver(user, icon_state, icon_state, attack_item)) - return + if(!coffeepot && default_deconstruction_screwdriver(user, icon_state, icon_state, tool)) + return ITEM_INTERACT_SUCCESS - if(default_deconstruction_crowbar(attack_item)) - return + if(default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS if(panel_open) //Can't insert objects when its screwed open - return TRUE + return ITEM_INTERACT_BLOCKING - if (istype(attack_item, /obj/item/reagent_containers/cup/coffeepot) && !(attack_item.item_flags & ABSTRACT) && attack_item.is_open_container()) - var/obj/item/reagent_containers/cup/coffeepot/new_pot = attack_item + if (istype(tool, /obj/item/reagent_containers/cup/coffeepot) && !(tool.item_flags & ABSTRACT) && tool.is_open_container()) + var/obj/item/reagent_containers/cup/coffeepot/new_pot = tool if(!user.transferItemToLoc(new_pot, src)) - return TRUE + return ITEM_INTERACT_BLOCKING replace_pot(user, new_pot) update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/reagent_containers/cup/glass/coffee) && !(attack_item.item_flags & ABSTRACT) && attack_item.is_open_container()) - var/obj/item/reagent_containers/cup/glass/coffee/new_cup = attack_item //different type of cup + if (istype(tool, /obj/item/reagent_containers/cup/glass/coffee) && !(tool.item_flags & ABSTRACT) && tool.is_open_container()) + var/obj/item/reagent_containers/cup/glass/coffee/new_cup = tool //different type of cup if(new_cup.reagents.total_volume > 0 ) balloon_alert(user, "the cup must be empty!") - return + return ITEM_INTERACT_BLOCKING if(coffee_cups >= max_coffee_cups) balloon_alert(user, "the cup holder is full!") - return - if(!user.transferItemToLoc(attack_item, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING coffee_cups++ update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/reagent_containers/condiment/pack/sugar)) - var/obj/item/reagent_containers/condiment/pack/sugar/new_pack = attack_item + if (istype(tool, /obj/item/reagent_containers/condiment/pack/sugar)) + var/obj/item/reagent_containers/condiment/pack/sugar/new_pack = tool if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) balloon_alert(user, "the pack must be full!") - return + return ITEM_INTERACT_BLOCKING if(sugar_packs >= max_sugar_packs) balloon_alert(user, "the sugar compartment is full!") - return - if(!user.transferItemToLoc(attack_item, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING sugar_packs++ update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/reagent_containers/condiment/creamer)) - var/obj/item/reagent_containers/condiment/creamer/new_pack = attack_item + if (istype(tool, /obj/item/reagent_containers/condiment/creamer)) + var/obj/item/reagent_containers/condiment/creamer/new_pack = tool if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) balloon_alert(user, "the pack must be full!") - return + return ITEM_INTERACT_BLOCKING if(creamer_packs >= max_creamer_packs) balloon_alert(user, "the creamer compartment is full!") - return - if(!user.transferItemToLoc(attack_item, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING creamer_packs++ update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/reagent_containers/condiment/pack/astrotame)) - var/obj/item/reagent_containers/condiment/pack/astrotame/new_pack = attack_item + if (istype(tool, /obj/item/reagent_containers/condiment/pack/astrotame)) + var/obj/item/reagent_containers/condiment/pack/astrotame/new_pack = tool if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) balloon_alert(user, "the pack must be full!") - return + return ITEM_INTERACT_BLOCKING if(sweetener_packs >= max_sweetener_packs) balloon_alert(user, "the sweetener compartment is full!") - return - if(!user.transferItemToLoc(attack_item, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING sweetener_packs++ update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return ITEM_INTERACT_SUCCESS //no afterattack - if (istype(attack_item, /obj/item/food/grown/coffee) && !(attack_item.item_flags & ABSTRACT)) + if (istype(tool, /obj/item/food/grown/coffee) && !(tool.item_flags & ABSTRACT)) if(coffee_amount >= BEAN_CAPACITY) balloon_alert(user, "the coffee container is full!") - return - if(!HAS_TRAIT(attack_item, TRAIT_DRIED)) + return ITEM_INTERACT_BLOCKING + if(!HAS_TRAIT(tool, TRAIT_DRIED)) balloon_alert(user, "coffee beans must be dry!") - return - var/obj/item/food/grown/coffee/new_coffee = attack_item + return ITEM_INTERACT_BLOCKING + var/obj/item/food/grown/coffee/new_coffee = tool if(!user.transferItemToLoc(new_coffee, src)) - return + return ITEM_INTERACT_BLOCKING coffee += new_coffee coffee_amount++ balloon_alert(user, "added coffee") + update_appearance(UPDATE_OVERLAYS) + return ITEM_INTERACT_SUCCESS //no afterattack - - if (istype(attack_item, /obj/item/storage/box/coffeepack)) + if (istype(tool, /obj/item/storage/box/coffeepack)) if(coffee_amount >= BEAN_CAPACITY) balloon_alert(user, "the coffee container is full!") - return - var/obj/item/storage/box/coffeepack/new_coffee_pack = attack_item + return ITEM_INTERACT_BLOCKING + var/obj/item/storage/box/coffeepack/new_coffee_pack = tool for(var/obj/item/food/grown/coffee/new_coffee in new_coffee_pack.contents) if(HAS_TRAIT(new_coffee, TRAIT_DRIED)) //the coffee beans inside must be dry if(coffee_amount < BEAN_CAPACITY) @@ -687,15 +701,16 @@ balloon_alert(user, "added coffee") update_appearance(UPDATE_OVERLAYS) else - return + return ITEM_INTERACT_BLOCKING else - return + return ITEM_INTERACT_BLOCKING else balloon_alert(user, "non-dried beans inside of coffee pack!") - return + return ITEM_INTERACT_BLOCKING + update_appearance(UPDATE_OVERLAYS) + return ITEM_INTERACT_SUCCESS //no afterattack - update_appearance(UPDATE_OVERLAYS) - return TRUE //no afterattack + return NONE // Allow normal attack processing if no special interaction occurred /obj/machinery/coffeemaker/impressa/take_cup(mob/user) if(!coffee_cups) //shouldn't happen, but we all know how stuff manages to break diff --git a/code/modules/food_and_drinks/machinery/griddle.dm b/code/modules/food_and_drinks/machinery/griddle.dm index f5ff1c140e8..5d0beed7ee0 100644 --- a/code/modules/food_and_drinks/machinery/griddle.dm +++ b/code/modules/food_and_drinks/machinery/griddle.dm @@ -57,11 +57,6 @@ visible_message(span_notice("[exposing_reagent] begins to cook on [src].")) return NONE -/obj/machinery/griddle/crowbar_act(mob/living/user, obj/item/I) - . = ..() - return default_deconstruction_crowbar(I, ignore_panel = TRUE) - - /obj/machinery/griddle/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) if(griddled_objects.len >= max_items) diff --git a/code/modules/food_and_drinks/machinery/oven.dm b/code/modules/food_and_drinks/machinery/oven.dm index 7b4ccb76280..a0d0ebad417 100644 --- a/code/modules/food_and_drinks/machinery/oven.dm +++ b/code/modules/food_and_drinks/machinery/oven.dm @@ -270,6 +270,9 @@ return ITEM_INTERACT_SUCCESS /obj/item/plate/oven_tray/item_interaction(mob/living/user, obj/item/item, list/modifiers) + . = ..() + if(. & ITEM_INTERACT_ANY_BLOCKER) + return . if(isnull(item.atom_storage)) return NONE diff --git a/code/modules/food_and_drinks/plate.dm b/code/modules/food_and_drinks/plate.dm index 243d4f0ef14..600313c8383 100644 --- a/code/modules/food_and_drinks/plate.dm +++ b/code/modules/food_and_drinks/plate.dm @@ -24,26 +24,26 @@ if(fragile) AddElement(/datum/element/can_shatter) -/obj/item/plate/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(!IS_EDIBLE(I)) +/obj/item/plate/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!IS_EDIBLE(tool)) balloon_alert(user, "not food!") - return - if(I.w_class > biggest_w_class) + return ITEM_INTERACT_BLOCKING + if(tool.w_class > biggest_w_class) balloon_alert(user, "too big!") - return + return ITEM_INTERACT_BLOCKING if(contents.len >= max_items) balloon_alert(user, "can't fit!") - return + return ITEM_INTERACT_BLOCKING //Center the icon where the user clicked. if(!LAZYACCESS(modifiers, ICON_X) || !LAZYACCESS(modifiers, ICON_Y)) - return - if(user.transferItemToLoc(I, src, silent = FALSE)) - I.pixel_x = clamp(text2num(LAZYACCESS(modifiers, ICON_X)) - 16, -max_x_offset, max_x_offset) - I.pixel_y = min(text2num(LAZYACCESS(modifiers, ICON_Y)) + placement_offset, max_height_offset) - to_chat(user, span_notice("You place [I] on [src].")) - AddToPlate(I, user) - else - return ..() + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src, silent = FALSE)) + return ITEM_INTERACT_BLOCKING + tool.pixel_x = clamp(text2num(LAZYACCESS(modifiers, ICON_X)) - 16, -max_x_offset, max_x_offset) + tool.pixel_y = min(text2num(LAZYACCESS(modifiers, ICON_Y)) + placement_offset, max_height_offset) + to_chat(user, span_notice("You place [tool] on [src].")) + AddToPlate(tool, user) + return ITEM_INTERACT_SUCCESS /obj/item/plate/pre_attack(atom/target, mob/living/user, list/modifiers, list/attack_modifiers) if(!iscarbon(target)) diff --git a/code/modules/forensics/forensics_helpers.dm b/code/modules/forensics/forensics_helpers.dm index 46c0bfa3a9d..5b32ee43418 100644 --- a/code/modules/forensics/forensics_helpers.dm +++ b/code/modules/forensics/forensics_helpers.dm @@ -200,7 +200,7 @@ var/dirty_hands = !!(target_flags & (ITEM_SLOT_GLOVES|ITEM_SLOT_HANDS)) var/dirty_feet = !!(target_flags & ITEM_SLOT_FEET) - var/slots_to_bloody = target_flags & ~check_covered_slots() + var/slots_to_bloody = target_flags & ~hidden_slots_to_inventory_slots(covered_slots) var/list/all_worn = get_equipped_items() for(var/obj/item/thing as anything in all_worn) if(thing.slot_flags & slots_to_bloody) diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 40a84d9c8ff..d15e9664854 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -19,6 +19,19 @@ mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/poppy/lily) reagents_add = list(/datum/reagent/medicine/c2/libital = 0.2, /datum/reagent/consumable/nutriment = 0.05) +/obj/item/seeds/poppy/interact_with_atom(obj/item/I, mob/user, obj/machinery/hydroponics/tray) + if(I.sharpness && !src.extracted && tray.age >= 10 && tray.age <= 19) + src.extracted = TRUE + var/seed_yield = tray.myseed?.potency + new /obj/item/food/drug/opium/raw(get_turf(src), seed_yield) + playsound(src, 'sound/effects/bubbles/bubbles.ogg', 30, TRUE) + playsound(loc, 'sound/items/weapons/bladeslice.ogg', 30, TRUE) + user.visible_message( + span_notice("You carefully slice the poppy's pod, collecting the fragrant, alluring sap.") + ) + return ITEM_INTERACT_SUCCESS + return NONE + /obj/item/food/grown/poppy seed = /obj/item/seeds/poppy name = "poppy" diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index ffa6f596711..3f2d31bca35 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -938,6 +938,12 @@ to_chat(user, span_warning("This plot is completely devoid of weeds! It doesn't need uprooting.")) return + else if(O.sharpness) // Allows for the extraction (for opium or sap) interaction if a seed has it. + if(myseed && !myseed.extracted) + myseed.interact_with_atom(O, user, src) + else + return ..() + else if(istype(O, /obj/item/secateurs)) if(!myseed) to_chat(user, span_notice("This plot is empty.")) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index d5398035711..d0360769cee 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -63,6 +63,8 @@ var/graft_gene ///Determines if the plant should be allowed to mutate early at 30+ instability. var/seed_flags = MUTATE_EARLY + ///Determines if the plant has been sliced with a sharp tool to extract substances like saps. + var/extracted = 0 /obj/item/seeds/Initialize(mapload, nogenes = FALSE) . = ..() diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index 4ba145c7428..4cff930e11d 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -69,6 +69,8 @@ backpack_contents = list( /obj/item/melee/baton/telescopic/silver = 1, // /obj/item/construction/rcd/ce = 1, // BUBBER EDIT -> MOVED TO LOCKER + /obj/item/extinguisher/mini = 1, + /obj/item/analyzer = 1, ) belt = /obj/item/storage/belt/utility/chief/full ears = /obj/item/radio/headset/heads/ce diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index 1efcf71676e..e5a323d0725 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -1008,27 +1008,61 @@ GLOBAL_LIST_EMPTY(map_model_default) var/old_position = 1 while(position != 0) // find next delimiter that is not within "..." - position = find_next_delimiter_position(text,old_position,delimiter) + position = find_next_delimiter_position(text, old_position, delimiter) // check if this is a simple variable (as in list(var1, var2)) or an associative one (as in list(var1="foo",var2=7)) - var/equal_position = findtext(text,"=",old_position, position) - var/trim_left = trim(copytext(text,old_position,(equal_position ? equal_position : position))) - var/left_constant = parse_constant(trim_left) - if(position) - old_position = position + length(text[position]) - if(!left_constant) // damn newlines man. Exists to provide behavior consistency with the above loop. not a major cost becuase this path is cold + var/equal_position = find_next_delimiter_position(text, old_position, "=") + var/trim_left = trim(copytext(text, old_position, (equal_position ? equal_position : position))) + if(!trim_left) // damn newlines man. Exists to provide behavior consistency with the above loop. not a major cost becuase this path is cold + if(position) + old_position = position + length(text[position]) continue - if(equal_position && !isnum(left_constant)) + var/is_simple = TRUE //linear list + var/trim_right = trim_left //simple var + if(equal_position) // Associative var, so do the association. // Note that numbers cannot be keys - the RHS is dropped if so. - var/trim_right = trim(copytext(text, equal_position + length(text[equal_position]), position)) - var/right_constant = parse_constant(trim_right) - .[left_constant] = right_constant - else // simple var + trim_right = trim(copytext(text, equal_position + length(text[equal_position]), position)) + is_simple = FALSE + + //right value is a list and since we used the delimiter , this text would be incomplete so we need to parse the full string + if(copytext(trim_right, 1, 6) == "list(") + var/start_index = is_simple ? old_position : equal_position + length(text[equal_position]) + var/opening_count = 0 + var/closing_count = 0 + var/index = start_index + var/begin = FALSE + while(!begin || (opening_count != closing_count)) + var/char = text[index] + if(char == "(") + opening_count += 1 + begin = TRUE + else if(char == ")") + closing_count += 1 + index += length(char) + trim_right = trim(copytext(text, start_index, index)) + if(is_simple) + trim_left = trim_right + if(index >= length(text)) //stops a wasteful iteration when we reach the end + position = 0 + else + old_position = index + length(text[index]) //this moves our pointer past , to the next element + else if(position) + old_position = position + length(text[position]) + + //assign value + var/left_constant = parse_constant(trim_left) + if(is_simple) . += list(left_constant) + else + .[left_constant] = parse_constant(trim_right) /datum/parsed_map/proc/parse_constant(text) + // empty text + if(!text) + return "" + // number var/num = text2num(text) if(isnum(num)) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index d05370b273f..8738752af33 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -62,31 +62,30 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) if(thing.anchored) return NONE - . = ITEM_INTERACT_BLOCKING var/obj/structure/extraction_point/beacon = beacon_ref?.resolve() if(isnull(beacon)) balloon_alert(user, "not linked!") beacon_ref = null - return . + return ITEM_INTERACT_BLOCKING var/area/area = get_area(thing) if(!can_use_indoors) if(!area.outdoors) balloon_alert(user, "not outdoors!") - return . + return ITEM_INTERACT_BLOCKING if(area.area_flags & NOTELEPORT) balloon_alert(user, "unable to activate!") - return + return ITEM_INTERACT_BLOCKING var/area/target_area = get_area(beacon) if(area != target_area && ((area.area_flags & LOCAL_TELEPORT) || (target_area.area_flags & LOCAL_TELEPORT))) balloon_alert(user, "unable to activate!") - return + return ITEM_INTERACT_BLOCKING if(!safe_for_living_creatures && check_for_living_mobs(thing)) to_chat(user, span_warning("[src] is not safe for use with living creatures, they wouldn't survive the trip back!")) balloon_alert(user, "not safe!") - return . + return ITEM_INTERACT_BLOCKING if(thing.move_resist > max_force_fulton) balloon_alert(user, "too heavy!") - return . + return ITEM_INTERACT_BLOCKING balloon_alert_to_viewers("attaching...") playsound(thing, 'sound/items/zip/zip.ogg', vol = 50, vary = TRUE) if(isliving(thing)) @@ -95,7 +94,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) to_chat(thing, span_userdanger("You are being extracted! Stand still to proceed.")) if(!do_after(user, 5 SECONDS, target = thing)) - return . + return ITEM_INTERACT_BLOCKING balloon_alert_to_viewers("extracting!") if(loc == user && ishuman(user)) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index c6b9d1a0484..1c0c7315150 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -170,13 +170,13 @@ //smelting the ore for(var/obj/item/stack/ore/gathered_ore as anything in ore_list) - if(isnull(gathered_ore.refined_type)) + var/obj/item/smelted_ore = gathered_ore.on_orm_collection(src) + if(isnull(smelted_ore)) continue - if(materials.insert_item(gathered_ore, ore_multiplier) <= 0) - unload_mineral(gathered_ore) //if rejected unload + if(materials.insert_item(smelted_ore, ore_multiplier) <= 0) + unload_mineral(smelted_ore) //if rejected unload - SEND_SIGNAL(src, COMSIG_ORM_COLLECTED_ORE) if(!console_notify_timer) // gives 5 seconds for a load of ores to be sucked up by the ORM before it sends out request console notifications. This should be enough time for most deposits that people make diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm index 743f3eec6f7..82b87421d29 100644 --- a/code/modules/mining/machine_silo.dm +++ b/code/modules/mining/machine_silo.dm @@ -33,8 +33,8 @@ interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN|INTERACT_MACHINE_ALLOW_SILICON|INTERACT_MACHINE_OPEN_SILICON processing_flags = NONE - /// By default, an ore silo requires you to be wearing an ID to pull materials from it. - var/ID_required = TRUE + /// Only the station loaded ore silo starts out with ID restrictions, else its optional + var/ID_required = FALSE /// List of all connected components that are on hold from accessing materials. var/list/holds = list() /// List of all components that are sharing ores with this silo. @@ -52,6 +52,7 @@ RADIO_CHANNEL_SUPPLY = NONE, RADIO_CHANNEL_SECURITY = NONE, ) + ///List of announcement messages for silo restrictions var/static/alist/announcement_messages = alist( BAN_ATTEMPT_FAILURE_NO_ACCESS = "ACCESS ENFORCEMENT FAILURE: $SILO_USER_NAME lacks supply command authority.", BAN_ATTEMPT_FAILURE_CHALLENGING_DA_CHIEF = "ACCESS ENFORCEMENT FAILURE: $SILO_USER_NAME attempting subversion of supply command authority.", @@ -69,6 +70,7 @@ /obj/machinery/ore_silo/Initialize(mapload) . = ..() + materials = AddComponent( \ /datum/component/material_container, \ SSmaterials.materials_by_category[MAT_CATEGORY_SILO], \ @@ -80,12 +82,28 @@ ), \ allowed_items = /obj/item/stack \ ) + if (!GLOB.ore_silo_default && mapload && is_station_level(z)) GLOB.ore_silo_default = src + ID_required = TRUE + register_context() setup_radio() configure_default_announcements_policy() +/obj/machinery/ore_silo/Destroy() + if (GLOB.ore_silo_default == src) + GLOB.ore_silo_default = null + + for(var/datum/component/remote_materials/mats as anything in ore_connected_machines) + mats.disconnect() + + ore_connected_machines = null + materials = null + QDEL_NULL(radio) + + return ..() + /obj/machinery/ore_silo/emag_act(mob/living/user) if(obj_flags & EMAGGED) return FALSE @@ -104,19 +122,6 @@ radio.keyslot.channels[RADIO_CHANNEL_SECURITY] = TRUE radio.recalculateChannels() -/obj/machinery/ore_silo/Destroy() - if (GLOB.ore_silo_default == src) - GLOB.ore_silo_default = null - - for(var/datum/component/remote_materials/mats as anything in ore_connected_machines) - mats.disconnect() - - ore_connected_machines = null - materials = null - QDEL_NULL(radio) - - return ..() - /obj/machinery/ore_silo/examine(mob/user) . = ..() . += span_notice("It can be linked to techfabs, circuit printers and protolathes with a multitool.") @@ -330,11 +335,12 @@ if("toggle_ban") var/list/banned_user_data = params["user_data"] - attempt_ban_toggle(usr, banned_user_data) + attempt_ban_toggle(ui.user, banned_user_data) return TRUE if("toggle_restrict") - attempt_toggle_restrict(usr) + attempt_toggle_restrict(ui.user) + return TRUE /** * Called from the ore silo's UI, when someone attempts to (un)ban a user from using the ore silo. * The person doing the banning should have at least QM access. Unless this is emagged. Not modifiable by silicons unless emagged. @@ -558,6 +564,7 @@ var/amount ///List of individual materials used in the action var/list/materials + ///User data of the player doing material operations var/alist/user_data /datum/ore_silo_log/New(obj/machinery/M, _action, _amount, _noun, list/mats=list(), alist/user_data) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 599f446017d..0e852e6e374 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -43,6 +43,16 @@ if(stack_overlays) . += stack_overlays +/** + * Called when the ore is collected by an ore redemption machine. returns the ore itself. + * Normally, ores without a refined type aren't collected by the orm. + * It can also be overriden for more specific behavior (for example, sand is smelted into glass beforehand because of different mats). + */ +/obj/item/stack/ore/proc/on_orm_collection() + if(isnull(refined_type)) + return null + return src + /obj/item/stack/ore/welder_act(mob/living/user, obj/item/I) ..() if(!refined_type) @@ -98,7 +108,7 @@ icon_state = "glass" singular_name = "sand pile" points = 1 - mats_per_unit = list(/datum/material/glass=SHEET_MATERIAL_AMOUNT) + mats_per_unit = list(/datum/material/sand = SHEET_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/glass w_class = WEIGHT_CLASS_TINY mine_experience = 0 //its sand @@ -114,6 +124,11 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ . = ..() AddComponent(/datum/component/storm_hating) +/obj/item/stack/ore/glass/on_orm_collection() //we need to smelt the glass beforehand because the silo and orm don't accept sand mats + var/obj/item/stack/sheet/glass = new refined_type(drop_location(), amount) + qdel(src) + return glass + /obj/item/stack/ore/glass/get_main_recipes() . = ..() . += GLOB.sand_recipes @@ -138,6 +153,9 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ return FALSE +/obj/item/stack/ore/glass/thirty + amount = 30 + /obj/item/stack/ore/glass/basalt name = "volcanic ash" icon_state = "volcanic_sand" diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 97f59437f8f..94dfa1ce0eb 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -295,10 +295,7 @@ location = turf break - I.forceMove(location) - I.layer = initial(I.layer) - SET_PLANE_EXPLICIT(I, initial(I.plane), location) - I.dropped(src) + transferItemToLoc(I, location, force = TRUE, silent = TRUE, animated = !ignore_animation) return FALSE /// Returns true if a mob is holding something @@ -424,13 +421,10 @@ if(!item_dropping) return FALSE - if(client) - client.screen -= item_dropping + client?.screen -= item_dropping - if(observers?.len) - for(var/mob/dead/observe as anything in observers) - if(observe.client) - observe.client.screen -= item_dropping + for(var/mob/dead/observe as anything in observers) + observe.client?.screen -= item_dropping item_dropping.layer = initial(item_dropping.layer) SET_PLANE_EXPLICIT(item_dropping, initial(item_dropping.plane), newloc) @@ -441,7 +435,7 @@ else item_dropping.forceMove(newloc) - item_dropping.dropped(src, silent) + has_unequipped(item_dropping, silent) SEND_SIGNAL(item_dropping, COMSIG_ITEM_POST_UNEQUIP, force, newloc, no_move, invdrop, silent) SEND_SIGNAL(src, COMSIG_MOB_UNEQUIPPED_ITEM, item_dropping, force, newloc, no_move, invdrop, silent) return TRUE @@ -521,8 +515,15 @@ /// This proc is called after an item has been successfully handled and equipped to a slot. /mob/proc/has_equipped(obj/item/item, slot, initial = FALSE) + SHOULD_CALL_PARENT(TRUE) return item.on_equipped(src, slot, initial) +/// This proc is called after an item has been removed from a mob but before it has been officially deslotted. +/mob/proc/has_unequipped(obj/item/item, silent = FALSE) + SHOULD_CALL_PARENT(TRUE) + item.dropped(src, silent) + return TRUE + /** * Equip an item to the slot or delete * diff --git a/code/modules/mob/living/basic/cytology/vatbeast.dm b/code/modules/mob/living/basic/cytology/vatbeast.dm index 0075061cda1..d9d1c364802 100644 --- a/code/modules/mob/living/basic/cytology/vatbeast.dm +++ b/code/modules/mob/living/basic/cytology/vatbeast.dm @@ -15,6 +15,7 @@ damage_coeff = list(BRUTE = 0.7, BURN = 0.7, TOX = 1, STAMINA = 1, OXY = 1) melee_damage_lower = 25 melee_damage_upper = 25 + melee_attack_cooldown = CLICK_CD_MELEE obj_damage = 40 unsuitable_atmos_damage = 0 attack_sound = 'sound/items/weapons/punch3.ogg' diff --git a/code/modules/mob/living/basic/drone/visuals_icons.dm b/code/modules/mob/living/basic/drone/visuals_icons.dm index fb89e82c8a1..59952d8d249 100644 --- a/code/modules/mob/living/basic/drone/visuals_icons.dm +++ b/code/modules/mob/living/basic/drone/visuals_icons.dm @@ -27,7 +27,7 @@ client.screen += internal_storage -/mob/living/basic/drone/update_worn_head(update_obscured = TRUE) +/mob/living/basic/drone/update_worn_head() remove_overlay(DRONE_HEAD_LAYER) if(head) @@ -44,7 +44,7 @@ apply_overlay(DRONE_HEAD_LAYER) -/mob/living/basic/drone/update_worn_mask(update_obscured = TRUE) +/mob/living/basic/drone/update_worn_mask() update_worn_head() /mob/living/basic/drone/regenerate_icons() diff --git a/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid.dm b/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid.dm index bfbd222f89c..72c55a8eca3 100644 --- a/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid.dm +++ b/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid.dm @@ -10,6 +10,7 @@ mob_biotypes = MOB_ORGANIC|MOB_BUG melee_damage_lower = 30 melee_damage_upper = 30 + melee_attack_cooldown = CLICK_CD_MELEE maxHealth = 300 health = 300 diff --git a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm index a85f4cab814..32738c05434 100644 --- a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm +++ b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm @@ -127,6 +127,7 @@ obj_damage = 11 melee_damage_lower = 0 melee_damage_upper = 0 + melee_attack_cooldown = CLICK_CD_MELEE sharpness = NONE //it's made of butter armour_penetration = 0 response_harm_continuous = "takes a bite out of" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 7506a552aed..7786c20e67c 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -220,32 +220,10 @@ /mob/living/carbon/proc/uncuff() if (handcuffed) - var/obj/item/W = handcuffed - set_handcuffed(null) - if (buckled?.buckle_requires_restraints) - buckled.unbuckle_mob(src) - update_handcuffed() - if (client) - client.screen -= W - if (W) - W.forceMove(drop_location()) - W.dropped(src) - if (W) - W.layer = initial(W.layer) - SET_PLANE_EXPLICIT(W, initial(W.plane), src) + dropItemToGround(handcuffed, TRUE) changeNext_move(0) if (legcuffed) - var/obj/item/W = legcuffed - legcuffed = null - update_worn_legcuffs() - if (client) - client.screen -= W - if (W) - W.forceMove(drop_location()) - W.dropped(src) - if (W) - W.layer = initial(W.layer) - SET_PLANE_EXPLICIT(W, initial(W.plane), src) + dropItemToGround(legcuffed, TRUE) changeNext_move(0) /mob/living/carbon/proc/clear_cuffs(obj/item/I, cuff_break) @@ -263,18 +241,10 @@ else if(I == handcuffed) - handcuffed.forceMove(drop_location()) - set_handcuffed(null) - I.dropped(src) - if(buckled?.buckle_requires_restraints) - buckled.unbuckle_mob(src) - update_handcuffed() + dropItemToGround(I, TRUE) return TRUE if(I == legcuffed) - legcuffed.forceMove(drop_location()) - legcuffed = null - I.dropped(src) - update_worn_legcuffs() + dropItemToGround(I, TRUE) return TRUE /mob/living/carbon/proc/accident(obj/item/I) @@ -841,8 +811,6 @@ if(heal_flags & HEAL_RESTRAINTS) QDEL_NULL(handcuffed) QDEL_NULL(legcuffed) - set_handcuffed(null) - update_handcuffed() return ..() @@ -1141,7 +1109,7 @@ . |= held_thing.wash(clean_types) // Check and wash stuff that isn't covered - var/covered = check_covered_slots() + var/covered = hidden_slots_to_inventory_slots(covered_slots) for(var/obj/item/worn as anything in get_equipped_items()) var/slot = get_slot_by_item(worn) // Don't wash glasses if something other than them is covering our eyes @@ -1203,9 +1171,6 @@ scaries.fake = TRUE QDEL_NULL(phantom_wound) -/mob/living/carbon/is_face_visible() - return !(wear_mask?.flags_inv & HIDEFACE) && !(head?.flags_inv & HIDEFACE) - /// Returns whether or not the carbon should be able to be shocked /mob/living/carbon/proc/should_electrocute(power_source) if (ismecha(loc)) @@ -1249,7 +1214,7 @@ REMOVE_TRAIT(src, TRAIT_RESTRAINED, HANDCUFFED_TRAIT) else if(handcuffed) ADD_TRAIT(src, TRAIT_RESTRAINED, HANDCUFFED_TRAIT) - + update_handcuffed() /mob/living/carbon/on_lying_down(new_lying_angle) . = ..() diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 0349f56db5f..a461273d345 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -126,4 +126,9 @@ COOLDOWN_DECLARE(bleeding_message_cd) + /// Obscured hide flags (hideflags that can't be seen AND can't be interacted with) + var/obscured_slots = NONE + /// Covered hide flags (hideflags that can be seen, BUT can't be interacted with) + var/covered_slots = NONE + var/next_smell = 0 //SKYRAT EDIT ADDITION /// Cooldown for the next smell diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm index 3debfe68299..f2258a18e31 100644 --- a/code/modules/mob/living/carbon/carbon_update_icons.dm +++ b/code/modules/mob/living/carbon/carbon_update_icons.dm @@ -1,7 +1,3 @@ -/mob/living/carbon/update_obscured_slots(obscured_flags) - ..() - update_body() - /// Updates features and clothing attached to a specific limb with limb-specific offsets /mob/living/carbon/proc/update_features(feature_key) switch(feature_key) @@ -340,7 +336,7 @@ //SKYRAT EDIT REMOVAL BEGIN - CUSTOMIZATION (moved to modular) /* -/mob/living/carbon/update_worn_mask(update_obscured = TRUE) +/mob/living/carbon/update_worn_mask() remove_overlay(FACEMASK_LAYER) if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated @@ -351,15 +347,13 @@ inv.update_appearance() if(wear_mask) - if(update_obscured) - update_obscured_slots(wear_mask.flags_inv) - if(!(check_obscured_slots() & ITEM_SLOT_MASK)) + if(!(obscured_slots & HIDEMASK)) overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi') update_hud_wear_mask(wear_mask) apply_overlay(FACEMASK_LAYER) -/mob/living/carbon/update_worn_neck(update_obscured = TRUE) +/mob/living/carbon/update_worn_neck() remove_overlay(NECK_LAYER) if(client && hud_used?.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1]) @@ -367,9 +361,7 @@ inv.update_appearance() if(wear_neck) - if(update_obscured) - update_obscured_slots(wear_neck.flags_inv) - if(!(check_obscured_slots() & ITEM_SLOT_NECK)) + if(!(obscured_slots & HIDENECK)) overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(default_layer = NECK_LAYER, default_icon_file = 'icons/mob/clothing/neck.dmi') update_hud_neck(wear_neck) @@ -379,7 +371,7 @@ //SKYRAT EDIT REMOVAL BEGIN - TESHARI CLOTHES (moved to modular) /* -/mob/living/carbon/update_worn_back(update_obscured = TRUE) +/mob/living/carbon/update_worn_back() remove_overlay(BACK_LAYER) if(client && hud_used?.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1]) @@ -387,8 +379,6 @@ inv.update_appearance() if(back) - if(update_obscured) - update_obscured_slots(back.flags_inv) overlays_standing[BACK_LAYER] = back.build_worn_icon(default_layer = BACK_LAYER, default_icon_file = 'icons/mob/clothing/back.dmi') update_hud_back(back) @@ -396,12 +386,10 @@ */ //SKYRAT EDIT REMOVAL END -/mob/living/carbon/update_worn_legcuffs(update_obscured = TRUE) +/mob/living/carbon/update_worn_legcuffs() remove_overlay(LEGCUFF_LAYER) clear_alert("legcuffed") if(legcuffed) - if(update_obscured) - update_obscured_slots(legcuffed.flags_inv) overlays_standing[LEGCUFF_LAYER] = mutable_appearance('icons/mob/simple/mob.dmi', "legcuff1", -LEGCUFF_LAYER) apply_overlay(LEGCUFF_LAYER) throw_alert("legcuffed", /atom/movable/screen/alert/restrained/legcuffed, new_master = src.legcuffed) @@ -409,7 +397,7 @@ //SKYRAT EDIT REMOVAL BEGIN - CUSTOMIZATION (moved to modular) /* -/mob/living/carbon/update_worn_head(update_obscured = TRUE) +/mob/living/carbon/update_worn_head() remove_overlay(HEAD_LAYER) if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated @@ -420,9 +408,7 @@ inv.update_appearance() if(head) - if(update_obscured) - update_obscured_slots(head.flags_inv) - if(!(check_obscured_slots() & ITEM_SLOT_HEAD)) + if(!(obscured_slots & HIDEHEADGEAR)) overlays_standing[HEAD_LAYER] = head.build_worn_icon(default_layer = HEAD_LAYER, default_icon_file = 'icons/mob/clothing/head/default.dmi') update_hud_head(head) @@ -431,11 +417,9 @@ //SKYRAT EDIT REMOVAL END -/mob/living/carbon/update_worn_handcuffs(update_obscured = TRUE) +/mob/living/carbon/update_worn_handcuffs() remove_overlay(HANDCUFF_LAYER) if(handcuffed && !(handcuffed.item_flags & ABSTRACT)) //SKYRAT EDIT - ADDED !(handcuffed.item_flags & ABSTRACT) - if(update_obscured) - update_obscured_slots(handcuffed.flags_inv) var/mutable_appearance/handcuff_overlay = mutable_appearance('icons/mob/simple/mob.dmi', "handcuff1", -HANDCUFF_LAYER) if(handcuffed.blocks_emissive != EMISSIVE_BLOCK_NONE) handcuff_overlay.overlays += emissive_blocker(handcuff_overlay.icon, handcuff_overlay.icon_state, src, alpha = handcuff_overlay.alpha) diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 85ce343f3d3..376ab2f354e 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -419,15 +419,14 @@ /// Coolects examine information about the mob's clothing and equipment /mob/living/carbon/proc/get_clothing_examine_info(mob/living/user) . = list() - var/obscured = check_obscured_slots() var/t_He = p_They() var/t_His = p_Their() var/t_his = p_their() var/t_has = p_have() var/t_is = p_are() //head - if(head && !(obscured & ITEM_SLOT_HEAD) && !HAS_TRAIT(head, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] wearing [head.examine_title_worn(user)] on [t_his] head." + if(head && !(obscured_slots & HIDEHEADGEAR) && !HAS_TRAIT(head, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_is] wearing [head.examine_title(user)] on [t_his] head." //back if(back && !HAS_TRAIT(back, TRAIT_EXAMINE_SKIP)) . += "[t_He] [t_has] [back.examine_title_worn(user)] on [t_his] back." @@ -442,7 +441,7 @@ var/obj/item/corresponding_item = get_item_for_held_index(part.held_index) || part . += "[t_He] [t_has] a [corresponding_item.examine_title_worn(user)] in place of [t_his] [initial(part.plaintext_zone)]." // BUBBER EDIT CHANGE - ORIGINAL: . += "[t_He] [t_has] a [corresponding_item.examine_title(user)] in place of [t_his] [initial(part.plaintext_zone)]." //gloves - if(gloves && !(obscured & ITEM_SLOT_GLOVES) && !HAS_TRAIT(gloves, TRAIT_EXAMINE_SKIP)) + if(gloves && !(obscured_slots & HIDEGLOVES) && !HAS_TRAIT(gloves, TRAIT_EXAMINE_SKIP)) . += "[t_He] [t_has] [gloves.examine_title(user)] on [t_his] hands." else if(GET_ATOM_BLOOD_DECAL_LENGTH(src) && num_hands) var/list/blood_stains = GET_ATOM_BLOOD_DECALS(src) @@ -456,15 +455,15 @@ var/cables_or_cuffs = istype(handcuffed, /obj/item/restraints/handcuffs/cable) ? "restrained with cable" : "handcuffed" . += span_warning("[t_He] [t_is] [icon2html(handcuffed, user)] [cables_or_cuffs]!") //shoes - if(shoes && !(obscured & ITEM_SLOT_FEET) && !HAS_TRAIT(shoes, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] wearing [shoes.examine_title_worn(user)] on [t_his] feet." + if(shoes && !(obscured_slots & HIDESHOES) && !HAS_TRAIT(shoes, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_is] wearing [shoes.examine_title(user)] on [t_his] feet." //mask - if(wear_mask && !(obscured & ITEM_SLOT_MASK) && !HAS_TRAIT(wear_mask, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [wear_mask.examine_title_worn(user)] on [t_his] face." - if(wear_neck && !(obscured & ITEM_SLOT_NECK) && !HAS_TRAIT(wear_neck, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] wearing [wear_neck.examine_title_worn(user)] around [t_his] neck." + if(wear_mask && !(obscured_slots & HIDEMASK) && !HAS_TRAIT(wear_mask, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_has] [wear_mask.examine_title(user)] on [t_his] face." + if(wear_neck && !(obscured_slots & HIDENECK) && !HAS_TRAIT(wear_neck, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_is] wearing [wear_neck.examine_title(user)] around [t_his] neck." //eyes - if(!(obscured & ITEM_SLOT_EYES) ) + if(!(obscured_slots & HIDEEYES)) if(glasses && !HAS_TRAIT(glasses, TRAIT_EXAMINE_SKIP)) . += "[t_He] [t_has] [glasses.examine_title_worn(user)] covering [t_his] eyes." else if(HAS_TRAIT(src, TRAIT_UNNATURAL_RED_GLOWY_EYES)) @@ -472,15 +471,13 @@ else if(HAS_TRAIT(src, TRAIT_BLOODSHOT_EYES)) . += span_warning("[t_His] eyes are bloodshot!") //ears - if(ears && !(obscured & ITEM_SLOT_EARS) && !HAS_TRAIT(ears, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [ears.examine_title_worn(user)] on [t_his] ears." -// BUBBER EDIT END + if(ears && !(obscured_slots & HIDEEARS) && !HAS_TRAIT(ears, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_has] [ears.examine_title(user)] on [t_his] ears." // Yes there's a lot of copypasta here, we can improve this later when carbons are less dumb in general // BUBBER EDIT BEGIN - replaced examine_title with examine_title_worn across whole proc /mob/living/carbon/human/get_clothing_examine_info(mob/living/user) . = list() - var/obscured = check_obscured_slots() var/t_He = p_They() var/t_His = p_Their() var/t_his = p_their() @@ -488,7 +485,7 @@ var/t_is = p_are() //uniform - if(w_uniform && !(obscured & ITEM_SLOT_ICLOTHING) && !HAS_TRAIT(w_uniform, TRAIT_EXAMINE_SKIP)) + if(w_uniform && !(obscured_slots & HIDEJUMPSUIT) && !HAS_TRAIT(w_uniform, TRAIT_EXAMINE_SKIP)) //accessory var/accessory_message = "" if(istype(w_uniform, /obj/item/clothing/under)) @@ -499,16 +496,16 @@ . += "[t_He] [t_is] wearing [w_uniform.examine_title_worn(user)][accessory_message]." //head - if(head && !(obscured & ITEM_SLOT_HEAD) && !HAS_TRAIT(head, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] wearing [head.examine_title_worn(user)] on [t_his] head." + if(head && !(obscured_slots & HIDEHEADGEAR) && !HAS_TRAIT(head, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_is] wearing [head.examine_title(user)] on [t_his] head." //mask - if(wear_mask && !(obscured & ITEM_SLOT_MASK) && !HAS_TRAIT(wear_mask, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [wear_mask.examine_title_worn(user)] on [t_his] face." + if(wear_mask && !(obscured_slots & HIDEMASK) && !HAS_TRAIT(wear_mask, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_has] [wear_mask.examine_title(user)] on [t_his] face." //neck - if(wear_neck && !(obscured & ITEM_SLOT_NECK) && !HAS_TRAIT(wear_neck, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] wearing [wear_neck.examine_title_worn(user)] around [t_his] neck." + if(wear_neck && !(obscured_slots & HIDENECK) && !HAS_TRAIT(wear_neck, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_is] wearing [wear_neck.examine_title(user)] around [t_his] neck." //eyes - if(!(obscured & ITEM_SLOT_EYES) ) + if(!(obscured_slots & HIDEEYES)) if(glasses && !HAS_TRAIT(glasses, TRAIT_EXAMINE_SKIP)) . += "[t_He] [t_has] [glasses.examine_title_worn(user)] covering [t_his] eyes." else if(HAS_TRAIT(src, TRAIT_UNNATURAL_RED_GLOWY_EYES)) @@ -516,14 +513,14 @@ else if(HAS_TRAIT(src, TRAIT_BLOODSHOT_EYES)) . += span_warning("[t_His] eyes are bloodshot!") //ears - if(ears && !(obscured & ITEM_SLOT_EARS) && !HAS_TRAIT(ears, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [ears.examine_title_worn(user)] on [t_his] ears." + if(ears && !(obscured_slots & HIDEEARS) && !HAS_TRAIT(ears, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_has] [ears.examine_title(user)] on [t_his] ears." //suit/armor if(wear_suit && !HAS_TRAIT(wear_suit, TRAIT_EXAMINE_SKIP)) . += "[t_He] [t_is] wearing [wear_suit.examine_title_worn(user)]." //suit/armor storage - if(s_store && !(obscured & ITEM_SLOT_SUITSTORE) && !HAS_TRAIT(s_store, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] carrying [s_store.examine_title_worn(user)] on [t_his] [wear_suit.name]." + if(s_store && !(obscured_slots & HIDESUITSTORAGE) && !HAS_TRAIT(s_store, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_is] carrying [s_store.examine_title(user)] on [t_his] [wear_suit.name]." //back if(back && !HAS_TRAIT(back, TRAIT_EXAMINE_SKIP)) . += "[t_He] [t_has] [back.examine_title_worn(user)] on [t_his] back." @@ -547,7 +544,7 @@ var/obj/item/corresponding_item = get_item_for_held_index(part.held_index) || part . += "[t_He] [t_has] [corresponding_item.examine_title_worn(user)] in place of [t_his] [initial(part.plaintext_zone)]." // BUBBER EDIT CHANGE - ORIGINAL: . += "[t_He] [t_has] [corresponding_item.examine_title(user)] in place of [t_his] [initial(part.plaintext_zone)]." //gloves - if(gloves && !(obscured & ITEM_SLOT_GLOVES) && !HAS_TRAIT(gloves, TRAIT_EXAMINE_SKIP)) + if(gloves && !(obscured_slots & HIDEGLOVES) && !HAS_TRAIT(gloves, TRAIT_EXAMINE_SKIP)) . += "[t_He] [t_has] [gloves.examine_title(user)] on [t_his] hands." else if(GET_ATOM_BLOOD_DECAL_LENGTH(src) || blood_in_hands) if(num_hands) @@ -557,11 +554,11 @@ var/cables_or_cuffs = istype(handcuffed, /obj/item/restraints/handcuffs/cable) ? "restrained with cable" : "handcuffed" . += span_warning("[t_He] [t_is] [icon2html(handcuffed, user)] [cables_or_cuffs]!") //belt - if(belt && !(obscured & ITEM_SLOT_BELT) && !HAS_TRAIT(belt, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [belt.examine_title_worn(user)] about [t_his] waist." + if(belt && !(obscured_slots & HIDEBELT) && !HAS_TRAIT(belt, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_has] [belt.examine_title(user)] about [t_his] waist." //shoes - if(shoes && !(obscured & ITEM_SLOT_FEET) && !HAS_TRAIT(shoes, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] wearing [shoes.examine_title_worn(user)] on [t_his] feet." + if(shoes && !(obscured_slots & HIDESHOES) && !HAS_TRAIT(shoes, TRAIT_EXAMINE_SKIP)) + . += "[t_He] [t_is] wearing [shoes.examine_title(user)] on [t_his] feet." // BUBBER EDIT END /// Collects info displayed about any HUDs the user has when examining src @@ -641,7 +638,7 @@ /mob/living/carbon/human/examine_more(mob/user) . = ..() - if(istype(w_uniform, /obj/item/clothing/under) && !(check_obscured_slots() & ITEM_SLOT_ICLOTHING) && !HAS_TRAIT(w_uniform, TRAIT_EXAMINE_SKIP)) + if(istype(w_uniform, /obj/item/clothing/under) && !(obscured_slots & HIDEJUMPSUIT) && !HAS_TRAIT(w_uniform, TRAIT_EXAMINE_SKIP)) var/obj/item/clothing/under/undershirt = w_uniform if(undershirt.has_sensor == BROKEN_SENSORS) . += list(span_notice("\The [undershirt]'s medical sensors are sparking.")) @@ -679,7 +676,7 @@ /// Reports how old the mob appears to be /mob/living/carbon/human/proc/get_age_text() - if((wear_mask?.flags_inv & HIDEFACE) || (head?.flags_inv & HIDEFACE)) + if(obscured_slots & HIDEFACE) return var/age_text diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index e36094e3f68..2623385d21c 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -72,8 +72,13 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) qdel(delete) /mob/living/carbon/human/dummy/has_equipped(obj/item/item, slot, initial = FALSE) + SHOULD_CALL_PARENT(FALSE) // assuming direct control item.item_flags |= IN_INVENTORY - return item.visual_equipped(src, slot, initial) + if(!item.visual_equipped(src, slot, initial)) + return FALSE + + add_item_coverage(item) + return TRUE /mob/living/carbon/human/dummy/proc/wipe_state() delete_equipment() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index eb16f3f863e..0b50ffa52c9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -637,7 +637,7 @@ * Returns false if we couldn't wash our hands due to them being obscured, otherwise true */ /mob/living/carbon/human/proc/wash_hands(clean_types) - if(check_covered_slots() & ITEM_SLOT_GLOVES) + if(covered_slots & HIDEGLOVES) return FALSE if(gloves) @@ -660,7 +660,7 @@ if(glasses && !is_eyes_covered(ITEM_SLOT_MASK|ITEM_SLOT_HEAD) && glasses.wash(clean_types)) . = TRUE - if(wear_mask && !(check_covered_slots() & ITEM_SLOT_MASK) && wear_mask.wash(clean_types)) + if(wear_mask && !(covered_slots & HIDEMASK) && wear_mask.wash(clean_types)) . = TRUE /** @@ -672,7 +672,7 @@ . |= COMPONENT_CLEANED // Wash hands if exposed - if(!gloves && (clean_types & CLEAN_TYPE_BLOOD) && blood_in_hands > 0 && !(check_covered_slots() & ITEM_SLOT_GLOVES)) + if(!gloves && (clean_types & CLEAN_TYPE_BLOOD) && blood_in_hands > 0 && !(covered_slots & HIDEGLOVES)) blood_in_hands = 0 update_worn_gloves() . |= COMPONENT_CLEANED diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 3b469cf4ab3..1774312ed4d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -397,7 +397,7 @@ if (!(flags & SHOCK_NO_HUMAN_ANIM)) electrocution_animation(4 SECONDS) -/mob/living/carbon/human/acid_act(acidpwr, acid_volume, bodyzone_hit) //todo: update this to utilize check_obscured_slots() //and make sure it's check_obscured_slots(TRUE) to stop aciding through visors etc +/mob/living/carbon/human/acid_act(acidpwr, acid_volume, bodyzone_hit) //todo: update this to utilize obscured_slots //and make sure it's check_obscured_slots(TRUE) to stop aciding through visors etc var/list/damaged = list() var/list/inventory_items_to_kill = list() var/acidity = acidpwr * min(acid_volume*0.005, 0.1) @@ -682,29 +682,28 @@ /mob/living/carbon/human/proc/burn_clothing(seconds_per_tick, stacks) var/list/burning_items = list() - var/covered = check_covered_slots() //HEAD// - if(glasses && !(covered & ITEM_SLOT_EYES)) + if(glasses && !(covered_slots & HIDEEYES)) burning_items += glasses - if(wear_mask && !(covered & ITEM_SLOT_MASK)) + if(wear_mask && !(covered_slots & HIDEMASK)) burning_items += wear_mask - if(wear_neck && !(covered & ITEM_SLOT_NECK)) + if(wear_neck && !(covered_slots & HIDENECK)) burning_items += wear_neck - if(ears && !(covered & ITEM_SLOT_EARS)) + if(ears && !(covered_slots & HIDEEARS)) burning_items += ears if(head) burning_items += head //CHEST// - if(w_uniform && !(covered & ITEM_SLOT_ICLOTHING)) + if(w_uniform && !(covered_slots & HIDEJUMPSUIT)) burning_items += w_uniform if(wear_suit) burning_items += wear_suit //ARMS & HANDS// var/obj/item/clothing/arm_clothes = null - if(gloves && !(covered & ITEM_SLOT_GLOVES)) + if(gloves && !(covered_slots & HIDEGLOVES)) arm_clothes = gloves else if(wear_suit && ((wear_suit.body_parts_covered & HANDS) || (wear_suit.body_parts_covered & ARMS))) arm_clothes = wear_suit @@ -715,7 +714,7 @@ //LEGS & FEET// var/obj/item/clothing/leg_clothes = null - if(shoes && !(covered & ITEM_SLOT_FEET)) + if(shoes && !(covered_slots & HIDESHOES)) leg_clothes = shoes else if(wear_suit && ((wear_suit.body_parts_covered & FEET) || (wear_suit.body_parts_covered & LEGS))) leg_clothes = wear_suit diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index ba81ce369dd..8be20a72be9 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -80,9 +80,7 @@ /mob/living/carbon/human/get_face_name(if_no_face = "Unknown") if(HAS_TRAIT(src, TRAIT_UNKNOWN)) return if_no_face //We're Unknown, no face information for you - for(var/obj/item/worn_item in get_equipped_items()) - if(!(worn_item.flags_inv & HIDEFACE)) - continue + if(obscured_slots & HIDEFACE) return if_no_face var/obj/item/bodypart/head = get_bodypart(BODY_ZONE_HEAD) if(isnull(head) || (HAS_TRAIT(src, TRAIT_DISFIGURED)) || (head.brutestate + head.burnstate) > 2 || !real_name || HAS_TRAIT(src, TRAIT_INVISIBLE_MAN)) //disfigured. use id-name if possible diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index 54bc60c8b98..db29d713a66 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -70,18 +70,10 @@ There are several things that need to be remembered: //damage overlays update_damage_overlays() -/mob/living/carbon/human/update_obscured_slots(obscured_flags) - ..() - sec_hud_set_security_status() - // SKYRAT EDIT ADDITION START - ERP Overlays - if(obscured_flags & HIDESEXTOY) - update_inv_lewd() - // SKYRAT EDIT ADDITION END - /* --------------------------------------- */ //vvvvvv UPDATE_INV PROCS vvvvvv -/mob/living/carbon/human/update_worn_undersuit(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_undersuit() remove_overlay(UNIFORM_LAYER) if(client && hud_used) @@ -92,10 +84,7 @@ There are several things that need to be remembered: var/obj/item/clothing/under/uniform = w_uniform update_hud_uniform(uniform) - if(update_obscured) - update_obscured_slots(uniform.flags_inv) - - if(HAS_TRAIT(uniform, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_ICLOTHING)) + if(HAS_TRAIT(uniform, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDEJUMPSUIT)) return var/target_overlay = uniform.icon_state @@ -162,7 +151,7 @@ There are several things that need to be remembered: apply_overlay(UNIFORM_LAYER) check_body_shape(BODYSHAPE_DIGITIGRADE, ITEM_SLOT_ICLOTHING) -/mob/living/carbon/human/update_worn_id(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_id() remove_overlay(ID_LAYER) if(client && hud_used) @@ -175,9 +164,6 @@ There are several things that need to be remembered: var/obj/item/worn_item = wear_id update_hud_id(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON)) return @@ -195,7 +181,7 @@ There are several things that need to be remembered: apply_overlay(ID_LAYER) -/mob/living/carbon/human/update_worn_gloves(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_gloves() remove_overlay(GLOVES_LAYER) if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_GLOVES) + 1]) @@ -224,10 +210,7 @@ There are several things that need to be remembered: var/obj/item/worn_item = gloves update_hud_gloves(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_GLOVES)) + if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDEGLOVES)) return var/icon_file = 'icons/mob/clothing/hands.dmi' @@ -268,7 +251,7 @@ There are several things that need to be remembered: overlays_standing[GLOVES_LAYER] = gloves_overlay apply_overlay(GLOVES_LAYER) -/mob/living/carbon/human/update_worn_glasses(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_glasses() remove_overlay(GLASSES_LAYER) var/obj/item/bodypart/head/my_head = get_bodypart(BODY_ZONE_HEAD) @@ -283,10 +266,7 @@ There are several things that need to be remembered: var/obj/item/worn_item = glasses update_hud_glasses(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_EYES)) + if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDEEYES)) return var/icon_file = 'icons/mob/clothing/eyes.dmi' @@ -309,7 +289,8 @@ There are several things that need to be remembered: overlays_standing[GLASSES_LAYER] = glasses_overlay apply_overlay(GLASSES_LAYER) -/mob/living/carbon/human/update_worn_ears(update_obscured = TRUE) + +/mob/living/carbon/human/update_worn_ears() remove_overlay(EARS_LAYER) var/obj/item/bodypart/head/my_head = get_bodypart(BODY_ZONE_HEAD) @@ -324,10 +305,7 @@ There are several things that need to be remembered: var/obj/item/worn_item = ears update_hud_ears(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_EARS)) + if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDEEARS)) return var/icon_file = 'icons/mob/clothing/ears.dmi' @@ -350,7 +328,7 @@ There are several things that need to be remembered: overlays_standing[EARS_LAYER] = ears_overlay apply_overlay(EARS_LAYER) -/mob/living/carbon/human/update_worn_neck(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_neck() remove_overlay(NECK_LAYER) if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1]) @@ -361,10 +339,7 @@ There are several things that need to be remembered: var/obj/item/worn_item = wear_neck update_hud_neck(wear_neck) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_NECK)) + if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDENECK)) return var/icon_file = 'icons/mob/clothing/neck.dmi' @@ -395,7 +370,7 @@ There are several things that need to be remembered: apply_overlay(NECK_LAYER) -/mob/living/carbon/human/update_worn_shoes(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_shoes() remove_overlay(SHOES_LAYER) if(num_legs < 2) @@ -409,10 +384,7 @@ There are several things that need to be remembered: var/obj/item/worn_item = shoes update_hud_shoes(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_FEET)) + if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDESHOES)) return var/icon_file = DEFAULT_SHOES_FILE @@ -454,7 +426,7 @@ There are several things that need to be remembered: apply_overlay(SHOES_LAYER) check_body_shape(BODYSHAPE_DIGITIGRADE, ITEM_SLOT_FEET) -/mob/living/carbon/human/update_suit_storage(update_obscured = TRUE) +/mob/living/carbon/human/update_suit_storage() remove_overlay(SUIT_STORE_LAYER) if(client && hud_used) @@ -465,10 +437,7 @@ There are several things that need to be remembered: var/obj/item/worn_item = s_store update_hud_s_store(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_SUITSTORE)) + if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDESUITSTORAGE)) return var/mutable_appearance/s_store_overlay = worn_item.build_worn_icon(default_layer = SUIT_STORE_LAYER, default_icon_file = 'icons/mob/clothing/belt_mirror.dmi') @@ -477,7 +446,7 @@ There are several things that need to be remembered: overlays_standing[SUIT_STORE_LAYER] = s_store_overlay apply_overlay(SUIT_STORE_LAYER) -/mob/living/carbon/human/update_worn_head(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_head() remove_overlay(HEAD_LAYER) if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_HEAD) + 1]) var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_HEAD) + 1] @@ -487,10 +456,7 @@ There are several things that need to be remembered: var/obj/item/worn_item = head update_hud_head(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_HEAD)) + if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDEHEADGEAR)) return var/icon_file = 'icons/mob/clothing/head/default.dmi' @@ -521,7 +487,7 @@ There are several things that need to be remembered: apply_overlay(HEAD_LAYER) check_body_shape(BODYSHAPE_SNOUTED, ITEM_SLOT_HEAD) -/mob/living/carbon/human/update_worn_belt(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_belt() remove_overlay(BELT_LAYER) if(client && hud_used) @@ -532,10 +498,7 @@ There are several things that need to be remembered: var/obj/item/worn_item = belt update_hud_belt(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_BELT)) + if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDEBELT)) return var/icon_file = 'icons/mob/clothing/belt.dmi' @@ -560,7 +523,7 @@ There are several things that need to be remembered: apply_overlay(BELT_LAYER) -/mob/living/carbon/human/update_worn_oversuit(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_oversuit() remove_overlay(SUIT_LAYER) if(client && hud_used) @@ -571,9 +534,6 @@ There are several things that need to be remembered: var/obj/item/worn_item = wear_suit update_hud_wear_suit(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON)) return @@ -634,7 +594,7 @@ There are several things that need to be remembered: client.screen += r_store update_observer_view(r_store) -/mob/living/carbon/human/update_worn_mask(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_mask() remove_overlay(FACEMASK_LAYER) var/obj/item/bodypart/head/my_head = get_bodypart(BODY_ZONE_HEAD) @@ -649,10 +609,7 @@ There are several things that need to be remembered: var/obj/item/worn_item = wear_mask update_hud_wear_mask(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (check_obscured_slots() & ITEM_SLOT_MASK)) + if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDEMASK)) return var/icon_file = 'icons/mob/clothing/mask.dmi' @@ -682,7 +639,7 @@ There are several things that need to be remembered: apply_overlay(FACEMASK_LAYER) check_body_shape(BODYSHAPE_SNOUTED, ITEM_SLOT_MASK) -/mob/living/carbon/human/update_worn_back(update_obscured = TRUE) +/mob/living/carbon/human/update_worn_back() remove_overlay(BACK_LAYER) if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1]) @@ -694,9 +651,6 @@ There are several things that need to be remembered: var/mutable_appearance/back_overlay update_hud_back(worn_item) - if(update_obscured) - update_obscured_slots(worn_item.flags_inv) - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON)) return diff --git a/code/modules/mob/living/carbon/human/init_signals.dm b/code/modules/mob/living/carbon/human/init_signals.dm index 4bea0e925ea..06016b7a07c 100644 --- a/code/modules/mob/living/carbon/human/init_signals.dm +++ b/code/modules/mob/living/carbon/human/init_signals.dm @@ -13,15 +13,9 @@ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_FACE_ACT, PROC_REF(clean_face)) - // List of signals which force a visible name update - // TRAIT_UNKNOWN is excluded as it calls update_ID_card which also calls update_visible_name - var/static/list/name_update_signals = list( - SIGNAL_ADDTRAIT(TRAIT_INVISIBLE_MAN), - SIGNAL_REMOVETRAIT(TRAIT_INVISIBLE_MAN), - SIGNAL_ADDTRAIT(TRAIT_DISFIGURED), - SIGNAL_REMOVETRAIT(TRAIT_DISFIGURED), - ) - RegisterSignals(src, name_update_signals, PROC_REF(update_visible_name)) + RegisterSignals(src, list(SIGNAL_ADDTRAIT(TRAIT_HUSK), SIGNAL_REMOVETRAIT(TRAIT_HUSK)), PROC_REF(refresh_obscured)) + RegisterSignals(src, list(SIGNAL_ADDTRAIT(TRAIT_INVISIBLE_MAN), SIGNAL_REMOVETRAIT(TRAIT_INVISIBLE_MAN)), PROC_REF(invisible_man_toggle)) + RegisterSignals(src, list(SIGNAL_ADDTRAIT(TRAIT_DISFIGURED), SIGNAL_REMOVETRAIT(TRAIT_DISFIGURED)), PROC_REF(update_visible_name)) /// Gaining or losing [TRAIT_DWARF] updates our height and grants passtable /mob/living/carbon/human/proc/on_dwarf_trait(datum/source) @@ -91,3 +85,9 @@ vision_distance = COMBAT_MESSAGE_RANGE, ) playsound(src, SFX_RUSTLE, 50, TRUE, -5, frequency = 0.8) + +/// When [TRAIT_INVISIBLE_MAN] is added or removed we need to update a few things +/mob/living/carbon/human/proc/invisible_man_toggle(datum/source) + SIGNAL_HANDLER + refresh_obscured() + update_visible_name() diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 6e3c4363de0..85ac5c3c0f6 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -222,7 +222,6 @@ . = ..() //See mob.dm for an explanation on this and some rage about people copypasting instead of calling ..() like they should. if(!. || !item_dropping) return - var/not_handled = FALSE //if we actually unequipped an item, this is because we dont want to run this proc twice, once for carbons and once for humans if(item_dropping == wear_suit) if(s_store && invdrop) dropItemToGround(s_store, TRUE) //It makes no sense for your suit storage to stay on you if you drop your suit. @@ -293,15 +292,12 @@ s_store = null if(!QDELETED(src)) update_suit_storage() - else - not_handled = TRUE - if(not_handled) - return - - update_equipment_speed_mods() - update_obscured_slots(item_dropping.flags_inv) - hud_used?.update_locked_slots() +/mob/living/carbon/human/item_coverage_changed(added_slots, removed_slots) + . = ..() + if((added_slots|removed_slots) & HIDEFACE) + sec_hud_set_security_status() + update_visible_name() /mob/living/carbon/human/toggle_internals(obj/item/tank, is_external = FALSE) // Just close the tank if it's the one the mob already has open. @@ -433,9 +429,3 @@ new_bodypart.try_attach_limb(src, TRUE) hand_bodyparts[i] = new_bodypart ..() //Don't redraw hands until we have organs for them - -/mob/living/carbon/human/update_equipment(obj/item/source) - . = ..() - // If the item we equipped/unequipped hides our face, we (potentially) need to update our name - if (source.flags_inv & HIDEFACE) - update_visible_name() diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index 338ebc5a8bd..4a565b6d765 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -78,12 +78,7 @@ return SSaccessories.caps_list /datum/bodypart_overlay/mutant/mushroom_cap/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR)) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) /datum/bodypart_overlay/mutant/mushroom_cap/override_color(obj/item/bodypart/bodypart_owner) //The mushroom cap is red by default (can still be dyed) diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index a2f4b623826..f4cf1757d9a 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -1,21 +1,3 @@ -/// Returns a list of slots that are *visibly* covered by clothing and thus cannot be seen by others -/mob/living/carbon/proc/check_obscured_slots() - var/hidden_slots = NONE - - for(var/obj/item/equipped_item in get_equipped_items()) - hidden_slots |= equipped_item.flags_inv - - return hidden_slots_to_inventory_slots(hidden_slots) - -/// Returns a list of slots that are protected by other clothing, but could possibly be seen by others, via transparent visors and similar stuff -/mob/living/carbon/proc/check_covered_slots() - var/hidden_slots = NONE - - for(var/obj/item/equipped_item in get_equipped_items()) - hidden_slots |= equipped_item.flags_inv | equipped_item.transparent_protection - - return hidden_slots_to_inventory_slots(hidden_slots) - /// Convers HIDEX to ITEM_SLOT_X, should be phased out in favor of using latter everywhere later /proc/hidden_slots_to_inventory_slots(hidden_slots) var/obscured = NONE @@ -81,34 +63,13 @@ /// Returns items which are currently visible on the mob /mob/living/carbon/proc/get_visible_items() - var/static/list/visible_slots = list( - ITEM_SLOT_OCLOTHING, - ITEM_SLOT_ICLOTHING, - ITEM_SLOT_GLOVES, - ITEM_SLOT_EYES, - ITEM_SLOT_EARS, - ITEM_SLOT_MASK, - ITEM_SLOT_HEAD, - ITEM_SLOT_FEET, - ITEM_SLOT_ID, - ITEM_SLOT_BELT, - ITEM_SLOT_BACK, - ITEM_SLOT_NECK, - ITEM_SLOT_HANDS, - ITEM_SLOT_SUITSTORE, - ITEM_SLOT_HANDCUFFED, - ITEM_SLOT_LEGCUFFED, - ) - var/list/obscured = check_obscured_slots() var/list/visible_items = list() - for (var/slot in visible_slots) - if (obscured & slot) - continue - var/obj/item/equipped = get_item_by_slot(slot) - if (equipped) - visible_items += equipped + var/obscured_item_slots = hidden_slots_to_inventory_slots(obscured_slots) for (var/obj/item/held in held_items) visible_items += held + for(var/obj/item/thing in get_equipped_items()) + if(!(get_slot_by_item(thing) & obscured_item_slots)) + visible_items += thing return visible_items /mob/living/carbon/proc/equip_in_one_of_slots(obj/item/equipping, list/slots, qdel_on_fail = TRUE, indirect_action = FALSE) @@ -154,13 +115,10 @@ equipping.pulledby.stop_pulling() equipping.screen_loc = null - if(client) - client.screen -= equipping + client?.screen -= equipping - if(observers?.len) - for(var/mob/dead/observe as anything in observers) - if(observe.client) - observe.client.screen -= equipping + for(var/mob/dead/observe as anything in observers) + observe.client?.screen -= equipping equipping.forceMove(src) SET_PLANE_EXPLICIT(equipping, ABOVE_HUD_PLANE, src) @@ -190,7 +148,6 @@ update_worn_neck(equipping) if(ITEM_SLOT_HANDCUFFED) set_handcuffed(equipping) - update_handcuffed() if(ITEM_SLOT_LEGCUFFED) legcuffed = equipping update_worn_legcuffs() @@ -208,19 +165,32 @@ return not_handled -/mob/living/carbon/has_equipped(obj/item/item, slot, initial) - . = ..() - hud_used?.update_locked_slots() - /mob/living/carbon/get_equipped_speed_mod_items() return ..() + get_equipped_items() +/mob/living/carbon/has_equipped(obj/item/item, slot, initial = FALSE) + . = ..() + if(!.) + return + + update_equipment_speed_mods() + hud_used?.update_locked_slots() + add_item_coverage(item) + +/mob/living/carbon/has_unequipped(obj/item/item) + . = ..() // NB: ATP the item is still in the slot, but no longer has the IN_INVENTORY flag (so is not returned by get_equipped_items) + if(!.) + return + + update_equipment_speed_mods() + hud_used?.update_locked_slots() + remove_item_coverage(item) + /mob/living/carbon/doUnEquip(obj/item/item_dropping, force, newloc, no_move, invdrop = TRUE, silent = FALSE) . = ..() //Sets the default return value to what the parent returns. if(!. || !item_dropping) //We don't want to set anything to null if the parent returned 0. return - var/not_handled = FALSE //if we actually unequipped an item, this is because we dont want to run this proc twice, once for carbons and once for humans if(item_dropping == head) head = null if(!QDELETED(src)) @@ -241,14 +211,10 @@ set_handcuffed(null) if(buckled?.buckle_requires_restraints) buckled.unbuckle_mob(src) - if(!QDELETED(src)) - update_handcuffed() else if(item_dropping == legcuffed) legcuffed = null if(!QDELETED(src)) update_worn_legcuffs() - else - not_handled = TRUE // Not an else-if because we're probably equipped in another slot if(item_dropping == internal && (QDELETED(src) || QDELETED(item_dropping) || item_dropping.loc != src)) @@ -256,12 +222,44 @@ if(!QDELETED(src)) update_mob_action_buttons(UPDATE_BUTTON_STATUS) - if(not_handled) - return +/// Adds the passed item's coverage to the mob's coverage related flags +/mob/living/carbon/proc/add_item_coverage(obj/item/item) + var/pre_coverage = obscured_slots + obscured_slots |= item.flags_inv + covered_slots |= item.flags_inv | item.transparent_protection + if(pre_coverage != obscured_slots) + item_coverage_changed(obscured_slots & ~pre_coverage, pre_coverage & ~obscured_slots) - update_equipment_speed_mods() - update_obscured_slots(item_dropping.flags_inv) - hud_used?.update_locked_slots() +/// Removes the passed item's coverage from the mob's coverage related flags +/mob/living/carbon/proc/remove_item_coverage(obj/item/item) + refresh_obscured() // No way to remove a single item's coverage without recalculating everything + +/mob/living/carbon/refresh_obscured() + var/pre_coverage = obscured_slots + + obscured_slots = NONE + covered_slots = NONE + for(var/obj/item/other_equipped_item as anything in get_equipped_items()) + obscured_slots |= other_equipped_item.flags_inv + covered_slots |= other_equipped_item.flags_inv | other_equipped_item.transparent_protection + + if(HAS_TRAIT(src, TRAIT_HUSK) || HAS_TRAIT(src, TRAIT_INVISIBLE_MAN)) + obscured_slots |= HIDEHAIR|HIDEFACIALHAIR + + if(pre_coverage != obscured_slots) + item_coverage_changed(obscured_slots & ~pre_coverage, pre_coverage & ~obscured_slots) + +/** + * Called when a mob's obscured slots change + * + * Args + * * added_slots - slots that were added to obscured_slots + * * removed_slots - slots that were removed from obscured_slots + */ +/mob/living/carbon/proc/item_coverage_changed(added_slots, removed_slots) + update_clothing(hidden_slots_to_inventory_slots(added_slots|removed_slots)) + if((added_slots|removed_slots) & (HIDEJUMPSUIT|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT|HIDEMUTWINGS|HIDEANTENNAE)) + update_body() /// Returns the helmet if an air tank compatible helmet is equipped. /mob/living/carbon/proc/can_breathe_helmet() diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 0f90ab91ab9..f033bc2978a 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -14,6 +14,19 @@ . = ..() user.spin(TAUNT_EMOTE_DURATION, 0.1 SECONDS) +/datum/emote/living/tongue + key = "tongue" + key_third_person = "tongues" + message = "sticks their tongue out." + +/datum/emote/living/tongue/run_emote(mob/user, params, type_override, intentional) + var/mob/living/carbon/human/human_user = user + if(istype(human_user) && !human_user.get_organ_slot(ORGAN_SLOT_TONGUE)) + to_chat(human_user, span_warning("You don't have a tongue!")) + return + . = ..() + QDEL_IN(human_user.give_emote_overlay(/datum/bodypart_overlay/simple/emote/tongue), 5.2 SECONDS) + /datum/emote/living/blush key = "blush" key_third_person = "blushes" @@ -635,7 +648,7 @@ TIMER_COOLDOWN_START(user, COOLDOWN_YAWN_PROPAGATION, cooldown * 3) var/mob/living/carbon/carbon_user = user - if(istype(carbon_user) && ((carbon_user.wear_mask?.flags_inv & HIDEFACE) || carbon_user.head?.flags_inv & HIDEFACE)) + if(carbon_user.obscured_slots & HIDEFACE) return // if your face is obscured, skip propagation var/propagation_distance = user.client ? 5 : 2 // mindless mobs are less able to spread yawns diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 7609e3df670..b491c72ae54 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -2549,11 +2549,6 @@ GLOBAL_LIST_EMPTY(fire_appearances) if(GRAB_KILL) add_movespeed_modifier(/datum/movespeed_modifier/grab_slowdown/kill) - -/// Only defined for carbons who can wear masks and helmets, we just assume other mobs have visible faces -/mob/living/proc/is_face_visible() - return TRUE - /// Sprite to show for photocopying mob butts /mob/living/proc/get_butt_sprite() return null diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 00726ab2e87..fa1bdd78a51 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -349,7 +349,6 @@ return FALSE if(!current_target.handcuffed) current_target.set_handcuffed(new cuff_type(current_target)) - current_target.update_handcuffed() playsound(src, SFX_LAW, 50, FALSE) back_to_idle() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index af4d5728341..398b08265d9 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -714,18 +714,25 @@ return // check to see if their face is blocked or, if not, a signal blocks it - if(examined_mob.is_face_visible() && SEND_SIGNAL(src, COMSIG_MOB_EYECONTACT, examined_mob, TRUE) != COMSIG_BLOCK_EYECONTACT) + if(examined_mob.can_eye_contact() && SEND_SIGNAL(src, COMSIG_MOB_EYECONTACT, examined_mob, TRUE) != COMSIG_BLOCK_EYECONTACT) var/obj/item/clothing/eye_cover = examined_mob.is_eyes_covered() if (!eye_cover || (!eye_cover.tint && !eye_cover.flash_protect)) var/msg = span_smallnotice("You make eye contact with [examined_mob].") addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), src, msg), 0.3 SECONDS) // so the examine signal has time to fire and this will print after - if(!imagined_eye_contact && is_face_visible() && !examined_mob.is_blind() && SEND_SIGNAL(examined_mob, COMSIG_MOB_EYECONTACT, src, FALSE) != COMSIG_BLOCK_EYECONTACT) + if(!imagined_eye_contact && can_eye_contact() && !examined_mob.is_blind() && SEND_SIGNAL(examined_mob, COMSIG_MOB_EYECONTACT, src, FALSE) != COMSIG_BLOCK_EYECONTACT) var/obj/item/clothing/eye_cover = is_eyes_covered() if (!eye_cover || (!eye_cover.tint && !eye_cover.flash_protect)) var/msg = span_smallnotice("[src] makes eye contact with you.") addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), examined_mob, msg), 0.3 SECONDS) +/// Checks if we can make eye contact or someone can make eye contact with us +/mob/living/proc/can_eye_contact() + return TRUE + +/mob/living/carbon/can_eye_contact() + return !(obscured_slots & HIDEFACE) + /** * Called by using Activate Held Object with an empty hand/limb * @@ -1563,11 +1570,6 @@ else living_flags |= QUEUE_NUTRITION_UPDATE -/// Update mob stats based on equipment we are wearing when an item is equipped/dropped, to be overriden by children -/// source - Item that caused the update by being equipped/dropped -/mob/proc/update_equipment(obj/item/source) - update_equipment_speed_mods() - /// Apply a proper movespeed modifier based on items we have equipped /mob/proc/update_equipment_speed_mods() var/speedies = 0 diff --git a/code/modules/mob/mob_update_icons.dm b/code/modules/mob/mob_update_icons.dm index b14da72e830..210c041408c 100644 --- a/code/modules/mob/mob_update_icons.dm +++ b/code/modules/mob/mob_update_icons.dm @@ -42,42 +42,24 @@ if(slot_flags & ITEM_SLOT_HANDS) update_held_items() -///Updates item slots obscured by this item (or using an override of flags to check) -/mob/proc/update_obscured_slots(obscured_flags) - if(obscured_flags & HIDEGLOVES) - update_worn_gloves(update_obscured = FALSE) - if(obscured_flags & HIDESUITSTORAGE) - update_suit_storage(update_obscured = FALSE) - if(obscured_flags & HIDEJUMPSUIT) - update_worn_undersuit(update_obscured = FALSE) - if(obscured_flags & HIDESHOES) - update_worn_shoes(update_obscured = FALSE) - if(obscured_flags & HIDEMASK) - update_worn_mask(update_obscured = FALSE) - if(obscured_flags & HIDEBELT) - update_worn_belt(update_obscured = FALSE) - if(obscured_flags & HIDEEARS) - update_worn_ears(update_obscured = FALSE) - if(obscured_flags & HIDEEYES) - update_worn_glasses(update_obscured = FALSE) - if(obscured_flags & HIDENECK) - update_worn_neck(update_obscured = FALSE) - if(obscured_flags & HIDEHEADGEAR) - update_worn_head(update_obscured = FALSE) +/// Recalculates the mob's obscured and covered slots based on currently equipped items +/mob/proc/refresh_obscured() + SIGNAL_HANDLER + return /mob/proc/update_icons() return ///Updates the handcuff overlay & HUD element. -/mob/proc/update_worn_handcuffs(update_obscured = FALSE) +/mob/proc/update_worn_handcuffs() return ///Updates the legcuff overlay & HUD element. -/mob/proc/update_worn_legcuffs(update_obscured = FALSE) +/mob/proc/update_worn_legcuffs() return ///Updates the back overlay & HUD element. -/mob/proc/update_worn_back(update_obscured = FALSE) +/mob/proc/update_worn_back() return ///Updates the held items overlay(s) & HUD element. @@ -86,27 +68,27 @@ SEND_SIGNAL(src, COMSIG_MOB_UPDATE_HELD_ITEMS) ///Updates the mask overlay & HUD element. -/mob/proc/update_worn_mask(update_obscured = FALSE) +/mob/proc/update_worn_mask() return ///Updates the neck overlay & HUD element. -/mob/proc/update_worn_neck(update_obscured = FALSE) +/mob/proc/update_worn_neck() return ///Updates the oversuit overlay & HUD element. -/mob/proc/update_worn_oversuit(update_obscured = FALSE) +/mob/proc/update_worn_oversuit() return ///Updates the undersuit/uniform overlay & HUD element. -/mob/proc/update_worn_undersuit(update_obscured = FALSE) +/mob/proc/update_worn_undersuit() return ///Updates the belt overlay & HUD element. -/mob/proc/update_worn_belt(update_obscured = FALSE) +/mob/proc/update_worn_belt() return ///Updates the on-head overlay & HUD element. -/mob/proc/update_worn_head(update_obscured = FALSE) +/mob/proc/update_worn_head() return ///Updates every part of a carbon's body. Including parts, mutant parts, lips, underwear, and socks. @@ -117,23 +99,23 @@ return ///Updates the glasses overlay & HUD element. -/mob/proc/update_worn_glasses(update_obscured = FALSE) +/mob/proc/update_worn_glasses() return ///Updates the id overlay & HUD element. -/mob/proc/update_worn_id(update_obscured = FALSE) +/mob/proc/update_worn_id() return ///Updates the shoes overlay & HUD element. -/mob/proc/update_worn_shoes(update_obscured = FALSE) +/mob/proc/update_worn_shoes() return ///Updates the glasses overlay & HUD element. -/mob/proc/update_worn_gloves(update_obscured = FALSE) +/mob/proc/update_worn_gloves() return ///Updates the suit storage overlay & HUD element. -/mob/proc/update_suit_storage(update_obscured = FALSE) +/mob/proc/update_suit_storage() return ///Updates the pocket overlay & HUD element. @@ -141,5 +123,5 @@ return ///Updates the headset overlay & HUD element. -/mob/proc/update_worn_ears(update_obscured = FALSE) +/mob/proc/update_worn_ears() return diff --git a/code/modules/mod/mod_actions.dm b/code/modules/mod/mod_actions.dm index d0424d9682d..8385b657671 100644 --- a/code/modules/mod/mod_actions.dm +++ b/code/modules/mod/mod_actions.dm @@ -32,7 +32,7 @@ /datum/action/item_action/mod/do_effect(trigger_flags) var/obj/item/mod/control/mod = target - if(mod.malfunctioning && prob(75)) + if(mod.malfunctioning && prob(MOD_MALFUNCTION_PROB)) mod.balloon_alert(usr, "button malfunctions!") return FALSE return TRUE @@ -182,7 +182,7 @@ . = ..() if(!.) return - module.on_select() + module.on_select(owner) /datum/action/item_action/mod/pinnable/module/apply_button_overlay(atom/movable/screen/movable/action_button/current_button, force) current_button.cut_overlays() diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm index 0961e86af49..d900fd43538 100644 --- a/code/modules/mod/mod_activation.dm +++ b/code/modules/mod/mod_activation.dm @@ -271,7 +271,7 @@ part.alternate_worn_layer = part_datum.unsealed_layer update_speed() wearer.update_clothing(part.slot_flags | slot_flags) - wearer.update_obscured_slots(part.visor_flags_inv) + wearer.refresh_obscured() if((part.clothing_flags & (MASKINTERNALS|HEADINTERNALS)) && wearer.invalid_internals()) wearer.cutoff_internals() SEND_SIGNAL(src, COMSIG_MOD_PART_SEALED, part_datum) diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index c0f03b8997d..906dd08ca31 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -192,6 +192,7 @@ set_wearer(user) else if(wearer) unset_wearer() + return ..() /obj/item/mod/control/dropped(mob/user) . = ..() @@ -393,7 +394,7 @@ return cell /obj/item/mod/control/GetAccess() - if(ai_controller) + if(ai_controller && req_access) return req_access.Copy() else return ..() diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index 8bd6f1bb7fc..df33739bab0 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -169,6 +169,7 @@ part.worn_icon = used_skin[MOD_WORN_ICON_OVERRIDE] || 'icons/mob/clothing/modsuit/mod_clothing.dmi' part.icon_state = "[skin]-[part.base_icon_state][mod.get_part_datum(part).sealed ? "-sealed" : ""]" mod.wearer?.update_clothing(part.slot_flags) + mod.wearer?.refresh_obscured() /datum/armor/mod_theme melee = 10 diff --git a/code/modules/mod/mod_ui.dm b/code/modules/mod/mod_ui.dm index 9a8e77f7e8e..e25c3b2a836 100644 --- a/code/modules/mod/mod_ui.dm +++ b/code/modules/mod/mod_ui.dm @@ -86,7 +86,7 @@ . = ..() if(.) return - if(malfunctioning && prob(75)) + if(malfunctioning && prob(MOD_MALFUNCTION_PROB)) balloon_alert(ui.user, "button malfunctions!") return switch(action) @@ -108,7 +108,7 @@ var/obj/item/mod/module/module = locate(params["ref"]) in modules if(!module) return - module.on_select() + module.on_select(ui.user) // We can now if("configure") var/obj/item/mod/module/module = locate(params["ref"]) in modules if(!module) diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm index fb9b7c9d155..3ee0fed7449 100644 --- a/code/modules/mod/modules/_module.dm +++ b/code/modules/mod/modules/_module.dm @@ -105,32 +105,29 @@ return TRUE /// Called when the module is selected from the TGUI, radial or the action button -/obj/item/mod/module/proc/on_select() - if(!mod.wearer) - if(ismob(mod.loc)) - balloon_alert(mod.loc, "not equipped!") +/obj/item/mod/module/proc/on_select(mob/activator) + if(!mod.wearer && !(allow_flags & MODULE_ALLOW_UNWORN)) //No wearer and cannot be used unworn + balloon_alert(activator, "not equipped!") return - if(((!mod.active || mod.activating) && !(allow_flags & MODULE_ALLOW_INACTIVE)) || module_type == MODULE_PASSIVE) - if(mod.wearer) - balloon_alert(mod.wearer, "not active!") + if(((!mod.active || mod.activating) && !(allow_flags & (MODULE_ALLOW_INACTIVE | MODULE_ALLOW_UNWORN))) || module_type == MODULE_PASSIVE) // not active + balloon_alert(activator, "not active!") return - if(!has_required_parts(mod.mod_parts, need_active = TRUE)) - if(mod.wearer) - balloon_alert(mod.wearer, "required parts inactive!") - var/list/slot_strings = list() - for(var/slot in required_slots) - var/list/slot_list = parse_slot_flags(slot) - slot_strings += (length(slot_list) == 1 ? "" : "one of ") + english_list(slot_list, and_text = " or ") - to_chat(mod.wearer, span_warning("[src] requires these slots to be deployed: [english_list(slot_strings)]")) - playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + if(!has_required_parts(mod.mod_parts, need_active = TRUE) && !(allow_flags & MODULE_ALLOW_UNWORN)) // Doesn't have parts + balloon_alert(activator, "required parts inactive!") + var/list/slot_strings = list() + for(var/slot in required_slots) + var/list/slot_list = parse_slot_flags(slot) + slot_strings += (length(slot_list) == 1 ? "" : "one of ") + english_list(slot_list, and_text = " or ") + to_chat(activator, span_warning("[src] requires these slots to be deployed: [english_list(slot_strings)]")) + playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return if(module_type != MODULE_USABLE) if(active) - deactivate() + deactivate(activator) else - activate() + activate(activator) else - used() + used(activator) SEND_SIGNAL(mod, COMSIG_MOD_MODULE_SELECTED, src) /// Apply a cooldown until this item can be used again @@ -141,12 +138,12 @@ SEND_SIGNAL(src, COMSIG_MODULE_COOLDOWN_STARTED, applied_cooldown) /// Called when the module is activated -/obj/item/mod/module/proc/activate() +/obj/item/mod/module/proc/activate(mob/activator) if(!COOLDOWN_FINISHED(src, cooldown_timer)) - balloon_alert(mod.wearer, "on cooldown!") + balloon_alert(activator, "on cooldown!") return FALSE if(((!mod.active || mod.activating) && !(allow_flags & MODULE_ALLOW_INACTIVE)) || !mod.get_charge()) // SKYRAT EDIT ADDITION: INACTIVE USE - balloon_alert(mod.wearer, "unpowered!") + balloon_alert(activator, "unpowered!") return FALSE // SKYRAT EDIT START - No using modules when not all parts are deployed. @@ -158,7 +155,7 @@ // SKYRAT EDIT END if(!(allow_flags & MODULE_ALLOW_PHASEOUT) && istype(mod.wearer.loc, /obj/effect/dummy/phased_mob)) //specifically a to_chat because the user is phased out. - to_chat(mod.wearer, span_warning("You cannot activate this right now.")) + to_chat(activator, span_warning("You cannot activate this right now.")) return FALSE if(SEND_SIGNAL(src, COMSIG_MODULE_TRIGGERED, mod.wearer) & MOD_ABORT_USE) return FALSE @@ -168,25 +165,25 @@ mod.selected_module = src if(device) if(mod.wearer.put_in_hands(device)) - balloon_alert(mod.wearer, "[device] extended") + balloon_alert(activator, "[device] extended") RegisterSignal(mod.wearer, COMSIG_ATOM_EXITED, PROC_REF(on_exit)) RegisterSignal(mod.wearer, COMSIG_KB_MOB_DROPITEM_DOWN, PROC_REF(dropkey)) else - balloon_alert(mod.wearer, "can't extend [device]!") + balloon_alert(activator, "can't extend [device]!") mod.wearer.transferItemToLoc(device, src, force = TRUE) return FALSE else var/used_button = mod.wearer.client?.prefs.read_preference(/datum/preference/choiced/mod_select) || MIDDLE_CLICK update_signal(used_button) - balloon_alert(mod.wearer, "[src] activated, [used_button]-click to use") + balloon_alert(mod.wearer, "[src] activated, [used_button]-click to use") // As of now, only wearers can "use" mods active = TRUE SEND_SIGNAL(src, COMSIG_MODULE_ACTIVATED) - on_activation() + on_activation(activator) update_clothing_slots() return TRUE /// Called when the module is deactivated -/obj/item/mod/module/proc/deactivate(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/proc/deactivate(mob/activator, display_message = TRUE, deleting = FALSE) active = FALSE if(module_type == MODULE_ACTIVE) mod.selected_module = null @@ -200,12 +197,15 @@ UnregisterSignal(mod.wearer, used_signal) used_signal = null SEND_SIGNAL(src, COMSIG_MODULE_DEACTIVATED, mod.wearer) - on_deactivation(display_message = TRUE, deleting = FALSE) + on_deactivation(activator, display_message = TRUE, deleting = FALSE) update_clothing_slots() return TRUE /// Call to update all slots visually affected by this module /obj/item/mod/module/proc/update_clothing_slots() + if(!mod.wearer) + return + var/updated_slots = mod.slot_flags if (mask_worn_overlay) for (var/obj/item/part as anything in mod.get_parts()) @@ -216,24 +216,25 @@ mod.wearer.update_clothing(updated_slots) /// Called when the module is used -/obj/item/mod/module/proc/used() +/obj/item/mod/module/proc/used(mob/activator) if(!COOLDOWN_FINISHED(src, cooldown_timer)) - balloon_alert(mod.wearer, "on cooldown!") + balloon_alert(activator, "on cooldown!") return FALSE if(!check_power(use_energy_cost)) - balloon_alert(mod.wearer, "not enough charge!") + balloon_alert(activator, "not enough charge!") return FALSE if(!(allow_flags & MODULE_ALLOW_PHASEOUT) && istype(mod.wearer.loc, /obj/effect/dummy/phased_mob)) //specifically a to_chat because the user is phased out. - to_chat(mod.wearer, span_warning("You cannot activate this right now.")) + to_chat(activator, span_warning("You cannot activate this right now.")) return FALSE if(SEND_SIGNAL(src, COMSIG_MODULE_TRIGGERED, mod.wearer) & MOD_ABORT_USE) return FALSE start_cooldown() - addtimer(CALLBACK(mod.wearer, TYPE_PROC_REF(/mob, update_clothing), mod.slot_flags), cooldown_time+1) //need to run it a bit after the cooldown starts to avoid conflicts + if(mod.wearer) + addtimer(CALLBACK(mod.wearer, TYPE_PROC_REF(/mob, update_clothing), mod.slot_flags), cooldown_time+1) //need to run it a bit after the cooldown starts to avoid conflicts update_clothing_slots() SEND_SIGNAL(src, COMSIG_MODULE_USED) - on_use() + on_use(activator) return TRUE /// Called when an activated module without a device is used @@ -265,15 +266,15 @@ return TRUE /// Called from the module's activate() -/obj/item/mod/module/proc/on_activation() +/obj/item/mod/module/proc/on_activation(mob/activator) return /// Called from the module's deactivate() -/obj/item/mod/module/proc/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/proc/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) return /// Called from the module's used() -/obj/item/mod/module/proc/on_use() +/obj/item/mod/module/proc/on_use(mob/activator) return /// Called on the MODsuit's process if it is an active module diff --git a/code/modules/mod/modules/module_kinesis.dm b/code/modules/mod/modules/module_kinesis.dm index 436d3dc9e87..f79701e7961 100644 --- a/code/modules/mod/modules/module_kinesis.dm +++ b/code/modules/mod/modules/module_kinesis.dm @@ -63,7 +63,7 @@ drain_power(use_energy_cost) grab_atom(target) -/obj/item/mod/module/anomaly_locked/kinesis/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/anomaly_locked/kinesis/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) clear_grab(playsound = !deleting) /obj/item/mod/module/anomaly_locked/kinesis/process(seconds_per_tick) diff --git a/code/modules/mod/modules/module_pathfinder.dm b/code/modules/mod/modules/module_pathfinder.dm index 9f1cec7e9fa..4b948d6ed07 100644 --- a/code/modules/mod/modules/module_pathfinder.dm +++ b/code/modules/mod/modules/module_pathfinder.dm @@ -15,12 +15,22 @@ use_energy_cost = DEFAULT_CHARGE_DRAIN * 10 incompatible_modules = list(/obj/item/mod/module/pathfinder) required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) + allow_flags = list(MODULE_ALLOW_INACTIVE|MODULE_ALLOW_UNWORN) /// The pathfinding implant. var/obj/item/implant/mod/implant + /// Whether the implant has been used or not + var/implant_inside = TRUE + /// The jet icon we apply to the MOD. + var/image/jet_icon + /// Allow suit activation - Lets this module be recalled from the MOD. + var/allow_suit_activation = FALSE // I'm not here to argue about balance + /obj/item/mod/module/pathfinder/Initialize(mapload) . = ..() implant = new(src) + jet_icon = image(icon = 'icons/obj/clothing/modsuit/mod_modules.dmi', icon_state = "mod_jet", layer = LOW_ITEM_LAYER) + /obj/item/mod/module/pathfinder/Destroy() QDEL_NULL(implant) @@ -28,28 +38,28 @@ /obj/item/mod/module/pathfinder/Exited(atom/movable/gone, direction) if(gone == implant) - implant = null + implant_inside = FALSE update_icon_state() return ..() /obj/item/mod/module/pathfinder/update_icon_state() . = ..() - icon_state = implant ? "pathfinder" : "pathfinder_empty" + icon_state = implant_inside ? "pathfinder" : "pathfinder_empty" /obj/item/mod/module/pathfinder/examine(mob/user) . = ..() - if(implant) + if(implant_inside) . += span_notice("Use it on a human to implant them.") else . += span_warning("The implant is missing.") /obj/item/mod/module/pathfinder/attack(mob/living/target, mob/living/user, list/modifiers, list/attack_modifiers) - if(!ishuman(target) || !implant) + if(!ishuman(target) || !implant_inside) // Not human, or no implant in module return if(!do_after(user, 1.5 SECONDS, target = target)) balloon_alert(user, "interrupted!") return - if(!implant.implant(target, user)) + if(!implant.implant(target, user)) // If implant fails balloon_alert(user, "can't implant!") return if(target == user) @@ -57,21 +67,29 @@ else target.visible_message(span_notice("[user] implants [target]."), span_notice("[user] implants you with [implant].")) playsound(src, 'sound/effects/spray.ogg', 30, TRUE, -6) - module_type = MODULE_PASSIVE -/obj/item/mod/module/pathfinder/on_use() +/obj/item/mod/module/pathfinder/on_use(mob/activator) . = ..() - if (!ishuman(mod.wearer) || !implant) + if(mod.wearer && implant_inside) // implant them + try_implant(activator) + return + if(mod.wearer) + balloon_alert(activator, "suit already worn!") + else + recall(activator) + + +/// Assuming we have a wearer, attempt to implant them. +/obj/item/mod/module/pathfinder/proc/try_implant(mob/activator) + if(!ishuman(mod.wearer)) // Wearer isn't human return if(!implant.implant(mod.wearer, mod.wearer)) - balloon_alert(mod.wearer, "can't implant!") + balloon_alert(activator, "can't implant!") return - balloon_alert(mod.wearer, "implanted") + balloon_alert(activator, "implanted") + if(!(activator == mod.wearer)) // someone else implanted you + balloon_alert(mod.wearer, "pathfinder MOD tracker implanted!") playsound(src, 'sound/effects/spray.ogg', 30, TRUE, -6) - module_type = MODULE_PASSIVE - var/datum/action/item_action/mod/pinnable/module/existing_action = pinned_to[REF(mod.wearer)] - if(existing_action) - mod.remove_item_action(existing_action) /obj/item/mod/module/pathfinder/proc/attach(mob/living/user) if(!ishuman(user)) @@ -87,27 +105,86 @@ playsound(mod, 'sound/machines/ping.ogg', 50, TRUE) drain_power(use_energy_cost) +/obj/item/mod/module/pathfinder/proc/recall(mob/recaller) + if(!implant) + balloon_alert(recaller, "no target implant!") + return FALSE + if(recaller != implant.imp_in && !allow_suit_activation) // No pAI recalling + balloon_alert(recaller, "sector safety regulations prevent MOD-side recalling!") + return FALSE + if(mod.open) + balloon_alert(recaller, "cover open!") + return FALSE + if(mod.ai_controller) + balloon_alert(recaller, "already moving!") + return FALSE + if(ismob(get_atom_on_turf(mod))) + balloon_alert(recaller, "already on someone!") + return FALSE + if(mod.z != implant.imp_in.z || get_dist(implant.imp_in, mod) > MOD_AI_RANGE) + balloon_alert(recaller, "too far!") + return FALSE + var/datum/ai_controller/mod_ai = new /datum/ai_controller/mod(mod) + mod.ai_controller = mod_ai + mod_ai.set_movement_target(type, implant.imp_in) + mod_ai.set_blackboard_key(BB_MOD_TARGET, implant.imp_in) + mod_ai.set_blackboard_key(BB_MOD_MODULE, src) + mod.interaction_flags_item &= ~INTERACT_ITEM_ATTACK_HAND_PICKUP + mod.AddElement(/datum/element/movetype_handler) + ADD_TRAIT(mod, TRAIT_MOVE_FLYING, MOD_TRAIT) + animate(mod, 0.2 SECONDS, pixel_x = base_pixel_y, pixel_y = base_pixel_y) + mod.add_overlay(jet_icon) + RegisterSignal(mod, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) + balloon_alert(recaller, "suit recalled") + if(!(recaller == mod.wearer)) + balloon_alert(mod.wearer, "suit recalled") + return TRUE + +/obj/item/mod/module/pathfinder/proc/on_move(atom/movable/source, atom/old_loc, dir, forced) + SIGNAL_HANDLER + + var/matrix/mod_matrix = matrix() + mod_matrix.Turn(get_angle(source, implant.imp_in)) + source.transform = mod_matrix + +/obj/item/mod/module/pathfinder/proc/end_recall(successful = TRUE) + if(!mod) + return + QDEL_NULL(mod.ai_controller) + mod.interaction_flags_item |= INTERACT_ITEM_ATTACK_HAND_PICKUP + REMOVE_TRAIT(mod, TRAIT_MOVE_FLYING, MOD_TRAIT) + mod.RemoveElement(/datum/element/movetype_handler) + mod.cut_overlay(jet_icon) + mod.transform = matrix() + UnregisterSignal(mod, COMSIG_MOVABLE_MOVED) + if(!successful) + balloon_alert(implant.imp_in, "suit lost connection!") + +// ########### +// THE INPLANT +// ########### + + /obj/item/implant/mod name = "MOD pathfinder implant" desc = "Lets you recall a MODsuit to you at any time." actions_types = list(/datum/action/item_action/mod_recall) + allow_multiple = TRUE // Surgrey is annoying if you loose your MOD /// The pathfinder module we are linked to. var/obj/item/mod/module/pathfinder/module - /// The jet icon we apply to the MOD. - var/image/jet_icon + + /obj/item/implant/mod/Initialize(mapload) . = ..() if(!istype(loc, /obj/item/mod/module/pathfinder)) return INITIALIZE_HINT_QDEL module = loc - jet_icon = image(icon = 'icons/obj/clothing/modsuit/mod_modules.dmi', icon_state = "mod_jet", layer = LOW_ITEM_LAYER) /obj/item/implant/mod/Destroy() if(module?.mod?.ai_controller) - end_recall(successful = FALSE) + module.end_recall(successful = FALSE) module = null - jet_icon = null return ..() /obj/item/implant/mod/get_data() @@ -115,55 +192,6 @@ Name: Nakamura Engineering Pathfinder Implant
    \ Implant Details: Allows for the recall of a Modular Outerwear Device by the implant owner at any time.
    " -/obj/item/implant/mod/proc/recall() - if(!module?.mod) - balloon_alert(imp_in, "no connected unit!") - return FALSE - if(module.mod.open) - balloon_alert(imp_in, "cover open!") - return FALSE - if(module.mod.ai_controller) - balloon_alert(imp_in, "already moving!") - return FALSE - if(ismob(get_atom_on_turf(module.mod))) - balloon_alert(imp_in, "already on someone!") - return FALSE - if(module.z != z || get_dist(imp_in, module.mod) > MOD_AI_RANGE) - balloon_alert(imp_in, "too far!") - return FALSE - var/datum/ai_controller/mod_ai = new /datum/ai_controller/mod(module.mod) - module.mod.ai_controller = mod_ai - mod_ai.set_movement_target(type, imp_in) - mod_ai.set_blackboard_key(BB_MOD_TARGET, imp_in) - mod_ai.set_blackboard_key(BB_MOD_IMPLANT, src) - module.mod.interaction_flags_item &= ~INTERACT_ITEM_ATTACK_HAND_PICKUP - module.mod.AddElement(/datum/element/movetype_handler) - ADD_TRAIT(module.mod, TRAIT_MOVE_FLYING, MOD_TRAIT) - animate(module.mod, 0.2 SECONDS, pixel_x = base_pixel_y, pixel_y = base_pixel_y) - module.mod.add_overlay(jet_icon) - RegisterSignal(module.mod, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) - balloon_alert(imp_in, "suit recalled") - return TRUE - -/obj/item/implant/mod/proc/end_recall(successful = TRUE) - if(!module?.mod) - return - QDEL_NULL(module.mod.ai_controller) - module.mod.interaction_flags_item |= INTERACT_ITEM_ATTACK_HAND_PICKUP - REMOVE_TRAIT(module.mod, TRAIT_MOVE_FLYING, MOD_TRAIT) - module.mod.RemoveElement(/datum/element/movetype_handler) - module.mod.cut_overlay(jet_icon) - module.mod.transform = matrix() - UnregisterSignal(module.mod, COMSIG_MOVABLE_MOVED) - if(!successful) - balloon_alert(imp_in, "suit lost connection!") - -/obj/item/implant/mod/proc/on_move(atom/movable/source, atom/old_loc, dir, forced) - SIGNAL_HANDLER - - var/matrix/mod_matrix = matrix() - mod_matrix.Turn(get_angle(source, imp_in)) - source.transform = mod_matrix /datum/action/item_action/mod_recall name = "Recall MOD" @@ -185,7 +213,7 @@ /datum/action/item_action/mod_recall/do_effect(trigger_flags) var/obj/item/implant/mod/implant = target if(!COOLDOWN_FINISHED(src, recall_cooldown)) - implant.balloon_alert(implant.imp_in, "on cooldown!") + implant.balloon_alert(owner, "on cooldown!") return - if(implant.recall()) + if(implant.module.recall(owner)) // change this COOLDOWN_START(src, recall_cooldown, 15 SECONDS) diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index d8449338f7b..32b11f23c59 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -78,6 +78,8 @@ idle_power_cost = 0 //magic use_energy_cost = 0 //magic too max_charges = 5 + recharge_start_delay = 20 SECONDS + charge_increment_delay = 3 SECONDS shield_icon_file = 'icons/effects/magic.dmi' shield_icon = "mageshield" required_slots = list() @@ -290,7 +292,7 @@ complexity = 2 incompatible_modules = list(/obj/item/mod/module/chameleon) cooldown_time = 0.5 SECONDS - allow_flags = MODULE_ALLOW_INACTIVE + allow_flags = list(MODULE_ALLOW_INACTIVE|MODULE_ALLOW_UNWORN) /// A list of all the items the suit can disguise as. var/list/possible_disguises = list() /// The path of the item we're disguised as. @@ -312,17 +314,17 @@ return_look() possible_disguises = null -/obj/item/mod/module/chameleon/used() +/obj/item/mod/module/chameleon/used(mob/activator) if(mod.active || mod.activating) - balloon_alert(mod.wearer, "unit active!") + balloon_alert(activator, "unit active!") return FALSE return ..() -/obj/item/mod/module/chameleon/on_use() +/obj/item/mod/module/chameleon/on_use(mob/activator) if(current_disguise) return_look() return - var/picked_name = tgui_input_list(mod.wearer, "Select look to change into", "Chameleon Settings", possible_disguises) + var/picked_name = tgui_input_list(activator, "Select look to change into", "Chameleon Settings", possible_disguises) if(!possible_disguises[picked_name] || mod.active || mod.activating) return current_disguise = possible_disguises[picked_name] @@ -504,10 +506,10 @@ if(disrupted.on_saboteur(src, 1 MINUTES)) mod.add_charge(DEFAULT_CHARGE_DRAIN * 250) -/obj/item/mod/module/stealth/wraith/on_activation() +/obj/item/mod/module/stealth/wraith/on_activation(mob/activator) return // Don't activate stealth when the module is activated because the stealth portion of the module is fully passive -/obj/item/mod/module/stealth/wraith/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/stealth/wraith/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) . = ..() UnregisterSignal(mod.wearer, list(COMSIG_LIVING_MOB_BUMP, COMSIG_ATOM_BUMPED, COMSIG_MOB_FIRED_GUN)) diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm index fa28e7aaee6..5838e2391cd 100644 --- a/code/modules/mod/modules/modules_engineering.dm +++ b/code/modules/mod/modules/modules_engineering.dm @@ -81,11 +81,11 @@ . = ..() UnregisterSignal(mod, COMSIG_MOD_UPDATE_SPEED) -/obj/item/mod/module/magboot/on_activation() +/obj/item/mod/module/magboot/on_activation(mob/activator) mod.wearer.add_traits(active_traits, REF(src)) mod.update_speed() -/obj/item/mod/module/magboot/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/magboot/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) mod.wearer.remove_traits(active_traits, REF(src)) mod.update_speed() @@ -140,7 +140,7 @@ if (key == "cut_tethers") SEND_SIGNAL(src, COMSIG_MOD_TETHER_SNAP) -/obj/item/mod/module/tether/on_deactivation(display_message, deleting) +/obj/item/mod/module/tether/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) SEND_SIGNAL(src, COMSIG_MOD_TETHER_SNAP) /obj/projectile/tether @@ -222,6 +222,7 @@ anchor.pixel_x = hitx anchor.pixel_y = hity anchor.anchored = TRUE + anchor.reset_pixel_pos = TRUE anchor.parent_module = parent_module firer.AddComponent(/datum/component/tether, anchor, 7, "MODtether", parent_module = parent_module, tether_trait_source = REF(parent_module)) @@ -238,6 +239,8 @@ interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT /// MODsuit tether module that created our projectile var/obj/item/mod/module/tether/parent_module + /// Should we reset our pixel positions next time we move? + var/reset_pixel_pos = FALSE /obj/item/tether_anchor/Initialize(mapload) . = ..() @@ -255,8 +258,12 @@ /obj/item/tether_anchor/wrench_act(mob/living/user, obj/item/tool) . = ..() - default_unfasten_wrench(user, tool) - return ITEM_INTERACT_SUCCESS + if (default_unfasten_wrench(user, tool)) + pixel_x = 0 + pixel_y = 0 + reset_pixel_pos = FALSE + return ITEM_INTERACT_SUCCESS + return ITEM_INTERACT_BLOCKING /obj/item/tether_anchor/attack_hand_secondary(mob/user, list/modifiers) if (!can_interact(user) || !user.CanReach(src) || !isturf(loc)) @@ -274,6 +281,13 @@ user.AddComponent(/datum/component/tether, src, 7, "tether", tether_trait_source = REF(src)) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN +/obj/item/tether_anchor/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + if (reset_pixel_pos) + pixel_x = 0 + pixel_y = 0 + reset_pixel_pos = FALSE + /obj/item/tether_anchor/mouse_drop_receive(atom/target, mob/user, params) if (!can_interact(user) || !user.CanReach(src) || !isturf(loc)) return @@ -394,7 +408,7 @@ /obj/item/mod/module/constructor/on_part_deactivation(deleting = FALSE) REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src)) -/obj/item/mod/module/constructor/on_use() +/obj/item/mod/module/constructor/on_use(mob/activator) rcd_scan(src, fade_time = 10 SECONDS) drain_power(use_energy_cost) diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index 38d5049faef..104f6058549 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -171,12 +171,12 @@ return FALSE return TRUE -/obj/item/mod/module/jetpack/on_activation() +/obj/item/mod/module/jetpack/on_activation(mob/activator) mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed) if (!stabilize) ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) -/obj/item/mod/module/jetpack/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/jetpack/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed) REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) @@ -206,9 +206,9 @@ incompatible_modules = list(/obj/item/mod/module/jump_jet) required_slots = list(ITEM_SLOT_BACK) -/obj/item/mod/module/jump_jet/on_use() +/obj/item/mod/module/jump_jet/on_use(mob/activator) if (DOING_INTERACTION(mod.wearer, mod.wearer)) - balloon_alert(mod.wearer, "busy!") + balloon_alert(activator, "busy!") return balloon_alert(mod.wearer, "launching...") mod.wearer.Shake(duration = 1 SECONDS) @@ -438,12 +438,12 @@ /// Maximum range we can set. var/max_range = 5 -/obj/item/mod/module/flashlight/on_activation() +/obj/item/mod/module/flashlight/on_activation(mob/activator) set_light_flags(light_flags | LIGHT_ATTACHED) set_light_on(active) active_power_cost = base_power * light_range -/obj/item/mod/module/flashlight/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/flashlight/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) set_light_flags(light_flags & ~LIGHT_ATTACHED) set_light_on(active) @@ -518,13 +518,13 @@ /// Time it takes for us to dispense. var/dispense_time = 0 SECONDS -/obj/item/mod/module/dispenser/on_use() +/obj/item/mod/module/dispenser/on_use(mob/activator) if(dispense_time && !do_after(mod.wearer, dispense_time, target = mod)) balloon_alert(mod.wearer, "interrupted!") return FALSE var/obj/item/dispensed = new dispense_type(mod.wearer.loc) mod.wearer.put_in_hands(dispensed) - balloon_alert(mod.wearer, "[dispensed] dispensed") + balloon_alert(activator, "[dispensed] dispensed") playsound(src, 'sound/machines/click.ogg', 100, TRUE) drain_power(use_energy_cost) return dispensed @@ -627,7 +627,7 @@ UnregisterSignal(mod, COMSIG_ATOM_EMP_ACT) UnregisterSignal(mod, COMSIG_ATOM_EMAG_ACT) -/obj/item/mod/module/dna_lock/on_use() +/obj/item/mod/module/dna_lock/on_use(mob/activator) /// Bubber Edit Start - Proteans if(istype(mod, /obj/item/mod/control/pre_equipped/protean)) var/obj/item/mod/control/pre_equipped/protean/p_suit = mod @@ -637,7 +637,7 @@ return balloon_alert(p_suit.wearer, "button unresponsive") /// Bubber Edit End dna = mod.wearer.dna.unique_enzymes - balloon_alert(mod.wearer, "dna updated") + balloon_alert(activator, "dna updated") drain_power(use_energy_cost) /obj/item/mod/module/dna_lock/emp_act(severity) @@ -868,11 +868,11 @@ container = null return ..() -/obj/item/mod/module/recycler/on_activation() +/obj/item/mod/module/recycler/on_activation(mob/activator) connector = AddComponent(/datum/component/connect_loc_behalf, mod.wearer, loc_connections) RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(on_wearer_moved)) -/obj/item/mod/module/recycler/on_deactivation(display_message, deleting = FALSE) +/obj/item/mod/module/recycler/on_deactivation(mob/activator, display_message, deleting = FALSE) QDEL_NULL(connector) UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(on_wearer_moved)) diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm index 17804dcd406..2e0b2dba3a0 100644 --- a/code/modules/mod/modules/modules_maint.dm +++ b/code/modules/mod/modules/modules_maint.dm @@ -136,12 +136,12 @@ QDEL_NULL(rave_screen) return ..() -/obj/item/mod/module/visor/rave/on_activation() +/obj/item/mod/module/visor/rave/on_activation(mob/activator) rave_screen = mod.wearer.add_client_colour(/datum/client_colour/rave, REF(src)) rave_screen.update_color(rainbow_order[rave_number]) music_player.start_music(mod.wearer) -/obj/item/mod/module/visor/rave/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/visor/rave/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) QDEL_NULL(rave_screen) if(isnull(music_player.active_song_sound)) return @@ -199,7 +199,7 @@ cooldown_time = 30 SECONDS required_slots = list(ITEM_SLOT_OCLOTHING|ITEM_SLOT_ICLOTHING) -/obj/item/mod/module/tanner/on_use() +/obj/item/mod/module/tanner/on_use(mob/activator) playsound(src, 'sound/machines/microwave/microwave-end.ogg', 50, TRUE) var/datum/reagents/holder = new() holder.add_reagent(/datum/reagent/spraytan, 10) @@ -223,7 +223,7 @@ var/blowing_time = 10 SECONDS var/oxygen_damage = 20 -/obj/item/mod/module/balloon/on_use() +/obj/item/mod/module/balloon/on_use(mob/activator) if(!do_after(mod.wearer, blowing_time, target = mod)) return FALSE mod.wearer.adjustOxyLoss(oxygen_damage) @@ -247,7 +247,7 @@ /// The total number of sheets created by this MOD. The more sheets, them more likely they set on fire. var/num_sheets_dispensed = 0 -/obj/item/mod/module/paper_dispenser/on_use() +/obj/item/mod/module/paper_dispenser/on_use(mob/activator) if(!do_after(mod.wearer, 1 SECONDS, target = mod)) return FALSE @@ -316,7 +316,7 @@ /// If you use the module on a planetary turf, you fly up. To the sky. var/you_fucked_up = FALSE -/obj/item/mod/module/atrocinator/on_activation() +/obj/item/mod/module/atrocinator/on_activation(mob/activator) playsound(src, 'sound/effects/curse/curseattack.ogg', 50) mod.wearer.AddElement(/datum/element/forced_gravity, NEGATIVE_GRAVITY) RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(check_upstairs)) @@ -325,13 +325,13 @@ passtable_on(mod.wearer, REF(src)) check_upstairs() //todo at some point flip your screen around -/obj/item/mod/module/atrocinator/deactivate(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/atrocinator/deactivate(mob/activator, display_message = TRUE, deleting = FALSE) if(you_fucked_up && !deleting) - to_chat(mod.wearer, span_danger("It's too late.")) + to_chat(activator, span_danger("It's too late.")) return FALSE return ..() -/obj/item/mod/module/atrocinator/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/atrocinator/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) if(!deleting) playsound(src, 'sound/effects/curse/curseattack.ogg', 50) qdel(mod.wearer.RemoveElement(/datum/element/forced_gravity, NEGATIVE_GRAVITY)) diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm index 5f9596ab213..11346d00f28 100644 --- a/code/modules/mod/modules/modules_ninja.dm +++ b/code/modules/mod/modules/modules_ninja.dm @@ -19,7 +19,7 @@ /// The alpha applied when the cloak is on. var/stealth_alpha = 50 -/obj/item/mod/module/stealth/on_activation() +/obj/item/mod/module/stealth/on_activation(mob/activator) if(bumpoff) RegisterSignal(mod.wearer, COMSIG_LIVING_MOB_BUMP, PROC_REF(unstealth)) RegisterSignal(mod.wearer, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(on_unarmed_attack)) @@ -28,7 +28,7 @@ animate(mod.wearer, alpha = stealth_alpha, time = 1.5 SECONDS) drain_power(use_energy_cost) -/obj/item/mod/module/stealth/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/stealth/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) if(bumpoff) UnregisterSignal(mod.wearer, COMSIG_LIVING_MOB_BUMP) UnregisterSignal(mod.wearer, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_MOB_ITEM_ATTACK, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_HITBY, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACK_PAW, COMSIG_CARBON_CUFF_ATTEMPTED)) @@ -72,11 +72,11 @@ cooldown_time = 3 SECONDS -/obj/item/mod/module/stealth/ninja/on_activation() +/obj/item/mod/module/stealth/ninja/on_activation(mob/activator) . = ..() ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) -/obj/item/mod/module/stealth/ninja/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/stealth/ninja/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) . = ..() REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) @@ -289,7 +289,7 @@ use_energy_cost = DEFAULT_CHARGE_DRAIN * 10 cooldown_time = 8 SECONDS -/obj/item/mod/module/emp_shield/pulse/on_use() +/obj/item/mod/module/emp_shield/pulse/on_use(mob/activator) playsound(src, 'sound/effects/empulse.ogg', 60, TRUE) empulse(src, heavy_range = 4, light_range = 6) drain_power(use_energy_cost) @@ -422,7 +422,7 @@ return FALSE return ..() -/obj/item/mod/module/adrenaline_boost/on_use() +/obj/item/mod/module/adrenaline_boost/on_use(mob/activator) if(IS_SPACE_NINJA(mod.wearer)) mod.wearer.say(pick_list_replacements(NINJA_FILE, "lines"), forced = type) to_chat(mod.wearer, span_notice("You have used the adrenaline boost.")) diff --git a/code/modules/mod/modules/modules_science.dm b/code/modules/mod/modules/modules_science.dm index 8cb15d35370..8a41d449edf 100644 --- a/code/modules/mod/modules/modules_science.dm +++ b/code/modules/mod/modules/modules_science.dm @@ -13,10 +13,10 @@ incompatible_modules = list(/obj/item/mod/module/reagent_scanner) required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK) -/obj/item/mod/module/reagent_scanner/on_activation() +/obj/item/mod/module/reagent_scanner/on_activation(mob/activator) ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src)) -/obj/item/mod/module/reagent_scanner/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/reagent_scanner/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src)) /obj/item/mod/module/reagent_scanner/advanced @@ -29,12 +29,12 @@ removable = FALSE var/explosion_detection_dist = 21 -/obj/item/mod/module/reagent_scanner/advanced/on_activation() +/obj/item/mod/module/reagent_scanner/advanced/on_activation(mob/activator) . = ..() ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src)) RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, PROC_REF(sense_explosion)) -/obj/item/mod/module/reagent_scanner/advanced/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/reagent_scanner/advanced/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) . = ..() REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src)) UnregisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION) @@ -61,13 +61,13 @@ accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/grav) required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) -/obj/item/mod/module/anomaly_locked/antigrav/on_activation() +/obj/item/mod/module/anomaly_locked/antigrav/on_activation(mob/activator) if(mod.wearer.has_gravity()) new /obj/effect/temp_visual/mook_dust(get_turf(src)) mod.wearer.AddElement(/datum/element/forced_gravity, 0) playsound(src, 'sound/effects/gravhit.ogg', 50) -/obj/item/mod/module/anomaly_locked/antigrav/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/anomaly_locked/antigrav/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) mod.wearer.RemoveElement(/datum/element/forced_gravity, 0) if(deleting) return diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm index a19cd09db2b..efe5d4646ef 100644 --- a/code/modules/mod/modules/modules_security.dm +++ b/code/modules/mod/modules/modules_security.dm @@ -82,7 +82,7 @@ /obj/item/mod/module/pepper_shoulders/on_part_deactivation(deleting = FALSE) UnregisterSignal(mod.wearer, COMSIG_LIVING_CHECK_BLOCK) -/obj/item/mod/module/pepper_shoulders/on_use() +/obj/item/mod/module/pepper_shoulders/on_use(mob/activator) playsound(src, 'sound/effects/spray.ogg', 30, TRUE, -6) var/datum/reagents/capsaicin_holder = new(10) capsaicin_holder.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 10) @@ -117,7 +117,7 @@ /// Gun we have holstered. var/obj/item/gun/holstered -/obj/item/mod/module/holster/on_use() +/obj/item/mod/module/holster/on_use(mob/activator) if(!holstered) var/obj/item/gun/holding = mod.wearer.get_active_held_item() if(!holding) @@ -163,10 +163,10 @@ /// List of spans we add to the speaker. var/list/voicespan = list(SPAN_COMMAND) -/obj/item/mod/module/megaphone/on_activation() +/obj/item/mod/module/megaphone/on_activation(mob/activator) RegisterSignal(mod.wearer, COMSIG_MOB_SAY, PROC_REF(handle_speech)) -/obj/item/mod/module/megaphone/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/megaphone/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) UnregisterSignal(mod.wearer, COMSIG_MOB_SAY) /obj/item/mod/module/megaphone/proc/handle_speech(datum/source, list/speech_args) @@ -203,7 +203,7 @@ idle_power_cost = linked_bodybag ? (DEFAULT_CHARGE_DRAIN * 3) : 0 return ..() -/obj/item/mod/module/criminalcapture/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/criminalcapture/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) if(!linked_bodybag) return packup() @@ -269,7 +269,7 @@ overlay_state_inactive = "module_mirage_grenade" dispense_type = /obj/item/grenade/mirage -/obj/item/mod/module/dispenser/mirage/on_use() +/obj/item/mod/module/dispenser/mirage/on_use(mob/activator) var/obj/item/grenade/mirage/grenade = ..() grenade.arm_grenade(mod.wearer) @@ -318,18 +318,18 @@ /// Effect image on projectiles. var/image/projectile_effect /// The dampening field - var/datum/proximity_monitor/advanced/projectile_dampener/dampening_field + var/datum/proximity_monitor/advanced/bubble/projectile_dampener/dampening_field /obj/item/mod/module/projectile_dampener/Initialize(mapload) . = ..() projectile_effect = image('icons/effects/fields.dmi', "projectile_dampen_effect") -/obj/item/mod/module/projectile_dampener/on_activation() +/obj/item/mod/module/projectile_dampener/on_activation(mob/activator) if(istype(dampening_field)) QDEL_NULL(dampening_field) dampening_field = new(mod.wearer, field_radius, TRUE, src) -/obj/item/mod/module/projectile_dampener/on_deactivation(display_message, deleting = FALSE) +/obj/item/mod/module/projectile_dampener/on_deactivation(mob/activator, display_message, deleting = FALSE) QDEL_NULL(dampening_field) ///Active Sonar - Displays a hud circle on the turf of any living creatures in the given radius @@ -429,12 +429,12 @@ scanned_slice = 1 COOLDOWN_START(src, scan_cooldown, scan_cooldown_time) -/obj/item/mod/module/active_sonar/on_use() - balloon_alert(mod.wearer, "readying sonar...") +/obj/item/mod/module/active_sonar/on_use(mob/activator) + balloon_alert(activator, "readying sonar...") playsound(mod.wearer, 'sound/vehicles/mecha/skyfall_power_up.ogg', vol = 20, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) if(!do_after(mod.wearer, 1.1 SECONDS, target = mod)) return - playsound(mod.wearer, 'sound/effects/ping_hit.ogg', vol = 75, vary = TRUE) // Should be audible for the radius of the sonar + playsound(src, 'sound/effects/ping_hit.ogg', vol = 75, vary = TRUE) // Should be audible for the radius of the sonar to_chat(mod.wearer, span_notice("You slam your fist into the ground, sending out a sonic wave that detects [detect_living_creatures()] living beings nearby!")) for(var/mob/living/creature as anything in keyed_creatures) new /obj/effect/temp_visual/sonar_ping(mod.wearer.loc, mod.wearer, creature) diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm index 3a53705e24b..9ca53939fb2 100644 --- a/code/modules/mod/modules/modules_service.dm +++ b/code/modules/mod/modules/modules_service.dm @@ -12,7 +12,7 @@ incompatible_modules = list(/obj/item/mod/module/bikehorn) cooldown_time = 1 SECONDS -/obj/item/mod/module/bikehorn/on_use() +/obj/item/mod/module/bikehorn/on_use(mob/activator) playsound(src, 'sound/items/bikehorn.ogg', 100, FALSE) drain_power(use_energy_cost) diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index 77b13a32836..a87c3f39cc0 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -18,8 +18,8 @@ . = ..() AddComponent(/datum/component/gps/item, "MOD0", state = GLOB.deep_inventory_state, overlay_state = FALSE) -/obj/item/mod/module/gps/on_use() - attack_self(mod.wearer) +/obj/item/mod/module/gps/on_use(mob/activator) + attack_self(mod.wearer) // todo: refactor to make compatable with pAIs. Maybe ui_interact(activator) ///Hydraulic Clamp - Lets you pick up and drop crates. /obj/item/mod/module/clamp @@ -40,16 +40,28 @@ var/load_time = 3 SECONDS /// The max amount of crates you can carry. var/max_crates = 3 + /// Disallow mobs larger than this size in containers + var/max_mob_size = MOB_SIZE_SMALL + /// Items that allowed to be picked up by this module + var/list/accepted_items /// The crates stored in the module. var/list/stored_crates = list() + +/obj/item/mod/module/clamp/Initialize(mapload) + . = ..() + accepted_items = typecacheof(list( + /obj/structure/closet/crate, + /obj/item/delivery/big + )) + /obj/item/mod/module/clamp/on_select_use(atom/target) . = ..() if(!.) return if(!mod.wearer.Adjacent(target)) return - if(istype(target, /obj/structure/closet/crate) || istype(target, /obj/item/delivery/big)) + if(is_type_in_typecache(target, accepted_items)) var/atom/movable/picked_crate = target if(!check_crate_pickup(picked_crate)) return @@ -92,7 +104,7 @@ balloon_alert(mod.wearer, "too many crates!") return FALSE for(var/mob/living/mob in target.get_all_contents()) - if(mob.mob_size < MOB_SIZE_HUMAN) + if(mob.mob_size <= max_mob_size) continue balloon_alert(mod.wearer, "crate too heavy!") return FALSE @@ -124,10 +136,10 @@ overlay_state_active = "module_drill" required_slots = list(ITEM_SLOT_GLOVES) -/obj/item/mod/module/drill/on_activation() +/obj/item/mod/module/drill/on_activation(mob/activator) RegisterSignal(mod.wearer, COMSIG_MOVABLE_BUMP, PROC_REF(bump_mine)) -/obj/item/mod/module/drill/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/drill/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) UnregisterSignal(mod.wearer, COMSIG_MOVABLE_BUMP) /obj/item/mod/module/drill/on_select_use(atom/target) @@ -202,7 +214,7 @@ ore.forceMove(src) ores += ore -/obj/item/mod/module/orebag/on_use() +/obj/item/mod/module/orebag/on_use(mob/activator) for(var/obj/item/ore as anything in ores) ore.forceMove(drop_location()) ores -= ore @@ -333,7 +345,7 @@ locker.throw_at(mod.wearer, range = 7, speed = 3, force = MOVE_FORCE_WEAK, \ callback = CALLBACK(src, PROC_REF(check_locker), locker)) -/obj/item/mod/module/magnet/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/magnet/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) if(istype(mod.wearer.pulling, /obj/structure/closet)) mod.wearer.stop_pulling() @@ -483,13 +495,13 @@ TRAIT_NO_SLIP_ALL, ) -/obj/item/mod/module/sphere_transform/activate() +/obj/item/mod/module/sphere_transform/activate(mob/activator) if(!mod.wearer.has_gravity()) - balloon_alert(mod.wearer, "no gravity!") + balloon_alert(activator, "no gravity!") return FALSE return ..() -/obj/item/mod/module/sphere_transform/on_activation() +/obj/item/mod/module/sphere_transform/on_activation(mob/activator) playsound(src, 'sound/items/modsuit/ballin.ogg', 100, TRUE) mod.wearer.add_filter("mod_ball", 1, alpha_mask_filter(icon = icon('icons/mob/clothing/modsuit/mod_modules.dmi', "ball_mask"), flags = MASK_INVERSE)) mod.wearer.add_filter("mod_blur", 2, angular_blur_filter(size = 15)) @@ -503,7 +515,7 @@ mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/sphere) RegisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE, PROC_REF(on_statchange)) -/obj/item/mod/module/sphere_transform/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/sphere_transform/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) if(!deleting) playsound(src, 'sound/items/modsuit/ballin.ogg', 100, TRUE, frequency = -1) mod.wearer.remove_offsets(REF(src)) @@ -516,9 +528,9 @@ mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/sphere) UnregisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE) -/obj/item/mod/module/sphere_transform/used() +/obj/item/mod/module/sphere_transform/used(mob/activator) if(!lavaland_equipment_pressure_check(get_turf(src))) - balloon_alert(mod.wearer, "too much pressure!") + balloon_alert(activator, "too much pressure!") playsound(src, 'sound/items/weapons/gun/general/dry_fire.ogg', 25, TRUE) return FALSE return ..() diff --git a/code/modules/mod/modules/modules_timeline.dm b/code/modules/mod/modules/modules_timeline.dm index 701cbc30421..0a18a559830 100644 --- a/code/modules/mod/modules/modules_timeline.dm +++ b/code/modules/mod/modules/modules_timeline.dm @@ -29,9 +29,10 @@ UnregisterSignal(mod, COMSIG_MOD_ACTIVATE) UnregisterSignal(mod, COMSIG_MOD_MODULE_REMOVAL) -/obj/item/mod/module/eradication_lock/on_use() +/obj/item/mod/module/eradication_lock/on_use(mob/activator) true_owner_ckey = mod.wearer.ckey - balloon_alert(mod.wearer, "user remembered") + balloon_alert(activator, "user remembered") + playsound(src, 'sound/items/pshoom/pshoom.ogg', 25, TRUE) drain_power(use_energy_cost) ///Signal fired when the modsuit tries activating @@ -66,8 +67,8 @@ cooldown_time = 20 SECONDS required_slots = list(ITEM_SLOT_BACK) -/obj/item/mod/module/rewinder/on_use() - balloon_alert(mod.wearer, "anchor point set") +/obj/item/mod/module/rewinder/on_use(mob/activator) + balloon_alert(activator, "anchor point set") playsound(src, 'sound/items/modsuit/time_anchor_set.ogg', 50, TRUE) //stops all mods from triggering during rewinding for(var/obj/item/mod/module/module as anything in mod.modules) @@ -110,13 +111,13 @@ ///The current timestop in progress. var/obj/effect/timestop/channelled/timestop -/obj/item/mod/module/timestopper/used() +/obj/item/mod/module/timestopper/used(mob/activator) if(timestop) - mod.balloon_alert(mod.wearer, "already freezing time!") + mod.balloon_alert(activator, "already freezing time!") return FALSE return ..() -/obj/item/mod/module/timestopper/on_use() +/obj/item/mod/module/timestopper/on_use(mob/activator) //stops all mods from triggering during timestop- including timestop itself for(var/obj/item/mod/module/module as anything in mod.modules) RegisterSignal(module, COMSIG_MODULE_TRIGGERED, PROC_REF(on_module_triggered)) @@ -159,14 +160,14 @@ ///The dummy for phasing from this module, the wearer is phased out while this exists. var/obj/effect/dummy/phased_mob/chrono/phased_mob -/obj/item/mod/module/timeline_jumper/used() +/obj/item/mod/module/timeline_jumper/used(mob/activator) var/area/noteleport_check = get_area(mod.wearer) if(noteleport_check && !check_teleport_valid(mod.wearer, get_turf(mod.wearer))) - to_chat(mod.wearer, span_danger("Some dull, universal force is between you and the [phased_mob ? "current timeline" : "stream between timelines"].")) + to_chat(activator, span_danger("Some dull, universal force is between you and the [phased_mob ? "current timeline" : "stream between timelines"].")) return FALSE return ..() -/obj/item/mod/module/timeline_jumper/on_use() +/obj/item/mod/module/timeline_jumper/on_use(mob/activator) if(!phased_mob) //phasing out mod.visible_message(span_warning("[mod.wearer] leaps out of the timeline!")) diff --git a/code/modules/mod/modules/modules_visor.dm b/code/modules/mod/modules/modules_visor.dm index 7897ac404f2..c865cc3e670 100644 --- a/code/modules/mod/modules/modules_visor.dm +++ b/code/modules/mod/modules/modules_visor.dm @@ -12,12 +12,12 @@ /// The traits given by the visor. var/list/visor_traits = list() -/obj/item/mod/module/visor/on_activation() +/obj/item/mod/module/visor/on_activation(mob/activator) if(length(visor_traits)) mod.wearer.add_traits(visor_traits, REF(src)) mod.wearer.update_sight() -/obj/item/mod/module/visor/on_deactivation(display_message = TRUE, deleting = FALSE) +/obj/item/mod/module/visor/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) if(length(visor_traits)) mod.wearer.remove_traits(visor_traits, REF(src)) mod.wearer.update_sight() @@ -91,10 +91,10 @@ incompatible_modules = list(/obj/item/mod/module/night, /obj/item/mod/module/visor/night) required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK) -/obj/item/mod/module/night/on_activation() - ADD_TRAIT(mod.wearer, TRAIT_TRUE_NIGHT_VISION, REF(src)) +/obj/item/mod/module/night/on_activation(mob/activator) + mod.wearer.add_traits(mod.wearer, TRAIT_TRUE_NIGHT_VISION, REF(src)) mod.wearer.update_sight() -/obj/item/mod/module/night/on_deactivation(display_message = TRUE, deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_TRUE_NIGHT_VISION, REF(src)) +/obj/item/mod/module/night/on_deactivation(mob/activator, display_message = TRUE, deleting = FALSE) + mod.wearer.remove_traits(mod.wearer, TRAIT_TRUE_NIGHT_VISION, REF(src)) mod.wearer.update_sight() diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index c55c038de29..9ef40666fc3 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -315,8 +315,9 @@ qdel(clone_area) get_icon.Blend("#000", ICON_UNDERLAY) for(var/mob/living/carbon/human/person in mobs) - if(person.is_face_visible()) - names += "[person.name]" + if(person.obscured_slots & HIDEFACE) + continue + names += "[person.name]" var/datum/picture/picture = new("picture", desc.Join("
    "), mobs_spotted, dead_spotted, names, get_icon, null, psize_x, psize_y, blueprints, can_see_ghosts = see_ghosts) after_picture(user, picture) diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.dm b/code/modules/plumbing/plumbers/_plumb_machinery.dm index 1627b667f1a..84e51918dc8 100644 --- a/code/modules/plumbing/plumbers/_plumb_machinery.dm +++ b/code/modules/plumbing/plumbers/_plumb_machinery.dm @@ -98,7 +98,9 @@ /obj/machinery/plumbing/plunger_act(obj/item/plunger/attacking_plunger, mob/living/user, reinforced) user.balloon_alert_to_viewers("furiously plunging...") - if(do_after(user, 3 SECONDS, target = src)) - user.balloon_alert_to_viewers("finished plunging") - reagents.expose(get_turf(src), TOUCH) //splash on the floor - reagents.clear_reagents() + if(!do_after(user, 3 SECONDS, target = src)) + return TRUE + user.balloon_alert_to_viewers("finished plunging") + reagents.expose(get_turf(src), TOUCH) //splash on the floor + reagents.clear_reagents() + return TRUE diff --git a/code/modules/plumbing/plumbers/iv_drip.dm b/code/modules/plumbing/plumbers/iv_drip.dm index a2e3f905d1f..0fef34ef4ca 100644 --- a/code/modules/plumbing/plumbers/iv_drip.dm +++ b/code/modules/plumbing/plumbers/iv_drip.dm @@ -22,10 +22,12 @@ /obj/machinery/iv_drip/plumbing/plunger_act(obj/item/plunger/attacking_plunger, mob/living/user, reinforced) user.balloon_alert_to_viewers("furiously plunging...", "plunging iv drip...") - if(do_after(user, 3 SECONDS, target = src)) - user.balloon_alert_to_viewers("finished plunging") - reagents.expose(get_turf(src), TOUCH) //splash on the floor - reagents.clear_reagents() + if(!do_after(user, 3 SECONDS, target = src)) + return TRUE + user.balloon_alert_to_viewers("finished plunging") + reagents.expose(get_turf(src), TOUCH) //splash on the floor + reagents.clear_reagents() + return TRUE /obj/machinery/iv_drip/plumbing/wrench_act(mob/living/user, obj/item/tool) if(default_unfasten_wrench(user, tool) != SUCCESSFUL_UNFASTEN) diff --git a/code/modules/projectiles/guns/energy/crank_guns.dm b/code/modules/projectiles/guns/energy/crank_guns.dm index 32aa65827cf..05139823fae 100644 --- a/code/modules/projectiles/guns/energy/crank_guns.dm +++ b/code/modules/projectiles/guns/energy/crank_guns.dm @@ -44,6 +44,7 @@ shaded_charge = 1 charge_sections = 1 spread = 22.5 + obj_flags = UNIQUE_RENAME /obj/item/gun/energy/disabler/smoothbore/Initialize(mapload) . = ..() diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 039e6a2898b..39e76fea268 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -137,6 +137,7 @@ name = "Methamphetamine" description = "Reduces stun times by about 300%, speeds the user up, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage." color = "#78C8FA" //best case scenario is the "default", gets muddled depending on purity + taste_description = "harsh, burning chemicals" overdose_threshold = 20 metabolization_rate = 0.75 * REAGENTS_METABOLISM ph = 5 @@ -169,7 +170,7 @@ /datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.") + var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.", "You understand now.") if(SPT_PROB(2.5, seconds_per_tick)) to_chat(affected_mob, span_notice("[high_message]")) affected_mob.add_mood_event("tweaking", /datum/mood_event/stimulant_medium) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 2d2a2d1cd83..50c480b9cbf 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -718,6 +718,7 @@ name = "Morphine" description = "A painkiller that allows the patient to move at full speed even when injured. Causes drowsiness and eventually unconsciousness in high doses. Overdose will cause a variety of effects, ranging from minor to lethal." color = "#A9FBFB" + taste_description = "a perfumy, bitter vanilla" metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 30 ph = 8.96 diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 6c9ae29d4c3..ab4de8a550e 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -259,26 +259,39 @@ ph = 13 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -/datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/holder_mob) +/datum/reagent/toxin/zombiepowder/expose_mob(mob/living/exposed_mob, methods, reac_volume, show_message, touch_protection) . = ..() + if(!isliving(exposed_mob) || !(methods & (INGEST|INHALE))) + return + + LAZYINITLIST(data) + data["method"] |= methods + + //the stomach handles INGEST via on_mob_metabolize() we only deal with INHALE + //also means vapour works much faster which is realistic + if(methods & INHALE) + zombify(exposed_mob) +/** + * Does the fake death & oxy loss on the mob + * + * Arguments + * * mob/living/holder_mob - the mob we are zombifying +*/ +/datum/reagent/toxin/zombiepowder/proc/zombify(mob/living/holder_mob) + PRIVATE_PROC(TRUE) + holder_mob.adjustOxyLoss(0.5*REM, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) if((data?["method"] & (INGEST|INHALE)) && holder_mob.stat != DEAD) holder_mob.fakedeath(type) +/datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/holder_mob) + . = ..() + zombify(holder_mob) + /datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/affected_mob) . = ..() affected_mob.cure_fakedeath(type) -/datum/reagent/toxin/zombiepowder/expose_mob(mob/living/exposed_mob, methods, reac_volume, show_message, touch_protection) - . = ..() - if(!(methods & (INGEST|INHALE))) - return - - var/datum/reagent/zombiepowder = exposed_mob.reagents.has_reagent(/datum/reagent/toxin/zombiepowder) - if(zombiepowder) - LAZYINITLIST(zombiepowder.data) - zombiepowder.data["method"] |= (INGEST|INHALE) - /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/affected_mob, seconds_per_tick, times_fired) . = ..() if(HAS_TRAIT(affected_mob, TRAIT_FAKEDEATH) && HAS_TRAIT(affected_mob, TRAIT_DEATHCOMA)) diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 531b8b4ba40..c9a84809ffc 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -77,6 +77,46 @@ e.start(holder.my_atom) holder.clear_reagents() +/datum/chemical_reaction/meth_crystal //Since the meth is a cooled pharmaceutical solvent, this precipitates it into a solid. + required_reagents = list(/datum/reagent/drug/methamphetamine = 10, /datum/reagent/toxin/acid = 2) + mob_react = FALSE + reaction_flags = REACTION_INSTANT + reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING + +/datum/chemical_reaction/meth_crystal/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) + var/location = get_turf(holder.my_atom) + + // Calculate purity ignoring sulfuric acid + var/total_nonacid = 0 + var/meth_amt_in_mix = 0 + for(var/datum/reagent/R in holder.reagent_list) + if(istype(R, /datum/reagent/toxin/acid)) + continue // acid doesn't count against purity + total_nonacid += R.volume + if(istype(R, /datum/reagent/drug/methamphetamine)) + meth_amt_in_mix += R.volume + + var/purity = (total_nonacid > 0) ? (meth_amt_in_mix / total_nonacid) : 0.5 //All this tints the crystal above blue purity. + + for(var/i in 1 to round(created_volume, CHEMICAL_VOLUME_ROUNDING)) + var/obj/item/food/drug/meth_crystal/new_crystal = new(location) + new_crystal.pixel_x = rand(-6, 6) + new_crystal.pixel_y = rand(-6, 6) + + var/effective_purity = 0 + if(purity > 0.9) + effective_purity = (purity - 0.9) / 0.1 + + new_crystal.color = BlendRGB("#FAFAFA", "#78C8FA", effective_purity) + + if(new_crystal.reagents) + new_crystal.reagents.clear_reagents() + var/meth_amt = 10 + new_crystal.reagents.add_reagent(/datum/reagent/drug/methamphetamine, meth_amt) + var/imp_amt = round(meth_amt * (1 - purity) * 0.25, 0.1) + if(imp_amt > 0) + new_crystal.reagents.add_reagent(/datum/reagent/consumable/failed_reaction, imp_amt) + /datum/chemical_reaction/bath_salts results = list(/datum/reagent/drug/bath_salts = 7) required_reagents = list(/datum/reagent/toxin/bad_food = 1, /datum/reagent/saltpetre = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/consumable/enzyme = 1, /datum/reagent/consumable/tea = 1, /datum/reagent/mercury = 1) diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index 8694499586e..b293a527e73 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -186,6 +186,11 @@ list_reagents = list(/datum/reagent/medicine/c2/aiuri = 2, /datum/reagent/medicine/granibitaluri = 8) icon_state = "bandaid_burn" +/obj/item/reagent_containers/applicator/patch/fent + name = "unmarked patch" + desc = "An unmarked, unlabeled transdermal patch for you to wear!" + list_reagents = list(/datum/reagent/toxin/fentanyl = 2) + /obj/item/reagent_containers/applicator/patch/synthflesh name = "synthflesh patch" desc = "Helps with brute and burn injuries. Slightly toxic. Three patches applied can restore a corpse husked by burns." diff --git a/code/modules/research/designs/autolathe/materials.dm b/code/modules/research/designs/autolathe/materials.dm index cc07a59ea7e..8fdc01234ce 100644 --- a/code/modules/research/designs/autolathe/materials.dm +++ b/code/modules/research/designs/autolathe/materials.dm @@ -130,3 +130,36 @@ RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, ) + +/datum/design/bs_crystal + name = "Bluespace Crystal" + id = "bscrystal" + build_type = AUTOLATHE + materials = list(/datum/material/bluespace = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/sheet/bluespace_crystal + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design/mythril + name = "Mythril" + id = "mythril" + build_type = AUTOLATHE + materials = list(/datum/material/mythril = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/sheet/mineral/mythril + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design/alien_alloy + name = "Alien Alloy" + id = "allienalloy" + build_type = AUTOLATHE + materials = list(/datum/material/alloy/alien = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/sheet/mineral/abductor + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index dd1298af175..f3fa22a6824 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -1162,3 +1162,21 @@ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +// Anomaly locked item + +/datum/design/space_furnace + name = "Space Furnace" + desc = "A heavy furnace capable of forming a temporary bubble that holds in breathable air. Requires a pyroclastic anomaly core to function." + id = "space_furnace" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, + /datum/material/silver = SHEET_MATERIAL_AMOUNT*2.5, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2.5, + ) + build_path = /obj/item/flashlight/lamp/space_bubble + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/techweb/nodes/research_nodes.dm b/code/modules/research/techweb/nodes/research_nodes.dm index 41222be25bb..bf22457c7ba 100644 --- a/code/modules/research/techweb/nodes/research_nodes.dm +++ b/code/modules/research/techweb/nodes/research_nodes.dm @@ -80,6 +80,7 @@ "anomaly_refinery", "anomaly_neutralizer", "reactive_armour", + "space_furnace", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) announce_channels = list(RADIO_CHANNEL_SCIENCE) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 3829de47517..119d238472b 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -214,10 +214,9 @@ arm_owner.dropItemToGround(arm_owner.get_item_for_held_index(held_index), 1) . = ..() if(arm_owner.handcuffed) - arm_owner.handcuffed.forceMove(drop_location()) - arm_owner.handcuffed.dropped(arm_owner) + var/obj/item/lost_cuffs = arm_owner.handcuffed arm_owner.set_handcuffed(null) - arm_owner.update_handcuffed() + arm_owner.dropItemToGround(lost_cuffs, force = TRUE) if(arm_owner.hud_used) var/atom/movable/screen/inventory/hand/associated_hand = arm_owner.hud_used.hand_slots["[held_index]"] associated_hand?.update_appearance() @@ -230,13 +229,8 @@ . = ..() if(special || !leg_owner) return - if(leg_owner.legcuffed) - leg_owner.legcuffed.forceMove(drop_location()) - leg_owner.legcuffed.dropped(leg_owner) - leg_owner.legcuffed = null - leg_owner.update_worn_legcuffs() - if(leg_owner.shoes) - leg_owner.dropItemToGround(leg_owner.shoes, force = TRUE) + leg_owner.dropItemToGround(leg_owner.legcuffed, force = TRUE) + leg_owner.dropItemToGround(leg_owner.shoes, force = TRUE) /obj/item/bodypart/head/drop_limb(special, dismembered, move_to_floor = TRUE) if(!special) diff --git a/code/modules/surgery/bodyparts/head_hair_and_lips.dm b/code/modules/surgery/bodyparts/head_hair_and_lips.dm index 7479a4a0dea..daf99b4976d 100644 --- a/code/modules/surgery/bodyparts/head_hair_and_lips.dm +++ b/code/modules/surgery/bodyparts/head_hair_and_lips.dm @@ -11,17 +11,10 @@ LAZYNULL(hair_masks) if(human_head_owner) for(var/obj/item/worn_item in human_head_owner.get_equipped_items()) - if(worn_item.flags_inv & HIDEHAIR) - hair_hidden = TRUE - if(worn_item.flags_inv & HIDEFACIALHAIR) - facial_hair_hidden = TRUE if(worn_item.hair_mask) LAZYSET(hair_masks, worn_item.hair_mask, TRUE) - - //invisibility and husk stuff - if(HAS_TRAIT(human_head_owner, TRAIT_INVISIBLE_MAN) || HAS_TRAIT(human_head_owner, TRAIT_HUSK)) - hair_hidden = TRUE - facial_hair_hidden = TRUE + hair_hidden = !!(human_head_owner.obscured_slots & HIDEHAIR) + facial_hair_hidden = !!(human_head_owner.obscured_slots & HIDEFACIALHAIR) if(is_husked) hair_hidden = TRUE facial_hair_hidden = TRUE diff --git a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm index c0a87e9bf90..00544aa97f2 100644 --- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm @@ -65,7 +65,7 @@ var/uniform_compatible = isnull(worn_uniform) \ || (worn_uniform.supports_variations_flags & DIGITIGRADE_VARIATIONS) \ || !(worn_uniform.body_parts_covered & LEGS) \ - || (worn_suit?.flags_inv & HIDEJUMPSUIT) // If suit hides our jumpsuit, it doesn't matter if it squishes + || (obscured_slots & HIDEJUMPSUIT) // If suit hides our jumpsuit, it doesn't matter if it squishes var/suit_compatible = isnull(worn_suit) \ || (worn_suit.supports_variations_flags & DIGITIGRADE_VARIATIONS) \ diff --git a/code/modules/surgery/organs/external/_visual_organs.dm b/code/modules/surgery/organs/external/_visual_organs.dm index fe1d4f5ead8..cebcc1f0853 100644 --- a/code/modules/surgery/organs/external/_visual_organs.dm +++ b/code/modules/surgery/organs/external/_visual_organs.dm @@ -123,12 +123,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times dyable = TRUE /datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR)) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) /datum/bodypart_overlay/mutant/horns/get_global_feature_list() return SSaccessories.sprite_accessories["horns"] // SKYRAT EDIT - Customization - ORIGINAL: return SSaccessories.horns_list @@ -155,12 +150,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times feature_key = FEATURE_FRILLS /datum/bodypart_overlay/mutant/frills/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if(!(human.head?.flags_inv & HIDEEARS)) - return TRUE - return FALSE + return !(bodypart_owner.owner?.obscured_slots & HIDEEARS) /datum/bodypart_overlay/mutant/frills/get_global_feature_list() return SSaccessories.sprite_accessories["frills"] // SKYRAT EDIT - Customization - ORIGINAL: return SSaccessories.frills_list @@ -189,12 +179,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times feature_key = FEATURE_SNOUT /datum/bodypart_overlay/mutant/snout/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if((human.head?.flags_inv & HIDESNOUT) || (human.wear_mask?.flags_inv & HIDESNOUT)) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDESNOUT) /datum/bodypart_overlay/mutant/snout/get_global_feature_list() return SSaccessories.sprite_accessories["snout"] // SKYRAT EDIT - Customization - ORIGINAL : return SSaccessories.snouts_list @@ -287,12 +272,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times if(!.) return // BUBBER EDIT ADDITION END: Customization - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if(!(human.head?.flags_inv & HIDEANTENNAE)) - return TRUE - return FALSE + return !(bodypart_owner.owner?.obscured_slots & HIDEANTENNAE) ///The leafy hair of a podperson /obj/item/organ/pod_hair @@ -338,9 +318,4 @@ Unlike normal organs, we're actually inside a persons limbs at all times overlay.color = null /datum/bodypart_overlay/mutant/pod_hair/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR)) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) diff --git a/code/modules/surgery/organs/external/spines.dm b/code/modules/surgery/organs/external/spines.dm index 808106e9786..1ca48b3303e 100644 --- a/code/modules/surgery/organs/external/spines.dm +++ b/code/modules/surgery/organs/external/spines.dm @@ -38,12 +38,7 @@ return SSaccessories.sprite_accessories["spines"] // SKYRAT EDIT - Customization - ORIGINAL: return SSaccessories.spines_list /datum/bodypart_overlay/mutant/spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if(human.wear_suit?.flags_inv & HIDEJUMPSUIT) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDEJUMPSUIT) /datum/bodypart_overlay/mutant/spines/set_dye_color(new_color, obj/item/organ/tail/organ) var/obj/item/organ/tail/tail = organ?.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) diff --git a/code/modules/surgery/organs/external/tails.dm b/code/modules/surgery/organs/external/tails.dm index acc68dd5d64..bcfc4951b2b 100644 --- a/code/modules/surgery/organs/external/tails.dm +++ b/code/modules/surgery/organs/external/tails.dm @@ -158,12 +158,7 @@ // SKYRAT EDIT ADDITION END /datum/bodypart_overlay/mutant/tail/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if(human.wear_suit?.flags_inv & HIDEJUMPSUIT) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDEJUMPSUIT) /obj/item/organ/tail/cat name = "tail" @@ -296,12 +291,7 @@ return (!isnull(tail_spine_key) ? "[tail_spine_key]_" : "") + (wagging ? "wagging_" : "") + sprite_datum.icon_state // Select the wagging state if appropriate /datum/bodypart_overlay/mutant/tail_spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if(human.wear_suit?.flags_inv & HIDEJUMPSUIT) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDEJUMPSUIT) /datum/bodypart_overlay/mutant/tail_spines/set_dye_color(new_color, obj/item/organ/organ) dye_color = new_color //no update_body_parts() call, tail/set_dye_color will do it. diff --git a/code/modules/surgery/organs/external/wings/functional_wings.dm b/code/modules/surgery/organs/external/wings/functional_wings.dm index e1bb0b94039..9fd8da6545d 100644 --- a/code/modules/surgery/organs/external/wings/functional_wings.dm +++ b/code/modules/surgery/organs/external/wings/functional_wings.dm @@ -82,8 +82,8 @@ if(human.stat || human.body_position == LYING_DOWN || isnull(human.client)) return FALSE //Jumpsuits have tail holes, so it makes sense they have wing holes too - if(!cant_hide && human.wear_suit && ((human.wear_suit.flags_inv & HIDEJUMPSUIT) && (!human.wear_suit.species_exception || !is_type_in_list(src, human.wear_suit.species_exception)))) - to_chat(human, span_warning("Your suit blocks your wings from extending!")) + if(!cant_hide && (human.obscured_slots & HIDEJUMPSUIT)) + to_chat(human, span_warning("Your clothing blocks your wings from extending!")) return FALSE var/turf/location = get_turf(human) if(!location) diff --git a/code/modules/surgery/organs/external/wings/moth_wings.dm b/code/modules/surgery/organs/external/wings/moth_wings.dm index 703e5be3d41..12383051c7e 100644 --- a/code/modules/surgery/organs/external/wings/moth_wings.dm +++ b/code/modules/surgery/organs/external/wings/moth_wings.dm @@ -54,11 +54,7 @@ return FALSE if(owner.has_gravity()) return FALSE - if(ishuman(owner)) - var/mob/living/carbon/human/human_owner = owner - if(human_owner.wear_suit?.flags_inv & HIDEMUTWINGS) - return FALSE //Can't fly with hidden wings - if(burnt) + if((owner.obscured_slots & HIDEMUTWINGS) || burnt) return FALSE var/datum/gas_mixture/current = owner.loc.return_air() if(current && (current.return_pressure() >= ONE_ATMOSPHERE*0.85)) @@ -119,12 +115,7 @@ if(!.) return // BUBBER EDIT ADDITION END - Customization - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if(human.wear_suit?.flags_inv & HIDEMUTWINGS) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDEMUTWINGS) /datum/bodypart_overlay/mutant/wings/moth/get_base_icon_state() return burnt ? burn_datum.icon_state : sprite_datum.icon_state diff --git a/code/modules/surgery/organs/external/wings/wings.dm b/code/modules/surgery/organs/external/wings/wings.dm index 0c42a9784ca..a801f9720da 100644 --- a/code/modules/surgery/organs/external/wings/wings.dm +++ b/code/modules/surgery/organs/external/wings/wings.dm @@ -25,14 +25,4 @@ feature_key = FEATURE_WINGS /datum/bodypart_overlay/mutant/wings/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if(!human.wear_suit) - return TRUE - if(!(human.wear_suit.flags_inv & HIDEJUMPSUIT)) - return TRUE - if(human.wear_suit.species_exception && is_type_in_list(src, human.wear_suit.species_exception)) - return TRUE - return FALSE - + return !(bodypart_owner.owner?.obscured_slots & HIDEJUMPSUIT) diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm index 061ff234de7..0c684e0d246 100644 --- a/code/modules/surgery/organs/internal/ears/_ears.dm +++ b/code/modules/surgery/organs/internal/ears/_ears.dm @@ -178,12 +178,7 @@ return SSaccessories.sprite_accessories["ears"] // SKYRAT EDIT - Customization - ORIGINAL: return SSaccessories.ears_list /datum/bodypart_overlay/mutant/cat_ears/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - var/mob/living/carbon/human/human = bodypart_owner.owner - if(!istype(human)) - return TRUE - if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR)) - return FALSE - return TRUE + return !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) /datum/bodypart_overlay/mutant/cat_ears/get_image(image_layer, obj/item/bodypart/limb) var/mutable_appearance/base_ears = ..() diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm index 937b3a7b3a5..70c284aa2db 100644 --- a/code/modules/surgery/organs/internal/eyes/_eyes.dm +++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -275,8 +275,7 @@ var/mutable_appearance/eye_right = mutable_appearance(eye_icon, "[eye_icon_state]_r", -eyes_layer, parent) // SKYRAT EDIT CHANGE - Customization - ORIGINAL: var/mutable_appearance/eye_right = mutable_appearance('icons/mob/human/human_face.dmi', "[eye_icon_state]_r", -EYES_LAYER, parent) var/list/overlays = list(eye_left, eye_right) - var/obscured = parent.check_obscured_slots() - if(overlay_ignore_lighting && !(obscured & ITEM_SLOT_EYES)) + if(overlay_ignore_lighting && !(parent.obscured_slots & HIDEEYES)) overlays += emissive_appearance(eye_left.icon, eye_left.icon_state, parent, -EYES_LAYER, alpha = eye_left.alpha) overlays += emissive_appearance(eye_right.icon, eye_right.icon_state, parent, -EYES_LAYER, alpha = eye_right.alpha) @@ -470,7 +469,8 @@ /// Animates one eyelid at a time, thanks BYOND and thanks animation chains /obj/item/organ/eyes/proc/animate_eyelid(obj/effect/abstract/eyelid_effect/eyelid, mob/living/carbon/human/parent, sync_blinking = TRUE, list/anim_times = null) . = list() - + if(isnull(eyelid)) // Can't blink if we don't have an eyelid + return var/prevent_loops = HAS_TRAIT(parent, TRAIT_PREVENT_BLINK_LOOPS) animate(eyelid, alpha = 0, time = 0, loop = (prevent_loops ? 0 : -1)) diff --git a/code/modules/unit_tests/screenshots/screenshot_digi_leg_test.png b/code/modules/unit_tests/screenshots/screenshot_digi_leg_test.png index a8e3dfe648a..8fb16d008fe 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_digi_leg_test.png and b/code/modules/unit_tests/screenshots/screenshot_digi_leg_test.png differ diff --git a/code/modules/unit_tests/strippable.dm b/code/modules/unit_tests/strippable.dm index 47a76a1ca75..36083804b15 100644 --- a/code/modules/unit_tests/strippable.dm +++ b/code/modules/unit_tests/strippable.dm @@ -25,7 +25,6 @@ var/handcuffs = allocate(/obj/item/restraints/handcuffs, user) user.forceMove(target.loc) user.set_handcuffed(handcuffs) - user.update_handcuffed() TEST_ASSERT_EQUAL(strip_menu.ui_status(user, ui_state), UI_UPDATE, "Being within range but cuffed was not update-only.") user.set_handcuffed(null) qdel(handcuffs) diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm index c3545fc0edf..d4dbc1257f6 100644 --- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm +++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm @@ -668,7 +668,6 @@ if(autocuff && iscarbon(target)) var/mob/living/carbon/carbontarget = target carbontarget.set_handcuffed(new cuff_type(carbontarget)) - carbontarget.update_handcuffed() return if(istype(target, /obj/machinery/door)) diff --git a/code/modules/vehicles/mecha/mecha_defense.dm b/code/modules/vehicles/mecha/mecha_defense.dm index 5bb9084c550..3dcd5835b2e 100644 --- a/code/modules/vehicles/mecha/mecha_defense.dm +++ b/code/modules/vehicles/mecha/mecha_defense.dm @@ -269,6 +269,8 @@ return part.try_attach_part(user, src, FALSE) if(is_wire_tool(tool) && (mecha_flags & PANEL_OPEN)) + if(user.combat_mode) + return if(wires.interact(user)) return ITEM_INTERACT_SUCCESS diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index 98ad3e37376..79bc6a33b44 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -91,6 +91,8 @@ /obj/item/reagent_containers/cup/bottle/salglu_solution = 3, /obj/item/reagent_containers/cup/bottle/toxin = 3, /obj/item/reagent_containers/syringe/antiviral = 6, + /obj/item/reagent_containers/medigel/libital = 2, + /obj/item/reagent_containers/medigel/aiuri = 2, /obj/item/reagent_containers/medigel/sterilizine = 6, // BUBBER EDIT CHANGE - ORIGINAL: 3 ) contraband = list( diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm index 53027e5b7df..0b7bc91aac2 100644 --- a/code/modules/vending/medical_wall.dm +++ b/code/modules/vending/medical_wall.dm @@ -6,19 +6,20 @@ panel_type = "wallmed-panel" density = FALSE products = list( - /obj/item/stack/medical/bandage = 1, - /obj/item/stack/medical/ointment = 1, - /obj/item/stack/medical/gauze = 1, - /obj/item/reagent_containers/hypospray/medipen/ekit = 1, - /obj/item/healthanalyzer/simple = 1, + /obj/item/stack/medical/bandage = 4, + /obj/item/stack/medical/ointment = 2, + /obj/item/reagent_containers/applicator/pill/multiver = 2, + /obj/item/stack/medical/gauze = 4, + /obj/item/reagent_containers/hypospray/medipen/ekit = 2, + /obj/item/healthanalyzer/simple = 2, ) contraband = list( /obj/item/storage/box/bandages = 1, /obj/item/storage/box/gum/happiness = 1, ) premium = list( - /obj/item/reagent_containers/applicator/patch/libital = 1, - /obj/item/reagent_containers/applicator/patch/aiuri = 1, + /obj/item/reagent_containers/applicator/patch/libital = 2, + /obj/item/reagent_containers/applicator/patch/aiuri = 2, ) refill_canister = /obj/item/vending_refill/wallmed default_price = PAYCHECK_CREW * 0.3 // Cheap since crew should be able to affort it in emergency situations diff --git a/code/modules/vending/vendor/inventory.dm b/code/modules/vending/vendor/inventory.dm index 25b133025e0..8955e1002ab 100644 --- a/code/modules/vending/vendor/inventory.dm +++ b/code/modules/vending/vendor/inventory.dm @@ -273,7 +273,7 @@ var/datum/bank_account/account = paying_id_card.registered_account //deduct money from person - if(!discountless && account.account_job.paycheck_department == payment_department) + if(!discountless && account.account_job?.paycheck_department == payment_department) price_to_use = max(round(price_to_use * DEPARTMENT_DISCOUNT), 1) //No longer free, but signifigantly cheaper. if(attempt_charge(src, mob_paying, price_to_use) & COMPONENT_OBJ_CANCEL_CHARGE) speak("You do not possess the funds to purchase [product_to_vend.name].") diff --git a/code/modules/wiremod/core/component_printer.dm b/code/modules/wiremod/core/component_printer.dm index bece40978eb..c1f39f3d48d 100644 --- a/code/modules/wiremod/core/component_printer.dm +++ b/code/modules/wiremod/core/component_printer.dm @@ -390,7 +390,7 @@ . = ..() if (.) return - var/obj/item/card/id/advanced/user_card = astype(usr, /mob/living)?.get_idcard() + var/alist/user_data = ID_DATA(usr) switch (action) if ("print") @@ -401,14 +401,14 @@ var/list/design = scanned_designs[design_id] - if (!materials.can_use_resource(user_card)) + if (!materials.can_use_resource(user_data = user_data)) return TRUE if (!materials.mat_container.has_materials(design["materials"], efficiency_coeff)) say("Not enough materials.") return TRUE - materials.use_materials(design["materials"], efficiency_coeff, 1, "processed", design["name"], user_card) + materials.use_materials(design["materials"], efficiency_coeff, 1, design["name"], design["materials"], user_data = user_data) print_module(design) balloon_alert_to_viewers("printed [design["name"]]") if ("remove_mat") diff --git a/dependencies.sh b/dependencies.sh index 910fc9d0281..56596e18d39 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -17,7 +17,7 @@ export NODE_VERSION_LTS=22.11.0 export BUN_VERSION=1.2.16 # SpacemanDMM git tag -export SPACEMAN_DMM_VERSION=suite-1.10 +export SPACEMAN_DMM_VERSION=suite-1.11 # Python version for mapmerge and other tools export PYTHON_VERSION=3.9.0 diff --git a/html/changelogs/AutoChangeLog-pr-92803.yml b/html/changelogs/AutoChangeLog-pr-92803.yml deleted file mode 100644 index 05b0171c189..00000000000 --- a/html/changelogs/AutoChangeLog-pr-92803.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SmArtKar" -delete-after: True -changes: - - admin: "Clientless mobs no longer log their emotes" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-92849.yml b/html/changelogs/AutoChangeLog-pr-92849.yml new file mode 100644 index 00000000000..d0b4abd9a06 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-92849.yml @@ -0,0 +1,6 @@ +author: "SyncIt21" +delete-after: True +changes: + - qol: "hand crafted air sensors now auto connect to input & output ports if they are located within a 4 tile radius from it" + - qol: "atmos control monitors now locate all air sensors nearest to in on that same z level meaning you can have multiple air sensors of the same type on the same map" + - refactor: "refactored how air sensors & atmos monitors connect to each other. Please report any atmos computers that have missing input valves/output ports on their connected air sensors or those that don't list any air sensors at all on github" \ No newline at end of file diff --git a/html/changelogs/archive/2025-09.yml b/html/changelogs/archive/2025-09.yml index fd0e72de5eb..12b37290680 100644 --- a/html/changelogs/archive/2025-09.yml +++ b/html/changelogs/archive/2025-09.yml @@ -152,3 +152,136 @@ - bugfix: prevents eaten remote signalers from following you between bodies nikothedude: - bugfix: Player-controlled medbots can now inject chloral on healthy targets +2025-09-08: + Aliceee2ch: + - bugfix: Fixed oversight from "Material tab for the autolathe" PR. You can now + eject BS crystals, allien alloy and mythril from autolathe. + - bugfix: Fixed wires interaction and fixed mech multitool/wirecutters interaction. + Krysonism: + - balance: vatbeasts, mega arachnids and butterbears now attack much quicker, in + line with their old player controlled attack speed. + Melber: + - balance: Advanced first aid kits in the bridge are back to being normal first + aid kids + - balance: Emergency Nanomed vendors have larger stocks and better supplies + - rscadd: Replaces a majority of Emergency Nanomeds on stations and shuttles with + Deforest First Aid Stations. Left clicking these stationary machines will heal + minor damage and blood loss over time - at a (small) price. Right clicking them + will provide gauze, also for a price. All costs are waived on shuttles, during + red alert, or for medical staff. You can also click-drag to have other mobs + use the machine. However, robotic limbs need not apply. + Melbert: + - rscdel: Golems which somehow manage to grow wings and somehow manage to equip + something that covers their jumpsuit can no longer fly. (Seriously, this will + not affect anyone) + - refactor: Refactored clothing obscurity entirely. Items should be a loooot more + consistent and what covers what, and should update a lot snappier. As always, + report any oddities, like mysteriously disappearing articles of clothing, hair, + or species parts + SmArtKar: + - bugfix: Fixed organ fishing blocking alternate material rod loot from spawning + - rscadd: Toilets now require plumbing or water reclaimers to function, and can + get clogged by small items. + - bugfix: Trying to use plungers on plumbing objects will no longer hit them after + finishing the interaction. + - code_imp: Updated toilet item interaction code + - bugfix: Fixed mobs without guaranteed butcher drops not dropping any crusher trophies + - admin: Clientless mobs no longer log their emotes + Stonetear: + - refactor: MODsuit module code now knows who clicked the activation button. + SyncIt21: + - bugfix: ore silo id restriction button in the UI now changes text & colour correctly + - bugfix: ore silo id restriction is now only enforced for station loaded silo and + is optional in other cases + - bugfix: no runtime for vendors using department cards + - bugfix: the map reader now reads null & 0 values into lists + - bugfix: the map reader now parses associative lists(maps/alists) correctly in + cases where = sign is embedded within a string + - bugfix: the map reader now parses associative lists(maps/alists) who's values + themselves can be lists + - bugfix: the map reader can now parse nested lists to any degree + - bugfix: Chemmaster highlights selected icon & has its window scaled up + - bugfix: zombie powder works through inhale(now faster acting)/ingest again + Webcomicartist: + - qol: The slot machine spins faster, allowing for more time-efficient gambling. + Xander3359: + - refactor: change some attack procs to use item interaction + arbuzik456: + - rscadd: Added tongue emote mechanic where you can stick out your tongue + lelandkemble: + - bugfix: Arcade machine experiment now succeeds on output rather than input of + tickets + - spellcheck: Fixes a bunch of manual's formatting, and updates Chef Recipes + - bugfix: Escape pods no longer have planetary gravity + - bugfix: tooltip for secure briefcases now shows correct button. + - qol: You can now hear heart attacks with a stethoscope + loganuk: + - bugfix: Stops coffee machines having melee god mode + - qol: Right clicking on coffee machine without coffee pot has correct message + necromanceranne: + - balance: The Multiphase X-01 has 12 lethal shots to match the capacity of the + standard energy gun. + - qol: Lets you rename the smoothbore disabler. + pebis36012: + - bugfix: Splattercasting touch spells no longer give infinite blood + sushi: + - bugfix: force say works again + - bugfix: crates and other objects causing elevation will no longer leave behind + magic elevating turfs upon destruction + - rscadd: recyclers will now deconstruct non-item objects that they eat instead + of just deleting them + uaioy: + - balance: wizard modsuit shield recharges slower + vinylspiders: + - bugfix: dead bodies in the morgue will no longer try to blink +2025-09-09: + Bisar: + - bugfix: The .tsx code for Ore Silo logs will now catch nulls instead of TBing. + - bugfix: Fixed ANOTHER place where user_data for an ore silo log wasn't set correctly. + JohnFulpWillard, sprites by PopLop: + - rscadd: Added a new pyroclastic anomaly locked item, the Space Furnace. Grants + space immunity to people nearby while active. + Xander3359: + - balance: Downgraded CE tools to T1 instead of T2 + lelandkemble: + - rscdel: you can't grill a bone into a steak anymore + loganuk: + - bugfix: Fixes using syndie graffiti spray/crayon writing while zero grav drifting + nikothedude: + - rscadd: 2 aiuri and 2 libital cans to nanodrug plus + - rscadd: Asthma quirk, based on IRL asthma + - rscadd: Inhalers, a new reagent administering method that uses INHALE + - rscadd: Albuterol, a new reagent that increases the amount of gas you inhale by + 40% + - balance: Inverse convermol now forms once the reaction is done, not on metabolize + sushi: + - rscadd: water vapor on a turf will now also wash radiation off of the items on + it +2025-09-10: + Ghommie: + - balance: sand is now made of sand and not glass. Get a welder if you plan to shove + it into a protolathe. + - rscdel: Removed now useless sand blocks. + - bugfix: Crafting recipes with tools such as wirecutters, wrenches, screwdrivers + etc. should take the right amount of time to complete. + SmArtKar: + - qol: Significantly improved MODtether behavior, they should be easier to work + with now. + - bugfix: Fixed multiple MODtethers bugs and a potential server crash related to + them. + - bugfix: Fixed foam sometimes passing through directional windows. + SyncIt21: + - bugfix: map export won't break exported gas strings & other that depend on semicolon + - code_imp: non ascii chars inside lists in map files can be read without error + loganuk: + - map: Catwalk lower Science changes [C.A.T] + massaheartsu: + - rscadd: Added meth, opium, and their production! Also added to black market uplink. + - rscadd: Added a craftable glass pipe. + - rscadd: Added to contraband spawners. + - qol: Can now insert any drug item into a pipe. + - bugfix: Spacemen can now smoke meth without exploding!! + timothymtorres: + - bugfix: Santa has put cargo in his very naughty list for spam producing his presents + by dumpster diving. This fixes Christmas presents (and other holiday items) + from spawning inside dumpsters. diff --git a/icons/effects/fields.dmi b/icons/effects/fields.dmi index 1e428707876..a9394b6ab06 100644 Binary files a/icons/effects/fields.dmi and b/icons/effects/fields.dmi differ diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index d73e28d1aec..48d7f64893e 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi index 7c2d6d324a5..ed570225bdc 100644 Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ diff --git a/icons/mob/human/emote_visuals.dmi b/icons/mob/human/emote_visuals.dmi index 8a29603850f..8880693066d 100644 Binary files a/icons/mob/human/emote_visuals.dmi and b/icons/mob/human/emote_visuals.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index f38ce001619..8dacbfca894 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 4639b290fe3..cb1a99ea114 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi index 7b155f73216..1b8a7f58af0 100644 Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index d5fc9993549..4d5ec832827 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/machines/wall_healer.dmi b/icons/obj/machines/wall_healer.dmi new file mode 100644 index 00000000000..f09ad6f7339 Binary files /dev/null and b/icons/obj/machines/wall_healer.dmi differ diff --git a/icons/obj/medical/drugs.dmi b/icons/obj/medical/drugs.dmi index 21c52523ed1..8afa6d309d5 100644 Binary files a/icons/obj/medical/drugs.dmi and b/icons/obj/medical/drugs.dmi differ diff --git a/icons/obj/storage/box.dmi b/icons/obj/storage/box.dmi index 58b67dc3779..23e5a8428a3 100644 Binary files a/icons/obj/storage/box.dmi and b/icons/obj/storage/box.dmi differ diff --git a/strings/tips.txt b/strings/tips.txt index 6bd118ffb07..0eba101a1c0 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -317,3 +317,4 @@ As the Captain, your sabre deals extra damage to Assistants (as long as they hav You can automatically extract and retract arm implants by 'activating' the empty hand they're on. This includes integrated toolsets, cursed katanas, and vorpal scythes. You can combine the Carpet reagent with various different reagents, such as Oil and Cyanide, to create unique carpet types. You can bake a birthday cake and then microwave it to create a legendary cake hat. You can then combine it with an energy sword to create an energy cake. +You can quickly remove radiation from items in a room by releasing water vapor into the air around them (including worn items). diff --git a/tgstation.dme b/tgstation.dme index f031eecf254..84f77ec5ed0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1946,8 +1946,10 @@ #include "code\datums\proximity_monitor\field.dm" #include "code\datums\proximity_monitor\proximity_monitor.dm" #include "code\datums\proximity_monitor\fields\ai_target_tracking.dm" +#include "code\datums\proximity_monitor\fields\bubble.dm" #include "code\datums\proximity_monitor\fields\gravity.dm" #include "code\datums\proximity_monitor\fields\heretic_arena.dm" +#include "code\datums\proximity_monitor\fields\space_protection.dm" #include "code\datums\proximity_monitor\fields\timestop.dm" #include "code\datums\proximity_monitor\fields\void_storm.dm" #include "code\datums\proximity_monitor\fields\projectile_dampener\projectile_dampener.dm" @@ -2352,6 +2354,7 @@ #include "code\game\machinery\teambuilder.dm" #include "code\game\machinery\teleporter.dm" #include "code\game\machinery\transformer.dm" +#include "code\game\machinery\wall_healer.dm" #include "code\game\machinery\washing_machine.dm" #include "code\game\machinery\wishgranter.dm" #include "code\game\machinery\camera\camera.dm" diff --git a/tgui/packages/tgui-say/TguiSay.tsx b/tgui/packages/tgui-say/TguiSay.tsx index 785891e9f41..fc3cdc2a34a 100644 --- a/tgui/packages/tgui-say/TguiSay.tsx +++ b/tgui/packages/tgui-say/TguiSay.tsx @@ -27,13 +27,11 @@ export function TguiSay() { const chatHistory = useRef(new ChatHistory()); const messages = useRef(byondMessages); const scale = useRef(true); + const currentPrefix = useRef(null); // I initially wanted to make these an object or a reducer, but it's not really worth it. // You lose the granulatity and add a lot of boilerplate. const [buttonContent, setButtonContent] = useState(''); - const [currentPrefix, setCurrentPrefix] = useState< - keyof typeof RADIO_PREFIXES | null - >(null); const [lightMode, setLightMode] = useState(false); const [maxLength, setMaxLength] = useState(1024); const [size, setSize] = useState(WindowSize.Small); @@ -42,6 +40,10 @@ export function TguiSay() { const position = useRef([window.screenX, window.screenY]); const isDragging = useRef(false); + function setCurrentPrefix(prefix: keyof typeof RADIO_PREFIXES | null): void { + currentPrefix.current = prefix; + } + function handleArrowKeys(direction: KEY.Up | KEY.Down): void { const chat = chatHistory.current; const iterator = channelIterator.current; @@ -77,10 +79,10 @@ export function TguiSay() { // User is on a chat history message if (!chat.isAtLatest()) { chat.reset(); - setButtonContent(currentPrefix ?? iterator.current()); + setButtonContent(currentPrefix.current ?? iterator.current()); // Empty input, resets the channel - } else if (currentPrefix && iterator.isSay() && value?.length === 0) { + } else if (currentPrefix.current && iterator.isSay() && value?.length === 0) { setCurrentPrefix(null); setButtonContent(iterator.current()); } @@ -123,7 +125,7 @@ export function TguiSay() { function handleEnter(): void { const iterator = channelIterator.current; - const prefix = currentPrefix ?? ''; + const prefix = currentPrefix.current ?? ''; if (value?.length && value.length < maxLength) { chatHistory.current.add(value); @@ -138,15 +140,16 @@ export function TguiSay() { function handleForceSay(): void { const iterator = channelIterator.current; + const currentValue = innerRef.current?.value; // Only force say if we're on a visible channel and have typed something - if (!value || iterator.isVisible()) return; + if (!currentValue || !iterator.isVisible()) return; - const prefix = currentPrefix ?? ''; - const grunt = iterator.isSay() ? prefix + value : value; + const prefix = currentPrefix.current ?? ''; + const grunt = iterator.isSay() ? prefix + currentValue : currentValue; messages.current.forceSayMsg(grunt, iterator.current()); - unloadChat(); + handleClose(); } function handleIncrementChannel(): void { @@ -162,9 +165,9 @@ export function TguiSay() { const iterator = channelIterator.current; let newValue = event.currentTarget.value; - const newPrefix = getPrefix(newValue) || currentPrefix; + const newPrefix = getPrefix(newValue) || currentPrefix.current; // Handles switching prefixes - if (newPrefix && newPrefix !== currentPrefix) { + if (newPrefix && newPrefix !== currentPrefix.current) { setButtonContent(RADIO_PREFIXES[newPrefix]); setCurrentPrefix(newPrefix); newValue = newValue.slice(3); @@ -268,7 +271,7 @@ export function TguiSay() { const theme = (lightMode && 'lightMode') || - (currentPrefix && RADIO_PREFIXES[currentPrefix]) || + (currentPrefix.current && RADIO_PREFIXES[currentPrefix.current]) || channelIterator.current.current(); return ( diff --git a/tgui/packages/tgui/interfaces/ChemMaster.tsx b/tgui/packages/tgui/interfaces/ChemMaster.tsx index 94b6f2f34d0..77767a078bc 100644 --- a/tgui/packages/tgui/interfaces/ChemMaster.tsx +++ b/tgui/packages/tgui/interfaces/ChemMaster.tsx @@ -5,8 +5,8 @@ import { Button, ColorBox, Divider, - DmIcon, Icon, + ImageButton, LabeledList, NumberInput, ProgressBar, @@ -406,36 +406,28 @@ const ContainerButton = (props: CategoryButtonProps) => { key={container.ref} content={`${capitalize(container.name)}\xa0(${container.volume}u)`} > - + /> ); }; diff --git a/tgui/packages/tgui/interfaces/DynamicTester.tsx b/tgui/packages/tgui/interfaces/DynamicTester.tsx index af86fff955b..13cd36fd392 100644 --- a/tgui/packages/tgui/interfaces/DynamicTester.tsx +++ b/tgui/packages/tgui/interfaces/DynamicTester.tsx @@ -70,7 +70,7 @@ export const DynamicTester = () => { act('set_tier', { tier: e })} @@ -81,7 +81,7 @@ export const DynamicTester = () => { act('set_num_players', { num_players: e })} diff --git a/tgui/packages/tgui/interfaces/ListInputWindow/ListInputModal.tsx b/tgui/packages/tgui/interfaces/ListInputWindow/ListInputModal.tsx index fb18ae8ad37..7a0a7ba20c2 100644 --- a/tgui/packages/tgui/interfaces/ListInputWindow/ListInputModal.tsx +++ b/tgui/packages/tgui/interfaces/ListInputWindow/ListInputModal.tsx @@ -9,7 +9,6 @@ import { KEY_Z, } from 'tgui-core/keycodes'; -import { useBackend } from '../../backend'; import { InputButtons } from '../common/InputButtons'; type ListInputModalProps = { @@ -21,8 +20,6 @@ type ListInputModalProps = { }; export const ListInputModal = (props: ListInputModalProps) => { - const { act } = useBackend(); - const { items = [], default_item, message, on_selected, on_cancel } = props; const [selected, setSelected] = useState(items.indexOf(default_item)); @@ -143,6 +140,7 @@ export const ListInputModal = (props: ListInputModalProps) => { { autoFocus autoSelect fluid - onEnter={() => { - act('submit', { entry: filteredItems[selected] }); - }} + onEnter={() => on_selected(filteredItems[selected])} onChange={onSearch} placeholder="Search..." value={searchQuery} @@ -173,14 +169,28 @@ export const ListInputModal = (props: ListInputModalProps) => { ); }; +interface ListDisplayProps { + filteredItems: string[]; + onClick: (itemIndex: number) => void; + onDoubleClick: (entry: string) => void; + onFocusSearch: () => void; + searchBarVisible: boolean; + selected: number; +} + /** * Displays the list of selectable items. * If a search query is provided, filters the items. */ -const ListDisplay = (props) => { - const { act } = useBackend(); - const { filteredItems, onClick, onFocusSearch, searchBarVisible, selected } = - props; +const ListDisplay = (props: ListDisplayProps) => { + const { + filteredItems, + onClick, + onDoubleClick, + onFocusSearch, + searchBarVisible, + selected, + } = props; return (
    @@ -190,13 +200,10 @@ const ListDisplay = (props) => { className="candystripe" color="transparent" fluid - id={index} + id={`${index}`} key={index} onClick={() => onClick(index)} - onDoubleClick={(event) => { - event.preventDefault(); - act('submit', { entry: filteredItems[selected] }); - }} + onDoubleClick={() => onDoubleClick(item)} onKeyDown={(event) => { const keyCode = window.event ? event.which : event.keyCode; if (searchBarVisible && keyCode >= KEY_A && keyCode <= KEY_Z) { diff --git a/tgui/packages/tgui/interfaces/OreSilo.tsx b/tgui/packages/tgui/interfaces/OreSilo.tsx index 9e48a87c0ae..ad6ce50d556 100644 --- a/tgui/packages/tgui/interfaces/OreSilo.tsx +++ b/tgui/packages/tgui/interfaces/OreSilo.tsx @@ -68,7 +68,7 @@ type Data = { logs: Log[]; // Banned users is a list of bank account datum IDs banned_users: number[]; - id_required: BooleanLike; + ID_required: BooleanLike; }; const actionToColor = { @@ -238,20 +238,22 @@ type LogsListProps = { const RestrictButton = () => { const { act, data } = useBackend(); - const { id_required } = data; + const { ID_required } = data; return ( - + + + ); }; @@ -332,10 +334,10 @@ const LogsList = (props: LogsListProps) => { const UserItem = (props: UserData) => { const { - name, - age, - assignment, - account_id, + name = 'NAME_RES_FAIL', + age = 0, + assignment = 'ASSGN-RES_FAIL', + account_id = 0, account_holder, account_assignment, accesses, diff --git a/tools/UpdatePaths/Scripts/92849_atmos_monitor_sensor_connect.txt b/tools/UpdatePaths/Scripts/92849_atmos_monitor_sensor_connect.txt new file mode 100644 index 00000000000..17dda3a68db --- /dev/null +++ b/tools/UpdatePaths/Scripts/92849_atmos_monitor_sensor_connect.txt @@ -0,0 +1,3 @@ +/obj/machinery/atmospherics/components/unary/vent_pump/@SUBTYPES{chamber_id=@ANY} : /obj/machinery/atmospherics/components/unary/vent_pump/@SUBTYPES{@OLD;chamber_id=@SKIP} +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/@SUBTYPES{chamber_id=@ANY} : /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/@SUBTYPES{@OLD;chamber_id=@SKIP} +