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 32277ffac659..000000000000
Binary files a/icons/obj/plumbing/connects.dmi and /dev/null differ
diff --git a/icons/obj/plumbing/fluid_ducts.dmi b/icons/obj/plumbing/fluid_ducts.dmi
deleted file mode 100644
index d911e25b9c92..000000000000
Binary files a/icons/obj/plumbing/fluid_ducts.dmi and /dev/null differ
diff --git a/icons/obj/plumbing/plumbers.dmi b/icons/obj/plumbing/plumbers.dmi
deleted file mode 100644
index ea78b1357358..000000000000
Binary files a/icons/obj/plumbing/plumbers.dmi and /dev/null differ