diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm
index cb6d9f302ade..aec12ea281fb 100644
--- a/_maps/map_files/stations/cerestation.dmm
+++ b/_maps/map_files/stations/cerestation.dmm
@@ -35460,7 +35460,7 @@
color = "#954535"
},
/turf/simulated/floor/plasteel{
- icon_state = "neutralcorner"
+ icon_state = "neutralfull"
},
/area/station/hallway/primary/fore/north)
"emw" = (
@@ -49509,8 +49509,8 @@
/obj/machinery/door/airlock/security/glass{
name = "Escape Shuttle Cell"
},
-/obj/effect/mapping_helpers/airlock/access/all/security/brig,
-/turf/simulated/floor/plating,
+/obj/effect/mapping_helpers/airlock/access/all/security/doors,
+/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"iWF" = (
/obj/machinery/atmospherics/unary/portables_connector{
@@ -78557,10 +78557,10 @@
/obj/machinery/door/airlock/security/glass{
name = "Escape Shuttle Cell"
},
-/obj/effect/mapping_helpers/airlock/access/all/security/brig,
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/effect/mapping_helpers/airlock/access/all/security/doors,
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"shh" = (
@@ -81320,18 +81320,6 @@
icon_state = "browncorner"
},
/area/station/supply/office)
-"sZq" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4;
- color = "#954535"
- },
-/turf/simulated/floor/plasteel,
-/area/station/hallway/primary/fore/north)
"sZz" = (
/obj/effect/spawner/airlock/w_to_e,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -84134,9 +84122,7 @@
dir = 4;
color = "#954535"
},
-/turf/simulated/floor/plasteel{
- icon_state = "neutralcorner"
- },
+/turf/simulated/floor/plasteel,
/area/station/hallway/primary/fore/north)
"tXf" = (
/obj/structure/cable/orange{
@@ -91330,20 +91316,6 @@
icon_state = "darkyellow"
},
/area/station/engineering/control)
-"weN" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4;
- color = "#954535"
- },
-/turf/simulated/floor/plasteel{
- icon_state = "neutralfull"
- },
-/area/station/hallway/primary/fore/north)
"weW" = (
/obj/effect/spawner/window/reinforced/polarized/grilled{
id = "bridge"
@@ -98462,6 +98434,13 @@
"ykj" = (
/turf/simulated/floor/plasteel,
/area/station/security/prisonlockers)
+"ykC" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ color = "#954535"
+ },
+/turf/simulated/floor/plasteel,
+/area/station/hallway/primary/fore/north)
"ykM" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -132798,7 +132777,7 @@ tpA
eMh
dwE
vuY
-sGY
+ykC
cWn
gXb
cWn
@@ -134083,7 +134062,7 @@ abW
aKp
dwg
dTC
-sZq
+qtB
aKp
npV
npV
@@ -134340,7 +134319,7 @@ abW
aKp
dxt
dQg
-weN
+qtB
fXC
fXC
fXC
@@ -134597,7 +134576,7 @@ cMz
cMz
dxw
dTI
-sZq
+qtB
fXC
gYN
hUg
diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm
index 1939e07b0136..adcce788c996 100644
--- a/_maps/map_files/stations/deltastation.dmm
+++ b/_maps/map_files/stations/deltastation.dmm
@@ -229,6 +229,14 @@
/obj/structure/lattice/catwalk,
/turf/space,
/area/station/engineering/solar/auxstarboard)
+"adh" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/space,
+/area/space/nearstation)
"ado" = (
/obj/item/radio/intercom{
name = "south bump";
@@ -16471,10 +16479,10 @@
dir = 1;
layer = 2.9
},
-/obj/machinery/atmospherics/unary/vent_pump/on{
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bax" = (
/obj/structure/window/reinforced{
@@ -16545,10 +16553,10 @@
dir = 1;
layer = 2.9
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"baF" = (
/turf/simulated/wall,
@@ -17348,11 +17356,8 @@
/obj/structure/chair{
dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "vault"
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bcB" = (
/obj/effect/turf_decal/delivery/hollow,
@@ -17908,14 +17913,14 @@
},
/area/station/supply/lobby)
"bdZ" = (
-/obj/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/obj/machinery/light/small,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bea" = (
/obj/machinery/hologram/holopad,
@@ -18090,6 +18095,21 @@
icon_state = "neutralfull"
},
/area/station/engineering/atmos)
+"beN" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/turf/space,
+/area/space/nearstation)
"beP" = (
/obj/machinery/atmospherics/pipe/manifold/visible/yellow,
/obj/effect/turf_decal/stripes/line{
@@ -20604,16 +20624,13 @@
},
/area/station/supply/lobby)
"blv" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"blx" = (
/obj/structure/cable{
@@ -20742,13 +20759,10 @@
/turf/simulated/floor/plasteel,
/area/station/supply/miningdock)
"blO" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"blR" = (
/obj/structure/sink/kitchen/old{
@@ -20989,14 +21003,14 @@
dir = 8
},
/obj/item/kirbyplants,
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bmq" = (
/obj/structure/window/reinforced{
dir = 1;
layer = 2.9
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bmr" = (
/obj/structure/window/reinforced{
@@ -21007,7 +21021,7 @@
dir = 4
},
/obj/item/kirbyplants,
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bms" = (
/obj/structure/window/reinforced{
@@ -21231,18 +21245,10 @@
},
/area/station/service/hydroponics)
"bmS" = (
-/obj/structure/showcase{
- density = 0;
- dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
- pixel_x = 9;
- pixel_y = 2
- },
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
+/obj/machinery/firealarm/directional/east,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -21289,10 +21295,10 @@
},
/area/station/hallway/primary/fore/south)
"bmY" = (
-/obj/structure/window/reinforced,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
+/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
+/obj/machinery/light,
/turf/simulated/floor/plasteel/dark,
/area/station/aisat)
"bmZ" = (
@@ -21534,17 +21540,11 @@
/obj/structure/chair{
dir = 1
},
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "vault"
- },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bnP" = (
/obj/machinery/hologram/holopad,
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "vault"
- },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bnR" = (
/obj/structure/window/reinforced,
@@ -21650,9 +21650,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bof" = (
/obj/machinery/hydroponics/constructable,
@@ -21741,6 +21739,10 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
+/obj/structure/extinguisher_cabinet{
+ name = "north bump";
+ pixel_y = 30
+ },
/turf/simulated/floor/bluegrid,
/area/station/telecomms/chamber)
"boo" = (
@@ -22218,23 +22220,9 @@
},
/turf/space,
/area/space/nearstation)
-"bpn" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/structure/window/reinforced{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
"bpo" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/turf/simulated/floor/plasteel/dark,
+/obj/machinery/light/small,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bpp" = (
/obj/structure/cable/yellow{
@@ -22252,7 +22240,7 @@
/area/station/engineering/control)
"bpq" = (
/obj/structure/window/reinforced,
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bpr" = (
/obj/structure/shuttle/engine/propulsion/burst{
@@ -22268,7 +22256,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bpu" = (
/obj/structure/lattice,
@@ -22956,13 +22944,10 @@
/turf/simulated/floor/plasteel,
/area/station/security/armory/secure)
"brp" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
+/obj/machinery/light/small{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"brq" = (
/obj/structure/lattice,
@@ -23148,17 +23133,16 @@
/turf/simulated/floor/plasteel,
/area/station/maintenance/starboard2)
"brT" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+ dir = 6
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
+ dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"brU" = (
/obj/machinery/navbeacon{
@@ -23205,11 +23189,8 @@
/area/station/service/hydroponics)
"bsb" = (
/obj/structure/chair,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "vault"
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bsc" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on,
@@ -23639,10 +23620,10 @@
/area/station/engineering/atmos/distribution)
"btk" = (
/obj/structure/window/reinforced,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
+/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"btl" = (
/obj/machinery/atmospherics/binary/pump{
@@ -23779,10 +23760,10 @@
/area/station/engineering/atmos)
"btx" = (
/obj/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bty" = (
/turf/simulated/floor/plasteel{
@@ -24416,16 +24397,15 @@
},
/area/station/security/processing)
"bvv" = (
-/obj/structure/window/reinforced,
/obj/machinery/camera{
c_tag = "AI Minisatellite North";
dir = 1;
network = list("SS13","Minisat")
},
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
+/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bvx" = (
/obj/machinery/power/apc/directional/east,
@@ -24873,18 +24853,15 @@
},
/area/station/hallway/primary/starboard/south)
"bwM" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/machinery/camera{
c_tag = "AI Minisatellite NorthWest";
dir = 8;
network = list("SS13","Minisat")
},
-/turf/simulated/floor/plasteel/dark,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bwN" = (
/turf/simulated/wall/r_wall,
@@ -25340,21 +25317,18 @@
},
/area/station/hallway/primary/starboard/north)
"bxM" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/camera{
c_tag = "AI Minisatellite NorthEast";
dir = 4;
network = list("Minisat","SS13");
pixel_y = -22
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/dark,
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bxN" = (
/obj/structure/table,
@@ -26637,18 +26611,14 @@
/turf/simulated/floor/plasteel,
/area/station/public/toilet/lockerroom)
"bBv" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
/obj/machinery/camera{
c_tag = "AI Minisatellite South";
network = list("SS13","Minisat")
},
-/turf/simulated/floor/plasteel/dark,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bBy" = (
/turf/simulated/floor/plasteel,
@@ -30253,30 +30223,31 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
},
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bJP" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bJQ" = (
/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
+/obj/machinery/camera{
+ c_tag = "AI Minisatellite West";
+ dir = 8;
+ network = list("SS13","Minisat")
+ },
+/obj/machinery/light/small{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bJR" = (
/obj/structure/table/reinforced,
@@ -30363,33 +30334,31 @@
/turf/simulated/floor/greengrid,
/area/station/turret_protected/ai)
"bJX" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
-"bJY" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
+/obj/machinery/camera{
+ c_tag = "AI Minisatellite Foyer Access";
+ dir = 4;
+ network = list("SS13","Minisat")
},
-/obj/structure/window/reinforced{
- dir = 4
+/obj/machinery/light/small{
+ dir = 8
},
+/obj/structure/window/reinforced,
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
+"bJY" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bJZ" = (
/obj/structure/closet/emcloset,
@@ -31087,44 +31056,11 @@
/obj/structure/lattice,
/turf/space,
/area/space/nearstation)
-"bLS" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/turf/space,
-/area/space/nearstation)
-"bLT" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
"bLU" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
+/obj/structure/sign/vacuum{
+ pixel_x = 32
},
+/obj/machinery/atmospherics/pipe/simple/hidden,
/turf/simulated/floor/plasteel/dark,
/area/station/aisat)
"bLW" = (
@@ -31900,16 +31836,6 @@
},
/turf/simulated/floor/plasteel/dark,
/area/station/engineering/ai_transit_tube)
-"bNY" = (
-/obj/item/kirbyplants,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 8
- },
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "vault"
- },
-/area/station/engineering/ai_transit_tube)
"bNZ" = (
/obj/machinery/camera{
c_tag = "Chief Engineer's Office";
@@ -33254,22 +33180,8 @@
},
/area/station/legal/magistrate)
"bRr" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
-"bRs" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/machinery/firealarm/directional/east,
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"bRt" = (
/obj/machinery/computer/teleporter,
@@ -33278,58 +33190,15 @@
},
/turf/simulated/floor/plating,
/area/station/turret_protected/aisat)
-"bRu" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/machinery/camera{
- c_tag = "AI Minisatellite West";
- dir = 8;
- network = list("SS13","Minisat")
- },
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
-"bRv" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/machinery/camera{
- c_tag = "AI Minisatellite East";
- dir = 4;
- network = list("Minisat","SS13");
- pixel_y = -22
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
"bRx" = (
-/obj/structure/showcase{
- density = 0;
- dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
- pixel_x = -9;
- pixel_y = 2
- },
/obj/machinery/atmospherics/pipe/simple/visible/cyan{
dir = 5
},
/obj/effect/turf_decal/stripes/line,
-/turf/simulated/floor/plating,
-/area/station/turret_protected/aisat)
-"bRz" = (
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/turf/simulated/floor/plasteel{
- icon_state = "grimy"
+/obj/structure/sign/nosmoking_2{
+ pixel_x = -32
},
+/turf/simulated/floor/plating,
/area/station/turret_protected/aisat)
"bRA" = (
/obj/machinery/door/airlock/medical/glass,
@@ -33366,39 +33235,10 @@
icon_state = "grimy"
},
/area/station/turret_protected/aisat)
-"bRG" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/structure/lattice/catwalk,
-/turf/space,
-/area/space/nearstation)
-"bRJ" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/machinery/light/small{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
"bRL" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
-"bRM" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/structure/sign/vacuum{
- pixel_y = 32
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/obj/machinery/light{
+ dir = 1
},
/turf/simulated/floor/plasteel/dark,
/area/station/aisat)
@@ -33438,10 +33278,12 @@
/turf/simulated/floor/plasteel/dark,
/area/station/engineering/ai_transit_tube)
"bRU" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
/turf/simulated/floor/plasteel/dark,
/area/station/engineering/ai_transit_tube)
"bRV" = (
@@ -34082,10 +33924,12 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
icon_state = "grimy"
},
@@ -34165,9 +34009,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "vault"
@@ -34225,26 +34067,19 @@
},
/area/station/aisat)
"bTO" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
-"bTR" = (
-/obj/machinery/hologram/holopad,
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "vault"
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
},
+/turf/simulated/floor/plasteel/dark,
/area/station/aisat)
"bTS" = (
/obj/structure/cable{
@@ -34260,22 +34095,22 @@
},
/turf/simulated/floor/plasteel/dark,
/area/station/aisat)
-"bTT" = (
+"bTU" = (
+/obj/structure/transit_tube/station{
+ dir = 8
+ },
+/obj/structure/transit_tube_pod,
/obj/structure/cable{
- d1 = 2;
+ d1 = 4;
d2 = 8;
- icon_state = "2-8"
+ icon_state = "4-8"
},
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
-"bTU" = (
-/obj/structure/window/reinforced{
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/structure/transit_tube/station{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
},
-/obj/structure/transit_tube_pod,
/turf/simulated/floor/plasteel/dark,
/area/station/aisat)
"bTV" = (
@@ -34318,14 +34153,19 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
/turf/simulated/floor/plasteel/dark,
/area/station/engineering/ai_transit_tube)
"bUf" = (
-/obj/item/kirbyplants,
/obj/machinery/alarm/directional/east,
/obj/machinery/light/small{
dir = 4
},
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "vault"
@@ -34543,17 +34383,17 @@
/area/station/hallway/primary/port/east)
"bUJ" = (
/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/turf/space,
/area/space/nearstation)
"bUK" = (
@@ -34760,16 +34600,11 @@
/area/station/hallway/primary/central/east)
"bVf" = (
/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
+ dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
+ dir = 4
},
/turf/space,
/area/space/nearstation)
@@ -34816,6 +34651,7 @@
pixel_x = -28;
req_access_txt = "75"
},
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -35007,21 +34843,15 @@
/obj/machinery/light/small{
dir = 4
},
+/obj/machinery/camera{
+ c_tag = "Minisat Power Station Access";
+ dir = 8;
+ network = list("SS13","Minisat")
+ },
+/obj/machinery/firealarm/directional/east,
/turf/simulated/floor/plasteel/dark,
/area/station/aisat)
"bVJ" = (
-/obj/structure/sign/nosmoking_2{
- pixel_x = -32
- },
-/obj/structure/showcase{
- density = 0;
- dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
- pixel_x = -9;
- pixel_y = 2
- },
/obj/structure/cable{
d1 = 1;
d2 = 2;
@@ -35030,6 +34860,7 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
+/obj/machinery/firealarm/directional/west,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -35044,16 +34875,6 @@
icon_state = "dark"
},
/area/station/turret_protected/aisat)
-"bVN" = (
-/obj/item/kirbyplants,
-/obj/machinery/firealarm/directional/east,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
-/area/station/turret_protected/aisat)
"bVO" = (
/obj/structure/showcase{
density = 0;
@@ -35099,32 +34920,13 @@
icon_state = "dark"
},
/area/station/turret_protected/aisat)
-"bVU" = (
-/obj/machinery/firealarm/directional/west,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
-/area/station/turret_protected/aisat)
-"bVV" = (
-/obj/structure/window/reinforced,
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/machinery/firealarm/directional/west,
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
"bVW" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
-"bVX" = (
-/obj/structure/window/reinforced,
-/obj/machinery/power/apc/directional/south,
-/obj/structure/cable,
+/obj/structure/extinguisher_cabinet{
+ name = "west bump";
+ pixel_x = -27
+ },
/turf/simulated/floor/plasteel/dark,
/area/station/aisat)
"bWh" = (
@@ -35466,6 +35268,7 @@
network = list("SS13","Minisat")
},
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/plating,
/area/station/turret_protected/aisat)
"bXn" = (
@@ -35593,20 +35396,13 @@
icon_state = "yellow"
},
/area/station/engineering/break_room)
-"bXG" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/space,
-/area/space/nearstation)
"bXH" = (
/obj/item/kirbyplants,
/obj/machinery/light,
+/obj/item/radio/intercom{
+ name = "south bump";
+ pixel_y = -28
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -35684,7 +35480,7 @@
/obj/item/kirbyplants,
/obj/structure/extinguisher_cabinet{
name = "east bump";
- pixel_x = 30
+ pixel_x = 27
},
/turf/simulated/floor/plasteel{
dir = 8;
@@ -35762,21 +35558,6 @@
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
/area/station/service/library)
-"bYl" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
- },
-/turf/space,
-/area/space/nearstation)
"bYm" = (
/obj/structure/disposalpipe/segment/corner{
dir = 1
@@ -35932,17 +35713,8 @@
/area/station/legal/courtroom)
"bYJ" = (
/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/space,
/area/space/nearstation)
"bYK" = (
@@ -37460,6 +37232,10 @@
},
/obj/item/hand_tele,
/obj/machinery/power/apc/directional/south,
+/obj/structure/extinguisher_cabinet{
+ name = "west bump";
+ pixel_x = -27
+ },
/turf/simulated/floor/plating,
/area/station/turret_protected/aisat)
"ccy" = (
@@ -39274,15 +39050,12 @@
/turf/simulated/floor/wood,
/area/station/legal/lawoffice)
"chS" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/dark,
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"chW" = (
/obj/machinery/computer/message_monitor{
@@ -41872,7 +41645,7 @@
/obj/structure/window/reinforced{
dir = 8
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"cpd" = (
/obj/structure/window/reinforced{
@@ -41885,20 +41658,16 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"cpe" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"cpf" = (
/obj/machinery/atmospherics/unary/vent_pump/on,
@@ -42661,20 +42430,17 @@
/obj/structure/window/reinforced{
dir = 8
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"cqL" = (
/obj/structure/chair,
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "vault"
- },
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"cqM" = (
/obj/structure/window/reinforced{
dir = 4
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"cqN" = (
/obj/machinery/field/generator{
@@ -43127,7 +42893,7 @@
dir = 8
},
/obj/item/kirbyplants,
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"csl" = (
/obj/structure/window/reinforced,
@@ -43135,7 +42901,7 @@
dir = 4
},
/obj/item/kirbyplants,
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/transparent/glass,
/area/station/aisat)
"csm" = (
/obj/machinery/light{
@@ -45753,15 +45519,6 @@
/turf/simulated/floor/plasteel/dark,
/area/station/service/library)
"czz" = (
-/obj/structure/showcase{
- density = 0;
- dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
- pixel_x = 9;
- pixel_y = 2
- },
/obj/machinery/light_switch{
dir = 8;
name = "east bump";
@@ -46973,25 +46730,6 @@
"cDa" = (
/turf/simulated/floor/plasteel,
/area/station/supply/expedition)
-"cDb" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/external{
- name = "MiniSat Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/minisat,
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
"cDc" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 1
@@ -49537,11 +49275,6 @@
},
/turf/simulated/floor/plasteel/white,
/area/station/science/xenobiology)
-"cKl" = (
-/obj/structure/window/reinforced,
-/obj/structure/lattice/catwalk,
-/turf/space,
-/area/space/nearstation)
"cKm" = (
/obj/structure/cable{
d1 = 2;
@@ -53279,6 +53012,15 @@
},
/turf/simulated/floor/plating,
/area/station/maintenance/port)
+"cYg" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"cYh" = (
/obj/structure/closet/wardrobe/yellow,
/obj/machinery/requests_console{
@@ -62890,6 +62632,19 @@
icon_state = "neutralcorner"
},
/area/station/hallway/primary/central/se)
+"dRi" = (
+/obj/effect/spawner/window/reinforced/grilled,
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plating,
+/area/station/aisat)
"dRj" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -64841,6 +64596,16 @@
icon_state = "whitepurple"
},
/area/station/science/toxins/mixing)
+"ebW" = (
+/obj/item/radio/intercom{
+ name = "east bump";
+ pixel_x = 28
+ },
+/obj/item/kirbyplants,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/station/turret_protected/aisat)
"ecq" = (
/obj/structure/cable{
d2 = 8;
@@ -66025,22 +65790,6 @@
/obj/effect/spawner/random_spawners/grille_often,
/turf/simulated/floor/plating,
/area/station/maintenance/starboard)
-"eHx" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
-/area/station/aisat)
"eHD" = (
/obj/machinery/photocopier,
/turf/simulated/floor/plasteel{
@@ -66290,6 +66039,14 @@
},
/turf/simulated/floor/plasteel,
/area/station/security/range)
+"eOk" = (
+/obj/structure/lattice,
+/obj/machinery/camera{
+ c_tag = "AI Minisatellite Foyer Exterior South";
+ network = list("SS13","Minisat")
+ },
+/turf/space,
+/area/space/nearstation)
"eOt" = (
/obj/structure/table/glass,
/obj/structure/cable{
@@ -67006,6 +66763,16 @@
},
/turf/simulated/floor/wood,
/area/station/legal/lawoffice)
+"fkv" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"fkz" = (
/obj/machinery/atmospherics/portable/canister/toxins,
/obj/effect/decal/cleanable/dirt,
@@ -67523,6 +67290,13 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plating,
/area/station/maintenance/port)
+"fAX" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced,
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"fBl" = (
/obj/machinery/power/apc/directional/south,
/obj/structure/cable{
@@ -67596,6 +67370,30 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/wood,
/area/station/command/office/ntrep)
+"fDd" = (
+/obj/effect/spawner/window/reinforced/grilled,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/station/aisat)
"fDu" = (
/obj/structure/disposalpipe/segment,
/obj/structure/disposalpipe/segment{
@@ -68423,6 +68221,16 @@
icon_state = "neutralcorner"
},
/area/station/hallway/primary/central/south)
+"gbo" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/turf_decal/delivery/hollow,
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"gbO" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance/two,
@@ -68911,6 +68719,14 @@
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
/area/station/hallway/secondary/entry/east)
+"grH" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "vault"
+ },
+/area/station/aisat)
"gsC" = (
/obj/structure/cable{
d1 = 1;
@@ -68924,6 +68740,15 @@
/obj/effect/mapping_helpers/airlock/access/all/supply/cargo_bay,
/turf/simulated/floor/plasteel,
/area/station/maintenance/fore2)
+"gtb" = (
+/obj/structure/lattice,
+/obj/machinery/camera{
+ c_tag = "AI Minisatellite Foyer Exterior North";
+ network = list("SS13","Minisat");
+ dir = 1
+ },
+/turf/space,
+/area/space/nearstation)
"gti" = (
/obj/structure/flora/rock/jungle,
/obj/structure/flora/ausbushes/fullgrass,
@@ -69292,6 +69117,13 @@
icon_state = "neutralfull"
},
/area/station/hallway/primary/central/north)
+"gFb" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/turf_decal/delivery/hollow,
+/obj/structure/cable,
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"gFm" = (
/obj/structure/window/reinforced{
dir = 1
@@ -69510,6 +69342,10 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/station/maintenance/port)
+"gLg" = (
+/obj/structure/sign/poster/contraband/borg_fancy_2,
+/turf/simulated/wall,
+/area/station/aisat)
"gLm" = (
/obj/machinery/door/airlock/medical{
name = "Operating Theatre 2"
@@ -69625,6 +69461,14 @@
icon_state = "whitepurple"
},
/area/station/science/break_room)
+"gNA" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"gNB" = (
/obj/structure/cable,
/obj/effect/spawner/window/reinforced/polarized/grilled{
@@ -70509,6 +70353,14 @@
},
/turf/simulated/floor/plating,
/area/station/service/chapel/office)
+"hse" = (
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc/directional/north,
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"hsp" = (
/obj/machinery/atmospherics/pipe/simple/hidden,
/obj/structure/cable{
@@ -70588,6 +70440,17 @@
/obj/machinery/economy/vending/snack,
/turf/simulated/floor/plasteel/dark,
/area/station/legal/courtroom)
+"hwa" = (
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 5
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"hwI" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/random_spawners/blood_maybe,
@@ -70683,12 +70546,21 @@
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/entry/west)
"hyX" = (
-/obj/structure/lattice/catwalk,
/obj/structure/transit_tube/curved/flipped{
dir = 4
},
-/turf/space,
-/area/space/nearstation)
+/obj/effect/spawner/window/reinforced/grilled,
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/plating,
+/area/station/aisat)
"hzb" = (
/obj/machinery/flasher_button{
id = "Execution";
@@ -71076,6 +70948,16 @@
},
/turf/simulated/floor/plasteel,
/area/station/engineering/control)
+"hMy" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/window/reinforced,
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"hMD" = (
/obj/machinery/camera{
c_tag = "Research Toxin Mixing";
@@ -71140,6 +71022,12 @@
icon_state = "dark"
},
/area/station/security/brig)
+"hNW" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/space,
+/area/space/nearstation)
"hOr" = (
/obj/structure/chair/sofa/right{
color = "#A30FAF";
@@ -72615,15 +72503,6 @@
},
/turf/simulated/floor/plasteel/dark,
/area/station/service/bar)
-"iIS" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/space,
-/area/space/nearstation)
"iIY" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
@@ -73426,6 +73305,14 @@
icon_state = "darkblue"
},
/area/station/medical/morgue)
+"jfy" = (
+/obj/item/radio/intercom{
+ name = "west bump";
+ pixel_x = -28
+ },
+/obj/item/kirbyplants,
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"jfB" = (
/obj/structure/morgue{
dir = 8
@@ -74357,6 +74244,10 @@
icon_state = "redcorner"
},
/area/station/security/permabrig)
+"jLQ" = (
+/obj/machinery/status_display,
+/turf/simulated/wall,
+/area/station/aisat)
"jMb" = (
/obj/machinery/door/window{
base_state = "right";
@@ -75712,6 +75603,29 @@
},
/turf/simulated/floor/plasteel/white,
/area/station/medical/sleeper)
+"kAw" = (
+/obj/machinery/hologram/holopad,
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "vault"
+ },
+/area/station/aisat)
"kAx" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
@@ -75822,6 +75736,16 @@
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
/area/station/medical/virology)
+"kDU" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"kEt" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/delivery,
@@ -76022,6 +75946,16 @@
icon_state = "wood-broken6"
},
/area/station/maintenance/library)
+"kJg" = (
+/obj/item/kirbyplants,
+/obj/item/radio/intercom{
+ name = "east bump";
+ pixel_x = 28
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/station/telecomms/chamber)
"kJB" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
@@ -76186,6 +76120,16 @@
icon_state = "neutral"
},
/area/station/maintenance/aft)
+"kQd" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"kQt" = (
/obj/machinery/chem_master,
/turf/simulated/floor/engine,
@@ -76281,6 +76225,16 @@
},
/turf/simulated/floor/engine,
/area/station/engineering/controlroom)
+"kTj" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/turf/space,
+/area/space/nearstation)
"kTw" = (
/obj/machinery/fishtank/tank,
/turf/simulated/floor/plating,
@@ -77181,16 +77135,6 @@
icon_state = "neutral"
},
/area/station/maintenance/port)
-"lvH" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
-/area/station/aisat)
"lvO" = (
/obj/structure/cable{
d1 = 4;
@@ -77433,6 +77377,14 @@
icon_state = "whitebluecorner"
},
/area/station/medical/reception)
+"lBJ" = (
+/obj/item/kirbyplants,
+/obj/item/kirbyplants,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "vault"
+ },
+/area/station/engineering/ai_transit_tube)
"lBR" = (
/turf/simulated/wall,
/area/station/hallway/primary/starboard/north)
@@ -77445,6 +77397,17 @@
/obj/effect/turf_decal/delivery,
/turf/simulated/floor/plasteel,
/area/station/maintenance/electrical)
+"lCU" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/turf/space,
+/area/space/nearstation)
"lDf" = (
/obj/structure/reagent_dispensers/fueltank,
/turf/simulated/floor/plasteel{
@@ -77962,6 +77925,10 @@
icon_state = "redyellowfull"
},
/area/station/medical/break_room)
+"lUr" = (
+/obj/machinery/alarm/directional/south,
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"lUv" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/maintenance_hatch{
@@ -78060,6 +78027,10 @@
},
/turf/simulated/floor/plasteel/white,
/area/station/medical/medbay)
+"lYU" = (
+/obj/effect/spawner/airlock/w_to_e,
+/turf/simulated/wall,
+/area/station/aisat)
"lYX" = (
/obj/item/paper_bin{
pixel_y = 5
@@ -79514,17 +79485,6 @@
icon_state = "whitepurple"
},
/area/station/science/misc_lab)
-"mRz" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
-/area/station/aisat)
"mSa" = (
/obj/machinery/economy/vending/snack,
/turf/simulated/floor/plasteel{
@@ -80208,10 +80168,6 @@
},
/area/station/security/warden)
"niC" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/transit_tube/curved/flipped{
dir = 1
},
@@ -80376,6 +80332,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/wood,
/area/station/maintenance/library)
+"nmp" = (
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"nmr" = (
/obj/machinery/door/airlock/glass,
/obj/effect/mapping_helpers/airlock/autoname,
@@ -80916,22 +80875,6 @@
/obj/item/paper/monitorkey,
/turf/simulated/floor/plasteel/white,
/area/station/command/office/rd)
-"nCh" = (
-/obj/item/beacon,
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/obj/item/beacon,
-/turf/simulated/floor/plasteel/dark,
-/area/station/aisat)
"nCu" = (
/turf/simulated/floor/plasteel{
dir = 4;
@@ -81110,6 +81053,15 @@
icon_state = "neutralcorner"
},
/area/station/public/fitness)
+"nFx" = (
+/obj/item/radio/intercom{
+ name = "west bump";
+ pixel_x = -28
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/station/turret_protected/aisat)
"nFL" = (
/obj/machinery/light{
dir = 1
@@ -81877,6 +81829,20 @@
},
/turf/simulated/floor/plasteel/white,
/area/station/science/explab)
+"ohf" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-4"
+ },
+/turf/space,
+/area/space/nearstation)
"ohh" = (
/obj/structure/table/reinforced,
/obj/item/paper_bin{
@@ -82610,6 +82576,16 @@
icon_state = "whitebluecorner"
},
/area/station/medical/medbay)
+"oBi" = (
+/obj/structure/table/reinforced,
+/obj/item/crowbar,
+/obj/item/stack/cable_coil,
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/machinery/firealarm/directional/west,
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"oBE" = (
/obj/item/vending_refill/coffee,
/obj/effect/spawner/lootdrop/maintenance,
@@ -83232,6 +83208,21 @@
temperature = 80
},
/area/station/science/xenobiology)
+"oSN" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/camera{
+ c_tag = "AI Minisatellite Foyer Airlock";
+ network = list("SS13","Minisat");
+ dir = 4
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"oTa" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -83284,6 +83275,9 @@
icon_state = "neutral"
},
/area/station/maintenance/port)
+"oUR" = (
+/turf/simulated/wall,
+/area/station/aisat)
"oVd" = (
/obj/structure/cable{
d1 = 1;
@@ -83319,6 +83313,16 @@
icon_state = "neutral"
},
/area/station/maintenance/starboard)
+"oVP" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/turf/space,
+/area/space/nearstation)
"oWo" = (
/obj/effect/spawner/window/reinforced/grilled,
/obj/machinery/door/poddoor/shutters/preopen{
@@ -83726,6 +83730,15 @@
icon_state = "whitepurplecorner"
},
/area/station/science/lobby)
+"pgS" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/mapping_helpers/airlock/access/any/science/minisat,
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"pht" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -83838,6 +83851,10 @@
icon_state = "whitepurple"
},
/area/station/science/toxins/mixing)
+"plz" = (
+/obj/item/kirbyplants,
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"plR" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command/glass,
@@ -84403,19 +84420,6 @@
icon_state = "dark"
},
/area/station/security/brig)
-"pDS" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
-/area/station/aisat)
"pEn" = (
/obj/structure/cable{
d1 = 1;
@@ -84667,6 +84671,14 @@
icon_state = "neutralfull"
},
/area/station/hallway/secondary/exit)
+"pJY" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/station/turret_protected/aisat)
"pKg" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/disposalpipe/segment{
@@ -85284,13 +85296,6 @@
},
/area/station/engineering/atmos)
"qbl" = (
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/transit_tube/curved,
/turf/simulated/floor/plasteel/dark,
/area/station/aisat)
@@ -85357,6 +85362,16 @@
},
/turf/simulated/floor/plasteel/dark,
/area/station/medical/morgue)
+"qdb" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/door/airlock/hatch{
+ name = "MiniSat Access"
+ },
+/obj/effect/mapping_helpers/airlock/access/any/science/minisat,
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"qdq" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
@@ -86134,6 +86149,14 @@
},
/turf/space,
/area/station/engineering/solar/auxstarboard)
+"qHE" = (
+/obj/machinery/newscaster{
+ dir = 1;
+ name = "south bump";
+ pixel_y = -28
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"qHK" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -86250,6 +86273,16 @@
},
/turf/simulated/floor/plating,
/area/station/security/permabrig)
+"qKQ" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/turf/space,
+/area/space/nearstation)
"qLt" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -87115,6 +87148,20 @@
/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
/turf/simulated/floor/plasteel,
/area/station/engineering/break_room)
+"riq" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"riQ" = (
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 9
@@ -87153,6 +87200,7 @@
name = "south bump";
pixel_y = -28
},
+/obj/item/kirbyplants,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "vault"
@@ -87192,6 +87240,16 @@
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/simulated/floor/plating,
/area/station/maintenance/port)
+"rkA" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/light/small,
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"rkB" = (
/obj/machinery/disposal,
/obj/structure/disposalpipe/trunk,
@@ -87233,6 +87291,17 @@
/obj/effect/spawner/lootdrop/maintenance,
/turf/simulated/floor/plating,
/area/station/maintenance/port)
+"rly" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/lattice,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/space,
+/area/space/nearstation)
"rlI" = (
/obj/item/kirbyplants,
/turf/simulated/floor/plating,
@@ -87820,6 +87889,13 @@
icon_state = "arrival"
},
/area/station/hallway/secondary/entry/south)
+"rCa" = (
+/obj/machinery/camera{
+ c_tag = "AI Minisatellite Foyer";
+ network = list("SS13","Minisat")
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"rCv" = (
/obj/item/kirbyplants{
icon_state = "plant-18"
@@ -88162,6 +88238,12 @@
icon_state = "whitebluecorner"
},
/area/station/medical/reception)
+"rMH" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"rML" = (
/obj/structure/filingcabinet/chestdrawer,
/obj/machinery/newscaster{
@@ -88695,6 +88777,16 @@
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/entry/west)
+"saq" = (
+/obj/machinery/atmospherics/portable/canister/air,
+/obj/machinery/atmospherics/unary/portables_connector{
+ layer = 2
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "vault"
+ },
+/area/station/aisat)
"saC" = (
/obj/structure/cable{
d1 = 1;
@@ -90817,6 +90909,14 @@
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
+"sYZ" = (
+/obj/effect/spawner/window/reinforced/grilled,
+/obj/structure/cable{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor/plating,
+/area/station/aisat)
"sZp" = (
/obj/machinery/light/small,
/turf/simulated/floor/plasteel{
@@ -91352,6 +91452,16 @@
icon_state = "yellowcorner"
},
/area/station/hallway/primary/port/north)
+"tuT" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/structure/closet/emcloset,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "vault"
+ },
+/area/station/aisat)
"tvq" = (
/obj/machinery/atmospherics/portable/scrubber/huge/stationary,
/turf/simulated/floor/plasteel{
@@ -91500,6 +91610,9 @@
},
/turf/simulated/floor/carpet/black,
/area/station/service/chapel)
+"tzQ" = (
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"tAe" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -91616,6 +91729,11 @@
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
/area/station/medical/virology)
+"tCz" = (
+/obj/structure/lattice,
+/obj/item/stack/cable_coil,
+/turf/space,
+/area/space/nearstation)
"tCW" = (
/obj/machinery/status_display,
/turf/simulated/wall,
@@ -92462,6 +92580,19 @@
icon_state = "darkblue"
},
/area/station/command/office/cmo)
+"tZH" = (
+/obj/item/beacon,
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"tZI" = (
/obj/structure/bed,
/obj/item/bedsheet/medical,
@@ -93430,12 +93561,18 @@
/turf/simulated/wall/r_wall,
/area/station/engineering/atmos/distribution)
"uDs" = (
-/obj/structure/lattice/catwalk,
/obj/structure/transit_tube/curved{
dir = 4
},
-/turf/space,
-/area/space/nearstation)
+/obj/effect/spawner/window/reinforced/grilled,
+/obj/structure/cable,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/plating,
+/area/station/aisat)
"uDz" = (
/turf/simulated/floor/plasteel{
dir = 9;
@@ -94766,6 +94903,13 @@
/obj/machinery/alarm/directional/west,
/turf/simulated/floor/wood,
/area/station/medical/psych)
+"vuY" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/transit_tube/horizontal,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/space,
+/area/space/nearstation)
"vvC" = (
/obj/machinery/economy/vending/cola,
/turf/simulated/floor/plasteel{
@@ -94773,6 +94917,17 @@
icon_state = "redcorner"
},
/area/station/hallway/primary/starboard/north)
+"vvO" = (
+/obj/machinery/camera{
+ c_tag = "AI Minisatellite SouthWest";
+ dir = 8;
+ network = list("SS13","Minisat")
+ },
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"vvQ" = (
/obj/structure/chair{
dir = 4
@@ -95372,6 +95527,19 @@
},
/turf/simulated/floor/engine,
/area/station/maintenance/incinerator)
+"vMB" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/airlock/access/any/science/minisat,
+/obj/machinery/door/airlock/hatch{
+ name = "MiniSat Access"
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/station/aisat)
"vMD" = (
/obj/structure/table/glass,
/obj/item/storage/firstaid/regular,
@@ -96406,6 +96574,20 @@
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel/white,
/area/station/medical/surgery/primary)
+"wpU" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/camera{
+ c_tag = "AI Minisatellite SouthEast";
+ dir = 4;
+ network = list("Minisat","SS13");
+ pixel_y = -22
+ },
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/simulated/floor/transparent/glass,
+/area/station/aisat)
"wqd" = (
/obj/structure/reagent_dispensers/water_cooler,
/obj/machinery/camera{
@@ -96503,6 +96685,19 @@
icon_state = "dark"
},
/area/station/security/brig)
+"wts" = (
+/obj/effect/spawner/window/reinforced/grilled,
+/obj/structure/cable{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plating,
+/area/station/aisat)
"wtE" = (
/obj/machinery/cryopod/right,
/obj/machinery/light{
@@ -97938,6 +98133,16 @@
icon_state = "whitepurple"
},
/area/station/science/toxins/mixing)
+"xlE" = (
+/obj/structure/extinguisher_cabinet{
+ name = "north bump";
+ pixel_y = 30
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "vault"
+ },
+/area/station/turret_protected/ai)
"xlS" = (
/obj/machinery/door/airlock/maintenance,
/obj/structure/barricade/wooden,
@@ -98006,6 +98211,21 @@
},
/turf/simulated/floor/plasteel,
/area/station/maintenance/port)
+"xnF" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "vault"
+ },
+/area/station/aisat)
"xnL" = (
/obj/effect/spawner/window/reinforced/grilled,
/obj/machinery/door/poddoor/shutters/preopen{
@@ -98092,6 +98312,16 @@
icon_state = "neutralcorner"
},
/area/station/public/fitness)
+"xqE" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/space,
+/area/space/nearstation)
"xqH" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -99217,6 +99447,16 @@
icon_state = "whitegreen"
},
/area/station/medical/virology)
+"xUq" = (
+/obj/effect/spawner/window/reinforced/grilled,
+/obj/structure/cable,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plating,
+/area/station/aisat)
"xUI" = (
/obj/machinery/suit_storage_unit/security/secure,
/turf/simulated/floor/plasteel,
@@ -105148,19 +105388,19 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+bmo
+bmo
+bpm
+pVN
+bpm
+pVN
+bpm
+bmo
+bmo
+bmo
+bmo
+bmo
+bmo
aaa
aaa
aaa
@@ -105404,21 +105644,21 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-bmo
-bpm
-pVN
-bpm
-pVN
-bpm
-bmo
-bmo
-bmo
-bmo
-bmo
-aaa
-aaa
+bkt
+kQd
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cpb
+bLR
aaa
aaa
aaa
@@ -105661,21 +105901,21 @@ aaa
aaa
aaa
aaa
-aaa
-bkt
-bpn
-brp
-bRu
-brp
+bku
+bmq
+tzQ
+cqM
+cqM
+cqM
bRr
blv
blO
-brp
-brp
-brp
-cpb
-bLR
-aaa
+cqM
+cqM
+cqM
+tzQ
+bpq
+brr
aaa
aaa
aaa
@@ -105905,34 +106145,34 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-bku
-bpo
+abj
+bpm
+bmo
+bmo
+bmo
+bmo
+bmo
+bmo
+bmo
+bmo
+bmo
+bmo
+bmo
+bPR
+bmq
+bpq
bLM
bms
bPC
-bRs
+fkv
bTs
bVH
brq
bms
bnR
-bpo
-brr
-aaa
+bmq
+bpq
+bLR
aaa
aaa
aaa
@@ -106162,22 +106402,22 @@ aaa
aaa
aaa
aaa
-aaa
-abj
-bpm
-bmo
-bmo
-bmo
-bmo
-bmo
-bmo
-bmo
-bmo
-bmo
-bmo
-bmo
-bPR
-bpo
+bkt
+kQd
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+cqK
+tzQ
+bpq
brr
bNM
bNM
@@ -106186,10 +106426,10 @@ lUv
bNM
bNM
bNM
-bkt
-bpo
-bLR
-aaa
+bNM
+rMH
+bpq
+brr
aaa
aaa
aaa
@@ -106419,21 +106659,21 @@ aaa
aaa
aaa
aaa
-aaa
bku
-bpn
-brp
-brp
-brp
-brp
+bmq
+tzQ
+cqM
+cqM
+cqM
+cqM
bwM
+cqM
+cqM
+cqM
brp
-brp
-brp
-brp
-brp
-brp
-brp
+cqM
+cqM
+cqM
bJQ
brs
bNM
@@ -106444,14 +106684,14 @@ bVJ
ccx
bNM
bkt
-lvH
-brr
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+bmq
+bpq
+dSz
+pVN
+bpm
+pVN
+bmo
+bpm
aaa
aaa
aaa
@@ -106676,22 +106916,22 @@ aaa
aaa
aaa
aaa
-aaa
ops
-bpo
+bmq
+bpq
brq
bpu
bms
bms
-bms
+btd
bpu
bms
bms
-bpu
+btd
bms
bms
bpu
-bms
+btd
aaa
bNM
bPH
@@ -106701,48 +106941,15 @@ bXI
cgI
bNM
bkt
-lvH
-dSz
-pVN
-bpm
-pVN
-bmo
-bpm
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+bmq
+tzQ
+cqK
+cqK
+cqK
+cqK
+cqK
+cpb
+brs
aaa
aaa
aaa
@@ -106829,8 +107036,6 @@ aaa
aaa
aaa
aaa
-"}
-(29,1,1) = {"
aaa
aaa
aaa
@@ -106864,6 +107069,40 @@ aaa
aaa
aaa
aaa
+"}
+(29,1,1) = {"
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
aaa
aaa
aaa
@@ -106935,7 +107174,8 @@ aaa
aaa
aaa
bkt
-bpo
+bmq
+bpq
brr
abj
abj
@@ -106959,12 +107199,13 @@ chu
bNM
bku
boe
-mRz
-mRz
-mRz
-mRz
-brp
-cpb
+cqM
+vvO
+cqM
+cqM
+cqM
+tzQ
+bpq
brs
aaa
aaa
@@ -107085,7 +107326,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(30,1,1) = {"
aaa
@@ -107190,9 +107430,9 @@ aaa
aaa
aaa
aaa
-aaa
bku
-bpo
+bmq
+bpq
brs
abj
abj
@@ -107217,11 +107457,12 @@ bNM
aaa
bpu
bms
-bms
+qrT
bpu
bms
bPC
-bpo
+bmq
+bpq
brs
aaa
aaa
@@ -107342,7 +107583,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(31,1,1) = {"
aaa
@@ -107447,11 +107687,11 @@ aaa
aaa
aaa
aaa
-aaa
ops
+bmq
bpo
-brs
-aaa
+btd
+btd
btd
btd
btd
@@ -107468,7 +107708,7 @@ bNM
bPQ
bXm
bTI
-bVN
+ebW
cmx
bNM
qrT
@@ -107478,7 +107718,8 @@ qrT
qrT
abj
bku
-bpo
+bmq
+bpq
brs
aaa
aaa
@@ -107599,7 +107840,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(32,1,1) = {"
aaa
@@ -107704,16 +107944,16 @@ aaa
aaa
aaa
aaa
-aaa
bku
-bpo
-brr
-abj
+bmq
+bpq
+brs
+btd
btd
btd
bwG
-bxY
byg
+bxY
bBd
bCU
bwG
@@ -107735,7 +107975,8 @@ qrT
qrT
qrT
bkt
-bpo
+bmq
+bpq
brs
aaa
aaa
@@ -107856,7 +108097,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(33,1,1) = {"
aaa
@@ -107960,12 +108200,12 @@ aaa
aaa
aaa
aaa
-aaa
-bmo
-bnM
-bpo
+abj
+bPR
+bmq
+bpq
brs
-aaa
+btd
btd
bvz
bwH
@@ -107992,9 +108232,9 @@ eaH
qrT
qrT
bkt
-bpo
-bLS
-bmo
+bmq
+bpq
+oVP
aaa
aaa
aaa
@@ -108217,11 +108457,11 @@ aaa
aaa
aaa
aaa
-bkt
+ops
bmp
-cqK
+tzQ
bpq
-brr
+brs
btd
btd
btd
@@ -108237,9 +108477,9 @@ bJT
bLO
bNM
bPJ
-bRz
-bTB
bVS
+bTB
+pJY
bXH
bNM
caV
@@ -108250,7 +108490,7 @@ chX
qrT
bku
bmq
-cqK
+tzQ
csk
brs
aaa
@@ -108477,8 +108717,8 @@ aaa
bku
bmq
bnO
-bpq
-brs
+bpo
+btd
btd
btd
byg
@@ -108505,8 +108745,8 @@ ceP
fmm
fBl
qrT
-bkt
-bmq
+qrT
+rMH
cqL
bpq
brs
@@ -108731,11 +108971,11 @@ aaa
aaa
aaa
aaa
-bkt
+ops
bav
bnP
bvv
-bRG
+btd
btd
btd
bwF
@@ -108762,7 +109002,7 @@ cgu
ccW
chW
qrT
-cKl
+qrT
bBv
bnP
btk
@@ -108992,7 +109232,7 @@ bku
baE
bcA
bdZ
-brs
+btd
btd
btd
bvC
@@ -109019,7 +109259,7 @@ ceP
fmm
vDg
qrT
-bkt
+qrT
brT
bsb
btx
@@ -109247,13 +109487,13 @@ aaa
aaa
ops
bmr
-cqM
+tzQ
bps
-brr
+brs
btd
btd
btd
-bBd
+xlE
bye
bzA
bBf
@@ -109274,11 +109514,11 @@ caV
ccX
fmm
fmm
-chX
+kJg
qrT
bku
cpd
-cqM
+tzQ
csl
brs
aaa
@@ -109503,11 +109743,11 @@ aaa
aaa
aaa
abj
-oMO
fPS
-bJP
+bmq
+bps
brs
-aaa
+btd
btd
bvz
bwH
@@ -109534,10 +109774,10 @@ hng
qrT
qrT
bkt
-bJP
-orz
-bpu
-aaa
+cpd
+bpq
+rly
+abj
aaa
aaa
aaa
@@ -109760,11 +110000,11 @@ aaa
aaa
aaa
aaa
-aaa
bku
-bJP
-brr
-abj
+bmq
+bps
+brs
+btd
btd
btd
bwG
@@ -109791,7 +110031,8 @@ qrT
qrT
qrT
bkt
-bJP
+cpd
+bpq
brr
aaa
aaa
@@ -109912,7 +110153,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(41,1,1) = {"
aaa
@@ -110017,11 +110257,11 @@ aaa
aaa
aaa
aaa
-aaa
bkt
-bJP
-brs
-aaa
+bmq
+rkA
+btd
+btd
btd
btd
btd
@@ -110038,7 +110278,7 @@ bNM
bPN
bVj
bTI
-bVU
+nFx
bPN
bNM
qrT
@@ -110048,7 +110288,8 @@ qrT
qrT
abj
bku
-bJP
+cpd
+bpq
bLR
aaa
aaa
@@ -110169,7 +110410,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(42,1,1) = {"
aaa
@@ -110274,9 +110514,9 @@ aaa
aaa
aaa
aaa
-aaa
bkt
-bJP
+bmq
+bps
brs
abj
abj
@@ -110301,11 +110541,12 @@ bNM
aaa
bpm
bmo
-bmo
+qrT
bpm
bmo
cnY
-bJP
+cpd
+bpq
brr
aaa
aaa
@@ -110426,7 +110667,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(43,1,1) = {"
aaa
@@ -110531,9 +110771,9 @@ aaa
aaa
aaa
aaa
-aaa
bkt
-bJP
+bmq
+bps
brr
abj
abj
@@ -110557,12 +110797,13 @@ bXN
bNM
bku
bJO
-pDS
-pDS
-pDS
-pDS
-chS
+gNA
+wpU
+gNA
+gNA
+gNA
cpe
+bpq
brs
aaa
aaa
@@ -110683,7 +110924,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(44,1,1) = {"
aaa
@@ -110788,23 +111028,23 @@ aaa
aaa
aaa
aaa
-aaa
bkt
-bJP
+bmq
+bps
brw
bpm
bmo
bmo
-bmo
+btd
bpm
bmo
bmo
-bpm
+btd
bmo
bmo
bpm
-bmo
-aaa
+btd
+xLV
bNM
bRt
bXI
@@ -110813,15 +111053,15 @@ bXI
bXO
bNM
bkt
-eHx
-orz
-oMO
-bpu
-bms
-bms
-bms
-aaa
-aaa
+cpd
+tzQ
+cqM
+cqM
+cqM
+cqM
+cqM
+fAX
+brs
aaa
aaa
aaa
@@ -111045,21 +111285,21 @@ aaa
aaa
aaa
aaa
-aaa
bku
+bmq
bJY
-chS
-chS
-chS
-chS
+gNA
+gNA
+gNA
+gNA
bxM
+gNA
+gNA
+gNA
chS
-chS
-chS
-chS
-chS
-chS
-chS
+gNA
+gNA
+gNA
bJX
brs
bNM
@@ -111070,45 +111310,14 @@ bmS
bXP
bNM
bkt
-bJP
-brr
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+cpd
+bpq
+orz
+oMO
+bpu
+bms
+bms
+bms
aaa
aaa
aaa
@@ -111198,8 +111407,6 @@ aaa
aaa
aaa
aaa
-"}
-(46,1,1) = {"
aaa
aaa
aaa
@@ -111231,6 +111438,8 @@ aaa
aaa
aaa
aaa
+"}
+(46,1,1) = {"
aaa
aaa
aaa
@@ -111303,32 +111512,6 @@ aaa
aaa
aaa
aaa
-abj
-bpu
-oMO
-bms
-bms
-bms
-bms
-bms
-bms
-bms
-bms
-bms
-bpu
-fPS
-bJP
-bLR
-bNM
-bNM
-bNM
-ojZ
-bNM
-bNM
-bNM
-bku
-bJP
-brs
aaa
aaa
aaa
@@ -111359,6 +111542,34 @@ aaa
aaa
aaa
aaa
+bkt
+kDU
+cqM
+cqM
+cqM
+cqM
+cqM
+cqM
+cqM
+cqM
+cqM
+cqM
+cqM
+cqM
+tzQ
+hMy
+lCU
+bNN
+bNM
+bNM
+ojZ
+bNM
+bNM
+bNM
+bNM
+bJP
+bpq
+brr
aaa
aaa
aaa
@@ -111455,8 +111666,6 @@ aaa
aaa
aaa
aaa
-"}
-(47,1,1) = {"
aaa
aaa
aaa
@@ -111486,6 +111695,8 @@ aaa
aaa
aaa
aaa
+"}
+(47,1,1) = {"
aaa
aaa
aaa
@@ -111573,18 +111784,48 @@ aaa
aaa
aaa
aaa
-bku
-bJP
-bLS
-bmo
-bPR
-bRJ
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+abj
+bpu
+oMO
+bms
+bms
+bms
+bms
+bms
+bms
+bms
+bms
+bms
+oMO
+oUR
+vMB
+oUR
+oUR
+jfy
+nmp
bTN
-bVV
-brw
+oBi
+oUR
bmo
bnM
-bJP
+cpd
+bpq
brs
aaa
aaa
@@ -111711,7 +111952,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(48,1,1) = {"
aaa
@@ -111829,19 +112069,20 @@ aaa
aaa
aaa
aaa
-aaa
-bkt
-bJY
-bLT
-bRv
-chS
+abj
+oUR
+xnF
bVW
+oSN
+gFb
+gbo
bTO
-bVW
-chS
-chS
-chS
+grH
+qdb
+gNA
+gNA
cpe
+bpq
brs
aaa
aaa
@@ -111894,7 +112135,6 @@ aaa
aaa
aaa
aaa
-aaa
acF
aaa
acF
@@ -112086,21 +112326,21 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-fPS
-bLU
-bLM
-bPC
-bmq
-bTS
-bpq
-brq
-oMO
-bpu
-oMO
abj
-aaa
+oUR
+saq
+bLU
+hwa
+nmp
+nmp
+riq
+nmp
+jLQ
+cqM
+cqM
+cqM
+fAX
+brs
aaa
aaa
aaa
@@ -112343,21 +112583,21 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-bku
-cDb
-brr
-bku
+abj
+oUR
+oUR
+oUR
+cYg
+lYU
bRL
-nCh
+tZH
bmY
-brr
-aaa
-aaa
-aaa
-aaa
-aaa
+oUR
+oMO
+bpu
+oMO
+bms
+abj
aaa
aaa
aaa
@@ -112600,17 +112840,17 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-bUJ
-aaa
-bku
-bmq
-bTR
-bpq
-brr
-aaa
+abj
+abj
+oUR
+tuT
+pgS
+oUR
+hse
+kAw
+lUr
+oUR
+abj
aaa
aaa
aaa
@@ -112858,16 +113098,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-bUJ
-aaa
-bku
-bmq
+gtb
+oUR
+oUR
lwd
-bpq
-brr
-aaa
+gLg
+rCa
+bTS
+qHE
+oUR
+eOk
aaa
aaa
aaa
@@ -113115,16 +113355,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-bUJ
abj
-bPS
-bRM
-bTT
-bVX
-bPS
-aaa
+abj
+abj
+dVS
+sYZ
+plz
+bTS
+plz
+sYZ
+abj
aaa
aaa
aaa
@@ -113374,14 +113614,14 @@ aaa
aaa
aaa
aaa
-bUJ
aaa
-bku
+adh
+wts
qbl
bTU
niC
-brr
-aaa
+wts
+abj
aaa
aaa
aaa
@@ -113631,14 +113871,14 @@ aaa
aaa
aaa
aaa
-bUJ
aaa
+acF
hyX
-bms
-bms
-bms
+dRi
+fDd
+xUq
uDs
-aaa
+abj
aaa
aaa
aaa
@@ -113888,14 +114128,14 @@ aaa
aaa
aaa
aaa
-bUJ
+aaa
+kTj
+vuY
+hNW
+qKQ
abj
nmF
abj
-abj
-abj
-nmF
-aaa
aaa
aaa
aaa
@@ -114145,8 +114385,8 @@ aaa
aaa
aaa
aaa
-bUJ
aaa
+xqE
giK
xLV
xLV
@@ -114402,8 +114642,8 @@ aaa
aaa
aaa
aaa
-bUJ
aaa
+xqE
abj
bqP
abj
@@ -114659,8 +114899,8 @@ aaa
aaa
aaa
aaa
-bUJ
aaa
+xqE
abj
xLV
fIk
@@ -114916,9 +115156,9 @@ aaa
aaa
aaa
aaa
+aaa
bVf
-bXG
-bYl
+abj
abj
hFE
abj
@@ -115173,9 +115413,9 @@ aaa
aaa
aaa
aaa
-abj
aaa
-bUJ
+xqE
+abj
aaa
nmF
aaa
@@ -115430,9 +115670,9 @@ aaa
aaa
aaa
aaa
-abj
aaa
-bUJ
+xqE
+abj
aaa
nmF
aaa
@@ -115687,10 +115927,10 @@ aaa
aaa
aaa
aaa
+aaa
+xqE
abj
abj
-bUJ
-abj
hFE
abj
abj
@@ -115944,9 +116184,9 @@ aaa
aaa
aaa
aaa
-abj
aaa
-bUJ
+xqE
+abj
aaa
nmF
aaa
@@ -116201,9 +116441,9 @@ aaa
aaa
aaa
aaa
-abj
aaa
-bUJ
+xqE
+abj
aaa
nmF
aaa
@@ -116458,10 +116698,10 @@ aaa
aaa
aaa
aaa
+aaa
+xqE
abj
abj
-bUJ
-abj
hFE
abj
abj
@@ -116715,9 +116955,9 @@ aaa
aaa
aaa
aaa
-abj
aaa
-bUJ
+xqE
+abj
aaa
nmF
aaa
@@ -116972,9 +117212,9 @@ aaa
aaa
aaa
aaa
-abj
aaa
-bUJ
+xqE
+abj
aaa
nmF
aaa
@@ -117229,10 +117469,10 @@ aaa
aaa
aaa
aaa
+aaa
+ohf
abj
abj
-bUJ
-abj
hFE
abj
abj
@@ -117486,9 +117726,9 @@ aaa
aaa
aaa
aaZ
-abj
aaa
bUJ
+abj
aaa
nmF
aaa
@@ -117743,9 +117983,9 @@ aaa
aaa
aaa
aaa
-abj
-abj
+aaa
bUJ
+abj
aaa
nmF
aaa
@@ -118001,9 +118241,9 @@ aaa
aaa
aaa
aaa
-aaa
bUJ
abj
+abj
hFE
abj
abj
@@ -118257,9 +118497,9 @@ aaa
aaa
aaa
aaa
-dij
-abj
+aaa
bUJ
+abj
aaa
nmF
aaa
@@ -118514,9 +118754,9 @@ abj
acF
acF
acF
-dij
-aaa
+abj
bUJ
+abj
aaa
nmF
aaa
@@ -118771,10 +119011,10 @@ bwN
bwN
bwN
acF
-abj
-abj
+aaa
bUJ
abj
+abj
hFE
abj
abj
@@ -119028,9 +119268,9 @@ bzE
bzE
bwN
acF
-dij
aaa
bUJ
+abj
aaa
nmF
aaa
@@ -119285,9 +119525,9 @@ bEG
bGB
bwN
abj
-dij
aaa
bUJ
+abj
aaa
nmF
aaa
@@ -119542,10 +119782,10 @@ bBj
bzE
bwN
abj
-abj
-abj
+aaa
bUJ
abj
+abj
hFE
abj
abj
@@ -119799,9 +120039,9 @@ bBi
bzE
bwN
abj
-dij
aaa
bUJ
+abj
aaa
nmF
aaa
@@ -120056,9 +120296,9 @@ bzE
bzE
bwN
abj
-abj
aaa
bUJ
+abj
aaa
nmF
aaa
@@ -120314,7 +120554,7 @@ bGs
bwN
abj
bVs
-iIS
+beN
bYJ
tAi
nmF
@@ -120569,7 +120809,7 @@ bfO
bge
bGu
bwN
-abj
+tCz
dVS
abj
abj
@@ -122115,7 +122355,7 @@ bKc
bMf
iPP
bUP
-bNY
+lBJ
bUf
rjL
bXU
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index a8f303577c4c..63319d1b5d30 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -50,6 +50,8 @@
#define ismachinery(A) (istype(A, /obj/machinery))
+#define isairlock(A) (istype(A, /obj/machinery/door))
+
#define isapc(A) (istype(A, /obj/machinery/power/apc))
#define ismecha(A) (istype(A, /obj/mecha))
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index 30891c98d31b..0ac014a7c9c1 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -126,6 +126,8 @@
#define STATUS_EFFECT_REVERSED_HIGH_PRIESTESS /datum/status_effect/reversed_high_priestess //Bubblegum will chase the person hit by the effect, grabbing people at random. This can and WILL include the caster.
+#define STATUS_EFFECT_C_FOAMED /datum/status_effect/c_foamed
+
//#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse
//#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured
//#define CURSE_SPAWNING 2 //spawns creatures that attack the target only
diff --git a/code/__HELPERS/trait_helpers.dm b/code/__HELPERS/trait_helpers.dm
index e8e7aaead060..2b67dc76bea4 100644
--- a/code/__HELPERS/trait_helpers.dm
+++ b/code/__HELPERS/trait_helpers.dm
@@ -244,6 +244,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_NEVER_MISSES_DISPOSALS "trait_never_misses_disposals" // For janitors landing disposal throws
#define TRAIT_SLEIGHT_OF_HAND "sleight_of_hand"
#define TRAIT_KNOWS_COOKING_RECIPES "knows_cooking_recipes"
+#define TRAIT_XENOBIO_SPAWNED_HUMAN "xenobio_spawned_human" // The mob is from xenobio/cargo/botany that has evolved into their greater form. They do not give vampires usuble blood and cannot be converted by cult.
/// used for dead mobs that are observing, but should not be afforded all the same platitudes as full ghosts.
/// This is a mind trait because ghosts can be frequently deleted and we want to be sure this sticks.
diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm
index 1c78df39a056..6ec1c7c5dd91 100644
--- a/code/_onclick/hud/action_button.dm
+++ b/code/_onclick/hud/action_button.dm
@@ -19,7 +19,7 @@
/// Whether or not this should be shown to observers
var/shown_to_observers = FALSE
/// Whether or not this button is locked, preventing it from being dragged.
- var/locked = FALSE
+ var/locked = TRUE
/atom/movable/screen/movable/action_button/Destroy()
. = ..()
diff --git a/code/datums/station_state.dm b/code/datums/station_state.dm
index 7359c4a21aef..2175d7bd69ac 100644
--- a/code/datums/station_state.dm
+++ b/code/datums/station_state.dm
@@ -52,7 +52,7 @@
if(!GR.broken)
grille += 1
- else if(istype(O, /obj/machinery/door))
+ else if(isairlock(O))
door += 1
else if(istype(O, /obj/machinery))
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index c8373ec00c06..f07c59d45a01 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -1353,6 +1353,52 @@
new /obj/effect/abstract/bubblegum_rend_helper(get_turf(src), null, 10)
qdel(src)
+/datum/status_effect/c_foamed
+ id = "c_foamed up"
+ duration = 1 MINUTES
+ status_type = STATUS_EFFECT_REFRESH
+ tick_interval = 10 SECONDS
+ var/foam_level = 1
+ var/mutable_appearance/foam_overlay
+
+/datum/status_effect/c_foamed/on_apply()
+ . = ..()
+ foam_overlay = mutable_appearance('icons/obj/foam_blobs.dmi', "foamed_1")
+ owner.add_overlay(foam_overlay)
+ owner.next_move_modifier *= 1.5
+ owner.Slowed(10 SECONDS, 1.5)
+
+/datum/status_effect/c_foamed/Destroy()
+ if(owner)
+ owner.cut_overlay(foam_overlay)
+ owner.next_move_modifier /= 1.5
+
+ QDEL_NULL(foam_overlay)
+ return ..()
+
+/datum/status_effect/c_foamed/tick()
+ . = ..()
+ if(--foam_level <= 0)
+ qdel(src)
+ refresh_overlay()
+
+/datum/status_effect/c_foamed/refresh()
+ . = ..()
+ // Our max slow is 50 seconds
+ foam_level = min(foam_level + 1, 5)
+
+ refresh_overlay()
+
+ if(foam_level == 5)
+ owner.Paralyse(4 SECONDS)
+
+/datum/status_effect/c_foamed/proc/refresh_overlay()
+ // Refresh overlay
+ owner.cut_overlay(foam_overlay)
+ QDEL_NULL(foam_overlay)
+ foam_overlay = mutable_appearance('icons/obj/foam_blobs.dmi', "foamed_[foam_level]")
+ owner.add_overlay(foam_overlay)
+
/datum/status_effect/judo_armbar
id = "armbar"
duration = 5 SECONDS
diff --git a/code/datums/uplink_items/uplink_general.dm b/code/datums/uplink_items/uplink_general.dm
index 5d83a5aec80a..074048268caf 100644
--- a/code/datums/uplink_items/uplink_general.dm
+++ b/code/datums/uplink_items/uplink_general.dm
@@ -668,6 +668,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/organ_extractor
cost = 20
+/datum/uplink_item/device_tools/c_foam_launcher
+ name = "C-Foam Launcher"
+ desc = "A gun that shoots blobs of foam. Will block airlocks, and slow down humanoids. Not rated for xenomorph usage."
+ reference = "CFOAM"
+ item = /obj/item/gun/projectile/c_foam_launcher
+ cost = 25
+
/datum/uplink_item/device_tools/tar_spray
name = "Sticky Tar Applicator"
desc = "A spray bottle containing an extremely viscous fluid that will leave behind tar whenever it is sprayed, greatly slowing down anyone who tries to walk over it. \
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index bcdcde39a4c9..058f0bbea647 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -795,6 +795,9 @@
if(isliving(target))
var/mob/living/L = target
+ if(L.incorporeal_move)
+ continue
+
if(crit_case)
damage_to_deal *= crit_damage_factor
if(iscarbon(L))
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 138cd61348d0..1a5789ef738c 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -402,7 +402,7 @@ structure_check() searches for nearby cultist structures required for the invoca
to_chat(M, "You are now able to construct mirror shields inside the daemon forge.")
SSticker.mode.cult_team.mirror_shields_active = TRUE
else
- if(ishuman(offering) && offering.mind?.offstation_role && offering.mind.special_role != SPECIAL_ROLE_ERT) //If you try it on a ghost role, you get nothing
+ if((ishuman(offering) && offering.mind?.offstation_role && offering.mind.special_role != SPECIAL_ROLE_ERT) || HAS_MIND_TRAIT(offering, TRAIT_XENOBIO_SPAWNED_HUMAN)) //If you try it on a ghost role, or an envolved caterpillar/nymph, you get nothing
to_chat(M, "\"This soul is of no use to either of us.\"")
worthless = TRUE
else if(ishuman(offering) || isrobot(offering))
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index 90e9a9f2f6cc..1d7302d6a391 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -869,27 +869,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
density = TRUE
anchored = TRUE
resistance_flags = FIRE_PROOF | ACID_PROOF
-
-/obj/structure/table_frame/abductor/try_make_table(obj/item/stack/stack, mob/user)
- if(!istype(stack, /obj/item/stack/sheet/mineral/abductor) && !istype(stack, /obj/item/stack/sheet/mineral/silver))
- return FALSE
-
- if(stack.get_amount() < 1) //no need for safeties as we did an istype earlier
- to_chat(user, "You need at least one sheet of [stack] to do this!")
- return TRUE
-
- to_chat(user, "You start adding [stack] to [src]...")
-
- if(!(do_after(user, 50, target = src) && stack.use(1)))
- return TRUE
-
- if(istype(stack, /obj/item/stack/sheet/mineral/abductor)) //if it's not this then it's silver, so no need for an else afterwards
- make_new_table(stack.table_type)
- return TRUE
-
- new /obj/machinery/optable/abductor(loc)
- qdel(src)
- return TRUE
+ restrict_table_types = list(/obj/item/stack/sheet/mineral/silver = /obj/machinery/optable/abductor, /obj/item/stack/sheet/mineral/abductor = /obj/item/stack/sheet/mineral/abductor::table_type)
/obj/structure/table/abductor
name = "alien table"
diff --git a/code/game/gamemodes/miniantags/tourist/tourist_arrivals.dm b/code/game/gamemodes/miniantags/tourist/tourist_arrivals.dm
index 1edd01e798b9..150f169af498 100644
--- a/code/game/gamemodes/miniantags/tourist/tourist_arrivals.dm
+++ b/code/game/gamemodes/miniantags/tourist/tourist_arrivals.dm
@@ -74,13 +74,14 @@
M.change_gender(FEMALE)
set_appearance(M)
M.equipOutfit(T.tourist_outfit)
+ GLOB.data_core.manifest_inject(M) // Proc checks if they have a special role before adding to the manifest, if they do, they aren't added. This needs to be done before adding the special role.
M.mind.special_role = SPECIAL_ROLE_TOURIST
- GLOB.data_core.manifest_inject(M)
// Rolls a 20% probability, checks if 3 tourists have been made into tot and check if there's space for a new tot!
// If any is false, we don't make a new tourist tot
- if(prob(chance) && tot_number < 3 && antag_count < max_antag && !jobban_isbanned(M, SPECIAL_ROLE_TRAITOR))
- tot_number++
- M.mind.add_antag_datum(/datum/antagonist/traitor)
+ if(prob(chance) && tot_number < 3 && antag_count < max_antag && (SPECIAL_ROLE_TRAITOR in M.client.prefs.be_special) && !jobban_isbanned(M, SPECIAL_ROLE_TRAITOR))
+ if(player_old_enough_antag(M.client, ROLE_TRAITOR))
+ tot_number++
+ M.mind.add_antag_datum(/datum/antagonist/traitor)
// If they're a tot, they don't get tourist objectives neither the tourist greeting!
if(M.mind.special_role != SPECIAL_ROLE_TRAITOR)
diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm
index 9261b150e9dd..98604bf69224 100644
--- a/code/game/gamemodes/wizard/soulstone.dm
+++ b/code/game/gamemodes/wizard/soulstone.dm
@@ -116,7 +116,7 @@
to_chat(user, "\"Come now, do not capture your fellow's soul.\"")
return ..()
- if(M.mind.offstation_role && M.mind.special_role != SPECIAL_ROLE_ERT)
+ if((M.mind.offstation_role && M.mind.special_role != SPECIAL_ROLE_ERT) || HAS_MIND_TRAIT(M, TRAIT_XENOBIO_SPAWNED_HUMAN))
to_chat(user, "This being's soul seems worthless. Not even the stone will absorb it.")
return ..()
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 8226b164759e..72cf7fbdbe92 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -422,7 +422,6 @@
item_state = "grenade"
materials = list(MAT_METAL = 500, MAT_GLASS = 300) //plasma burned up for power or something, plus not that much to reclaim
-
/obj/item/storage/box/syndie_kit/dropwall
name = "dropwall generator box"
@@ -474,6 +473,33 @@
turret.owner_uid = owner_uid
qdel(src)
+/obj/structure/barricade/foam
+ name = "foam blockage"
+ desc = "This foam blocks the airlock from being opened."
+ icon = 'icons/obj/foam_blobs.dmi'
+ icon_state = "foamed_1"
+ layer = DOOR_HELPER_LAYER
+ // The integrity goes up with 25 per level, with an extra 25 when going from 4 to 5
+ obj_integrity = 25
+ max_integrity = 25
+ /// What level is the foam at?
+ var/foam_level = 1
+
+/obj/structure/barricade/foam/Destroy()
+ for(var/obj/machinery/door/airlock in loc.contents)
+ airlock.foam_level = 0
+ return ..()
+
+/obj/structure/barricade/foam/examine(mob/user)
+ . = ..()
+ . += "It would need [(5 - foam_level)] more blobs of foam to fully block the airlock."
+
+/obj/structure/barricade/foam/CanPass(atom/movable/mover, turf/target)
+ return istype(mover, /obj/item/projectile/c_foam) // Only c_foam blobs hit the airlock underneat/pass through the foam. The rest is hitting the barricade
+
+/obj/structure/barricade/foam/welder_act(mob/user, obj/item/I)
+ return FALSE
+
#undef SINGLE
#undef VERTICAL
#undef HORIZONTAL
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index a07d1427dfdc..1abf48750681 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -48,9 +48,13 @@
var/polarized_glass = FALSE
var/polarized_on
+ /// How many levels of foam do we have on us? Capped at 5
+ var/foam_level = 0
+
/// How much this door reduces superconductivity to when closed.
var/superconductivity = DOOR_HEAT_TRANSFER_COEFFICIENT
+
/obj/machinery/door/Initialize(mapload)
. = ..()
set_init_door_layer()
@@ -93,7 +97,7 @@
return ..()
/obj/machinery/door/Bumped(atom/AM)
- if(operating || emagged)
+ if(operating || emagged || foam_level)
return
if(ismob(AM))
var/mob/B = AM
@@ -150,6 +154,9 @@
return
add_fingerprint(user)
+ if(foam_level)
+ return
+
if(density && !emagged)
if(allowed(user))
if(HAS_TRAIT(src, TRAIT_CMAGGED))
@@ -172,8 +179,12 @@
if(isterrorspider(user))
return
+ if(foam_level)
+ return
+
if(!HAS_TRAIT(user, TRAIT_FORCE_DOORS))
return FALSE
+
var/datum/antagonist/vampire/V = user.mind?.has_antag_datum(/datum/antagonist/vampire)
if(V && HAS_TRAIT_FROM(user, TRAIT_FORCE_DOORS, VAMPIRE_TRAIT))
if(!V.bloodusable)
@@ -209,7 +220,7 @@
/obj/machinery/door/proc/try_to_activate_door(mob/user)
add_fingerprint(user)
- if(operating || emagged)
+ if(operating || emagged || foam_level)
return
if(requiresID() && (allowed(user) || user.can_advanced_admin_interact()))
if(density)
@@ -574,3 +585,29 @@
for(var/obj/airlock_filler_object/filler as anything in fillers)
filler.set_opacity(opacity)
+
+#define MAX_FOAM_LEVEL 5
+// Adds foam to the airlock, which will block it from being opened
+/obj/machinery/door/proc/foam_up()
+ if(!foam_level)
+ new /obj/structure/barricade/foam(get_turf(src))
+ foam_level++
+ return
+
+ if(foam_level == MAX_FOAM_LEVEL)
+ return
+
+ for(var/obj/structure/barricade/foam/blockage in loc.contents)
+ blockage.foam_level = min(++blockage.foam_level, 5)
+ // The last level will increase the integrity by 50 instead of 25
+ if(foam_level == 4)
+ blockage.obj_integrity += 50
+ blockage.max_integrity += 50
+ else
+ blockage.obj_integrity += 25
+ blockage.max_integrity += 25
+ foam_level++
+ blockage.icon_state = "foamed_[foam_level]"
+ blockage.update_icon_state()
+
+#undef MAX_FOAM_LEVEL
diff --git a/code/game/machinery/vendors/vending.dm b/code/game/machinery/vendors/vending.dm
index 4f5603c2567d..00d957ab8107 100644
--- a/code/game/machinery/vendors/vending.dm
+++ b/code/game/machinery/vendors/vending.dm
@@ -420,6 +420,9 @@
return
if(isliving(AM) && prob(aggressive_tilt_chance))
+ var/mob/living/to_be_tipped = AM
+ if(to_be_tipped.incorporeal_move) // OooOooOoo spooky ghosts
+ return
AM.visible_message(
"[src] suddenly topples over onto [AM]!",
"[src] topples over onto you without warning!"
diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm
index cb5cf0a9046f..64a264cf40a2 100644
--- a/code/game/mecha/equipment/tools/medical_tools.dm
+++ b/code/game/mecha/equipment/tools/medical_tools.dm
@@ -527,7 +527,7 @@
if(!action_checks(target))
return
if(isobj(target))
- if(!istype(target, /obj/machinery/door))//early return if we're not trying to open a door
+ if(!isairlock(target))//early return if we're not trying to open a door
return
var/obj/machinery/door/D = target //the door we want to open
D.try_to_crowbar(chassis.occupant, src)//use the door's crowbar function
diff --git a/code/game/objects/effects/effect_system/effects_chem_smoke.dm b/code/game/objects/effects/effect_system/effects_chem_smoke.dm
index ccc7923c799f..3f6647d6434f 100644
--- a/code/game/objects/effects/effect_system/effects_chem_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_chem_smoke.dm
@@ -48,7 +48,7 @@
var/eff_range = 2
var/eff_colour = "#12A5F4" // This is a random blue incase it doesnt get set right
var/process_count = 0
- var/max_process_count = 10
+ var/max_process_count = 50 //50 ticks, every 0.2 seconds, or 10 seconds of smoke.
var/obj/chemholder
var/list/smoked_atoms = list()
@@ -100,18 +100,19 @@
/datum/effect_system/smoke_spread/chem/start(effect_range = 2)
eff_colour = mix_color_from_reagents(chemholder.reagents.reagent_list)
eff_range = effect_range
- START_PROCESSING(SSprocessing, src)
+ START_PROCESSING(SSfastprocess, src)
/datum/effect_system/smoke_spread/chem/process()
process_count++
- if(eff_range < 3)
- new /obj/effect/particle_effect/chem_smoke/small(location, eff_colour)
- else
- new /obj/effect/particle_effect/chem_smoke(location, eff_colour)
-
- INVOKE_ASYNC(src, PROC_REF(SmokeEm), eff_range)
+ for(var/i in 1 to (2 * rand(2, 6))) // Every 0.2 seconds, create 4-12 smoke particles. This keeps it consitant with the 2-6 every 0.1 seconds before
+ if(eff_range < 3)
+ new /obj/effect/particle_effect/chem_smoke/small(location, eff_colour)
+ else
+ new /obj/effect/particle_effect/chem_smoke(location, eff_colour)
+ if(process_count % 5 == 0) //Every 5 ssfastprocess, 10 ticks, or 1 second.
+ INVOKE_ASYNC(src, PROC_REF(SmokeEm), eff_range)
if(process_count > max_process_count)
- STOP_PROCESSING(SSprocessing, src)
+ STOP_PROCESSING(SSfastprocess, src)
qdel(src)
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index d39c52903f3a..30a73ab0ad11 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -240,7 +240,7 @@
var/turf/replace_turf = get_turf(target)
if(!istype(replace_turf))
return
-
+
if(get_dist(src, target) >= (U.client.maxview() + 2)) // To prevent people from using it over cameras
return
@@ -258,13 +258,6 @@
if(!used)
to_chat(U, "[src]'s refill light blinks red.")
-/obj/item/lightreplacer/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J)
- J.myreplacer = src
- J.put_in_cart(src, user)
-
-/obj/item/lightreplacer/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
- return
-
/obj/item/lightreplacer/cyborg/cyborg_recharge(coeff, emagged)
for(var/I in 1 to coeff)
Charge()
diff --git a/code/game/objects/items/weapons/c_foam_launcher.dm b/code/game/objects/items/weapons/c_foam_launcher.dm
new file mode 100644
index 000000000000..6d24188c78dc
--- /dev/null
+++ b/code/game/objects/items/weapons/c_foam_launcher.dm
@@ -0,0 +1,45 @@
+/*
+ * The C-Foam launcher from GTFO
+ * Shoots a blob of goo. If it hits an airlock, it will get closed shut, and you will have to either destroy the goo by force, or weld it off. The RnD foam is instant, and the traitor version has a `do_after`
+ * RnD printed needs canisters, while the traitor variant will slowly regenerate foam.
+ * The traitor variant also slows down mobs if they are hit by the foam.
+ * Overall, a good support tool designed to
+ */
+
+/obj/item/gun/projectile/c_foam_launcher
+ name = "\improper C-Foam launcher"
+ desc = "The C-Foam launcher. Shoots blobs of quickly hardening and growing foam. Can be used to slow down humanoids or block airlocks"
+ icon_state = "c_foam_launcher"
+ item_state = "c_foam_launcher"
+ w_class = WEIGHT_CLASS_NORMAL
+ origin_tech = "combat=4;syndicate=1;materials=3"
+ needs_permit = FALSE
+
+ fire_sound = 'sound/effects/bamf.ogg'
+ fire_sound_text = "thunk"
+ mag_type = /obj/item/ammo_box/magazine/c_foam
+
+/obj/item/gun/projectile/c_foam_launcher/update_icon_state()
+ icon_state = "c_foam_launcher[magazine ? "_loaded" : ""]"
+
+/obj/item/projectile/c_foam
+ name = "blob of foam"
+ icon_state = "foam_blob"
+ damage = 0
+
+/obj/item/projectile/c_foam/on_hit(atom/target, blocked, hit_zone)
+ . = ..()
+ if(isairlock(target))
+ var/obj/machinery/door/airlock = target
+ airlock.foam_up()
+ return
+
+ if(istype(target, /obj/structure/mineral_door))
+ var/obj/structure/mineral_door/door = target
+ door.foam_up()
+ return
+
+ if(iscarbon(target)) // For that funny xeno foam action
+ var/mob/living/carbon/sticky = target
+ sticky.foam_up()
+ return
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index 550be956d60b..5c7dfda79902 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -54,7 +54,7 @@
origin_tech = "magnets=2"
/obj/item/card/emag/magic_key/afterattack(atom/target, mob/user, proximity)
- if(!istype(target, /obj/machinery/door))
+ if(!isairlock(target))
return
var/obj/machinery/door/D = target
D.locked = FALSE
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index a41b32954488..6776d7fdeded 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -90,7 +90,7 @@
log_game("[key_name(user)] planted [name] on [target.name] at ([target.x],[target.y],[target.z]) with [det_time] second fuse")
plastic_overlay.layer = HIGH_OBJ_LAYER
- if(isturf(target) || istype(target, /obj/machinery/door))
+ if(isturf(target) || isairlock(target))
plastic_overlay_target = new /obj/effect/plastic(get_turf(user))
else
plastic_overlay_target = target
diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm
index 9db76c6aaacb..93ba8f6cbbd6 100644
--- a/code/game/objects/items/weapons/mop.dm
+++ b/code/game/objects/items/weapons/mop.dm
@@ -28,19 +28,21 @@
GLOB.janitorial_equipment -= src
return ..()
-/obj/item/mop/proc/wet_mop(obj/o, mob/user)
- if(o.reagents.total_volume < 1)
- to_chat(user, "[o] is out of water!")
- if(istype(o, /obj/structure/mopbucket))
- var/obj/structure/mopbucket/mopbucket = o
- mopbucket.mopbucket_insert(user, o)
- if(istype(o, /obj/structure/janitorialcart))
- janicart_insert(user, o)
+/obj/item/mop/proc/wet_mop(obj/O, mob/user)
+ if(O.reagents.total_volume < 1)
+ to_chat(user, "[O] is empty!")
+ if(istype(O, /obj/structure/mopbucket))
+ var/obj/structure/mopbucket/mopbucket = O
+ mopbucket.mopbucket_insert(user, O)
+ if(istype(O, /obj/structure/janitorialcart))
+ var/obj/structure/janitorialcart/janicart = O
+ if(!janicart.mymop)
+ janicart.put_in_cart(user, src)
return
- o.reagents.trans_to(src, 6)
- to_chat(user, "You wet [src] in [o].")
- playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
+ O.reagents.trans_to(src, 6)
+ to_chat(user, "You wet [src] in [O].")
+ playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE)
/obj/item/mop/afterattack(atom/A, mob/user, proximity)
if(!proximity)
@@ -73,10 +75,6 @@
else
return ..()
-/obj/item/mop/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J)
- J.mymop = src
- J.put_in_cart(src, user)
-
/obj/item/mop/wash(mob/user, atom/source)
reagents.add_reagent("water", 5)
to_chat(user, "You wet [src] in [source].")
@@ -126,7 +124,4 @@
/obj/item/mop/advanced/cyborg
-/obj/item/mop/advanced/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
- return
-
#undef MOP_SOUND_CD
diff --git a/code/game/objects/items/weapons/paiwire.dm b/code/game/objects/items/weapons/paiwire.dm
index 2e0ddfa828d3..5206005e089d 100644
--- a/code/game/objects/items/weapons/paiwire.dm
+++ b/code/game/objects/items/weapons/paiwire.dm
@@ -1,5 +1,5 @@
/obj/item/pai_cable/proc/plugin(obj/machinery/M as obj, mob/user as mob)
- if(istype(M, /obj/machinery/door) || istype(M, /obj/machinery/camera))
+ if(isairlock(M) || istype(M, /obj/machinery/camera))
user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.")
user.drop_item()
src.loc = M
diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index a40a41c986e8..7cdfc1bef791 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -96,13 +96,6 @@
/obj/item/storage/bag/trash/cyborg
-/obj/item/storage/bag/trash/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J)
- J.mybag = src
- J.put_in_cart(src, user)
-
-/obj/item/storage/bag/trash/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
- return
-
/obj/item/storage/bag/trash/bluespace
name = "trash bag of holding"
desc = "The latest and greatest in custodial convenience, a trashbag that is capable of holding vast quantities of garbage."
@@ -115,9 +108,6 @@
/obj/item/storage/bag/trash/bluespace/cyborg
-/obj/item/storage/bag/trash/bluespace/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
- return
-
////////////////////////////////////////
// MARK: Plastic bag
////////////////////////////////////////
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 38f5ff839e4b..a0fead4ca3f7 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -183,9 +183,12 @@
var/mob/living/L = M
if(user.a_intent == INTENT_HARM)
+ . = ..() // Whack them too if in harm intent
+ if(!isnull(.)) // Attack returns null when successful
+ return
if(turned_on)
- baton_stun(L, user)
- return ..() // Whack them too if in harm intent
+ baton_stun(L, user, ignore_shield_check = TRUE)
+ return
if(!turned_on)
user.do_attack_animation(L)
@@ -196,11 +199,10 @@
if(baton_stun(L, user))
user.do_attack_animation(L)
-/// returning false results in no baton attack animation, returning true results in an animation.
-/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE)
+/// returning false results in no baton attack animation, returning true results in an animation. If ignore_shield_check is true, the baton will not run check shields, and will hit if not on cooldown.
+/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE, ignore_shield_check = FALSE)
if(cooldown > world.time && !skip_cooldown)
return FALSE
-
var/user_UID = user.UID()
if(HAS_TRAIT_FROM(L, TRAIT_WAS_BATONNED, user_UID)) // prevents double baton cheese.
return FALSE
@@ -208,7 +210,7 @@
cooldown = world.time + initial(cooldown) // tracks the world.time when hitting will be next available.
if(ishuman(L))
var/mob/living/carbon/human/H = L
- if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that
+ if(!ignore_shield_check && H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that
playsound(L, 'sound/weapons/genhit.ogg', 50, TRUE)
return FALSE
H.Confused(10 SECONDS)
@@ -311,7 +313,7 @@
QDEL_NULL(sparkler)
return ..()
-/obj/item/melee/baton/cattleprod/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE)
+/obj/item/melee/baton/cattleprod/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE, ignore_shield_check = FALSE)
if(sparkler.activate())
return ..()
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 328b49f4730c..79825ab09dd7 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -946,10 +946,6 @@
trash.forceMove(storage)
storage.update_icon()
-/obj/item/push_broom/proc/janicart_insert(mob/user, obj/structure/janitorialcart/cart)
- cart.mybroom = src
- cart.put_in_cart(src, user)
-
/obj/item/push_broom/traitor
name = "titanium push broom"
desc = "This is my BROOMSTICK! All of the functionality of a normal broom, but at least half again more robust."
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index cb5dc18f2422..9d598c5e9058 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -446,7 +446,7 @@
if(T.density)
return
for(var/atom/A in T.contents)
- if(A.density && istype(A, /obj/machinery/door))
+ if(A.density && isairlock(A))
return
UpdateTransparency(src, NewLoc)
forceMove(NewLoc)
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index d094f279d636..be9c4a1df471 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -34,8 +34,11 @@
QDEL_NULL(myreplacer)
return ..()
-/obj/structure/janitorialcart/proc/put_in_cart(obj/item/I, mob/user)
- user.drop_item()
+/obj/structure/janitorialcart/proc/put_in_cart(mob/user, obj/item/I)
+ if(!user.unEquip(I)) // We can do this here because everything below wants to
+ to_chat(user, "[I] is stuck to your hand!")
+ return
+
I.forceMove(src)
to_chat(user, "You put [I] into [src].")
update_icon(UPDATE_OVERLAYS)
@@ -45,52 +48,51 @@
update_icon(UPDATE_OVERLAYS)
/obj/structure/janitorialcart/attackby(obj/item/I, mob/user, params)
- var/fail_msg = "There is already one of those in [src]."
+ if(I.is_robot_module())
+ to_chat(user, "You cannot interface your modules with [src]!")
+ return
+
+ if(istype(I, /obj/item/mop))
+ var/obj/item/mop/M = I
+ if(M.reagents.total_volume < M.reagents.maximum_volume)
+ M.wet_mop(src, user)
+ return
+ if(!mymop)
+ mymop = I
+ put_in_cart(user, I)
+ return
+ to_chat(user, "There is already one of those in [src].")
+
+ else if(istype(I, /obj/item/push_broom) && !mybroom)
+ mybroom = I
+ put_in_cart(user, I)
+
+ else if(istype(I, /obj/item/storage/bag/trash) && !mybag)
+ mybag = I
+ put_in_cart(user, I)
+
+ else if(istype(I, /obj/item/reagent_containers/spray/cleaner) && !myspray)
+ myspray = I
+ put_in_cart(user, I)
+
+ else if(istype(I, /obj/item/lightreplacer) && !myreplacer)
+ myreplacer = I
+ put_in_cart(user, I)
+
+ else if(istype(I, /obj/item/caution))
+ if(signs < max_signs)
+ signs++
+ put_in_cart(user, I)
+ else
+ to_chat(user, "[src] can't hold any more signs.")
+
+ to_chat(user, "There is already one of those in [src].")
+
+ else if(mybag)
+ mybag.attackby(I, user, params)
- if(!I.is_robot_module())
- if(istype(I, /obj/item/mop))
- var/obj/item/mop/m=I
- if(m.reagents.total_volume < m.reagents.maximum_volume)
- m.wet_mop(src, user)
- return
- if(!mymop)
- m.janicart_insert(user, src)
- else
- to_chat(user, fail_msg)
- else if(istype(I, /obj/item/push_broom))
- if(!mybroom)
- var/obj/item/push_broom/B = I
- B.janicart_insert(user, src)
- else
- to_chat(user, fail_msg)
- else if(istype(I, /obj/item/storage/bag/trash))
- if(!mybag)
- var/obj/item/storage/bag/trash/t=I
- t.janicart_insert(user, src)
- else
- to_chat(user, fail_msg)
- else if(istype(I, /obj/item/reagent_containers/spray/cleaner))
- if(!myspray)
- myspray = I
- put_in_cart(I, user)
- else
- to_chat(user, fail_msg)
- else if(istype(I, /obj/item/lightreplacer))
- if(!myreplacer)
- var/obj/item/lightreplacer/l=I
- l.janicart_insert(user,src)
- else
- to_chat(user, fail_msg)
- else if(istype(I, /obj/item/caution))
- if(signs < max_signs)
- signs++
- put_in_cart(I, user)
- else
- to_chat(user, "[src] can't hold any more signs.")
- else if(mybag)
- mybag.attackby(I, user, params)
else
- to_chat(usr, "You cannot interface your modules with [src]!")
+ to_chat(user, "There is already one of those in [src].")
/obj/structure/janitorialcart/crowbar_act(mob/living/user, obj/item/I)
. = TRUE
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index f17c3f0dba53..d28a65a973ea 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -22,6 +22,8 @@
var/open_sound = 'sound/effects/stonedoor_openclose.ogg'
var/close_sound = 'sound/effects/stonedoor_openclose.ogg'
var/damageSound = null
+ /// How much foam is on the door. Max 5 levels.
+ var/foam_level = 0
/obj/structure/mineral_door/Initialize()
. = ..()
@@ -68,6 +70,8 @@
/obj/structure/mineral_door/proc/try_to_operate(atom/user)
if(is_operating)
return
+ if(foam_level)
+ return
if(isliving(user))
var/mob/living/M = user
if(M.client)
@@ -216,3 +220,29 @@
/obj/structure/mineral_door/wood/Initialize()
. = ..()
AddComponent(/datum/component/debris, DEBRIS_WOOD, -20, 10)
+
+#define MAX_FOAM_LEVEL 5
+// Adds foam to the airlock, which will block it from being opened
+/obj/structure/mineral_door/proc/foam_up()
+ if(!foam_level)
+ new /obj/structure/barricade/foam(get_turf(src))
+ foam_level++
+ return
+
+ if(foam_level == MAX_FOAM_LEVEL)
+ return
+
+ for(var/obj/structure/barricade/foam/blockage in loc.contents)
+ blockage.foam_level = min(++blockage.foam_level, 5)
+ // The last level will increase the integrity by 50 instead of 25
+ if(foam_level == 4)
+ blockage.obj_integrity += 50
+ blockage.max_integrity += 50
+ else
+ blockage.obj_integrity += 25
+ blockage.max_integrity += 25
+ foam_level++
+ blockage.icon_state = "foamed_[foam_level]"
+ blockage.update_icon_state()
+
+#undef MAX_FOAM_LEVEL
diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
index 360d5ee184f6..f84af512c5ea 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
@@ -76,7 +76,7 @@
if(!has_buckled_mobs())
return
var/mob/living/buckled_mob = buckled_mobs[1]
- if(istype(A, /obj/machinery/door))
+ if(isairlock(A))
A.Bumped(buckled_mob)
if(propelled)
diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm
index 05a56c19eb22..a2ac6103dfb9 100644
--- a/code/game/objects/structures/table_frames.dm
+++ b/code/game/objects/structures/table_frames.dm
@@ -18,8 +18,14 @@
anchored = FALSE
layer = PROJECTILE_HIT_THRESHHOLD_LAYER
max_integrity = 100
+ ///The resource dropped when the table frame is destroyed or deconstructed
var/framestack = /obj/item/stack/rods
+ ///How many of framestack resource are dropped
var/framestackamount = 2
+ ///How long the table takes to make
+ var/construction_time = 5 SECONDS
+ ///What stacks can be used to make the table, and if it will result in a unique table
+ var/list/restrict_table_types = list() //ex: list(/obj/item/stack/tile/carpet = /obj/structure/table/wood/poker, /obj/item/stack/sheet/wood = /obj/item/stack/sheet/wood::table_type), carpet will make poker table, wood will result in standard table_type. If the list is empty, any material can be used for its default table_type.
/obj/structure/table_frame/attackby(obj/item/I, mob/user, params)
if(!try_make_table(I, user))
@@ -30,7 +36,18 @@
if(!istype(stack))
return FALSE
- if(!stack.table_type)
+ var/obj/structure/table/new_table_type = stack.table_type
+ if(length(restrict_table_types))
+ var/valid_stack_type = FALSE
+ for(var/obj/item/stack/current_stack as anything in restrict_table_types)
+ if(istype(stack, current_stack))
+ new_table_type = restrict_table_types[current_stack]
+ valid_stack_type = TRUE
+ break
+ if(!valid_stack_type)
+ return FALSE
+
+ if(!new_table_type)
return FALSE
if(stack.get_amount() < 1)
@@ -38,13 +55,24 @@
return TRUE
to_chat(user, "You start adding [stack] to [src]...")
+ if(!do_after(user, construction_time, target = src))
+ return TRUE
+
+ if(!stack.use(1))
+ to_chat(user, "You need at least one sheet of [stack] to do this!")
+ return TRUE
- if(!(do_after(user, 50, target = src) && stack.use(1)))
+ var/obj/structure/table/table_already_there = locate(/obj/structure/table) in get_turf(src)
+ if(table_already_there) //check again after to make sure one wasnt added since
+ to_chat(user, "There is already [table_already_there] here.")
return TRUE
- if(stack.table_type)
- make_new_table(stack.table_type)
+ if(!istype(new_table_type, /obj/structure/table)) //if its something unique, skip the table parts
+ new new_table_type(loc)
+ qdel(src)
return TRUE
+ make_new_table(new_table_type)
+ return TRUE
/obj/structure/table_frame/wrench_act(mob/user, obj/item/I)
. = TRUE
@@ -83,26 +111,7 @@
framestack = /obj/item/stack/sheet/wood
framestackamount = 2
resistance_flags = FLAMMABLE
-
-/obj/structure/table_frame/wood/try_make_table(obj/item/stack/stack, mob/user)
- if(!istype(stack, /obj/item/stack/tile/carpet) && !istype(stack, /obj/item/stack/sheet/wood))
- return FALSE
-
- if(stack.get_amount() < 1) //no need for safeties as we did an istype earlier
- to_chat(user, "You need at least one sheet of [stack] to do this!")
- return TRUE
-
- to_chat(user, "You start adding [stack] to [src]...")
-
- if(!(do_after(user, 50, target = src) && stack.use(1)))
- return TRUE
-
- if(istype(stack, /obj/item/stack/tile/carpet))
- make_new_table(/obj/structure/table/wood/poker)
- return TRUE
-
- make_new_table(stack.table_type)
- return TRUE
+ restrict_table_types = list(/obj/item/stack/tile/carpet = /obj/structure/table/wood/poker, /obj/item/stack/sheet/wood = /obj/item/stack/sheet/wood::table_type)
/obj/structure/table_frame/brass
name = "brass table frame"
@@ -113,21 +122,8 @@
anchored = TRUE
framestack = /obj/item/stack/tile/brass
framestackamount = 1
-
-/obj/structure/table_frame/brass/try_make_table(obj/item/stack/stack, mob/user)
- if(!istype(stack, /obj/item/stack/tile/brass))
- return FALSE
-
- if(stack.get_amount() < 1) //no need for safeties as we did an istype earlier
- to_chat(user, "You need at least one sheet of [stack] to do this!")
- return TRUE
-
- to_chat(user, "You start adding [stack] to [src]...")
-
- if(do_after(user, 20, target = src) && stack.use(1))
- make_new_table(stack.table_type)
-
- return TRUE
+ construction_time = 2 SECONDS
+ restrict_table_types = list(/obj/item/stack/tile/brass = /obj/item/stack/tile/brass::table_type)
/obj/structure/table_frame/brass/narsie_act()
..()
diff --git a/code/modules/antagonists/vampire/vamp_datum.dm b/code/modules/antagonists/vampire/vamp_datum.dm
index 45625ed31214..e9ba8c78bba0 100644
--- a/code/modules/antagonists/vampire/vamp_datum.dm
+++ b/code/modules/antagonists/vampire/vamp_datum.dm
@@ -114,7 +114,7 @@ RESTRICT_TYPE(/datum/antagonist/vampire)
owner.current.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, owner.current.nutrition + 5))
continue
- if(H.stat != DEAD || H.has_status_effect(STATUS_EFFECT_RECENTLY_SUCCUMBED))
+ if((H.stat != DEAD || H.has_status_effect(STATUS_EFFECT_RECENTLY_SUCCUMBED)) && !HAS_MIND_TRAIT(H, TRAIT_XENOBIO_SPAWNED_HUMAN))
if(H.ckey || H.player_ghosted) //Requires ckey regardless if monkey or humanoid, or the body has been ghosted before it died
blood = min(20, H.blood_volume)
adjust_blood(H, blood * BLOOD_GAINED_MODIFIER)
@@ -130,7 +130,7 @@ RESTRICT_TYPE(/datum/antagonist/vampire)
else
to_chat(owner.current, "You have bled your victim dry!")
break
- if(!H.ckey && !H.player_ghosted)//Only runs if there is no ckey and the body has not being ghosted while alive
+ if((!H.ckey && !H.player_ghosted) || HAS_MIND_TRAIT(H, TRAIT_XENOBIO_SPAWNED_HUMAN)) //Only runs if there is no ckey and the body has not being ghosted while alive, also runs if the victim is an evolved caterpillar or diona nymph.
to_chat(owner.current, "Feeding on [H] reduces your thirst, but you get no usable blood from them.")
owner.current.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, owner.current.nutrition + 5))
else
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 1c1810d2cdae..681856dc6833 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -76,3 +76,7 @@
if(!affecting) //bruh where's your chest
return FALSE
apply_damage(damage, BRUTE, affecting)
+
+// Adds the foam status effect to the carbon, which will slow it's movement speed and attack speed
+/mob/living/carbon/proc/foam_up(amount)
+ apply_status_effect(STATUS_EFFECT_C_FOAMED)
diff --git a/code/modules/mob/living/carbon/carbon_procs.dm b/code/modules/mob/living/carbon/carbon_procs.dm
index 1c92114c7582..b242413c0e31 100644
--- a/code/modules/mob/living/carbon/carbon_procs.dm
+++ b/code/modules/mob/living/carbon/carbon_procs.dm
@@ -355,7 +355,7 @@
var/obj/item/organ/internal/eyes/E = get_int_organ(/obj/item/organ/internal/eyes)
. = ..()
- if((E && (E.status & ORGAN_DEAD)) || !.)
+ if((E && (E.status & ORGAN_DEAD)) || !. || E.is_broken())
return FALSE
/mob/living/carbon/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, laser_pointer = FALSE, type = /atom/movable/screen/fullscreen/stretch/flash)
@@ -1207,10 +1207,13 @@ so that different stomachs can handle things in different ways VB*/
var/tinttotal = get_total_tint()
if(tinttotal >= TINT_BLIND)
overlay_fullscreen("tint", /atom/movable/screen/fullscreen/stretch/blind)
+ ADD_TRAIT(src, TRAIT_BLIND, "tint")
else if(tinttotal >= TINT_IMPAIR)
overlay_fullscreen("tint", /atom/movable/screen/fullscreen/stretch/impaired, 2)
+ REMOVE_TRAIT(src, TRAIT_BLIND, "tint")
else
clear_fullscreen("tint", 0)
+ REMOVE_TRAIT(src, TRAIT_BLIND, "tint")
/mob/living/carbon/proc/get_total_tint()
. = 0
diff --git a/code/modules/mob/living/silicon/ai/ai_mob.dm b/code/modules/mob/living/silicon/ai/ai_mob.dm
index d607ee114848..c182f2bd41cb 100644
--- a/code/modules/mob/living/silicon/ai/ai_mob.dm
+++ b/code/modules/mob/living/silicon/ai/ai_mob.dm
@@ -1251,7 +1251,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
. = TRUE
if(anchored)
user.visible_message("[user] starts to unbolt [src] from the plating...")
- if(I.use_tool(src, user, 4 SECONDS, 0, 50))
+ if(!I.use_tool(src, user, 4 SECONDS, 0, 50))
user.visible_message("[user] decides not to unbolt [src].")
return
user.visible_message("[user] finishes unfastening [src]!")
diff --git a/code/modules/mob/living/simple_animal/friendly/diona_nymph.dm b/code/modules/mob/living/simple_animal/friendly/diona_nymph.dm
index 1637a02c8ce3..77c8b8aeb0ac 100644
--- a/code/modules/mob/living/simple_animal/friendly/diona_nymph.dm
+++ b/code/modules/mob/living/simple_animal/friendly/diona_nymph.dm
@@ -205,6 +205,8 @@
adult.real_name = adult.name
adult.ckey = ckey
adult.real_name = adult.dna.species.get_random_name() //I hate this being here of all places but unfortunately dna is based on real_name!
+ // [Nymph -> Diona] is from xenobio (or botany) and does not give vampires usuble blood and cannot be converted by cult.
+ ADD_TRAIT(adult.mind, TRAIT_XENOBIO_SPAWNED_HUMAN, ROUNDSTART_TRAIT)
for(var/obj/item/W in contents)
unEquip(W)
diff --git a/code/modules/mob/living/simple_animal/friendly/nian_caterpillar.dm b/code/modules/mob/living/simple_animal/friendly/nian_caterpillar.dm
index 166b06f23e36..14a22fce199e 100644
--- a/code/modules/mob/living/simple_animal/friendly/nian_caterpillar.dm
+++ b/code/modules/mob/living/simple_animal/friendly/nian_caterpillar.dm
@@ -83,6 +83,8 @@
// Mind transfer to new worme.
M.transfer_to(adult)
+ // [Caterpillar -> worme -> nian] is from xenobio (or cargo) and does not give vampires usuble blood and cannot be converted by cult.
+ ADD_TRAIT(adult.mind, TRAIT_XENOBIO_SPAWNED_HUMAN, ROUNDSTART_TRAIT)
// Worme is placed into cacoon.
adult.forceMove(C)
diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm
index 62a214ce072c..c2ce61cab7e7 100644
--- a/code/modules/mod/mod_core.dm
+++ b/code/modules/mod/mod_core.dm
@@ -153,10 +153,12 @@
cell = new_cell
cell.forceMove(src)
RegisterSignal(src, COMSIG_ATOM_EXITED, PROC_REF(on_exit))
+ RegisterSignal(cell, COMSIG_PARENT_QDELETING, PROC_REF(remove_cell))
/obj/item/mod/core/standard/proc/uninstall_cell()
if(!cell)
return
+ UnregisterSignal(cell, COMSIG_PARENT_QDELETING)
cell = null
UnregisterSignal(src, COMSIG_ATOM_EXITED)
@@ -167,6 +169,11 @@
return
uninstall_cell()
+/obj/item/mod/core/standard/proc/remove_cell()
+ SIGNAL_HANDLER // COMSIG_PARENT_QDELETING
+ UnregisterSignal(cell, COMSIG_PARENT_QDELETING)
+ cell = null
+
/obj/item/mod/core/standard/proc/on_examine(datum/source, mob/examiner, list/examine_text)
SIGNAL_HANDLER
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index e94b02f1d272..d8f6535a23b8 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -128,6 +128,7 @@
message_admins("LOG: Rigged power cell explosion, last touched by [fingerprintslast]")
explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range)
+ charge = 0 //Extra safety in the event the cell does not QDEL right
qdel(src)
/obj/item/stock_parts/cell/proc/corrupt()
diff --git a/code/modules/power/engines/singularity/emitter.dm b/code/modules/power/engines/singularity/emitter.dm
index 7cd160a97c16..bf657702d7d8 100644
--- a/code/modules/power/engines/singularity/emitter.dm
+++ b/code/modules/power/engines/singularity/emitter.dm
@@ -147,7 +147,7 @@
step(src, get_dir(M, src))
/obj/machinery/power/emitter/attackby(obj/item/I, mob/user, params)
- if(!istype(I, /obj/item/card/id) || !istype(I, /obj/item/pda))
+ if(!istype(I, /obj/item/card/id) && !istype(I, /obj/item/pda))
return ..()
if(emagged)
diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm
index 1f3d72d994dd..20d383224e12 100644
--- a/code/modules/projectiles/ammunition/ammo_casings.dm
+++ b/code/modules/projectiles/ammunition/ammo_casings.dm
@@ -508,3 +508,12 @@
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
muzzle_flash_color = LIGHT_COLOR_DARKRED
icon_state = "lasercasing"
+
+/obj/item/ammo_casing/caseless/c_foam
+ name = "\improper C-Foam blob"
+ desc = "You shouldn't see this! Make an issue report on Github!"
+ caliber = "c_foam"
+ projectile_type = /obj/item/projectile/c_foam
+ muzzle_flash_strength = MUZZLE_FLASH_RANGE_WEAK
+ muzzle_flash_range = MUZZLE_FLASH_RANGE_WEAK
+ muzzle_flash_color = LIGHT_COLOR_DARKRED
diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm
index f1e7fe2fd483..b764ae1ce094 100644
--- a/code/modules/projectiles/ammunition/magazines.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -624,3 +624,13 @@
/obj/item/ammo_box/magazine/detective/speedcharger/attackby()
return
+
+/obj/item/ammo_box/magazine/c_foam
+ name = "\improper C-Foam canister"
+ desc = "A canister containing inert foam for the C-Foam launcher."
+ icon_state = "foam_canister"
+ ammo_type = /obj/item/ammo_casing/caseless/c_foam
+ max_ammo = 12
+
+/obj/item/ammo_box/magazine/c_foam/attack_self(mob/user)
+ return
diff --git a/code/modules/projectiles/projectile/magic_projectiles.dm b/code/modules/projectiles/projectile/magic_projectiles.dm
index 8ccc59ffc307..99c40d5929c3 100644
--- a/code/modules/projectiles/projectile/magic_projectiles.dm
+++ b/code/modules/projectiles/projectile/magic_projectiles.dm
@@ -149,7 +149,7 @@
else if(isturf(T) && T.density)
if(!(istype(T, /turf/simulated/wall/indestructible)))
CreateDoor(T)
- else if(istype(target, /obj/machinery/door))
+ else if(isairlock(target))
OpenDoor(target)
else if(istype(target, /obj/structure/closet))
OpenCloset(target)
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index f0bdda2848e4..2ec5338c3348 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -729,7 +729,6 @@
build_path = /obj/item/flamethrower/full
category = list("hacked", "Security")
-
/datum/design/electropack
name = "Electropack"
id = "electropack"
@@ -842,6 +841,14 @@
build_path = /obj/item/ammo_box/c9mm
category = list("hacked", "Security")
+/datum/design/c_foam_ammo
+ name = "C-Foam cartridge"
+ id = "c_foam"
+ build_type = AUTOLATHE
+ materials = list(MAT_METAL = 5000, MAT_GLASS = 2000)
+ build_path = /obj/item/ammo_box/magazine/c_foam
+ category = list("hacked", "Security")
+
/datum/design/cleaver
name = "Butcher's Cleaver"
id = "cleaver"
diff --git a/code/modules/vehicle/vehicle.dm b/code/modules/vehicle/vehicle.dm
index 96d276aa5042..b62ee6a76cfa 100644
--- a/code/modules/vehicle/vehicle.dm
+++ b/code/modules/vehicle/vehicle.dm
@@ -209,7 +209,7 @@
return FALSE
. = ..()
if(auto_door_open)
- if(istype(M, /obj/machinery/door) && has_buckled_mobs())
+ if(isairlock(M) && has_buckled_mobs())
for(var/m in buckled_mobs)
M.Bumped(m)
diff --git a/icons/mob/inhands/guns_lefthand.dmi b/icons/mob/inhands/guns_lefthand.dmi
index 6ba217d1d510..b69abf841339 100644
Binary files a/icons/mob/inhands/guns_lefthand.dmi and b/icons/mob/inhands/guns_lefthand.dmi differ
diff --git a/icons/mob/inhands/guns_righthand.dmi b/icons/mob/inhands/guns_righthand.dmi
index 1aee6bb9652e..5a63844e0fa3 100644
Binary files a/icons/mob/inhands/guns_righthand.dmi and b/icons/mob/inhands/guns_righthand.dmi differ
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index c1175b0c242c..301305fcac10 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/foam_blobs.dmi b/icons/obj/foam_blobs.dmi
new file mode 100644
index 000000000000..679ce893f522
Binary files /dev/null and b/icons/obj/foam_blobs.dmi differ
diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi
index de9e8b650287..d510c4fa9af5 100644
Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ
diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi
index 8164d961ab5f..f56034e9cca1 100644
Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 3bac9fef86b5..96959d4b08dd 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -103,8 +103,8 @@
#include "code\__DEFINES\pipes.dm"
#include "code\__DEFINES\power_defines.dm"
#include "code\__DEFINES\preferences_defines.dm"
-#include "code\__DEFINES\procpath.dm"
#include "code\__DEFINES\proc_refs.dm"
+#include "code\__DEFINES\procpath.dm"
#include "code\__DEFINES\qdel_defines.dm"
#include "code\__DEFINES\radiation_defines.dm"
#include "code\__DEFINES\radio_defines.dm"
@@ -1128,6 +1128,7 @@
#include "code\game\objects\items\weapons\alien_specific.dm"
#include "code\game\objects\items\weapons\batons.dm"
#include "code\game\objects\items\weapons\bee_briefcase.dm"
+#include "code\game\objects\items\weapons\c_foam_launcher.dm"
#include "code\game\objects\items\weapons\cards_ids.dm"
#include "code\game\objects\items\weapons\cash.dm"
#include "code\game\objects\items\weapons\caution.dm"