From d40a638793d67d258a5ac6902e83cbe1ff58fefd Mon Sep 17 00:00:00 2001 From: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> Date: Sun, 25 Jun 2023 22:50:34 -0400 Subject: [PATCH] TOTAL PLUMBING DEATH. MAXIMUM CYTOLOGY KILL. (#376) * BURN IT ALL DOWN * stragglers * maps * cool msg * more maps --- .../IceRuins/icemoon_surface_bughabitat.dmm | 11 +- _maps/RandomRuins/SpaceRuins/DJstation.dmm | 14 +- .../SpaceRuins/DJstation/quarters_1.dmm | 14 +- .../SpaceRuins/DJstation/quarters_2.dmm | 1 - .../SpaceRuins/DJstation/quarters_3.dmm | 20 +- .../SpaceRuins/DJstation/radioroom_1.dmm | 11 +- .../SpaceRuins/DJstation/radioroom_2.dmm | 14 +- .../SpaceRuins/DJstation/radioroom_3.dmm | 18 +- _maps/RandomRuins/SpaceRuins/hellfactory.dmm | 1735 ------------ _maps/map_files/MetaStation/MetaStation.dmm | 2519 ++++++++--------- _maps/map_files/debug/multiz.dmm | 1 - _maps/map_files/debug/runtimestation.dmm | 1 - _maps/map_files/generic/CentCom.dmm | 229 +- code/__DEFINES/colors.dm | 7 - .../signals_atom/signals_atom_movable.dm | 2 - .../__DEFINES/dcs/signals/signals_cytology.dm | 4 - code/__DEFINES/dcs/signals/signals_swab.dm | 3 - code/__DEFINES/plumbing.dm | 9 - code/_globalvars/lists/xenobiology.dm | 99 - .../subsystem/processing/fluids.dm | 5 - code/datums/components/crafting/recipes.dm | 1 - code/datums/components/plumbing/IV_drip.dm | 34 - code/datums/components/plumbing/_plumbing.dm | 370 --- .../plumbing/chemical_acclimator.dm | 25 - code/datums/components/plumbing/filter.dm | 59 - .../components/plumbing/reaction_chamber.dm | 60 - code/datums/components/plumbing/splitter.dm | 47 - code/datums/components/swabbing.dm | 134 - code/datums/ductnet.dm | 75 - code/datums/elements/swabbable.dm | 50 - code/datums/ruins/space.dm | 6 - code/game/machinery/_machinery.dm | 1 - code/game/machinery/autolathe.dm | 2 - code/game/machinery/iv_drip.dm | 20 - code/game/machinery/limbgrower.dm | 1 - code/game/machinery/medipen_refiller.dm | 2 - .../effects/decals/cleanable/humans.dm | 1 - .../objects/effects/decals/cleanable/misc.dm | 2 - .../effects/effect_system/effects_smoke.dm | 6 +- code/game/objects/items/RCD.dm | 152 - code/game/objects/items/RPD.dm | 6 - .../circuitboards/machine_circuitboards.dm | 11 - code/game/objects/items/drug_items.dm | 1 - code/game/objects/items/food/bread.dm | 1 - code/game/objects/items/food/meat.dm | 34 - code/game/objects/items/food/misc.dm | 8 - code/game/objects/items/food/pizza.dm | 5 - code/game/objects/items/manuals.dm | 7 - code/game/objects/items/storage/bags.dm | 3 - code/game/objects/items/storage/belt.dm | 2 - code/game/objects/items/storage/boxes.dm | 30 - .../objects/structures/beds_chairs/bed.dm | 4 - .../closets/secure/scientist.dm | 17 - .../structures/crates_lockers/crates.dm | 4 - code/game/objects/structures/flora.dm | 4 - .../objects/structures/lavaland/geyser.dm | 43 +- code/game/objects/structures/maintenance.dm | 1 - code/game/objects/structures/shower.dm | 3 +- code/game/objects/structures/watercloset.dm | 5 +- code/modules/antagonists/blob/blob_mobs.dm | 12 - .../antagonists/blob/structures/_blob.dm | 2 - code/modules/asset_cache/assets/pipes.dm | 2 +- code/modules/cargo/packs.dm | 13 - code/modules/clothing/masks/gasmask.dm | 1 - code/modules/clothing/shoes/clown.dm | 1 - code/modules/clothing/suits/labcoat.dm | 1 - .../under/jobs/civilian/clown_mime.dm | 1 - .../exploration_events/resource.dm | 13 - .../kitchen_machinery/smartfridge.dm | 16 - code/modules/hydroponics/hydroponics.dm | 81 +- .../ruins/spaceruin_code/hellfactory.dm | 32 - .../mob/living/basic/farm_animals/cows.dm | 1 - .../mob/living/basic/vermin/cockroach.dm | 1 - .../living/simple_animal/bot/construction.dm | 17 +- .../mob/living/simple_animal/friendly/cat.dm | 13 - .../mob/living/simple_animal/friendly/dog.dm | 7 - .../simple_animal/friendly/farm_animals.dm | 8 - .../living/simple_animal/friendly/mouse.dm | 8 - .../living/simple_animal/friendly/snake.dm | 4 - .../mob/living/simple_animal/hostile/bear.dm | 7 - .../mob/living/simple_animal/hostile/bees.dm | 11 - .../mob/living/simple_animal/hostile/carp.dm | 13 - .../simple_animal/hostile/jungle/leaper.dm | 10 - .../hostile/jungle/mega_arachnid.dm | 8 - .../living/simple_animal/hostile/mushroom.dm | 5 - .../simple_animal/hostile/netherworld.dm | 4 - .../mob/living/simple_animal/hostile/ooze.dm | 7 - .../simple_animal/hostile/retaliate/clown.dm | 4 - .../simple_animal/hostile/retaliate/frog.dm | 5 - .../mob/living/simple_animal/hostile/tree.dm | 9 - .../living/simple_animal/hostile/vatbeast.dm | 4 - .../mob/living/simple_animal/simple_animal.dm | 4 - .../mob/living/simple_animal/slime/slime.dm | 4 - code/modules/mod/mod_theme.dm | 1 - code/modules/plumbing/ducts.dm | 371 --- .../plumbing/plumbers/_plumb_machinery.dm | 103 - code/modules/plumbing/plumbers/acclimator.dm | 113 - code/modules/plumbing/plumbers/bottler.dm | 97 - code/modules/plumbing/plumbers/destroyer.dm | 25 - code/modules/plumbing/plumbers/fermenter.dm | 52 - code/modules/plumbing/plumbers/filter.dm | 68 - .../plumbing/plumbers/grinder_chemical.dm | 59 - code/modules/plumbing/plumbers/pill_press.dm | 167 -- .../plumbing/plumbers/plumbing_buffer.dm | 128 - code/modules/plumbing/plumbers/pumps.dm | 60 - .../plumbing/plumbers/reaction_chamber.dm | 138 - code/modules/plumbing/plumbers/splitters.dm | 51 - code/modules/plumbing/plumbers/synthesizer.dm | 105 - code/modules/plumbing/plumbers/teleporter.dm | 128 - .../chemistry/machinery/smoke_machine.dm | 2 +- code/modules/reagents/chemistry/recipes.dm | 4 +- .../reagents/chemistry/recipes/drugs.dm | 4 +- .../reagents/chemistry/recipes/others.dm | 6 - code/modules/reagents/reagent_dispenser.dm | 70 +- .../research/designs/autolathe_designs.dm | 18 - .../research/designs/machine_designs.dm | 11 +- code/modules/research/designs/tool_designs.dm | 9 - .../xenobiology/vatgrowing/biopsy_tool.dm | 18 - .../xenobiology/vatgrowing/microscope.dm | 81 - .../xenobiology/vatgrowing/petri_dish.dm | 68 - .../vatgrowing/samples/_micro_organism.dm | 126 - .../xenobiology/vatgrowing/samples/_sample.dm | 41 - .../vatgrowing/samples/cell_lines/common.dm | 694 ----- .../vatgrowing/samples/viruses/_virus.dm | 3 - .../research/xenobiology/vatgrowing/swab.dm | 19 - .../xenobiology/vatgrowing/vatgrower.dm | 138 - daedalus.dme | 39 - icons/obj/plumbing/connects.dmi | Bin 1525 -> 0 bytes icons/obj/plumbing/fluid_ducts.dmi | Bin 973 -> 0 bytes icons/obj/plumbing/plumbers.dmi | Bin 20997 -> 0 bytes 130 files changed, 1368 insertions(+), 7932 deletions(-) delete mode 100644 _maps/RandomRuins/SpaceRuins/hellfactory.dmm delete mode 100644 code/__DEFINES/dcs/signals/signals_cytology.dm delete mode 100644 code/__DEFINES/dcs/signals/signals_swab.dm delete mode 100644 code/__DEFINES/plumbing.dm delete mode 100644 code/_globalvars/lists/xenobiology.dm delete mode 100644 code/controllers/subsystem/processing/fluids.dm delete mode 100644 code/datums/components/plumbing/IV_drip.dm delete mode 100644 code/datums/components/plumbing/_plumbing.dm delete mode 100644 code/datums/components/plumbing/chemical_acclimator.dm delete mode 100644 code/datums/components/plumbing/filter.dm delete mode 100644 code/datums/components/plumbing/reaction_chamber.dm delete mode 100644 code/datums/components/plumbing/splitter.dm delete mode 100644 code/datums/components/swabbing.dm delete mode 100644 code/datums/ductnet.dm delete mode 100644 code/datums/elements/swabbable.dm delete mode 100644 code/modules/mapfluff/ruins/spaceruin_code/hellfactory.dm delete mode 100644 code/modules/plumbing/ducts.dm delete mode 100644 code/modules/plumbing/plumbers/_plumb_machinery.dm delete mode 100644 code/modules/plumbing/plumbers/acclimator.dm delete mode 100644 code/modules/plumbing/plumbers/bottler.dm delete mode 100644 code/modules/plumbing/plumbers/destroyer.dm delete mode 100644 code/modules/plumbing/plumbers/fermenter.dm delete mode 100644 code/modules/plumbing/plumbers/filter.dm delete mode 100644 code/modules/plumbing/plumbers/grinder_chemical.dm delete mode 100644 code/modules/plumbing/plumbers/pill_press.dm delete mode 100644 code/modules/plumbing/plumbers/plumbing_buffer.dm delete mode 100644 code/modules/plumbing/plumbers/pumps.dm delete mode 100644 code/modules/plumbing/plumbers/reaction_chamber.dm delete mode 100644 code/modules/plumbing/plumbers/splitters.dm delete mode 100644 code/modules/plumbing/plumbers/synthesizer.dm delete mode 100644 code/modules/plumbing/plumbers/teleporter.dm delete mode 100644 code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm delete mode 100644 code/modules/research/xenobiology/vatgrowing/microscope.dm delete mode 100644 code/modules/research/xenobiology/vatgrowing/petri_dish.dm delete mode 100644 code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm delete mode 100644 code/modules/research/xenobiology/vatgrowing/samples/_sample.dm delete mode 100644 code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm delete mode 100644 code/modules/research/xenobiology/vatgrowing/samples/viruses/_virus.dm delete mode 100644 code/modules/research/xenobiology/vatgrowing/swab.dm delete mode 100644 code/modules/research/xenobiology/vatgrowing/vatgrower.dm delete mode 100644 icons/obj/plumbing/connects.dmi delete mode 100644 icons/obj/plumbing/fluid_ducts.dmi delete mode 100644 icons/obj/plumbing/plumbers.dmi diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm index 10bfe7e86f13..e2edf63ca787 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm @@ -167,10 +167,6 @@ /obj/effect/decal/cleanable/blood/footprints, /turf/open/floor/iron, /area/ruin/bughabitat) -"sr" = ( -/obj/machinery/plumbing/growing_vat, -/turf/open/floor/iron, -/area/ruin/bughabitat) "st" = ( /obj/machinery/light_switch/directional/south, /turf/open/floor/plastic, @@ -241,7 +237,6 @@ /area/ruin/bughabitat) "BK" = ( /obj/structure/table/rolling, -/obj/item/petri_dish/random, /obj/structure/window/reinforced/spawner, /turf/open/floor/plastic, /area/ruin/bughabitat) @@ -316,14 +311,10 @@ /area/ruin/bughabitat) "Ku" = ( /obj/structure/table, -/obj/item/construction/plumbing/research, /turf/open/floor/plastic, /area/ruin/bughabitat) "Ly" = ( /obj/structure/table, -/obj/item/stack/ducts/fifty{ - amount = 23 - }, /mob/living/simple_animal/butterfly, /turf/open/floor/plastic, /area/ruin/bughabitat) @@ -584,7 +575,7 @@ Bs va Ly Ku -sr +AL AL Nv oZ diff --git a/_maps/RandomRuins/SpaceRuins/DJstation.dmm b/_maps/RandomRuins/SpaceRuins/DJstation.dmm index 35026f647e75..3cad71066bea 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation.dmm @@ -28,7 +28,7 @@ /turf/open/floor/plating, /area/ruin/space/djstation/service) "i" = ( -/obj/structure/reagent_dispensers/plumbed{ +/obj/structure/reagent_dispensers{ dir = 8 }, /turf/open/floor/plating, @@ -65,7 +65,6 @@ /area/ruin/space/djstation/service) "x" = ( /obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/duct, /turf/open/floor/plating, /area/ruin/space/djstation/service) "y" = ( @@ -100,7 +99,6 @@ "I" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/duct, /turf/open/floor/plating, /area/ruin/space/djstation/service) "M" = ( @@ -109,10 +107,6 @@ /obj/effect/spawner/random/maintenance/five, /turf/open/floor/plating, /area/ruin/space/djstation/service) -"N" = ( -/obj/machinery/duct, -/turf/open/floor/plating, -/area/ruin/space/djstation/service) "O" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -513,11 +507,11 @@ o o o x -N -N +C +C x I -N +C C A C diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_1.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_1.dmm index 5e295a394ea6..467ed14e8107 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_1.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_1.dmm @@ -3,7 +3,6 @@ /turf/template_noop, /area/template_noop) "d" = ( -/obj/machinery/duct, /obj/machinery/light/small/directional/south, /turf/open/floor/iron/grimy, /area/ruin/space/djstation) @@ -25,15 +24,10 @@ }, /turf/template_noop, /area/template_noop) -"u" = ( -/obj/machinery/duct, -/turf/open/floor/iron/grimy, -/area/ruin/space/djstation) "v" = ( /obj/structure/toilet{ pixel_y = 8 }, -/obj/machinery/duct, /obj/machinery/light/small/directional/south, /turf/open/floor/iron/freezer, /area/ruin/space/djstation) @@ -79,10 +73,6 @@ }, /turf/open/floor/iron/freezer, /area/ruin/space/djstation) -"V" = ( -/obj/machinery/duct, -/turf/closed/wall, -/area/ruin/space/djstation) "W" = ( /obj/structure/lattice, /turf/template_noop, @@ -114,7 +104,7 @@ a i A Z -u +Z i F i @@ -127,7 +117,7 @@ i M Z d -V +i v i Y diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_2.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_2.dmm index 1c1e4da6f5af..d5d86831a518 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_2.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_2.dmm @@ -67,7 +67,6 @@ /turf/template_noop, /area/space/nearstation) "Z" = ( -/obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/ruin/space/djstation) diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/quarters_3.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/quarters_3.dmm index 6abcb22813e4..d0b8c12d5bee 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" = ( @@ -23,7 +22,6 @@ /turf/open/floor/iron/dark, /area/ruin/space/djstation) "f" = ( -/obj/machinery/duct, /turf/open/floor/wood/tile, /area/ruin/space/djstation) "h" = ( @@ -55,7 +53,6 @@ /turf/open/floor/wood/tile, /area/ruin/space/djstation) "u" = ( -/obj/machinery/duct, /obj/machinery/door/airlock/silver{ name = "Bedroom" }, @@ -74,7 +71,6 @@ spawn_scatter_radius = 1 }, /obj/structure/table/reinforced/rglass, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/ruin/space/djstation) "z" = ( @@ -94,7 +90,6 @@ /turf/template_noop, /area/template_noop) "C" = ( -/obj/machinery/duct, /obj/machinery/light/directional/south, /turf/open/floor/iron/freezer, /area/ruin/space/djstation) @@ -102,7 +97,6 @@ /turf/open/floor/carpet/purple, /area/ruin/space/djstation) "H" = ( -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/ruin/space/djstation) "J" = ( @@ -126,14 +120,12 @@ /area/ruin/space/djstation) "T" = ( /obj/structure/dresser, -/obj/machinery/duct, /turf/open/floor/wood/tile, /area/ruin/space/djstation) "U" = ( /obj/machinery/door/airlock/silver{ name = "Bathroom" }, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/ruin/space/djstation) "V" = ( @@ -155,10 +147,6 @@ /obj/effect/spawner/random/structure/grille, /turf/template_noop, /area/space/nearstation) -"Z" = ( -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/ruin/space/djstation) (1,1,1) = {" a @@ -178,9 +166,9 @@ a a W i -Z -Z -Z +V +V +V V b i @@ -191,7 +179,7 @@ a a W i -Z +V V d V diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_1.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_1.dmm index aad589848134..5c4a7ddc3a31 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_1.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_1.dmm @@ -2,10 +2,6 @@ "a" = ( /turf/closed/wall, /area/ruin/space/djstation) -"b" = ( -/obj/machinery/duct, -/turf/open/floor/iron, -/area/ruin/space/djstation) "g" = ( /obj/modular_map_root/djstation{ key = "kitchen" @@ -20,7 +16,6 @@ /turf/open/floor/plating, /area/ruin/space/djstation) "i" = ( -/obj/machinery/duct, /turf/open/floor/plating, /area/ruin/space/djstation) "k" = ( @@ -49,7 +44,6 @@ pixel_y = 4 }, /obj/machinery/light/small/directional/east, -/obj/machinery/duct, /turf/open/floor/plating, /area/ruin/space/djstation) "v" = ( @@ -111,7 +105,6 @@ /turf/open/floor/iron/vaporwave, /area/ruin/space/djstation) "U" = ( -/obj/machinery/duct, /obj/modular_map_root/djstation{ key = "quarters" }, @@ -173,7 +166,7 @@ Y a k M -b +w r "} (6,1,1) = {" @@ -182,7 +175,7 @@ Y Y q w -b +w i a "} diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_2.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_2.dmm index 4cfb748992a3..1a62f136e8a6 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_2.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_2.dmm @@ -59,14 +59,6 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/djstation) -"g" = ( -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/ruin/space/djstation) "j" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -75,7 +67,6 @@ dir = 4 }, /obj/effect/turf_decal/tile/green, -/obj/machinery/duct, /turf/open/floor/iron/dark, /area/ruin/space/djstation) "k" = ( @@ -85,7 +76,6 @@ /turf/open/floor/iron/dark, /area/ruin/space/djstation) "m" = ( -/obj/machinery/duct, /obj/modular_map_root/djstation{ key = "quarters" }, @@ -175,7 +165,6 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/obj/machinery/duct, /turf/open/floor/iron/dark, /area/ruin/space/djstation) "F" = ( @@ -241,7 +230,6 @@ "T" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/green, -/obj/machinery/duct, /turf/open/floor/iron/dark, /area/ruin/space/djstation) "U" = ( @@ -353,7 +341,7 @@ a a x z -g +z C a "} diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_3.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_3.dmm index c6804a107a34..2650ce0ba185 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_3.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation/radioroom_3.dmm @@ -48,17 +48,12 @@ }, /turf/open/floor/iron/cafeteria, /area/ruin/space/djstation) -"A" = ( -/obj/machinery/duct, -/turf/open/floor/iron/cafeteria, -/area/ruin/space/djstation) "G" = ( /obj/structure/cable, /obj/machinery/light/directional/west, /turf/open/floor/iron/cafeteria, /area/ruin/space/djstation) "K" = ( -/obj/machinery/duct, /obj/modular_map_root/djstation{ key = "quarters" }, @@ -87,11 +82,6 @@ }, /turf/open/floor/iron/cafeteria, /area/ruin/space/djstation) -"T" = ( -/obj/machinery/light/directional/east, -/obj/machinery/duct, -/turf/open/floor/iron/cafeteria, -/area/ruin/space/djstation) "V" = ( /obj/structure/table, /obj/item/radio/intercom{ @@ -158,8 +148,8 @@ s h r V -A -T +h +s "} (6,1,1) = {" y @@ -168,8 +158,8 @@ a a h h -A -A +h +h a "} (7,1,1) = {" diff --git a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm deleted file mode 100644 index a9acedc11e7d..000000000000 --- a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm +++ /dev/null @@ -1,1735 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/template_noop, -/area/template_noop) -"ab" = ( -/turf/closed/wall, -/area/ruin/space/has_grav/hellfactory) -"ac" = ( -/turf/closed/wall/r_wall, -/area/ruin/space/has_grav/hellfactory) -"ad" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 4 - }, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"ae" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible{ - dir = 4 - }, -/obj/structure/closet/secure_closet/freezer/meat, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"af" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ - dir = 4 - }, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"ag" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 1 - }, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"ah" = ( -/turf/closed/indestructible/reinforced, -/area/ruin/space/has_grav/hellfactoryoffice) -"ai" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4{ - dir = 8 - }, -/turf/closed/indestructible/reinforced, -/area/ruin/space/has_grav/hellfactoryoffice) -"aj" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible{ - dir = 4 - }, -/obj/structure/hedge/opaque, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"al" = ( -/obj/structure/table/reinforced, -/obj/item/storage/cans/sixbeer, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"an" = ( -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"ao" = ( -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"ap" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/wooden_tv, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aq" = ( -/obj/item/pressure_plate/hologrid{ - name = "bossman's hologrid"; - reward = /obj/item/stack/spacecash/c10000 - }, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"ar" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/iron/five, -/obj/item/grenade/firecracker, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"as" = ( -/obj/structure/holobox, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"at" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"au" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 6 - }, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"av" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 4 - }, -/obj/structure/holobox, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"aw" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"ax" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 4 - }, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"ay" = ( -/obj/structure/hedge/opaque, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"az" = ( -/obj/item/trash/raisins, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aA" = ( -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"aB" = ( -/turf/open/floor/iron/checker, -/area/ruin/space/has_grav/hellfactory) -"aC" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"aD" = ( -/obj/structure/holobox, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"aE" = ( -/obj/machinery/photocopier, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aF" = ( -/obj/item/trash/can, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aG" = ( -/obj/structure/table/reinforced, -/obj/item/storage/cans/sixsoda, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aH" = ( -/obj/structure/table/reinforced, -/obj/item/trash/popcorn, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aI" = ( -/obj/structure/table/reinforced, -/obj/item/gps/spaceruin, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aJ" = ( -/obj/structure/table/reinforced, -/obj/item/trash/candle, -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aK" = ( -/obj/structure/table/reinforced, -/obj/item/rsf, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aL" = ( -/turf/closed/wall/rust, -/area/ruin/space/has_grav/hellfactory) -"aM" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 5 - }, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"aN" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 4 - }, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"aO" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 9 - }, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"aP" = ( -/obj/structure/filingcabinet, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aQ" = ( -/obj/item/trash/can, -/obj/item/trash/can, -/obj/structure/closet/crate/bin, -/obj/item/trash/chips, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aR" = ( -/obj/item/ammo_casing/spent, -/obj/item/ammo_casing/spent{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/ammo_casing/spent{ - pixel_x = 4; - pixel_y = -10 - }, -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aS" = ( -/obj/structure/closet/crate, -/obj/item/stack/package_wrap, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"aT" = ( -/obj/effect/mine/gas/water_vapor, -/obj/machinery/door/window, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"aU" = ( -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"aV" = ( -/obj/effect/mine/gas/water_vapor, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"aW" = ( -/turf/closed/wall/r_wall/rust, -/area/ruin/space/has_grav/hellfactory) -"aX" = ( -/obj/item/ammo_casing/spent{ - pixel_x = -10; - pixel_y = -4 - }, -/obj/item/ammo_casing/spent, -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"aZ" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron/checker, -/area/ruin/space/has_grav/hellfactory) -"ba" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor/auto, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bb" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bc" = ( -/obj/structure/plasticflaps, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bd" = ( -/obj/structure/sign/warning/coldtemp{ - name = "\improper BLAST FREEZER" - }, -/turf/closed/wall/r_wall, -/area/ruin/space/has_grav/hellfactory) -"be" = ( -/obj/structure/table, -/obj/item/paper_bin/carbon, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"bf" = ( -/obj/machinery/door/puzzle/keycard/office, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/hellfactoryoffice) -"bg" = ( -/obj/machinery/modular_computer/console/preset/civilian, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"bh" = ( -/obj/machinery/light/directional/north, -/obj/item/chair/plastic{ - pixel_y = 4 - }, -/obj/item/chair/plastic{ - pixel_y = 8 - }, -/obj/item/chair/plastic{ - pixel_y = 12 - }, -/obj/structure/rack, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"bi" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bj" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bk" = ( -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/iron/checker, -/area/ruin/space/has_grav/hellfactory) -"bl" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/conveyor/auto, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bm" = ( -/obj/structure/table, -/obj/item/stamp/denied, -/obj/item/stamp{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/structure/window{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"bn" = ( -/obj/structure/closet/crate/trashcart, -/obj/item/soap/nanotrasen, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"bo" = ( -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bp" = ( -/obj/structure/chair/plastic, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"br" = ( -/obj/item/pressure_plate/hologrid{ - reward = /obj/item/keycard/office - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bs" = ( -/obj/machinery/conveyor/auto, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bt" = ( -/obj/structure/holobox, -/obj/machinery/conveyor/auto{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bu" = ( -/obj/structure/fermenting_barrel, -/obj/machinery/conveyor/auto{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bv" = ( -/obj/machinery/conveyor/auto{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bw" = ( -/obj/structure/table, -/obj/structure/window{ - dir = 8 - }, -/obj/item/pen/fourcolor, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"bx" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/structure/window{ - dir = 8 - }, -/obj/structure/window, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"by" = ( -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bB" = ( -/obj/structure/fermenting_barrel, -/obj/machinery/conveyor/auto, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bC" = ( -/obj/structure/ore_box, -/obj/machinery/conveyor/auto{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bD" = ( -/obj/effect/turf_decal/arrows, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bE" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bF" = ( -/obj/item/pressure_plate/hologrid{ - reward = /obj/item/skub - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bG" = ( -/obj/structure/closet/crate, -/obj/machinery/conveyor/auto, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/reagent_containers/food/drinks/flask, -/obj/item/stack/sheet/glass, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bH" = ( -/obj/item/pressure_plate/hologrid, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bI" = ( -/obj/structure/fermenting_barrel, -/obj/machinery/conveyor/auto{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bJ" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bK" = ( -/obj/machinery/light/directional/south, -/obj/structure/rack, -/obj/item/book/manual/random, -/obj/item/poster/random_contraband, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"bL" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"bM" = ( -/obj/structure/grille/broken, -/obj/item/pressure_plate/hologrid{ - reward = /obj/item/stack/spacecash/c500 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bN" = ( -/obj/structure/ore_box, -/obj/machinery/conveyor/auto, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bP" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bR" = ( -/obj/item/pressure_plate/hologrid{ - reward = /obj/item/keycard/stockroom - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bS" = ( -/obj/item/pressure_plate/hologrid{ - reward = /obj/item/stack/arcadeticket/thirty - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bT" = ( -/obj/machinery/conveyor/auto{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bU" = ( -/obj/structure/closet/crate/large, -/obj/machinery/conveyor/auto{ - dir = 4 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bV" = ( -/obj/structure/closet/crate, -/obj/machinery/conveyor/auto{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/item/stack/sheet/cardboard, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bW" = ( -/obj/machinery/conveyor/auto{ - dir = 1 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bX" = ( -/obj/structure/sign/warning/chemdiamond, -/turf/closed/wall, -/area/ruin/space/has_grav/hellfactory) -"bY" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"bZ" = ( -/obj/machinery/door/puzzle/keycard/stockroom, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/hellfactory) -"ca" = ( -/obj/machinery/door/airlock, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"cb" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/curtain, -/obj/structure/mirror/directional/north, -/turf/open/floor/holofloor/wood, -/area/ruin/space/has_grav/hellfactory) -"cc" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/turf/open/floor/holofloor/wood, -/area/ruin/space/has_grav/hellfactory) -"cd" = ( -/obj/machinery/plumbing/synthesizer{ - desc = "Produces a single chemical at a given volume. This one appears to have been hotwired to generate universal enzyme."; - dispensable_reagents = list(/datum/reagent/consumable/enzyme); - reagent_id = /datum/reagent/consumable/enzyme - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"ce" = ( -/obj/machinery/plumbing/synthesizer{ - desc = "Produces a single chemical at a given volume. This one appears to have been hotwired to generate honey."; - dispensable_reagents = list(/datum/reagent/consumable/honey); - reagent_id = /datum/reagent/consumable/honey - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"cf" = ( -/obj/machinery/plumbing/synthesizer{ - desc = "Produces a single chemical at a given volume. This one seems to have been hotwired to produce... blood?"; - dispensable_reagents = list(/datum/reagent/blood); - reagent_id = /datum/reagent/blood - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"ch" = ( -/obj/machinery/light/directional/west, -/obj/machinery/plumbing/tank, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"ci" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/remains/human, -/obj/structure/curtain, -/obj/structure/mirror/directional/north, -/turf/open/floor/holofloor/wood, -/area/ruin/space/has_grav/hellfactory) -"ck" = ( -/obj/machinery/plumbing/tank, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"cl" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cm" = ( -/obj/structure/cable, -/obj/machinery/power/apc/highcap/ten_k{ - dir = 1; - pixel_y = 25 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cn" = ( -/obj/machinery/plumbing/output{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"co" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cp" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cq" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cr" = ( -/obj/structure/closet/crate/trashcart, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cs" = ( -/obj/structure/fermenting_barrel, -/obj/effect/turf_decal/box/white, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"ct" = ( -/obj/machinery/light/built/directional/south, -/obj/structure/marker_beacon{ - icon_state = "markerburgundy-on" - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"cu" = ( -/obj/effect/turf_decal{ - dir = 9 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cv" = ( -/obj/effect/turf_decal{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear/white, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cw" = ( -/obj/effect/turf_decal{ - dir = 1 - }, -/obj/item/stack/tile/iron/base, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cx" = ( -/obj/effect/turf_decal{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear/white, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cy" = ( -/obj/effect/turf_decal{ - dir = 5 - }, -/obj/structure/fluff/broken_flooring, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cz" = ( -/obj/effect/turf_decal/bot_white, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cA" = ( -/obj/item/trash/raisins, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cB" = ( -/obj/item/stack/tile/iron/base, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cC" = ( -/obj/machinery/light/directional/east, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cD" = ( -/obj/structure/ore_box, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"cE" = ( -/obj/structure/sign/warning/docking, -/turf/closed/wall/rust, -/area/ruin/space/has_grav/hellfactory) -"cF" = ( -/obj/effect/turf_decal/delivery/white, -/obj/machinery/door/poddoor, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cG" = ( -/obj/effect/turf_decal/delivery/white, -/obj/effect/turf_decal/delivery/red, -/obj/item/stack/tile/iron/base, -/obj/machinery/door/poddoor, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cH" = ( -/obj/effect/turf_decal/delivery/white, -/obj/structure/grille/broken, -/obj/machinery/door/poddoor, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cI" = ( -/obj/effect/turf_decal/delivery/white, -/obj/effect/turf_decal/delivery/red, -/obj/machinery/door/poddoor, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cJ" = ( -/obj/effect/turf_decal/delivery/white, -/obj/item/stack/tile/iron/base, -/obj/machinery/door/poddoor, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cK" = ( -/obj/machinery/power/port_gen/pacman, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cL" = ( -/obj/item/bedsheet/brown{ - dir = 4 - }, -/obj/structure/bed{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cM" = ( -/obj/item/storage/toolbox/emergency/old, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cN" = ( -/obj/machinery/door/puzzle/keycard/entry, -/obj/machinery/door/airlock/public, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cO" = ( -/obj/structure/holobox, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cP" = ( -/obj/effect/turf_decal/box/white/corners, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"cQ" = ( -/obj/structure/lattice/catwalk, -/turf/template_noop, -/area/ruin/space/has_grav/hellfactory) -"cR" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon{ - icon_state = "markerburgundy-on" - }, -/turf/template_noop, -/area/ruin/space/has_grav/hellfactory) -"cS" = ( -/obj/structure/lattice/catwalk, -/obj/item/keycard/entry, -/turf/template_noop, -/area/ruin/space/has_grav/hellfactory) -"cT" = ( -/obj/machinery/light/broken/directional/south, -/obj/structure/marker_beacon{ - icon_state = "markerburgundy-on" - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"cV" = ( -/obj/structure/table, -/obj/item/stack/ducts/fifty, -/obj/structure/window, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"hv" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"iE" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/engineering/material_rare, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"kD" = ( -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron/checker, -/area/ruin/space/has_grav/hellfactory) -"lR" = ( -/obj/machinery/light/floor/has_bulb, -/obj/effect/turf_decal/bot_white/right, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/hellfactory) -"nd" = ( -/obj/structure/sign/warning/vacuum, -/turf/closed/wall, -/area/ruin/space/has_grav/hellfactory) -"oH" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/checker, -/area/ruin/space/has_grav/hellfactory) -"oJ" = ( -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/hellfactory) -"pf" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"qK" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/exotic/languagebook, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"ry" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/floor/has_bulb, -/obj/effect/turf_decal/bot_white/left, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/hellfactory) -"sk" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"uL" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/floor/has_bulb, -/obj/effect/turf_decal/bot_white/right, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/hellfactory) -"vB" = ( -/obj/structure/closet/crate, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/entertainment/money_large, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"wv" = ( -/obj/machinery/power/apc/highcap/ten_k{ - dir = 1; - pixel_y = 25 - }, -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"xK" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/holofloor/wood, -/area/ruin/space/has_grav/hellfactory) -"BC" = ( -/obj/machinery/light/floor/has_bulb, -/obj/effect/turf_decal/bot_white/left, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/hellfactory) -"EJ" = ( -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"Fs" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/machinery/microwave, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"GE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/checker, -/area/ruin/space/has_grav/hellfactory) -"Ns" = ( -/obj/structure/closet/crate, -/obj/machinery/conveyor/auto{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/spawner/random/exotic/languagebook, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"NU" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"OJ" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, -/obj/machinery/light/directional/east, -/turf/open/floor/plastic, -/area/ruin/space/has_grav/hellfactory) -"PO" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"QS" = ( -/obj/structure/rack, -/obj/item/stack/wrapping_paper, -/obj/item/stack/package_wrap, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"Sz" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"UK" = ( -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/iron, -/area/ruin/space/has_grav/hellfactory) -"UN" = ( -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"VN" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"Wh" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"Yd" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/hellfactoryoffice) -"Zh" = ( -/obj/structure/closet/crate/trashcart, -/obj/item/stack/sheet/mineral/plasma, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) -"Zq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/hellfactory) - -(1,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(2,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(3,1,1) = {" -aa -aa -aW -ac -aW -aW -ac -ac -aW -ac -ac -ac -aW -ac -ac -ac -ac -aW -aW -ac -aW -aW -aW -aa -aa -"} -(4,1,1) = {" -aa -aa -aW -ad -au -aC -aM -aT -ba -bl -bl -bs -bB -bG -bN -bT -cd -ch -ck -ck -cs -cD -aW -aa -aa -"} -(5,1,1) = {" -aa -aa -ac -ae -av -ab -aN -hv -bb -aA -bL -bt -bb -bb -bb -bU -ce -aA -bL -aA -cn -cs -aW -aa -aa -"} -(6,1,1) = {" -aa -aa -aW -af -aw -aD -aN -aU -bb -bL -aA -bu -bb -bb -bb -bV -cf -aA -aA -UK -bL -cs -aW -aa -aa -"} -(7,1,1) = {" -aa -aa -aW -ag -ax -OJ -aO -aV -bc -bL -bL -bv -bC -bI -Ns -bW -aA -aA -bL -aA -aA -cs -aW -cQ -aa -"} -(8,1,1) = {" -aa -aa -ah -ai -ah -ah -ah -ah -bd -aA -aA -aA -bD -bJ -bP -bX -aA -aA -bL -aA -ct -cE -aW -cR -cQ -"} -(9,1,1) = {" -aa -aa -ah -aj -az -aF -aQ -ah -be -bm -bw -bx -bE -by -by -bY -by -by -by -co -cu -cF -aa -aa -aa -"} -(10,1,1) = {" -aa -aa -ah -ao -ao -ao -aF -ah -bh -aA -bp -cV -by -Wh -BC -oJ -Zq -ry -by -by -cv -cG -aa -aa -aa -"} -(11,1,1) = {" -aa -aa -ah -al -ao -aG -Yd -ah -bg -aA -bL -aA -Wh -Wh -oJ -by -by -oJ -Wh -by -cw -cH -aa -aa -aa -"} -(12,1,1) = {" -aa -aa -ah -ao -ao -aH -ao -ah -ac -ac -aW -VN -by -by -lR -oJ -oJ -uL -by -Wh -cx -cI -aa -aa -aa -"} -(13,1,1) = {" -aa -aa -ah -an -ao -aI -aR -bf -br -bF -bH -cq -cp -cq -cq -cz -cq -cz -cC -cP -cy -cJ -aa -aa -aa -"} -(14,1,1) = {" -aa -aa -ah -wv -UN -aJ -aX -ah -ac -aW -ac -by -by -bK -aL -ca -aL -ca -aL -cq -cT -cE -ac -cR -cQ -"} -(15,1,1) = {" -aa -aa -ah -ap -ao -aK -Yd -ah -aA -bn -aW -by -Wh -Fs -aL -cb -aL -ci -aL -cm -cq -cK -aW -cS -aa -"} -(16,1,1) = {" -aa -aa -ah -aq -ao -ao -ao -ah -aB -bL -bZ -by -by -QS -aL -cc -aL -xK -ac -ac -aW -ac -aW -aa -aa -"} -(17,1,1) = {" -aa -aa -ah -ay -aE -aP -aP -ah -bi -aB -aW -ac -ac -aW -ac -aW -ac -aW -ac -Zh -cA -by -ab -aa -aa -"} -(18,1,1) = {" -aa -aa -ah -ah -ah -ah -ah -ah -bj -bo -aL -vB -ab -aB -bR -PO -ab -as -aL -cr -cB -cL -nd -aa -aa -"} -(19,1,1) = {" -aa -aa -ac -ar -aA -aB -aS -aL -bk -aB -ab -qK -EJ -aB -ab -GE -iE -iE -by -Sz -by -cM -cN -aa -aa -"} -(20,1,1) = {" -aa -aa -aW -ab -bL -kD -aB -ab -sk -aB -ab -ab -ab -bM -ab -ab -aL -ab -ab -NU -Wh -by -ab -aa -aa -"} -(21,1,1) = {" -aa -aa -ac -as -aA -ab -aB -aA -bL -aB -aB -aB -oH -aB -ab -aB -pf -aA -by -Wh -by -by -ab -aa -aa -"} -(22,1,1) = {" -aa -aa -ac -at -GE -aL -GE -aZ -aB -aB -aL -by -ab -aA -bS -aB -ab -as -aL -by -cl -cO -ab -aa -aa -"} -(23,1,1) = {" -aa -aa -aW -aW -aW -aW -aW -ac -aW -ac -ac -aW -aW -ac -ac -ac -ac -aW -aW -ab -ab -ab -ab -aa -aa -"} -(24,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(25,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 666195fc91ba..3c7403c727d3 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -180,6 +180,15 @@ }, /turf/open/floor/iron, /area/station/security/courtroom) +"acw" = ( +/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, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "acx" = ( /obj/structure/bed, /obj/item/clothing/suit/straight_jacket, @@ -281,18 +290,6 @@ "adh" = ( /turf/open/floor/iron, /area/station/security/prison) -"adq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "adr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -773,6 +770,14 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/plating, /area/station/maintenance/disposal) +"ajh" = ( +/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) "ajk" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 @@ -1162,22 +1167,24 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/plating, /area/station/maintenance/disposal) -"aoT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/storage) "aoX" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/iron/white, /area/station/medical/pharmacy) +"apa" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "apc" = ( /turf/open/floor/plating, /area/station/maintenance/department/engine) @@ -1229,6 +1236,21 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"apz" = ( +/obj/structure/cable, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "apC" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/item/tank/internals/oxygen, @@ -1992,13 +2014,6 @@ /obj/item/storage/toolbox/electrical, /turf/open/floor/iron, /area/station/security/brig) -"axz" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "axB" = ( /turf/open/floor/iron/white, /area/station/commons/dorms/cryo) @@ -2735,16 +2750,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) -"aGh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "aGk" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -3793,6 +3798,13 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/research) +"aXl" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "aXq" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, @@ -4077,10 +4089,6 @@ /obj/effect/turf_decal/tile/purple/anticorner/contrasted, /turf/open/floor/iron/white, /area/station/science/lobby) -"bbe" = ( -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "bbE" = ( /obj/effect/mapping_helpers/paint_wall/medical, /turf/closed/wall/prepainted/daedalus, @@ -4126,6 +4134,16 @@ /obj/structure/sign/poster/party_game, /turf/closed/wall/prepainted/daedalus, /area/space/nearstation) +"bbU" = ( +/obj/structure/disposalpipe/segment, +/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/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/main) "bca" = ( /obj/machinery/door/poddoor{ id = "QMLoaddoor2"; @@ -4150,6 +4168,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"bcp" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/aft/greater) "bct" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -4619,17 +4644,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"bjR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) "bkg" = ( /obj/machinery/vending/cigarette, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -5353,6 +5367,13 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/port) +"bsr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "bst" = ( /obj/structure/chair/office{ dir = 8 @@ -5686,13 +5707,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) -"bxZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/contraband/random/directional/north, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/greater) "byb" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -5746,6 +5760,19 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"bza" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/poster/random/directional/south, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "bzg" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -6071,6 +6098,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/starboard/aft) +"bCY" = ( +/obj/machinery/light/small/maintenance/directional/south, +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/aft/greater) "bDi" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -6928,6 +6960,14 @@ /obj/machinery/telecomms/broadcaster/preset_left, /turf/open/floor/circuit/telecomms/mainframe, /area/station/tcommsat/server) +"bOe" = ( +/obj/machinery/light_switch/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "bOi" = ( /obj/structure/table, /obj/item/clothing/mask/cigarette/pipe, @@ -7109,10 +7149,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"bRy" = ( -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "bRz" = ( /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintenance"; @@ -7448,13 +7484,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"bWk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "bWz" = ( /obj/machinery/airalarm/directional/south, /obj/structure/disposalpipe/segment{ @@ -7577,12 +7606,10 @@ "bXZ" = ( /turf/closed/wall/r_wall/prepainted/daedalus, /area/station/maintenance/starboard/fore) -"bYE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) +"bYC" = ( +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "bYK" = ( /obj/machinery/mech_bay_recharge_port, /obj/structure/cable, @@ -7764,6 +7791,12 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) +"caZ" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/fore/lesser) "cba" = ( /obj/machinery/power/smes{ capacity = 9e+006; @@ -7773,15 +7806,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"cbk" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/camera/directional/west{ - c_tag = "Restrooms" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "cbn" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /obj/machinery/meter, @@ -7872,19 +7896,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"cct" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Medbay Maintenance"; - req_access_txt = "5" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "ccH" = ( /obj/machinery/camera/directional/east{ c_tag = "Chapel Office - Backroom" @@ -8090,15 +8101,6 @@ /obj/machinery/telecomms/server/presets/supply, /turf/open/floor/circuit/telecomms/mainframe, /area/station/tcommsat/server) -"chR" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "cii" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -8150,6 +8152,21 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron, /area/station/service/bar) +"cjp" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "cjs" = ( /obj/machinery/smartfridge/chemistry/virology/preloaded, /obj/machinery/firealarm/directional/south, @@ -8730,6 +8747,21 @@ "ctJ" = ( /turf/open/floor/circuit/green, /area/station/science/robotics/mechbay) +"ctM" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Primary Treatment Centre"; + req_access_txt = "5" + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/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/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "ctW" = ( /obj/machinery/chem_dispenser{ layer = 2.7 @@ -9012,12 +9044,6 @@ }, /turf/open/floor/wood, /area/station/service/library) -"cyL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/starboard/lesser) "cyR" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -9032,6 +9058,18 @@ }, /turf/open/floor/iron/ported/techfloor_grid, /area/station/engineering/supermatter/room) +"czH" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Kitchen"; + req_access_txt = "28" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/service) "czL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -9041,16 +9079,6 @@ "czM" = ( /turf/closed/wall/prepainted/daedalus, /area/station/commons/fitness/recreation) -"czU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "cAd" = ( /obj/structure/window/reinforced{ dir = 8 @@ -9099,15 +9127,17 @@ }, /turf/open/floor/iron, /area/station/science/mixing) -"cAN" = ( -/obj/structure/closet/secure_closet/cytology, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/purple/half/contrasted{ +"cAQ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron/white, -/area/station/science/cytology) +/area/station/service/kitchen) "cAW" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/warning{ @@ -10766,6 +10796,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/port) +"cUN" = ( +/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/structure/disposalpipe/sorting/mail{ + sortType = 19 + }, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "cUZ" = ( /obj/docking_port/stationary{ dir = 8; @@ -10854,11 +10894,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos) -"cWx" = ( -/obj/structure/cable, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/starboard/greater) "cWF" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/machinery/door/airlock/research{ @@ -11467,15 +11502,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"dgC" = ( -/obj/machinery/atmospherics/components/binary/pump/on, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "dgN" = ( /obj/effect/turf_decal/stripes/corner, /obj/structure/reagent_dispensers/watertank, @@ -11571,6 +11597,12 @@ }, /turf/open/floor/iron, /area/station/construction/storage_wing) +"die" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "din" = ( /obj/machinery/door/airlock/external{ name = "Solar Maintenance"; @@ -11732,14 +11764,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"dkG" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "dkH" = ( /obj/machinery/door/airlock/maintenance{ req_one_access_txt = "12;27;37" @@ -11926,13 +11950,6 @@ /obj/effect/spawner/random/entertainment/deck, /turf/open/floor/iron, /area/station/commons/dorms) -"dor" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "dou" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -12147,12 +12164,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/central) -"dsX" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "dsY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12320,14 +12331,6 @@ /obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/iron/dark, /area/station/engineering/break_room) -"duA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/effect/landmark/start/medical_doctor, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "duB" = ( /obj/structure/cable, /obj/machinery/door/airlock/virology/glass{ @@ -13018,6 +13021,12 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology) +"dHt" = ( +/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) "dHy" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -13434,18 +13443,6 @@ "dPs" = ( /turf/closed/wall/prepainted/daedalus, /area/station/maintenance/aft/lesser) -"dPt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/port/aft) "dPu" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/rack, @@ -13839,6 +13836,11 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"dWx" = ( +/obj/structure/cable, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/starboard/greater) "dWO" = ( /obj/structure/chair/comfy{ dir = 4 @@ -14202,6 +14204,23 @@ }, /turf/open/floor/wood, /area/station/maintenance/port/aft) +"eds" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/table/glass, +/obj/machinery/requests_console/directional/east{ + department = "Xenobiology"; + name = "Xenobiology Requests Console"; + receive_ore_updates = 1 + }, +/obj/machinery/button/door/directional/south{ + id = "XenoPens"; + name = "Xenobiology Shutters"; + req_access_txt = "55" + }, +/turf/open/floor/iron/white, +/area/station/science/cytology) "edt" = ( /obj/structure/cable, /obj/structure/bed/dogbed/mcgriff, @@ -14313,6 +14332,12 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"eeS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "eeV" = ( /obj/structure/railing/corner, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -14508,6 +14533,18 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) +"ehc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "ehk" = ( /obj/structure/table, /obj/item/clipboard, @@ -14679,20 +14716,6 @@ /obj/structure/light_construct/directional/east, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"eku" = ( -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "eky" = ( /obj/structure/table/reinforced, /obj/item/stock_parts/cell/high{ @@ -15394,25 +15417,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/hallway/primary/central) -"ewi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/port/aft) -"ewz" = ( -/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, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "ewJ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -15614,6 +15618,20 @@ /obj/structure/statue/snow/snowman, /turf/open/floor/fake_snow, /area/station/maintenance/port/aft) +"eBI" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/door/airlock/medical/glass{ + name = "Cryogenics Bay"; + req_access_txt = "5" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "eBL" = ( /obj/effect/spawner/structure/window/reinforced/prepainted/daedalus, /turf/open/floor/plating, @@ -16186,10 +16204,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/prison) -"eKh" = ( -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "eKt" = ( /obj/structure/table/wood, /obj/item/toy/mecha/honk{ @@ -16308,12 +16322,6 @@ }, /turf/open/floor/iron/solarpanel/airless, /area/station/solars/port/fore) -"eMn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "eMs" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/structure/sign/map/right{ @@ -16766,6 +16774,15 @@ }, /turf/open/floor/iron/dark, /area/station/service/cafeteria) +"eSG" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "eSL" = ( /obj/machinery/light/directional/east, /obj/machinery/airalarm/directional/east, @@ -16905,16 +16922,6 @@ }, /turf/open/floor/wood, /area/station/commons/lounge) -"eWl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/cable, -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "eWu" = ( /obj/structure/toilet/greyscale{ dir = 4 @@ -16952,14 +16959,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/research) -"eXp" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/main) "eXL" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 @@ -17652,6 +17651,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"fnj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/port/aft) "fno" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 @@ -17680,16 +17690,16 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/station/security/prison) -"fnL" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "fnS" = ( /obj/effect/turf_decal/bot, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) +"fnT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/cook, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "fnZ" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -17875,31 +17885,6 @@ }, /turf/open/floor/wood, /area/station/service/library) -"fqT" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"frp" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/port/aft) "frC" = ( /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -17927,6 +17912,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"frN" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/main) +"frQ" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "frR" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, @@ -17962,23 +17959,10 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"fsB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "fsW" = ( /obj/structure/sign/poster/contraband/random/directional/east, /turf/open/floor/wood, /area/station/maintenance/port/aft) -"fta" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/fore) "ftq" = ( /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/freezer, @@ -18029,6 +18013,10 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"fuf" = ( +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "fuj" = ( /obj/structure/sign/warning/pods, /turf/closed/wall/prepainted/daedalus, @@ -18047,23 +18035,6 @@ /obj/item/multitool, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) -"fuw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/item/cigbutt{ - pixel_x = -6; - pixel_y = -4 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "fuY" = ( /obj/structure/closet/secure_closet/chemical, /turf/open/floor/iron/white, @@ -18208,17 +18179,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"fya" = ( -/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/machinery/duct, -/obj/structure/disposalpipe/sorting/mail{ - sortType = 19 - }, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "fyh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -18276,14 +18236,6 @@ /obj/machinery/computer/communications, /turf/open/floor/iron/dark, /area/station/command/bridge) -"fzF" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "fzJ" = ( /turf/closed/wall/prepainted/daedalus, /area/station/cargo/qm) @@ -18434,6 +18386,15 @@ }, /turf/open/floor/iron/checker, /area/station/science/research) +"fCk" = ( +/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, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "fCy" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ @@ -18761,24 +18722,17 @@ /obj/machinery/photocopier, /turf/open/floor/carpet, /area/station/command/heads_quarters/hop) -"fFM" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/end, +"fFH" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/cryo) -"fFN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/duct, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/secondary/service) "fFV" = ( @@ -19677,22 +19631,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/station/hallway/secondary/command) -"fXM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "fXO" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -19821,6 +19759,10 @@ }, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/starboard/greater) +"gaq" = ( +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "gar" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19836,19 +19778,6 @@ /obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/space/basic, /area/station/maintenance/disposal/incinerator) -"gaP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/duct, -/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) "gaV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /turf/closed/wall/r_wall/prepainted/daedalus, @@ -19947,12 +19876,25 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"gdl" = ( +/obj/effect/landmark/start/paramedic, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "gdK" = ( /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/dark, /area/station/service/chapel/funeral) +"gdS" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "gdY" = ( /obj/machinery/photocopier{ pixel_y = 3 @@ -20351,21 +20293,6 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall/prepainted/daedalus, /area/station/maintenance/starboard/lesser) -"glF" = ( -/obj/structure/table/glass, -/obj/item/radio/intercom/directional/west, -/obj/structure/microscope, -/obj/machinery/camera/directional/west{ - c_tag = "Xenobiology Lab - Fore"; - network = list("ss13","rd","xeno") - }, -/obj/machinery/light/directional/west, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) "glK" = ( /obj/machinery/camera/directional/east{ c_tag = "Auxiliary Tool Storage" @@ -20424,17 +20351,6 @@ /obj/structure/cable, /turf/open/floor/plating/airless, /area/station/solars/port/aft) -"gmR" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/landmark/blobstart, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/medical/central) "gmZ" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20526,18 +20442,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) -"god" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "gol" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -20986,6 +20890,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/commons/lounge) +"gxS" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "gxT" = ( /obj/effect/turf_decal/tile/neutral, /obj/structure/cable, @@ -21253,6 +21163,15 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"gCr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/poster/random/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "gCL" = ( /obj/structure/window/fulltile, /obj/structure/flora/ausbushes/leafybush, @@ -21491,6 +21410,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/command/teleporter) +"gHB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/item/book/manual/wiki/cytology{ + pixel_x = -4; + pixel_y = 4 + }, +/turf/open/floor/iron/white, +/area/station/science/cytology) "gHH" = ( /obj/machinery/door/window/right/directional/east{ base_state = "left"; @@ -21968,6 +21898,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, /turf/closed/wall/r_wall/prepainted/daedalus, /area/station/engineering/atmos/pumproom) +"gTI" = ( +/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, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "gTW" = ( /obj/machinery/camera/directional/west{ c_tag = "Security - Office - Port" @@ -22828,11 +22767,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"hgG" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "hgN" = ( /obj/structure/closet/wardrobe/pjs, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -22854,6 +22788,15 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) +"hhd" = ( +/obj/machinery/door/airlock/medical{ + name = "Primary Surgical Theatre"; + req_access_txt = "45" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "hhf" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -23059,6 +23002,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"hld" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/main) "hle" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 @@ -23336,11 +23286,6 @@ /obj/structure/bed/roller, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"hqf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "hqg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ @@ -23618,6 +23563,14 @@ "hvF" = ( /turf/closed/wall/prepainted/daedalus, /area/station/security/checkpoint/science) +"hvG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/port/aft) "hvK" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 @@ -23723,10 +23676,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"hxm" = ( -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "hxw" = ( /obj/effect/turf_decal/plaque{ icon_state = "L13" @@ -24199,6 +24148,12 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos) +"hFs" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) "hFw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24829,6 +24784,12 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/commons/locker) +"hSz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/aft/lesser) "hSK" = ( /obj/effect/turf_decal/plaque{ icon_state = "L7" @@ -24838,20 +24799,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"hSY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "hSZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25348,16 +25295,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) -"idL" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "idO" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/atmos/glass{ @@ -25611,6 +25548,15 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) +"ijL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "ijY" = ( /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall/prepainted/daedalus, @@ -26108,6 +26054,11 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port) +"ith" = ( +/obj/structure/urinal/directional/north, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "itl" = ( /obj/effect/turf_decal/trimline/blue/corner{ dir = 1 @@ -26691,6 +26642,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"iEE" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/poster/random/directional/south, +/turf/open/floor/plating, +/area/station/hallway/secondary/service) "iEG" = ( /obj/effect/landmark/xeno_spawn, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -27063,12 +27022,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/command/gateway) -"iMh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "iMl" = ( /obj/structure/closet/l3closet/scientist, /obj/effect/turf_decal/bot{ @@ -27167,6 +27120,19 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"iNW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "iOe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -27676,6 +27642,11 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) +"iWa" = ( +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "iWk" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 @@ -27766,6 +27737,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/security/prison) +"iYv" = ( +/obj/machinery/light/small/maintenance/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "iYM" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28061,6 +28036,11 @@ }, /turf/open/floor/plating, /area/station/science/mixing) +"jeB" = ( +/obj/structure/urinal/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "jeN" = ( /turf/closed/wall/r_wall/prepainted/daedalus, /area/station/maintenance/port/fore) @@ -29589,6 +29569,10 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/maintenance/port/aft) +"jGR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "jHk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -29720,6 +29704,18 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"jIN" = ( +/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) "jIO" = ( /obj/effect/spawner/structure/window/reinforced/prepainted/daedalus, /turf/open/floor/plating, @@ -29921,13 +29917,6 @@ /obj/effect/spawner/random/entertainment/deck, /turf/open/floor/wood, /area/station/maintenance/port/aft) -"jMd" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/aft/lesser) "jMi" = ( /obj/effect/mapping_helpers/paint_wall/priapus, /turf/closed/wall/prepainted/daedalus, @@ -29954,12 +29943,6 @@ }, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/starboard/fore) -"jMM" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/fore/lesser) "jMP" = ( /obj/structure/window/reinforced{ dir = 1; @@ -30064,15 +30047,6 @@ }, /turf/open/floor/iron/white, /area/station/science/cytology) -"jQg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "jQp" = ( /obj/machinery/door/poddoor/shutters{ id = "visitation"; @@ -30344,6 +30318,12 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall/prepainted/daedalus, /area/station/commons/toilet/auxiliary) +"jUQ" = ( +/obj/effect/turf_decal/trimline/blue/filled/end, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "jVJ" = ( /obj/machinery/button/door/directional/north{ id = "hop"; @@ -30353,13 +30333,6 @@ /obj/machinery/computer/accounting, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"jVO" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/fore) "jVR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30389,14 +30362,6 @@ /obj/item/wirecutters, /turf/open/space/basic, /area/space/nearstation) -"jXg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) "jXj" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/machinery/camera/directional/east{ @@ -30612,6 +30577,16 @@ /obj/machinery/light/floor/has_bulb, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"kaq" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron, +/area/station/science/xenobiology) "kas" = ( /obj/structure/window/reinforced{ dir = 4 @@ -30799,6 +30774,15 @@ /obj/machinery/holopad, /turf/open/floor/wood, /area/station/service/cafeteria) +"keF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/structure/cable, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "keG" = ( /obj/machinery/light/directional/north, /obj/structure/table, @@ -30823,6 +30807,15 @@ }, /turf/open/space, /area/space) +"keV" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "keY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30942,6 +30935,12 @@ "kgt" = ( /turf/closed/wall/r_wall/prepainted/daedalus, /area/station/hallway/secondary/command) +"kgz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/port/aft) "kgD" = ( /obj/structure/chair, /obj/item/radio/intercom/chapel/directional/west, @@ -30965,6 +30964,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/engineering/break_room) +"kgU" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner, +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "kgZ" = ( /obj/structure/rack, /obj/item/clothing/under/color/white, @@ -31093,13 +31102,6 @@ /obj/machinery/photocopier, /turf/open/floor/wood, /area/station/service/library) -"kjG" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "kjJ" = ( /obj/effect/turf_decal/tile/neutral, /obj/structure/disposalpipe/segment{ @@ -31177,22 +31179,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"klW" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Primary Treatment Centre"; - req_access_txt = "5" - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/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/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "kmj" = ( /obj/structure/window/reinforced, /obj/effect/decal/cleanable/cobweb, @@ -31237,6 +31223,12 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/brig) +"kmU" = ( +/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/white, +/area/station/medical/treatment_center) "knc" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/cargo_technician, @@ -31799,18 +31791,6 @@ }, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"kxo" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/item/clothing/head/that, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/bar) "kxq" = ( /obj/machinery/status_display/evac/directional/north, /obj/machinery/porta_turret/ai, @@ -32164,13 +32144,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"kFf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "kFg" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -32271,6 +32244,10 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/engine, /area/station/science/xenobiology) +"kHe" = ( +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "kHr" = ( /obj/structure/table/wood, /obj/item/storage/secure/briefcase{ @@ -32710,15 +32687,6 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall/prepainted/daedalus, /area/station/maintenance/port/aft) -"kOI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "kOW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32817,6 +32785,22 @@ }, /turf/open/floor/holofloor/dark, /area/station/science/cytology) +"kSa" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "kSd" = ( /obj/structure/closet{ name = "Evidence Closet 3" @@ -33159,6 +33143,13 @@ /obj/effect/spawner/structure/window/reinforced/plasma/prepainted/daedalus, /turf/open/floor/plating, /area/station/engineering/atmos) +"kZp" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "kZE" = ( /obj/machinery/computer/secure_data{ dir = 4 @@ -33321,11 +33312,6 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"lbB" = ( -/obj/structure/cable, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/medical/central) "lbP" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -33490,13 +33476,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/vacant_room/office) -"leN" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/greater) "leP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33544,31 +33523,6 @@ }, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"lfQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/table/glass, -/obj/item/storage/box/petridish{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/storage/box/petridish{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/machinery/requests_console/directional/east{ - department = "Xenobiology"; - name = "Xenobiology Requests Console"; - receive_ore_updates = 1 - }, -/obj/machinery/button/door/directional/south{ - id = "XenoPens"; - name = "Xenobiology Shutters"; - req_access_txt = "55" - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) "lgb" = ( /obj/structure/table/wood, /obj/item/clothing/head/sombrero, @@ -33806,15 +33760,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"lks" = ( -/obj/machinery/door/airlock{ - name = "Unisex Showers" - }, -/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) "lkz" = ( /obj/structure/railing{ dir = 9 @@ -33854,11 +33799,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"llc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "lle" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/tile/neutral{ @@ -34645,17 +34585,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"lAf" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/bot_white, -/obj/machinery/smartfridge/petri/preloaded, -/turf/open/floor/iron, -/area/station/science/xenobiology) "lAs" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/purple{ @@ -34707,6 +34636,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"lBH" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Restrooms" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "lBO" = ( /obj/effect/turf_decal/plaque{ icon_state = "L5" @@ -34807,6 +34744,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/command/gateway) +"lDc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/corner, +/turf/open/floor/iron/white, +/area/station/medical/surgery/theatre) "lDe" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/door/poddoor/shutters/window{ @@ -35615,6 +35559,13 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"lRu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) "lRE" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -36020,13 +35971,6 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) -"mbm" = ( -/obj/effect/landmark/start/paramedic, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "mbu" = ( /obj/machinery/door/airlock/maintenance{ name = "Psychology Maintenance"; @@ -36517,16 +36461,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"miU" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "miV" = ( /obj/structure/window/reinforced{ dir = 4 @@ -36710,15 +36644,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"mmM" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "mng" = ( /obj/machinery/shower{ dir = 4 @@ -36731,6 +36656,11 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/fitness/recreation) +"mns" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "mnH" = ( /obj/machinery/door/airlock/maintenance{ name = "Chapel Maintenance"; @@ -37095,15 +37025,6 @@ /obj/item/stamp/cmo, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) -"mti" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "mtn" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37274,21 +37195,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"mvA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/table/glass, -/obj/item/biopsy_tool{ - pixel_x = 8; - pixel_y = 2 - }, -/obj/item/book/manual/wiki/cytology{ - pixel_x = -4; - pixel_y = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) "mvJ" = ( /obj/structure/closet/crate/coffin, /obj/structure/window/reinforced{ @@ -37755,15 +37661,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) -"mFR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/reagent_dispensers/plumbed, -/obj/machinery/light/small/maintenance/directional/north, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/fore) "mFZ" = ( /obj/effect/decal/cleanable/dirt, /obj/item/storage/box/mousetraps{ @@ -37782,18 +37679,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/service/janitor) -"mGe" = ( -/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) -"mGh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/lesser) "mGk" = ( /obj/machinery/light/small/directional/west, /obj/machinery/camera/directional/west{ @@ -37946,14 +37831,6 @@ /obj/structure/cable, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) -"mHI" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/fore) "mIb" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/rack, @@ -38430,22 +38307,6 @@ /obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"mPe" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/newscaster/directional/south, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "mPp" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plating, @@ -38771,22 +38632,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"mUi" = ( -/obj/structure/cable, -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "mUx" = ( /obj/effect/spawner/random/maintenance, /obj/machinery/power/apc/auto_name/directional/north, @@ -38824,6 +38669,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/research) +"mUX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "mVg" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/engineering_hacking{ @@ -38904,13 +38757,6 @@ /obj/effect/spawner/random/techstorage/rnd_all, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) -"mVF" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) "mVL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39346,10 +39192,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"ncP" = ( -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "ncX" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -39437,6 +39279,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/drone_bay) +"neE" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/port/aft) "neG" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -39557,16 +39407,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /turf/open/floor/engine, /area/station/science/cytology) -"ngU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 6 - }, -/obj/structure/closet/secure_closet/freezer/kitchen, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "nhe" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -39863,6 +39703,11 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) +"nlD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "nlK" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -40461,14 +40306,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/customs) -"nwr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "nwN" = ( /obj/structure/sign/poster/contraband/random/directional/east, /turf/open/floor/plating, @@ -40479,6 +40316,10 @@ /obj/effect/mapping_helpers/paint_wall/medical, /turf/open/floor/plating, /area/station/medical/virology) +"nwV" = ( +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "nxd" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -40532,15 +40373,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/storage) -"nyo" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "nyp" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -40624,15 +40456,6 @@ /obj/structure/mirror/directional/west, /turf/open/floor/wood, /area/station/maintenance/port/aft) -"nzY" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "nAm" = ( /obj/machinery/door/airlock/command{ name = "Captain's Quarters"; @@ -40731,6 +40554,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"nCt" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "nCy" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40750,14 +40579,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"nCO" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/effect/landmark/start/medical_doctor, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "nCU" = ( /obj/machinery/space_heater, /obj/machinery/light/small/maintenance/directional/south, @@ -40843,6 +40664,22 @@ /obj/effect/spawner/random/clothing/costume, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"nEq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/item/cigbutt{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "nEC" = ( /turf/closed/wall/prepainted/daedalus, /area/station/science/mixing/launch) @@ -41342,12 +41179,6 @@ /mob/living/simple_animal/bot/cleanbot, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) -"nMJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/fore) "nMR" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 @@ -41660,12 +41491,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/space_hut) -"nUM" = ( -/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/treatment_center) "nUU" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/engine/n2, @@ -41744,15 +41569,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"nXg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/port/aft) "nXi" = ( /obj/effect/spawner/structure/window/reinforced/prepainted/daedalus, /obj/structure/cable, @@ -42019,13 +41835,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"obP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/cook, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "obT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -42288,15 +42097,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) -"ogX" = ( -/obj/machinery/light_switch/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "ohg" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42364,6 +42164,13 @@ /obj/machinery/telephone/security, /turf/open/floor/iron/dark, /area/station/security/office) +"oiv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/turf/open/floor/iron/white, +/area/station/medical/surgery/theatre) "oiC" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -42572,6 +42379,21 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/safe) +"omo" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/newscaster/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "omA" = ( /obj/effect/spawner/structure/window/reinforced/prepainted/daedalus, /turf/open/floor/plating, @@ -42949,15 +42771,6 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall/prepainted/daedalus, /area/station/commons/vacant_room/commissary) -"oug" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Storage"; - req_access_txt = "5" - }, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/storage) "oum" = ( /obj/structure/sign/directions/evac, /turf/closed/wall/prepainted/daedalus, @@ -43149,12 +42962,6 @@ /obj/item/reagent_containers/blood/random, /turf/open/floor/iron/showroomfloor, /area/station/maintenance/starboard/lesser) -"oyp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/starboard/fore) "oyA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/purple{ @@ -43471,12 +43278,6 @@ "oEu" = ( /turf/open/floor/engine/n2, /area/station/engineering/atmos) -"oEx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/pestspawn, -/turf/open/floor/wood, -/area/station/service/library) "oEz" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, @@ -43593,6 +43394,12 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"oGL" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/starboard/fore) "oGM" = ( /obj/structure/table, /obj/item/stack/sheet/iron/fifty, @@ -44273,6 +44080,16 @@ }, /turf/open/floor/iron, /area/station/security/warden) +"oUr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/hallway/secondary/service) "oUt" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -44354,15 +44171,6 @@ /obj/structure/sign/warning/pods, /turf/closed/wall/prepainted/daedalus, /area/station/hallway/secondary/entry) -"oVG" = ( -/obj/effect/landmark/xeno_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/effect/spawner/random/trash/soap{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "oVI" = ( /obj/machinery/light_switch/directional/east, /obj/machinery/shower{ @@ -44448,20 +44256,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"oXQ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "oXZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_dark, @@ -44719,14 +44513,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/checkpoint/customs) -"pdp" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) "pdq" = ( /obj/structure/sign/warning/vacuum{ pixel_x = 32 @@ -44949,19 +44735,6 @@ "pgM" = ( /turf/closed/wall/r_wall/prepainted/daedalus, /area/station/command/teleporter) -"pgS" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - name = "Kitchen"; - req_access_txt = "28" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/cafeteria, -/area/station/hallway/secondary/service) "pgT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/button/door/directional/east{ @@ -45089,6 +44862,15 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) +"pjH" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) "pjU" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/structure/cable, @@ -45450,6 +45232,17 @@ /obj/structure/window/reinforced/plasma/spawner/west, /turf/open/space/basic, /area/space/nearstation) +"ppX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "pqd" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, @@ -45829,12 +45622,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"pxg" = ( -/obj/effect/landmark/start/cook, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "pxh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -46195,14 +45982,6 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/plating, /area/station/maintenance/fore) -"pEn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/iron, -/area/station/service/hydroponics) "pEM" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -46292,13 +46071,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"pGd" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "pGf" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, @@ -46310,21 +46082,6 @@ /obj/machinery/light/floor/has_bulb, /turf/open/floor/grass, /area/station/medical/treatment_center) -"pGx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 10 - }, -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/machinery/duct, -/obj/machinery/button/door/directional/north{ - id = "kitchen_counter"; - name = "Counter Shutters Control"; - req_access_txt = "28" - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "pGy" = ( /turf/closed/wall/prepainted/daedalus, /area/station/construction/mining/aux_base) @@ -46405,6 +46162,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/commons/dorms) +"pId" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/fore) "pIm" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ @@ -46538,6 +46301,14 @@ /obj/effect/mapping_helpers/paint_wall/medical, /turf/closed/wall/r_wall/prepainted/daedalus, /area/station/maintenance/aft/greater) +"pKM" = ( +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "pKN" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -47209,6 +46980,13 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics/garden) +"pWw" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/aft/greater) "pWG" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/airalarm/directional/west, @@ -47341,22 +47119,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"pZZ" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Service Hall"; - req_one_access_txt = "73" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "qaf" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/flipped{ dir = 4 @@ -47380,22 +47142,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/service/bar) -"qau" = ( -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"qaw" = ( -/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, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "qaL" = ( /obj/effect/turf_decal/siding/purple, /obj/effect/turf_decal/trimline/brown/warning, @@ -47609,13 +47355,6 @@ }, /turf/open/floor/iron/white, /area/station/science/mixing) -"qeB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "qeF" = ( /obj/machinery/light_switch/directional/west{ pixel_y = 26 @@ -47939,6 +47678,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) +"qjT" = ( +/obj/structure/table/glass, +/obj/item/radio/intercom/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Xenobiology Lab - Fore"; + network = list("ss13","rd","xeno") + }, +/obj/machinery/light/directional/west, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/science/cytology) "qjY" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -47958,10 +47711,6 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/carpet, /area/station/service/chapel) -"qkq" = ( -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "qks" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -48150,11 +47899,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) -"qmS" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "qmW" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -48593,6 +48337,14 @@ }, /turf/open/floor/iron, /area/station/science/research) +"qvt" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "qvM" = ( /obj/structure/table, /obj/effect/turf_decal/stripes/line, @@ -48802,6 +48554,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space, /area/space/nearstation) +"qzv" = ( +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/trash/soap{ + spawn_scatter_radius = 1 + }, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "qzL" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -49104,11 +48864,6 @@ }, /turf/open/floor/iron/grimy, /area/station/tcommsat/computer) -"qFZ" = ( -/obj/machinery/light/small/maintenance/directional/south, -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/aft/greater) "qGj" = ( /turf/closed/wall/r_wall/prepainted/daedalus, /area/station/command/gateway) @@ -49643,6 +49398,15 @@ "qSW" = ( /turf/closed/wall/prepainted/daedalus, /area/station/maintenance/disposal) +"qSX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/port/aft) "qTm" = ( /obj/structure/table/wood, /obj/machinery/recharger, @@ -49731,17 +49495,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) -"qVO" = ( -/obj/structure/disposalpipe/segment, -/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/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/main) "qWi" = ( /obj/structure/window/reinforced{ dir = 8 @@ -49814,6 +49567,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) +"qXI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/brown/warning{ + dir = 10 + }, +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/machinery/button/door/directional/north{ + id = "kitchen_counter"; + name = "Counter Shutters Control"; + req_access_txt = "28" + }, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "qXO" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -49877,15 +49644,6 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"qZd" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) "qZh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50803,12 +50561,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/engineering) -"rpK" = ( -/obj/structure/urinal/directional/north, -/obj/effect/landmark/start/hangover, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "rpP" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -51356,6 +51108,21 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/white, /area/station/science/research) +"rzU" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "rAm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -51548,6 +51315,13 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) +"rFt" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "rFF" = ( /turf/closed/wall/prepainted/daedalus, /area/station/maintenance/solars/port/aft) @@ -51806,12 +51580,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"rKf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/pestspawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/port) +"rJX" = ( +/obj/effect/landmark/start/cook, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "rKn" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -52492,6 +52265,18 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"rVc" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/landmark/navigate_destination/bar, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/reagent_containers/glass/rag, +/obj/structure/table, +/turf/open/floor/iron, +/area/station/service/bar) "rVn" = ( /turf/open/floor/iron, /area/station/construction/storage_wing) @@ -52878,6 +52663,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/service/bar) +"sdt" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/port) "sdF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53124,6 +52915,11 @@ }, /turf/open/floor/carpet, /area/station/command/bridge) +"shS" = ( +/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) "shZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -53616,6 +53412,11 @@ }, /turf/open/floor/plating, /area/station/science/robotics/lab) +"suk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "suA" = ( /obj/structure/rack, /obj/item/stack/cable_coil{ @@ -53833,6 +53634,17 @@ /obj/effect/turf_decal/tile/dark/half, /turf/open/floor/iron/white, /area/station/science/lobby) +"szQ" = ( +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "szT" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{ dir = 4 @@ -53881,6 +53693,12 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"sAX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/pestspawn, +/turf/open/floor/wood, +/area/station/service/library) "sBb" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/purple/corner{ @@ -53960,6 +53778,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"sCP" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/fore) "sCT" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 @@ -54356,6 +54181,9 @@ /obj/structure/tank_dispenser, /turf/open/floor/iron/white, /area/station/science/mixing/launch) +"sKG" = ( +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "sKT" = ( /obj/item/storage/bag/plants/portaseeder, /obj/structure/table, @@ -54533,6 +54361,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"sMW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small/maintenance/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) "sNA" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 @@ -54547,21 +54383,6 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, /area/station/security/office) -"sOo" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/door/airlock/medical/glass{ - name = "Cryogenics Bay"; - req_access_txt = "5" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "sOr" = ( /obj/machinery/photocopier, /obj/machinery/camera/directional/east{ @@ -54700,6 +54521,14 @@ }, /turf/open/floor/iron, /area/station/engineering/storage_shared) +"sRp" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "sRz" = ( /turf/closed/wall/prepainted/daedalus, /area/station/security/checkpoint/engineering) @@ -55011,16 +54840,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"sXh" = ( -/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, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "sXi" = ( /obj/structure/closet/firecloset, /obj/effect/landmark/start/hangover/closet, @@ -55841,18 +55660,6 @@ dir = 1 }, /area/station/engineering/atmos) -"tmA" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/bar) "tmH" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -56027,16 +55834,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/brig) -"tqf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/cable, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/cryo) "tqi" = ( /obj/structure/cable, /obj/machinery/camera/directional/south{ @@ -56649,6 +56446,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/lockers) +"tAK" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/science/cytology) "tAR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57096,14 +56901,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) -"tKW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "tLb" = ( /obj/structure/rack, /obj/effect/spawner/random/clothing/costume, @@ -57158,6 +56955,21 @@ }, /turf/closed/wall/prepainted/daedalus, /area/station/security/checkpoint/engineering) +"tLS" = ( +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Service Hall"; + req_one_access_txt = "73" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "tMg" = ( /obj/structure/bed/roller, /obj/effect/turf_decal/trimline/blue/filled/warning{ @@ -57192,6 +57004,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/genetics) +"tMq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "tMI" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer, /turf/open/floor/iron, @@ -57475,6 +57295,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"tSK" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "tSP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57579,16 +57408,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) -"tUH" = ( -/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, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "tUI" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -58040,6 +57859,14 @@ }, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"uei" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "uep" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/circuit/telecomms/server, @@ -58217,6 +58044,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"uhG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "uhI" = ( /obj/machinery/portable_atmospherics/scrubber/huge, /obj/effect/turf_decal/bot_white, @@ -58622,12 +58455,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/transit_tube) -"uqv" = ( -/obj/structure/cable, -/obj/effect/landmark/start/hangover, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "uqU" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -59123,6 +58950,15 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/security/brig) +"uAJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/brown/warning{ + dir = 6 + }, +/obj/structure/closet/secure_closet/freezer/kitchen, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "uBt" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -59193,10 +59029,6 @@ luminosity = 2 }, /area/station/ai_monitored/command/nuke_storage) -"uDy" = ( -/obj/effect/landmark/pestspawn, -/turf/open/floor/iron/ported/techfloor_grid, -/area/station/engineering/supermatter/room) "uEg" = ( /obj/machinery/light/small/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59444,6 +59276,12 @@ "uJR" = ( /turf/closed/wall/prepainted/daedalus, /area/station/maintenance/solars/starboard/fore) +"uJS" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/white, +/area/station/medical/surgery/theatre) "uKh" = ( /obj/effect/turf_decal/tile/neutral, /obj/structure/cable, @@ -59625,13 +59463,6 @@ /obj/effect/mapping_helpers/paint_wall/medical, /turf/closed/wall/prepainted/daedalus, /area/station/medical/treatment_center) -"uOc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/port/aft) "uOl" = ( /obj/structure/sign/warning/explosives, /turf/closed/wall/r_wall/prepainted/daedalus, @@ -59660,13 +59491,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"uOZ" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/cryo) "uPa" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=4-Customs"; @@ -60143,10 +59967,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/iron/dark/textured, /area/station/medical/cryo) -"uYs" = ( -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "uYL" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/chair{ @@ -60154,10 +59974,6 @@ }, /turf/open/floor/wood, /area/station/maintenance/port/aft) -"uYM" = ( -/obj/effect/landmark/pestspawn, -/turf/open/floor/plating, -/area/station/maintenance/fore) "uYZ" = ( /turf/closed/wall/r_wall/prepainted/daedalus, /area/station/maintenance/disposal/incinerator) @@ -60390,19 +60206,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"vde" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "vdo" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -60638,6 +60441,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) +"viz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/fore) "viJ" = ( /obj/machinery/light/small/directional/east, /obj/structure/cable, @@ -60672,11 +60481,6 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron, /area/station/science/research) -"vjp" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "vjs" = ( /turf/open/floor/carpet, /area/station/command/bridge) @@ -60950,6 +60754,14 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"voz" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "voB" = ( /obj/machinery/light_switch/directional/west, /turf/open/floor/iron/grimy, @@ -61018,6 +60830,10 @@ /obj/machinery/recharge_station, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain/private) +"vpt" = ( +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/fore) "vpC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm/directional/east, @@ -61141,6 +60957,11 @@ /obj/effect/spawner/random/engineering/toolbox, /turf/open/floor/iron, /area/station/engineering/storage/mech) +"vsl" = ( +/obj/structure/cable, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/department/medical/central) "vss" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -61348,20 +61169,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) -"vyu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "vyz" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -61370,6 +61177,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"vyC" = ( +/obj/effect/landmark/pestspawn, +/turf/open/floor/iron/ported/techfloor_grid, +/area/station/engineering/supermatter/room) "vyM" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61875,23 +61686,6 @@ }, /turf/open/floor/iron, /area/station/commons/locker) -"vGr" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "vGs" = ( /obj/item/pushbroom, /obj/structure/closet{ @@ -62358,19 +62152,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_dark, /area/station/engineering/main) -"vOz" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/effect/landmark/navigate_destination/bar, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/reagent_containers/glass/rag, -/obj/structure/table, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/bar) "vOO" = ( /obj/structure/window/reinforced{ dir = 4 @@ -62393,6 +62174,17 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) +"vPg" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/obj/machinery/door/airlock{ + name = "Kitchen Cold Room"; + req_access_txt = "28" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen/coldroom) "vPl" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -62936,13 +62728,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/prison) -"wbl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/hangover, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "wbs" = ( /obj/structure/chair/stool/directional/west, /turf/open/floor/iron, @@ -63253,11 +63038,6 @@ /obj/effect/spawner/random/trash/box, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"whX" = ( -/obj/structure/reagent_dispensers/plumbed, -/obj/machinery/light/small/maintenance/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "wia" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ @@ -63364,13 +63144,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) -"wjS" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "wka" = ( /obj/structure/closet/l3closet/security, /obj/structure/window/reinforced{ @@ -64677,6 +64450,18 @@ }, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"wJa" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "wJj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, @@ -65467,6 +65252,13 @@ }, /turf/open/floor/iron/dark, /area/station/service/cafeteria) +"wWE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "wWH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -65654,6 +65446,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/storage) +"xbE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/starboard/lesser) "xbN" = ( /obj/machinery/computer/med_data{ dir = 8 @@ -65757,18 +65555,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"xdt" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, -/obj/machinery/door/airlock{ - name = "Kitchen Cold Room"; - req_access_txt = "28" - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen/coldroom) "xdI" = ( /obj/machinery/status_display/evac/directional/north, /obj/structure/table/wood, @@ -66225,13 +66011,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) -"xmm" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/storage) "xms" = ( /obj/structure/chair, /obj/effect/turf_decal/tile/neutral, @@ -66637,6 +66416,11 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"xud" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "xuv" = ( /obj/machinery/cryopod{ dir = 8 @@ -66787,6 +66571,11 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/commons/locker) +"xwv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "xwG" = ( /obj/machinery/door/airlock/maintenance{ name = "Library Maintenance"; @@ -67270,6 +67059,13 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"xEv" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/landmark/pestspawn, +/turf/open/floor/plating, +/area/station/maintenance/aft/lesser) "xEw" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -67359,17 +67155,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"xGn" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/iron/white, -/area/station/medical/cryo) "xGu" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/stasis{ @@ -67510,12 +67295,6 @@ /obj/structure/sign/warning/electricshock, /turf/closed/wall/prepainted/daedalus, /area/station/maintenance/port/fore) -"xKG" = ( -/obj/structure/urinal/directional/north, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "xKO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67608,6 +67387,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"xNs" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/landmark/pestspawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/department/medical/central) "xNz" = ( /obj/structure/chair/office/light{ dir = 8 @@ -68497,6 +68287,17 @@ /obj/effect/turf_decal/tile/green/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central) +"yeL" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/item/clothing/head/that, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table, +/turf/open/floor/iron, +/area/station/service/bar) "yeN" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -68550,16 +68351,6 @@ /obj/effect/spawner/random/decoration/ornament, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"yfy" = ( -/obj/machinery/duct, -/obj/machinery/door/airlock/medical{ - name = "Primary Surgical Theatre"; - req_access_txt = "45" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "yfA" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 @@ -82710,7 +82501,7 @@ auC dst nbO nwN -bbe +nwV aRG lZy auG @@ -82748,7 +82539,7 @@ dkH rDS rDS rDS -rKf +sdt iuy nfn bbL @@ -85342,7 +85133,7 @@ rig bXE vYs sFA -qkq +fuf muD vYs aaa @@ -87151,7 +86942,7 @@ asc lMp tLn xBp -leN +bcp mQf nKF lry @@ -87396,8 +87187,8 @@ pao kgL xyv bbE -whX -frp +iYv +neE bbE dDw utr @@ -87623,7 +87414,7 @@ aoa tWo hjd owG -rKf +sdt rDS rDS aoa @@ -87653,8 +87444,8 @@ nYV sCT oMX bbE -eKh -frp +bXE +neE bbE cvl rNZ @@ -87911,7 +87702,7 @@ uMv aYA bbE bXE -frp +neE bbE ejb kUo @@ -88091,7 +87882,7 @@ xKE dnd aRG sdk -qmS +frQ oaS dou auC @@ -88162,13 +87953,13 @@ ifv rOQ jCA prq -qau -jXg +uJS +lDc cFj cQH bbE vyN -frp +neE bbE bbE bbE @@ -88414,20 +88205,20 @@ rzv svq vYs xxb -ewi +qSX bbE opx xjm cZc bpT -pdp +oiv dXY rRs bbE bXE -nXg -uOc -dPt +hvG +kgz +fnj bXE uQy bZp @@ -88449,7 +88240,7 @@ nKF iVR lEs aGx -qFZ +bCY gKU lMJ aaa @@ -88677,14 +88468,14 @@ uNP gtf rdr niE -yfy +hhd gtf uNP bbE bbE bbE bbE -cct +apa bbE phy bbE @@ -88934,14 +88725,14 @@ wFR nIN eFQ mYT -dkG +bsr sNA aMt muK sxv xPg oSd -god +ppX bQn nyl sxv @@ -89187,18 +88978,18 @@ bbE bbE bbE xGu -nCO -fzF -vjp -llc -nUM -idL +gdS +kZp +jGR +jGR +shS +tSK fBL iJD sxv laH cto -aGh +ijL vTz tzP sxv @@ -89432,30 +89223,30 @@ sbV oMN oNC dPk -oEx +sAX eEw rBw qQS khu hfv dRa -gaP -tqf +jIN +keF eYC uNP kWz -wjS +oxQ rKP xKj xKj pKY -dor +yiv llx eoE kTX oII eYN -miU +eSG eYN fXO kTX @@ -89697,22 +89488,22 @@ khu dvq gDq xFI -uOZ +nCt yiT bVR nIN -pGd +gxS llx pAE haB bXm -wjS -kjG -axz -oug -mVF -xmm -aoT +oxQ +hks +sNA +rLc +hFs +vet +pjH vet igG rLc @@ -89954,16 +89745,16 @@ hrh uYn suT hkV -xGn -fFM -sOo -mmM -mbm +kgU +jUQ +eBI +voz +gdl rqL yfh pGn kOW -wjS +oxQ sdm ncc kTX @@ -90220,7 +90011,7 @@ llx xad xOp eQb -wjS +oxQ rKP dPO rLc @@ -90476,8 +90267,8 @@ oxQ hks pzK pzK -ewz -pGd +fCk +gxS llx eoE kTX @@ -90729,11 +90520,11 @@ kTS fKO uNP iHE -duA +aXl qla vsw vsw -qeB +kmU xJZ mAI uxv @@ -90990,7 +90781,7 @@ vHT aNq fem xzZ -sXh +acw uFV vHT muK @@ -91247,7 +91038,7 @@ uNP bVR gOC bVR -klW +ctM bVR uNP uNP @@ -91434,7 +91225,7 @@ rNE auC xLF aRG -nzY +keV auC aaa aaa @@ -91504,7 +91295,7 @@ oDH ruw rWs tid -tUH +gTI lXD wlT ryN @@ -91758,10 +91549,10 @@ dxa nuZ jQH cCO -kOI -fnL -fnL -bWk +iqt +cCO +cCO +dHt cqj rcG kkA @@ -92475,7 +92266,7 @@ lAu aaa gqd jTI -jMM +caZ qbA qbA hlz @@ -94077,7 +93868,7 @@ kgH ggh qpH rOr -gmR +xNs qZL qZL ixG @@ -94603,7 +94394,7 @@ vWr piR rJU aFV -lbB +vsl wuo pqs jXC @@ -94612,7 +94403,7 @@ siG kzp gUH nKF -bxZ +pWw gKU eMs nDV @@ -101037,7 +100828,7 @@ snw gWs iJB ibD -jMd +xEv cBl wBG lMJ @@ -101722,7 +101513,7 @@ xzM qjo whB pDX -fta +viz whB wMT goR @@ -101807,7 +101598,7 @@ mbj ibD ibD ibD -mGh +hSz pNc kkO kkO @@ -101978,8 +101769,8 @@ tgk kTF xmG whB -mFR -nMJ +sMW +kcr whB kKj goR @@ -102236,13 +102027,13 @@ whB whB whB riR -jVO -mHI -uqv -cbk -hqf -ogX -ncP +pId +sCP +iWa +lBH +rtV +bOe +sKG eEk oQr tzh @@ -102272,7 +102063,7 @@ nru fyU upo ker -tmA +kgr kgr fWk tFe @@ -102495,7 +102286,7 @@ ipn kDL rSy whB -xKG +jeB rtV ulD vca @@ -102529,7 +102320,7 @@ fAJ mnX lde wiX -kxo +yeL hLQ kBD efb @@ -102752,7 +102543,7 @@ whB whB whB whB -xKG +jeB yij goR goR @@ -102786,7 +102577,7 @@ iqP mnX lzu tVh -vOz +rVc jnW xZT efb @@ -102992,7 +102783,7 @@ aaa whB ahe gSY -uYM +vpt ajP hMH qcb @@ -103009,7 +102800,7 @@ xyO mot iTF goR -rpK +ith xOr byH dTc @@ -103262,11 +103053,11 @@ aub aje ahd whB -dsX -oVG -iMh -lks -mGe +xud +qzv +suk +pKM +xwv oOj ftq goR @@ -104072,17 +103863,17 @@ veX iBW rdj voI -jQg -nwr -kFf -mti -adq -pgS -fXM -vGr +mUX +rFt +eeS +tMq +cAQ +czH +rzU +kSa eiW mol -pEn +lRu sYq iKa ydo @@ -104329,14 +104120,14 @@ oNH iBW sVF tnM -eMn +nlD hEe iRT -tKW +wWE upb aRc bKl -oXQ +fFH cNj eiW mqS @@ -104586,15 +104377,15 @@ mfe bUM uQS cPo -eMn +nlD fwO kDb -pxg +rJX mXp ons xYs -bjR -eku +oUr +szQ eiW ptZ sYq @@ -104843,15 +104634,15 @@ fAJ iBW uQS tnM -eMn +nlD lLl ssN -bYE +upb aFe ons vaY -chR -vyu +qvt +bza eiW mol jZd @@ -105078,7 +104869,7 @@ sYS uHI adQ tdK -oyp +oGL uwd tcf bXZ @@ -105100,7 +104891,7 @@ fQq iBW uQS cXN -wbl +uhG nIf vcT pWo @@ -105108,7 +104899,7 @@ gDM ons fTJ woD -fqT +cjp xom mol gyi @@ -105121,7 +104912,7 @@ hmW nSI rIe lFK -cyL +xbE nCy mVM nCy @@ -105357,7 +105148,7 @@ uMs bGE uQS hdG -obP +fnT hJU oSm oCO @@ -105365,7 +105156,7 @@ oCO oCO oCO oCO -vde +ehc gqZ mol lel @@ -105614,7 +105405,7 @@ gML vXD frK ons -pGx +qXI hzQ sDm oCO @@ -105622,7 +105413,7 @@ bAk qfx iOA oCO -fFN +wJa dUC mol afC @@ -105871,15 +105662,15 @@ sER jXc vLe sGj -ngU -fsB -hSY -xdt -dgC +uAJ +die +iNW +vPg +uei tlN thR oCO -mPe +omo lES mol hfp @@ -106136,7 +105927,7 @@ jah gqa xli oCO -mUi +apz lES lnz rhw @@ -106393,7 +106184,7 @@ sGj aej nFx oCO -qZd +iEE lES dKp rhw @@ -106650,7 +106441,7 @@ sGj img oQY oCO -czU +gCr lES nGF gQz @@ -106689,7 +106480,7 @@ jIn jIn jIn dsY -hxm +bYC jlJ geL fDq @@ -106907,7 +106698,7 @@ sGj fAW crV qbl -pZZ +tLS qbl lgk vNX @@ -107164,7 +106955,7 @@ qbl bZu qbl qbl -nyo +sRp qbl qbl fLz @@ -107421,7 +107212,7 @@ lZn wJj ibC gKZ -fuw +nEq qbl iNP aCo @@ -107677,8 +107468,8 @@ qbl qbl nHu rka -qaw -fya +ajh +cUN reZ vvM ngE @@ -107924,7 +107715,7 @@ kzV tFd vym kIb -cWx +dWx sBG fMR sfH @@ -108196,7 +107987,7 @@ qbl qbl nDU uxp -bRy +gaq oEh osp tSb @@ -108655,7 +108446,7 @@ afD tdK tLb atd -uYs +kHe atd tdK lZd @@ -108702,7 +108493,7 @@ vym vym vym vym -hgG +mns nRC vTg rya @@ -109964,8 +109755,8 @@ qzc vkX ygI eYG -qVO -eXp +bbU +frN wBk bDQ jIq @@ -110222,7 +110013,7 @@ qvb gjS akp lZK -eWl +hld pWb gjS dfu @@ -111048,11 +110839,11 @@ jhB jhB jhB xBG -glF +qjT wOM fcb jyx -cAN +tAK cGs jhB jhB @@ -111304,7 +111095,7 @@ pYu kRT ttw dWn -mvA +gHB gnh ygg jQb @@ -111824,7 +111615,7 @@ eCr aPf plH ies -lfQ +eds jhB vjb uzE @@ -112076,7 +111867,7 @@ ffo ffo ffo ffo -lAf +kaq rUh qpm cbS @@ -113299,7 +113090,7 @@ kLK hbn nsU pgy -uDy +vyC mVZ jgT fQO diff --git a/_maps/map_files/debug/multiz.dmm b/_maps/map_files/debug/multiz.dmm index 7119e6392d51..39b6012c854e 100644 --- a/_maps/map_files/debug/multiz.dmm +++ b/_maps/map_files/debug/multiz.dmm @@ -1651,7 +1651,6 @@ dir = 1 }, /obj/structure/table, -/obj/item/construction/plumbing, /turf/open/floor/iron, /area/station/construction) "SN" = ( diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 20a042a19907..768fc23e1625 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -159,7 +159,6 @@ /obj/item/rcd_ammo/large, /obj/item/rcd_ammo/large, /obj/item/construction/rcd/combat, -/obj/item/construction/plumbing, /turf/open/floor/iron, /area/station/command/bridge) "aN" = ( diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 6ea1bbe54a6d..d1ca798955fe 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -713,10 +713,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/white, /area/centcom/tdome/observation) -"ci" = ( -/obj/machinery/duct, -/turf/open/floor/iron/cafeteria, -/area/centcom/central_command_areas/holding) "cj" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 9 @@ -1228,16 +1224,6 @@ dir = 4 }, /area/centcom/central_command_areas/holding) -"dC" = ( -/obj/structure/rack, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/wrench{ - desc = "A little smidgeon of Freon..."; - name = "Freon" - }, -/turf/open/floor/mineral/titanium/tiled/yellow, -/area/centcom/syndicate_mothership/expansion_chemicalwarfare) "dD" = ( /obj/structure/fence, /obj/effect/light_emitter{ @@ -1412,20 +1398,6 @@ }, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) -"ee" = ( -/obj/structure/closet, -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/machinery/iv_drip, -/obj/item/roller, -/obj/item/storage/medkit/regular, -/obj/item/reagent_containers/medigel/synthflesh, -/obj/item/reagent_containers/medigel/synthflesh, -/obj/item/reagent_containers/medigel/synthflesh, -/obj/item/organ/heart/cybernetic/tier2, -/obj/item/organ/heart/cybernetic/tier2, -/obj/item/defibrillator, -/turf/open/floor/iron/sepia, -/area/centcom/central_command_areas/holding) "ef" = ( /obj/item/kirbyplants{ icon_state = "plant-22" @@ -1878,10 +1850,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/showroomfloor, /area/centcom/central_command_areas/holding) -"fq" = ( -/obj/machinery/duct, -/turf/open/floor/carpet/black, -/area/centcom/central_command_areas/holding) "fs" = ( /obj/effect/turf_decal/tile/yellow/half, /obj/effect/turf_decal/tile/yellow/half{ @@ -2770,16 +2738,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/courtroom) -"hQ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/reagent_dispensers/plumbed{ - pixel_x = 5; - pixel_y = 4 - }, -/turf/open/floor/catwalk_floor, -/area/centcom/central_command_areas/holding) "hS" = ( /obj/structure/flora/rock/icy, /turf/open/misc/asteroid/snow/airless, @@ -3589,6 +3547,10 @@ "kb" = ( /turf/closed/indestructible/rock/snow, /area/centcom/syndicate_mothership/control) +"kd" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/carpet/black, +/area/centcom/central_command_areas/holding) "ke" = ( /obj/machinery/light/cold/directional/east, /obj/machinery/vending/snack/teal, @@ -4987,25 +4949,6 @@ "of" = ( /turf/closed/indestructible/opsglass, /area/centcom/syndicate_mothership/expansion_bombthreat) -"og" = ( -/obj/item/clothing/shoes/galoshes{ - pixel_y = -8 - }, -/obj/item/storage/belt/janitor{ - pixel_x = 2; - pixel_y = -4 - }, -/obj/item/watertank/janitor{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/item/pushbroom{ - pixel_x = -5; - pixel_y = -3 - }, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor, -/area/centcom/central_command_areas/holding) "oh" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -5577,11 +5520,6 @@ "pJ" = ( /turf/open/misc/asteroid/basalt/airless, /area/centcom/central_command_areas/holding) -"pK" = ( -/obj/structure/reagent_dispensers/plumbed, -/obj/machinery/light/small/directional/south, -/turf/open/floor/carpet/black, -/area/centcom/central_command_areas/holding) "pL" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -6414,11 +6352,30 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/briefing) +"sy" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/airlock/wood{ + name = "Bar" + }, +/turf/open/floor/iron/sepia, +/area/centcom/central_command_areas/holding) "sz" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/control) +"sA" = ( +/obj/structure/rack, +/obj/item/stack/sheet/iron/fifty, +/obj/item/wrench{ + desc = "A little smidgeon of Freon..."; + name = "Freon" + }, +/turf/open/floor/mineral/titanium/tiled/yellow, +/area/centcom/syndicate_mothership/expansion_chemicalwarfare) "sC" = ( /obj/effect/turf_decal/tile/green{ dir = 1 @@ -8650,6 +8607,19 @@ /obj/structure/sign/nanotrasen, /turf/closed/indestructible/reinforced/centcom, /area/centcom/tdome/observation) +"zx" = ( +/obj/structure/table/glass/plasmaglass, +/obj/item/plunger{ + pixel_x = -9; + pixel_y = 15 + }, +/obj/item/reagent_containers/dropper{ + pixel_x = 5; + pixel_y = 14 + }, +/obj/structure/noticeboard/directional/west, +/turf/open/floor/mineral/titanium/tiled/yellow, +/area/centcom/syndicate_mothership/expansion_chemicalwarfare) "zz" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, @@ -9300,6 +9270,10 @@ /obj/machinery/vending/clothing, /turf/open/floor/wood/parquet, /area/centcom/central_command_areas/holding) +"Bl" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "Bm" = ( /obj/structure/reagent_dispensers/fueltank, /obj/item/weldingtool/experimental, @@ -10069,17 +10043,6 @@ }, /turf/open/floor/wood/tile, /area/centcom/central_command_areas/holding) -"Dn" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/airlock/wood{ - name = "Bar" - }, -/obj/machinery/duct, -/turf/open/floor/iron/sepia, -/area/centcom/central_command_areas/holding) "Do" = ( /obj/structure/railing/corner{ dir = 4 @@ -10977,6 +10940,24 @@ /obj/structure/flora/grass/both, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) +"FS" = ( +/obj/item/clothing/shoes/galoshes{ + pixel_y = -8 + }, +/obj/item/storage/belt/janitor{ + pixel_x = 2; + pixel_y = -4 + }, +/obj/item/watertank/janitor{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/item/pushbroom{ + pixel_x = -5; + pixel_y = -3 + }, +/turf/open/floor/catwalk_floor, +/area/centcom/central_command_areas/holding) "FT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, @@ -11071,10 +11052,6 @@ }, /turf/open/floor/iron/grimy, /area/centcom/central_command_areas/admin) -"Gh" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) "Gi" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 6 @@ -12495,6 +12472,12 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/wood/tile, /area/centcom/syndicate_mothership/control) +"Ky" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/catwalk_floor, +/area/centcom/central_command_areas/holding) "Kz" = ( /obj/item/kirbyplants{ icon_state = "plant-10" @@ -14163,12 +14146,6 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/supplypod/loading/four) -"Pw" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/duct, -/obj/item/clothing/suit/apron, -/turf/open/floor/catwalk_floor, -/area/centcom/central_command_areas/holding) "Px" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole/bookmanagement, @@ -16067,6 +16044,11 @@ }, /turf/open/floor/wood/tile, /area/centcom/central_command_areas/holding) +"UD" = ( +/obj/effect/turf_decal/siding/wood, +/obj/item/clothing/suit/apron, +/turf/open/floor/catwalk_floor, +/area/centcom/central_command_areas/holding) "UE" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/item/paper_bin, @@ -17304,12 +17286,19 @@ }, /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership/expansion_bombthreat) -"XH" = ( -/obj/item/kirbyplants{ - icon_state = "plant-10" - }, -/obj/machinery/duct, -/turf/open/floor/carpet/black, +"XI" = ( +/obj/structure/closet, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/iv_drip, +/obj/item/roller, +/obj/item/storage/medkit/regular, +/obj/item/reagent_containers/medigel/synthflesh, +/obj/item/reagent_containers/medigel/synthflesh, +/obj/item/reagent_containers/medigel/synthflesh, +/obj/item/organ/heart/cybernetic/tier2, +/obj/item/organ/heart/cybernetic/tier2, +/obj/item/defibrillator, +/turf/open/floor/iron/sepia, /area/centcom/central_command_areas/holding) "XJ" = ( /obj/structure/flora/ausbushes/lavendergrass, @@ -17869,20 +17858,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/expansion_bombthreat) -"Zq" = ( -/obj/structure/table/glass/plasmaglass, -/obj/item/plunger{ - pixel_x = -9; - pixel_y = 15 - }, -/obj/item/construction/plumbing, -/obj/item/reagent_containers/dropper{ - pixel_x = 5; - pixel_y = 14 - }, -/obj/structure/noticeboard/directional/west, -/turf/open/floor/mineral/titanium/tiled/yellow, -/area/centcom/syndicate_mothership/expansion_chemicalwarfare) "Zr" = ( /obj/structure/table/wood, /obj/machinery/light/directional/south, @@ -23145,7 +23120,7 @@ kb nH Ue rp -Zq +zx Gx HY zX @@ -23400,7 +23375,7 @@ aa aa kb nH -dC +sA EN EN EN @@ -25218,7 +25193,7 @@ kv kv kv kv -Gh +Bl yN Mq kb @@ -36032,7 +36007,7 @@ fT ZA Bn PP -pK +kd fO tc CQ @@ -36281,15 +36256,15 @@ hs pJ Nd OB -ci -ci -Dn -fq -fq -fq -fq -fq -fq +Fh +Fh +sy +Sd +Sd +Sd +Sd +Sd +Sd TJ CQ Rc @@ -36538,11 +36513,11 @@ pJ pJ Nd QA -ci +Fh Fh fO Wb -XH +bu Sd Sd bu @@ -44523,7 +44498,7 @@ YC Kz fO Sy -og +FS Nd OL aa @@ -45273,7 +45248,7 @@ Zt Zt Iy fO -ee +XI hb Vj fO @@ -45285,7 +45260,7 @@ bu fO Pf Sa -ee +XI fO Oe yg @@ -46833,7 +46808,7 @@ Hi Hi Hi fO -hQ +Ky eb eW Gt @@ -47090,7 +47065,7 @@ Nd Nd Nd Nd -Pw +UD yg yg ZZ diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index f1374b0722c9..b1613f7789ce 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -118,13 +118,6 @@ #define COLOR_ASSEMBLY_BLUE "#38559E" #define COLOR_ASSEMBLY_PURPLE "#6F6192" -///Colors for xenobiology vatgrowing -#define COLOR_SAMPLE_YELLOW "#c0b823" -#define COLOR_SAMPLE_PURPLE "#342941" -#define COLOR_SAMPLE_GREEN "#98b944" -#define COLOR_SAMPLE_BROWN "#91542d" -#define COLOR_SAMPLE_GRAY "#5e5856" - ///Main colors for UI themes #define COLOR_THEME_MIDNIGHT "#6086A0" #define COLOR_THEME_PLASMAFIRE "#FFB200" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm index 0488a3e2b745..b3df187a2f84 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm @@ -77,8 +77,6 @@ #define COMSIG_MOVABLE_LIGHT_OVERLAY_TOGGLE_ON "movable_light_overlay_toggle_on" ///called when the movable's glide size is updated: (new_glide_size) #define COMSIG_MOVABLE_UPDATE_GLIDE_SIZE "movable_glide_size" -///Called when a movable is hit by a plunger in layer mode, from /obj/item/plunger/attack_atom() -#define COMSIG_MOVABLE_CHANGE_DUCT_LAYER "movable_change_duct_layer" ///Called when a movable is being teleported from `do_teleport()`: (destination, channel) #define COMSIG_MOVABLE_TELEPORTED "movable_teleported" ///Called after a movable is teleported from `do_teleport()`: () diff --git a/code/__DEFINES/dcs/signals/signals_cytology.dm b/code/__DEFINES/dcs/signals/signals_cytology.dm deleted file mode 100644 index 7dc4152edfc7..000000000000 --- a/code/__DEFINES/dcs/signals/signals_cytology.dm +++ /dev/null @@ -1,4 +0,0 @@ -//Cytology signals -///Sent from /datum/biological_sample/proc/reset_sample -#define COMSIG_SAMPLE_GROWTH_COMPLETED "sample_growth_completed" - #define SPARE_SAMPLE (1<<0) diff --git a/code/__DEFINES/dcs/signals/signals_swab.dm b/code/__DEFINES/dcs/signals/signals_swab.dm deleted file mode 100644 index 6a6aefb66d8e..000000000000 --- a/code/__DEFINES/dcs/signals/signals_swab.dm +++ /dev/null @@ -1,3 +0,0 @@ -// /datum/component/swabbing signals -#define COMSIG_SWAB_FOR_SAMPLES "swab_for_samples" ///Called when you try to swab something using the swabable component, includes a mutable list of what has been swabbed so far so it can be modified. - #define COMPONENT_SWAB_FOUND (1<<0) diff --git a/code/__DEFINES/plumbing.dm b/code/__DEFINES/plumbing.dm deleted file mode 100644 index 9666a5be1e16..000000000000 --- a/code/__DEFINES/plumbing.dm +++ /dev/null @@ -1,9 +0,0 @@ -#define FIRST_DUCT_LAYER 1 -#define SECOND_DUCT_LAYER 2 -#define THIRD_DUCT_LAYER 4 -#define FOURTH_DUCT_LAYER 8 -#define FIFTH_DUCT_LAYER 16 - -#define DUCT_LAYER_DEFAULT THIRD_DUCT_LAYER - -#define MACHINE_REAGENT_TRANSFER 10 //the default max plumbing machinery transfers diff --git a/code/_globalvars/lists/xenobiology.dm b/code/_globalvars/lists/xenobiology.dm deleted file mode 100644 index ee2a7724b21a..000000000000 --- a/code/_globalvars/lists/xenobiology.dm +++ /dev/null @@ -1,99 +0,0 @@ -///These global lists exist to allow our element to have weight tables without having to be separate instances. - -///Assoc list of cell line define | assoc list of datum | cell_line -GLOBAL_LIST_INIT_TYPED(cell_line_tables, /list, list( - CELL_LINE_TABLE_SLUDGE = list( - /datum/micro_organism/cell_line/blobbernaut = 1, - /datum/micro_organism/cell_line/chicken = 1, - /datum/micro_organism/cell_line/cockroach = 2, - /datum/micro_organism/cell_line/cow = 1, - /datum/micro_organism/cell_line/mouse = 1, - /datum/micro_organism/cell_line/sholean_grapes = 2, - /datum/micro_organism/cell_line/slime = 2, - ), - - CELL_LINE_TABLE_MOIST = list( - /datum/micro_organism/cell_line/carp = 1, - /datum/micro_organism/cell_line/cockroach = 1, - /datum/micro_organism/cell_line/gelatinous_cube = 2, - /datum/micro_organism/cell_line/megacarp = 1, - /datum/micro_organism/cell_line/slime = 2, - /datum/micro_organism/cell_line/snake = 1, - /datum/micro_organism/cell_line/glockroach = 1, - /datum/micro_organism/cell_line/hauberoach = 1, - ), - - CELL_LINE_TABLE_BLOB = list( - /datum/micro_organism/cell_line/blob_spore = 1, - /datum/micro_organism/cell_line/blobbernaut = 1, - ), - - CELL_LINE_TABLE_MOLD = list( - /datum/micro_organism/cell_line/bear = 1, - /datum/micro_organism/cell_line/blob_spore = 1, - /datum/micro_organism/cell_line/cat = 1, - /datum/micro_organism/cell_line/cockroach = 1, - /datum/micro_organism/cell_line/corgi = 1, - /datum/micro_organism/cell_line/mouse = 2, - /datum/micro_organism/cell_line/slime = 1, - /datum/micro_organism/cell_line/vat_beast = 2, - ), - - CELL_LINE_TABLE_BEAR = list(/datum/micro_organism/cell_line/bear = 1), - CELL_LINE_TABLE_BLOBBERNAUT = list(/datum/micro_organism/cell_line/blobbernaut = 1), - CELL_LINE_TABLE_BLOBSPORE = list(/datum/micro_organism/cell_line/blob_spore = 1), - CELL_LINE_TABLE_CARP = list(/datum/micro_organism/cell_line/carp = 1), - CELL_LINE_TABLE_CAT = list(/datum/micro_organism/cell_line/cat = 1), - CELL_LINE_TABLE_CHICKEN = list(/datum/micro_organism/cell_line/chicken = 1), - CELL_LINE_TABLE_COCKROACH = list(/datum/micro_organism/cell_line/cockroach = 1), - CELL_LINE_TABLE_CORGI = list(/datum/micro_organism/cell_line/corgi = 1), - CELL_LINE_TABLE_COW = list(/datum/micro_organism/cell_line/cow = 1), - CELL_LINE_TABLE_MOONICORN = list(/datum/micro_organism/cell_line/moonicorn = 1), - CELL_LINE_TABLE_GELATINOUS = list(/datum/micro_organism/cell_line/gelatinous_cube = 1), - CELL_LINE_TABLE_GLOCKROACH = list(/datum/micro_organism/cell_line/glockroach = 1), - CELL_LINE_TABLE_GRAPE = list(/datum/micro_organism/cell_line/sholean_grapes = 1), - CELL_LINE_TABLE_HAUBEROACH = list(/datum/micro_organism/cell_line/hauberoach = 1), - CELL_LINE_TABLE_MEGACARP = list(/datum/micro_organism/cell_line/megacarp = 1), - CELL_LINE_TABLE_MOUSE = list(/datum/micro_organism/cell_line/mouse = 1), - CELL_LINE_TABLE_PINE = list(/datum/micro_organism/cell_line/pine = 1), - CELL_LINE_TABLE_PUG = list(/datum/micro_organism/cell_line/pug = 1), - CELL_LINE_TABLE_SLIME = list(/datum/micro_organism/cell_line/slime = 1), - CELL_LINE_TABLE_SNAKE = list(/datum/micro_organism/cell_line/snake = 1), - CELL_LINE_TABLE_VATBEAST = list(/datum/micro_organism/cell_line/vat_beast = 1), - CELL_LINE_TABLE_NETHER = list(/datum/micro_organism/cell_line/netherworld = 1), - CELL_LINE_TABLE_CLOWN = list( - /datum/micro_organism/cell_line/clown/bananaclown = 1, - /datum/micro_organism/cell_line/clown/glutton = 1, - /datum/micro_organism/cell_line/clown/longclown = 1, - ), - - CELL_LINE_TABLE_GLUTTON = list(/datum/micro_organism/cell_line/clown/glutton = 1), - CELL_LINE_TABLE_FROG = list(/datum/micro_organism/cell_line/frog = 1), - CELL_LINE_TABLE_WALKING_MUSHROOM = list(/datum/micro_organism/cell_line/walking_mushroom = 1), - CELL_LINE_TABLE_QUEEN_BEE = list(/datum/micro_organism/cell_line/queen_bee = 1), - CELL_LINE_TABLE_LEAPER = list(/datum/micro_organism/cell_line/leaper = 1), - CELL_LINE_TABLE_MEGA_ARACHNID = list(/datum/micro_organism/cell_line/mega_arachnid = 1), - CELL_LINE_TABLE_ALGAE = list( - /datum/micro_organism/cell_line/frog = 2, - /datum/micro_organism/cell_line/leaper = 2, - /datum/micro_organism/cell_line/mega_arachnid = 1, - /datum/micro_organism/cell_line/queen_bee = 1, - /datum/micro_organism/cell_line/snake = 1, - /datum/micro_organism/cell_line/walking_mushroom = 2, - ) -)) - -///Assoc list of cell virus define | assoc list of datum | cell_virus -GLOBAL_LIST_INIT(cell_virus_tables, list( - CELL_VIRUS_TABLE_GENERIC = list(/datum/micro_organism/virus = 1), - CELL_VIRUS_TABLE_GENERIC_MOB = list(/datum/micro_organism/virus = 1) - )) - -///List of all possible sample colors -GLOBAL_LIST_INIT(xeno_sample_colors, list( - COLOR_SAMPLE_BROWN, - COLOR_SAMPLE_GRAY, - COLOR_SAMPLE_GREEN, - COLOR_SAMPLE_PURPLE, - COLOR_SAMPLE_YELLOW, -)) diff --git a/code/controllers/subsystem/processing/fluids.dm b/code/controllers/subsystem/processing/fluids.dm deleted file mode 100644 index 788177db45a1..000000000000 --- a/code/controllers/subsystem/processing/fluids.dm +++ /dev/null @@ -1,5 +0,0 @@ -PROCESSING_SUBSYSTEM_DEF(fluids) - name = "Fluids" - wait = 10 - stat_tag = "FD" //its actually Fluid Ducts - flags = SS_NO_INIT | SS_HIBERNATE diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 3bbb3bbef919..4498502bf9bd 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -438,7 +438,6 @@ name = "Hygienebot" result = /mob/living/simple_animal/bot/hygienebot reqs = list(/obj/item/bot_assembly/hygienebot = 1, - /obj/item/stack/ducts = 1, /obj/item/assembly/prox_sensor = 1) tool_behaviors = list(TOOL_WELDER) time = 40 diff --git a/code/datums/components/plumbing/IV_drip.dm b/code/datums/components/plumbing/IV_drip.dm deleted file mode 100644 index cc5be40a62ce..000000000000 --- a/code/datums/components/plumbing/IV_drip.dm +++ /dev/null @@ -1,34 +0,0 @@ -///Component for IVs that tracks the current person being IV'd. Input received through plumbing is instead routed to the whoever is attached -/datum/component/plumbing/iv_drip - demand_connects = SOUTH - supply_connects = NORTH - - methods = INJECT - -/datum/component/plumbing/iv_drip/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) - . = ..() - - set_recipient_reagents_holder(null) - -/datum/component/plumbing/iv_drip/RegisterWithParent() - . = ..() - - RegisterSignal(parent, list(COMSIG_IV_ATTACH), PROC_REF(update_attached)) - RegisterSignal(parent, list(COMSIG_IV_DETACH), PROC_REF(clear_attached)) - -/datum/component/plumbing/iv_drip/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_IV_ATTACH)) - UnregisterSignal(parent, list(COMSIG_IV_DETACH)) - -///When an IV is attached, we will use whoever is attached as our receiving container -/datum/component/plumbing/iv_drip/proc/update_attached(datum/source, mob/living/attachee) - SIGNAL_HANDLER - - if(attachee?.reagents) - set_recipient_reagents_holder(attachee.reagents) - -///IV has been detached, so clear the holder -/datum/component/plumbing/iv_drip/proc/clear_attached(datum/source) - SIGNAL_HANDLER - - set_recipient_reagents_holder(null) diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm deleted file mode 100644 index 8663e0c5782b..000000000000 --- a/code/datums/components/plumbing/_plumbing.dm +++ /dev/null @@ -1,370 +0,0 @@ -/datum/component/plumbing - dupe_mode = COMPONENT_DUPE_ALLOWED - ///Index with "1" = /datum/ductnet/theductpointingnorth etc. "1" being the num2text from NORTH define - var/list/datum/ductnet/ducts = list() - ///shortcut to our parents' reagent holder - var/datum/reagents/reagents - ///TRUE if we wanna add proper pipe overlays under our parent object. this is pretty good if i may so so myself - var/use_overlays = TRUE - ///Whether our tile is covered and we should hide our ducts - var/tile_covered = FALSE - ///directions in wich we act as a supplier - var/supply_connects - ///direction in wich we act as a demander - var/demand_connects - ///FALSE to pretty much just not exist in the plumbing world so we can be moved, TRUE to go plumbo mode - var/active = FALSE - ///if TRUE connects will spin with the parent object visually and codually, so you can have it work in any direction. FALSE if you want it to be static - var/turn_connects = TRUE - ///The layer on which we connect. Don't add multiple. If you want multiple layer connects for some reason you can just add multiple components with different layers - var/ducting_layer = DUCT_LAYER_DEFAULT - ///In-case we don't want the main machine to get the reagents, but perhaps whoever is buckled to it - var/recipient_reagents_holder - ///How do we apply the new reagents to the receiver? Generally doesn't matter, but some stuff, like people, does care if its injected or whatevs - var/methods - ///What color is our demand connect? Also it's not auto-colored so you'll have to make new sprites if its anything other than red, blue, yellow or green - var/demand_color = "red" - ///What color is our supply connect? Also, refrain from pointlessly using non-standard colors unless it's really funny or something - var/supply_color = "blue" - -///turn_connects is for wheter or not we spin with the object to change our pipes -/datum/component/plumbing/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) - if(!ismovable(parent)) - return COMPONENT_INCOMPATIBLE - - if(_ducting_layer) - ducting_layer = _ducting_layer - - var/atom/movable/AM = parent - if(!AM.reagents && !custom_receiver) - return COMPONENT_INCOMPATIBLE - - reagents = AM.reagents - turn_connects = _turn_connects - - set_recipient_reagents_holder(custom_receiver ? custom_receiver : AM.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, list(COMSIG_COMPONENT_ADDED), PROC_REF(enable)) - -/datum/component/plumbing/RegisterWithParent() - RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED,COMSIG_PARENT_PREQDELETED), PROC_REF(disable)) - RegisterSignal(parent, list(COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH), PROC_REF(toggle_active)) - RegisterSignal(parent, list(COMSIG_OBJ_HIDE), PROC_REF(hide)) - RegisterSignal(parent, list(COMSIG_ATOM_UPDATE_OVERLAYS), PROC_REF(create_overlays)) //called by lateinit on startup - RegisterSignal(parent, list(COMSIG_MOVABLE_CHANGE_DUCT_LAYER), PROC_REF(change_ducting_layer)) - -/datum/component/plumbing/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_MOVABLE_MOVED,COMSIG_PARENT_PREQDELETED, COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH,COMSIG_OBJ_HIDE, \ - COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_MOVABLE_CHANGE_DUCT_LAYER, COMSIG_COMPONENT_ADDED)) - -/datum/component/plumbing/Destroy() - ducts = null - reagents = null - set_recipient_reagents_holder(null) //null is there so it's obvious we're setting this to nothing - return ..() - -/datum/component/plumbing/process() - if(!demand_connects || !reagents) - STOP_PROCESSING(SSfluids, src) - return - if(reagents.total_volume < reagents.maximum_volume) - for(var/D in GLOB.cardinals) - if(D & demand_connects) - send_request(D) - -///Can we be added to the ductnet? -/datum/component/plumbing/proc/can_add(datum/ductnet/D, dir) - if(!active) - return - if(!dir || !D) - return FALSE - if(num2text(dir) in ducts) - return FALSE - - return TRUE - -///called from in process(). only calls process_request(), but can be overwritten for children with special behaviour -/datum/component/plumbing/proc/send_request(dir) - process_request(amount = MACHINE_REAGENT_TRANSFER, reagent = null, dir = dir) - -///check who can give us what we want, and how many each of them will give us -/datum/component/plumbing/proc/process_request(amount, reagent, dir) - var/list/valid_suppliers = list() - var/datum/ductnet/net - if(!ducts.Find(num2text(dir))) - return - net = ducts[num2text(dir)] - for(var/A in net.suppliers) - var/datum/component/plumbing/supplier = A - if(supplier.can_give(amount, reagent, net)) - valid_suppliers += supplier - // Need to ask for each in turn very carefully, making sure we get the total volume. This is to avoid a division that would always round down and become 0 - var/targetVolume = reagents.total_volume + amount - var/suppliersLeft = valid_suppliers.len - for(var/A in valid_suppliers) - var/datum/component/plumbing/give = A - var/currentRequest = (targetVolume - reagents.total_volume) / suppliersLeft - give.transfer_to(src, currentRequest, reagent, net) - suppliersLeft-- - -///returns TRUE when they can give the specified amount and reagent. called by process request -/datum/component/plumbing/proc/can_give(amount, reagent, datum/ductnet/net) - if(amount <= 0) - return - - if(reagent) //only asked for one type of reagent - for(var/A in reagents.reagent_list) - var/datum/reagent/R = A - if(R.type == reagent) - return TRUE - else if(reagents.total_volume > 0) //take whatever - return TRUE - -///this is where the reagent is actually transferred and is thus the finish point of our process() -/datum/component/plumbing/proc/transfer_to(datum/component/plumbing/target, amount, reagent, datum/ductnet/net) - if(!reagents || !target || !target.reagents) - return FALSE - if(reagent) - reagents.trans_id_to(target.recipient_reagents_holder, reagent, amount) - else - reagents.trans_to(target.recipient_reagents_holder, amount, round_robin = TRUE, methods = methods)//we deal with alot of precise calculations so we round_robin=TRUE. Otherwise we get floating point errors, 1 != 1 and 2.5 + 2.5 = 6 - -///We create our luxurious piping overlays/underlays, to indicate where we do what. only called once if use_overlays = TRUE in Initialize() -/datum/component/plumbing/proc/create_overlays(atom/movable/AM, list/overlays) - SIGNAL_HANDLER - - if(tile_covered || !use_overlays) - return - - //Copied from ducts handle_layer() - var/offset - - switch(ducting_layer) - if(FIRST_DUCT_LAYER) - offset = -10 - if(SECOND_DUCT_LAYER) - offset = -5 - if(THIRD_DUCT_LAYER) - offset = 0 - if(FOURTH_DUCT_LAYER) - offset = 5 - if(FIFTH_DUCT_LAYER) - offset = 10 - - var/duct_x = offset - var/duct_y = offset - - - for(var/D in GLOB.cardinals) - var/color - var/direction - if(D & initial(demand_connects)) - color = demand_color - else if(D & initial(supply_connects)) - color = supply_color - else - continue - - var/image/I - - switch(D) - if(NORTH) - direction = "north" - if(SOUTH) - direction = "south" - if(EAST) - direction = "east" - if(WEST) - direction = "west" - - if(turn_connects) - I = image('icons/obj/plumbing/connects.dmi', "[direction]-[color]", layer = AM.layer - 1) - - else - I = image('icons/obj/plumbing/connects.dmi', "[direction]-[color]-s", layer = AM.layer - 1) //color is not color as in the var, it's just the name of the icon_state - I.dir = D - - I.pixel_x = duct_x - I.pixel_y = duct_y - - overlays += I - -///we stop acting like a plumbing thing and disconnect if we are, so we can safely be moved and stuff -/datum/component/plumbing/proc/disable() - SIGNAL_HANDLER - - if(!active) - return - - STOP_PROCESSING(SSfluids, src) - - for(var/A in ducts) - var/datum/ductnet/D = ducts[A] - D.remove_plumber(src) - - active = FALSE - - for(var/D in GLOB.cardinals) - if(D & (demand_connects | supply_connects)) - for(var/obj/machinery/duct/duct in get_step(parent, D)) - if(duct.duct_layer == ducting_layer) - duct.remove_connects(turn(D, 180)) - duct.neighbours.Remove(parent) - 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)) - return - - update_dir() - active = TRUE - - var/atom/movable/AM = parent - for(var/obj/machinery/duct/D in AM.loc) //Destroy any ducts under us. Ducts also self-destruct if placed under a plumbing machine. machines disable when they get moved - if(D.anchored) //that should cover everything - D.disconnect_duct() - - if(demand_connects) - START_PROCESSING(SSfluids, src) - - for(var/D in GLOB.cardinals) - - if(D & (demand_connects | supply_connects)) - for(var/atom/movable/A in get_step(parent, D)) - - if(istype(A, /obj/machinery/duct)) - var/obj/machinery/duct/duct = A - duct.attempt_connect() - else - for(var/datum/component/plumbing/plumber as anything in A.GetComponents(/datum/component/plumbing)) - if(plumber.ducting_layer == ducting_layer) - direct_connect(plumber, D) - -/// Toggle our machinery on or off. This is called by a hook from default_unfasten_wrench with anchored as only param, so we dont have to copypaste this on every object that can move -/datum/component/plumbing/proc/toggle_active(obj/O, new_state) - SIGNAL_HANDLER - if(new_state) - enable() - else - disable() - -/** We update our connects only when we settle down by taking our current and original direction to find our new connects -* If someone wants it to fucking spin while connected to something go actually knock yourself out -*/ -/datum/component/plumbing/proc/update_dir() - if(!turn_connects) - return - - var/atom/movable/AM = parent - var/new_demand_connects - var/new_supply_connects - var/new_dir = AM.dir - var/angle = 180 - dir2angle(new_dir) - - if(new_dir == SOUTH) - demand_connects = initial(demand_connects) - supply_connects = initial(supply_connects) - else - for(var/D in GLOB.cardinals) - if(D & initial(demand_connects)) - new_demand_connects += turn(D, angle) - if(D & initial(supply_connects)) - new_supply_connects += turn(D, angle) - demand_connects = new_demand_connects - supply_connects = new_supply_connects - -///Give the direction of a pipe, and it'll return wich direction it originally was when it's object pointed SOUTH -/datum/component/plumbing/proc/get_original_direction(dir) - var/atom/movable/AM = parent - return turn(dir, dir2angle(AM.dir) - 180) - -//special case in-case we want to connect directly with another machine without a duct -/datum/component/plumbing/proc/direct_connect(datum/component/plumbing/P, dir) - if(!P.active) - return - var/opposite_dir = turn(dir, 180) - if(P.demand_connects & opposite_dir && supply_connects & dir || P.supply_connects & opposite_dir && demand_connects & dir) //make sure we arent connecting two supplies or demands - var/datum/ductnet/net = new() - net.add_plumber(src, dir) - net.add_plumber(P, opposite_dir) - -/datum/component/plumbing/proc/hide(atom/movable/AM, should_hide) - SIGNAL_HANDLER - - tile_covered = should_hide - AM.update_appearance() - -/datum/component/plumbing/proc/change_ducting_layer(obj/caller, obj/O, new_layer = DUCT_LAYER_DEFAULT) - SIGNAL_HANDLER - ducting_layer = new_layer - - if(ismovable(parent)) - var/atom/movable/AM = parent - AM.update_appearance() - - if(O) - playsound(O, 'sound/items/ratchet.ogg', 10, TRUE) //sound - - //quickly disconnect and reconnect the network. - if(active) - disable() - enable() - -/datum/component/plumbing/proc/set_recipient_reagents_holder(datum/reagents/receiver) - if(recipient_reagents_holder) - UnregisterSignal(recipient_reagents_holder, COMSIG_PARENT_QDELETING) //stop tracking whoever we were tracking - if(receiver) - RegisterSignal(receiver, COMSIG_PARENT_QDELETING, PROC_REF(handle_reagent_del)) //on deletion call a wrapper proc that clears us, and maybe reagents too - - recipient_reagents_holder = receiver - -/datum/component/plumbing/proc/handle_reagent_del(datum/source) - SIGNAL_HANDLER - if(source == reagents) - reagents = null - if(source == recipient_reagents_holder) - set_recipient_reagents_holder(null) - -///has one pipe input that only takes, example is manual output pipe -/datum/component/plumbing/simple_demand - demand_connects = SOUTH - -///has one pipe output that only supplies. example is liquid pump and manual input pipe -/datum/component/plumbing/simple_supply - supply_connects = SOUTH - -///input and output, like a holding tank -/datum/component/plumbing/tank - demand_connects = WEST - supply_connects = EAST - -/datum/component/plumbing/manifold - demand_connects = NORTH - supply_connects = SOUTH - -/datum/component/plumbing/manifold/change_ducting_layer(obj/caller, obj/O, new_layer) - return - -#define READY 2 -///Baby component for the buffer plumbing machine -/datum/component/plumbing/buffer - demand_connects = WEST - supply_connects = EAST - -/datum/component/plumbing/buffer/Initialize(start=TRUE, _turn_connects=TRUE, _ducting_layer, datum/reagents/custom_receiver) - if(!istype(parent, /obj/machinery/plumbing/buffer)) - return COMPONENT_INCOMPATIBLE - - return ..() - -/datum/component/plumbing/buffer/can_give(amount, reagent, datum/ductnet/net) - var/obj/machinery/plumbing/buffer/buffer = parent - return (buffer.mode == READY) ? ..() : FALSE - -#undef READY diff --git a/code/datums/components/plumbing/chemical_acclimator.dm b/code/datums/components/plumbing/chemical_acclimator.dm deleted file mode 100644 index 777a2804a780..000000000000 --- a/code/datums/components/plumbing/chemical_acclimator.dm +++ /dev/null @@ -1,25 +0,0 @@ -/datum/component/plumbing/acclimator - demand_connects = WEST - supply_connects = EAST - var/obj/machinery/plumbing/acclimator/myacclimator - -/datum/component/plumbing/acclimator/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) - . = ..() - if(!istype(parent, /obj/machinery/plumbing/acclimator)) - return COMPONENT_INCOMPATIBLE - myacclimator = parent - -/datum/component/plumbing/acclimator/Destroy(force, silent) - myacclimator = null - return ..() - -/datum/component/plumbing/acclimator/can_give(amount, reagent) - . = ..() - if(. && myacclimator.emptying) - return TRUE - return FALSE -///We're overriding process and not send_request, because all process does is do the requests, so we might aswell cut out the middle man and save some code from running -/datum/component/plumbing/acclimator/process() - if(myacclimator.emptying) - return - return ..() diff --git a/code/datums/components/plumbing/filter.dm b/code/datums/components/plumbing/filter.dm deleted file mode 100644 index 4b8dd8d54a6c..000000000000 --- a/code/datums/components/plumbing/filter.dm +++ /dev/null @@ -1,59 +0,0 @@ -///The magical plumbing component used by the chemical filters. The different supply connects behave differently depending on the filters set on the chemical filter -/datum/component/plumbing/filter - demand_connects = NORTH - supply_connects = SOUTH | EAST | WEST //SOUTH is straight, EAST is left and WEST is right. We look from the perspective of the insert - -/datum/component/plumbing/filter/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) - . = ..() - if(!istype(parent, /obj/machinery/plumbing/filter)) - return COMPONENT_INCOMPATIBLE - -/datum/component/plumbing/filter/can_give(amount, reagent, datum/ductnet/net) - . = ..() - if(.) - var/direction - for(var/A in ducts) - if(ducts[A] == net) - direction = get_original_direction(text2num(A)) //we need it relative to the direction, so filters don't change when we turn the filter - break - if(!direction) - return FALSE - if(reagent) - if(!can_give_in_direction(direction, reagent)) - return FALSE - -/datum/component/plumbing/filter/transfer_to(datum/component/plumbing/target, amount, reagent, datum/ductnet/net) - if(!reagents || !target || !target.reagents) - return FALSE - var/direction - for(var/A in ducts) - if(ducts[A] == net) - direction = get_original_direction(text2num(A)) - break - if(reagent) - reagents.trans_id_to(target.parent, reagent, amount) - else - for(var/A in reagents.reagent_list) - var/datum/reagent/R = A - if(!can_give_in_direction(direction, R.type)) - continue - var/new_amount - if(R.volume < amount) - new_amount = amount - R.volume - reagents.trans_id_to(target.parent, R.type, amount) - amount = new_amount - if(amount <= 0) - break -///We check if the direction and reagent are valid to give. Needed for filters since different outputs have different behaviours -/datum/component/plumbing/filter/proc/can_give_in_direction(dir, reagent) - var/obj/machinery/plumbing/filter/F = parent - switch(dir) - if(SOUTH) //straight - if(!F.left.Find(reagent) && !F.right.Find(reagent)) - return TRUE - if(WEST) //right - if(F.right.Find(reagent)) - return TRUE - if(EAST) //left - if(F.left.Find(reagent)) - return TRUE diff --git a/code/datums/components/plumbing/reaction_chamber.dm b/code/datums/components/plumbing/reaction_chamber.dm deleted file mode 100644 index fe6064cccc83..000000000000 --- a/code/datums/components/plumbing/reaction_chamber.dm +++ /dev/null @@ -1,60 +0,0 @@ -/datum/component/plumbing/reaction_chamber - demand_connects = NORTH - supply_connects = SOUTH - -/datum/component/plumbing/reaction_chamber/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) - . = ..() - if(!istype(parent, /obj/machinery/plumbing/reaction_chamber)) - return COMPONENT_INCOMPATIBLE - -/datum/component/plumbing/reaction_chamber/can_give(amount, reagent, datum/ductnet/net) - . = ..() - var/obj/machinery/plumbing/reaction_chamber/reaction_chamber = parent - if(!. || !reaction_chamber.emptying || reagents.is_reacting == TRUE) - return FALSE - -/datum/component/plumbing/reaction_chamber/send_request(dir) - var/obj/machinery/plumbing/reaction_chamber/chamber = parent - if(chamber.emptying) - return - - for(var/required_reagent in chamber.required_reagents) - var/has_reagent = FALSE - for(var/datum/reagent/containg_reagent as anything in reagents.reagent_list) - if(required_reagent == containg_reagent.type) - has_reagent = TRUE - if(containg_reagent.volume + CHEMICAL_QUANTISATION_LEVEL < chamber.required_reagents[required_reagent]) - process_request(min(chamber.required_reagents[required_reagent] - containg_reagent.volume, MACHINE_REAGENT_TRANSFER) , required_reagent, dir) - return - if(!has_reagent) - process_request(min(chamber.required_reagents[required_reagent], MACHINE_REAGENT_TRANSFER), required_reagent, dir) - return - - reagents.flags &= ~NO_REACT - reagents.handle_reactions() - - chamber.emptying = TRUE //If we move this up, it'll instantly get turned off since any reaction always sets the reagent_total to zero. Other option is make the reaction update - //everything for every chemical removed, wich isn't a good option either. - chamber.on_reagent_change(reagents) //We need to check it now, because some reactions leave nothing left. - -///Special connect that we currently use for reaction chambers. Being used so we can keep certain inputs separate, like into a special internal acid container -/datum/component/plumbing/acidic_input - demand_connects = WEST - demand_color = "yellow" - - ducting_layer = SECOND_DUCT_LAYER - -/datum/component/plumbing/acidic_input/send_request(dir) - process_request(amount = MACHINE_REAGENT_TRANSFER, reagent = /datum/reagent/reaction_agent/acidic_buffer, dir = dir) - -///Special connect that we currently use for reaction chambers. Being used so we can keep certain inputs separate, like into a special internal base container -/datum/component/plumbing/alkaline_input - demand_connects = EAST - demand_color = "green" - - ducting_layer = FOURTH_DUCT_LAYER - -/datum/component/plumbing/alkaline_input/send_request(dir) - process_request(amount = MACHINE_REAGENT_TRANSFER, reagent = /datum/reagent/reaction_agent/basic_buffer, dir = dir) - - diff --git a/code/datums/components/plumbing/splitter.dm b/code/datums/components/plumbing/splitter.dm deleted file mode 100644 index 4dd68a9e5780..000000000000 --- a/code/datums/components/plumbing/splitter.dm +++ /dev/null @@ -1,47 +0,0 @@ -/datum/component/plumbing/splitter - demand_connects = NORTH - supply_connects = SOUTH | EAST - -/datum/component/plumbing/splitter/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) - . = ..() - if(. && !istype(parent, /obj/machinery/plumbing/splitter)) - return FALSE - -/datum/component/plumbing/splitter/can_give(amount, reagent, datum/ductnet/net) - . = ..() - if(!.) - return - var/direction - for(var/A in ducts) - if(ducts[A] == net) - direction = get_original_direction(text2num(A)) - break - var/obj/machinery/plumbing/splitter/S = parent - switch(direction) - if(SOUTH) - if(S.turn_straight && S.transfer_straight <= amount) - S.turn_straight = FALSE - return TRUE - if(EAST) - if(!S.turn_straight && S.transfer_side <= amount) - S.turn_straight = TRUE - return TRUE - return FALSE - - -/datum/component/plumbing/splitter/transfer_to(datum/component/plumbing/target, amount, reagent, datum/ductnet/net) - var/direction - for(var/A in ducts) - if(ducts[A] == net) - direction = get_original_direction(text2num(A)) - break - var/obj/machinery/plumbing/splitter/S = parent - switch(direction) - if(SOUTH) - if(amount >= S.transfer_straight) - amount = S.transfer_straight - if(EAST) - if(amount >= S.transfer_side) - amount = S.transfer_side - return ..() - diff --git a/code/datums/components/swabbing.dm b/code/datums/components/swabbing.dm deleted file mode 100644 index 2bb77ccb79db..000000000000 --- a/code/datums/components/swabbing.dm +++ /dev/null @@ -1,134 +0,0 @@ -/*! - -This component is used in vat growing to swab for microbiological samples which can then be mixed with reagents in a petridish to create a culture plate. - -*/ -/datum/component/swabbing - ///The current datums on the swab - var/list/swabbed_items - ///Can we swab objs? - var/can_swab_objs - ///Can we swab turfs? - var/can_swab_turfs - ///Can we swab mobs? - var/can_swab_mobs - ///Callback for update_icon() - var/datum/callback/update_icons - ///Callback for update_overlays() - var/datum/callback/update_overlays - -/datum/component/swabbing/Initialize(can_swab_objs = TRUE, can_swab_turfs = TRUE, can_swab_mobs = FALSE, datum/callback/update_icons, datum/callback/update_overlays, swab_time = 1 SECONDS, max_items = 3) - if(!isitem(parent)) - return COMPONENT_INCOMPATIBLE - - RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, PROC_REF(try_to_swab)) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine)) - RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(handle_overlays)) - RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON, PROC_REF(handle_icon)) - - src.can_swab_objs = can_swab_objs - src.can_swab_turfs = can_swab_turfs - src.can_swab_mobs = can_swab_mobs - src.update_icons = update_icons - src.update_overlays = update_overlays - -/datum/component/swabbing/Destroy() - . = ..() - for(var/swabbed in swabbed_items) - qdel(swabbed) - QDEL_NULL(update_icons) - QDEL_NULL(update_overlays) - - -///Changes examine based on your sample -/datum/component/swabbing/proc/examine(datum/source, mob/user, list/examine_list) - SIGNAL_HANDLER - if(LAZYLEN(swabbed_items)) - examine_list += span_nicegreen("There is a microbiological sample on [parent]!") - examine_list += "[span_notice("You can see the following micro-organisms:")]\n" - for(var/i in swabbed_items) - var/datum/biological_sample/samp = i - for(var/organism in samp.micro_organisms) - var/datum/micro_organism/MO = organism - examine_list += MO.get_details() - -///Ran when you attack an object, tries to get a swab of the object. if a swabbable surface is found it will run behavior and hopefully -/datum/component/swabbing/proc/try_to_swab(datum/source, atom/target, mob/user, params) - SIGNAL_HANDLER - - if(istype(target, /obj/structure/table))//help how do i do this less shitty - return NONE //idk bro pls send help - - if(istype(target, /obj/item/petri_dish)) - if(!LAZYLEN(swabbed_items)) - return NONE - var/obj/item/petri_dish/dish = target - if(dish.sample) - return - - var/datum/biological_sample/deposited_sample - - for(var/i in swabbed_items) //Typed in case there is a non sample on the swabbing tool because someone was fucking with swabbable element - if(!istype(i, /datum/biological_sample/)) - stack_trace("Non biological sample being swabbed, no bueno.") - continue - var/datum/biological_sample/sample = i - //Collapse the samples into one sample; one gooey mess essentialy. - if(!deposited_sample) - deposited_sample = sample - else - deposited_sample.Merge(sample) - - dish.deposit_sample(user, deposited_sample) - LAZYCLEARLIST(swabbed_items) - - var/obj/item/I = parent - I.update_appearance() - - return COMPONENT_CANCEL_ATTACK_CHAIN - if(!can_swab(target)) - return NONE //Just do the normal attack. - - - . = COMPONENT_CANCEL_ATTACK_CHAIN //Point of no return. No more attacking after this. - - if(LAZYLEN(swabbed_items)) - to_chat(user, span_warning("You cannot collect another sample on [parent]!")) - return - - to_chat(user, span_notice("You start swabbing [target] for samples!")) - INVOKE_ASYNC(src, PROC_REF(async_try_to_swab), target, user) - -/datum/component/swabbing/proc/async_try_to_swab(atom/target, mob/user) - if(!do_after(user, target, 3 SECONDS)) // Start swabbing boi - return - - LAZYINITLIST(swabbed_items) //If it isn't initialized, initialize it. As we need to pass it by reference - - if(SEND_SIGNAL(target, COMSIG_SWAB_FOR_SAMPLES, swabbed_items) == NONE) //If we found something to swab now we let the swabbed thing handle what it would do, we just sit back and relax now. - to_chat(user, span_warning("You do not manage to find a anything on [target]!")) - return - - to_chat(user, span_nicegreen("You manage to collect a microbiological sample from [target]!")) - - var/obj/item/parent_item = parent - parent_item.update_appearance() - -///Checks if the swabbing component can swab the specific object or nots -/datum/component/swabbing/proc/can_swab(atom/target) - if(isobj(target)) - return can_swab_objs - if(isturf(target)) - return can_swab_turfs - if(ismob(target)) - return can_swab_mobs - -///Handle any special overlay cases on the item itself -/datum/component/swabbing/proc/handle_overlays(datum/source, list/overlays) - SIGNAL_HANDLER - update_overlays?.Invoke(overlays, swabbed_items) - -///Handle any special icon cases on the item itself -/datum/component/swabbing/proc/handle_icon(datum/source) - SIGNAL_HANDLER - update_icons?.Invoke(swabbed_items) diff --git a/code/datums/ductnet.dm b/code/datums/ductnet.dm deleted file mode 100644 index e4dd3959c224..000000000000 --- a/code/datums/ductnet.dm +++ /dev/null @@ -1,75 +0,0 @@ -///We handle the unity part of plumbing. We track who is connected to who. -/datum/ductnet - ///Stuff that can supply chems - var/list/suppliers = list() - ////Stuff that can take chems - var/list/demanders = list() - ///All the ducts that make this network - var/list/obj/machinery/duct/ducts = list() - - ///Max reagents we can carry per tick - var/capacity - -///Add a duct to our network -/datum/ductnet/proc/add_duct(obj/machinery/duct/D) - if(!D || (D in ducts)) - return - ducts += D - D.duct = src - -///Remove a duct from our network and commit suicide, because this is probably easier than to check who that duct was connected to and what part of us was lost -/datum/ductnet/proc/remove_duct(obj/machinery/duct/ducting) - destroy_network(FALSE) - for(var/obj/machinery/duct/D in ducting.neighbours) - addtimer(CALLBACK(D, TYPE_PROC_REF(/obj/machinery/duct,attempt_connect))) //needs to happen after qdel - qdel(src) - -///add a plumbing object to either demanders or suppliers -/datum/ductnet/proc/add_plumber(datum/component/plumbing/P, dir) - if(!P.can_add(src, dir)) - return FALSE - P.ducts[num2text(dir)] = src - if(dir & P.supply_connects) - suppliers += P - else if(dir & P.demand_connects) - demanders += P - return TRUE - -///remove a plumber. we dont delete ourselves because ductnets dont persist through plumbing objects -/datum/ductnet/proc/remove_plumber(datum/component/plumbing/P) - suppliers.Remove(P) //we're probably only in one of these, but Remove() is inherently sane so this is fine - demanders.Remove(P) - - for(var/dir in P.ducts) - if(P.ducts[dir] == src) - P.ducts -= dir - if(!ducts.len) //there were no ducts, so it was a direct connection. we destroy ourselves since a ductnet with only one plumber and no ducts is worthless - destroy_network() - -///we combine ductnets. this occurs when someone connects to separate sets of fluid ducts -/datum/ductnet/proc/assimilate(datum/ductnet/D) - ducts.Add(D.ducts) - suppliers.Add(D.suppliers) - demanders.Add(D.demanders) - for(var/A in D.suppliers + D.demanders) - var/datum/component/plumbing/P = A - for(var/s in P.ducts) - if(P.ducts[s] != D) - continue - P.ducts[s] = src //all your ducts are belong to us - for(var/A in D.ducts) - var/obj/machinery/duct/M = A - M.duct = src //forget your old master - - D.ducts.Cut() //clear this so the other network doesnt clear the ducts along with themselves (this took the life out of me) - D.destroy_network() - -///destroy the network and tell all our ducts and plumbers we are gone -/datum/ductnet/proc/destroy_network(delete=TRUE) - for(var/A in suppliers + demanders) - remove_plumber(A) - for(var/A in ducts) - var/obj/machinery/duct/D = A - D.duct = null - if(delete) //I don't want code to run with qdeleted objects because that can never be good, so keep this in-case the ductnet has some business left to attend to before commiting suicide - qdel(src) diff --git a/code/datums/elements/swabbable.dm b/code/datums/elements/swabbable.dm deleted file mode 100644 index 03c328e7cfbc..000000000000 --- a/code/datums/elements/swabbable.dm +++ /dev/null @@ -1,50 +0,0 @@ -/*! - -This element is used in vat growing to allow for the object to be - -*/ -/datum/element/swabable - element_flags = ELEMENT_BESPOKE - id_arg_index = 2 - ///The define of the cell_line list to use - var/cell_line_define - ///The define of the cell_virus list to use - var/virus_define - ///Amount of cell lines on a single sample - var/cell_line_amount - ///The chance the sample will be infected with a virus. - var/virus_chance - -///Listens for the swab signal and then generate a sample based on pre-determined lists that are saved as GLOBs. this allows us to have very few swabbable element instances. -/datum/element/swabable/Attach(datum/target, cell_line_define, virus_define, cell_line_amount = 1, virus_chance = 10) - . = ..() - if(!isatom(target) || isarea(target)) - return ELEMENT_INCOMPATIBLE - - RegisterSignal(target, COMSIG_SWAB_FOR_SAMPLES, PROC_REF(GetSwabbed)) - - src.cell_line_define = cell_line_define - src.virus_define = virus_define - src.cell_line_amount = cell_line_amount - src.virus_chance = virus_chance - -///Stops listening to the swab signal; you can no longer be swabbed. -/datum/element/swabable/Detach(datum/source) - . = ..() - if(!isatom(source) || isarea(source)) - return ELEMENT_INCOMPATIBLE - UnregisterSignal(source, COMSIG_SWAB_FOR_SAMPLES) - -///Ran when the parent is swabbed by an object that can swab that type of obj. The list is sent by ref, which means the thing which sent the signal will still have the updated list. -/datum/element/swabable/proc/GetSwabbed(datum/source, list/mutable_results) - SIGNAL_HANDLER - . = COMPONENT_SWAB_FOUND //Return this so the swabbing component knows hes a good boy and found something that needs swabbing. - - LAZYADD(mutable_results, GenerateSample()) - Detach(source) - -///Generates a /datum/biological_sample -/datum/element/swabable/proc/GenerateSample() - var/datum/biological_sample/generated_sample = new - generated_sample.GenerateSample(cell_line_define, virus_define, cell_line_amount, virus_chance) - return generated_sample diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index 6bc15ca8f434..ee6724d659cc 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -314,12 +314,6 @@ name = "Syndicate Forgotten Ship" description = "Seemingly abandoned ship went of course right into NT controlled space. It seems that malfunction caused most systems to turn off, except for sleepers." -/datum/map_template/ruin/space/hellfactory - id = "hellfactory" - suffix = "hellfactory.dmm" - name = "Heck Brewery" - description = "An abandoned warehouse and brewing facility, which has been recently rediscovered. Reports claim that the security system entered an ultra-hard lockdown, but these reports are inconclusive." - /datum/map_template/ruin/space/space_billboard id = "space_billboard" suffix = "space_billboard.dmm" diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index c9a4ecaa9854..417521022f53 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -116,7 +116,6 @@ //AREA_USAGE_EQUIP,AREA_USAGE_ENVIRON or AREA_USAGE_LIGHT ///A combination of factors such as having power, not being broken and so on. Boolean. var/is_operational = TRUE - var/wire_compatible = FALSE var/list/component_parts = null //list of all the parts used to build it, if made from certain kinds of frames. diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 2477e1e343e0..395d02ff8772 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -498,8 +498,6 @@ /datum/design/plastic_ring, /datum/design/plastic_box, /datum/design/sticky_tape, - /datum/design/petridish, - /datum/design/swab, /datum/design/chisel, /datum/design/control, /datum/design/paperroll, diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 329f82b846a8..58445b08e6d2 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -326,26 +326,6 @@ /obj/machinery/iv_drip/saline/toggle_mode() return -///modified IV that can be anchored and takes plumbing in- and output -/obj/machinery/iv_drip/plumbing - name = "automated IV drip" - desc = "A modified IV drip with plumbing connects. Reagents received from the connect are injected directly into their bloodstream, blood that is drawn goes to the internal storage and then into the ducting." - icon_state = "plumb" - base_icon_state = "plumb" - - density = TRUE - use_internal_storage = TRUE - -/obj/machinery/iv_drip/plumbing/Initialize(mapload) - . = ..() - AddComponent(/datum/component/plumbing/iv_drip, anchored) - AddComponent(/datum/component/simple_rotation) - -/obj/machinery/iv_drip/plumbing/wrench_act(mob/living/user, obj/item/tool) - . = ..() - default_unfasten_wrench(user, tool) - return TOOL_ACT_TOOLTYPE_SUCCESS - #undef IV_TAKING #undef IV_INJECTING diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index b87ea73338c0..a9740cc83d31 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -25,7 +25,6 @@ /obj/machinery/limbgrower/Initialize(mapload) create_reagents(100, OPENCONTAINER) . = ..() - AddComponent(/datum/component/plumbing/simple_demand) internal_disk.set_data( DATA_IDX_DESIGNS, diff --git a/code/game/machinery/medipen_refiller.dm b/code/game/machinery/medipen_refiller.dm index a575613db6d7..3f680bb1c40f 100644 --- a/code/game/machinery/medipen_refiller.dm +++ b/code/game/machinery/medipen_refiller.dm @@ -20,8 +20,6 @@ create_reagents(100, TRANSPARENT) for(var/obj/item/stock_parts/matter_bin/B in component_parts) reagents.maximum_volume += 100 * B.rating - AddComponent(/datum/component/plumbing/simple_demand) - /obj/machinery/medipen_refiller/RefreshParts() . = ..() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index feccda4a789b..7ed9d520e945 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -218,7 +218,6 @@ . = ..() setDir(pick(1,2,4,8)) add_blood_DNA(list("Non-human DNA" = random_blood_type())) - AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 10) dry() /obj/effect/decal/cleanable/blood/drip diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 99c3f9e1b16d..024974f4bb5a 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -180,7 +180,6 @@ /obj/effect/decal/cleanable/vomit/old/Initialize(mapload, list/datum/disease/diseases) . = ..() icon_state += "-old" - AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 10) /obj/effect/decal/cleanable/chem_pile @@ -274,7 +273,6 @@ /obj/effect/decal/cleanable/garbage/Initialize(mapload) . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 15) /obj/effect/decal/cleanable/ants name = "space ants" diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index fcc9b88faece..867036d1e1b1 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -296,12 +296,8 @@ var/more = "" if(M) more = "[ADMIN_LOOKUPFLW(M)] " - if(!istype(carry.my_atom, /obj/machinery/plumbing)) - message_admins("Smoke: ([ADMIN_VERBOSEJMP(location)])[contained]. Key: [more ? more : carry.my_atom.fingerprintslast].") - log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last touched by [carry.my_atom.fingerprintslast].") + log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last touched by [carry.my_atom.fingerprintslast][more].") else - if(!istype(carry.my_atom, /obj/machinery/plumbing)) - message_admins("Smoke: ([ADMIN_VERBOSEJMP(location)])[contained]. No associated key.") log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 92cf6f22c62d..49007c89bfeb 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -1104,158 +1104,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) max_matter = 100 matter_divisor = 20 -///The plumbing RCD. All the blueprints are located in _globalvars > lists > construction.dm -/obj/item/construction/plumbing - name = "Plumbing Constructor" - desc = "An expertly modified RCD outfitted to construct plumbing machinery." - icon_state = "plumberer2" - inhand_icon_state = "plumberer" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - worn_icon_state = "plumbing" - icon = 'icons/obj/tools.dmi' - slot_flags = ITEM_SLOT_BELT - - matter = 200 - max_matter = 200 - - ///type of the plumbing machine - var/blueprint = null - ///index, used in the attack self to get the type. stored here since it doesnt change - var/list/choices = list() - ///index, used in the attack self to get the type. stored here since it doesnt change - var/list/name_to_type = list() - ///All info for construction - var/list/machinery_data = list("cost" = list()) - ///This list that holds all the plumbing design types the plumberer can construct. Its purpose is to make it easy to make new plumberer subtypes with a different selection of machines. - var/list/plumbing_design_types - ///Possible layers to pick from - var/static/list/layers = list("Second Layer" = SECOND_DUCT_LAYER, "Default Layer" = DUCT_LAYER_DEFAULT, "Fourth Layer" = FOURTH_DUCT_LAYER) - ///Current selected layer - var/current_layer = "Default Layer" - -/obj/item/construction/plumbing/Initialize(mapload) - . = ..() - set_plumbing_designs() - -/obj/item/construction/plumbing/attack_self(mob/user) - ..() - if(!choices.len) - for(var/A in plumbing_design_types) - var/obj/machinery/plumbing/M = A - - choices += list(initial(M.name) = image(icon = initial(M.icon), icon_state = initial(M.icon_state))) - name_to_type[initial(M.name)] = M - machinery_data["cost"][A] = plumbing_design_types[A] - - var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - if(!check_menu(user)) - return - - blueprint = name_to_type[choice] - playsound(src, 'sound/effects/pop.ogg', 50, FALSE) - to_chat(user, span_notice("You change [name]s blueprint to '[choice]'.")) - -///Set the list of designs this plumbing rcd can make -/obj/item/construction/plumbing/proc/set_plumbing_designs() - plumbing_design_types = list( - /obj/machinery/plumbing/input = 5, - /obj/machinery/plumbing/output = 5, - /obj/machinery/plumbing/tank = 20, - /obj/machinery/plumbing/synthesizer = 15, - /obj/machinery/plumbing/reaction_chamber = 15, - /obj/machinery/plumbing/buffer = 10, - /obj/machinery/plumbing/layer_manifold = 5, - //Above are the most common machinery which is shown on the first cycle. Keep new additions below THIS line, unless they're probably gonna be needed alot - /obj/machinery/plumbing/pill_press = 20, - /obj/machinery/plumbing/acclimator = 10, - /obj/machinery/plumbing/bottler = 50, - /obj/machinery/plumbing/disposer = 10, - /obj/machinery/plumbing/fermenter = 30, - /obj/machinery/plumbing/filter = 5, - /obj/machinery/plumbing/grinder_chemical = 30, - /obj/machinery/plumbing/liquid_pump = 35, - /obj/machinery/plumbing/splitter = 5, - /obj/machinery/plumbing/sender = 20, - /obj/machinery/iv_drip/plumbing = 20 -) - -///pretty much rcd_create, but named differently to make myself feel less bad for copypasting from a sibling-type -/obj/item/construction/plumbing/proc/create_machine(atom/A, mob/user) - if(!machinery_data || !isopenturf(A)) - return FALSE - - if(checkResource(machinery_data["cost"][blueprint], user) && blueprint) - //"cost" is relative to delay at a rate of 10 matter/second (1matter/decisecond) rather than playing with 2 different variables since everyone set it to this rate anyways. - if(do_after(user, A, machinery_data["cost"][blueprint], DO_PUBLIC, display = src)) - if(checkResource(machinery_data["cost"][blueprint], user) && canPlace(A)) - useResource(machinery_data["cost"][blueprint], user) - activate() - playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) - new blueprint (A, FALSE, layers[current_layer]) - return TRUE - -/obj/item/construction/plumbing/proc/canPlace(turf/T) - if(!isopenturf(T)) - return FALSE - . = TRUE - for(var/obj/O in T.contents) - if(O.density) //let's not built ontop of dense stuff, like big machines and other obstacles, it kills my immershion - return FALSE - -/obj/item/construction/plumbing/afterattack(atom/A, mob/user, proximity) - . = ..() - if(!prox_check(proximity)) - return - if(istype(A, /obj/machinery/plumbing)) - var/obj/machinery/plumbing/P = A - if(P.anchored) - to_chat(user, span_warning("The [P.name] needs to be unanchored!")) - return - if(do_after(user, P, 2 SECONDS, DO_PUBLIC, display = src)) - P.deconstruct() //Let's not substract matter - playsound(get_turf(src), 'sound/machines/click.ogg', 50, TRUE) //this is just such a great sound effect - else - create_machine(A, user) - -/obj/item/construction/plumbing/AltClick(mob/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) - return - - //this is just cycling options through a list - var/current_loc = layers.Find(current_layer) + 1 - - if(current_loc > layers.len) - current_loc = 1 - - //We want the key (the define), not the index (the string) - current_layer = layers[current_loc] - to_chat(user, span_notice("You switch [src] to [current_layer].")) - -/obj/item/construction/plumbing/research - name = "research plumbing constructor" - desc = "A type of plumbing constructor designed to rapidly deploy the machines needed to conduct cytological research." - icon_state = "plumberer_sci" - inhand_icon_state = "plumberer_sci" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - has_ammobar = TRUE - -/obj/item/construction/plumbing/research/set_plumbing_designs() - plumbing_design_types = list( - /obj/machinery/plumbing/input = 5, - /obj/machinery/plumbing/output = 5, - /obj/machinery/plumbing/tank = 20, - /obj/machinery/plumbing/acclimator = 10, - /obj/machinery/plumbing/filter = 5, - /obj/machinery/plumbing/grinder_chemical = 30, - /obj/machinery/plumbing/reaction_chamber = 15, - /obj/machinery/plumbing/splitter = 5, - /obj/machinery/plumbing/disposer = 10, - /obj/machinery/plumbing/growing_vat = 20 -) - - /obj/item/rcd_upgrade name = "RCD advanced design disk" desc = "It seems to be empty." diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 76d90dd912cb..080490b9da8d 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -210,8 +210,6 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( var/category = ATMOS_CATEGORY ///Piping layer we are going to spawn the atmos device in var/piping_layer = PIPING_LAYER_DEFAULT - ///Layer for disposal ducts - var/ducting_layer = DUCT_LAYER_DEFAULT ///Stores the current device to spawn var/datum/pipe_info/recipe ///Stores the first atmos device @@ -329,7 +327,6 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( var/list/data = list( "category" = category, "piping_layer" = piping_layer, - "ducting_layer" = ducting_layer, "preview_rows" = recipe.get_preview(p_dir), "categories" = list(), "selected_color" = paint_color, @@ -384,9 +381,6 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if("piping_layer") piping_layer = text2num(params["piping_layer"]) playeffect = FALSE - if("ducting_layer") - ducting_layer = text2num(params["ducting_layer"]) - playeffect = FALSE if("pipe_type") var/static/list/recipes if(!recipes) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 2285cf8a6af5..ced762171e74 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1207,17 +1207,6 @@ /obj/item/stock_parts/scanning_module = 2 ) -/obj/item/circuitboard/machine/plumbing_receiver - name = "Chemical Recipient (Machine Board)" - greyscale_colors = CIRCUIT_COLOR_MEDICAL - build_path = /obj/machinery/plumbing/receiver - req_components = list( - /obj/item/stack/ore/bluespace_crystal = 1, - /obj/item/stock_parts/capacitor = 2, - /obj/item/stack/sheet/glass = 1) - def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial) - needs_anchored = FALSE - /obj/item/circuitboard/machine/skill_station name = "Skill Station (Machine Board)" build_path = /obj/machinery/skill_station diff --git a/code/game/objects/items/drug_items.dm b/code/game/objects/items/drug_items.dm index 134b1dc43abf..b79142023563 100644 --- a/code/game/objects/items/drug_items.dm +++ b/code/game/objects/items/drug_items.dm @@ -27,7 +27,6 @@ /obj/item/food/drug/moon_rock/Initialize(mapload) . = ..() icon_state = pick("moon_rock1", "moon_rock2", "moon_rock3") - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOONICORN, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) /obj/item/reagent_containers/glass/blastoff_ampoule name = "bLaSToFF ampoule" //stylized name diff --git a/code/game/objects/items/food/bread.dm b/code/game/objects/items/food/bread.dm index c1d158ab02e7..8e385f9172be 100644 --- a/code/game/objects/items/food/bread.dm +++ b/code/game/objects/items/food/bread.dm @@ -72,7 +72,6 @@ /obj/item/food/breadslice/moldy/bacteria/Initialize(mapload) . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOLD, CELL_VIRUS_TABLE_GENERIC, rand(2, 4), 25) /obj/item/food/bread/meat diff --git a/code/game/objects/items/food/meat.dm b/code/game/objects/items/food/meat.dm index f422da74ef25..864b69cfcb25 100644 --- a/code/game/objects/items/food/meat.dm +++ b/code/game/objects/items/food/meat.dm @@ -32,10 +32,6 @@ /// Cytology category you can swab the meat for. var/cell_line = CELL_LINE_TABLE_CARP -/obj/item/food/fishmeat/carp/Initialize(mapload) - . = ..() - if(cell_line) - AddElement(/datum/element/swabable, cell_line, CELL_VIRUS_TABLE_GENERIC_MOB) /obj/item/food/fishmeat/carp/imitation name = "imitation carp fillet" @@ -491,9 +487,6 @@ //total price of this dish is 20 and a small amount more for soy sauce, all of which are available at the orders console venue_value = FOOD_PRICE_CHEAP -/obj/item/food/sashimi/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CARP, CELL_VIRUS_TABLE_GENERIC_MOB) /obj/item/food/nugget name = "chicken nugget" @@ -772,29 +765,17 @@ desc = "A slab of mouse meat. Best not eat it raw." foodtypes = RAW | MEAT | GROSS -/obj/item/food/meat/slab/mouse/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOUSE, CELL_VIRUS_TABLE_GENERIC_MOB) - /obj/item/food/meat/slab/corgi name = "corgi meat" desc = "Tastes like... well you know..." tastes = list("meat" = 4, "a fondness for wearing hats" = 1) foodtypes = RAW | MEAT | GROSS -/obj/item/food/meat/slab/corgi/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CORGI, CELL_VIRUS_TABLE_GENERIC_MOB) - /obj/item/food/meat/slab/pug name = "pug meat" desc = "Tastes like... well you know..." foodtypes = RAW | MEAT | GROSS -/obj/item/food/meat/slab/pug/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_PUG, CELL_VIRUS_TABLE_GENERIC_MOB) - /obj/item/food/meat/slab/killertomato name = "killer tomato meat" desc = "A slice from a huge tomato." @@ -823,10 +804,6 @@ /obj/item/food/meat/slab/bear/MakeGrillable() AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/bear, rand(40 SECONDS, 70 SECONDS), TRUE, TRUE) -/obj/item/food/meat/slab/bear/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_BEAR, CELL_VIRUS_TABLE_GENERIC_MOB) - /obj/item/food/meat/slab/xeno name = "xeno meat" desc = "A slab of meat." @@ -966,9 +943,6 @@ /obj/item/food/meat/slab/chicken/MakeGrillable() AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/chicken, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE) //Add medium rare later maybe? (no this is chicken) -/obj/item/food/meat/slab/chicken/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB) ////////////////////////////////////// MEAT STEAKS /////////////////////////////////////////////////////////// /obj/item/food/meat/steak @@ -1130,10 +1104,6 @@ name = "raw bear cutlet" tastes = list("meat" = 1, "salmon" = 1) -/obj/item/food/meat/rawcutlet/bear/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_BEAR, CELL_VIRUS_TABLE_GENERIC_MOB) - /obj/item/food/meat/rawcutlet/bear/MakeGrillable() AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/bear, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE) /obj/item/food/meat/rawcutlet/xeno @@ -1169,10 +1139,6 @@ /obj/item/food/meat/rawcutlet/chicken/MakeGrillable() AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/chicken, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE) -/obj/item/food/meat/rawcutlet/chicken/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB) - //Cooked cutlets /obj/item/food/meat/cutlet diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm index 636d965089a2..5eacd1755b23 100644 --- a/code/game/objects/items/food/misc.dm +++ b/code/game/objects/items/food/misc.dm @@ -110,10 +110,6 @@ foodtypes = VEGETABLES w_class = WEIGHT_CLASS_SMALL -/obj/item/food/hugemushroomslice/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_WALKING_MUSHROOM, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /obj/item/food/popcorn name = "popcorn" desc = "Now let's find some cinema." @@ -234,10 +230,6 @@ name = "bacteria rich moldy mess" desc = "Not only is this rancid lump of disgusting bile crawling with insect life, but it is also teeming with various microscopic cultures. It moves when you're not looking." -/obj/item/food/badrecipe/moldy/bacteria/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOLD, CELL_VIRUS_TABLE_GENERIC, rand(2, 4), 25) - ///Prevents grilling burnt shit from well, burning. /obj/item/food/badrecipe/proc/OnGrill() SIGNAL_HANDLER diff --git a/code/game/objects/items/food/pizza.dm b/code/game/objects/items/food/pizza.dm index 56a6abc86ebe..a1196e21351e 100644 --- a/code/game/objects/items/food/pizza.dm +++ b/code/game/objects/items/food/pizza.dm @@ -284,11 +284,6 @@ name = "bacteria rich moldy pizza slice" desc = "Not only is this once delicious pizza encrusted with a layer of spore-spewing fungus, it also seems to shift and slide when unattended, teeming with new life." -/obj/item/food/pizzaslice/moldy/bacteria/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOLD, CELL_VIRUS_TABLE_GENERIC, rand(2, 4), 25) - - // Arnold Pizza // Has meme code. /obj/item/food/pizza/arnold diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm index ac501856a5ee..f763fb6a20d7 100644 --- a/code/game/objects/items/manuals.dm +++ b/code/game/objects/items/manuals.dm @@ -436,13 +436,6 @@ H.spread_bodyparts() return (BRUTELOSS) -/obj/item/book/manual/wiki/plumbing - name = "Chemical Factories Without Narcotics" - icon_state ="plumbingbook" - starting_author = "Nanotrasen" - starting_title = "Chemical Factories Without Narcotics" - page_link = "Guide_to_plumbing" - /obj/item/book/manual/wiki/cytology name = "Unethically Grown Organics" icon_state ="cytologybook" diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 5223590157d7..e76062d5cb2c 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -481,7 +481,6 @@ /obj/item/food/deadmouse, /obj/item/food/monkeycube, /obj/item/organ, - /obj/item/petri_dish, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle, @@ -489,8 +488,6 @@ /obj/item/food/monkeycube, /obj/item/organ, /obj/item/bodypart, - /obj/item/petri_dish, - /obj/item/swab )) /* diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index de1290aada6f..ed65bbdfa6b7 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -231,7 +231,6 @@ /obj/item/clothing/mask/breath, /obj/item/clothing/mask/muzzle, /obj/item/clothing/mask/surgical, - /obj/item/construction/plumbing, /obj/item/dnainjector, /obj/item/extinguisher/mini, /obj/item/flashlight/pen, @@ -285,7 +284,6 @@ /obj/item/implanter, /obj/item/pinpointer/crew, /obj/item/holosign_creator/medical, - /obj/item/construction/plumbing, /obj/item/plunger, /obj/item/reagent_containers/spray, /obj/item/shears, diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index e7037b7ae473..e601ca3238ae 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1309,36 +1309,6 @@ new/obj/item/skillchip/job/engineer(src) new/obj/item/skillchip/job/engineer(src) -/obj/item/storage/box/swab - name = "box of microbiological swabs" - desc = "Contains a number of sterile swabs for collecting microbiological samples." - illustration = "swab" - -/obj/item/storage/box/swab/PopulateContents() - for(var/i in 1 to 7) - new /obj/item/swab(src) - -/obj/item/storage/box/petridish - name = "box of petridishes" - desc = "This box purports to contain a number of high rim petridishes." - illustration = "petridish" - -/obj/item/storage/box/petridish/PopulateContents() - for(var/i in 1 to 7) - new /obj/item/petri_dish(src) - -/obj/item/storage/box/plumbing - name = "box of plumbing supplies" - desc = "Contains a small supply of pipes, water recyclers, and iron to connect to the rest of the station." - -/obj/item/storage/box/plumbing/PopulateContents() - var/list/items_inside = list( - /obj/item/stock_parts/water_recycler = 2, - /obj/item/stack/ducts/fifty = 1, - /obj/item/stack/sheet/iron/ten = 1, - ) - generate_items_inside(items_inside, src) - /obj/item/storage/box/tail_pin name = "pin the tail on the corgi supplies" desc = "For ages 10 and up. ...Why is this even on a space station? Aren't you a little old for babby games?" //Intentional typo. diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index d956bc23469f..d16dd11dbc72 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -233,10 +233,6 @@ desc = "An old grubby mattress. You try to not think about what could be the cause of those stains." icon_state = "dirty_mattress" -/obj/structure/bed/maint/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOLD, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 25) - //Double Beds, for luxurious sleeping, i.e. the captain and maybe heads- if people use this for ERP, send them to skyrat /obj/structure/bed/double name = "double bed" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 092c653fcae8..1219989535c0 100755 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -20,20 +20,3 @@ new /obj/item/circuitboard/machine/fabricator/omni(src) new /obj/item/storage/photo_album/rd(src) new /obj/item/storage/box/skillchips/science(src) - -/obj/structure/closet/secure_closet/cytology - name = "cytology equipment locker" - icon_state = "science" - req_access = list(ACCESS_RESEARCH) - -/obj/structure/closet/secure_closet/cytology/PopulateContents() - . = ..() - new /obj/item/pushbroom(src) - new /obj/item/plunger(src) - new /obj/item/storage/bag/xeno(src) - new /obj/item/storage/box/petridish(src) - new /obj/item/stack/ducts/fifty(src) - for(var/i in 1 to 2) - new /obj/item/biopsy_tool(src) - new /obj/item/storage/box/swab(src) - new /obj/item/construction/plumbing/research(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 3f89f592ff1a..278acdb3b51e 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -121,10 +121,6 @@ for(var/i in 1 to rand(2,6)) new /obj/effect/spawner/random/maintenance(src) -/obj/structure/closet/crate/trashcart/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,3), 15) - /obj/structure/closet/crate/trashcart/filled /obj/structure/closet/crate/trashcart/filled/PopulateContents() diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index f19f23886768..9331ad0df6f4 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -423,10 +423,6 @@ icon_state = "fern" trimmable = FALSE -/obj/item/kirbyplants/fern/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_ALGAE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 5) - //a rock is flora according to where the icon file is //and now these defines diff --git a/code/game/objects/structures/lavaland/geyser.dm b/code/game/objects/structures/lavaland/geyser.dm index af469718b7df..f46483b99cd2 100644 --- a/code/game/objects/structures/lavaland/geyser.dm +++ b/code/game/objects/structures/lavaland/geyser.dm @@ -33,14 +33,12 @@ /obj/structure/geyser/Initialize(mapload) //if xenobio wants to bother, nethermobs are around geysers. . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_NETHER, CELL_VIRUS_TABLE_GENERIC, 1, 5) - ///start producing chems, should be called just once /obj/structure/geyser/proc/start_chemming() activated = TRUE create_reagents(max_volume, DRAINABLE) reagents.add_reagent(reagent_id, start_volume) - START_PROCESSING(SSfluids, src) //It's main function is to be plumbed, so use SSfluids + START_PROCESSING(SSobj, src) //It's main function is to be plumbed, so use SSfluids if(erupting_state) icon_state = erupting_state else @@ -132,23 +130,10 @@ var/plunge_mod = 1 ///whether we do heavy duty stuff like geysers var/reinforced = TRUE - ///alt sprite for the toggleable layer change mode - var/layer_mode_sprite = "plunger_layer" - ///Wheter we're in layer mode - var/layer_mode = FALSE - ///What layer we set it to - var/target_layer = DUCT_LAYER_DEFAULT - - ///Assoc list for possible layers - var/list/layers = list("Second Layer" = SECOND_DUCT_LAYER, "Default Layer" = DUCT_LAYER_DEFAULT, "Fourth Layer" = FOURTH_DUCT_LAYER) /obj/item/plunger/attack_atom(obj/O, mob/living/user, params) - if(layer_mode) - SEND_SIGNAL(O, COMSIG_MOVABLE_CHANGE_DUCT_LAYER, O, target_layer) + if(!O.plunger_act(src, user, reinforced)) return ..() - else - if(!O.plunger_act(src, user, reinforced)) - return ..() /obj/item/plunger/throw_impact(atom/hit_atom, datum/thrownthing/tt) . = ..() @@ -160,29 +145,6 @@ H.equip_to_slot_if_possible(src, ITEM_SLOT_MASK) H.visible_message(span_warning("The plunger slams into [H]'s face!"), span_warning("The plunger suctions to your face!")) -/obj/item/plunger/attack_self(mob/user) - . = ..() - - layer_mode = !layer_mode - - if(!layer_mode) - icon_state = initial(icon_state) - to_chat(user, span_notice("You set the plunger to 'Plunger Mode'.")) - else - icon_state = layer_mode_sprite - to_chat(user, span_notice("You set the plunger to 'Layer Mode'.")) - - playsound(src, 'sound/machines/click.ogg', 10, TRUE) - -/obj/item/plunger/AltClick(mob/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) - return - - var/new_layer = tgui_input_list(user, "Select a layer", "Layer", layers) - if(isnull(new_layer)) - return - target_layer = layers[new_layer] - ///A faster reinforced plunger /obj/item/plunger/reinforced name = "reinforced plunger" @@ -191,6 +153,5 @@ worn_icon_state = "reinforced_plunger" reinforced = TRUE plunge_mod = 0.5 - layer_mode_sprite = "reinforced_plunger_layer" custom_premium_price = PAYCHECK_MEDIUM * 8 diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm index fd22dfa0f95a..f868ce562c74 100644 --- a/code/game/objects/structures/maintenance.dm +++ b/code/game/objects/structures/maintenance.dm @@ -34,7 +34,6 @@ at the cost of risking a vicious bite.**/ /obj/structure/moisture_trap/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_FISH_SAFE_STORAGE, TRAIT_GENERIC) - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOIST, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 20) if(prob(40)) critter_infested = FALSE if(prob(75)) diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index 0596a9b8f7a1..09868810b2f5 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -39,7 +39,6 @@ create_reagents(reagent_capacity) reagents.add_reagent(reagent_id, reagent_capacity) soundloop = new(src, FALSE) - AddComponent(/datum/component/plumbing/simple_demand) var/static/list/loc_connections = list( COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) @@ -111,7 +110,7 @@ . = ..() if(!on) return - var/mutable_appearance/water_falling = mutable_appearance('icons/obj/watercloset.dmi', "water", ABOVE_MOB_LAYER) + var/image/water_falling = image('icons/obj/watercloset.dmi', "water", ABOVE_MOB_LAYER) water_falling.color = mix_color_from_reagents(reagents.reagent_list) . += water_falling diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index fc1af80b8a74..b664cd581519 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -258,7 +258,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/urinal, 32) anchored = TRUE ///Something's being washed at the moment var/busy = FALSE - ///What kind of reagent is produced by this sink by default? (We now have actual plumbing, Arcane, August 2020) + ///What kind of reagent is produced by this sink by default? var/dispensedreagent = /datum/reagent/water ///Material to drop when broken or deconstructed. var/buildstacktype = /obj/item/stack/sheet/iron @@ -276,7 +276,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/urinal, 32) if(has_water_reclaimer) create_reagents(100, NO_REACT) reagents.add_reagent(dispensedreagent, 100) - AddComponent(/datum/component/plumbing/simple_demand, bolt) /obj/structure/sink/examine(mob/user) . = ..() @@ -437,7 +436,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/urinal, 32) /obj/structure/sink/proc/begin_reclamation() if(!reclaiming) reclaiming = TRUE - START_PROCESSING(SSfluids, src) + START_PROCESSING(SSobj, src) /obj/structure/sink/kitchen name = "kitchen sink" diff --git a/code/modules/antagonists/blob/blob_mobs.dm b/code/modules/antagonists/blob/blob_mobs.dm index 5a21ae859677..55ed8a3b5ee5 100644 --- a/code/modules/antagonists/blob/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob_mobs.dm @@ -137,7 +137,6 @@ factory.spores += src if(linked_node.overmind && istype(linked_node.overmind.blobstrain, /datum/blobstrain/reagent/distributed_neurons) && !istype(src, /mob/living/simple_animal/hostile/blob/blobspore/weak)) notify_ghosts("A controllable spore has been created in \the [get_area(src)].", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Sentient Spore Created") - add_cell_sample() /mob/living/simple_animal/hostile/blob/blobspore/Life(delta_time = SSMOBS_DT, times_fired) if(!is_zombie && isturf(src.loc)) @@ -241,10 +240,6 @@ blob_head_overlay.color = overmind.blobstrain.complementary_color color = initial(color)//looks better. add_overlay(blob_head_overlay) - -/mob/living/simple_animal/hostile/blob/blobspore/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_BLOBSPORE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/hostile/blob/blobspore/independent gold_core_spawnable = HOSTILE_SPAWN independent = TRUE @@ -286,13 +281,6 @@ mob_size = MOB_SIZE_LARGE hud_type = /datum/hud/living/blobbernaut -/mob/living/simple_animal/hostile/blob/blobbernaut/Initialize(mapload) - . = ..() - add_cell_sample() - -/mob/living/simple_animal/hostile/blob/blobbernaut/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_BLOBBERNAUT, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/hostile/blob/blobbernaut/Life(delta_time = SSMOBS_DT, times_fired) if(!..()) return diff --git a/code/modules/antagonists/blob/structures/_blob.dm b/code/modules/antagonists/blob/structures/_blob.dm index 1763474ee243..d6c2ca31326f 100644 --- a/code/modules/antagonists/blob/structures/_blob.dm +++ b/code/modules/antagonists/blob/structures/_blob.dm @@ -45,8 +45,6 @@ zas_update_loc() ConsumeTile() - if(!QDELETED(src)) //Consuming our tile can in rare cases cause us to del - AddElement(/datum/element/swabable, CELL_LINE_TABLE_BLOB, CELL_VIRUS_TABLE_GENERIC, 2, 2) /obj/structure/blob/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() diff --git a/code/modules/asset_cache/assets/pipes.dm b/code/modules/asset_cache/assets/pipes.dm index 66a37de9f86a..2a027f3611c3 100644 --- a/code/modules/asset_cache/assets/pipes.dm +++ b/code/modules/asset_cache/assets/pipes.dm @@ -2,5 +2,5 @@ name = "pipes" /datum/asset/spritesheet/pipes/create_spritesheets() - for (var/each in list('icons/obj/atmospherics/pipes/pipe_item.dmi', 'icons/obj/atmospherics/pipes/disposal.dmi', 'icons/obj/atmospherics/pipes/transit_tube.dmi', 'icons/obj/plumbing/fluid_ducts.dmi')) + for (var/each in list('icons/obj/atmospherics/pipes/pipe_item.dmi', 'icons/obj/atmospherics/pipes/disposal.dmi', 'icons/obj/atmospherics/pipes/transit_tube.dmi')) InsertAll("", each, GLOB.alldirs) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index f95891d89fc9..89a5f6a2ce06 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1463,19 +1463,6 @@ /obj/item/clothing/head/helmet/monkey_sentience) crate_name = "monkey mind magnification crate" -/datum/supply_pack/science/cytology - name = "Cytology supplies crate" - desc = "Did out of control specimens pulverize xenobiology? Here is some more supplies for further testing." - cost = CARGO_CRATE_VALUE * 3 - access_view = ACCESS_XENOBIOLOGY - contains = list(/obj/structure/microscope, - /obj/item/biopsy_tool, - /obj/item/storage/box/petridish, - /obj/item/storage/box/petridish, - /obj/item/storage/box/swab, - /obj/item/construction/plumbing/research) - crate_name = "cytology supplies crate" - /datum/supply_pack/science/mod_core name = "MOD core Crate" desc = "Three cores, perfect for any MODsuit construction! Naturally harvestedâ„¢, of course." diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index dd43d30e8209..231a30f28f54 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -186,7 +186,6 @@ "The Madman" = image(icon = src.icon, icon_state = "joker"), "The Rainbow Color" = image(icon = src.icon, icon_state = "rainbow") ) - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CLOWN, CELL_VIRUS_TABLE_GENERIC, rand(2,3), 0) /obj/item/clothing/mask/gas/clown_hat/ui_action_click(mob/user) if(!istype(user) || user.incapacitated()) diff --git a/code/modules/clothing/shoes/clown.dm b/code/modules/clothing/shoes/clown.dm index 25a490cd5f97..0a3ce3647f38 100644 --- a/code/modules/clothing/shoes/clown.dm +++ b/code/modules/clothing/shoes/clown.dm @@ -14,7 +14,6 @@ create_storage(type = /datum/storage/pockets/shoes/clown) LoadComponent(/datum/component/squeak, list('sound/effects/clownstep1.ogg'=1,'sound/effects/clownstep2.ogg'=1), 50, falloff_exponent = 20) //die off quick please - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CLOWN, CELL_VIRUS_TABLE_GENERIC, rand(2,3), 0) /obj/item/clothing/shoes/clown_shoes/equipped(mob/user, slot) . = ..() diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 82e8e635811d..05816e032c81 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -7,7 +7,6 @@ body_parts_covered = CHEST|ARMS allowed = list( /obj/item/analyzer, - /obj/item/biopsy_tool, /obj/item/dnainjector, /obj/item/flashlight/pen, /obj/item/healthanalyzer, diff --git a/code/modules/clothing/under/jobs/civilian/clown_mime.dm b/code/modules/clothing/under/jobs/civilian/clown_mime.dm index 9f2675adf2c1..bfe6ff4a3b43 100644 --- a/code/modules/clothing/under/jobs/civilian/clown_mime.dm +++ b/code/modules/clothing/under/jobs/civilian/clown_mime.dm @@ -37,7 +37,6 @@ /obj/item/clothing/under/rank/civilian/clown/Initialize(mapload) . = ..() AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50, falloff_exponent = 20) //die off quick please - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CLOWN, CELL_VIRUS_TABLE_GENERIC, rand(2,3), 0) /obj/item/clothing/under/rank/civilian/clown/blue name = "blue clown suit" diff --git a/code/modules/explorer_drone/exploration_events/resource.dm b/code/modules/explorer_drone/exploration_events/resource.dm index fa44c09e9e90..5f93f75a17a0 100644 --- a/code/modules/explorer_drone/exploration_events/resource.dm +++ b/code/modules/explorer_drone/exploration_events/resource.dm @@ -187,19 +187,6 @@ action_text = "Retrieve data" loot_type = /datum/adventure_loot_generator/cargo -// EXPLORATION_SITE_HABITABLE 2/2 -/datum/exploration_event/simple/resource/unknown_microbiome - name = "unknown microbiome" - required_site_traits = list(EXPLORATION_SITE_HABITABLE) - required_tool = EXODRONE_TOOL_TRANSLATOR - discovery_log = "Discovered a isolated microbiome." - description = "You discover a giant fungus colony." - success_log = "Retrieved samples of the fungus for future study." - no_tool_description = "With a laser tool you could slice off a sample for study." - delay_message = "Taking samples..." - action_text = "Take sample" - loot_type = /obj/item/petri_dish/random - /datum/exploration_event/simple/resource/tcg_nerd name = "creepy stranger" required_site_traits = list(EXPLORATION_SITE_HABITABLE) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index cedd808625b5..2deeb61c6838 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -416,22 +416,6 @@ /obj/machinery/smartfridge/extract/preloaded initial_contents = list(/obj/item/slime_scanner = 2) -// ------------------------------------- -// Cytology Petri Dish Smartfridge -// ------------------------------------- -/obj/machinery/smartfridge/petri - name = "smart petri dish storage" - desc = "A refrigerated storage unit for petri dishes." - base_build_path = /obj/machinery/smartfridge/petri - -/obj/machinery/smartfridge/petri/accept_check(obj/item/O) - if(istype(O, /obj/item/petri_dish)) - return TRUE - return FALSE - -/obj/machinery/smartfridge/petri/preloaded - initial_contents = list(/obj/item/petri_dish = 5) - // ------------------------- // Organ Surgery Smartfridge // ------------------------- diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 8dfec3568dce..5b58a5bdb5e8 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -47,6 +47,7 @@ var/unwrenchable = TRUE ///Have we been visited by a bee recently, so bees dont overpollinate one plant var/recent_bee_visit = FALSE + var/using_irrigation = FALSE ///The last user to add a reagent to the tray, mostly for logging purposes. var/datum/weakref/lastuser ///If the tray generates nutrients and water on its own @@ -155,8 +156,6 @@ /obj/machinery/hydroponics/constructable/Initialize(mapload) . = ..() - AddComponent(/datum/component/simple_rotation) - AddComponent(/datum/component/plumbing/simple_demand) AddComponent(/datum/component/usb_port, list(/obj/item/circuit_component/hydroponics)) /obj/machinery/hydroponics/constructable/RefreshParts() @@ -199,12 +198,33 @@ if(!QDELETED(src) && gone == myseed) set_seed(null, FALSE) +/obj/machinery/hydroponics/proc/FindConnected() + var/list/connected = list() + var/list/processing_atoms = list(src) + + while(processing_atoms.len) + var/atom/a = processing_atoms[1] + for(var/step_dir in GLOB.cardinals) + var/obj/machinery/hydroponics/h = locate() in get_step(a, step_dir) + // Soil plots aren't dense + if(h && h.using_irrigation && h.density && !(h in connected) && !(h in processing_atoms)) + processing_atoms += h + + processing_atoms -= a + connected += a + + return connected + /obj/machinery/hydroponics/constructable/attackby(obj/item/I, mob/living/user, params) if (!user.combat_mode) // handle opening the panel if(default_deconstruction_screwdriver(user, icon_state, icon_state, I)) return - if(default_deconstruction_crowbar(I)) + // handle deconstructing the machine, if permissible + if(I.tool_behaviour == TOOL_CROWBAR && using_irrigation) + to_chat(user, "Disconnect the hoses first!") + return + else if(default_deconstruction_crowbar(I)) return return ..() @@ -410,6 +430,19 @@ if(self_sustaining && self_sustaining_overlay_icon_state) . += mutable_appearance(icon, self_sustaining_overlay_icon_state) +/obj/machinery/hydroponics/update_icon_state() + . = ..() + update_hoses() + +/obj/machinery/hydroponics/proc/update_hoses() + var/n = 0 + for(var/Dir in GLOB.cardinals) + var/obj/machinery/hydroponics/t = locate() in get_step(src,Dir) + if(t && t.using_irrigation && using_irrigation) + n += Dir + + icon_state = "hoses-[n]" + /obj/machinery/hydroponics/proc/update_plant_overlay() var/mutable_appearance/plant_overlay = mutable_appearance(myseed.growing_icon, layer = OBJ_LAYER + 0.01) switch(plant_status) @@ -724,6 +757,22 @@ default_unfasten_wrench(user, tool) return TOOL_ACT_TOOLTYPE_SUCCESS +/obj/machinery/hydroponics/wirecutter_act(mob/living/user, obj/item/tool) + . = ..() + if(!unwrenchable) + return + if (!anchored) + to_chat(user, "Anchor the tray first!") + return TOOL_ACT_TOOLTYPE_SUCCESS + + using_irrigation = !using_irrigation + tool.play_tool_sound(src) + user.visible_message("[user] [using_irrigation ? "" : "dis"]connects [src]'s irrigation hoses.", \ + "You [using_irrigation ? "" : "dis"]connect [src]'s irrigation hoses.") + for(var/obj/machinery/hydroponics/h in range(1,src)) + h.update_icon_state() + return TOOL_ACT_TOOLTYPE_SUCCESS + /obj/machinery/hydroponics/attackby(obj/item/O, mob/user, params) //Called when mob user "attacks" it with object O if(IS_EDIBLE(O) || istype(O, /obj/item/reagent_containers)) // Syringe stuff (and other reagent containers now too) @@ -741,6 +790,7 @@ var/target = myseed ? myseed.plantname : src var/visi_msg = "" var/transfer_amount + var/irrigate = 0 //How am I supposed to irrigate pill contents? if(IS_EDIBLE(reagent_source) || istype(reagent_source, /obj/item/reagent_containers/pill)) visi_msg="[user] composts [reagent_source], spreading it through [target]" @@ -748,24 +798,38 @@ SEND_SIGNAL(reagent_source, COMSIG_ITEM_ON_COMPOSTED, user) else transfer_amount = reagent_source.amount_per_transfer_from_this - if(istype(reagent_source, /obj/item/reagent_containers/syringe/)) + if(istype(reagent_source, /obj/item/reagent_containers/syringe)) var/obj/item/reagent_containers/syringe/syr = reagent_source visi_msg="[user] injects [target] with [syr]" + else if(istype(reagent_source, /obj/item/reagent_containers/spray/)) + visi_msg="[user] sprays [target] with [reagent_source]" + playsound(loc, 'sound/effects/spray3.ogg', 50, TRUE, -6) + irrigate = 1 + else if(transfer_amount) // Droppers, cans, beakers, what have you. + visi_msg="[user] uses [reagent_source] on [target]" + irrigate = 1 // Beakers, bottles, buckets, etc. if(reagent_source.is_drainable()) playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) + if(irrigate && transfer_amount > 30 && reagent_source.reagents.total_volume >= 30 && using_irrigation) + trays = FindConnected() + if (trays.len > 1) + visi_msg += ", setting off the irrigation system" + if(visi_msg) visible_message(span_notice("[visi_msg].")) + var/split = round(transfer_amount/trays.len) + for(var/obj/machinery/hydroponics/H in trays) //cause I don't want to feel like im juggling 15 tamagotchis and I can get to my real work of ripping flooring apart in hopes of validating my life choices of becoming a space-gardener //This was originally in apply_chemicals, but due to apply_chemicals only holding nutrients, we handle it here now. if(reagent_source.reagents.has_reagent(/datum/reagent/water, 1)) - var/water_amt = reagent_source.reagents.get_reagent_amount(/datum/reagent/water) * transfer_amount / reagent_source.reagents.total_volume + var/water_amt = reagent_source.reagents.get_reagent_amount(/datum/reagent/water) * split / reagent_source.reagents.total_volume H.adjust_waterlevel(round(water_amt)) reagent_source.reagents.remove_reagent(/datum/reagent/water, water_amt) - reagent_source.reagents.trans_to(H.reagents, transfer_amount, transfered_by = user) + reagent_source.reagents.trans_to(H.reagents, split, transfered_by = user) lastuser = WEAKREF(user) if(IS_EDIBLE(reagent_source) || istype(reagent_source, /obj/item/reagent_containers/pill)) qdel(reagent_source) @@ -895,6 +959,7 @@ desc = initial(desc) set_weedlevel(0) //Has a side effect of cleaning up those nasty weeds return + else if(istype(O, /obj/item/storage/part_replacer)) RefreshParts() return @@ -942,6 +1007,10 @@ /obj/machinery/hydroponics/can_be_unfasten_wrench(mob/user, silent) if (!unwrenchable) // case also covered by NODECONSTRUCT checks in default_unfasten_wrench return CANT_UNFASTEN + if (using_irrigation) + if (!silent) + to_chat(user, "Disconnect the hoses first!") + return FAILED_UNFASTEN return ..() diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hellfactory.dm b/code/modules/mapfluff/ruins/spaceruin_code/hellfactory.dm deleted file mode 100644 index 076bfabb43ff..000000000000 --- a/code/modules/mapfluff/ruins/spaceruin_code/hellfactory.dm +++ /dev/null @@ -1,32 +0,0 @@ -/obj/machinery/door/puzzle/keycard/office - name = "management airlock" - desc = "The boss man gets the best stuff. Always and forever." - puzzle_id = "factory1" - -/obj/item/keycard/office - name = "management keycard" - desc = "The Brewzone, first rate brewing and packaging. This one is labeled 'office'." - color = "#f05812" - puzzle_id = "factory1" - -/obj/machinery/door/puzzle/keycard/stockroom - name = "stockroom airlock" - desc = "The boss man gets the best stuff. Always and forever." - puzzle_id = "factory2" - -/obj/item/keycard/stockroom - name = "stockroom keycard" - desc = "The Heck Brewzone, first rate brewing and packaging. This one is labeled 'stockroom'." - color = "#1272f0" - puzzle_id = "factory2" - -/obj/machinery/door/puzzle/keycard/entry - name = "secure airlock" - desc = "The boss man gets the best stuff. Always and forever." - puzzle_id = "factory3" - -/obj/item/keycard/entry - name = "secure keycard" - desc = "The Heck Brewzone, first rate brewing and packaging. This one is labeled 'front door'." - color = "#12f049" - puzzle_id = "factory3" diff --git a/code/modules/mob/living/basic/farm_animals/cows.dm b/code/modules/mob/living/basic/farm_animals/cows.dm index 78826a3f49b9..b348eff21e9a 100644 --- a/code/modules/mob/living/basic/farm_animals/cows.dm +++ b/code/modules/mob/living/basic/farm_animals/cows.dm @@ -36,7 +36,6 @@ self_right_time = rand(25 SECONDS, 50 SECONDS), \ post_tipped_callback = CALLBACK(src, PROC_REF(after_cow_tipped))) AddElement(/datum/element/pet_bonus, "moos happily!") - AddElement(/datum/element/swabable, CELL_LINE_TABLE_COW, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) udder_component() make_tameable() . = ..() diff --git a/code/modules/mob/living/basic/vermin/cockroach.dm b/code/modules/mob/living/basic/vermin/cockroach.dm index 74e1147d59ca..3ba46312b6ba 100644 --- a/code/modules/mob/living/basic/vermin/cockroach.dm +++ b/code/modules/mob/living/basic/vermin/cockroach.dm @@ -32,7 +32,6 @@ /mob/living/basic/cockroach/Initialize(mapload) . = ..() AddElement(/datum/element/death_drops, list(/obj/effect/decal/cleanable/insectguts)) - AddElement(/datum/element/swabable, cockroach_cell_line, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 7) AddElement(/datum/element/basic_body_temp_sensitive, 270, INFINITY) AddComponent(/datum/component/squashable, squash_chance = 50, squash_damage = 1) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 10b1d7b268d6..f8721160400d 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -497,11 +497,17 @@ if(ASSEMBLY_SECOND_STEP) if(isprox(I)) //Construct + if(!can_finish_build(I, user, 0)) + return if(!user.temporarilyRemoveItemFromInventory(I)) return build_step++ to_chat(user, span_notice("You add [I] to [src].")) qdel(I) + var/mob/living/simple_animal/bot/hygienebot/H = new(drop_location()) + H.name = created_name + qdel(src) + return if(I.tool_behaviour == TOOL_WELDER) //Deconstruct if(I.use_tool(src, user, 0, volume=30)) to_chat(user, span_notice("You weld close the water hole in [src]!")) @@ -511,17 +517,6 @@ if(ASSEMBLY_THIRD_STEP) if(!can_finish_build(I, user, 0)) return - if(istype(I, /obj/item/stack/ducts)) //Construct - var/obj/item/stack/ducts/D = I - if(D.get_amount() < 1) - to_chat(user, span_warning("You need one fluid duct to finish [src]")) - return - to_chat(user, span_notice("You start to pipe up [src]...")) - if(do_after(user, src, 40) && D.use(1)) - to_chat(user, span_notice("You pipe up [src].")) - var/mob/living/simple_animal/bot/hygienebot/H = new(drop_location()) - H.name = created_name - qdel(src) if(I.tool_behaviour == TOOL_SCREWDRIVER) //deconstruct new /obj/item/assembly/prox_sensor(Tsec) to_chat(user, span_notice("You detach the proximity sensor from [src].")) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index af61bd67967d..69dce87c37f2 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -45,13 +45,8 @@ . = ..() AddElement(/datum/element/pet_bonus, "purrs!") add_verb(src, /mob/living/proc/toggle_resting) - add_cell_sample() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) -/mob/living/simple_animal/pet/cat/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CAT, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - - /mob/living/simple_animal/pet/cat/space name = "space cat" desc = "They're a cat... in space!" @@ -73,9 +68,6 @@ held_state = "breadcat" butcher_results = list(/obj/item/food/meat/slab = 2, /obj/item/organ/ears/cat = 1, /obj/item/organ/tail/cat = 1, /obj/item/food/breadslice/plain = 1) -/mob/living/simple_animal/pet/cat/breadcat/add_cell_sample() - return - /mob/living/simple_animal/pet/cat/original name = "Batsy" desc = "The product of alien DNA and bored geneticists." @@ -87,8 +79,6 @@ unique_pet = TRUE held_state = "original" -/mob/living/simple_animal/pet/cat/original/add_cell_sample() - return /mob/living/simple_animal/pet/cat/kitten name = "kitten" desc = "D'aaawwww." @@ -289,9 +279,6 @@ deathsound = SFX_BODYFALL held_state = "cak" -/mob/living/simple_animal/pet/cat/cak/add_cell_sample() - return - /mob/living/simple_animal/pet/cat/cak/CheckParts(list/parts) ..() var/obj/item/organ/brain/B = locate(/obj/item/organ/brain) in contents diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 2de9ffea82dd..aea041cd78fa 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -29,7 +29,6 @@ /mob/living/simple_animal/pet/dog/Initialize(mapload) . = ..() AddElement(/datum/element/pet_bonus, "woofs happily!") - add_cell_sample() //Corgis and pugs are now under one dog subtype @@ -51,9 +50,6 @@ var/shaved = FALSE var/nofur = FALSE //Corgis that have risen past the material plane of existence. -/mob/living/simple_animal/pet/dog/corgi/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CORGI, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/pet/dog/corgi/Destroy() QDEL_NULL(inventory_head) QDEL_NULL(inventory_back) @@ -134,9 +130,6 @@ collar_type = "pug" held_state = "pug" -/mob/living/simple_animal/pet/dog/pug/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_PUG, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/pet/dog/pug/mcgriff name = "McGriff" desc = "This dog can tell something smells around here, and that something is CRIME!" diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 0ac1d83c35bb..5d79eca81b66 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -137,12 +137,8 @@ AddElement(/datum/element/pet_bonus, "chirps!") pixel_x = base_pixel_x + rand(-6, 6) pixel_y = base_pixel_y + rand(0, 10) - add_cell_sample() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) -/mob/living/simple_animal/chick/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/chick/Life(delta_time = SSMOBS_DT, times_fired) . =..() if(!.) @@ -196,7 +192,6 @@ /mob/living/simple_animal/chicken/Initialize(mapload) . = ..() chicken_count++ - add_cell_sample() AddElement(/datum/element/animal_variety, "chicken", pick("brown","black","white"), TRUE) AddComponent(/datum/component/egg_layer,\ /obj/item/food/egg,\ @@ -210,9 +205,6 @@ ) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) -/mob/living/simple_animal/chicken/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/chicken/Destroy() chicken_count-- return ..() diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index c9f837a90733..e05153c17d9e 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -38,7 +38,6 @@ body_color = pick("brown","gray","white") AddElement(/datum/element/animal_variety, "mouse", body_color, FALSE) AddComponent(/datum/component/squeak, list('sound/effects/mousesqueek.ogg' = 1), 100, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) //as quiet as a mouse or whatever - add_cell_sample() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) var/static/list/loc_connections = list( @@ -46,9 +45,6 @@ ) AddElement(/datum/element/connect_loc, loc_connections) -/mob/living/simple_animal/mouse/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOUSE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 10) - /mob/living/simple_animal/mouse/proc/splat() src.health = 0 src.icon_dead = "mouse_[body_color]_splat" @@ -208,10 +204,6 @@ ant_attracting = FALSE decomp_type = /obj/item/food/deadmouse/moldy -/obj/item/food/deadmouse/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOUSE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 10) - /obj/item/food/deadmouse/examine(mob/user) . = ..() if (reagents?.has_reagent(/datum/reagent/yuck) || reagents?.has_reagent(/datum/reagent/fuel)) diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm index 30a9f2d02ad3..acd23431702d 100644 --- a/code/modules/mob/living/simple_animal/friendly/snake.dm +++ b/code/modules/mob/living/simple_animal/friendly/snake.dm @@ -31,15 +31,11 @@ /mob/living/simple_animal/hostile/retaliate/snake/Initialize(mapload, special_reagent) . = ..() - add_cell_sample() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) if(!special_reagent) special_reagent = /datum/reagent/toxin AddElement(/datum/element/venomous, special_reagent, 4) -/mob/living/simple_animal/hostile/retaliate/snake/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_SNAKE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/hostile/retaliate/snake/ListTargets(atom/the_target) var/atom/target_from = GET_TARGETS_FROM(src) . = oview(vision_range, target_from) //get list of things in vision range diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 927616044d11..d3223d985c84 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -49,10 +49,6 @@ /mob/living/simple_animal/hostile/bear/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) - add_cell_sample() - -/mob/living/simple_animal/hostile/bear/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_BEAR, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) /mob/living/simple_animal/hostile/bear/Login() . = ..() @@ -144,9 +140,6 @@ attack_verb_simple = "slap" attack_verb_continuous = "slaps" -/mob/living/simple_animal/hostile/bear/butter/add_cell_sample() - return //You cannot grow a real bear from butter. - /mob/living/simple_animal/hostile/bear/butter/Life(delta_time = SSMOBS_DT, times_fired) //Heals butter bear really fast when he takes damage. if(stat) return diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 2d62313636f1..c7838572271a 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -66,7 +66,6 @@ AddElement(/datum/element/simple_flying) AddComponent(/datum/component/clickbox, x_offset = -2, y_offset = -2) AddComponent(/datum/component/swarming) - add_cell_sample() /mob/living/simple_animal/hostile/bee/mob_pickup_checks(mob/living/user, display_messages) if(flags_1 & HOLOGRAM_1) @@ -252,11 +251,6 @@ . = ..() var/datum/reagent/R = pick(typesof(/datum/reagent/toxin)) assign_reagent(GLOB.chemical_reagents_list[R]) - -/mob/living/simple_animal/hostile/bee/add_cell_sample() - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_QUEEN_BEE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/hostile/bee/queen name = "queen bee" desc = "She's the queen of bees, BZZ BZZ!" @@ -331,10 +325,6 @@ qdel(src) return TOXLOSS -/obj/item/queen_bee/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_QUEEN_BEE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /obj/item/queen_bee/bought/Initialize(mapload) . = ..() queen = new(src) @@ -369,7 +359,6 @@ /obj/item/trash/bee/Initialize(mapload) . = ..() AddComponent(/datum/component/edible, list(/datum/reagent/consumable/nutriment/vitamin = 5), null, RAW | MEAT | GROSS, 10, 0, list("bee"), null, 10) - AddElement(/datum/element/swabable, CELL_LINE_TABLE_QUEEN_BEE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) /obj/item/trash/bee/update_overlays() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index c4cd2f2e2eb7..d86311e48b2a 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -87,7 +87,6 @@ . = ..() ADD_TRAIT(src, TRAIT_HEALS_FROM_CARP_RIFTS, INNATE_TRAIT) ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) - add_cell_sample() if(ai_controller) ai_controller.blackboard[BB_HOSTILE_ATTACK_WORD] = pick(speak_emote) if(tamer) @@ -108,10 +107,6 @@ can_have_ai = FALSE toggle_ai(AI_OFF) - -/mob/living/simple_animal/hostile/carp/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_CARP, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /** * Randomly assigns a color to a carp from either a common or rare color variant lists * @@ -192,10 +187,6 @@ del_on_death = 1 random_color = FALSE - -/mob/living/simple_animal/hostile/carp/holocarp/add_cell_sample() - return - /mob/living/simple_animal/hostile/carp/megacarp icon = 'icons/mob/broadMobs.dmi' name = "Mega Space Carp" @@ -227,10 +218,6 @@ maxHealth += rand(30,60) move_to_delay = rand(3,7) - -/mob/living/simple_animal/hostile/carp/megacarp/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MEGACARP, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/hostile/carp/megacarp/adjustHealth(amount, updating_health = TRUE, forced = FALSE) . = ..() if(.) diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm index 1cc119f300bb..6ec124dbcd7c 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -71,10 +71,6 @@ icon = 'icons/effects/tomatodecal.dmi' icon_state = "tomato_floor1" -/obj/effect/decal/cleanable/leaper_sludge/Initialize(mapload, list/datum/disease/diseases) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_LEAPER, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /obj/structure/leaper_bubble name = "leaper bubble" desc = "A floating bubble containing leaper venom. The contents are under a surprising amount of pressure." @@ -90,7 +86,6 @@ COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) - AddElement(/datum/element/swabable, CELL_LINE_TABLE_LEAPER, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) AddElement(/datum/element/movetype_handler) ADD_TRAIT(src, TRAIT_MOVE_FLOATING, LEAPER_BUBBLE_TRAIT) @@ -145,7 +140,6 @@ /mob/living/simple_animal/hostile/jungle/leaper/Initialize(mapload) . = ..() remove_verb(src, /mob/living/verb/pulled) - add_cell_sample() /mob/living/simple_animal/hostile/jungle/leaper/CtrlClickOn(atom/A) face_atom(A) @@ -279,8 +273,4 @@ return icon_state = "leaper" -/mob/living/simple_animal/hostile/jungle/leaper/add_cell_sample() - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_LEAPER, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - #undef PLAYER_HOP_DELAY diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm index fb752989cef0..257258730339 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm @@ -53,13 +53,8 @@ /mob/living/simple_animal/hostile/jungle/mega_arachnid/Initialize(mapload) . = ..() - add_cell_sample() mini_arachnid.Grant(src) -/mob/living/simple_animal/hostile/jungle/mega_arachnid/add_cell_sample() - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MEGA_ARACHNID, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /obj/projectile/mega_arachnid name = "flesh snare" nodamage = TRUE @@ -82,6 +77,3 @@ icon_state = "flesh_snare" armed = TRUE -/obj/item/restraints/legcuffs/beartrap/mega_arachnid/Initialize(mapload) - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_MEGA_ARACHNID, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 3f3ec5c683af..45144fe9b1d1 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -65,7 +65,6 @@ cap_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) UpdateMushroomCap() health = maxHealth - add_cell_sample() . = ..() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) @@ -197,7 +196,3 @@ S.reagents.add_reagent(/datum/reagent/drug/mushroomhallucinogen, powerlevel) S.reagents.add_reagent(/datum/reagent/medicine/omnizine, powerlevel) S.reagents.add_reagent(/datum/reagent/medicine/synaptizine, powerlevel) - -/mob/living/simple_animal/hostile/mushroom/add_cell_sample() - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_WALKING_MUSHROOM, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) diff --git a/code/modules/mob/living/simple_animal/hostile/netherworld.dm b/code/modules/mob/living/simple_animal/hostile/netherworld.dm index 6aeaa709b819..fc8a01129092 100644 --- a/code/modules/mob/living/simple_animal/hostile/netherworld.dm +++ b/code/modules/mob/living/simple_animal/hostile/netherworld.dm @@ -27,10 +27,6 @@ if(phaser) var/datum/action/innate/creature/teleport/teleport = new(src) teleport.Grant(src) - add_cell_sample() - -/mob/living/simple_animal/hostile/netherworld/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_NETHER, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 0) /datum/action/innate/creature background_icon_state = "bg_default" diff --git a/code/modules/mob/living/simple_animal/hostile/ooze.dm b/code/modules/mob/living/simple_animal/hostile/ooze.dm index 188cd540bb10..1affc33a7573 100644 --- a/code/modules/mob/living/simple_animal/hostile/ooze.dm +++ b/code/modules/mob/living/simple_animal/hostile/ooze.dm @@ -37,7 +37,6 @@ /mob/living/simple_animal/hostile/ooze/Initialize(mapload) . = ..() create_reagents(300) - add_cell_sample() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) /mob/living/simple_animal/hostile/ooze/attacked_by(obj/item/I, mob/living/user) @@ -128,9 +127,6 @@ return FALSE consume.stop_consuming() -/mob/living/simple_animal/hostile/ooze/gelatinous/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_GELATINOUS, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - ///This ability lets the gelatinious ooze speed up for a little bit /datum/action/cooldown/metabolicboost name = "Metabolic boost" @@ -289,9 +285,6 @@ var/datum/action/cooldown/gel_cocoon/gel_cocoon = new(src) gel_cocoon.Grant(src) -/mob/living/simple_animal/hostile/ooze/grapes/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_GRAPE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - ///Ability that allows the owner to fire healing globules at mobs, targetting specific limbs. /datum/action/cooldown/globules name = "Fire Mending globule" diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index 3cea9f59055a..8f76216e665a 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -399,7 +399,6 @@ var/datum/action/cooldown/regurgitate/spit = new(src) spit.Grant(src) - add_cell_sample() AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/cheesiehonkers, /obj/item/food/cornchips), tame_chance = 30, bonus_tame_chance = 0, after_tame = CALLBACK(src, PROC_REF(tamed))) @@ -460,9 +459,6 @@ buckle_lying = 0 AddElement(/datum/element/ridable, /datum/component/riding/creature/glutton) -/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_GLUTTON, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/Exited(atom/movable/gone, direction) . = ..() prank_pouch -= gone diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm index 4f4652cb47c5..f1a91ff0b005 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm @@ -49,7 +49,6 @@ COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) - add_cell_sample() /mob/living/simple_animal/hostile/retaliate/frog/proc/on_entered(datum/source, AM as mob|obj) SIGNAL_HANDLER @@ -59,7 +58,3 @@ var/mob/living/L = AM if(L.mob_size > MOB_SIZE_TINY) playsound(src, stepped_sound, 50, TRUE) - -/mob/living/simple_animal/hostile/retaliate/frog/add_cell_sample() - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_FROG, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index f18420af9040..d0fc1e9bf946 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -47,10 +47,6 @@ var/is_tree = TRUE -/mob/living/simple_animal/hostile/tree/Initialize(mapload) - . = ..() - add_cell_sample() - /mob/living/simple_animal/hostile/tree/Life(delta_time = SSMOBS_DT, times_fired) ..() if(!is_tree || !isopenturf(loc)) @@ -75,9 +71,6 @@ C.visible_message(span_danger("\The [src] knocks down \the [C]!"), \ span_userdanger("\The [src] knocks you down!")) -/mob/living/simple_animal/hostile/tree/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_PINE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/hostile/tree/festivus name = "festivus pole" desc = "Serenity now... SERENITY NOW!" @@ -109,5 +102,3 @@ if(A.cell) A.cell.give(75) -/mob/living/simple_animal/hostile/tree/festivus/add_cell_sample() - return diff --git a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm index a663b63217ed..556dd5ae884a 100644 --- a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm +++ b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm @@ -28,7 +28,6 @@ var/datum/action/cooldown/tentacle_slap/slapper = new(src) slapper.Grant(src) - add_cell_sample() AddComponent(/datum/component/tameable, list(/obj/item/food/fries, /obj/item/food/cheesyfries, /obj/item/food/cornchips, /obj/item/food/carrotfries), tame_chance = 30, bonus_tame_chance = 0, after_tame = CALLBACK(src, PROC_REF(tamed))) /mob/living/simple_animal/hostile/vatbeast/proc/tamed(mob/living/tamer) @@ -36,9 +35,6 @@ AddElement(/datum/element/ridable, /datum/component/riding/creature/vatbeast) faction = list("neutral") -/mob/living/simple_animal/hostile/vatbeast/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_VATBEAST, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /// Ability that allows the owner to slap other mobs a short distance away. /// For vatbeats, this ability is shared with the rider. /datum/action/cooldown/tentacle_slap diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index a68e869bcf97..69a9ef18b6a2 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -657,10 +657,6 @@ SSidlenpcpool.idle_mobs_by_zlevel[old_turf.z] -= src toggle_ai(initial(AIStatus)) -///This proc is used for adding the swabbale element to mobs so that they are able to be biopsied and making sure holograpic and butter-based creatures don't yield viable cells samples. -/mob/living/simple_animal/proc/add_cell_sample() - return - /mob/living/simple_animal/relaymove(mob/living/user, direction) if(user.incapacitated()) return diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index c2885f7ba96c..f10ab17473f9 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -104,7 +104,6 @@ set_colour(new_colour) . = ..() set_nutrition(700) - add_cell_sample() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) AddElement(/datum/element/soft_landing) @@ -506,9 +505,6 @@ /mob/living/simple_animal/slime/random/Initialize(mapload, new_colour, new_is_adult) . = ..(mapload, pick(slime_colours), prob(50)) -/mob/living/simple_animal/slime/add_cell_sample() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLIME, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - /mob/living/simple_animal/slime/proc/set_target(new_target) var/old_target = Target Target = new_target diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index 3241b4ac472f..ea46f1ac8cdf 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -569,7 +569,6 @@ /obj/item/tank/internals, /obj/item/analyzer, /obj/item/dnainjector, - /obj/item/biopsy_tool, /obj/item/storage/bag/bio, ) skins = list( diff --git a/code/modules/plumbing/ducts.dm b/code/modules/plumbing/ducts.dm deleted file mode 100644 index 4635f0e0f0b6..000000000000 --- a/code/modules/plumbing/ducts.dm +++ /dev/null @@ -1,371 +0,0 @@ -/* -All the important duct code: -/code/datums/components/plumbing/plumbing.dm -/code/datums/ductnet.dm -*/ -/obj/machinery/duct - name = "fluid duct" - icon = 'icons/obj/plumbing/fluid_ducts.dmi' - icon_state = "nduct" - - use_power = NO_POWER_USE - - ///bitfield with the directions we're connected in - var/connects - ///set to TRUE to disable smart duct behaviour - var/dumb = FALSE - ///wheter we allow our connects to be changed after initialization or not - var/lock_connects = FALSE - ///our ductnet, wich tracks what we're connected to - var/datum/ductnet/duct - ///amount we can transfer per process. note that the ductnet can carry as much as the lowest capacity duct - var/capacity = 10 - - ///the color of our duct - var/duct_color = null - ///TRUE to ignore colors, so yeah we also connect with other colors without issue - var/ignore_colors = FALSE - ///1,2,4,8,16 - var/duct_layer = DUCT_LAYER_DEFAULT - ///whether we allow our layers to be altered - var/lock_layers = FALSE - ///TRUE to let colors connect when forced with a wrench, false to just not do that at all - var/color_to_color_support = TRUE - ///wheter to even bother with plumbing code or not - var/active = TRUE - ///track ducts we're connected to. Mainly for ducts we connect to that we normally wouldn't, like different layers and colors, for when we regenerate the ducts - var/list/neighbours = list() - ///wheter we just unanchored or drop whatever is in the variable. either is safe - var/drop_on_wrench = /obj/item/stack/ducts - -/obj/machinery/duct/Initialize(mapload, no_anchor, color_of_duct = "#ffffff", layer_of_duct = DUCT_LAYER_DEFAULT, force_connects) - . = ..() - - if(no_anchor) - active = FALSE - set_anchored(FALSE) - else if(!can_anchor()) - qdel(src) - CRASH("Overlapping ducts detected") - - if(force_connects) - connects = force_connects //skip change_connects() because we're still initializing and we need to set our connects at one point - if(!lock_layers) - duct_layer = layer_of_duct - if(!ignore_colors) - duct_color = color_of_duct - if(duct_color) - add_atom_colour(duct_color, FIXED_COLOUR_PRIORITY) - - handle_layer() - - for(var/obj/machinery/duct/D in loc) - if(D == src) - continue - if(D.duct_layer & duct_layer) - return INITIALIZE_HINT_QDEL //If we have company, end it all - - attempt_connect() - AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE) - -///start looking around us for stuff to connect to -/obj/machinery/duct/proc/attempt_connect() - - for(var/atom/movable/AM in loc) - for(var/datum/component/plumbing/plumber as anything in AM.GetComponents(/datum/component/plumbing)) - if(plumber.active) - disconnect_duct() //let's not built under plumbing machinery - return - - for(var/D in GLOB.cardinals) - if(dumb && !(D & connects)) - continue - for(var/atom/movable/AM in get_step(src, D)) - if(connect_network(AM, D)) - add_connects(D) - update_appearance() - -///see if whatever we found can be connected to -/obj/machinery/duct/proc/connect_network(atom/movable/AM, direction, ignore_color) - if(istype(AM, /obj/machinery/duct)) - return connect_duct(AM, direction, ignore_color) - - for(var/datum/component/plumbing/plumber as anything in AM.GetComponents(/datum/component/plumbing)) - . += connect_plumber(plumber, direction) //so that if one is true, all is true. beautiful. - -///connect to a duct -/obj/machinery/duct/proc/connect_duct(obj/machinery/duct/D, direction, ignore_color) - var/opposite_dir = turn(direction, 180) - if(!active || !D.active) - return - - if(!dumb && D.dumb && !(opposite_dir & D.connects)) - return - if(dumb && D.dumb && !(connects & D.connects)) //we eliminated a few more scenarios in attempt connect - return - - if((duct == D.duct) && duct)//check if we're not just comparing two null values - add_neighbour(D, direction) - - D.add_connects(opposite_dir) - D.update_appearance() - return TRUE //tell the current pipe to also update it's sprite - if(!(D in neighbours)) //we cool - if((duct_color != D.duct_color) && !(ignore_colors || D.ignore_colors)) - return - if(!(duct_layer & D.duct_layer)) - return - - if(D.duct) - if(duct) - duct.assimilate(D.duct) - else - D.duct.add_duct(src) - else - if(duct) - duct.add_duct(D) - else - create_duct() - duct.add_duct(D) - - add_neighbour(D, direction) - - //Delegate to timer subsystem so its handled the next tick and doesnt cause byond to mistake it for an infinite loop and kill the game - addtimer(CALLBACK(D, PROC_REF(attempt_connect))) - - return TRUE - -///connect to a plumbing object -/obj/machinery/duct/proc/connect_plumber(datum/component/plumbing/P, direction) - var/opposite_dir = turn(direction, 180) - - if(duct_layer != P.ducting_layer) - return FALSE - - if(!P.active) - return - - var/comp_directions = P.supply_connects + P.demand_connects //they should never, ever have supply and demand connects overlap or catastrophic failure - if(opposite_dir & comp_directions) - if(!duct) - create_duct() - if(duct.add_plumber(P, opposite_dir)) - neighbours[P.parent] = direction - return TRUE - -///we disconnect ourself from our neighbours. we also destroy our ductnet and tell our neighbours to make a new one -/obj/machinery/duct/proc/disconnect_duct(skipanchor) - if(!skipanchor) //since set_anchored calls us too. - set_anchored(FALSE) - active = FALSE - if(duct) - duct.remove_duct(src) - lose_neighbours() - reset_connects(0) - update_appearance() - if(ispath(drop_on_wrench)) - new drop_on_wrench(drop_location()) - drop_on_wrench = null - if(!QDELETED(src)) - qdel(src) - -///Special proc to draw a new connect frame based on neighbours. not the norm so we can support multiple duct kinds -/obj/machinery/duct/proc/generate_connects() - if(lock_connects) - return - connects = 0 - for(var/A in neighbours) - connects |= neighbours[A] - update_appearance() - -///create a new duct datum -/obj/machinery/duct/proc/create_duct() - duct = new() - duct.add_duct(src) - -///add a duct as neighbour. this means we're connected and will connect again if we ever regenerate -/obj/machinery/duct/proc/add_neighbour(obj/machinery/duct/D, direction) - if(!(D in neighbours)) - neighbours[D] = direction - if(!(src in D.neighbours)) - D.neighbours[src] = turn(direction, 180) - -///remove all our neighbours, and remove us from our neighbours aswell -/obj/machinery/duct/proc/lose_neighbours() - for(var/obj/machinery/duct/D in neighbours) - D.neighbours.Remove(src) - neighbours = list() - -///add a connect direction -/obj/machinery/duct/proc/add_connects(new_connects) //make this a define to cut proc calls? - if(!lock_connects) - connects |= new_connects - -///remove a connect direction -/obj/machinery/duct/proc/remove_connects(dead_connects) - if(!lock_connects) - connects &= ~dead_connects - -///remove our connects -/obj/machinery/duct/proc/reset_connects() - if(!lock_connects) - connects = 0 - -///get a list of the ducts we can connect to if we are dumb -/obj/machinery/duct/proc/get_adjacent_ducts() - var/list/adjacents = list() - for(var/A in GLOB.cardinals) - if(A & connects) - for(var/obj/machinery/duct/D in get_step(src, A)) - if((turn(A, 180) & D.connects) && D.active) - adjacents += D - return adjacents - -/obj/machinery/duct/update_icon_state() - var/temp_icon = initial(icon_state) - for(var/D in GLOB.cardinals) - if(D & connects) - if(D == NORTH) - temp_icon += "_n" - if(D == SOUTH) - temp_icon += "_s" - if(D == EAST) - temp_icon += "_e" - if(D == WEST) - temp_icon += "_w" - icon_state = temp_icon - return ..() - -///update the layer we are on -/obj/machinery/duct/proc/handle_layer() - var/offset - switch(duct_layer)//it's a bitfield, but it's fine because it only works when there's one layer, and multiple layers should be handled differently - if(FIRST_DUCT_LAYER) - offset = -10 - if(SECOND_DUCT_LAYER) - offset = -5 - if(THIRD_DUCT_LAYER) - offset = 0 - if(FOURTH_DUCT_LAYER) - offset = 5 - if(FIFTH_DUCT_LAYER) - offset = 10 - pixel_x = offset - pixel_y = offset - - -/obj/machinery/duct/set_anchored(anchorvalue) - . = ..() - if(isnull(.)) - return - if(anchorvalue) - active = TRUE - attempt_connect() - else - disconnect_duct(TRUE) - -/obj/machinery/duct/wrench_act(mob/living/user, obj/item/I) //I can also be the RPD - ..() - add_fingerprint(user) - I.play_tool_sound(src) - if(anchored || can_anchor()) - set_anchored(!anchored) - user.visible_message( \ - "[user] [anchored ? null : "un"]fastens \the [src].", \ - span_notice("You [anchored ? null : "un"]fasten \the [src]."), \ - span_hear("You hear ratcheting.")) - return TRUE - -///collection of all the sanity checks to prevent us from stacking ducts that shouldn't be stacked -/obj/machinery/duct/proc/can_anchor(turf/T) - if(!T) - T = get_turf(src) - for(var/obj/machinery/duct/D in T) - if(!anchored || D == src) - continue - for(var/A in GLOB.cardinals) - if(A & connects && A & D.connects) - return FALSE - return TRUE - -/obj/machinery/duct/doMove(destination) - . = ..() - disconnect_duct() - set_anchored(FALSE) - -/obj/machinery/duct/Destroy() - disconnect_duct() - return ..() - -/obj/machinery/duct/MouseDrop_T(atom/A, mob/living/user) - if(!istype(A, /obj/machinery/duct)) - return - var/obj/machinery/duct/D = A - var/obj/item/I = user.get_active_held_item() - if(I?.tool_behaviour != TOOL_WRENCH) - to_chat(user, span_warning("You need to be holding a wrench in your active hand to do that!")) - return - if(get_dist(src, D) != 1) - return - var/direction = get_dir(src, D) - if(!(direction in GLOB.cardinals)) - return - if(duct_layer != D.duct_layer) - return - - add_connects(direction) //the connect of the other duct is handled in connect_network, but do this here for the parent duct because it's not necessary in normal cases - add_neighbour(D, direction) - connect_network(D, direction, TRUE) - update_appearance() - -/obj/item/stack/ducts - name = "stack of duct" - desc = "A stack of fluid ducts." - singular_name = "duct" - icon = 'icons/obj/plumbing/fluid_ducts.dmi' - icon_state = "ducts" - mats_per_unit = list(/datum/material/iron=500) - w_class = WEIGHT_CLASS_TINY - novariants = FALSE - max_amount = 50 - item_flags = NOBLUDGEON - merge_type = /obj/item/stack/ducts - ///Color of our duct - var/duct_color = "omni" - ///Default layer of our duct - var/duct_layer = "Default Layer" - ///Assoc index with all the available layers. yes five might be a bit much. Colors uses a global by the way - var/list/layers = list("Second Layer" = SECOND_DUCT_LAYER, "Default Layer" = DUCT_LAYER_DEFAULT, "Fourth Layer" = FOURTH_DUCT_LAYER) - -/obj/item/stack/ducts/examine(mob/user) - . = ..() - . += span_notice("It's current color and layer are [duct_color] and [duct_layer]. Use in-hand to change.") - -/obj/item/stack/ducts/attack_self(mob/user) - var/new_layer = tgui_input_list(user, "Select a layer", "Layer", layers) - if(new_layer) - duct_layer = new_layer - var/new_color = tgui_input_list(user, "Select a color", "Color", GLOB.pipe_paint_colors) - if(new_color) - duct_color = new_color - add_atom_colour(GLOB.pipe_paint_colors[new_color], FIXED_COLOUR_PRIORITY) - -/obj/item/stack/ducts/afterattack(atom/target, user, proximity) - . = ..() - if(!proximity) - return - if(istype(target, /obj/machinery/duct)) - var/obj/machinery/duct/D = target - if(!D.anchored) - add(1) - qdel(D) - check_attach_turf(target) - -/obj/item/stack/ducts/proc/check_attach_turf(atom/target) - if(istype(target, /turf/open) && use(1)) - var/turf/open/open_turf = target - new /obj/machinery/duct(open_turf, FALSE, GLOB.pipe_paint_colors[duct_color], layers[duct_layer]) - playsound(get_turf(src), 'sound/machines/click.ogg', 50, TRUE) - -/obj/item/stack/ducts/fifty - amount = 50 diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.dm b/code/modules/plumbing/plumbers/_plumb_machinery.dm deleted file mode 100644 index 20a602f215d3..000000000000 --- a/code/modules/plumbing/plumbers/_plumb_machinery.dm +++ /dev/null @@ -1,103 +0,0 @@ -/**Basic plumbing object. -* It doesn't really hold anything special, YET. -* Objects that are plumbing but not a subtype are as of writing liquid pumps and the reagent_dispenser tank -* Also please note that the plumbing component is toggled on and off by the component using a signal from default_unfasten_wrench, so dont worry about it -*/ -/obj/machinery/plumbing - name = "pipe thing" - icon = 'icons/obj/plumbing/plumbers.dmi' - icon_state = "pump" - density = TRUE - idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 7.5 - resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF - ///Plumbing machinery is always gonna need reagents, so we might aswell put it here - var/buffer = 50 - ///Flags for reagents, like INJECTABLE, TRANSPARENT bla bla everything thats in DEFINES/reagents.dm - var/reagent_flags = TRANSPARENT - ///wheter we partake in rcd construction or not - -/obj/machinery/plumbing/Initialize(mapload, bolt = TRUE) - . = ..() - set_anchored(bolt) - create_reagents(buffer, reagent_flags) - AddComponent(/datum/component/simple_rotation) - interaction_flags_machine |= INTERACT_MACHINE_OFFLINE - -/obj/machinery/plumbing/examine(mob/user) - . = ..() - . += span_notice("The maximum volume display reads: [reagents.maximum_volume] units.") - -/obj/machinery/plumbing/AltClick(mob/user) - return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation - -/obj/machinery/plumbing/wrench_act(mob/living/user, obj/item/tool) - . = ..() - default_unfasten_wrench(user, tool) - return TOOL_ACT_TOOLTYPE_SUCCESS - -/obj/machinery/plumbing/plunger_act(obj/item/plunger/P, mob/living/user, reinforced) - to_chat(user, span_notice("You start furiously plunging [name].")) - if(do_after(user, src, 30)) - to_chat(user, span_notice("You finish plunging the [name].")) - reagents.expose(get_turf(src), TOUCH) //splash on the floor - reagents.clear_reagents() - -/obj/machinery/plumbing/welder_act(mob/living/user, obj/item/I) - . = ..() - if(anchored) - to_chat(user, span_warning("The [name] needs to be unbolted to do that!")) - if(I.tool_start_check(user, amount=0)) - to_chat(user, span_notice("You start slicing the [name] apart.")) - if(I.use_tool(src, user, (1.5 SECONDS), volume=50)) - deconstruct(TRUE) - to_chat(user, span_notice("You slice the [name] apart.")) - return TRUE - -///We can empty beakers in here and everything -/obj/machinery/plumbing/input - name = "input gate" - desc = "Can be manually filled with reagents from containers." - icon_state = "pipe_input" - pass_flags_self = PASSMACHINE | LETPASSTHROW // Small - reagent_flags = TRANSPARENT | REFILLABLE - -/obj/machinery/plumbing/input/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_supply, bolt, layer) - -///We can fill beakers in here and everything. we dont inheret from input because it has nothing that we need -/obj/machinery/plumbing/output - name = "output gate" - desc = "A manual output for plumbing systems, for taking reagents directly into containers." - icon_state = "pipe_output" - pass_flags_self = PASSMACHINE | LETPASSTHROW // Small - reagent_flags = TRANSPARENT | DRAINABLE - -/obj/machinery/plumbing/output/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) - -/obj/machinery/plumbing/tank - name = "chemical tank" - desc = "A massive chemical holding tank." - icon_state = "tank" - buffer = 400 - -/obj/machinery/plumbing/tank/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/tank, bolt, layer) - - -///Layer manifold machine that connects a bunch of layers -/obj/machinery/plumbing/layer_manifold - name = "layer manifold" - desc = "A plumbing manifold for layers." - icon_state = "manifold" - density = FALSE - -/obj/machinery/plumbing/layer_manifold/Initialize(mapload, bolt, layer) - . = ..() - - AddComponent(/datum/component/plumbing/manifold, bolt, SECOND_DUCT_LAYER) - AddComponent(/datum/component/plumbing/manifold, bolt, THIRD_DUCT_LAYER) - AddComponent(/datum/component/plumbing/manifold, bolt, FOURTH_DUCT_LAYER) diff --git a/code/modules/plumbing/plumbers/acclimator.dm b/code/modules/plumbing/plumbers/acclimator.dm deleted file mode 100644 index 7cc83ca4f485..000000000000 --- a/code/modules/plumbing/plumbers/acclimator.dm +++ /dev/null @@ -1,113 +0,0 @@ -//we cant use defines in tgui, so use a string instead of magic numbers -#define COOLING "Cooling" -#define HEATING "Heating" -#define NEUTRAL "Neutral" - -///this the plumbing version of a heater/freezer. -/obj/machinery/plumbing/acclimator - name = "chemical acclimator" - desc = "An efficient cooler and heater for the perfect showering temperature or illicit chemical factory." - - icon_state = "acclimator" - base_icon_state = "acclimator" - buffer = 200 - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - - ///towards wich temperature do we build? - var/target_temperature = 300 - ///I cant find a good name for this. Basically if target is 300, and this is 10, it will still target 300 but will start emptying itself at 290 and 310. - var/allowed_temperature_difference = 1 - ///cool/heat power - var/heater_coefficient = 0.05 - ///Are we turned on or off? this is from the on and off button - var/enabled = TRUE - ///COOLING, HEATING or NEUTRAL. We track this for change, so we dont needlessly update our icon - var/acclimate_state - /**We can't take anything in, at least till we're emptied. Down side of the round robin chem transfer, otherwise while emptying 5u of an unreacted chem gets added, - and you get nasty leftovers - */ - var/emptying = FALSE - -/obj/machinery/plumbing/acclimator/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/acclimator, bolt, layer) - -/obj/machinery/plumbing/acclimator/process(delta_time) - if(machine_stat & NOPOWER || !enabled || !reagents.total_volume || reagents.chem_temp == target_temperature) - if(acclimate_state != NEUTRAL) - acclimate_state = NEUTRAL - update_appearance() - if(!reagents.total_volume) - emptying = FALSE - return - - if(reagents.chem_temp < target_temperature && acclimate_state != HEATING) //note that we check if the temperature is the same at the start - acclimate_state = HEATING - update_appearance() - else if(reagents.chem_temp > target_temperature && acclimate_state != COOLING) - acclimate_state = COOLING - update_appearance() - if(!emptying) - if(reagents.chem_temp >= target_temperature && target_temperature + allowed_temperature_difference >= reagents.chem_temp) //cooling here - emptying = TRUE - if(reagents.chem_temp <= target_temperature && target_temperature - allowed_temperature_difference <= reagents.chem_temp) //heating here - emptying = TRUE - - if(!emptying) //suspend heating/cooling during emptying phase - reagents.adjust_thermal_energy((target_temperature - reagents.chem_temp) * heater_coefficient * delta_time * SPECIFIC_HEAT_DEFAULT * reagents.total_volume) //keep constant with chem heater - reagents.handle_reactions() - use_power(active_power_usage * delta_time) - else if(acclimate_state != NEUTRAL) - acclimate_state = NEUTRAL - update_appearance() - -/obj/machinery/plumbing/acclimator/update_icon_state() - switch(acclimate_state) - if(COOLING) - icon_state = "[base_icon_state]_cold" - if(HEATING) - icon_state = "[base_icon_state]_hot" - else - icon_state = base_icon_state - return ..() - -/obj/machinery/plumbing/acclimator/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "ChemAcclimator", name) - ui.open() - -/obj/machinery/plumbing/acclimator/ui_data(mob/user) - var/list/data = list() - - data["enabled"] = enabled - data["chem_temp"] = reagents.chem_temp - data["target_temperature"] = target_temperature - data["allowed_temperature_difference"] = allowed_temperature_difference - data["acclimate_state"] = acclimate_state - data["max_volume"] = reagents.maximum_volume - data["reagent_volume"] = reagents.total_volume - data["emptying"] = emptying - return data - -/obj/machinery/plumbing/acclimator/ui_act(action, params) - . = ..() - if(.) - return - . = TRUE - switch(action) - if("set_target_temperature") - var/target = text2num(params["temperature"]) - target_temperature = clamp(target, 0, 1000) - if("set_allowed_temperature_difference") - var/target = text2num(params["temperature"]) - allowed_temperature_difference = clamp(target, 0, 1000) - if("toggle_power") - enabled = !enabled - if("change_volume") - var/target = text2num(params["volume"]) - reagents.maximum_volume = clamp(round(target), 1, buffer) - -#undef COOLING -#undef HEATING -#undef NEUTRAL diff --git a/code/modules/plumbing/plumbers/bottler.dm b/code/modules/plumbing/plumbers/bottler.dm deleted file mode 100644 index d615f895cff7..000000000000 --- a/code/modules/plumbing/plumbers/bottler.dm +++ /dev/null @@ -1,97 +0,0 @@ -/obj/machinery/plumbing/bottler - name = "chemical bottler" - desc = "Puts reagents into containers, like bottles and beakers in the tile facing the green light spot, they will exit on the red light spot if successfully filled." - icon_state = "bottler" - layer = ABOVE_ALL_MOB_LAYER - - reagent_flags = TRANSPARENT | DRAINABLE - buffer = 100 - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - ///how much do we fill - var/wanted_amount = 10 - ///where things are sent - var/turf/goodspot = null - ///where things are taken - var/turf/inputspot = null - ///where beakers that are already full will be sent - var/turf/badspot = null - ///Does the plumbing machine have a correct tile setup - var/valid_output_configuration = FALSE - -/obj/machinery/plumbing/bottler/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) - setDir(dir) - -/obj/machinery/plumbing/bottler/examine(mob/user) - . = ..() - . += span_notice("A small screen indicates that it will fill for [wanted_amount]u.") - if(!valid_output_configuration) - . += span_warning("A flashing notification on the screen reads: \"Output location error!\"") - -///changes the tile array -/obj/machinery/plumbing/bottler/setDir(newdir) - . = ..() - switch(dir) - if(NORTH) - goodspot = get_step(get_turf(src), NORTH) - inputspot = get_step(get_turf(src), SOUTH) - badspot = get_step(get_turf(src), EAST) - if(SOUTH) - goodspot = get_step(get_turf(src), SOUTH) - inputspot = get_step(get_turf(src), NORTH) - badspot = get_step(get_turf(src), WEST) - if(WEST) - goodspot = get_step(get_turf(src), WEST) - inputspot = get_step(get_turf(src), EAST) - badspot = get_step(get_turf(src), NORTH) - if(EAST) - goodspot = get_step(get_turf(src), EAST) - inputspot = get_step(get_turf(src), WEST) - badspot = get_step(get_turf(src), SOUTH) - - //If by some miracle - if( ( !valid_output_configuration ) && ( goodspot != null && inputspot != null && badspot != null ) ) - valid_output_configuration = TRUE - begin_processing() - -///changing input ammount with a window -/obj/machinery/plumbing/bottler/interact(mob/user) - . = ..() - if(!valid_output_configuration) - to_chat(user, span_warning("A flashing notification on the screen reads: \"Output location error!\"")) - return . - var/new_amount = tgui_input_number(user, "Set Amount to Fill", "Desired Amount", max_value = 100) - if(!new_amount || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) - return . - wanted_amount = new_amount - to_chat(user, span_notice(" The [src] will now fill for [wanted_amount]u.")) - -/obj/machinery/plumbing/bottler/process(delta_time) - if(machine_stat & NOPOWER) - return - // Sanity check the result locations and stop processing if they don't exist - if(goodspot == null || badspot == null || inputspot == null) - valid_output_configuration = FALSE - return PROCESS_KILL - - ///see if machine has enough to fill, is anchored down and has any inputspot objects to pick from - if(reagents.total_volume >= wanted_amount && anchored && length(inputspot.contents)) - use_power(active_power_usage * delta_time) - var/obj/AM = pick(inputspot.contents)///pick a reagent_container that could be used - if((istype(AM, /obj/item/reagent_containers) && !istype(AM, /obj/item/reagent_containers/hypospray/medipen)) || istype(AM, /obj/item/ammo_casing/shotgun/dart)) - var/obj/item/reagent_containers/B = AM - ///see if it would overflow else inject - if((B.reagents.total_volume + wanted_amount) <= B.reagents.maximum_volume) - reagents.trans_to(B, wanted_amount, transfered_by = src) - B.forceMove(goodspot) - return - ///glass was full so we move it away - AM.forceMove(badspot) - if(istype(AM, /obj/item/slime_extract)) ///slime extracts need inject - AM.forceMove(goodspot) - reagents.trans_to(AM, wanted_amount, transfered_by = src, methods = INJECT) - return - if(istype(AM, /obj/item/slimecross/industrial)) ///no need to move slimecross industrial things - reagents.trans_to(AM, wanted_amount, transfered_by = src, methods = INJECT) - return diff --git a/code/modules/plumbing/plumbers/destroyer.dm b/code/modules/plumbing/plumbers/destroyer.dm deleted file mode 100644 index e6aecd95bcab..000000000000 --- a/code/modules/plumbing/plumbers/destroyer.dm +++ /dev/null @@ -1,25 +0,0 @@ -/obj/machinery/plumbing/disposer - name = "chemical disposer" - desc = "Breaks down chemicals and annihilates them." - icon_state = "disposal" - pass_flags_self = PASSMACHINE | LETPASSTHROW // Small - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - ///we remove 5 reagents per second - var/disposal_rate = 5 - -/obj/machinery/plumbing/disposer/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) - -/obj/machinery/plumbing/disposer/process(delta_time) - if(machine_stat & NOPOWER) - return - if(reagents.total_volume) - if(icon_state != initial(icon_state) + "_working") //threw it here instead of update icon since it only has two states - icon_state = initial(icon_state) + "_working" - reagents.remove_any(disposal_rate * delta_time) - use_power(active_power_usage * delta_time) - else - if(icon_state != initial(icon_state)) - icon_state = initial(icon_state) - diff --git a/code/modules/plumbing/plumbers/fermenter.dm b/code/modules/plumbing/plumbers/fermenter.dm deleted file mode 100644 index 9cc652faf64e..000000000000 --- a/code/modules/plumbing/plumbers/fermenter.dm +++ /dev/null @@ -1,52 +0,0 @@ -/obj/machinery/plumbing/fermenter - name = "chemical fermenter" - desc = "Turns plants into various types of booze." - icon_state = "fermenter" - layer = ABOVE_ALL_MOB_LAYER - - reagent_flags = TRANSPARENT | DRAINABLE - buffer = 400 - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - ///input dir - var/eat_dir = SOUTH - -/obj/machinery/plumbing/fermenter/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_supply, bolt, layer) - var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = PROC_REF(on_entered), - ) - AddElement(/datum/element/connect_loc, loc_connections) - -/obj/machinery/plumbing/fermenter/setDir(newdir) - . = ..() - eat_dir = newdir - -/obj/machinery/plumbing/fermenter/CanAllowThrough(atom/movable/mover, border_dir) - . = ..() - if(!anchored) - return - if(border_dir == eat_dir) - return TRUE - -/obj/machinery/plumbing/fermenter/proc/on_entered(datum/source, atom/movable/AM) - SIGNAL_HANDLER - if(AM == src) - return - ferment(AM) - -/// uses fermentation proc similar to fermentation barrels -/obj/machinery/plumbing/fermenter/proc/ferment(atom/AM) - if(machine_stat & NOPOWER) - return - if(reagents.holder_full()) - return - if(!isitem(AM)) - return - if(istype(AM, /obj/item/food/grown)) - var/obj/item/food/grown/G = AM - if(G.distill_reagent) - var/amount = G.seed.potency * 0.25 - reagents.add_reagent(G.distill_reagent, amount) - use_power(active_power_usage * amount) - qdel(G) diff --git a/code/modules/plumbing/plumbers/filter.dm b/code/modules/plumbing/plumbers/filter.dm deleted file mode 100644 index 1fa216f934c6..000000000000 --- a/code/modules/plumbing/plumbers/filter.dm +++ /dev/null @@ -1,68 +0,0 @@ -///chemical plumbing filter. If it's not filtered by left and right, it goes straight. -/obj/machinery/plumbing/filter - name = "chemical filter" - desc = "A chemical filter for filtering chemicals. The left and right outputs appear to be from the perspective of the input port." - icon_state = "filter" - density = FALSE - - ///whitelist of chems id's that go to the left side. Empty to disable port - var/list/left = list() - ///whitelist of chem id's that go to the right side. Empty to disable port - var/list/right = list() - ///whitelist of chems but their name instead of path - var/list/english_left = list() - ///whitelist of chems but their name instead of path - var/list/english_right = list() - -/obj/machinery/plumbing/filter/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/filter, bolt, layer) - -/obj/machinery/plumbing/filter/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "ChemFilter", name) - ui.open() - -/obj/machinery/plumbing/filter/ui_data(mob/user) - var/list/data = list() - data["left"] = english_left - data["right"] = english_right - return data - -/obj/machinery/plumbing/filter/ui_act(action, params) - . = ..() - if(.) - return - . = TRUE - switch(action) - if("add") - var/new_chem_name = params["name"] - var/chem_id = get_chem_id(new_chem_name) - if(chem_id) - switch(params["which"]) - if("left") - if(!left.Find(chem_id)) - english_left += new_chem_name - left += chem_id - if("right") - if(!right.Find(chem_id)) - english_right += new_chem_name - right += chem_id - else - to_chat(usr, span_warning("No such known reagent exists!")) - - if("remove") - var/chem_name = params["reagent"] - var/chem_id = get_chem_id(chem_name) - switch(params["which"]) - if("left") - if(english_left.Find(chem_name)) - english_left -= chem_name - left -= chem_id - if("right") - if(english_right.Find(chem_name)) - english_right -= chem_name - right -= chem_id - - diff --git a/code/modules/plumbing/plumbers/grinder_chemical.dm b/code/modules/plumbing/plumbers/grinder_chemical.dm deleted file mode 100644 index 339b0985f150..000000000000 --- a/code/modules/plumbing/plumbers/grinder_chemical.dm +++ /dev/null @@ -1,59 +0,0 @@ -/obj/machinery/plumbing/grinder_chemical - name = "chemical grinder" - desc = "chemical grinder." - icon_state = "grinder_chemical" - layer = ABOVE_ALL_MOB_LAYER - - reagent_flags = TRANSPARENT | DRAINABLE - buffer = 400 - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - var/eat_dir = SOUTH - -/obj/machinery/plumbing/grinder_chemical/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_supply, bolt, layer) - var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = PROC_REF(on_entered), - ) - AddElement(/datum/element/connect_loc, loc_connections) - -/obj/machinery/plumbing/grinder_chemical/setDir(newdir) - . = ..() - eat_dir = newdir - -/obj/machinery/plumbing/grinder_chemical/CanAllowThrough(atom/movable/mover, border_dir) - . = ..() - if(!anchored) - return - if(border_dir == eat_dir) - return TRUE - -/obj/machinery/plumbing/grinder_chemical/proc/on_entered(datum/source, atom/movable/AM) - SIGNAL_HANDLER - if(AM == src) - return - grind(AM) - -/obj/machinery/plumbing/grinder_chemical/proc/grind(atom/AM) - if(machine_stat & NOPOWER) - return - if(reagents.holder_full()) - return - if(!isitem(AM)) - return - var/obj/item/I = AM - if(I.juice_results || I.grind_results) - use_power(active_power_usage) - if(I.juice_results) - I.on_juice() - reagents.add_reagent_list(I.juice_results) - if(I.reagents) - I.reagents.trans_to(src, I.reagents.total_volume, transfered_by = src) - qdel(I) - return - I.on_grind() - reagents.add_reagent_list(I.grind_results) - if(I.reagents) - I.reagents.trans_to(src, I.reagents.total_volume, transfered_by = src) - qdel(I) - diff --git a/code/modules/plumbing/plumbers/pill_press.dm b/code/modules/plumbing/plumbers/pill_press.dm deleted file mode 100644 index 59a234746f56..000000000000 --- a/code/modules/plumbing/plumbers/pill_press.dm +++ /dev/null @@ -1,167 +0,0 @@ -///We take a constant input of reagents, and produce a pill once a set volume is reached -/obj/machinery/plumbing/pill_press - name = "chemical press" - desc = "A press that makes pills, patches and bottles." - icon_state = "pill_press" - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - ///maximum size of a pill - var/max_pill_volume = 50 - ///maximum size of a patch - var/max_patch_volume = 40 - ///maximum size of a bottle - var/max_bottle_volume = 30 - ///current operating product (pills or patches) - var/product = "pill" - //PARIAH EDIT ADDITION - maximum size of a vial - var/max_vial_volume = 60 - //PARIAH EDIT END - ///the minimum size a pill or patch can be - var/min_volume = 5 - ///the maximum size a pill or patch can be - var/max_volume = 50 - ///selected size of the product - var/current_volume = 10 - ///prefix for the product name - var/product_name = "factory" - ///the icon_state number for the pill. - var/pill_number = RANDOM_PILL_STYLE - ///list of id's and icons for the pill selection of the ui - var/list/pill_styles - /// Currently selected patch style - var/patch_style = DEFAULT_PATCH_STYLE - /// List of available patch styles for UI - var/list/patch_styles - ///list of products stored in the machine, so we dont have 610 pills on one tile - var/list/stored_products = list() - ///max amount of pills allowed on our tile before we start storing them instead - var/max_floor_products = 10 - -/obj/machinery/plumbing/pill_press/examine(mob/user) - . = ..() - . += span_notice("The [name] currently has [stored_products.len] stored. There needs to be less than [max_floor_products] on the floor to continue dispensing.") - -/obj/machinery/plumbing/pill_press/Initialize(mapload, bolt, layer) - . = ..() - - AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) - -/obj/machinery/plumbing/pill_press/process(delta_time) - if(machine_stat & NOPOWER) - return - if(reagents.total_volume >= current_volume) - if (product == "pill") - var/obj/item/reagent_containers/pill/P = new(src) - reagents.trans_to(P, current_volume) - P.name = trim("[product_name] pill") - stored_products += P - if(pill_number == RANDOM_PILL_STYLE) - P.icon_state = "pill[rand(1,21)]" - else - P.icon_state = "pill[pill_number]" - if(P.icon_state == "pill4") //mirrored from chem masters - P.desc = "A tablet or capsule, but not just any, a red one, one taken by the ones not scared of knowledge, freedom, uncertainty and the brutal truths of reality." - else if (product == "patch") - var/obj/item/reagent_containers/pill/patch/P = new(src) - reagents.trans_to(P, current_volume) - P.name = trim("[product_name] patch") - P.icon_state = patch_style - stored_products += P - else if (product == "bottle") - var/obj/item/reagent_containers/glass/bottle/P = new(src) - reagents.trans_to(P, current_volume) - P.name = trim("[product_name] bottle") - stored_products += P - //PARIAH EDIT ADDITION - else if (product == "vial") - var/obj/item/reagent_containers/glass/vial/small/P = new(src) - reagents.trans_to(P, current_volume) - P.name = trim("[product_name] vial") - stored_products += P - //PARIAH EDIT END - if(stored_products.len) - var/pill_amount = 0 - for(var/thing in loc) - if(!istype(thing, /obj/item/reagent_containers/glass/bottle) && !istype(thing, /obj/item/reagent_containers/pill)) - continue - pill_amount++ - if(pill_amount >= max_floor_products) //too much so just stop - break - if(pill_amount < max_floor_products && anchored) - var/atom/movable/AM = stored_products[1] //AM because forceMove is all we need - stored_products -= AM - AM.forceMove(drop_location()) - - use_power(active_power_usage * delta_time) - -/obj/machinery/plumbing/pill_press/proc/load_styles() - //expertly copypasted from chemmasters - var/datum/asset/spritesheet/simple/assets = get_asset_datum(/datum/asset/spritesheet/simple/pills) - pill_styles = list() - for (var/x in 1 to PILL_STYLE_COUNT) - var/list/SL = list() - SL["id"] = x - SL["class_name"] = assets.icon_class_name("pill[x]") - pill_styles += list(SL) - var/datum/asset/spritesheet/simple/patches_assets = get_asset_datum(/datum/asset/spritesheet/simple/patches) - patch_styles = list() - for (var/raw_patch_style in PATCH_STYLE_LIST) - //adding class_name for use in UI - var/list/patch_style = list() - patch_style["style"] = raw_patch_style - patch_style["class_name"] = patches_assets.icon_class_name(raw_patch_style) - patch_styles += list(patch_style) - -/obj/machinery/plumbing/pill_press/ui_assets(mob/user) - return list( - get_asset_datum(/datum/asset/spritesheet/simple/pills), - get_asset_datum(/datum/asset/spritesheet/simple/patches), - ) - -/obj/machinery/plumbing/pill_press/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "ChemPress", name) - ui.open() - -/obj/machinery/plumbing/pill_press/ui_data(mob/user) - if(!pill_styles || !patch_styles) - load_styles() - var/list/data = list() - data["pill_style"] = pill_number - data["current_volume"] = current_volume - data["product_name"] = product_name - data["pill_styles"] = pill_styles - data["product"] = product - data["min_volume"] = min_volume - data["max_volume"] = max_volume - data["patch_style"] = patch_style - data["patch_styles"] = patch_styles - return data - -/obj/machinery/plumbing/pill_press/ui_act(action, params) - . = ..() - if(.) - return - . = TRUE - switch(action) - if("change_pill_style") - pill_number = clamp(text2num(params["id"]), 1 , PILL_STYLE_COUNT) - if("change_current_volume") - current_volume = clamp(text2num(params["volume"]), min_volume, max_volume) - if("change_product_name") - product_name = html_encode(params["name"]) - if("change_product") - product = params["product"] - if (product == "pill") - max_volume = max_pill_volume - else if (product == "patch") - max_volume = max_patch_volume - else if (product == "bottle") - max_volume = max_bottle_volume - //PARIAH EDIT ADDITION - else if (product == "vial") - max_volume = max_vial_volume - //PARIAH EDIT END - current_volume = clamp(current_volume, min_volume, max_volume) - if("change_patch_style") - patch_style = params["patch_style"] diff --git a/code/modules/plumbing/plumbers/plumbing_buffer.dm b/code/modules/plumbing/plumbers/plumbing_buffer.dm deleted file mode 100644 index 98616d8894dd..000000000000 --- a/code/modules/plumbing/plumbers/plumbing_buffer.dm +++ /dev/null @@ -1,128 +0,0 @@ -#define UNREADY 0 -#define IDLE 1 -#define READY 2 - -/obj/machinery/plumbing/buffer - name = "automatic buffer" - desc = "A chemical holding tank that waits for neighbouring automatic buffers to complete before allowing a withdrawal. Connect/reset by screwdrivering" - icon_state = "buffer" - pass_flags_self = PASSMACHINE | LETPASSTHROW // It looks short enough. - buffer = 200 - - var/datum/buffer_net/buffer_net - var/activation_volume = 100 - var/mode - -/obj/machinery/plumbing/buffer/Initialize(mapload, bolt, layer) - . = ..() - - AddComponent(/datum/component/plumbing/buffer, bolt, layer) - -/obj/machinery/plumbing/buffer/create_reagents(max_vol, flags) - . = ..() - RegisterSignal(reagents, list(COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_REM_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_CLEAR_REAGENTS, COMSIG_REAGENTS_REACTED), PROC_REF(on_reagent_change)) - RegisterSignal(reagents, COMSIG_PARENT_QDELETING, PROC_REF(on_reagents_del)) - -/// Handles properly detaching signal hooks. -/obj/machinery/plumbing/buffer/proc/on_reagents_del(datum/reagents/reagents) - SIGNAL_HANDLER - UnregisterSignal(reagents, list(COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_REM_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_CLEAR_REAGENTS, COMSIG_REAGENTS_REACTED, COMSIG_PARENT_QDELETING)) - return NONE - -/obj/machinery/plumbing/buffer/proc/on_reagent_change() - SIGNAL_HANDLER - if(!buffer_net) - return - if(reagents.total_volume + CHEMICAL_QUANTISATION_LEVEL >= activation_volume && mode == UNREADY) - mode = IDLE - buffer_net.check_active() - - else if(reagents.total_volume + CHEMICAL_QUANTISATION_LEVEL < activation_volume && mode != UNREADY) - mode = UNREADY - buffer_net.check_active() - -/obj/machinery/plumbing/buffer/update_icon() - . = ..() - icon_state = initial(icon_state) - if(buffer_net) - switch(mode) - if(UNREADY) - icon_state += "_red" - if(IDLE) - icon_state += "_yellow" - if(READY) - icon_state += "_green" - -/obj/machinery/plumbing/buffer/proc/attempt_connect() - - for(var/direction in GLOB.cardinals) - var/turf/T = get_step(src, direction) - for(var/atom/movable/movable in T) - if(istype(movable, /obj/machinery/plumbing/buffer)) - var/obj/machinery/plumbing/buffer/neighbour = movable - if(neighbour.buffer_net != buffer_net) - neighbour.buffer_net?.destruct() - //we could put this on a proc, but its so simple I dont think its worth the overhead - buffer_net.buffer_list += neighbour - neighbour.buffer_net = buffer_net - neighbour.attempt_connect() //technically this would runtime if you made about 200~ buffers - - add_overlay(icon_state + "_alert") - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, cut_overlay), icon_state + "_alert"), 20) - -/obj/machinery/plumbing/buffer/attack_hand_secondary(mob/user, modifiers) - . = ..() - if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) - return - - . = SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - - var/new_volume = tgui_input_number(user, "Enter new activation threshold", "Beepityboop", activation_volume, buffer) - if(!new_volume || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) - return - activation_volume = new_volume - to_chat(user, span_notice("New activation threshold is now [activation_volume].")) - return - -/obj/machinery/plumbing/buffer/attackby(obj/item/item, mob/user, params) - if(item.tool_behaviour == TOOL_SCREWDRIVER) - to_chat(user, span_notice("You reset the automatic buffer.")) - - //reset the net - buffer_net?.destruct() - buffer_net = new() - LAZYADD(buffer_net.buffer_list, src) - - attempt_connect() - else - return . = ..() - -/obj/machinery/plumbing/buffer/doMove(destination) - . = ..() - buffer_net?.destruct() - -/datum/buffer_net - var/list/obj/machinery/plumbing/buffer/buffer_list - -/datum/buffer_net/proc/destruct() - for(var/obj/machinery/plumbing/buffer/buffer in buffer_list) - buffer.buffer_net = null - buffer_list.Cut() - qdel(src) - -/datum/buffer_net/proc/check_active() - var/ready = TRUE - for(var/obj/machinery/plumbing/buffer/buffer in buffer_list) - if(buffer.mode == UNREADY) - ready = FALSE - break - for(var/obj/machinery/plumbing/buffer/buffer in buffer_list) - if(buffer.mode == READY && !ready) - buffer.mode = IDLE - else if(buffer.mode == IDLE && ready) - buffer.mode = READY - buffer.update_icon() - -#undef UNREADY -#undef IDLE -#undef READY diff --git a/code/modules/plumbing/plumbers/pumps.dm b/code/modules/plumbing/plumbers/pumps.dm deleted file mode 100644 index c10cacbc7ec5..000000000000 --- a/code/modules/plumbing/plumbers/pumps.dm +++ /dev/null @@ -1,60 +0,0 @@ -///We pump liquids from activated(plungerated) geysers to a plumbing outlet. We need to be wired. -/obj/machinery/plumbing/liquid_pump - name = "liquid pump" - desc = "Pump up those sweet liquids from under the surface. Uses thermal energy from geysers to power itself." //better than placing 200 cables, because it wasn't fun - icon = 'icons/obj/plumbing/plumbers.dmi' - icon_state = "pump" - base_icon_state = "pump" - anchored = FALSE - density = TRUE - use_power = NO_POWER_USE - - ///units we pump per second - var/pump_power = 1 - ///set to true if the loop couldnt find a geyser in process, so it remembers and stops checking every loop until moved. more accurate name would be absolutely_no_geyser_under_me_so_dont_try - var/geyserless = FALSE - ///The geyser object - var/obj/structure/geyser/geyser - ///volume of our internal buffer - var/volume = 200 - -/obj/machinery/plumbing/liquid_pump/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_supply, bolt, layer) - -///please note that the component has a hook in the parent call, wich handles activating and deactivating -/obj/machinery/plumbing/liquid_pump/default_unfasten_wrench(mob/user, obj/item/I, time = 20) - . = ..() - if(. == SUCCESSFUL_UNFASTEN) - geyser = null - update_appearance() - geyserless = FALSE //we switched state, so lets just set this back aswell - -/obj/machinery/plumbing/liquid_pump/process(delta_time) - if(!anchored || panel_open || geyserless) - return - - if(!geyser) - for(var/obj/structure/geyser/G in loc.contents) - geyser = G - update_appearance() - if(!geyser) //we didnt find one, abort - geyserless = TRUE - visible_message(span_warning("The [name] makes a sad beep!")) - playsound(src, 'sound/machines/buzz-sigh.ogg', 50) - return - - pump(delta_time) - -///pump up that sweet geyser nectar -/obj/machinery/plumbing/liquid_pump/proc/pump(delta_time) - if(!geyser || !geyser.reagents) - return - geyser.reagents.trans_to(src, pump_power * delta_time) - -/obj/machinery/plumbing/liquid_pump/update_icon_state() - if(geyser) - icon_state = "[base_icon_state]-on" - return ..() - icon_state = "[base_icon_state][panel_open ? "-open" : null]" - return ..() diff --git a/code/modules/plumbing/plumbers/reaction_chamber.dm b/code/modules/plumbing/plumbers/reaction_chamber.dm deleted file mode 100644 index 041e74616d57..000000000000 --- a/code/modules/plumbing/plumbers/reaction_chamber.dm +++ /dev/null @@ -1,138 +0,0 @@ -///a reaction chamber for plumbing. pretty much everything can react, but this one keeps the reagents separated and only reacts under your given terms -/obj/machinery/plumbing/reaction_chamber - name = "reaction chamber" - desc = "Keeps chemicals separated until given conditions are met." - icon_state = "reaction_chamber" - buffer = 200 - reagent_flags = TRANSPARENT | NO_REACT - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - /** - * list of set reagents that the reaction_chamber allows in, and must all be present before mixing is enabled. - * example: list(/datum/reagent/water = 20, /datum/reagent/fuel/oil = 50) - */ - var/list/required_reagents = list() - ///If above this pH, we start dumping buffer into it - var/acidic_limit = 9 - ///If below this pH, we start dumping buffer into it - var/alkaline_limit = 5 - ///our reagent goal has been reached, so now we lock our inputs and start emptying - var/emptying = FALSE - - ///towards which temperature do we build (except during draining)? - var/target_temperature = 300 - ///cool/heat power - var/heater_coefficient = 0.05 //same lvl as acclimator - ///Beaker that holds the acidic buffer. I don't want to deal with snowflaking so it's just a separate thing. It's a small (50u) beaker - var/obj/item/reagent_containers/glass/beaker/acidic_beaker - ///beaker that holds the alkaline buffer. - var/obj/item/reagent_containers/glass/beaker/alkaline_beaker - -/obj/machinery/plumbing/reaction_chamber/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/reaction_chamber, bolt, layer) - - acidic_beaker = new (src) - alkaline_beaker = new (src) - - AddComponent(/datum/component/plumbing/acidic_input, bolt, custom_receiver = acidic_beaker) - AddComponent(/datum/component/plumbing/alkaline_input, bolt, custom_receiver = alkaline_beaker) - -/// Make sure beakers are deleted when being deconstructed -/obj/machinery/plumbing/reaction_chamber/Destroy() - QDEL_NULL(acidic_beaker) - QDEL_NULL(alkaline_beaker) - . = ..() - -/obj/machinery/plumbing/reaction_chamber/create_reagents(max_vol, flags) - . = ..() - RegisterSignal(reagents, list(COMSIG_REAGENTS_REM_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_CLEAR_REAGENTS, COMSIG_REAGENTS_REACTED), PROC_REF(on_reagent_change)) - RegisterSignal(reagents, COMSIG_PARENT_QDELETING, PROC_REF(on_reagents_del)) - -/// Handles properly detaching signal hooks. -/obj/machinery/plumbing/reaction_chamber/proc/on_reagents_del(datum/reagents/reagents) - SIGNAL_HANDLER - UnregisterSignal(reagents, list(COMSIG_REAGENTS_REM_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_CLEAR_REAGENTS, COMSIG_REAGENTS_REACTED, COMSIG_PARENT_QDELETING)) - return NONE - - -/// Handles stopping the emptying process when the chamber empties. -/obj/machinery/plumbing/reaction_chamber/proc/on_reagent_change(datum/reagents/holder, ...) - SIGNAL_HANDLER - if(holder.total_volume == 0 && emptying) //we were emptying, but now we aren't - emptying = FALSE - holder.flags |= NO_REACT - return NONE - -/obj/machinery/plumbing/reaction_chamber/process(delta_time) - if(reagents.is_reacting && reagents.ph < alkaline_limit) - alkaline_beaker.reagents.trans_to(reagents, 1 * delta_time) - if(reagents.is_reacting && reagents.ph > acidic_limit) - acidic_beaker.reagents.trans_to(reagents, 1 * delta_time) - - if(!emptying || reagents.is_reacting) //suspend heating/cooling during emptying phase - reagents.adjust_thermal_energy((target_temperature - reagents.chem_temp) * heater_coefficient * delta_time * SPECIFIC_HEAT_DEFAULT * reagents.total_volume) //keep constant with chem heater - reagents.handle_reactions() - - use_power(active_power_usage * delta_time) - -/obj/machinery/plumbing/reaction_chamber/power_change() - . = ..() - if(use_power != NO_POWER_USE) - icon_state = initial(icon_state) + "_on" - else - icon_state = initial(icon_state) - -/obj/machinery/plumbing/reaction_chamber/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "ChemReactionChamber", name) - ui.open() - -/obj/machinery/plumbing/reaction_chamber/ui_data(mob/user) - var/list/data = list() - - var/list/reagents_data = list() - for(var/datum/reagent/required_reagent as anything in required_reagents) //make a list where the key is text, because that looks alot better in the ui than a typepath - var/list/reagent_data = list() - reagent_data["name"] = initial(required_reagent.name) - reagent_data["required_reagent"] = required_reagents[required_reagent] - reagents_data += list(reagent_data) - - data["reagents"] = reagents_data - data["emptying"] = emptying - data["temperature"] = round(reagents.chem_temp, 0.1) - data["ph"] = round(reagents.ph, 0.01) - data["targetTemp"] = target_temperature - data["isReacting"] = reagents.is_reacting - data["reagentAcidic"] = acidic_limit - data["reagentAlkaline"] = alkaline_limit - return data - -/obj/machinery/plumbing/reaction_chamber/ui_act(action, params) - . = ..() - if(.) - return - . = TRUE - switch(action) - if("remove") - var/reagent = get_chem_id(params["chem"]) - if(reagent) - required_reagents.Remove(reagent) - if("add") - var/input_reagent = get_chem_id(params["chem"]) - if(input_reagent && !required_reagents.Find(input_reagent)) - var/input_amount = text2num(params["amount"]) - if(input_amount) - required_reagents[input_reagent] = input_amount - if("temperature") - var/target = params["target"] - if(text2num(target) != null) - target = text2num(target) - . = TRUE - if(.) - target_temperature = clamp(target, 0, 1000) - if("acidic") - acidic_limit = round(text2num(params["target"])) - if("alkaline") - alkaline_limit = round(text2num(params["target"])) - diff --git a/code/modules/plumbing/plumbers/splitters.dm b/code/modules/plumbing/plumbers/splitters.dm deleted file mode 100644 index e18a3a49b055..000000000000 --- a/code/modules/plumbing/plumbers/splitters.dm +++ /dev/null @@ -1,51 +0,0 @@ -///it splits the reagents however you want. So you can "every 60 units, 45 goes left and 15 goes straight". The side direction is EAST, you can change this in the component -/obj/machinery/plumbing/splitter - name = "Chemical Splitter" - desc = "A chemical splitter for smart chemical factorization. Waits till a set of conditions is met and then stops all input and splits the buffer evenly or other in two ducts." - icon_state = "splitter" - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - buffer = 100 - density = FALSE - - ///constantly switches between TRUE and FALSE. TRUE means the batch tick goes straight, FALSE means the next batch goes in the side duct. - var/turn_straight = TRUE - ///how much we must transfer straight. note input can be as high as 10 reagents per process, usually - var/transfer_straight = 5 - ///how much we must transfer to the side - var/transfer_side = 5 - //the maximum you can set the transfer to - var/max_transfer = 9 - -/obj/machinery/plumbing/splitter/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/splitter, bolt, layer) - -/obj/machinery/plumbing/splitter/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "ChemSplitter", name) - ui.open() - -/obj/machinery/plumbing/splitter/ui_data(mob/user) - var/list/data = list() - data["straight"] = transfer_straight - data["side"] = transfer_side - data["max_transfer"] = max_transfer - return data - -/obj/machinery/plumbing/splitter/ui_act(action, params) - . = ..() - if(.) - return - . = TRUE - switch(action) - if("set_amount") - var/direction = params["target"] - var/value = clamp(text2num(params["amount"]), 1, max_transfer) - switch(direction) - if("straight") - transfer_straight = value - if("side") - transfer_side = value - else - return FALSE diff --git a/code/modules/plumbing/plumbers/synthesizer.dm b/code/modules/plumbing/plumbers/synthesizer.dm deleted file mode 100644 index 7e2728f3f64b..000000000000 --- a/code/modules/plumbing/plumbers/synthesizer.dm +++ /dev/null @@ -1,105 +0,0 @@ -///A single machine that produces a single chem. Can be placed in unison with others through plumbing to create chemical factories -/obj/machinery/plumbing/synthesizer - name = "chemical synthesizer" - desc = "Produces a single chemical at a given volume. Must be plumbed. Most effective when working in unison with other chemical synthesizers, heaters and filters." - - icon_state = "synthesizer" - icon = 'icons/obj/plumbing/plumbers.dmi' - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - ///Amount we produce for every process. Ideally keep under 5 since thats currently the standard duct capacity - var/amount = 1 - ///I track them here because I have no idea how I'd make tgui loop like that - var/static/list/possible_amounts = list(0,1,2,3,4,5) - ///The reagent we are producing. We are a typepath, but are also typecast because there's several occations where we need to use initial. - var/datum/reagent/reagent_id = null - ///straight up copied from chem dispenser. Being a subtype would be extremely tedious and making it global would restrict potential subtypes using different dispensable_reagents - var/list/dispensable_reagents = list( - /datum/reagent/aluminium, - /datum/reagent/bromine, - /datum/reagent/carbon, - /datum/reagent/chlorine, - /datum/reagent/copper, - /datum/reagent/consumable/ethanol, - /datum/reagent/fluorine, - /datum/reagent/hydrogen, - /datum/reagent/iodine, - /datum/reagent/iron, - /datum/reagent/lithium, - /datum/reagent/mercury, - /datum/reagent/nitrogen, - /datum/reagent/oxygen, - /datum/reagent/phosphorus, - /datum/reagent/potassium, - /datum/reagent/uranium/radium, - /datum/reagent/silicon, - /datum/reagent/sodium, - /datum/reagent/stable_plasma, - /datum/reagent/consumable/sugar, - /datum/reagent/sulfur, - /datum/reagent/toxin/acid, - /datum/reagent/water, - /datum/reagent/fuel, - ) - -/obj/machinery/plumbing/synthesizer/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_supply, bolt, layer) - -/obj/machinery/plumbing/synthesizer/process(delta_time) - if(machine_stat & NOPOWER || !reagent_id || !amount) - return - if(reagents.total_volume >= amount*delta_time*0.5) //otherwise we get leftovers, and we need this to be precise - return - reagents.add_reagent(reagent_id, amount*delta_time*0.5) - use_power(active_power_usage * amount * delta_time * 0.5) - -/obj/machinery/plumbing/synthesizer/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "ChemSynthesizer", name) - ui.open() - -/obj/machinery/plumbing/synthesizer/ui_data(mob/user) - var/list/data = list() - - var/is_hallucinating = user.hallucinating() - var/list/chemicals = list() - - for(var/A in dispensable_reagents) - var/datum/reagent/R = GLOB.chemical_reagents_list[A] - if(R) - var/chemname = R.name - if(is_hallucinating && prob(5)) - chemname = "[pick_list_replacements("hallucination.json", "chemicals")]" - chemicals.Add(list(list("title" = chemname, "id" = ckey(R.name)))) - data["chemicals"] = chemicals - data["amount"] = amount - data["possible_amounts"] = possible_amounts - - data["current_reagent"] = ckey(initial(reagent_id.name)) - return data - -/obj/machinery/plumbing/synthesizer/ui_act(action, params) - . = ..() - if(.) - return - . = TRUE - switch(action) - if("amount") - var/new_amount = text2num(params["target"]) - if(new_amount in possible_amounts) - amount = new_amount - . = TRUE - if("select") - var/new_reagent = GLOB.name2reagent[params["reagent"]] - if(new_reagent in dispensable_reagents) - reagent_id = new_reagent - . = TRUE - update_appearance() - reagents.clear_reagents() - -/obj/machinery/plumbing/synthesizer/update_overlays() - . = ..() - var/mutable_appearance/r_overlay = mutable_appearance(icon, "[icon_state]_overlay") - r_overlay.color = reagent_id ? initial(reagent_id.color) : "#FFFFFF" - . += r_overlay diff --git a/code/modules/plumbing/plumbers/teleporter.dm b/code/modules/plumbing/plumbers/teleporter.dm deleted file mode 100644 index 5956bf95436b..000000000000 --- a/code/modules/plumbing/plumbers/teleporter.dm +++ /dev/null @@ -1,128 +0,0 @@ -///A bluespace input pipe for plumbing -/obj/machinery/plumbing/sender - name = "chemical beacon" - desc = "A bluespace anchor for chemicals. Does not require power. Use a multitool linked to a Chemical Recipient on this machine to start teleporting reagents." - icon_state = "beacon" - - density = FALSE - - ///whoever we teleport our chems to - var/obj/machinery/plumbing/receiver/target = null - -/obj/machinery/plumbing/sender/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) - -/obj/machinery/plumbing/sender/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) - return - - var/obj/item/multitool/M = I - - if(!istype(M.buffer, /obj/machinery/plumbing/receiver)) - to_chat(user, span_warning("Invalid buffer.")) - return - - if(target) - lose_teleport_target() - - set_teleport_target(M.buffer) - - to_chat(user, span_green("You succesfully link [src] to the [M.buffer].")) - return TRUE - -///Lose our previous target and make our previous target lose us. Seperate proc because I feel like I'll need this again -/obj/machinery/plumbing/sender/proc/lose_teleport_target() - target.senders.Remove(src) - target = null - icon_state = initial(icon_state) - -///Set a receiving plumbing object -/obj/machinery/plumbing/sender/proc/set_teleport_target(new_target) - target = new_target - target.senders.Add(src) - icon_state = initial(icon_state) + "_idle" - -///Transfer reagents and display a flashing icon -/obj/machinery/plumbing/sender/proc/teleport_chemicals(obj/machinery/plumbing/receiver/R, amount) - flick(initial(icon_state) + "_flash", src) - reagents.trans_to(R, amount, round_robin = TRUE) - -///A bluespace output pipe for plumbing. Supports multiple recipients. Must be constructed with a circuit board -/obj/machinery/plumbing/receiver - name = "chemical recipient" - desc = "Receives chemicals from one or more chemical beacons. Use a multitool on this machine and then all subsequent chemical beacons. Reset by opening the \ - panel and cutting the main wire." - icon_state = "recipient" - - buffer = 150 - - ///How much chemicals we can teleport per process - var/pull_amount = 20 - ///All synced up chemical beacons we can tap from - var/list/senders = list() - ///We only grab one machine per process, so store which one is next - var/next_index = 1 - -/obj/machinery/plumbing/receiver/Initialize(mapload, bolt) - . = ..() - AddComponent(/datum/component/plumbing/simple_supply, bolt) - -/obj/machinery/plumbing/receiver/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) - return - - var/obj/item/multitool/M = I - M.buffer = src - to_chat(user, span_notice("You store linkage information in [I]'s buffer.")) - return TRUE - -/obj/machinery/plumbing/receiver/process(delta_time) - if(machine_stat & NOPOWER || panel_open) - return - - if(senders.len) - if(senders.len < next_index) - next_index = 1 - - var/obj/machinery/plumbing/sender/S = senders[next_index] - if(QDELETED(S)) - senders.Remove(S) - return - - S.teleport_chemicals(src, pull_amount) - - flick(initial(icon_state) + "_flash", src) - - next_index++ - - use_power(active_power_usage * delta_time) - -///Notify all senders to forget us -/obj/machinery/plumbing/receiver/proc/lose_senders() - for(var/A in senders) - var/obj/machinery/plumbing/sender/S = A - if(S == null) - continue - S.lose_teleport_target() - - senders = list() - -/obj/machinery/plumbing/receiver/attackby(obj/item/I, mob/user, params) - if(default_deconstruction_screwdriver(user, icon_state + "_open", initial(icon_state), I)) - update_appearance() - return - - if(default_pry_open(I)) - return - - if(default_deconstruction_crowbar(I)) - return - - return ..() - -/obj/machinery/plumbing/receiver/wirecutter_act(mob/living/user, obj/item/I) - . = ..() - - if(panel_open) - lose_senders() diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm index e7a62c7c2dfe..9938b17cc913 100644 --- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm +++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm @@ -34,7 +34,7 @@ /obj/machinery/smoke_machine/Initialize(mapload) . = ..() create_reagents(REAGENTS_BASE_VOLUME) - AddComponent(/datum/component/plumbing/simple_demand) + for(var/obj/item/stock_parts/matter_bin/B in component_parts) reagents.maximum_volume += REAGENTS_BASE_VOLUME * B.rating if(is_operational) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 513569993a46..f55bdb419c60 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -300,9 +300,7 @@ if(lastkey) var/mob/toucher = get_mob_by_key(lastkey) touch_msg = "[ADMIN_LOOKUPFLW(toucher)]" - if(!istype(holder.my_atom, /obj/machinery/plumbing)) //excludes standard plumbing equipment from spamming admins with this shit - message_admins("Reagent explosion reaction occurred at [ADMIN_VERBOSEJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].") - log_game("Reagent explosion reaction occurred at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." ) + log_game("Reagent explosion reaction occurred at [AREACOORD(T)][inside_msg]. Last Fingerprint: [lastkey ? lastkey : "N/A"][touch_msg]." ) var/datum/effect_system/reagents_explosion/e = new() e.set_up(power , T, 0, 0) e.start(holder.my_atom) diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 0a820469dd1e..eda8e319721f 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -68,9 +68,7 @@ if(lastkey) var/mob/toucher = get_mob_by_key(lastkey) touch_msg = "[ADMIN_LOOKUPFLW(toucher)]" - if(!istype(holder.my_atom, /obj/machinery/plumbing)) //excludes standard plumbing equipment from spamming admins with this shit - message_admins("Reagent explosion reaction occurred at [ADMIN_VERBOSEJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].") - log_game("Reagent explosion reaction occurred at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." ) + log_game("Reagent explosion reaction occurred at [AREACOORD(T)][inside_msg]. Last Fingerprint: [lastkey ? lastkey : "N/A"][touch_msg]." ) var/datum/effect_system/reagents_explosion/e = new() e.set_up(power, T, 0, 0) e.start(holder.my_atom) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 5e6f04a94bcb..fee25da37c35 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -856,9 +856,6 @@ /datum/chemical_reaction/eigenstate/reaction_finish(datum/reagents/holder, datum/equilibrium/reaction, react_vol) . = ..() var/turf/open/location = get_turf(holder.my_atom) - if(reaction.data["ducts_teleported"] == TRUE) //If we teleported an duct, then we reconnect it at the end - for(var/obj/item/stack/ducts/duct in range(location, 3)) - duct.check_attach_turf(duct.loc) var/datum/reagent/eigenstate/eigen = holder.has_reagent(/datum/reagent/eigenstate) if(!eigen) @@ -893,9 +890,6 @@ do_sparks(3,FALSE,location) holder.chem_temp += 10 playsound(location, 'sound/effects/phasein.ogg', 80, TRUE) - for(var/obj/machinery/duct/duct in range(location, 3)) - do_teleport(duct, location, 3, no_effects=TRUE) - equilibrium.data["ducts_teleported"] = TRUE //If we teleported a duct - call the process in var/lets_not_go_crazy = 15 //Teleport 15 items at max var/list/items = list() for(var/obj/item/item in range(location, 3)) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 0bc8bc897a03..1f62816f6a1c 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -11,22 +11,12 @@ var/tank_volume = 1000 ///The ID of the reagent that the dispenser uses var/reagent_id = /datum/reagent/water - ///Can you turn this into a plumbing tank? - var/can_be_tanked = TRUE - ///Is this source self-replenishing? - var/refilling = FALSE /obj/structure/reagent_dispensers/Initialize(mapload) . = ..() - if(icon_state == "water" && SSevents.holidays?[APRIL_FOOLS]) icon_state = "water_fools" -/obj/structure/reagent_dispensers/examine(mob/user) - . = ..() - if(can_be_tanked) - . += span_notice("Use a sheet of iron to convert this into a plumbing-compatible tank.") - /obj/structure/reagent_dispensers/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() if(. && atom_integrity > 0) @@ -36,17 +26,6 @@ /obj/structure/reagent_dispensers/attackby(obj/item/W, mob/user, params) if(W.is_refillable()) return FALSE //so we can refill them via their afterattack. - if(istype(W, /obj/item/stack/sheet/iron) && can_be_tanked) - var/obj/item/stack/sheet/iron/metal_stack = W - metal_stack.use(1) - var/obj/structure/reagent_dispensers/plumbed/storage/new_tank = new /obj/structure/reagent_dispensers/plumbed/storage(drop_location()) - new_tank.reagents.maximum_volume = reagents.maximum_volume - reagents.trans_to(new_tank, reagents.total_volume) - new_tank.name = "stationary [name]" - new_tank.update_appearance(UPDATE_OVERLAYS) - new_tank.set_anchored(anchored) - qdel(src) - return FALSE else return ..() @@ -154,11 +133,10 @@ explosion(src, devastation_range = 1, heavy_impact_range = 2, light_impact_range = 7, flame_range = 12) qdel(src) -/// Wall mounted dispeners, like pepper spray or virus food. Not a normal tank, and shouldn't be able to be turned into a plumbed stationary one. +/// Wall mounted dispeners, like pepper spray or virus food. Not a normal tank. /obj/structure/reagent_dispensers/wall anchored = TRUE density = FALSE - can_be_tanked = FALSE /obj/structure/reagent_dispensers/wall/peppertank name = "pepper spray refiller" @@ -236,49 +214,3 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/virusfood, 30 icon_state = "serving" anchored = TRUE reagent_id = /datum/reagent/consumable/nutraslop - -/obj/structure/reagent_dispensers/plumbed - name = "stationary water tank" - anchored = TRUE - icon_state = "water_stationary" - desc = "A stationary, plumbed, water tank." - can_be_tanked = FALSE - -/obj/structure/reagent_dispensers/plumbed/Initialize(mapload) - . = ..() - AddComponent(/datum/component/plumbing/simple_supply) - -/obj/structure/reagent_dispensers/plumbed/wrench_act(mob/living/user, obj/item/tool) - . = ..() - default_unfasten_wrench(user, tool) - return TOOL_ACT_TOOLTYPE_SUCCESS - -/obj/structure/reagent_dispensers/plumbed/storage - name = "stationary storage tank" - icon_state = "tank_stationary" - reagent_id = null //start empty - -/obj/structure/reagent_dispensers/plumbed/storage/Initialize(mapload) - . = ..() - AddComponent(/datum/component/simple_rotation) - -/obj/structure/reagent_dispensers/plumbed/storage/AltClick(mob/user) - return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation - -/obj/structure/reagent_dispensers/plumbed/storage/update_overlays() - . = ..() - if(!reagents) - return - - if(!reagents.total_volume) - return - - var/mutable_appearance/tank_color = mutable_appearance('icons/obj/chemical_tanks.dmi', "tank_chem_overlay") - tank_color.color = mix_color_from_reagents(reagents.reagent_list) - . += tank_color - -/obj/structure/reagent_dispensers/plumbed/fuel - name = "stationary fuel tank" - icon_state = "fuel_stationary" - desc = "A stationary, plumbed, fuel tank." - reagent_id = /datum/reagent/fuel diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 62e35eac5b11..d0eca62a93b6 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -1005,24 +1005,6 @@ maxstack = 5 mapload_design_flags = DESIGN_FAB_CIV -/datum/design/petridish - name = "Petri Dish" - id = "petri_dish" - build_type = FABRICATOR | AUTOLATHE - materials = list(/datum/material/glass = 500) - build_path = /obj/item/petri_dish - category = list(DCAT_MEDICAL) - mapload_design_flags = DESIGN_FAB_OMNI | DESIGN_FAB_MEDICAL - -/datum/design/swab - name = "Sterile Swab" - id = "swab" - build_type = FABRICATOR | AUTOLATHE - materials = list(/datum/material/plastic = 200) - build_path = /obj/item/swab - category = list(DCAT_MEDICAL) - mapload_design_flags = DESIGN_FAB_OMNI | DESIGN_FAB_MEDICAL - /datum/design/chisel name = "Chisel" id = "chisel" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index b432f8289c02..94630a13b766 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -554,18 +554,9 @@ desc = "The circuit board for a Medipen Refiller." id = "medipen_refiller" build_path = /obj/item/circuitboard/machine/medipen_refiller - category = list (DCAT_CIRCUIT) - mapload_design_flags = DESIGN_FAB_MEDICAL | DESIGN_FAB_OMNI - -/datum/design/board/plumbing_receiver - name = "Machine Board (Chemical Recipient)" - desc = "The circuit board for a Chemical Recipient." - id = "plumbing_receiver" - build_path = /obj/item/circuitboard/machine/plumbing_receiver - category = list (DCAT_CIRCUIT) + category = list(DCAT_CIRCUIT) mapload_design_flags = DESIGN_FAB_MEDICAL | DESIGN_FAB_OMNI - /datum/design/board/sheetifier name = "Machine Board (Sheet-meister 2000)" desc = "The circuit board for a Sheet-meister 2000." diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index 406e3dd02deb..be5c51eaf1f8 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -52,15 +52,6 @@ category = list(DCAT_BOTANICAL) mapload_design_flags = DESIGN_FAB_SERVICE | DESIGN_FAB_OMNI -/datum/design/biopsy_tool - name = "Biopsy Tool" - id = "biopsy_tool" - build_type = FABRICATOR - materials = list(/datum/material/iron = 4000, /datum/material/glass = 3000) - build_path = /obj/item/biopsy_tool - category = list(DCAT_MISC_TOOL) - mapload_design_flags = DESIGN_FAB_OMNI - /datum/design/wirebrush name = "Wirebrush" desc = "A tool to remove rust from walls." diff --git a/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm b/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm deleted file mode 100644 index 43d013abd2dd..000000000000 --- a/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm +++ /dev/null @@ -1,18 +0,0 @@ -///Tool capable of taking biological samples from mobs -/obj/item/biopsy_tool - name = "biopsy tool" - desc = "Don't worry, it won't sting." - icon = 'icons/obj/xenobiology/vatgrowing.dmi' - icon_state = "biopsy" - -///Adds the swabbing component to the biopsy tool -/obj/item/biopsy_tool/Initialize(mapload) - . = ..() - AddComponent(/datum/component/swabbing, FALSE, FALSE, TRUE, CALLBACK(src, PROC_REF(update_swab_icon)), max_items = 1) - - -/obj/item/biopsy_tool/proc/update_swab_icon(list/swabbed_items) - if(LAZYLEN(swabbed_items)) - icon_state = "biopsy_full" - else - icon_state = "biopsy" diff --git a/code/modules/research/xenobiology/vatgrowing/microscope.dm b/code/modules/research/xenobiology/vatgrowing/microscope.dm deleted file mode 100644 index 9fd4c58bc088..000000000000 --- a/code/modules/research/xenobiology/vatgrowing/microscope.dm +++ /dev/null @@ -1,81 +0,0 @@ -/obj/structure/microscope - name = "Microscope" - desc = "A simple microscope, allowing you to examine micro-organisms." - icon = 'icons/obj/xenobiology/vatgrowing.dmi' - icon_state = "microscope" - var/obj/item/petri_dish/current_dish - -/obj/structure/microscope/attacked_by(obj/item/I, mob/living/user) - if(!istype(I, /obj/item/petri_dish)) - return ..() - if(current_dish) - to_chat(user, span_warning("There is already a petridish in \the [src].")) - return - to_chat(user, span_notice("You put [I] into \the [src].")) - current_dish = I - current_dish.forceMove(src) - -/obj/structure/microscope/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "Microscope", name) - ui.open() - -/obj/structure/microscope/ui_data(mob/user) - var/list/data = list() - - data["has_dish"] = current_dish ? TRUE : FALSE - data["cell_lines"] = list() - data["viruses"] = list() - - if(!current_dish) - return data - if(!current_dish.sample) - return data - - for(var/organism in current_dish.sample.micro_organisms) //All the microorganisms in the dish - if(istype(organism, /datum/micro_organism/cell_line)) - var/datum/micro_organism/cell_line/cell_line = organism - var/list/organism_data = list( - type = "cell line", - name = cell_line.name, - desc = cell_line.desc, - growth_rate = cell_line.growth_rate, - suspectibility = cell_line.virus_suspectibility, - requireds = get_reagent_list(cell_line.required_reagents), - supplementaries = get_reagent_list(cell_line.supplementary_reagents), - suppressives = get_reagent_list(cell_line.suppressive_reagents) - ) - data["cell_lines"] += list(organism_data) - - if(istype(organism, /datum/micro_organism/virus)) - var/datum/micro_organism/virus/virus = organism - var/list/virus_data = list( - type = "virus", - name = virus.name, - desc = virus.desc - ) - data["viruses"] += list(virus_data) - - return data - -/obj/structure/microscope/proc/get_reagent_list(list/reagents) - var/list/reagent_list = list() - for(var/i in reagents) //Convert from assoc to normal. Yeah very shit. - var/datum/reagent/reagent = i - reagent_list += initial(reagent.name) - return reagent_list.Join(", ") - - -/obj/structure/microscope/ui_act(action, params) - . = ..() - if(.) - return - switch(action) - if("eject_petridish") - if(!current_dish) - return FALSE - current_dish.forceMove(get_turf(src)) - current_dish = null - . = TRUE - update_appearance() diff --git a/code/modules/research/xenobiology/vatgrowing/petri_dish.dm b/code/modules/research/xenobiology/vatgrowing/petri_dish.dm deleted file mode 100644 index 488890052ce7..000000000000 --- a/code/modules/research/xenobiology/vatgrowing/petri_dish.dm +++ /dev/null @@ -1,68 +0,0 @@ -///Holds a biological sample which can then be put into the growing vat -/obj/item/petri_dish - name = "petri dish" - desc = "This makes you feel well-cultured." - icon = 'icons/obj/xenobiology/vatgrowing.dmi' - icon_state = "petri_dish" - w_class = WEIGHT_CLASS_TINY - ///The sample stored on the dish - var/datum/biological_sample/sample - -/obj/item/petri_dish/Destroy() - . = ..() - QDEL_NULL(sample) - -/obj/item/petri_dish/vv_edit_var(vname, vval) - . = ..() - if(vname == NAMEOF(src, sample)) - update_appearance() - -/obj/item/petri_dish/examine(mob/user) - . = ..() - if(!sample) - return - . += span_notice("You can see the following micro-organisms:") - for(var/i in sample.micro_organisms) - var/datum/micro_organism/MO = i - . += MO.get_details() - -/obj/item/petri_dish/pre_attack(atom/A, mob/living/user, params) - . = ..() - if(!sample || !istype(A, /obj/structure/sink)) - return FALSE - to_chat(user, span_notice("You wash the sample out of [src].")) - sample = null - update_appearance() - -/obj/item/petri_dish/update_overlays() - . = ..() - if(!sample) - return - var/reagentcolor = sample.sample_color - var/mutable_appearance/base_overlay = mutable_appearance(icon, "petri_dish_overlay") - base_overlay.appearance_flags = RESET_COLOR - base_overlay.color = reagentcolor - . += base_overlay - var/mutable_appearance/overlay2 = mutable_appearance(icon, "petri_dish_overlay2") - . += overlay2 - -/obj/item/petri_dish/proc/deposit_sample(user, datum/biological_sample/deposited_sample) - sample = deposited_sample - to_chat(user, span_notice("You deposit a sample into [src].")) - update_appearance() - -/// Petri dish with random sample already in it. -/obj/item/petri_dish/random - var/static/list/possible_samples = list( - list(CELL_LINE_TABLE_CORGI, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5), - list(CELL_LINE_TABLE_SNAKE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5), - list(CELL_LINE_TABLE_COCKROACH, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 7), - list(CELL_LINE_TABLE_BLOBBERNAUT, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - ) - -/obj/item/petri_dish/random/Initialize(mapload) - . = ..() - var/list/chosen = pick(possible_samples) - sample = new - sample.GenerateSample(chosen[1],chosen[2],chosen[3],chosen[4]) - update_appearance() diff --git a/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm b/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm deleted file mode 100644 index b3d2b45f5663..000000000000 --- a/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm +++ /dev/null @@ -1,126 +0,0 @@ -///A single type of growth. -/datum/micro_organism - ///Name, shown on microscope - var/name = "Unknown fluids" - ///Desc, shown by science goggles - var/desc = "White fluid that tastes like salty coins and milk" - -///Returns a short description of the cell line -/datum/micro_organism/proc/get_details(show_details) - return span_notice("[desc]") - -///A "mob" cell. Can grow into a mob in a growing vat. -/datum/micro_organism/cell_line - ///Our growth so far, needs to get up to 100 - var/growth = 0 - ///All the reagent types required for letting this organism grow into whatever it should become - var/list/required_reagents - ///Reagent types that further speed up growth, but aren't needed. Assoc list of reagent datum type || bonus growth per tick - var/list/supplementary_reagents - ///Reagent types that surpress growth. Assoc list of reagent datum type || lost growth per tick - var/list/suppressive_reagents - ///This var modifies how much this micro_organism is affected by viruses. Higher is more slowdown - var/virus_suspectibility = 1 - ///This var defines how much % the organism grows per process(), without modifiers, if you have all required reagents - var/growth_rate = 4 - ///Resulting atoms from growing this cell line. List is assoc atom type || amount - var/list/resulting_atoms = list() - -///Handles growth of the micro_organism. This only runs if the micro organism is in the growing vat. Reagents is the growing vats reagents -/datum/micro_organism/cell_line/proc/handle_growth(obj/machinery/plumbing/growing_vat/vat) - if(!try_eat(vat.reagents)) - return FALSE - growth = max(growth, growth + calculate_growth(vat.reagents, vat.biological_sample)) //Prevent you from having minus growth. - if(growth >= 100) - finish_growing(vat) - return TRUE - -///Tries to consume the required reagents. Can only do this if all of them are available. Reagents is the growing vats reagents -/datum/micro_organism/cell_line/proc/try_eat(datum/reagents/reagents) - for(var/i in required_reagents) - if(!reagents.has_reagent(i)) - return FALSE - for(var/i in required_reagents) //Delete the required reagents if used - reagents.remove_reagent(i, REAGENTS_METABOLISM) - return TRUE - -///Apply modifiers on growth_rate based on supplementary and supressive reagents. Reagents is the growing vats reagents -/datum/micro_organism/cell_line/proc/calculate_growth(datum/reagents/reagents, datum/biological_sample/biological_sample) - . = growth_rate - - //Handle growth based on supplementary reagents here. - for(var/i in supplementary_reagents) - if(!reagents.has_reagent(i, REAGENTS_METABOLISM)) - continue - . += supplementary_reagents[i] - reagents.remove_reagent(i, REAGENTS_METABOLISM) - - //Handle degrowth based on supressive reagents here. - for(var/i in suppressive_reagents) - if(!reagents.has_reagent(i, REAGENTS_METABOLISM)) - continue - . += suppressive_reagents[i] - reagents.remove_reagent(i, REAGENTS_METABOLISM) - - //Handle debuffing growth based on viruses here. - for(var/datum/micro_organism/virus/active_virus in biological_sample.micro_organisms) - if(reagents.has_reagent(/datum/reagent/medicine/spaceacillin, REAGENTS_METABOLISM)) - reagents.remove_reagent(/datum/reagent/medicine/spaceacillin, REAGENTS_METABOLISM) - continue //This virus is stopped, We have antiviral stuff - . -= virus_suspectibility - -///Called once a cell line reaches 100 growth. Then we check if any cell_line is too far so we can perform an epic fail roll -/datum/micro_organism/cell_line/proc/finish_growing(obj/machinery/plumbing/growing_vat/vat) - var/risk = 0 //Penalty for failure, goes up based on how much growth the other cell_lines have - - for(var/datum/micro_organism/cell_line/cell_line in vat.biological_sample.micro_organisms) - if(cell_line == src) //well duh - continue - if(cell_line.growth >= VATGROWING_DANGER_MINIMUM) - risk += cell_line.growth * 0.6 //60% per cell_line potentially. Kryson should probably tweak this - playsound(vat, 'sound/effects/splat.ogg', 50, TRUE) - if(rand(1, 100) < risk) //Fail roll! - fuck_up_growing(vat) - - return FALSE - succeed_growing(vat) - return TRUE - -/datum/micro_organism/cell_line/proc/fuck_up_growing(obj/machinery/plumbing/growing_vat/vat) - vat.visible_message(span_warning("The biological sample in [vat] seems to have dissipated!")) - if(prob(50)) - new /obj/effect/gibspawner/generic(get_turf(vat)) //Spawn some gibs. - if(SEND_SIGNAL(vat.biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED) & SPARE_SAMPLE) - return - QDEL_NULL(vat.biological_sample) - -/datum/micro_organism/cell_line/proc/succeed_growing(obj/machinery/plumbing/growing_vat/vat) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(0, vat.loc) - smoke.start() - for(var/created_thing in resulting_atoms) - for(var/x in 1 to resulting_atoms[created_thing]) - var/atom/thing = new created_thing(get_turf(vat)) - ADD_TRAIT(thing, TRAIT_VATGROWN, "vatgrowing") - vat.visible_message(span_nicegreen("[thing] pops out of [vat]!")) - if(SEND_SIGNAL(vat.biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED) & SPARE_SAMPLE) - return - QDEL_NULL(vat.biological_sample) - -///Overriden to show more info like needs, supplementary and supressive reagents and also growth. -/datum/micro_organism/cell_line/get_details(show_details) - . += "[span_notice("[desc] - growth progress: [growth]%")]\n" - if(show_details) - . += return_reagent_text("It requires:", required_reagents) - . += return_reagent_text("It likes:", supplementary_reagents) - . += return_reagent_text("It hates:", suppressive_reagents) - -///Return a nice list of all the reagents in a specific category with a specific prefix. This needs to be reworked because the formatting sucks ass. -/datum/micro_organism/cell_line/proc/return_reagent_text(prefix_text = "It requires:", list/reagentlist) - if(!reagentlist.len) - return - var/all_reagents_text - for(var/i in reagentlist) - var/datum/reagent/reagent = i - all_reagents_text += " - [initial(reagent.name)]\n" - return span_notice("[prefix_text]\n[all_reagents_text]") diff --git a/code/modules/research/xenobiology/vatgrowing/samples/_sample.dm b/code/modules/research/xenobiology/vatgrowing/samples/_sample.dm deleted file mode 100644 index eda9d2771ebf..000000000000 --- a/code/modules/research/xenobiology/vatgrowing/samples/_sample.dm +++ /dev/null @@ -1,41 +0,0 @@ -///This datum is a simple holder for the micro_organisms in a sample. -/datum/biological_sample - ///List of all micro_organisms in the sample. These are instantiated - var/list/micro_organisms = list() - ///Prevents someone from stacking too many layers onto a swabber - var/sample_layers = 1 - ///Picked from a specific group of colors, limited to a specific group. - var/sample_color = COLOR_SAMPLE_YELLOW - -///Generate a sample from a specific weighted list, and a specific amount of cell line with a chance for a virus -/datum/biological_sample/proc/GenerateSample(cell_line_define, virus_define, cell_line_amount, virus_chance) - sample_color = pick(GLOB.xeno_sample_colors) - - var/list/temp_weight_list = GLOB.cell_line_tables[cell_line_define].Copy() //Temp list to prevent double picking - for(var/i in 1 to cell_line_amount) - var/datum/micro_organism/chosen_type = pick_weight(temp_weight_list) - temp_weight_list -= chosen_type - micro_organisms += new chosen_type - if(prob(virus_chance)) - if(!GLOB.cell_virus_tables[virus_define]) - return - var/datum/micro_organism/chosen_type = pick_weight(GLOB.cell_virus_tables[virus_define]) - micro_organisms += new chosen_type - -///Takes another sample and merges it into use. This can cause one very big sample but we limit it to 3 layers. -/datum/biological_sample/proc/Merge(datum/biological_sample/other_sample) - if(sample_layers >= 3)//No more than 3 layers, at that point you're entering danger zone. - return FALSE - micro_organisms += other_sample.micro_organisms - qdel(other_sample) - return TRUE - -///Call handle_growth on all our microorganisms. -/datum/biological_sample/proc/handle_growth(obj/machinery/plumbing/growing_vat/vat) - for(var/datum/micro_organism/cell_line/organism in micro_organisms) //Types because we don't grow viruses. - organism.handle_growth(vat) - -///resets the progress of all cell ines -/datum/biological_sample/proc/reset_sample() - for(var/datum/micro_organism/cell_line/organism in micro_organisms) //Types because we don't grow viruses. - organism.growth = 0 diff --git a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm deleted file mode 100644 index 1c2da8d5ac7b..000000000000 --- a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm +++ /dev/null @@ -1,694 +0,0 @@ -#define VAT_GROWTH_RATE 4 - -//////////////////////////////// -//// VERTEBRATES //// -//////////////////////////////// - -/datum/micro_organism/cell_line/mouse //nuisance cell line designed to complicate the growing of animal type cell lines. - desc = "Murine cells" - required_reagents = list(/datum/reagent/consumable/nutriment/protein) - supplementary_reagents = list( - /datum/reagent/growthserum = 2, - /datum/reagent/liquidgibs = 2, - /datum/reagent/consumable/cornoil = 2, - /datum/reagent/consumable/nutriment = 1, - /datum/reagent/consumable/nutriment/vitamin = 1, - /datum/reagent/consumable/sugar = 1, - /datum/reagent/consumable/cooking_oil = 1, - /datum/reagent/consumable/rice = 1, - /datum/reagent/consumable/eggyolk = 1) - - suppressive_reagents = list( - /datum/reagent/toxin/heparin = -6, - /datum/reagent/consumable/astrotame = -4, //Saccarin gives rats cancer. - /datum/reagent/consumable/ethanol/rubberneck = -3, - /datum/reagent/consumable/grey_bull = -1) - - virus_suspectibility = 2 - growth_rate = VAT_GROWTH_RATE - resulting_atoms = list(/mob/living/simple_animal/mouse = 2) - -/datum/micro_organism/cell_line/chicken //basic cell line designed as a good source of protein and eggyolk. - desc = "Galliform skin cells." - required_reagents = list(/datum/reagent/consumable/nutriment/protein) - - supplementary_reagents = list( - /datum/reagent/consumable/rice = 4, - /datum/reagent/growthserum = 3, - /datum/reagent/consumable/eggyolk = 1, - /datum/reagent/consumable/nutriment/vitamin = 2) - - suppressive_reagents = list( - /datum/reagent/fuel/oil = -4, - /datum/reagent/toxin = -2) - - virus_suspectibility = 1 - growth_rate = VAT_GROWTH_RATE - resulting_atoms = list(/mob/living/simple_animal/chicken = 1) - -/datum/micro_organism/cell_line/cow - desc = "Bovine stem cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/consumable/nutriment, - /datum/reagent/cellulose) - - supplementary_reagents = list( - /datum/reagent/growthserum = 4, - /datum/reagent/consumable/nutriment/vitamin = 2, - /datum/reagent/consumable/rice = 2, - /datum/reagent/consumable/flour = 1) - - suppressive_reagents = list(/datum/reagent/toxin = -2, - /datum/reagent/toxin/carpotoxin = -5) - - virus_suspectibility = 1 - resulting_atoms = list(/mob/living/basic/cow = 1) - -/datum/micro_organism/cell_line/moonicorn - desc = "Fairyland Bovine stem cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/consumable/nutriment, - /datum/reagent/drug/mushroomhallucinogen, - ) - - supplementary_reagents = list( - /datum/reagent/growthserum = 4, - /datum/reagent/consumable/tinlux = 2, - /datum/reagent/consumable/vitfro = 2, - /datum/reagent/consumable/astrotame = 1, - ) - - suppressive_reagents = list( - /datum/reagent/toxin = -2, - /datum/reagent/toxin/carpotoxin = -5, - /datum/reagent/consumable/coffee = -3, - /datum/reagent/consumable/triple_citrus = -5, - ) - - virus_suspectibility = 1 - resulting_atoms = list(/mob/living/basic/cow/moonicorn = 1) - -/datum/micro_organism/cell_line/cat - desc = "Feliform cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/liquidgibs) - - supplementary_reagents = list( - /datum/reagent/growthserum = 3, - /datum/reagent/consumable/nutriment/vitamin = 2, - /datum/reagent/medicine/oculine = 2, - /datum/reagent/consumable/milk = 1) //milkies - - suppressive_reagents = list( - /datum/reagent/consumable/coco = -4, - /datum/reagent/consumable/hot_coco = -2, - /datum/reagent/consumable/chocolatepudding = -2, - /datum/reagent/consumable/milk/chocolate_milk = -1) - - virus_suspectibility = 1.5 - resulting_atoms = list(/mob/living/simple_animal/pet/cat = 1) //The basic cat mobs are all male, so you mightt need a gender swap potion if you want to fill the fortress with kittens. - -/datum/micro_organism/cell_line/corgi - desc = "Canid cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/liquidgibs) - - supplementary_reagents = list( - /datum/reagent/growthserum = 3, - /datum/reagent/barbers_aid = 3, - /datum/reagent/consumable/nutriment/vitamin = 2) - - suppressive_reagents = list( - /datum/reagent/consumable/garlic = -2, - /datum/reagent/consumable/tearjuice = -3, - /datum/reagent/consumable/coco = -2) - - virus_suspectibility = 1 - resulting_atoms = list(/mob/living/simple_animal/pet/dog/corgi = 1) - -/datum/micro_organism/cell_line/pug - desc = "Squat canid cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/liquidgibs) - - supplementary_reagents = list( - /datum/reagent/growthserum = 2, - /datum/reagent/consumable/nutriment/vitamin = 3) - - suppressive_reagents = list( - /datum/reagent/consumable/garlic = -2, - /datum/reagent/consumable/tearjuice = -3, - /datum/reagent/consumable/coco = -2) - - virus_suspectibility = 3 - resulting_atoms = list(/mob/living/simple_animal/pet/dog/pug = 1) - -/datum/micro_organism/cell_line/bear //bears can't really compete directly with more powerful creatures, so i made it possible to grow them real fast. - desc = "Ursine cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/liquidgibs, - /datum/reagent/medicine/c2/synthflesh) //Nuke this if the dispenser becomes xenobio meta. - - supplementary_reagents = list( - /datum/reagent/consumable/honey = 8, //Hunny. - /datum/reagent/growthserum = 5, - /datum/reagent/medicine/morphine = 4, //morphine is a vital nutrient for space bears, but it is better as a supplemental for gameplay reasons. - /datum/reagent/consumable/nutriment/vitamin = 3) - - suppressive_reagents = list( - /datum/reagent/consumable/condensedcapsaicin = -4, //bear mace, steal it from the sec checkpoint. - /datum/reagent/toxin/carpotoxin = -2, - /datum/reagent/medicine/insulin = -2) //depletes hunny. - - virus_suspectibility = 2 - resulting_atoms = list(/mob/living/simple_animal/hostile/bear = 1) - -/datum/micro_organism/cell_line/carp - desc = "Cyprinid cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/consumable/nutriment) - - supplementary_reagents = list( - /datum/reagent/consumable/cornoil = 4, //Carp are oily fish - /datum/reagent/toxin/carpotoxin = 3, - /datum/reagent/consumable/cooking_oil = 2, - /datum/reagent/consumable/nutriment/vitamin = 2) - - suppressive_reagents = list( - /datum/reagent/toxin/bungotoxin = -6, - /datum/reagent/mercury = -4, - /datum/reagent/oxygen = -3) - - virus_suspectibility = 2 - resulting_atoms = list(/mob/living/simple_animal/hostile/carp = 1) - -/datum/micro_organism/cell_line/megacarp - desc = "Cartilaginous cyprinid cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/medicine/c2/synthflesh, - /datum/reagent/consumable/nutriment) - - supplementary_reagents = list( - /datum/reagent/consumable/cornoil = 4, - /datum/reagent/growthserum = 3, - /datum/reagent/toxin/carpotoxin = 2, - /datum/reagent/consumable/cooking_oil = 2, - /datum/reagent/consumable/nutriment/vitamin = 2) - - suppressive_reagents = list( - /datum/reagent/toxin/bungotoxin = -6, - /datum/reagent/oxygen = -3) - - virus_suspectibility = 1 - resulting_atoms = list(/mob/living/simple_animal/hostile/carp/megacarp = 1) - -/datum/micro_organism/cell_line/snake - desc = "Ophidic cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/liquidgibs) - - supplementary_reagents = list( - /datum/reagent/growthserum = 3, - /datum/reagent/consumable/nutriment/peptides = 3, - /datum/reagent/consumable/eggyolk = 2, - /datum/reagent/consumable/nutriment/vitamin = 2) - - suppressive_reagents = list( - /datum/reagent/consumable/corn_syrup = -6, - /datum/reagent/sulfur = -3) //sulfur repels snakes according to professor google. - - resulting_atoms = list(/mob/living/simple_animal/hostile/retaliate/snake = 1) - - -/////////////////////////////////////////// -/// SLIMES, OOZES & BLOBS /// -////////////////////////////////////////// - -/datum/micro_organism/cell_line/slime - desc = "Slime particles" - required_reagents = list(/datum/reagent/consumable/nutriment/protein) - - supplementary_reagents = list( - /datum/reagent/toxin/slimejelly = 2, - /datum/reagent/liquidgibs = 2, - /datum/reagent/consumable/enzyme = 1) - - suppressive_reagents = list( - /datum/reagent/consumable/frostoil = -4, - /datum/reagent/cryostylane = -4, - /datum/reagent/medicine/morphine = -2, - /datum/reagent/consumable/ice = -2) //Brrr! - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/slime = 1) - -/datum/micro_organism/cell_line/blob_spore //shitty cell line to dilute the pool, feel free to make easier to grow if it doesn't interfer with growing the powerful mobs enough. - desc = "Immature blob spores" - required_reagents = list(/datum/reagent/consumable/nutriment/protein) - - supplementary_reagents = list( - /datum/reagent/consumable/nutriment/vitamin = 3, - /datum/reagent/liquidgibs = 2, - /datum/reagent/sulfur = 2) - - suppressive_reagents = list( - /datum/reagent/consumable/tinlux = -6, - /datum/reagent/napalm = -4) - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/hostile/blob/blobspore/independent = 2) //These are useless so we might as well spawn 2. - -/datum/micro_organism/cell_line/blobbernaut - desc = "Blobular myocytes" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/medicine/c2/synthflesh, - /datum/reagent/sulfur) //grind flares to get this - - supplementary_reagents = list( - /datum/reagent/growthserum = 3, - /datum/reagent/consumable/nutriment/vitamin = 2, - /datum/reagent/liquidgibs = 2, - /datum/reagent/consumable/eggyolk = 2, - /datum/reagent/consumable/shamblers = 1) - - suppressive_reagents = list(/datum/reagent/consumable/tinlux = -6) - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/hostile/blob/blobbernaut/independent = 1) - -/datum/micro_organism/cell_line/gelatinous_cube - desc = "Cubic ooze particles" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/toxin/slimejelly, - /datum/reagent/yuck, - /datum/reagent/consumable/enzyme) //Powerful enzymes helps the cube digest prey. - - supplementary_reagents = list( - /datum/reagent/water/hollowwater = 4, - /datum/reagent/consumable/corn_syrup = 3, - /datum/reagent/gold = 2, //This is why they eat so many adventurers. - /datum/reagent/consumable/nutriment/peptides = 2, - /datum/reagent/consumable/potato_juice = 1, - /datum/reagent/liquidgibs = 1, - /datum/reagent/consumable/nutriment/vitamin = 1) - - suppressive_reagents = list( - /datum/reagent/toxin/minttoxin = -3, - /datum/reagent/consumable/frostoil = -2, - /datum/reagent/consumable/ice = -1) - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/hostile/ooze/gelatinous = 1) - -/datum/micro_organism/cell_line/sholean_grapes - desc = "Globular ooze particles" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/toxin/slimejelly, - /datum/reagent/yuck, - /datum/reagent/consumable/vitfro) - - supplementary_reagents = list( - /datum/reagent/medicine/omnizine = 4, - /datum/reagent/consumable/nutriment/peptides = 3, - /datum/reagent/consumable/corn_syrup = 2, - /datum/reagent/consumable/ethanol/squirt_cider = 2, - /datum/reagent/consumable/doctor_delight = 1, - /datum/reagent/medicine/salglu_solution = 1, - /datum/reagent/liquidgibs = 1, - /datum/reagent/consumable/nutriment/vitamin = 1) - - suppressive_reagents = list( - /datum/reagent/toxin/carpotoxin = -3, - /datum/reagent/toxin/coffeepowder = -2, - /datum/reagent/consumable/frostoil = -2, - /datum/reagent/consumable/ice = -1) - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/hostile/ooze/grapes = 1) - -//////////////////// -//// MISC //// -//////////////////// -/datum/micro_organism/cell_line/cockroach //nuisance cell line designed to complicate the growing of slime type cell lines. - desc = "Blattodeoid anthropod cells" - required_reagents = list(/datum/reagent/consumable/nutriment/protein) - supplementary_reagents = list( - /datum/reagent/yuck = 4, - /datum/reagent/growthserum = 2, - /datum/reagent/toxin/slimejelly = 2, - /datum/reagent/consumable/nutriment/vitamin = 1) - - suppressive_reagents = list( - /datum/reagent/toxin/pestkiller = -2, - /datum/reagent/consumable/poisonberryjuice = -4, - /datum/reagent/consumable/ethanol/bug_spray = -4) - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/cockroach = 5) - -/datum/micro_organism/cell_line/glockroach - desc = "Gattodeoid anthropod cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/drug/maint/powder, - /datum/reagent/iron) - - supplementary_reagents = list( - /datum/reagent/gunpowder = 6, - /datum/reagent/drug/maint/tar = 4, - /datum/reagent/yuck = 2, - /datum/reagent/growthserum = 2) - - suppressive_reagents = list( - /datum/reagent/toxin/pestkiller = -2, - /datum/reagent/consumable/coffee = -3, //a quick google search said roaches don't like coffee grounds, and I needed a different suppressive reagent - /datum/reagent/consumable/ethanol/bug_spray = -4) - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/cockroach/glockroach = 2) - -/datum/micro_organism/cell_line/hauberoach - desc = "Hattodeoid anthropod cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/consumable/ethanol/beer, - /datum/reagent/iron) - - supplementary_reagents = list( - /datum/reagent/gunpowder = 6, - /datum/reagent/medicine/pen_acid = 4, //Prussian Blue is an antidote for radioactive thallium poisoning, among other things. The pickelhaube was worn by Prussian/German officers. You can tell I'm running out of ideas here. - /datum/reagent/yuck = 2, - /datum/reagent/blood = 2) - - suppressive_reagents = list( - /datum/reagent/toxin/pestkiller = -2, - /datum/reagent/consumable/coffee = -3, - /datum/reagent/consumable/ethanol/cognac = -4) - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/cockroach/hauberoach = 2) - -/datum/micro_organism/cell_line/pine - desc = "Coniferous plant cells" - required_reagents = list( - /datum/reagent/ammonia, - /datum/reagent/ash, - /datum/reagent/plantnutriment/robustharvestnutriment) //A proper source of phosphorous like would be thematically more appropriate but this is what we have. - - supplementary_reagents = list( - /datum/reagent/saltpetre = 5, - /datum/reagent/carbondioxide = 2, - /datum/reagent/consumable/nutriment = 2, - /datum/reagent/consumable/space_cola = 2, //A little extra phosphorous - /datum/reagent/water/holywater = 2, - /datum/reagent/water = 1, - /datum/reagent/cellulose = 1) - - suppressive_reagents = list(/datum/reagent/toxin/plantbgone = -8) - - virus_suspectibility = 1 - resulting_atoms = list(/mob/living/simple_animal/hostile/tree = 1) - -/datum/micro_organism/cell_line/vat_beast - desc = "Hypergenic xenocytes" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/consumable/nutriment/vitamin, - /datum/reagent/consumable/nutriment/peptides, - /datum/reagent/consumable/liquidelectricity/enriched, - /datum/reagent/growthserum, - /datum/reagent/yuck) - - supplementary_reagents = list( - /datum/reagent/medicine/rezadone = 3, - /datum/reagent/consumable/entpoly = 3, - /datum/reagent/consumable/red_queen = 2, - /datum/reagent/consumable/peachjuice = 2, - /datum/reagent/uranium = 1, - /datum/reagent/liquidgibs = 1) - - suppressive_reagents = list( - /datum/reagent/consumable/salt = -3, - /datum/reagent/medicine/c2/syriniver = -2) - - virus_suspectibility = 0.5 - resulting_atoms = list(/mob/living/simple_animal/hostile/vatbeast = 1) - -/datum/micro_organism/cell_line/vat_beast/succeed_growing(obj/machinery/plumbing/growing_vat/vat) - . = ..() - qdel(vat) - -//randomizes from the netherworld pool! -/datum/micro_organism/cell_line/netherworld - desc = "Aberrant residue" - required_reagents = list(//theme here: very odd requirements - /datum/reagent/water/hollowwater,//geyser reagent, so plentiful when found - /datum/reagent/consumable/ethanol/wizz_fizz, //EZ bartender drink, like brainless - /datum/reagent/yuck) //since the other two are easy to make tons of, this is kind of a limiter - - supplementary_reagents = list( //all of these are just geyser stuff, rated by their rarity - /datum/reagent/wittel = 10, //stupid rare - /datum/reagent/medicine/omnizine/protozine = 5, - /datum/reagent/plasma_oxide = 3, - /datum/reagent/clf3 = 1)//since this is also chemistry it's worth near nothing - - suppressive_reagents = list(//generics you would regularly put in a vat kill abberant residue - /datum/reagent/consumable/nutriment/peptides = -6, - /datum/reagent/consumable/nutriment/protein = -4, - /datum/reagent/consumable/nutriment = -3, - /datum/reagent/liquidgibs = -2) - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/hostile/netherworld = 1) - -/datum/micro_organism/cell_line/netherworld/succeed_growing(obj/machinery/plumbing/growing_vat/vat) - var/random_result = pick(typesof(/mob/living/simple_animal/hostile/netherworld)) //i looked myself, pretty much all of them are reasonably strong and somewhat on the same level. except migo is the jackpot and the blank body is whiff. - resulting_atoms = list() - resulting_atoms[random_result] = 1 - return ..() - -/datum/micro_organism/cell_line/clown/fuck_up_growing(obj/machinery/plumbing/growing_vat/vat) - vat.visible_message(span_warning("The biological sample in [vat] seems to have created something horrific!")) - - var/mob/selected_mob = pick(list(/mob/living/simple_animal/hostile/retaliate/clown/mutant/slow, /mob/living/simple_animal/hostile/retaliate/clown/fleshclown)) - - new selected_mob(get_turf(vat)) - if(SEND_SIGNAL(vat.biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED) & SPARE_SAMPLE) - return - QDEL_NULL(vat.biological_sample) - -/datum/micro_organism/cell_line/clown/bananaclown - desc = "Clown bits with banana chunks" - - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/consumable/banana) - - supplementary_reagents = list( - /datum/reagent/saltpetre = 4, - /datum/reagent/ammonia = 3, - /datum/reagent/carbondioxide = 3, - /datum/reagent/medicine/coagulant/banana_peel = 2, - /datum/reagent/plantnutriment/robustharvestnutriment = 1) - - suppressive_reagents = list( - /datum/reagent/consumable/clownstears = -8, - /datum/reagent/toxin/plantbgone = -4, - /datum/reagent/consumable/ethanol/silencer = -3, - /datum/reagent/consumable/nothing = -2, - /datum/reagent/fuel/oil = -1) - - resulting_atoms = list(/mob/living/simple_animal/hostile/retaliate/clown/banana = 1) - -/datum/micro_organism/cell_line/clown/glutton - desc = "hyperadipogenic clown stem cells" - - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/consumable/banana, - /datum/reagent/medicine/c2/synthflesh) - //r/chonkers - supplementary_reagents = list( - /datum/reagent/consumable/vanillapudding = 8, - /datum/reagent/growthserum = 6, - /datum/reagent/consumable/nutriment/peptides = 4, - /datum/reagent/consumable/cornoil = 3, - /datum/reagent/consumable/cooking_oil = 1, - /datum/reagent/consumable/space_cola = 1) - - suppressive_reagents = list( - /datum/reagent/consumable/clownstears = -8, - /datum/reagent/toxin/minttoxin = -6, - /datum/reagent/consumable/ethanol/silencer = -3, - /datum/reagent/consumable/ethanol/fernet = -3, - /datum/reagent/toxin/lipolicide = -3, - /datum/reagent/consumable/nothing = -2, - /datum/reagent/toxin/bad_food = -1) - - resulting_atoms = list(/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton = 1) - -/datum/micro_organism/cell_line/clown/longclown - desc = "long clown bits" - - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/consumable/banana) - - supplementary_reagents = list( - /datum/reagent/drug/happiness = 5, - /datum/reagent/toxin/mimesbane = 4, - /datum/reagent/consumable/laughter = 3, - /datum/reagent/nitrous_oxide = 2) - - suppressive_reagents = list( - /datum/reagent/consumable/clownstears = -8, - /datum/reagent/consumable/ethanol/beepsky_smash = -3, - /datum/reagent/consumable/ethanol/silencer = -3, - /datum/reagent/toxin/mutetoxin = -3, - /datum/reagent/consumable/nothing = -2, - /datum/reagent/sulfur = -1) - - resulting_atoms = list(/mob/living/simple_animal/hostile/retaliate/clown/longface = 1) - -/datum/micro_organism/cell_line/frog - desc = "amphibian cells" - required_reagents = list(/datum/reagent/consumable/nutriment/protein) - - supplementary_reagents = list( - /datum/reagent/ants = 3, - /datum/reagent/consumable/eggwhite= 2, - /datum/reagent/consumable/nutriment/vitamin = 1,) - - suppressive_reagents = list( - /datum/reagent/toxin/carpotoxin = -3, - /datum/reagent/toxin/bungotoxin = -3, - /datum/reagent/toxin/spore = -3, - /datum/reagent/toxin/plantbgone = -2, //GAY FROGS - /datum/reagent/drying_agent = -2, - /datum/reagent/consumable/mold = -2, - /datum/reagent/toxin = -1) - - virus_suspectibility = 0.5 - resulting_atoms = list(/mob/living/simple_animal/hostile/retaliate/frog = 1) - -/datum/micro_organism/cell_line/walking_mushroom - desc = "motile fungal hyphae" - required_reagents = list(/datum/reagent/consumable/nutriment/protein) - - supplementary_reagents = list( - /datum/reagent/toxin/polonium = 6, - /datum/reagent/consumable/corn_syrup = 3, - /datum/reagent/consumable/mushroom_tea = 3, - /datum/reagent/toxin/coffeepowder = 2, - /datum/reagent/consumable/nuka_cola = 2, - /datum/reagent/consumable/mold = 2, - /datum/reagent/consumable/sugar = 1, - /datum/reagent/cellulose = 1) - - suppressive_reagents = list( - /datum/reagent/lead = -4, - /datum/reagent/consumable/garlic = -3, - /datum/reagent/toxin/plasma = -2, - /datum/reagent/flash_powder = -2, - /datum/reagent/pax = -2, - /datum/reagent/copper = -1) - - virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/hostile/mushroom = 1) - -/datum/micro_organism/cell_line/queen_bee - desc = "aphid cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/consumable/corn_syrup) - - supplementary_reagents = list( - /datum/reagent/consumable/honey = 4, - /datum/reagent/consumable/korta_nectar = 3, - /datum/reagent/consumable/red_queen = 3, - /datum/reagent/consumable/ethanol/champagne = 2, - /datum/reagent/consumable/ethanol/sugar_rush = 2, - /datum/reagent/consumable/sugar = 1, - /datum/reagent/consumable/lemonade = 1, - /datum/reagent/consumable/nutriment/vitamin = 1) - - suppressive_reagents = list( - /datum/reagent/toxin/carpotoxin = -3, - /datum/reagent/toxin/pestkiller = -2, - /datum/reagent/consumable/potato_juice = -2, - /datum/reagent/drug/nicotine = -1) - - virus_suspectibility = 0 - resulting_atoms = list(/obj/item/queen_bee = 1) - -/datum/micro_organism/cell_line/queen_bee/fuck_up_growing(obj/machinery/plumbing/growing_vat/vat) //we love job hazards - vat.visible_message(span_warning("You hear angry buzzing coming from the inside of the vat!")) - for(var/i in 1 to 5) - new /mob/living/simple_animal/hostile/bee(get_turf(vat)) - if(SEND_SIGNAL(vat.biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED) & SPARE_SAMPLE) - return - QDEL_NULL(vat.biological_sample) - -/datum/micro_organism/cell_line/leaper - desc = "atypical amphibian cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/ants, - /datum/reagent/consumable/eggyolk, - /datum/reagent/medicine/c2/synthflesh) - - supplementary_reagents = list( - /datum/reagent/growthserum = 4, - /datum/reagent/drug/blastoff = 3, - /datum/reagent/drug/space_drugs = 2, - /datum/reagent/consumable/ethanol/eggnog = 2, - /datum/reagent/consumable/vanilla = 2, - /datum/reagent/consumable/banana = 1, - /datum/reagent/consumable/nutriment/vitamin = 1) - - suppressive_reagents = list( - /datum/reagent/toxin/cyanide = -5, - /datum/reagent/consumable/mold = -2, - /datum/reagent/toxin/spore = -1) - - resulting_atoms = list(/mob/living/simple_animal/hostile/jungle/leaper = 1) - -/datum/micro_organism/cell_line/mega_arachnid - desc = "pseudoarachnoid cells" - required_reagents = list( - /datum/reagent/consumable/nutriment/protein, - /datum/reagent/ants, - /datum/reagent/medicine/omnizine) - - supplementary_reagents = list( - /datum/reagent/toxin/venom = 6, - /datum/reagent/drug/kronkaine = 4, - /datum/reagent/consumable/nutriment/peptides = 3, - /datum/reagent/consumable/ethanol/squirt_cider = 2, - /datum/reagent/consumable/nutraslop = 2, - /datum/reagent/consumable/nutriment/vitamin = 1, - /datum/reagent/toxin/plasma = 1, - /datum/reagent/consumable/nutriment/organ_tissue = 1, - /datum/reagent/liquidgibs = 1, - /datum/reagent/consumable/enzyme = 1) - - suppressive_reagents = list( - /datum/reagent/consumable/ethanol/bug_spray = -3, - /datum/reagent/drug/nicotine = -1, - /datum/reagent/toxin/pestkiller = -1) - - resulting_atoms = list(/mob/living/simple_animal/hostile/jungle/mega_arachnid = 1) - -#undef VAT_GROWTH_RATE diff --git a/code/modules/research/xenobiology/vatgrowing/samples/viruses/_virus.dm b/code/modules/research/xenobiology/vatgrowing/samples/viruses/_virus.dm deleted file mode 100644 index d33e2243fb95..000000000000 --- a/code/modules/research/xenobiology/vatgrowing/samples/viruses/_virus.dm +++ /dev/null @@ -1,3 +0,0 @@ -///A micro_organism that supports the ability to be converted to a real virus, allowing virology to get new symptoms -/datum/micro_organism/virus - desc = "A virus of unknown origin" diff --git a/code/modules/research/xenobiology/vatgrowing/swab.dm b/code/modules/research/xenobiology/vatgrowing/swab.dm deleted file mode 100644 index 92dd767ea16d..000000000000 --- a/code/modules/research/xenobiology/vatgrowing/swab.dm +++ /dev/null @@ -1,19 +0,0 @@ -///Tool capable of taking biological samples from mobs -/obj/item/swab - name = "swab" - desc = "Some men use these for different reasons." - icon = 'icons/obj/xenobiology/vatgrowing.dmi' - icon_state = "swab" - w_class = WEIGHT_CLASS_TINY - -///Adds the swabbing component to the biopsy tool -/obj/item/swab/Initialize(mapload) - . = ..() - AddComponent(/datum/component/swabbing, TRUE, TRUE, FALSE, null, CALLBACK(src, PROC_REF(update_swab_icon)), max_items = 1) - -/obj/item/swab/proc/update_swab_icon(overlays, list/swabbed_items) - if(LAZYLEN(swabbed_items)) - var/datum/biological_sample/sample = LAZYACCESS(swabbed_items, 1) //Use the first one as our target - var/mutable_appearance/swab_overlay = mutable_appearance(icon, "swab_[sample.sample_color]") - swab_overlay.appearance_flags = RESET_COLOR - overlays += swab_overlay diff --git a/code/modules/research/xenobiology/vatgrowing/vatgrower.dm b/code/modules/research/xenobiology/vatgrowing/vatgrower.dm deleted file mode 100644 index af6d40878da3..000000000000 --- a/code/modules/research/xenobiology/vatgrowing/vatgrower.dm +++ /dev/null @@ -1,138 +0,0 @@ -///Used to make mobs from microbiological samples. Grow grow grow. -/obj/machinery/plumbing/growing_vat - name = "growing vat" - desc = "Tastes just like the chef's soup." - icon_state = "growing_vat" - buffer = 300 - zmm_flags = ZMM_MANGLE_PLANES - ///List of all microbiological samples in this soup. - var/datum/biological_sample/biological_sample - ///If the vat will restart the sample upon completion - var/resampler_active = FALSE - -///Add that sexy demnand component -/obj/machinery/plumbing/growing_vat/Initialize(mapload, bolt) - . = ..() - AddComponent(/datum/component/plumbing/simple_demand, bolt) - -/obj/machinery/plumbing/growing_vat/create_reagents(max_vol, flags) - . = ..() - RegisterSignal(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT), PROC_REF(on_reagent_change)) - RegisterSignal(reagents, COMSIG_PARENT_QDELETING, PROC_REF(on_reagents_del)) - -/// Handles properly detaching signal hooks. -/obj/machinery/plumbing/growing_vat/proc/on_reagents_del(datum/reagents/reagents) - SIGNAL_HANDLER - UnregisterSignal(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT, COMSIG_PARENT_QDELETING)) - return NONE - -///When we process, we make use of our reagents to try and feed the samples we have. -/obj/machinery/plumbing/growing_vat/process() - if(!is_operational) - return - if(!biological_sample) - return - if(biological_sample.handle_growth(src)) - if(!prob(10)) - return - playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) - audible_message(pick(list(span_notice("[src] grumbles!"), span_notice("[src] makes a splashing noise!"), span_notice("[src] sloshes!")))) - -///Handles the petri dish depositing into the vat. -/obj/machinery/plumbing/growing_vat/attacked_by(obj/item/I, mob/living/user) - if(!istype(I, /obj/item/petri_dish)) - return ..() - - var/obj/item/petri_dish/petri = I - - if(!petri.sample) - return ..() - - if(biological_sample) - to_chat(user, span_warning("There is already a sample in the vat!")) - return - deposit_sample(user, petri) - -///Creates a clone of the supplied sample and puts it in the vat -/obj/machinery/plumbing/growing_vat/proc/deposit_sample(mob/user, obj/item/petri_dish/petri) - biological_sample = new - for(var/datum/micro_organism/m in petri.sample.micro_organisms) - biological_sample.micro_organisms += new m.type() - biological_sample.sample_layers = petri.sample.sample_layers - biological_sample.sample_color = petri.sample.sample_color - to_chat(user, span_warning("You put some of the sample in the vat!")) - playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE) - update_appearance() - RegisterSignal(biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED, PROC_REF(on_sample_growth_completed)) - -///Adds text for when there is a sample in the vat -/obj/machinery/plumbing/growing_vat/examine_more(mob/user) - . = ..() - if(!biological_sample) - return - . += span_notice("It seems to have a sample in it!") - for(var/i in biological_sample.micro_organisms) - var/datum/micro_organism/MO = i - . += MO.get_details(HAS_TRAIT(user, TRAIT_RESEARCH_SCANNER)) - -/obj/machinery/plumbing/growing_vat/plunger_act(obj/item/plunger/P, mob/living/user, reinforced) - . = ..() - QDEL_NULL(biological_sample) - -/// Call update icon when reagents change to update the reagent content icons. Eats signal args. -/obj/machinery/plumbing/growing_vat/proc/on_reagent_change(datum/reagents/holder, ...) - SIGNAL_HANDLER - update_appearance() - return NONE - -///Adds overlays to show the reagent contents -/obj/machinery/plumbing/growing_vat/update_overlays() - . = ..() - var/static/image/on_overlay - var/static/image/off_overlay - var/static/image/emissive_overlay - if(isnull(on_overlay)) - on_overlay = iconstate2appearance(icon, "growing_vat_on") - off_overlay = iconstate2appearance(icon, "growing_vat_off") - emissive_overlay = emissive_appearance(icon, "growing_vat_glow", alpha = src.alpha) - . += emissive_overlay - if(is_operational) - if(resampler_active) - . += on_overlay - else - . += off_overlay - if(!reagents.total_volume) - return - var/reagentcolor = mix_color_from_reagents(reagents.reagent_list) - var/mutable_appearance/base_overlay = mutable_appearance(icon, "vat_reagent") - base_overlay.appearance_flags = RESET_COLOR - base_overlay.color = reagentcolor - . += base_overlay - if(biological_sample && is_operational) - var/mutable_appearance/bubbles_overlay = mutable_appearance(icon, "vat_bubbles") - . += bubbles_overlay - -/obj/machinery/plumbing/growing_vat/attack_hand(mob/living/user, list/modifiers) - . = ..() - playsound(src, 'sound/machines/click.ogg', 30, TRUE) - if(obj_flags & EMAGGED) - return - resampler_active = !resampler_active - balloon_alert_to_viewers("resampler [resampler_active ? "activated" : "deactivated"]") - update_appearance() - -/obj/machinery/plumbing/growing_vat/emag_act(mob/user) - if(obj_flags & EMAGGED) - return - obj_flags |= EMAGGED - playsound(src, SFX_SPARKS, 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - to_chat(user, span_warning("You overload [src]'s resampling circuit.")) - flick("growing_vat_emagged", src) - -/obj/machinery/plumbing/growing_vat/proc/on_sample_growth_completed() - SIGNAL_HANDLER - if(resampler_active) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), get_turf(src), 'sound/effects/servostep.ogg', 100, 1), 1.5 SECONDS) - biological_sample.reset_sample() - return SPARE_SAMPLE - UnregisterSignal(biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED) diff --git a/daedalus.dme b/daedalus.dme index b71368556846..bb4e8c07bbf0 100644 --- a/daedalus.dme +++ b/daedalus.dme @@ -147,7 +147,6 @@ #include "code\__DEFINES\perf_test.dm" #include "code\__DEFINES\pinpointers.dm" #include "code\__DEFINES\pipe_construction.dm" -#include "code\__DEFINES\plumbing.dm" #include "code\__DEFINES\polls.dm" #include "code\__DEFINES\power.dm" #include "code\__DEFINES\preferences.dm" @@ -242,7 +241,6 @@ #include "code\__DEFINES\dcs\signals\signals_clothing.dm" #include "code\__DEFINES\dcs\signals\signals_container.dm" #include "code\__DEFINES\dcs\signals\signals_customizable.dm" -#include "code\__DEFINES\dcs\signals\signals_cytology.dm" #include "code\__DEFINES\dcs\signals\signals_datum.dm" #include "code\__DEFINES\dcs\signals\signals_fish.dm" #include "code\__DEFINES\dcs\signals\signals_food.dm" @@ -277,7 +275,6 @@ #include "code\__DEFINES\dcs\signals\signals_spell.dm" #include "code\__DEFINES\dcs\signals\signals_storage.dm" #include "code\__DEFINES\dcs\signals\signals_subsystem.dm" -#include "code\__DEFINES\dcs\signals\signals_swab.dm" #include "code\__DEFINES\dcs\signals\signals_traitor.dm" #include "code\__DEFINES\dcs\signals\signals_tram.dm" #include "code\__DEFINES\dcs\signals\signals_transform.dm" @@ -419,7 +416,6 @@ #include "code\_globalvars\lists\quirks.dm" #include "code\_globalvars\lists\typecache.dm" #include "code\_globalvars\lists\wiremod.dm" -#include "code\_globalvars\lists\xenobiology.dm" #include "code\_js\byjax.dm" #include "code\_js\menus.dm" #include "code\_onclick\adjacent.dm" @@ -585,7 +581,6 @@ #include "code\controllers\subsystem\processing\clock_component.dm" #include "code\controllers\subsystem\processing\conveyors.dm" #include "code\controllers\subsystem\processing\fastprocess.dm" -#include "code\controllers\subsystem\processing\fluids.dm" #include "code\controllers\subsystem\processing\greyscale.dm" #include "code\controllers\subsystem\processing\instruments.dm" #include "code\controllers\subsystem\processing\networks.dm" @@ -614,7 +609,6 @@ #include "code\datums\datumvars.dm" #include "code\datums\dna.dm" #include "code\datums\dog_fashion.dm" -#include "code\datums\ductnet.dm" #include "code\datums\emotes.dm" #include "code\datums\ert.dm" #include "code\datums\forced_movement.dm" @@ -870,7 +864,6 @@ #include "code\datums\components\subtype_picker.dm" #include "code\datums\components\summoning.dm" #include "code\datums\components\surgery_initiator.dm" -#include "code\datums\components\swabbing.dm" #include "code\datums\components\swarming.dm" #include "code\datums\components\tackle.dm" #include "code\datums\components\tactical.dm" @@ -905,12 +898,6 @@ #include "code\datums\components\food\decomposition.dm" #include "code\datums\components\food\edible.dm" #include "code\datums\components\food\ice_cream_holder.dm" -#include "code\datums\components\plumbing\_plumbing.dm" -#include "code\datums\components\plumbing\chemical_acclimator.dm" -#include "code\datums\components\plumbing\filter.dm" -#include "code\datums\components\plumbing\IV_drip.dm" -#include "code\datums\components\plumbing\reaction_chamber.dm" -#include "code\datums\components\plumbing\splitter.dm" #include "code\datums\components\riding\riding.dm" #include "code\datums\components\riding\riding_mob.dm" #include "code\datums\components\riding\riding_vehicle.dm" @@ -1043,7 +1030,6 @@ #include "code\datums\elements\spooky.dm" #include "code\datums\elements\squish.dm" #include "code\datums\elements\strippable.dm" -#include "code\datums\elements\swabbable.dm" #include "code\datums\elements\tenacious.dm" #include "code\datums\elements\tool_flash.dm" #include "code\datums\elements\undertile.dm" @@ -3283,7 +3269,6 @@ #include "code\modules\mapfluff\ruins\spaceruin_code\deepstorage.dm" #include "code\modules\mapfluff\ruins\spaceruin_code\DJstation.dm" #include "code\modules\mapfluff\ruins\spaceruin_code\forgottenship.dm" -#include "code\modules\mapfluff\ruins\spaceruin_code\hellfactory.dm" #include "code\modules\mapfluff\ruins\spaceruin_code\hilbertshotel.dm" #include "code\modules\mapfluff\ruins\spaceruin_code\listeningstation.dm" #include "code\modules\mapfluff\ruins\spaceruin_code\oldstation.dm" @@ -3903,21 +3888,6 @@ #include "code\modules\photography\photos\album.dm" #include "code\modules\photography\photos\frame.dm" #include "code\modules\photography\photos\photo.dm" -#include "code\modules\plumbing\ducts.dm" -#include "code\modules\plumbing\plumbers\_plumb_machinery.dm" -#include "code\modules\plumbing\plumbers\acclimator.dm" -#include "code\modules\plumbing\plumbers\bottler.dm" -#include "code\modules\plumbing\plumbers\destroyer.dm" -#include "code\modules\plumbing\plumbers\fermenter.dm" -#include "code\modules\plumbing\plumbers\filter.dm" -#include "code\modules\plumbing\plumbers\grinder_chemical.dm" -#include "code\modules\plumbing\plumbers\pill_press.dm" -#include "code\modules\plumbing\plumbers\plumbing_buffer.dm" -#include "code\modules\plumbing\plumbers\pumps.dm" -#include "code\modules\plumbing\plumbers\reaction_chamber.dm" -#include "code\modules\plumbing\plumbers\splitters.dm" -#include "code\modules\plumbing\plumbers\synthesizer.dm" -#include "code\modules\plumbing\plumbers\teleporter.dm" #include "code\modules\power\cable.dm" #include "code\modules\power\cell.dm" #include "code\modules\power\data_terminal.dm" @@ -4228,15 +4198,6 @@ #include "code\modules\research\xenobiology\crossbreeding\reproductive.dm" #include "code\modules\research\xenobiology\crossbreeding\selfsustaining.dm" #include "code\modules\research\xenobiology\crossbreeding\stabilized.dm" -#include "code\modules\research\xenobiology\vatgrowing\biopsy_tool.dm" -#include "code\modules\research\xenobiology\vatgrowing\microscope.dm" -#include "code\modules\research\xenobiology\vatgrowing\petri_dish.dm" -#include "code\modules\research\xenobiology\vatgrowing\swab.dm" -#include "code\modules\research\xenobiology\vatgrowing\vatgrower.dm" -#include "code\modules\research\xenobiology\vatgrowing\samples\_micro_organism.dm" -#include "code\modules\research\xenobiology\vatgrowing\samples\_sample.dm" -#include "code\modules\research\xenobiology\vatgrowing\samples\cell_lines\common.dm" -#include "code\modules\research\xenobiology\vatgrowing\samples\viruses\_virus.dm" #include "code\modules\screen_alerts\location_blurb.dm" #include "code\modules\screen_alerts\screen_alerts.dm" #include "code\modules\security_levels\keycard_authentication.dm" diff --git a/icons/obj/plumbing/connects.dmi b/icons/obj/plumbing/connects.dmi deleted file mode 100644 index 32277ffac6597ef7b2f494150405ea7589c1c165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1525 zcmYjR3pCSv9RF_<8x4sRvgN8MuS`g#zsHV8r4i{Sa`R~G#`3xzT{J?qFwb3iOdgF| z6oq!@QSzMkqq>oC^SDUNjMmI9x7)p)^ZT9O`F_sloX$e$N~=f%0D!c! zwRQpk2zvbj60mh-3{n-h{^;UPIAa?c8Za2l2>=jdFs171>oB0~=nyn|yYOS=EW1HTk1Li671w~8UQEX`mPVX5zc3Wt$l*L0tr`x2}FMY2+K(vu#kx{ z*xt{H@9=mDPDk8D1%e!6-w-6-SqQvH z0k`i*y$3z_SU=yIswUkQ(%nHc7FTL{Qcpsd4Cx*}S5xIzvsHKlycait*_AX}4_wrf z)K!i(-d3GdA{BdpUAui^m}caH4VjP{mx1Vk&e5B?M*u(~%g)-uIV@)`_khDNs2CqA z^W~ZCrWlPJbUOk(1m3N+47@RnZdZaT?Vi?hER(1FWoMBb7;pPly_|M*ZAwtvQt_u) zbv(CP{OjVKH^0~Wc3k8#d|V!FOR5mMWXRph=CozWB+yW#mq?ZfuIN8HXOn*wMy!7i zx%?^RctH7;WNKU#d+;-dK{K*7X_<-C4X8}lXJ=10lt0p6a?8u%Q>a3EX8^zSHG$(P z_IhOhI$0RP_lepX?{ZpjkGN3AedH~wx!`(X(j=f==2XBhtv-?WIACe)OS_w8`}jp& zP^EUESK}~*#F`z{poB_EES9;FLECqa8xAulea+e<0S;kOeMDmI8YAdt7y0$i#THBD zlyXj@^n&9>fKE6d_RsJdMaBAN)o?(YrzmL<4CC?~=hW z$&n}tX_JNJA8<9K>I-V}HS{?Pm}By);ao1~%kjb}3*k(}LOl0_^9G~}9#i4V)E(Tn z$)4Y;-(LqA$Xu3rSDgVZju@vBqMNMFn3f(dfABo*obEh(SO>am3;Y&nD`BZ2pBh@@ znGw3GpodVaYe3k`5|$JUv<^)-D!2X5=~IOUwv!odL1tF;g%`|l0<3knehfRLC#n*O zrn2CAcuQgDa6$(Y`xq14MGgcf(wMk2=oMM`xce!z=7t(!h4fUAT;-u^j_0BLYR&SV zNII>BQw~-Hb;mO9O$rj_Y`&SYL2qNGYseU_^y<8B+M`f1l)PM-*^%&y9h+Sl5ZSZ1 zdLLDpRDA!&3c_Ezn{IM$}y|Q!=-#V^+%Id7C zx3Vjl(CNNp4D8Dps3h4Ji?*Zx3j(^!BA+UY!ikQzU}7W8X)4kV52#9jtTTTKt|Ma$X=knN$(L&X=U;`9k@V}sU&i56!Eks7tr^G6S( z3Qe}Dcb`7;r!flBJ9oedf%k{c=*}lARsPe1fAetTur$4sE)~64<`uqJDfFAN2~-#{ zfBxji>?aF>yXsm1jYseHlbqC<6&Gbq&2DsDUH z+=@sxNj!L&`azAe!iipaeD?tj{+s4?35E*2#k|L{@ee2hKxobG)u`zRP%U%AJb+L<#tHX@snHWuBF$p@?+B?Hj`oH84 zkWPDeXI83WRurm9Ywc|UJ)%f{&Bz#>tJ1G=^67k D@ZrwE diff --git a/icons/obj/plumbing/fluid_ducts.dmi b/icons/obj/plumbing/fluid_ducts.dmi deleted file mode 100644 index d911e25b9c9262046862332819a328c4a2596977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 973 zcmV;;12X)HP)005u_0{{R3dEt5<0000IP)t-s0000p zGc#XbU$U~YmX?;Iqod?;13>@)00DGTPE!Ct=GbNc006*xR9JLGWpiV4X>fFDZ*Bkp zc$}4!u@1r@7=&kd3exUI+paFAjp<-tfix`&NreP{ZQ|35?bJa%w*Qik<9>4F;?$hm zPSlr{Ka~&0S#cEAZqM0lM$%D~1!r2Bo2FF+>Pf{hv*Tl+jI+`B5cPqxtMBh>owt;< zAQwPRf!vJd!*5RTL{kRXGr*oUW%nc&-zw>?(lP+_wC!j0gOaiPWQKmiOr>_-yqqQA zz=!|et%Z^W$d%u?Tr^$1eC9VXjUN3ybqNpv00Ny!L_t(&f$f@Ma)K}rg_9c?^#VnE z0Cjo*tvx~8`(LG^B-y+qEGtZ9bl(q~CFCPv19?D=DatyxDA(L8=ceVE%}Ie$VG_my zvuQHAhueJ`EAYWU>wzTE9MCSxf3I>)(`@&bA2Jsai1V~<)5?Vctvp|JxF~M4n^Q6` z?dq7$)79Z7=eoj<0^1EO)Kvj^0JA>d^dy&A-4|CZ_!fVW1H)z_XH@}vwD`xv4?1wJK^vm#=k)C^_M&k#%P8t$L9=XQ|$M{WpW|A;49`j#ZC zSD*qF*b78!!C4KoDhsGLXnr^|gl4LXqgg_G#`!;YNaXF^XRvb!;QSu~@Bjua?!X~e zPeJz1a9~oZNir32(?F$v#4Y5euk z6%;r_AUEL^I7c8@51;n?fx#T5FT?7PtYhXU486z7Q|7 zkH-lR4WzLv8qs*y0n?c8Aq<%$wHS+&63_DOzbNB3bCMIuw23EWcLSD^ECRwjF3xKS v5U;f2l{c@O!#@M(zoxtfa9Xo8wVnF|oTyjbl)(q700000NkvXXu0mjfmFmX& diff --git a/icons/obj/plumbing/plumbers.dmi b/icons/obj/plumbing/plumbers.dmi deleted file mode 100644 index ea78b135735843775f70d5dc4dc5dc39ca137d3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20997 zcmb@u2T&AU+b!DUAxIP?h=U@af=Cd_3yWAhYor(Fpy8L;)-Wr1@nV5|n&A;)O zQh3}f;o*0fBxoRVvsJ=lI7gEz_w!HEAs=~h#DtW?#CVowKzCV$Vz%az+9|>TXaalm}g?GfWm$F$e)n@fJSe0a@# z=c-@%_p{!}cW366p9GnQE@b%ZhF3VIF>aE+`5h0D2oLRr$UXT^U-k_7F{Uu2ERxi} zIgU7Zp$l$B3>tekLbF5tcxe!zB&EScm*jEiv=d; z+QzsbL96`g0DNhUfQnwcPy6L`xt0@qJ}r%1>qYY|aT+SWVBVWIWmg@G$*hpbyM-f3 zBPTzy_8#>cL&8O?-AjsP@;E}b$&l30qn|&20)c#xCf{9GUm6H_OetP0Rx6G3LkOi8=Js0UsN zDpVico(TZ+U;LC1{9W_2M+V+b$Rv5UCnfd>TuhGT1`lE{D+{Mo%JPzTxA*^vRk%~qjm7i^dubqaq?JU3#^%_m$6V5xkz04t4s zgCb)P0G2we=V%%d%9gf5j#0}_;EGQX9{zns#qw{qrnWJwCXPvu*L^K$o-c6DxfnG#qCT0{O&JC;P+kAb}dZW z3g<{d%HN?e0W$TbhZGG=so~0gY@?$W+ZCNfi;=fnj&`z*R}$^VVvyg15|#_-suI@1 z=b}V@-q5>&hE_LjRxk*l%*8?tMZB#t)s8954fsUlja3Q{g~h1Q_r|lT?Qbof9>XUU zsv=eh>TJ47X(X9?MS=94pR}9pm8#zJj>!aJ)Ql`0DfK%2oxxa2O<~B{WFag~2d~C_ zT>-7o8zs ze-KqHMf)vm_Oz#^gv8>cID_n&v(s}Z(p%O+FT;~F|E z+MkBgkTG9*{}I{ey)-CAanzwhd`LRO#{bSwhFrC7bpE8DUE+^=9x-`hjRVomITa>A=8}qiey{sD>mh?-65h$0 zRi;$$>vrM?KlEi=Hq>a45Kc}f^V8b(efRg;MoJS3Wq&S%a3HN7t_-i%HgaIxU`^8! zEl>1}=r7tf#Mdtzg>t4B)KIwe7u{+_#XqTw!1f5lp(1ZRD=~b?aQtXdF=;PNc~lOt zm46bo6ST-LBbKk0D(K)t4baF@hZlL*s}4RsKjtxaGPUzWGT$H@Q7ZC7`C_3^ibOxh zPZ*cRJG21gW74%#ZL8DL1#6a%&t@)0t3NFrT3QFbA4g6dxaPtT(%_t&%=ya(zwzhc zscqNRRd3y`S_y6aV1u7g8koPbvF4O}?t%lkZbcm*!o(-IfUN(_(W##ef83F zAiq`Tk4wFcIZJ=sXBl&IqYMDg=H3_9JYarT$~qXPWhBLM?ejgLtmPmQKK?32apit5<*GsdftR(IJ}4$025*w0Pu3$H@ew?ICv(<6pz@=_(LT>T@4P6;_4b5u(u_ zsvkbZ40~KBuRiv%S{S@jnHIO85C58bBjCMJvd#@0!K5=Dd4skcVjF}EvAIF<;>Zd9tm35c|c;rJ2q36`F`+QGmduD?&XP$Y2NTx{kL)8OWl%dFH|M08; zcB!2|H@~Cf&1)kXNv?SF)-zma&Kpx$nfBzxuJsx+PQJCE0?#Cy>w<196UOJcVQj6X zAtB`an#vHbn=>}ojzw?w3Vq=)5a5oaHB~zhOh4pueJvw!$g$u3leSGg&`I!QQIuTE z^-@UQM}Dhh2lAx*u#Thp%KDS_??yOI9-TGea$|L+h|%f_y!YVyf(5McbSp1ltj<7u z^C2!`9RM;&==H(3^~6X%YSNQ5r67ie_g5k8j_g4NyCW3yByf=>ls|}6=7U7-tPp!H zZrLf(n71}?kJtyD%%U#>uuYMoCRd@PRt#F`OZS-wz5oVWa2SD|)q6=&KUVLNYsqv+ z+gwkmr;54N2w#?D^^1%eiMgx*?Ktd#a79AYnbn976fuIaeH%Z#`>kflD9KeyY{H}- z#7EMkU%Eh>Izma@_54}V(CF@!YAMa!4=Ive9Vsjdm&YIXW?)_g80<4`|6|EKw^RkZ^ph3Ai1 zuU}G7Vg6M71ZssQ*0qXX4vH#%!foZ0@eCa{umnUww^2`yt{3>bWbs#@eRohH1J0o($yUEiUis`us zD1Qrq;t8rhtOQMtrGR}(<*TF;CpYuo&^snulG5fITWpj-x)^FC@hmI(dA_fc@~jQ# zw-3aRACj9_O0vfZn*TJY4@`)D`~p9xIbgNA3&p9^0OqTMVo_*?%k&M7hp&hwYU4DO zDQ7v@*&7#kVzJZ_j?(9%$ClBa^R$2xkkhi%VLMkjR-_?FREh^Uar?+**2A=5s>xaA zeHCuh#OB!A`ue)MvGH+$6bK7jH_9_-i|x%cH7_6SgszS8i23_uZDx!8l;2ZZRuFP- zEON*DvozD9W~*Ri%GbH;I>P27O2I&S;anno;4>9zr(4nBMjc2YLB3S#$ogpkE1h== zXi4{7<>9@l8zN6EF>W3{h`eFMTHM()MKhTyvh(&nr!uF*jBzdbIoRgHmz}d)=(G>h zI{Luqw6#@t)1zl^!21CB1b#b!^YeRJ&&nAnxQp-4F$h!9t%3D5*p$O~wT~jtA`6SB zC(bMPe0qBv>Ne*GSKjhE?Y=U!L@jQ0Ki3#jsLUl(u+2nx`dVa|5&WO??ZoCr%0Pk( zO-uoN)J=pV{4)&__&x0&p7#BE(48#`WeeM7=x+Fg$krL^KH|u<^{>jqRtf9O@AY%K zPOX;vKOh5m5s1WFgGv44Nb?-*x2;9iok9h&)6^};w2BN9WR@dju&YBX3v2&$kux#7w&KdHEg=bxc^NHst*FR4y zXSp(=m1t#eWpobs_e}q?5>sAQggFE1 z$L%{TEwg%G+n|rnn+}~cnd@OKG$GKX3itT*hd?IJUp!w<(*D^@(VP7XRvE{tVyU7Z z-=Lp(Agotg$ndJGPyd_dqS1?c%T_R9CDt)k&$@(X9fIZ`JyM=Z-qO2F%ygoo725Ya zB4s*}FUn6{V*r|q*!((4p@!=;!9sU=n5bGWKr+~GKYy9?^{$WD%vO~lqnWrwU~b17 z<*OKOeO!OW*FKNgL*Amz!2n+Qn6Es!SHjO{KRA9@<_X}SX-DSFP3-o?2Z|}u-Yzef z(Xs9wPH%Rc?vjKua&sa4>Jbg0Ed06;A6lAP+fWxZIP5TCM5T^eh@y8Zd*P2b*uwbs zqfX~s4vH?7xnM;5ynbD!tLRlcf?viTU(Je_{wl8q*$=b*t?7U1DsRXJAW_|Ey$7f# z8uaaTH@_A?AX&9CYEE&xlHmGN7B(rna*p{{gJVS1@#eM+b5lLKR&!ik8DIM6e%fQ87CWA zI)nKB3OKZEd__2nFL+@1GV785v?k$xAC*cTVaa*+u-~6p$Y+LU;1K#zyG=Rs;%OsP z>>cp^^p>HXh}#|kY1C+@!FRp&>Am%jjT=pGT#Ioi-L1ytmCHi{$OKLXRGg4OC{w;6 zQ8^-j(lP~WPF}iqm;tE?17he6vZ7|1w(R_g+9lxnx~!?;kj&z;tx~*`qx7(t)SL7= z{bDF>E9c?|1d=mA^6GGjbQrJiOYc=AfoKP8-ed`VGI6&MQMYc;YA(!IE^K~BE~jgT zZk(0WE8VX|6R^X($)BWqV}p0ZH-1bf^?m9ysE6Wo@+a)ttmjzt`v=3DjzE4nlkk4W zTqipA5qWXmwzLDwH{|3tAKjhC*=NCYSoKS%$@xyd{&HZ#|F&y?bDzD@tEDJpuw$Y( z){mDlN6G(b>kji{tK_J|{&S@B8hD8o3ET7MOC+3nruMgLSJ9>~I8t~7>KQum@pE&$ z0KbDcwE^Sq*GNn~?i^r#SiIwtvvs`k1}hHY)6em7o8Kx*+c_E|O}U>La-CvnP@hZR zIasYbp30Bw-T*JSrn4S|IVkt`)D{E^E->>C8&S?uVOZRIw*nMN=sV&&^MZ+_sYlHzuz}QcE?_dA3(K? zq$?bFj_!SsW>itm^JyUex;(UUGf;8*xx2h?CZe`u51ce7D%lhO*n1N3S==EP%aqPs zljK`ulFnVr;rufT z>Ym+pakB=^mzu7_K}Ob1V{+}dT)k03{bJs$^gmQ!30&kLmr(PVvv*1d4}$A-$@w6G zo0m@L2cH6+z=@&}-Dhn~#zLtg(*g2}*Y}DBYN%sxa3NN=;u9+S%9?cwP+;5Zh9K!~ ze1Vt{YRYnRJF9-3yKIh&S)O3a)-ZFcoOXaquwyrf4|Y_yD&!K>8vdNke*6?LW8?Jr zHchv!lT*)fEr_N@lr1k1s`8&+jhL-{(?MLr#a}`bwO@@fU0$H?n-V_t)gJI!+KlP5 z?K`icn!$XMLcH_mo^ZrC@}l&mtNO@j`(hoCGu5loHuc|eSR*cl_M`h^2IMNesP!V^{8IBF-!u(3ixBAyC}z}{nO&olr@Z794tnA=Pge`!lkZ2W zgTn5~qE+&*CAMd-bmqL9G<(`FN~skTQp;f=YS0XAscE>>PxP&o+w_lLlK>?v{e@2q zN{;ZokF~60n}xc9#*dyw3QcUu-x5R!MPonpz<3>zB*#>y62sGt=FG97e)(j!ERa}U zCFm>NOTi$LyiG{>0ConL?_(w}8f&k7#?((=1(a<+>Do(z7&*~0XUIk7Wt~)D3_kjFQJU(6}-}`@s3Z$bHPwu+2wQ^Jk&H~jhV6BWWpK>nz>Uj7qta3o(eZ6C?|Ohktu)WDQSkjHSu>M z?w}cp+R2e(Vx7OzHzVK-!fi~X-q#is)KmL)wXI83FJC6F#KT`uX}h~m?_Xe)NvanO zJ|@2qs-!0I?j6&Wk%l)qhw2{-C_S3s1fWl!-1wfD7##xkYP+N317Eq8q3t{p%p0us z_%NLM3>b9ta+K=K7b0<&=`w;V++w=1Ih1|r%&BF;lgRDNezA7BqaY87nuubej`_-+ z5AuoxD^=jXM@H+XqsP#cqR zEi?Lfv>Huw98R1Mxv?y`+U{f}U|ute-CSqZP>Q>Y*FJ~g_BbpzaXg24fW@4CA06sR zwqzzh?PO;cOYm+*J8_DVC!4;|w_i-{0$*_u%~yh=m$$;Lx`VDBB%Qo@SBB>eT0wl= z#90^9Wc1Zl>@YTf%esv0ocG*1nMqj@OI>B#KUB6}{| zdr1R>qrvR*!~XLrl8D4_Nwc0EMfOLt)Se^>uDhandcF=$tZ(G9aBut^N-)I_Ax);r zxtk6nBDQf_^JScCibJ6*LK~;cc6#dPVu;&yzc!e7wjT)dv3)O;3I7rKhG`%}V#8$X z&mD(gmxb(p%y_VbvmplQg~ZI>=^E0Vrv6!or=!*~JGiv)V!pH?MYAY<37>MXTyVLX zUh22>TVVC~&;>RZkjx2gFb;Q{g26CuZe~k<$y5Hf#CSc$i>97su7|Ll=^+7lxK6;G z7&BY6QnG|RGh`W&sEu=HLyZ}nt6sHc;u;zGC7wvoj_GRO2!@@D?!4kFIsLm=v}>O~ zv4=wVHOQE=6`(4icI<`6)h;_c5jW1aly_F7+(G=HoZ644IqKN3!fQuuz+#$@o9f!tOzZ`3KN`xmn=PeFhBo9dcxSlbv z=`kz^1_K4CckKn^!GCl4OJvNH zDqg4mN%I9VX&Mu**6HNG+{Zm=PkFmPv^6{{e6@%QRK-AXXWMvD`WKze)`wBb_9MOf z_n%v)0H~;_=1}#gUdu~TMo8up1qy7qLa3oN2b-yZ$cN2SM5U`8E8q0>_0@-x|G7>a z_8jIJc}!>4%-YyX_iUY_U#V>#Evv7TL5UcRpR4RCGNNfv&!&BObEeHt34OOomrb%d zsZjUi9>50s$L_)bvfa`9`yRy-mojIYN+m9p`CFWv3iiLY$Mc*D#CA~JmXl))@85l% zF|d&G^3UHooa$hi&(ixI+mv@gY(29)BKYt8?Xw&G20+x{twVfM$DG&Yw)VcpNhNn_ zRpR32VcN#$Z~oKFvkh$awmD>Alcq#etn;^0)@HjoZQ%@mc8F?O6RA7Iy~^1q%bJiv z&hMNRjwaQa@*dWAdf>uH@f~c=t~)e^N2LA1l&YDPq3Q+X&RFGi4YvMwGHJlpUYLBMj^W29j zncP*N0MGp%A8ovhdD2ALD7)wK$Qr*l#DcA14^oeA%Yq^!#=>R(3NKibnU6Qh=LbqN%Uxh{iF-BcfeqFkTiKAkG*mX?zT4o1gFyjWeela zYvD_8T?ii@8{;2q-!R4F!}D!vw_s*CC-7Z0`(*lYi4ygim$zf5=K={F`bi&q^O3e` z_w)C4(hT^|A?0$?h$~2v2H2d~6LUT!p>otoju->?9OEh{uko}u^ed1Rv=Rq+o;RMt zRn|SNHXg$6suYoU%^lJtiP=nQ(q=vb&OFok_&Rh!kC05(@LG|Pu@Iud7DJjrIV@s- zR9-y|@4`R5sR=Vr!Kk~K9km7DUl>~>Mb9Yrp}R21ZJzxHoi$ES*;Nf zK0zN4gv855|1NSR41!nL;!`o3X~XIr#wF42Tr8AhNQ24AOYzS-2UT&z0A+(u21T2Y z^nK2Tg*uH~+>^96p2<<)RT`-Wu?4+Z~XNgXvEwK0q!A zRA>J$nbXY^BxuUCynb=+BzG$RxjIdGxlh~%>g$&^Uq1D3XvT*;Cc6p>tl)%dX=z2; zvjIPQUvT!?Fz6`O39c{&{u?LZ(tmVV$jdhry8ov_cyFvTm};Fo*zTkM8N!#^%FV5G z&n`+6$o@WuwVnU(K|EjnzVP{f0ZK;`fSD2{n-#kqWIWRjeI`4&e^_OW5jwV^IR(re zEl|9FAM_|;2T>XQ&l4}(%DD*47h6c-Rr2X0Bx-ankB-S1vsgb@%uZ8wlZQL7f)jm zrn77jUP08X{2DxQZDJ-FX-9yI=Ph3u!qcz&^4b|pny0|aA>Y8_G~G*3nh4c<`7(E! z=|e6Y_EoOrW<{$0;L&=bqD=olz#SSUYV9_$6XMVP;uGe}m(!8=Y5|~(v?n;?^4Nf| zcgl$j(7N+-Ot6f26MIQ*W~X=KE{ouFPwD)ZC{lQz?@uFV>Y!JqVYzpR%14&L>SsRm zQXvnI%S#Wmad4l#Q)d;Avh0XChy&}d#331?w_HH>UN_D^4&7Qmfh?QD3#S#c05LYW z_ZFB(i^wf+isGsIp%=}Ml>A8RPI90M7#=!A;%-kU_mo?Qin{??*24!!D}!YCCx+sP z!)R>=9xXy|zNUht|)$3*)AjMTB|BeF?Dk=d}* z*53C}0^g!_me&PJ?PtYFM0|dnYUZV0YqY_BCO&iJ`{hGMKc0m#z;Y2PZqLj;IQg+U zm6x~$uRW_;O$1O!(r|}b%;H^gHbK(>a-dA~U^*o4&3vZEaXWI&MS1!x!VxLH6~QS7 zV2-Cn?hwFcWI)xG$ele*TghIXjCvwNQ+u;$IXLobV-bz;rB_8J#MJCEKzZfW23hes z9=S7uY_7u$(*cJQ$M-I4-%h=szuoh>hHeEu62PKLGc`)p^SWD*J%^VFCpdG|SI=R{ z03GBd+QatpA<1P>1i*(|v~J>L^VelAYOib@3>oN|&Z*~rOHST2H$M%Av-!BV zTPo^pEpG?IteZF4gr^T&WfbtVFOreYq%U3V+WxOq$2J0ctdQY%h?dZeyx*5BI!<5(P znjpdd9sRQ0Z98uba@Q$l}js;*n)?jkrs|3;A|12ADeBWLdC!vB)YeljnI_l;jid{;}-ZdhVB zw$Q{sea=1l$@^3P2_gl%U=Tq^Q?wtkM1KA<0Y#W@yIb(N*I(~X{U<;9>~vBE1~0!+ z1}#nnaDhJrLd^N^y=RLyN{D81nbg>5hb&i1wC?{|t9*ap*2!F9ep3fNe6Gh}~8Sh*A6Z|2snEo*>kx z|MLi?`!7NrRG|4FcH;k)Vt6(4^1fn;Y}@?RZ&%7lIrpcH@6UTDMSj7X88L@uYh;uH zeKf42V`F7>Tl#%zr%BVNCG~>5KBx* zoQFl)QopcNPKmPl4M;3ZnxNkC3uD>wrX`q`4FII1q(T%|1`8+vzs*J(BdYV;wJSZr zoukpLoG;}n-V{K3F>CGydrqjML%XkmN?ur%#RV z6@80+_MQU`RWD}yL~$KLXaFdzS-t|?1Ufmut4aqx-=sjXRDLM+c-pkim#Tx9IC=J& zb#=V?42H+EgMsm6uBliz-~!U|D6^OIW2=hCA=5d9(C%*S2p(z1_9)(Fun#exU7J(| z@B1bTEE~$)D`F2F^(%|P^1_fFbccn&m2M;y0Tarj99)SAJK_OXSU2@4d9>He z>$kQV(bM=dXlCBovcrm$&+%d}HDUC3uu>V#tX<&2o(9A-l=kF4uI3q-vo3`O$%!MOik0O%-STj7gN#B32!OW&)%?qz9;OJ zv;M37M|fgt<~6JYNW-intd7PxLe8yq$LK)M3t#Gfc(i7aZb0gqRj+ zgQG?}GY(wfLr1G#I(-vNyr~&4DO)!9?aDt0);uf&bG5wgYg!vB){R^Y=R7WdV5XK7 z8@-^md~G-K=0$CU5FtVtV>*?|T)6N93;^j^(Pq$#J&9`d{m1s=waQh~$3RpQ9s0eTsYTo6=nP2~@a* zIhh(qDcdrGqU!C7ZzSN!4?pyB`YAEmRi0xGVm`uEz}P~VpoPcD__mJUjHu0XtG1K& zgF~77#CH0R^F8wW7qW(L*D%?qJim44F@<$b-j|EuYnFLi9#-q~gjSTvG4==YnhU$f z>JoEe$?>Ogzg;^)U@0#BnT1ZEcAF95We3_7u}i5-wnGG8a#Y!I4@EIw%VZf%*RMc^ z6hYGk<@QBzYAF0RZ#5j0KUBf1KI|#d{7t2@T{}CZIzsvp+qPsQclLCO^s8no8P+37 z=5bM@_8Nru_COJmhR>VTZC~IO!-g|~SX@<~L=*T8?Te^IQ$Dl$R?b{_ks`oS_Dgd3 zEPl#6B`0jbQ-`>ue(foOLG#y-zNIFI(T83}oEWg6gZ~G6Y!Xavo zLBq28dP$saYBk0&eclP}_}7g+AJTmbpE2umOjo_Y+m2u^ES;4(6L2W_rTmsv|Hm%# z??EF+F0G_qMdg8l?34CSc+Tn6F8xXTp7catwmiCM!^iyVDw`lU@%PU9u)c%J7#wbW zxkp(`_lRCi0ZIm)%sgjb$_FP7H1exX_QL zH|}9=2mYkiyZ}d6V&I3`pXnvHwS?2XOl+3fqcvVujQ0w%`HGw${e=_Lb*X(EgEhsR z7A8EK3c40{i{bLlVW{rp_es#**^qQ^sR&fhrGlVGaq(ZkeoeP>vT7eeK2BV1dqZzr zXydo<$?Ls7luu#KL}rD%m^-4h)PaT}$~LDJmB-YkrRXK>YqmStmJ4cl>}AwcBETl`K$Y zkh|eu*HCWnrqAXDrO} z=bJ1tMiSj*lnI4Ea5v;THFVo|sD~*vMFeyG7;VaBq`Q#ZgQ(m10Fsix6YJEt0zv?E zVK#X7+)L}72qV9{=AZe#IQT-IvHi|$9@cfp$=viRQbkoYXkFcK1qGHUTWo#E(m|i|HuuMKjzF&>D`K$YM>Zbl{N++PH~~zolhTSai=08S1;Yzb zYB_0LzVaYNn>qLf7g&XK<|&}NOGl)P<@#Hhbf>v@Vte{8sr0`cQKj6h_vO^M%n8gk zCzVbAciO=7%wLAGl-w%Jlor>r!%)8hVW`RT-;_$%#9hETXOrAr7)0L)r*|Ps^23L% zC=QBhQ_5S2E94hL>+kC8kZ+7tUi&W`wGP5;i_U#hZ~qhW*eGKa{UyjgUJWEaOM7$9 zbLiR_6RlY-#dZz)+k2%X05}Lw|AwYOFk#8OCv*%|(f5G4gF-A=U)b*FHLpJ`^I=5s zji+1uXr+oT=P|9NI04QE!n5B;GdYyXyPDjCCMLyB@C-Xo6wr<$=bJ-~NXRP`dOim$V; zivWE}aO^*6d%+&h74rLe?osWTVC@-%Fg0(5bMZwsdW+8gDjkH7FcfPL`WBfZ)qW9k z&KAYu1!in;MMbWCvKv=~H}m1|bLPfDERjmj@cJ_eq)cDb6<0L!$!6JbNPAgd|G`En zx*kb(OqAST@h5?v>BdjBs6uw-t+OL;=Un^pd%KA24PY3NQWue1m0r5W?G!L>^*`cD zOxF8)WFldg(0||r{+u`fAIZcxW_+c+WhK{DHs40SGV?^0`!C^lMYu8riU%0~ovSjz zGD_Wt)Nb|m_9HX0gGk-KgX+R3382z3H`$scT$$dp z+FL)2-%(u1*?@~^qXXJX*j%E9%im#^5j8D=XxcoTFTl#DCTn*V_Kybv5C) z-+xeqaa6)B;fCM_T~3E8#h?u!d$eq@0B+q8^sm5gM=&}CQ3WdpyQZbf3{ha6;dkx- zQ#JpuCiP!`3ajp(0#z(~bC9QJ)9C)8=}e~HKXjM^S^PQXZ8Y?w8?`_q>74`-&Aac! z$N=3351x9}xq~tSpmaDDlpk1phTuj6zNNoHI`Z---Z@`^yuqGB-n(~de|02iAkTmT zXp7`Y^cc}mI-&%e2Ob%aF_W8Dc>MrtCBI#Bsh~jJ)AUg&Wrq`*G}Rac(&HA8nLDoz zi?5E9(SUDqTSuHwt5vt+fr;P#h&898&-D;S-Y}4Dm&x_uaBeKR^%LZAFxARZ=@xM5 zu2CEn99Taf{xHAAC#iL%)xlxKM(m4@+3vvzWx5Z$i)CgR4A`z+ph5ZL_5}p*B~t>! zb-vPVQM@ZQ+FoMz{ecx? zQyw+eZHWCtq9XhlP;)wFv<3zSE272*1~kBvP2YtiJ21~k+xY4r1MzJ|KjK9h-vUn9 zd2as1@6oGbC-m;JYIuNCB=<=I~n&5>EX?H!~OldlXzxArPdo%U$%h_(u(<&303? zfQKh$*7)Kn&-7VWpdqS`_i|&;#v%ZKRWZ=aE(tzr&TJg{=yuAB;qCAC*DPrU<}C-f#y6*%AHn5MbY3EU8@V#-0@n67k7U#?#J)Z1OFt9Y1`5$L zsHJ=c6E4autEsufI6an_F9SUTYsc=8u$Tr}kD8)PBpo3EErYq1HhSjx{ z1M~IK(Z>KJo;CJ1H9IVHiR_)pu}iHjje09XaNPeamhCaZ0j(-5QT( zdw!3P3*196dn}Jk@IZb&sjU8bOrZR`1BRLm0IvtO_cPq0OriQ`bAi**-zwztfGEA+ z*+rTjp>WL$d$Df?V;J-qSo7(!ucLQMvAQg}V1T^TP|!eRpSg~hGNGJF`8miDe=kln zNSuirIzeG?C-$MYJp!vWzKwKa(zROO(P2PvjBR@9`y3NZ_kCA!)>fmaufO>xt}7j0 zAdel>bzVD&8Qw*)Qjr|-(RmF+s+ijIQ(G!{I8-;V6sb6{|0y7fsXyCc!MEAq@> zYir2$KXJDQWPjkDw(wm_Y1aroS|v18LqMN+y|1HF@g2nwkP3!`!N1N)53y6?0w+!+ zbc_(*&x;A%+~YODGuN{8Mi?GDBdfgFwcO8t+=1~laZ5r#FKM;Ar9sJiq$r<44A1xOi|u_u%lk_z zf1vtt;cd{xRo}enCW(8xZx|V4M^uu%z^TGKnF(5l1OMSwZ>UP$`f2@7m{YH{?h4V+ zPA=orKSr-NkN(t=)Uf}}q`tdTfs|=lOg%+o^buET^go<~%dp+X9_2>Ob470yrgXHY zsR@AaAWmRz`ur#_my1J%xkAEm{FaTQqxzU#U1scrVF(z*XXA8~Jbu9sLZ^xl4ZNh1 z*>*BOwMV|^3p@cx5HWi5PRxQFNYBo0+f*McFcvD*(F7|fwP3<4eke^aeK)xOn7&E+ zgQuH>Z&5=MW<8eUE&R&eJkSO-z$CL`-3SGucwtcs3(p=9-^!zsletgeBhP@|Un`nN zT6C=w?YB(}OnuHPB>y8Jadku%gO)k{=v%P8-Q;{$))Ss|fPY>*1zMwia+yx>U$yZq zpc)!a8+EGZEuMnbm)spkgMKIHjpx?*K4IiOad>NXW-~P@<_*C3|407${$-`+yDrbE zc8I;gy%WCSKcq9Pp+ydAI70V1mphlTDH`7;C5w8jy8rF)12mg+4mr zBc46i1pJ;Rc@3OW{>m-=g3LZ_nWnR)mJyhl2z@}zSWFW#+q;vKq>=!fAXo8;gw`1^ zTw>kxKH|nh1A|wO^7PriU;1?S4_Z_ma=)0Y?}iG2k-s~it?}hkb)LuT4aA<(-WZq$ z!D$FO1cx+8Jz798_$chyM`z5}yBcI%CDK5boouSvnUJ>O$i_eTe za_qM#AOG4uuHk2fs?;J>-a{k>bl9{LZ2FSmjzx%{N^5+6KKY7`i7&Jl`FUcPd7- zY4(fn>&wI4c=LoCcYc7DgF%IwhbFQn<51(uuP;H_rkWE(hWqbjaJ`xRn>#qq84!Kr z1Ooiia$1*$u%F81+hjMY7cDoUv9`S-lAAEW*J_>t|Xln5QlU9nC z>@lHesHp{PH%%9QWx*NGpQ;~|CU&$co`>MJaI$Kd;tEGWrk60MtMZ@GO~NbbmA9qx zBKB~y##b6Md*A)8#w9-3oMWPd`Tn?)xweZuCIugt)7Q&A-rM`R)7|y$njpY|XL9pn z1VAx`U*NDT;a|=`3ldes9}}3=3-$H+>TBh7_jIzfm+CLV$5t>?d6`mhYo8%;Acls7 zbz&*ZrpWr_ko=@1H(&OhL{~05Nz73E=M92|JdR;op2<2Ka~YtFU2NQ*RuGf z6}sxqxFum&bGq>HGNubfE!`5xs}XMl;;=FlK>9zz6G?ube5(q-Y%0U?(jAB@ zzi}R^eLPXP{o-@Ej$G>VwKzuk$2iW`+q|eW&QBD@Z2ay(65k|Q@x_KooZn5o=*KbE z{e4%TTJxgT*1mV3`w_KcM=KVd@<_#1$Hk&oY-{-PbUA=$8Q?5GfSCb6IWslX++T-c zo3Do))_&CL@#&<_9eW(=$g5m@rMz$Wl82&&7O{T1a)lP2IlLEKq_^tRG<3;BY1;0s zpKy@p82Ua<`dN4Ng72ELkxccW%5yhPgP?w~0&hJkhYGaAyaH|{jq1tcI8G|I=rM$P zeSBl>TA~2>?7)=$^dS})6%6D5nfuyXiCpO`O(^n`wlE0QuM-~#f1_K-r~aAT+bzC* zb>$5hm!xS1$c7)%0FbAe`k*jz+U*_{zA0YuLZ!;%(=Ag+pYm}utMP7? z??zS1*xU3^AQL7nCON}?RIYcGoNgPS{%q1}r>8)pz{C07vRDWbsN1}z_1kYR=QP&Q^7fbs+Hmm;*k^}wCw=Iun#fz2$d4XgA70Wr{-MhghGy&^oudVGh4GB)o& z+1#;MwKLUwdK^gDWhFjS>hGUUW~_b85({5nWP(uwkhe;!Rp{!8ZM)baL|`%ZL_O+l z@q%_=NkG6{-1E)_J^i>l#N!ZSy+_r(QZS_9I}XM~*>!8j={?olOUOYzq^KY9e(E+` zaQwR~-aFb$7D=XkFEHUp#bf(SOSlnL6axYiy)$#lrP=xmCP zAwPcnxNLCCgKvkQ2JhT{EsHQK5Opk#NBDH^p2DElKlNajcF=EP7#rO7`?96F4R)O6Esq|qnd8?7iSM~rn3 zj#aGL7hqhcOEtB<*opo?v4i!B(n60Qm##2hzevJY#Fe%C-G^!Vc~t}1BeiUAh8+Ef z-7$8JQ073UDQ#s-61gh$B<{rJ2Ro%2g3#lu zqyHwA3OQaf*GxYsSZjnCnA7%zIV9Ckn8O0iaUvEs#eRQ_2AAl;2iQ;?D#c6S_nngM zDAfa%V$jy#%69FX^o=W#J&E?Gwob}}K9@qkrls)LX7p%>v5H<*n_vrY50`T)e6O6l z*XFKC+viv}kZ51SW$B`X@>`sR`3BpnOO_O`Ct!rWiW+=%^wFuvj|VA_**;q^ucZl% zt{y`6=Pz8%()QeLc2|H4-}9YeaE~x1kw9r7z$Jt-f$}Bc=X$JRDu$YEv<9k=(Kc!2GNSNv8>--%VEs%1+LCZFXuka5W#F3* zQEBe~t?8QxR^^}b#BPu@Uc=EgJ!cR?8GfJeHU48d4J@WmrEORnGyD6AeuDC(x(s<& zyQk>$rR$f^Ng6}jgt!|CerpN1JE2Y*$N$GN!@Qm@e?r_JR8Q7H}ZSQ`~U+6yu;biIgtiNpcC?kzH>V#X}*Rq_y z&Y#k?P>>r=KyGJeqDUGBC75X(A1N6XDq`0+u$o9cz1ZW3b7rmx(9G^Y{1Mr)Ja)_h zduEU-H7^|xd^Es|{2t@Np8+S*ITb1(kX5?0nCcp}TIWVQ*yWgtVfBp>{?%0!q&f#Z) zC!1h0bZ_Hb{FR`7N>E@b)s;FN+35{-2zhza$ROM1C_V;8!ke|P^0mhK&DYyb!7hbs4GcN!?!W2VADn|6fg2;v-|5cIjsS272J&x&N_?tG|nKg&%iyB^n?vQ&*$59so)JFGci?7I$Jjj#Mvp z>jw8Z1YuA3JX(K+?0Hqw`4vQs!306QuXjd8!2^=a+^y#eH* zW~`j{C!MK>l*xZNgg!Y<=gWE9X&RI}&8yEw3Rm&*31{MXpJ}dJ43$K~JCh0=zX>dt z8jMTB039bQS@;2LKsr^vz4h0#O)Nae(fc@Ux4rsVC{?D{UT=LK+VsrhNzV5>>7PG*WJEQZ+m1)7BfiNk#A3a`Vc; zV1ZSE&)+e94{vu{h=f#HJEU#(Xv_b%)#r)4zl`XzA5hbWEF9{_{3=koy~MlL>D}Dp zeHLnvA1|6d_|aW2ZA}rE@GIDEm34qcW<+tTyni8pvzTwn;`LUcptBl_h2&Ojh}AVq z86eoypO4y;K+!T9Nl_VeAac|-r@-Q=L%m;gqWJpP;5B<6Fy4_Q!i&NvOW@#9`fCs6 zf)UAh4X=jzgAmo;KgM5&6VF_V{$~58vE*(f$q@~KX6bji%>45*G8-rWKXK!Aq?Qzc zau^t3)7R(_Ykj9$0*nsu06i7k{hihd)AiS`6uO#(uoR_C*|&8-Y)Q!Ry-*c1LhhZG zfuvnG+ru6kAWht+EfA=T0ukuD>w^t{S%-nYW-S9A3xaacxBS}XA3{An)W~*c0{?H< z1PN>r-c{=D3NeJ0znwk_P;%gH^~wy3g$M(1uy8{<79iy${cGT(hR%`gULQ=-JtCPs zb-7kxR}4bez%gW--a?0$TMmy+%xvJB9Y79OZ!&(wyXP%nZ} zyQ8R>oN%sy*q*NlLEBUJsuf>KcqIq5bytpOrt6A`?KBLrFyAsv%iy+xwN<1|K`uQz zNg8O$Rmu*KWmS$>+>|UmhpaDFg{aCtvx5<@<+pp@OvRga3|Q1n6&7M;p!3CNXx$}U zo5j)~N8l_m;RD-DUec<_Re3dbHqwC|;ZdO}AduvI*uGeY+E3)jw!LAax`=XE30KB5 zR$^~L;^n;*WFUtGubm;4%EUnDOJJf5mNi}v`-!;x{t8`^F_B6%pNGm=r@F3G#)J!c z3q|*qFMqxn$!roGur;8!Vlzi2z(mf1!HNXkX=(tEtFyk7C={^@a73!+bxe|&=oq1T zrbbYGD49t#3UR@0{(3>BY3kgauv85o6o8rd(HtlRcg4q7jbtn71*OrH&! z{*_WmfKyt)gr^7VS#oi)z{!?1jHcn!A**8W!(SP|qE{`rvYXPqL0G5}D-|bFZ|5h_ z^}9yNC$c6cXSyJWQ7(Qw`{FHT$BeQMtLE}&JRKL)ZO403F7Nlo5cjMIxkk0O3bXTdO9gtr_FwO>2_568`zzg+RJBcLSW*K7pz-;gK5Q^Up8P z+HdG+94wK;@8zZOJe6uOzt_VYG}Ly`EP~TaVvl@L+Gv9n-SbFtXTz-2?b@7?8Aj^T zxKdzu{%t4`>=GM3a)Li)mLs8|s<2#)M02$s`G!I~kpcA20C1AEA}nDi;k2~#yX|dW za)P=F)ds>=9{c*o^z5H^k0Z;^O+GIw!vE&*3t3SzKl$H`EyM1Yz9A#Sh2_-p zHbx|7*{lzNyTO94=SPc82&0ncAv67ojMhXa6rMfmR4Yoh6Zb~Y7q2W8Li*OWl`BE<>E|lPEcLjUSO#Eu_XmPQw z3{)N&^ntj^l3&IUl;s6QUlb5hiPZZ{RNQ`Qu8u-CX6>Ny4bu=dZ~JrZ8AtLzGt438 zB%@~YCkL3_-(MjZlSuxH3=a1>Z?r#qcx#YPf0S!A=ACbpVYbpz$e^r(ed3$hmH}sk zY+G5$W$>YPh8Ybt*3w@%#c)c;Sk0DIBa2hjJ`Nm+U3r z@ucob*AukTjrXMfk@&1xi5T?7ktS|;ogwkYVR>co5{wbRFC-*i=E)le*Y(L+peo96 z8dC0;39g!`d!XnU%ava_sTaU!5Hn_Q5~Qx%mWwA{;`~2u7 zkJID>b3Gk(y@QvHeJr6ET~Q zy4JW2trst;?y=ogzL$Db0v8n(=|2{K&oCC+&muZEVAK+|CD)%RWtg%L-?|&-?Cfm( zi8mYxo#Lx{z|)VPlAv$dOG@pWF@)(fmU%hD$bAcD4Lxgf32?DaTsDl2rd=kiQao#; zN!LEW!>H1gS*BAwmq%YJAn#8LjCk}Rxcd&S`X!r@7T;<-+VE@)5#Ns!Xh&xWaQRl} zR(bo%g|)xavi6Ao=>_t4PmcQQQ|`ze(qu%=^!9S|iZh~Nijg~@dcpOuOR$9dPSaynAiCZkHgYj$1gv8L&@e6XZiWoDT`z#+LE6m!DY#} zK4(}_v}4Dd=5p$QngQe^5kG3FX6h;UEl}2xJp%a_{?8L$4|@nyO`z)1yAlYuIPH8b zVl`FN#?fV9&H;*G@mjseHtv7Ajy=-gy1Wa<`MQrEKlVc!7L0dRtc<