diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm
index 8c31d589343aa4..5c9336c5c5ca4b 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm
@@ -812,7 +812,7 @@
/turf/open/floor/engine/vacuum,
/area/ruin/planetengi)
"yF" = (
-/mob/living/simple_animal/hostile/construct/proteon,
+/mob/living/basic/construct/proteon,
/turf/open/floor/iron,
/area/ruin/planetengi)
"Ai" = (
@@ -823,7 +823,7 @@
/turf/open/floor/iron/icemoon,
/area/ruin/planetengi)
"Iy" = (
-/mob/living/simple_animal/hostile/construct/proteon,
+/mob/living/basic/construct/proteon,
/obj/effect/turf_decal/tile/yellow,
/turf/open/floor/iron/icemoon,
/area/ruin/planetengi)
diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_gas.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_gas.dmm
new file mode 100644
index 00000000000000..a70a0decb47453
--- /dev/null
+++ b/_maps/RandomRuins/IceRuins/icemoon_surface_gas.dmm
@@ -0,0 +1,1348 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aN" = (
+/obj/machinery/door/airlock/material/glass,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/general,
+/obj/machinery/duct,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"aR" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"bn" = (
+/obj/structure/closet/crate/trashcart/filled,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"bJ" = (
+/obj/machinery/light/cold/directional/north,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"cv" = (
+/obj/effect/spawner/random/trash/food_packaging,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"cE" = (
+/obj/effect/spawner/random/trash/cigbutt,
+/obj/machinery/duct,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"cF" = (
+/obj/structure/rack,
+/obj/item/food/cornchips/blue{
+ pixel_x = -5;
+ pixel_y = -5
+ },
+/obj/item/food/cornchips/blue{
+ pixel_x = -5;
+ pixel_y = 5
+ },
+/obj/item/food/cornchips/blue{
+ pixel_x = -5;
+ pixel_y = 3
+ },
+/obj/item/food/cornchips/blue{
+ pixel_x = -5;
+ pixel_y = 1
+ },
+/obj/item/food/cornchips/blue{
+ pixel_x = -5;
+ pixel_y = -1
+ },
+/obj/item/food/cornchips/blue{
+ pixel_x = -5;
+ pixel_y = -3
+ },
+/obj/item/food/cornchips/green{
+ pixel_x = 8;
+ pixel_y = -5
+ },
+/obj/item/food/cornchips/green{
+ pixel_x = 8;
+ pixel_y = 5
+ },
+/obj/item/food/cornchips/green{
+ pixel_x = 8;
+ pixel_y = 3
+ },
+/obj/item/food/cornchips/green{
+ pixel_x = 8;
+ pixel_y = 1
+ },
+/obj/item/food/cornchips/green{
+ pixel_x = 8;
+ pixel_y = -1
+ },
+/obj/item/food/cornchips/green{
+ pixel_x = 8;
+ pixel_y = -3
+ },
+/obj/item/food/cornchips/red{
+ pixel_y = -5
+ },
+/obj/item/food/cornchips/red{
+ pixel_y = 5
+ },
+/obj/item/food/cornchips/red{
+ pixel_y = 3
+ },
+/obj/item/food/cornchips/red{
+ pixel_y = 1
+ },
+/obj/item/food/cornchips/red{
+ pixel_y = -1
+ },
+/obj/item/food/cornchips/red{
+ pixel_y = -3
+ },
+/obj/item/food/cornchips/purple{
+ pixel_y = -4
+ },
+/obj/item/food/cornchips/purple{
+ pixel_y = 4
+ },
+/obj/item/food/cornchips/purple,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"cI" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/sink/directional/west,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"dd" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"ed" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"es" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"eF" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/duct,
+/obj/structure/sign/poster/fluff/lizards_gas_power/directional/west,
+/obj/item/vending_refill/cigarette,
+/obj/item/vending_refill/cola,
+/obj/item/vending_refill/snack,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"eM" = (
+/obj/structure/fans/tiny/invisible,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"eZ" = (
+/obj/structure/rack,
+/obj/item/food/cornuto,
+/obj/item/food/cornuto{
+ pixel_y = 3;
+ pixel_x = -6
+ },
+/obj/item/food/cornuto{
+ pixel_y = -2;
+ pixel_x = 6
+ },
+/obj/item/food/cornuto{
+ pixel_y = 2;
+ pixel_x = 6
+ },
+/obj/item/food/cornuto{
+ pixel_y = 2;
+ pixel_x = -6
+ },
+/obj/machinery/duct,
+/obj/structure/window/spawner/directional/east,
+/obj/machinery/door/window/left/directional/north,
+/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
+/area/ruin/powered/lizard_gas)
+"gm" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/table/reinforced,
+/obj/structure/sign/poster/official/midtown_slice/directional/east,
+/obj/item/food/taco{
+ pixel_x = 5
+ },
+/obj/item/food/hotdog{
+ pixel_y = 4;
+ pixel_x = -7
+ },
+/obj/structure/window/spawner/directional/north,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"gv" = (
+/turf/template_noop,
+/area/template_noop)
+"gW" = (
+/obj/structure/sink/directional/east,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"ih" = (
+/obj/structure/sign/poster/fluff/lizards_gas_payment/directional/east,
+/mob/living/basic/lizard/space,
+/obj/machinery/light/cold/directional/east,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"iS" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/general,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"jD" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/duct,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"jQ" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"kc" = (
+/obj/machinery/door/airlock/multi_tile/public/glass{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/structure/fans/tiny/invisible,
+/obj/machinery/duct,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"ku" = (
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"kI" = (
+/obj/effect/spawner/random/trash/grille_or_waste,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"kS" = (
+/obj/machinery/duct,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"kT" = (
+/obj/structure/table,
+/obj/item/reagent_containers/spray/cleaner{
+ pixel_x = 4;
+ pixel_y = 2
+ },
+/obj/item/reagent_containers/spray/cleaner{
+ pixel_x = -4;
+ pixel_y = 2
+ },
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"lK" = (
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"ma" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/cable,
+/obj/effect/spawner/random/trash/food_packaging,
+/obj/machinery/duct,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"mE" = (
+/obj/structure/bonfire/prelit,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"oo" = (
+/turf/closed/wall,
+/area/ruin/powered/lizard_gas)
+"oy" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/table/reinforced,
+/obj/effect/spawner/random/entertainment/cigarette_pack,
+/obj/effect/spawner/random/entertainment/cigarette_pack,
+/obj/effect/spawner/random/entertainment/cigarette_pack,
+/obj/effect/spawner/random/entertainment/cigarette_pack,
+/obj/effect/spawner/random/entertainment/cigarette_pack,
+/obj/effect/spawner/random/entertainment/cigarette_pack,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"pL" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden,
+/obj/machinery/duct,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"pO" = (
+/obj/effect/spawner/random/trash/hobo_squat,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/ruin/powered/lizard_gas)
+"qM" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/machinery/duct,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"rh" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 8
+ },
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"sm" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/general,
+/obj/machinery/duct,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"sn" = (
+/obj/structure/rack,
+/obj/machinery/duct,
+/obj/item/storage/cans/sixsoda{
+ pixel_y = -1
+ },
+/obj/item/storage/cans/sixsoda,
+/obj/machinery/door/window/left/directional/north,
+/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
+/area/ruin/powered/lizard_gas)
+"sQ" = (
+/obj/effect/spawner/random/structure/grille,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"sU" = (
+/obj/structure/barricade/wooden/snowed,
+/obj/structure/barricade/wooden/crude/snow,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"tx" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"tW" = (
+/obj/machinery/atmospherics/components/tank/air,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"ul" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/cold/directional/east,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"ur" = (
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/underground/unexplored)
+"uv" = (
+/obj/structure/shipping_container/donk_co,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/ruin/powered/lizard_gas)
+"vA" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/official/jim_nortons/directional/south,
+/obj/machinery/light/cold/directional/south,
+/obj/machinery/duct,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"wK" = (
+/obj/machinery/space_heater,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"wN" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/ruin/powered/lizard_gas)
+"wU" = (
+/obj/structure/table/reinforced,
+/obj/item/food/croissant{
+ pixel_x = -4;
+ pixel_y = 4
+ },
+/obj/item/food/breadslice/banana{
+ pixel_x = 4;
+ pixel_y = 3
+ },
+/obj/item/food/butterbiscuit,
+/obj/structure/window/spawner/directional/north,
+/obj/structure/window/spawner/directional/west,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"xw" = (
+/obj/machinery/door/airlock/external/ruin,
+/obj/effect/mapping_helpers/airlock/locked,
+/obj/structure/fans/tiny/invisible,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"xK" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"xN" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/heater/on,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"yG" = (
+/obj/structure/rack,
+/obj/item/reagent_containers/condiment/vegetable_oil,
+/obj/item/reagent_containers/condiment/vegetable_oil{
+ pixel_x = 4
+ },
+/obj/item/reagent_containers/condiment/vegetable_oil{
+ pixel_x = -4
+ },
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"yH" = (
+/obj/structure/reagent_dispensers/plumbed/fuel,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"zh" = (
+/obj/structure/table,
+/obj/item/reagent_containers/cup/bucket{
+ pixel_y = 2
+ },
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"zm" = (
+/obj/machinery/light/cold/directional/east,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"zJ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"zL" = (
+/obj/effect/spawner/random/vending/colavend,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"Ao" = (
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"AM" = (
+/obj/structure/mineral_door/wood,
+/obj/machinery/duct,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"Bc" = (
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"CW" = (
+/obj/machinery/duct,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"El" = (
+/obj/structure/table,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"Ez" = (
+/obj/structure/billboard/roadsign/twothousand,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/underground/unexplored)
+"Fp" = (
+/obj/effect/spawner/random/trash/cigbutt,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"FP" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/rack,
+/obj/machinery/light/cold/directional/north,
+/obj/item/storage/fancy/donut_box{
+ pixel_y = -2
+ },
+/obj/item/storage/fancy/donut_box{
+ pixel_y = 6
+ },
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"GO" = (
+/obj/structure/water_source/puddle,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/underground/unexplored)
+"HE" = (
+/turf/open/misc/asteroid/snow/icemoon,
+/area/ruin/powered/lizard_gas)
+"HI" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"IF" = (
+/obj/machinery/light/cold/directional/east,
+/obj/machinery/vending/cigarette,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"Ji" = (
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/underground/unexplored)
+"Jv" = (
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"KG" = (
+/obj/effect/spawner/random/structure/grille,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/ruin/powered/lizard_gas)
+"Lh" = (
+/obj/structure/barricade/wooden/snowed,
+/obj/structure/barricade/wooden/crude/snow,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/ruin/powered/lizard_gas)
+"LG" = (
+/obj/structure/billboard/lizards_gas,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/underground/unexplored)
+"LP" = (
+/obj/structure/mop_bucket,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/underground/unexplored)
+"Md" = (
+/obj/effect/spawner/random/structure/crate_abandoned,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"Mz" = (
+/obj/machinery/light/cold/directional/south,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"MA" = (
+/obj/structure/rack,
+/obj/item/storage/box/matches{
+ pixel_x = 3;
+ pixel_y = 4
+ },
+/obj/item/storage/box/matches{
+ pixel_x = -3;
+ pixel_y = 4
+ },
+/obj/effect/spawner/random/entertainment/lighter,
+/obj/effect/spawner/random/entertainment/lighter,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"Py" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/table,
+/obj/machinery/coffeemaker,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/general,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"QI" = (
+/obj/structure/table/reinforced,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"QK" = (
+/obj/structure/cable,
+/obj/structure/rack,
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/item/storage/cans/sixbeer{
+ pixel_y = 8
+ },
+/obj/item/storage/cans/sixbeer{
+ pixel_y = -1
+ },
+/obj/machinery/door/window/left/directional/south,
+/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
+/area/ruin/powered/lizard_gas)
+"QQ" = (
+/obj/structure/sign/poster/official/fruit_bowl/directional/north,
+/obj/structure/rack,
+/obj/item/grenade/firecracker{
+ pixel_x = 5;
+ pixel_y = 7
+ },
+/obj/item/grenade/firecracker{
+ pixel_x = 5;
+ pixel_y = -7
+ },
+/obj/item/grenade/firecracker{
+ pixel_x = 5
+ },
+/obj/item/grenade/firecracker{
+ pixel_x = -6;
+ pixel_y = 7
+ },
+/obj/item/grenade/firecracker{
+ pixel_y = -7;
+ pixel_x = -6
+ },
+/obj/item/grenade/firecracker{
+ pixel_x = -6
+ },
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"Rc" = (
+/obj/structure/shipping_container/nanotrasen,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"Rs" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/general,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"RC" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/power/apc/auto_name/directional/south,
+/obj/machinery/power/terminal,
+/obj/effect/mapping_helpers/apc/full_charge,
+/obj/effect/mapping_helpers/apc/cell_10k,
+/obj/effect/mapping_helpers/apc/unlocked,
+/obj/machinery/power/port_gen/pacman/pre_loaded,
+/obj/structure/cable,
+/obj/machinery/duct,
+/turf/open/floor/plating,
+/area/ruin/powered/lizard_gas)
+"RD" = (
+/obj/structure/cable,
+/turf/closed/wall,
+/area/ruin/powered/lizard_gas)
+"RE" = (
+/obj/machinery/light/cold/directional/east,
+/obj/effect/spawner/random/vending/snackvend,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+"RW" = (
+/obj/effect/spawner/random/structure/crate_loot,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/ruin/powered/lizard_gas)
+"SZ" = (
+/obj/structure/table,
+/obj/item/mop,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"Tz" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/rack,
+/obj/item/food/candy{
+ pixel_x = 11
+ },
+/obj/item/food/candy{
+ pixel_x = -9
+ },
+/obj/item/food/candy{
+ pixel_x = -2
+ },
+/obj/item/food/candy{
+ pixel_x = 4
+ },
+/obj/machinery/light/cold/directional/west,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"TA" = (
+/obj/structure/table/reinforced,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden,
+/obj/structure/closet/mini_fridge,
+/obj/effect/spawner/random/food_or_drink/booze,
+/obj/effect/spawner/random/food_or_drink/booze,
+/obj/effect/spawner/random/food_or_drink/booze,
+/obj/effect/spawner/random/food_or_drink/booze,
+/obj/effect/spawner/random/food_or_drink/booze,
+/obj/effect/spawner/random/food_or_drink/booze,
+/obj/effect/spawner/random/food_or_drink/booze,
+/obj/effect/spawner/random/food_or_drink/booze,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"Ww" = (
+/obj/machinery/duct,
+/turf/open/floor/plating/snowed/icemoon,
+/area/ruin/powered/lizard_gas)
+"WG" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/cable,
+/obj/structure/rack,
+/obj/item/reagent_containers/condiment/yoghurt{
+ pixel_x = 10
+ },
+/obj/item/reagent_containers/condiment/yoghurt{
+ pixel_x = -8
+ },
+/obj/item/reagent_containers/condiment/yoghurt{
+ pixel_x = 1
+ },
+/obj/effect/decal/cleanable/cobweb,
+/obj/item/food/cheese/wheel,
+/obj/item/food/cheese/wheel,
+/obj/structure/window/spawner/directional/west,
+/obj/machinery/door/window/left/directional/south,
+/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
+/area/ruin/powered/lizard_gas)
+"WN" = (
+/obj/machinery/airalarm/directional/east,
+/obj/effect/mapping_helpers/airalarm/unlocked,
+/turf/open/floor/iron,
+/area/ruin/powered/lizard_gas)
+"YC" = (
+/obj/effect/spawner/random/structure/crate_loot,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/ruin/powered/lizard_gas)
+
+(1,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+LG
+Ji
+Ji
+gv
+gv
+"}
+(2,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+LP
+Ji
+Ji
+Ji
+Ji
+gv
+gv
+gv
+gv
+gv
+ur
+Ji
+Ji
+gv
+gv
+"}
+(3,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+Ji
+Ji
+Ji
+GO
+tx
+tx
+El
+Ji
+Ji
+gv
+gv
+gv
+gv
+ur
+Ji
+ur
+gv
+gv
+"}
+(4,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+gv
+Ji
+Ji
+gv
+gv
+zh
+tx
+tx
+El
+Bc
+Ji
+gv
+gv
+gv
+gv
+Ez
+ur
+Ji
+gv
+gv
+"}
+(5,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+Ji
+Ji
+gv
+gv
+gv
+SZ
+tx
+tx
+kT
+Bc
+Ji
+gv
+gv
+gv
+gv
+ur
+Ji
+Ji
+gv
+gv
+"}
+(6,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+Ji
+gv
+gv
+Jv
+Jv
+HE
+rh
+rh
+Jv
+Jv
+HE
+HE
+gv
+gv
+gv
+ur
+Ji
+ur
+gv
+gv
+"}
+(7,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+Ji
+Ji
+gv
+HE
+Bc
+Bc
+jD
+Ww
+jD
+Ww
+cE
+Jv
+Ji
+Ji
+Ji
+Ji
+Ji
+Ji
+gv
+gv
+"}
+(8,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+Ji
+Ji
+gv
+Jv
+Bc
+Bc
+cI
+Bc
+cI
+Bc
+Ww
+Jv
+Ji
+ur
+Ji
+ur
+Ji
+Ji
+gv
+gv
+"}
+(9,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+Ji
+Ji
+gv
+Jv
+Bc
+Mz
+oo
+Bc
+oo
+bJ
+Ww
+Jv
+gv
+gv
+Ji
+Ji
+ur
+gv
+gv
+gv
+"}
+(10,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+Ji
+Ji
+gv
+Jv
+Fp
+Bc
+gW
+Bc
+gW
+Bc
+Ww
+HE
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(11,1,1) = {"
+gv
+gv
+gv
+gv
+gv
+Ji
+Ji
+gv
+HE
+Bc
+Bc
+jD
+Ww
+jD
+Ww
+Ww
+Jv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(12,1,1) = {"
+gv
+gv
+gv
+gv
+Ji
+Ji
+gv
+gv
+zm
+Jv
+HE
+Jv
+IF
+HE
+CW
+zL
+RE
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(13,1,1) = {"
+gv
+gv
+gv
+gv
+Ji
+gv
+gv
+gv
+oo
+aR
+aR
+aR
+oo
+eM
+kc
+oo
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(14,1,1) = {"
+gv
+gv
+gv
+gv
+Ji
+gv
+gv
+gv
+oo
+FP
+yG
+cF
+Tz
+Ao
+ma
+sn
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(15,1,1) = {"
+gv
+gv
+gv
+gv
+Ji
+gv
+gv
+gv
+oo
+QQ
+lK
+dd
+es
+es
+es
+eZ
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(16,1,1) = {"
+gv
+gv
+gv
+gv
+Ji
+gv
+gv
+gv
+oo
+MA
+lK
+cv
+zJ
+jQ
+es
+vA
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(17,1,1) = {"
+gv
+gv
+gv
+sQ
+sQ
+sQ
+KG
+sQ
+oo
+WG
+Ao
+wU
+oy
+QI
+TA
+AM
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(18,1,1) = {"
+gv
+gv
+gv
+sQ
+Jv
+Rc
+Jv
+Jv
+oo
+QK
+ul
+gm
+ih
+WN
+pL
+kS
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(19,1,1) = {"
+gv
+gv
+gv
+sQ
+Jv
+HE
+Jv
+Jv
+oo
+oo
+oo
+oo
+oo
+oo
+aN
+oo
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(20,1,1) = {"
+gv
+gv
+gv
+sU
+Jv
+Jv
+sU
+YC
+ed
+Jv
+oo
+tW
+Py
+xN
+sm
+eF
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(21,1,1) = {"
+gv
+gv
+gv
+Lh
+bn
+Jv
+Jv
+wN
+Jv
+ed
+oo
+xK
+iS
+Rs
+Rs
+RC
+RD
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(22,1,1) = {"
+gv
+gv
+gv
+sU
+Jv
+uv
+sU
+Jv
+Jv
+Jv
+xw
+ku
+HI
+wK
+yH
+qM
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(23,1,1) = {"
+gv
+gv
+gv
+sQ
+Jv
+Jv
+Jv
+Jv
+ed
+Jv
+oo
+aR
+aR
+oo
+oo
+oo
+oo
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(24,1,1) = {"
+gv
+gv
+gv
+sQ
+Jv
+Jv
+ed
+wN
+RW
+mE
+pO
+HE
+Jv
+Jv
+Jv
+HE
+kI
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
+(25,1,1) = {"
+gv
+gv
+gv
+KG
+Jv
+Jv
+YC
+Md
+Jv
+Jv
+Jv
+Jv
+Jv
+HE
+Jv
+Jv
+kI
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+gv
+"}
diff --git a/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm b/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm
index fedd3cb5207686..55da68d118d944 100644
--- a/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm
+++ b/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm
@@ -443,12 +443,6 @@
},
/turf/open/floor/iron/dark,
/area/ruin/syndicate_lava_base/medbay)
-"eh" = (
-/obj/structure/window/reinforced/survival_pod/spawner/directional/south,
-/obj/structure/window/reinforced/survival_pod/spawner/directional/west,
-/obj/structure/window/reinforced/survival_pod/spawner/directional/south,
-/turf/open/floor/engine,
-/area/ruin/syndicate_lava_base/testlab)
"ej" = (
/obj/effect/turf_decal/tile/bar{
dir = 4
@@ -1397,10 +1391,6 @@
pixel_x = -5;
pixel_y = 5
},
-/obj/item/clothing/mask/breath/anesthetic{
- pixel_x = 8;
- pixel_y = 5
- },
/turf/open/floor/iron/dark,
/area/ruin/syndicate_lava_base/medbay)
"ow" = (
@@ -5951,7 +5941,7 @@ Zd
Ku
Fx
ji
-eh
+ch
Jt
Ow
OW
diff --git a/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm b/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm
index e3015469bcea4a..831e0247541938 100644
--- a/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm
+++ b/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm
@@ -66,7 +66,6 @@
/area/misc/anomaly_research)
"dj" = (
/obj/structure/window/spawner/directional/north,
-/obj/structure/window/spawner/directional/north,
/obj/structure/window/spawner/directional/east,
/obj/structure/flora/bush/flowers_br/style_random,
/turf/open/floor/grass,
@@ -1516,7 +1515,6 @@
/area/misc/anomaly_research)
"Ox" = (
/obj/structure/window/spawner/directional/north,
-/obj/structure/window/spawner/directional/north,
/obj/structure/flora/bush/flowers_br/style_random,
/obj/machinery/light/broken/directional/south,
/turf/open/floor/grass,
diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
index 3534643bea98a3..66e681981c7061 100644
--- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
+++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
@@ -26,7 +26,7 @@
/area/template_noop)
"ah" = (
/obj/structure/lattice/catwalk,
-/mob/living/simple_animal/hostile/pirate/ranged/space{
+/mob/living/basic/trooper/pirate/ranged/space{
environment_smash = 0
},
/turf/template_noop,
@@ -587,7 +587,7 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
-/mob/living/simple_animal/hostile/pirate/ranged/space{
+/mob/living/basic/trooper/pirate/ranged/space{
environment_smash = 0
},
/turf/open/floor/iron/airless,
@@ -736,7 +736,7 @@
/area/ruin/space/has_grav)
"Fr" = (
/obj/effect/decal/cleanable/dirt,
-/mob/living/simple_animal/hostile/pirate/ranged/space{
+/mob/living/basic/trooper/pirate/ranged/space{
environment_smash = 0
},
/turf/open/floor/plating/airless,
@@ -941,7 +941,7 @@
"Nm" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/effect/decal/cleanable/dirt,
-/mob/living/simple_animal/hostile/pirate/ranged/space{
+/mob/living/basic/trooper/pirate/ranged/space{
environment_smash = 0
},
/turf/open/floor/iron/airless,
diff --git a/_maps/RandomRuins/SpaceRuins/clericden.dmm b/_maps/RandomRuins/SpaceRuins/clericden.dmm
index ed9b63c7947a2a..c6e6bebddb0be8 100644
--- a/_maps/RandomRuins/SpaceRuins/clericden.dmm
+++ b/_maps/RandomRuins/SpaceRuins/clericden.dmm
@@ -131,7 +131,7 @@
/area/ruin/space)
"E" = (
/obj/effect/decal/cleanable/blood/tracks,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/turf/open/floor/carpet/airless,
/area/ruin/space)
"F" = (
@@ -171,7 +171,7 @@
/turf/open/floor/plating/airless,
/area/ruin/space)
"N" = (
-/mob/living/simple_animal/hostile/construct/proteon,
+/mob/living/basic/construct/proteon,
/turf/open/misc/asteroid/airless,
/area/ruin/space)
"O" = (
diff --git a/_maps/RandomRuins/SpaceRuins/derelict_construction.dmm b/_maps/RandomRuins/SpaceRuins/derelict_construction.dmm
index 6eeb3dd3ef3943..a8c3607258ddce 100644
--- a/_maps/RandomRuins/SpaceRuins/derelict_construction.dmm
+++ b/_maps/RandomRuins/SpaceRuins/derelict_construction.dmm
@@ -31,7 +31,7 @@
/area/ruin/space/has_grav/derelictconstruction)
"fa" = (
/obj/structure/lattice,
-/mob/living/simple_animal/hostile/pirate/ranged/space,
+/mob/living/basic/trooper/pirate/ranged/space,
/turf/template_noop,
/area/space/nearstation)
"gi" = (
@@ -416,7 +416,7 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/derelictconstruction)
"Za" = (
-/mob/living/simple_animal/hostile/pirate/melee/space,
+/mob/living/basic/trooper/pirate/melee/space,
/obj/structure/lattice/catwalk,
/turf/template_noop,
/area/ruin/space/has_grav/derelictconstruction)
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
new file mode 100644
index 00000000000000..e3a80fb657a6c5
--- /dev/null
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
@@ -0,0 +1,1494 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aF" = (
+/obj/item/trash/can/food/envirochow{
+ pixel_x = 2
+ },
+/obj/item/trash/can/food/envirochow{
+ pixel_x = -8;
+ pixel_y = -6
+ },
+/obj/item/trash/can/food/envirochow{
+ pixel_y = -12
+ },
+/obj/effect/decal/cleanable/insectguts,
+/mob/living/basic/cockroach,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"aP" = (
+/obj/item/kitchen/fork{
+ pixel_x = -10;
+ pixel_y = 0
+ },
+/obj/effect/decal/cleanable/ants,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"bj" = (
+/obj/structure/closet/crate/trashcart/filled,
+/obj/item/food/badrecipe/moldy/bacteria,
+/obj/item/food/deadmouse,
+/obj/item/sticker/syndicate/larva,
+/mob/living/basic/mouse/rat,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"bs" = (
+/obj/structure/kitchenspike_frame,
+/obj/item/paper/crumpled,
+/obj/item/restraints/handcuffs/cable/zipties/used,
+/obj/effect/decal/cleanable/blood/gibs/old,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"bx" = (
+/obj/effect/decal/cleanable/garbage,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"bF" = (
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"ew" = (
+/obj/item/trash/can/food/peaches/maint,
+/obj/item/food/breadslice/moldy/bacteria,
+/obj/effect/decal/cleanable/food/egg_smudge,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"fb" = (
+/obj/item/trash/boritos/green,
+/obj/effect/decal/cleanable/plastic,
+/obj/item/storage/bag/trash,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"fk" = (
+/obj/item/kirbyplants/fern,
+/obj/item/food/deadmouse,
+/obj/effect/spawner/random/entertainment/money_small,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"fx" = (
+/obj/item/food/badrecipe/moldy/bacteria{
+ pixel_y = -10
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"fI" = (
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"fP" = (
+/obj/item/match,
+/obj/item/trash/popcorn,
+/obj/item/trash/spacers_sidekick,
+/obj/item/food/pizzaslice/moldy/bacteria,
+/obj/effect/decal/cleanable/plastic,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"fR" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/obj/item/kitchen/spoon/soup_ladle{
+ pixel_x = -5;
+ pixel_y = 7
+ },
+/obj/item/food/badrecipe/moldy{
+ pixel_x = 3;
+ pixel_y = 0
+ },
+/obj/item/food/badrecipe/moldy{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/food/badrecipe/moldy{
+ pixel_y = 3
+ },
+/obj/item/food/badrecipe/moldy,
+/obj/item/food/grown/mushroom/odious_puffball{
+ pixel_y = 3
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"fV" = (
+/obj/item/food/butter{
+ pixel_x = 10;
+ pixel_y = 4
+ },
+/obj/item/food/butter{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/structure/closet/crate/freezer,
+/obj/item/food/butter{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/reagent_containers/condiment/flour{
+ pixel_x = -6;
+ pixel_y = -6
+ },
+/obj/item/reagent_containers/condiment/flour{
+ pixel_x = 6;
+ pixel_y = -6
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"gb" = (
+/obj/structure/closet/crate/trashcart,
+/obj/item/plate_shard,
+/obj/item/popsicle_stick,
+/obj/item/popsicle_stick,
+/obj/item/food/egg/rotten,
+/obj/effect/decal/cleanable/plastic,
+/obj/item/storage/bag/tray/cafeteria,
+/obj/item/storage/bag/tray/cafeteria,
+/obj/item/storage/bag/tray/cafeteria,
+/obj/item/knife/butcher{
+ desc = "A huge thing used for chopping and chopping up meat. Years of service has scarred its metal and worn groves into the handle, but its blade is well-maintained and sharp.";
+ name = "antique cleaver"
+ },
+/mob/living/basic/cockroach,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"gI" = (
+/obj/item/storage/box/mousetraps,
+/obj/structure/table/reinforced,
+/obj/item/melee/flyswatter,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"hq" = (
+/obj/structure/chair/comfy/shuttle,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"hH" = (
+/obj/item/clothing/mask/surgical,
+/obj/effect/spawner/random/trash/botanical_waste,
+/obj/structure/closet/crate/trashcart/filled,
+/obj/item/seeds/onion/red{
+ pixel_x = 6;
+ pixel_y = 4
+ },
+/obj/item/seeds/onion{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/item/food/grown/mushroom/odious_puffball{
+ pixel_x = -8;
+ pixel_y = 2
+ },
+/obj/effect/spawner/random/food_or_drink/seed,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"hN" = (
+/obj/item/shard,
+/obj/item/food/pizzaslice/moldy/bacteria,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"iu" = (
+/obj/structure/plasticflaps/opaque,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"iH" = (
+/obj/structure/closet/crate/freezer,
+/obj/item/food/hard_taco_shell/empty{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/food/hard_taco_shell/empty{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/food/hard_taco_shell/empty{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/item/food/hard_taco_shell/empty{
+ pixel_x = 1;
+ pixel_y = 1
+ },
+/obj/item/storage/box/donkpockets{
+ pixel_x = -5;
+ pixel_y = -5
+ },
+/obj/effect/spawner/random/food_or_drink/donkpockets_single,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"jo" = (
+/obj/item/trash/can,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"js" = (
+/obj/item/food/egg/rotten{
+ pixel_x = -6;
+ pixel_y = -8
+ },
+/obj/item/food/egg/rotten{
+ pixel_x = -10;
+ pixel_y = -8
+ },
+/obj/item/food/egg/rotten{
+ pixel_x = -14;
+ pixel_y = -8
+ },
+/obj/item/food/meat/slab/rawcrab{
+ pixel_x = 2;
+ pixel_y = -8
+ },
+/obj/item/food/meat/slab/rawcrab{
+ pixel_x = 2;
+ pixel_y = -8
+ },
+/obj/item/food/meat/slab/rawcrab{
+ pixel_x = 3;
+ pixel_y = -6
+ },
+/obj/item/food/meat/slab/rawcrab{
+ pixel_x = 2;
+ pixel_y = -2
+ },
+/obj/item/food/meat/slab/rawcrab{
+ pixel_x = 2
+ },
+/obj/item/storage/fancy/pickles_jar{
+ pixel_x = -8;
+ pixel_y = 6
+ },
+/obj/structure/closet/secure_closet/freezer/empty,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"ki" = (
+/obj/effect/spawner/random/trash/food_packaging,
+/obj/item/shard,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"ku" = (
+/obj/structure/fermenting_barrel,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"kJ" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/gloves{
+ pixel_x = 10;
+ pixel_y = 8
+ },
+/obj/item/storage/box/masks{
+ pixel_x = -6;
+ pixel_y = 8
+ },
+/obj/machinery/recharger{
+ pixel_y = -10
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"kS" = (
+/obj/machinery/light/warm,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"kV" = (
+/obj/machinery/computer/terminal{
+ content = list("Property of Spinward-Upsilon Sanitation Department. Authorised employees only.");
+ desc = "A garbage truck's dusty old control console.";
+ name = "dashboard";
+ upperinfo = "Controls locked."
+ },
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"nN" = (
+/obj/item/trash/candy,
+/obj/item/reagent_containers/cup/glass/colocup,
+/obj/item/reagent_containers/cup/glass/colocup,
+/obj/item/reagent_containers/cup/glass/colocup,
+/obj/item/reagent_containers/cup/glass/colocup,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"nQ" = (
+/obj/item/trash/shrimp_chips,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"nS" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/obj/item/vending_refill/dinnerware,
+/obj/item/vending_refill/snack,
+/obj/item/circuitboard/machine/coffeemaker,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"og" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/obj/effect/spawner/random/entertainment/plushie,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"oq" = (
+/obj/item/food/cheese/wheel,
+/obj/item/food/cheese/wheel,
+/obj/item/food/cheese/wheel,
+/obj/item/food/cheese/wheel,
+/obj/item/food/cheese/wheel,
+/obj/item/food/cheese/firm_cheese,
+/obj/item/food/cheese/firm_cheese,
+/obj/item/food/cheese/firm_cheese,
+/obj/item/food/cheese/firm_cheese,
+/obj/item/food/cheese/firm_cheese,
+/obj/item/thermometer,
+/obj/structure/closet/secure_closet/freezer/empty,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"oL" = (
+/obj/structure/table/reinforced,
+/obj/item/analyzer{
+ pixel_y = 6
+ },
+/obj/item/geiger_counter{
+ pixel_x = -8;
+ pixel_y = -2
+ },
+/obj/item/flashlight{
+ pixel_x = 4
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"pp" = (
+/obj/effect/spawner/random/trash/garbage,
+/obj/item/broken_bottle,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"ps" = (
+/obj/item/trash/can/food/larvae,
+/obj/item/food/bait/worm,
+/obj/effect/decal/cleanable/garbage,
+/obj/effect/decal/cleanable/ants,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"pF" = (
+/obj/item/food/badrecipe/moldy/bacteria,
+/obj/item/food/deadmouse/moldy,
+/obj/structure/broken_flooring/pile,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"pP" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"qd" = (
+/obj/item/food/breadslice/moldy/bacteria{
+ pixel_y = -10
+ },
+/obj/structure/reagent_dispensers/servingdish{
+ anchored = 0
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"qm" = (
+/obj/effect/decal/cleanable/food/egg_smudge,
+/obj/item/food/pizzaslice/moldy,
+/mob/living/basic/mouse/brown,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"qM" = (
+/turf/open/space/basic,
+/area/space)
+"re" = (
+/obj/item/trash/shrimp_chips,
+/obj/item/trash/sosjerky,
+/mob/living/basic/mouse/rat,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"rx" = (
+/obj/item/surprise_egg,
+/obj/structure/closet/crate/trashcart,
+/obj/item/trash/raisins,
+/obj/effect/decal/cleanable/food/egg_smudge,
+/obj/item/book/manual/chef_recipes,
+/obj/item/trash/semki/healthy,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"rL" = (
+/obj/item/food/badrecipe,
+/obj/item/pen/charcoal{
+ desc = "It's just a wooden stick with some compressed ash on the end. At least it can write.";
+ name = "charcoal stick"
+ },
+/obj/effect/decal/cleanable/oil/streak,
+/obj/structure/closet/crate/trashcart,
+/obj/item/food/grown/ash_flora/shavings,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"tr" = (
+/obj/structure/broken_flooring/singular,
+/obj/effect/spawner/random/trash/food_packaging,
+/obj/effect/spawner/random/trash/food_packaging,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"ty" = (
+/obj/item/trash/can/food/peaches,
+/obj/item/trash/boritos/red,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"tU" = (
+/obj/machinery/door/poddoor/shutters/preopen,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"uJ" = (
+/obj/item/trash/cnds,
+/obj/item/food/breadslice/moldy/bacteria,
+/obj/effect/decal/cleanable/wrapping,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"vA" = (
+/obj/machinery/power/terminal,
+/obj/structure/tank_dispenser/oxygen,
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"vI" = (
+/obj/item/poster/random_contraband,
+/obj/item/tank/internals/emergency_oxygen/empty,
+/obj/effect/decal/cleanable/garbage{
+ pixel_x = -8;
+ pixel_y = -8
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"wb" = (
+/obj/effect/spawner/random/trash/bacteria,
+/obj/item/trash/can,
+/obj/item/trash/can{
+ pixel_x = 8;
+ pixel_y = 1
+ },
+/obj/item/trash/can{
+ pixel_x = 5;
+ pixel_y = -2
+ },
+/obj/item/food/badrecipe/moldy/bacteria{
+ pixel_x = 12;
+ pixel_y = -8
+ },
+/obj/effect/decal/cleanable/fuel_pool{
+ desc = "A sticky patch of dried cola. It smells very sweet.";
+ name = "puddle of cola"
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"wv" = (
+/obj/structure/closet/cardboard,
+/obj/item/toy/plush/snakeplushie,
+/obj/item/clothing/glasses/eyepatch,
+/obj/item/clothing/mask/cigarette/cigar/havana,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"wR" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/obj/item/food/badrecipe/moldy/bacteria{
+ pixel_x = 2;
+ pixel_y = -8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"xf" = (
+/obj/item/trash/tray,
+/obj/item/trash/waffles,
+/obj/item/trash/waffles,
+/obj/item/trash/waffles,
+/obj/item/food/grown/mushroom/plumphelmet,
+/obj/structure/closet/crate/trashcart,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"xg" = (
+/obj/structure/closet/crate/cardboard,
+/obj/item/knife/kitchen,
+/obj/item/storage/box/mousetraps,
+/obj/structure/broken_flooring/pile,
+/obj/item/food/grown/parsnip,
+/obj/item/food/grown/parsnip,
+/obj/item/food/cheese/wedge,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"xk" = (
+/obj/structure/table/reinforced,
+/obj/item/gps/spaceruin{
+ pixel_x = 6;
+ pixel_y = 2
+ },
+/obj/item/storage/backpack/industrial{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/clothing/suit/hazardvest{
+ pixel_x = -8;
+ pixel_y = -6
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"xZ" = (
+/obj/item/restraints/handcuffs/cable/zipties/used,
+/obj/effect/spawner/random/decoration/flower,
+/obj/item/reagent_containers/cup/glass/bottle/wine/unlabeled,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"ye" = (
+/obj/item/trash/semki/healthy,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"yh" = (
+/obj/effect/spawner/random/trash,
+/mob/living/basic/mouse,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"yi" = (
+/obj/structure/sign/warning,
+/turf/closed/wall/r_wall,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"yv" = (
+/obj/item/trash/can{
+ pixel_x = -8;
+ pixel_y = -2
+ },
+/obj/item/trash/can{
+ pixel_y = -8
+ },
+/obj/effect/decal/cleanable/fuel_pool{
+ desc = "A sticky patch of dried cola. It smells very sweet.";
+ name = "puddle of cola"
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"yC" = (
+/obj/item/trash/popcorn/caramel{
+ pixel_y = -6
+ },
+/mob/living/basic/cockroach,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"zK" = (
+/obj/item/trash/chips{
+ pixel_x = -8
+ },
+/obj/item/broken_bottle{
+ pixel_x = 8;
+ pixel_y = 2
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Aj" = (
+/obj/effect/decal/cleanable/ants,
+/mob/living/basic/mouse/white,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"An" = (
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"AM" = (
+/obj/item/trash/can{
+ pixel_x = -8;
+ pixel_y = -2;
+ pixel_z = 0
+ },
+/obj/item/reagent_containers/cup/soda_cans/random{
+ pixel_x = -8;
+ pixel_y = 6
+ },
+/obj/structure/closet/crate/cardboard,
+/obj/item/vending_refill/cola,
+/obj/item/vending_refill/boozeomat,
+/obj/item/trash/can{
+ pixel_x = 8;
+ pixel_y = 0
+ },
+/obj/item/trash/can{
+ pixel_x = 2;
+ pixel_y = -4
+ },
+/obj/item/reagent_containers/cup/soda_cans/random{
+ pixel_x = -2;
+ pixel_y = -2
+ },
+/obj/item/reagent_containers/cup/soda_cans/random{
+ pixel_x = 8;
+ pixel_y = -2
+ },
+/obj/effect/decal/cleanable/fuel_pool{
+ desc = "A sticky patch of dried cola. It smells very sweet.";
+ name = "puddle of cola"
+ },
+/obj/effect/spawner/random/food_or_drink/refreshing_beverage,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"AR" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"BS" = (
+/obj/item/storage/bag/trash/filled{
+ pixel_x = -8
+ },
+/obj/effect/decal/cleanable/garbage{
+ pixel_x = 2;
+ pixel_y = 5
+ },
+/obj/effect/decal/cleanable/food/egg_smudge{
+ pixel_x = -2;
+ pixel_y = -8
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Cc" = (
+/obj/item/trash/tray,
+/obj/item/food/breadslice/moldy/bacteria{
+ pixel_x = -8;
+ pixel_y = -8
+ },
+/obj/item/food/tofu/prison{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/food/tofu/prison{
+ pixel_x = -8;
+ pixel_y = -2
+ },
+/obj/effect/decal/cleanable/ants,
+/obj/structure/closet/crate/preopen,
+/obj/item/food/meat/slab/human/mutant/zombie{
+ pixel_x = 8;
+ pixel_y = 4
+ },
+/obj/item/mail/junkmail,
+/obj/item/trash/raisins,
+/obj/item/trash/candy{
+ pixel_x = 10;
+ pixel_y = -6
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Ci" = (
+/obj/item/kitchen/fork/plastic{
+ pixel_x = -8
+ },
+/obj/item/kitchen/spoon/plastic{
+ pixel_x = -2;
+ pixel_y = -2
+ },
+/obj/item/paper/crumpled{
+ pixel_x = 7;
+ pixel_y = -4
+ },
+/obj/effect/decal/cleanable/glass,
+/obj/effect/spawner/random/food_or_drink/condiment,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Ct" = (
+/obj/machinery/door/airlock/shuttle,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"CF" = (
+/obj/machinery/reagentgrinder{
+ anchored = 0
+ },
+/obj/item/food/badrecipe{
+ pixel_x = -4;
+ pixel_y = -6
+ },
+/obj/effect/decal/cleanable/fuel_pool{
+ desc = "A sticky patch of dried cola. It smells very sweet.";
+ name = "puddle of cola"
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Do" = (
+/obj/item/food/badrecipe/moldy/bacteria,
+/obj/item/food/bait/worm,
+/obj/effect/decal/cleanable/food/tomato_smudge,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Ec" = (
+/obj/effect/spawner/random/trash/bucket,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Fp" = (
+/obj/item/food/badrecipe/moldy/bacteria,
+/obj/item/storage/bag/trash/filled,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Fs" = (
+/obj/structure/closet/cardboard,
+/obj/item/restraints/handcuffs/cable/zipties/used,
+/obj/item/food/cornchips/blue,
+/obj/item/food/cornchips/blue,
+/obj/item/food/cornchips/green,
+/obj/item/food/cornchips/green,
+/obj/item/food/cornchips/purple,
+/obj/item/food/cornchips/purple,
+/obj/item/food/cornchips/red,
+/obj/item/food/cornchips/red,
+/obj/item/food/cornchips/random,
+/obj/item/food/cornchips/random,
+/obj/item/food/cornchips/blue{
+ desc = "Limited edition flavour. Only for sale within the space commonwealth.";
+ name = "\improper Space Salt and Vinegar Boritos corn chips";
+ tastes = list("salt" = 1, "vinegar" = 3)
+ },
+/obj/item/food/cornchips/blue{
+ desc = "Limited edition flavour. Only for sale within the space commonwealth.";
+ name = "\improper Space Salt and Vinegar Boritos corn chips";
+ tastes = list("salt" = 1, "vinegar" = 3)
+ },
+/obj/item/food/cornchips/random,
+/obj/item/food/cornchips/random,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Fz" = (
+/obj/structure/table/reinforced,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/lead,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"FL" = (
+/obj/structure/closet/cardboard,
+/obj/item/pen/blue,
+/obj/item/ph_paper,
+/obj/item/petri_dish,
+/obj/item/healthanalyzer/simple/disease,
+/obj/item/biopsy_tool,
+/obj/effect/spawner/random/medical/surgery_tool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Gh" = (
+/obj/item/trash/semki/healthy,
+/mob/living/basic/mouse,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"GB" = (
+/obj/item/trash/can,
+/obj/item/storage/bag/trash,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"GP" = (
+/obj/effect/decal/cleanable/garbage,
+/obj/item/crowbar/hammer{
+ desc = "It's a heavy iron hammer with a plastic grip. A triangle has been chiselled into the handle.";
+ name = "heirloom hammer"
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"GU" = (
+/obj/item/reagent_containers/cup/glass/waterbottle/empty,
+/obj/effect/decal/cleanable/wrapping,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Hh" = (
+/obj/structure/closet/crate/trashcart/filled,
+/obj/item/reagent_containers/cup/glass/bottle/juice/orangejuice{
+ desc = "Best before '32";
+ pixel_x = -6
+ },
+/obj/effect/decal/cleanable/insectguts,
+/obj/item/food/grown/mushroom/odious_puffball{
+ pixel_x = 8;
+ pixel_y = 4
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Hu" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/obj/item/knife/plastic{
+ pixel_x = 12
+ },
+/obj/item/food/badrecipe/moldy/bacteria{
+ pixel_x = -6
+ },
+/obj/item/food/meat/slab/pig,
+/obj/item/food/deadmouse,
+/obj/item/food/salami{
+ pixel_x = 1;
+ pixel_y = 2
+ },
+/obj/item/food/salami{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/obj/item/food/salami{
+ pixel_x = 1;
+ pixel_y = 6
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"HC" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/obj/item/kitchen/fork/plastic{
+ pixel_x = -8
+ },
+/obj/item/kitchen/fork/plastic{
+ pixel_x = 8;
+ pixel_y = 0
+ },
+/obj/item/kitchen/fork/plastic,
+/obj/item/storage/box/papersack/meat,
+/obj/effect/spawner/random/food_or_drink/condiment,
+/obj/item/popsicle_stick,
+/obj/item/popsicle_stick{
+ pixel_x = -4;
+ pixel_y = 1
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Ie" = (
+/obj/machinery/airalarm{
+ pixel_y = 25
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"II" = (
+/obj/structure/closet/crate/trashcart/filled,
+/obj/item/food/cracker,
+/obj/item/food/canned/beans{
+ desc = "Probably still good.";
+ name = "rust-covered tin of beans"
+ },
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"IR" = (
+/obj/structure/table/reinforced,
+/obj/item/gas_filter,
+/obj/item/gas_filter,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/head/utility/hardhat/orange{
+ pixel_y = 8
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"JH" = (
+/obj/item/petri_dish/random,
+/obj/item/petri_dish/random,
+/obj/item/petri_dish,
+/obj/item/petri_dish,
+/obj/item/petri_dish,
+/obj/item/organ/internal/tongue/rat,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/glass,
+/obj/item/organ/internal/stomach/rat,
+/obj/item/fish/ratfish,
+/obj/structure/closet/crate/freezer,
+/obj/effect/spawner/random/medical/surgery_tool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"KD" = (
+/obj/structure/closet/crate/critter,
+/obj/item/dog_bone{
+ pixel_y = -6
+ },
+/mob/living/basic/cockroach,
+/mob/living/basic/cockroach,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"KT" = (
+/obj/structure/broken_flooring/singular,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Le" = (
+/obj/effect/spawner/random/trash/bacteria,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Mq" = (
+/obj/structure/closet/crate/cardboard,
+/obj/item/stack/tile/bamboo/tatami{
+ amount = 40
+ },
+/obj/item/stack/sticky_tape{
+ pixel_y = -2
+ },
+/obj/effect/decal/cleanable/plastic,
+/obj/effect/decal/cleanable/oil/streak,
+/obj/effect/decal/cleanable/glass,
+/obj/effect/spawner/random/engineering/material_cheap,
+/obj/item/crowbar/hammer{
+ desc = "It's a heavy claw hammer. The handle is covered in fangmarks of varying sizes.";
+ name = "old hammer"
+ },
+/obj/item/food/deadmouse,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"MA" = (
+/obj/item/food/badrecipe/moldy/bacteria,
+/obj/item/food/deadmouse,
+/obj/item/grown/bananapeel,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Nm" = (
+/obj/item/trash/energybar,
+/obj/item/trash/energybar,
+/obj/item/trash/energybar,
+/obj/item/trash/energybar,
+/obj/item/food/candy/bronx,
+/obj/item/food/candy/bronx,
+/obj/effect/spawner/random/structure/crate_empty,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Od" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/shuttle,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Oh" = (
+/obj/effect/spawner/random/trash/bacteria,
+/mob/living/basic/mouse/brown,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Ok" = (
+/obj/item/plate/large,
+/obj/item/plate/large,
+/obj/item/storage/box/drinkingglasses{
+ pixel_x = 10;
+ pixel_y = 2
+ },
+/obj/structure/closet/crate/preopen,
+/obj/item/reagent_containers/cup/glass/coffee_cup{
+ pixel_x = 4;
+ pixel_y = -3
+ },
+/mob/living/basic/mouse/brown,
+/mob/living/basic/mouse/brown,
+/mob/living/basic/mouse/brown,
+/mob/living/basic/mouse,
+/mob/living/basic/mouse,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Or" = (
+/obj/item/food/sustenance_bar/cheese{
+ pixel_x = -6;
+ pixel_y = -8
+ },
+/obj/structure/closet/crate/large,
+/obj/item/food/sustenance_bar/cheese{
+ pixel_x = -6;
+ pixel_y = -4
+ },
+/obj/item/food/sustenance_bar/neapolitan{
+ maptext_x = 0;
+ maptext_y = 0;
+ pixel_x = -6
+ },
+/obj/item/food/sustenance_bar/neapolitan{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/food/sustenance_bar/mint{
+ pixel_x = -6;
+ pixel_y = 8
+ },
+/obj/item/food/sustenance_bar/mint{
+ pixel_x = -6;
+ pixel_y = 12
+ },
+/obj/item/food/sustenance_bar{
+ pixel_x = 6;
+ pixel_y = -10
+ },
+/obj/item/food/sustenance_bar{
+ pixel_x = 6;
+ pixel_y = -6
+ },
+/obj/item/food/sustenance_bar{
+ pixel_x = 6;
+ pixel_y = -2
+ },
+/obj/item/food/sustenance_bar{
+ pixel_x = 6;
+ pixel_y = 2
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Ox" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/obj/item/trash/candy{
+ pixel_x = 6;
+ pixel_y = 6
+ },
+/obj/item/trash/can/food/desert_snails{
+ pixel_x = -4;
+ pixel_y = 2
+ },
+/obj/item/trash/can/food/envirochow{
+ pixel_x = -8;
+ pixel_y = -2
+ },
+/obj/effect/decal/cleanable/food/flour,
+/obj/item/thermometer/pen{
+ pixel_x = 8
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"OD" = (
+/turf/closed/wall/mineral/titanium,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"OZ" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/obj/item/plate/small{
+ pixel_x = -6
+ },
+/obj/item/food/meat/slab/human/mutant/zombie{
+ pixel_x = 4;
+ pixel_y = 6
+ },
+/obj/item/food/meat/slab/human/mutant/zombie{
+ pixel_x = 5
+ },
+/obj/item/food/meat/slab/human/mutant/zombie{
+ pixel_x = 2;
+ pixel_y = -5
+ },
+/obj/item/food/meat/slab/human{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/obj/effect/decal/cleanable/ants,
+/obj/effect/decal/cleanable/food/tomato_smudge,
+/obj/item/organ/internal/heart/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"PU" = (
+/obj/item/clothing/head/cone{
+ pixel_x = 8;
+ pixel_y = 8
+ },
+/obj/machinery/light/warm,
+/obj/machinery/power/apc{
+ cell_type = /obj/item/stock_parts/cell/lead;
+ locked = 0;
+ pixel_y = -25;
+ start_charge = 0
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Qi" = (
+/obj/item/book/bible,
+/obj/structure/closet/crate/cardboard,
+/obj/item/mail/junkmail{
+ pixel_x = -10;
+ pixel_y = 2
+ },
+/obj/item/mail/junkmail{
+ pixel_x = 6;
+ pixel_y = 1
+ },
+/obj/item/mail/junkmail,
+/obj/effect/decal/cleanable/insectguts,
+/mob/living/basic/mouse/rat,
+/mob/living/basic/mouse/rat,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"QH" = (
+/obj/structure/closet/crate/trashcart/filled,
+/obj/effect/decal/cleanable/insectguts,
+/obj/item/pinata,
+/obj/item/food/cornchips/green,
+/obj/effect/spawner/random/food_or_drink/condiment,
+/mob/living/basic/mouse,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"QL" = (
+/obj/item/broken_bottle,
+/obj/item/grown/bananapeel,
+/obj/effect/spawner/random/trash/garbage,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Rq" = (
+/obj/machinery/door/airlock/external/glass,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Sa" = (
+/turf/closed/wall/r_wall,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Sb" = (
+/obj/item/food/deadmouse/moldy,
+/obj/item/reagent_containers/spray/pestspray{
+ pixel_x = 6;
+ pixel_y = 8
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"TB" = (
+/obj/structure/window/reinforced/shuttle,
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"TG" = (
+/obj/item/mop,
+/obj/item/food/deadmouse/moldy,
+/obj/item/pushbroom,
+/obj/effect/decal/cleanable/insectguts,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"TX" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"UX" = (
+/obj/structure/lattice/catwalk,
+/obj/item/crowbar/large/emergency,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Vb" = (
+/obj/structure/closet/crate/cardboard/mothic,
+/obj/item/trash/can/food/pine_nuts,
+/obj/item/broken_bottle,
+/obj/item/broken_bottle,
+/obj/effect/decal/cleanable/wrapping,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"VB" = (
+/obj/machinery/power/smes,
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"VL" = (
+/obj/machinery/power/shuttle_engine/propulsion,
+/turf/open/space/basic,
+/area/space)
+"Xi" = (
+/obj/item/food/badrecipe/moldy/bacteria,
+/obj/effect/decal/cleanable/food/egg_smudge,
+/mob/living/basic/mouse,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"XF" = (
+/obj/item/shard,
+/obj/item/trash/boritos,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"XY" = (
+/obj/structure/lattice,
+/obj/structure/grille/broken,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Yu" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/bag/trash{
+ pixel_x = -12;
+ pixel_y = 0
+ },
+/obj/item/storage/bag/trash,
+/obj/item/storage/bag/trash{
+ pixel_x = -6;
+ pixel_y = 0
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Yx" = (
+/obj/structure/reagent_dispensers/cooking_oil{
+ anchored = 0
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Yz" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"YB" = (
+/obj/item/trash/peanuts{
+ pixel_x = -4;
+ pixel_y = -8
+ },
+/obj/structure/closet/crate/freezer,
+/obj/item/trash/pistachios{
+ pixel_x = 8;
+ pixel_y = -4
+ },
+/obj/item/trash/pistachios,
+/obj/item/c_tube,
+/obj/item/food/uncooked_rice{
+ pixel_y = -4
+ },
+/obj/item/trash/peanuts{
+ pixel_x = -2;
+ pixel_y = 6
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+"Zb" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/item/grown/bananapeel,
+/obj/item/food/deadmouse,
+/mob/living/basic/mouse/rat,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/foodwaste)
+
+(1,1,1) = {"
+qM
+qM
+pP
+pP
+pP
+OD
+VL
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+"}
+(2,1,1) = {"
+qM
+OD
+TB
+TB
+OD
+OD
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+"}
+(3,1,1) = {"
+XY
+Od
+kJ
+Fz
+gI
+OD
+Sa
+Hu
+rL
+HC
+YB
+iH
+wv
+KD
+wR
+nS
+fV
+Vb
+bs
+yi
+"}
+(4,1,1) = {"
+og
+TB
+kV
+hq
+kS
+OD
+Sa
+xf
+ku
+OZ
+Fp
+Ok
+MA
+aF
+vI
+xg
+ps
+ye
+GP
+Sa
+"}
+(5,1,1) = {"
+AR
+TB
+xk
+IR
+bF
+OD
+Sa
+Ci
+qm
+qd
+zK
+aP
+GU
+KT
+An
+TX
+ki
+Fp
+xZ
+Sa
+"}
+(6,1,1) = {"
+XY
+TB
+Od
+OD
+Ie
+Ct
+tU
+TX
+yh
+bx
+Yz
+Do
+Le
+fx
+wb
+gb
+hH
+QH
+bj
+Sa
+"}
+(7,1,1) = {"
+XY
+Od
+Yu
+oL
+bF
+Ct
+tU
+fb
+pF
+Gh
+hN
+QL
+TX
+Mq
+AM
+CF
+rx
+II
+Hh
+Sa
+"}
+(8,1,1) = {"
+og
+Od
+fI
+fI
+bF
+OD
+Sa
+js
+BS
+Oh
+oq
+XF
+jo
+Aj
+yv
+GB
+pp
+re
+Yx
+Sa
+"}
+(9,1,1) = {"
+XY
+Od
+fI
+bF
+PU
+OD
+Sa
+Qi
+yC
+nN
+Fs
+fk
+TG
+nQ
+ku
+ty
+ew
+tr
+Zb
+Sa
+"}
+(10,1,1) = {"
+AR
+Od
+fI
+vA
+VB
+OD
+Sa
+Cc
+Ox
+fR
+fP
+Or
+Ec
+Sb
+Xi
+uJ
+FL
+Nm
+JH
+yi
+"}
+(11,1,1) = {"
+qM
+OD
+Rq
+Od
+OD
+OD
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+Sa
+iu
+iu
+iu
+Sa
+Sa
+Sa
+Sa
+"}
+(12,1,1) = {"
+qM
+qM
+pP
+pP
+UX
+OD
+VL
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+qM
+"}
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
new file mode 100644
index 00000000000000..a2ed3ff8dbae96
--- /dev/null
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
@@ -0,0 +1,955 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"bb" = (
+/obj/item/organ/external/wings/moth,
+/obj/structure/closet/crate/trashcart,
+/obj/item/bodypart/arm/left/skeleton,
+/obj/item/bodypart/arm/right/skeleton,
+/obj/item/evidencebag,
+/obj/item/organ/internal/heart/cybernetic/tier2,
+/obj/structure/broken_flooring/pile,
+/obj/item/stack/sheet/animalhide/human/five,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"bv" = (
+/obj/structure/showcase/horrific_experiment,
+/obj/effect/decal/cleanable/blood/gibs/old,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"eO" = (
+/obj/effect/spawner/random/contraband/narcotics,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"gh" = (
+/turf/open/space/basic,
+/area/space)
+"gr" = (
+/obj/machinery/door/poddoor/shutters/preopen,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"gy" = (
+/obj/machinery/door/airlock/external/glass,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"hf" = (
+/obj/item/circuitboard/machine/medical_kiosk,
+/obj/structure/frame/machine,
+/obj/effect/spawner/random/engineering/tool,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"hp" = (
+/obj/structure/table/reinforced,
+/obj/item/gps/spaceruin{
+ pixel_x = 6;
+ pixel_y = 2
+ },
+/obj/item/storage/backpack/industrial{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/clothing/suit/hazardvest{
+ pixel_x = -8;
+ pixel_y = -6
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"hu" = (
+/obj/structure/filingcabinet/chestdrawer,
+/obj/item/stack/spacecash/c20,
+/obj/item/pen/fountain,
+/obj/structure/broken_flooring/singular,
+/obj/item/swab,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"hv" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/item/reagent_containers/pill/maintenance{
+ pixel_x = 3;
+ pixel_y = 7
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"io" = (
+/obj/structure/closet/body_bag,
+/obj/structure/table/optable,
+/obj/effect/mob_spawn/corpse/human{
+ brute_damage = 35;
+ mob_type = /mob/living/carbon/human/species/fly;
+ oxy_damage = 65
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"iw" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/obj/effect/spawner/random/entertainment/plushie,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"iU" = (
+/obj/effect/spawner/random/trash/garbage,
+/obj/effect/spawner/random/medical/medkit,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"kf" = (
+/obj/machinery/power/smes,
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"kl" = (
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"kp" = (
+/obj/structure/safe,
+/obj/item/stamp/syndicate,
+/obj/item/traitor_bug,
+/obj/item/eyesnatcher,
+/obj/item/stack/spacecash/c1000,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"kx" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"lT" = (
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"mB" = (
+/obj/effect/spawner/random/engineering/tank,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"mZ" = (
+/obj/machinery/airalarm{
+ pixel_y = 25
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"nW" = (
+/obj/item/storage/box/disks{
+ pixel_x = -7;
+ pixel_y = -3
+ },
+/obj/structure/broken_flooring/singular,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"pu" = (
+/obj/structure/plasticflaps/opaque,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"py" = (
+/obj/structure/closet/body_bag,
+/obj/structure/table/optable,
+/obj/item/surgical_drapes,
+/obj/effect/mob_spawn/corpse/human{
+ brute_damage = 50;
+ burn_damage = 50
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"pD" = (
+/obj/machinery/iv_drip/saline,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"pR" = (
+/obj/machinery/iv_drip,
+/obj/item/storage/box/syringes{
+ pixel_x = 6;
+ pixel_y = -2
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"qh" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/rack_parts,
+/obj/item/storage/pill_bottle/mannitol,
+/obj/item/retractor/advanced,
+/obj/effect/decal/cleanable/oil/slippery,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"qC" = (
+/turf/closed/wall/mineral/titanium,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"qX" = (
+/obj/effect/decal/cleanable/plastic,
+/obj/structure/broken_flooring/corner,
+/obj/item/trash/syndi_cakes,
+/obj/item/trash/syndi_cakes,
+/obj/item/trash/syndi_cakes,
+/obj/item/poster/random_contraband,
+/obj/item/organ/internal/tongue/zombie,
+/obj/structure/closet/crate/trashcart,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"rB" = (
+/obj/structure/closet/crate/freezer,
+/obj/item/stack/medical/bone_gel,
+/obj/item/stack/medical/ointment,
+/obj/item/thermometer,
+/obj/effect/decal/cleanable/blood/splatter,
+/obj/item/clothing/suit/apron/surgical,
+/obj/item/clothing/neck/stethoscope,
+/obj/item/clothing/neck/stethoscope,
+/obj/item/biopsy_tool,
+/obj/effect/spawner/random/contraband/narcotics,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"sa" = (
+/obj/structure/frame/computer,
+/obj/item/circuitboard/computer/operating,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"sU" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"tI" = (
+/obj/structure/tank_holder/anesthetic,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"uo" = (
+/obj/machinery/computer/terminal{
+ content = list("Property of Spinward-Upsilon Sanitation Department. Authorised employees only.");
+ desc = "A garbage truck's dusty old control console.";
+ name = "dashboard";
+ upperinfo = "Controls locked."
+ },
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"uG" = (
+/obj/structure/chair/plastic,
+/obj/item/reagent_containers/syringe/lethal/choral,
+/obj/effect/spawner/random/maintenance,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"uR" = (
+/obj/machinery/iv_drip,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/plastic,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"vf" = (
+/obj/structure/table/reinforced,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/lead,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"vM" = (
+/obj/structure/closet/cardboard,
+/obj/item/toy/plush/snakeplushie,
+/obj/item/bodypart/arm/left/robot/surplus,
+/obj/item/clothing/glasses/eyepatch,
+/obj/item/toy/nuke,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"wh" = (
+/mob/living/basic/trooper/syndicate/ranged,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"wk" = (
+/obj/structure/frame/computer,
+/obj/effect/decal/cleanable/glass,
+/obj/effect/decal/cleanable/cobweb,
+/obj/item/circuitboard/computer/operating,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"xj" = (
+/obj/structure/window/reinforced/shuttle,
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"xw" = (
+/obj/item/restraints/handcuffs/cable/zipties/used,
+/obj/structure/closet/crate/trashcart/filled,
+/obj/item/reagent_containers/condiment/soysauce,
+/obj/item/reagent_containers/pill/mannitol,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"xH" = (
+/obj/item/food/badrecipe/moldy,
+/obj/item/food/badrecipe/moldy,
+/obj/structure/closet/mini_fridge/grimy,
+/obj/effect/decal/cleanable/oil,
+/obj/item/reagent_containers/cup/bottle/morphine,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"zb" = (
+/obj/item/wheelchair,
+/obj/item/cane/white,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"zj" = (
+/obj/structure/table/rolling{
+ desc = "An Interdyne Pharmaceutics brand 'Crash Cart Classic' rolling table for surgical tools. It can and will move.";
+ name = "rolling surgical tray"
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"zn" = (
+/obj/structure/closet/cardboard,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/gauze,
+/obj/item/stack/sticky_tape/surgical,
+/obj/structure/broken_flooring/corner,
+/obj/item/organ/internal/cyberimp/arm/surgery,
+/obj/item/organ/internal/cyberimp/eyes/hud/medical,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"zu" = (
+/obj/structure/toilet{
+ anchored = 0
+ },
+/obj/effect/spawner/random/contraband/permabrig_weapon,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"zZ" = (
+/obj/item/pillow,
+/obj/structure/closet/crate/trashcart/laundry,
+/obj/item/bodybag,
+/obj/item/bodybag,
+/obj/item/clothing/under/rank/medical/scrubs/blue,
+/obj/item/clothing/under/rank/medical/scrubs/blue,
+/obj/item/clothing/under/rank/medical/scrubs/coroner,
+/obj/item/clothing/under/rank/medical/scrubs/green,
+/obj/item/clothing/under/rank/medical/scrubs/green,
+/obj/item/clothing/suit/toggle/labcoat,
+/obj/item/clothing/suit/toggle/labcoat,
+/obj/item/clothing/suit/toggle/labcoat,
+/obj/item/clothing/suit/toggle/labcoat,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Al" = (
+/obj/structure/frame/computer,
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Am" = (
+/obj/structure/mannequin/plastic,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"AB" = (
+/obj/structure/shipping_container/interdyne{
+ armor_type = /datum/armor/immune
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"AG" = (
+/obj/structure/chair/comfy/shuttle,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"AU" = (
+/obj/item/paper/crumpled,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/broken_flooring/side,
+/obj/item/suppressor,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"BE" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/bag/trash{
+ pixel_x = -12;
+ pixel_y = 0
+ },
+/obj/item/storage/bag/trash,
+/obj/item/storage/bag/trash{
+ pixel_x = -6;
+ pixel_y = 0
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Cv" = (
+/obj/item/storage/box/mousetraps,
+/obj/structure/table/reinforced,
+/obj/item/melee/flyswatter,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"CJ" = (
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"CM" = (
+/obj/item/toy/braintoy,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/closet/crate/trashcart,
+/obj/item/shard,
+/obj/item/stack/cable_coil,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"CU" = (
+/obj/structure/mannequin/skeleton,
+/obj/structure/broken_flooring/plating,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Dj" = (
+/obj/item/food/deadmouse/moldy,
+/obj/item/statuebust/hippocratic,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Dv" = (
+/obj/item/popsicle_stick{
+ pixel_x = -4;
+ pixel_y = 9
+ },
+/obj/item/rack_parts,
+/obj/item/shard,
+/obj/item/wrench/medical,
+/obj/effect/decal/cleanable/plastic,
+/obj/effect/spawner/random/contraband/permabrig_gear,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"EJ" = (
+/obj/item/stack/sticky_tape/surgical,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Go" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/reagent_containers/pill/cyanide{
+ pixel_y = 8
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Gp" = (
+/obj/item/organ/internal/eyes/robotic/basic,
+/obj/item/kitchen/spoon,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Hx" = (
+/obj/effect/decal/cleanable/plastic,
+/obj/structure/closet/crate/freezer,
+/obj/item/skillchip/entrails_reader,
+/obj/item/mod/module/health_analyzer,
+/obj/item/shovel,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"HE" = (
+/obj/structure/bed/maint,
+/obj/structure/bedsheetbin,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"IM" = (
+/obj/effect/decal/cleanable/robot_debris,
+/obj/structure/closet/crate/freezer,
+/obj/item/organ/internal/liver/roach,
+/obj/item/organ/internal/stomach,
+/obj/item/organ/internal/tongue/robot,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"IS" = (
+/obj/structure/broken_flooring/singular,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"JW" = (
+/obj/item/plate,
+/obj/effect/decal/cleanable/plastic,
+/obj/structure/closet/crate/trashcart,
+/obj/item/food/deadmouse,
+/obj/effect/spawner/random/medical/medkit,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Kk" = (
+/obj/item/wheelchair,
+/obj/item/screwdriver,
+/obj/effect/spawner/random/maintenance/three,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Ky" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Lh" = (
+/obj/item/food/deadmouse/moldy,
+/obj/item/pushbroom,
+/obj/item/storage/bag/trash/filled,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Ll" = (
+/obj/item/trash/boritos/red,
+/obj/item/storage/box/gloves,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"LA" = (
+/obj/item/mail/junkmail,
+/obj/effect/decal/cleanable/plastic,
+/obj/item/clothing/mask/surgical,
+/obj/item/extinguisher/empty,
+/obj/item/sticker/assistant,
+/obj/item/reagent_containers/cup/coffeepot,
+/obj/item/coffee_cartridge/decaf,
+/obj/structure/closet/crate/trashcart,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"LG" = (
+/obj/structure/lattice/catwalk,
+/obj/item/crowbar/large/emergency,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"LI" = (
+/obj/structure/table/reinforced,
+/obj/item/gas_filter,
+/obj/item/gas_filter,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/head/utility/hardhat/orange{
+ pixel_y = 8
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"LR" = (
+/obj/machinery/power/terminal,
+/obj/structure/tank_dispenser/oxygen,
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"MC" = (
+/turf/closed/wall/r_wall,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"NJ" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/gloves{
+ pixel_x = 10;
+ pixel_y = 8
+ },
+/obj/item/storage/box/masks{
+ pixel_x = -6;
+ pixel_y = 8
+ },
+/obj/machinery/recharger{
+ pixel_y = -10
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Od" = (
+/obj/item/clothing/head/cone{
+ pixel_x = 8;
+ pixel_y = 8
+ },
+/obj/machinery/light/warm,
+/obj/machinery/power/apc{
+ cell_type = /obj/item/stock_parts/cell/lead;
+ locked = 0;
+ pixel_y = -25;
+ start_charge = 0
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Ok" = (
+/obj/item/reagent_containers/pill/cyanide,
+/obj/effect/spawner/random/medical/minor_healing,
+/obj/effect/spawner/random/medical/surgery_tool,
+/obj/item/reagent_containers/blood/o_minus,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"OA" = (
+/obj/machinery/door/airlock/shuttle,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Pd" = (
+/obj/structure/lattice,
+/obj/structure/grille/broken,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Pe" = (
+/obj/effect/decal/cleanable/robot_debris/up,
+/obj/structure/frame/computer,
+/obj/item/stack/sheet/glass{
+ amount = 2
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"PM" = (
+/obj/structure/closet/mini_fridge/grimy,
+/obj/item/storage/organbox,
+/obj/effect/decal/cleanable/blood/gibs/old,
+/obj/item/storage/pill_bottle/epinephrine,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Qq" = (
+/obj/structure/microscope,
+/obj/structure/broken_flooring/singular,
+/obj/effect/spawner/random/trash/food_packaging,
+/obj/item/instrument/bilehorn,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"QK" = (
+/obj/effect/decal/cleanable/robot_debris/down,
+/obj/item/circular_saw,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Rn" = (
+/obj/structure/closet/crate/cardboard,
+/obj/item/book/manual/wiki/surgery,
+/obj/item/book/manual/wiki/surgery,
+/obj/item/book/manual/wiki/medicine{
+ name = "Medical Space Compendium, Volume 637"
+ },
+/obj/item/book/manual/wiki/medicine{
+ name = "Medical Space Compendium, Volume 637"
+ },
+/obj/item/book/manual/wiki/medicine{
+ name = "Medical Space Compendium, Volume 637"
+ },
+/obj/item/book/manual/wiki/medicine{
+ name = "Medical Space Compendium, Volume 637"
+ },
+/obj/item/stamp/denied,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"RT" = (
+/obj/structure/frame/machine,
+/obj/item/shard,
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Tp" = (
+/obj/structure/barricade/wooden,
+/obj/structure/barricade/wooden/crude,
+/obj/structure/curtain/cloth,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"TM" = (
+/obj/structure/closet/body_bag,
+/obj/structure/table/optable,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/mob_spawn/corpse/human{
+ brute_damage = 200;
+ mob_type = /mob/living/carbon/human/species/lizard
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Ua" = (
+/obj/structure/table/reinforced,
+/obj/item/analyzer{
+ pixel_y = 6
+ },
+/obj/item/geiger_counter{
+ pixel_x = -8;
+ pixel_y = -2
+ },
+/obj/item/flashlight{
+ pixel_x = 4
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Um" = (
+/obj/effect/decal/cleanable/garbage,
+/obj/item/lipstick,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"UJ" = (
+/obj/item/storage/box/masks,
+/obj/item/storage/box/masks,
+/obj/item/storage/box/masks,
+/obj/item/clothing/mask/surgical,
+/obj/item/reagent_containers/spray/cleaner{
+ pixel_x = 7;
+ pixel_y = 5
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"VL" = (
+/obj/machinery/power/shuttle_engine/propulsion,
+/turf/open/space/basic,
+/area/space)
+"WX" = (
+/obj/machinery/light/warm,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"XC" = (
+/obj/structure/sign/warning,
+/turf/closed/wall/r_wall,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"XD" = (
+/obj/structure/sinkframe,
+/obj/structure/broken_flooring/pile,
+/obj/effect/decal/cleanable/blood/gibs/old,
+/obj/item/reagent_containers/cup/rag{
+ pixel_x = 6;
+ pixel_y = -3
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"XR" = (
+/obj/structure/broken_flooring/pile,
+/obj/effect/spawner/random/trash/garbage,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Yj" = (
+/obj/structure/reflector/single/mapping{
+ rotation_angle = 360
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+"Zi" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/shuttle,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/medicalwaste)
+
+(1,1,1) = {"
+gh
+gh
+sU
+sU
+sU
+qC
+VL
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+"}
+(2,1,1) = {"
+gh
+qC
+xj
+xj
+qC
+qC
+MC
+MC
+MC
+MC
+MC
+MC
+MC
+MC
+MC
+MC
+MC
+MC
+MC
+MC
+"}
+(3,1,1) = {"
+Pd
+Zi
+NJ
+vf
+Cv
+qC
+MC
+wk
+nW
+sa
+HE
+PM
+zZ
+hu
+vM
+AB
+py
+io
+TM
+XC
+"}
+(4,1,1) = {"
+iw
+xj
+uo
+AG
+WX
+qC
+MC
+Dj
+XR
+Al
+QK
+CJ
+Um
+zb
+tI
+CJ
+uG
+CJ
+Ok
+MC
+"}
+(5,1,1) = {"
+kx
+xj
+hp
+LI
+kl
+qC
+MC
+Pe
+CJ
+CJ
+CJ
+eO
+CJ
+CJ
+Kk
+CJ
+zj
+Go
+bv
+MC
+"}
+(6,1,1) = {"
+Pd
+xj
+Zi
+qC
+mZ
+OA
+gr
+CJ
+Ky
+iU
+Rn
+CM
+qh
+CJ
+wh
+CJ
+CJ
+Ky
+Yj
+MC
+"}
+(7,1,1) = {"
+Pd
+Zi
+BE
+Ua
+kl
+OA
+gr
+CJ
+CJ
+mB
+Dv
+rB
+JW
+CJ
+EJ
+AB
+xw
+CJ
+kp
+MC
+"}
+(8,1,1) = {"
+iw
+Zi
+lT
+lT
+kl
+qC
+MC
+uR
+CJ
+CJ
+hv
+CJ
+CJ
+CJ
+Gp
+CJ
+pD
+CJ
+IM
+MC
+"}
+(9,1,1) = {"
+Pd
+Zi
+lT
+kl
+Od
+qC
+MC
+pR
+eO
+XD
+UJ
+RT
+Lh
+CJ
+Hx
+CJ
+zu
+IS
+bb
+MC
+"}
+(10,1,1) = {"
+kx
+Zi
+lT
+LR
+kf
+qC
+MC
+CU
+Ll
+xH
+Qq
+hf
+LA
+CJ
+Am
+Tp
+zn
+AU
+qX
+XC
+"}
+(11,1,1) = {"
+gh
+qC
+gy
+Zi
+qC
+qC
+MC
+MC
+MC
+MC
+MC
+MC
+MC
+pu
+pu
+pu
+MC
+MC
+MC
+MC
+"}
+(12,1,1) = {"
+gh
+gh
+sU
+sU
+LG
+qC
+VL
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+gh
+"}
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm
new file mode 100644
index 00000000000000..45947bb4112637
--- /dev/null
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm
@@ -0,0 +1,1185 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"ac" = (
+/obj/item/trash/semki/healthy,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"ap" = (
+/obj/machinery/power/terminal,
+/obj/structure/tank_dispenser/oxygen,
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"aG" = (
+/obj/item/storage/toolbox/electrical{
+ pixel_x = 9;
+ pixel_y = 8
+ },
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = -9;
+ pixel_y = 8
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = -9;
+ pixel_y = 2
+ },
+/obj/item/stack/rods/ten,
+/obj/structure/closet/crate/preopen,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"aI" = (
+/obj/structure/bed/maint,
+/obj/item/knife/shiv,
+/obj/item/storage/backpack/satchel/leather/withwallet,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"bb" = (
+/obj/item/food/badrecipe/moldy,
+/obj/item/tank/internals/plasma/empty{
+ pixel_x = -10;
+ pixel_y = 4
+ },
+/obj/item/tank/internals/plasma/empty{
+ pixel_y = 4
+ },
+/obj/item/popsicle_stick,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"bP" = (
+/obj/item/cigbutt/cigarbutt,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/reagent_containers/syringe/contraband/krokodil,
+/obj/item/screwdriver,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/reagent_dispensers/fueltank/large,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"bR" = (
+/obj/item/bedsheet/rainbow,
+/obj/item/cigbutt,
+/obj/item/clothing/ears/earmuffs,
+/obj/structure/bed/maint,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/spawner/random/contraband/permabrig_gear,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"dh" = (
+/obj/machinery/light/warm,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"do" = (
+/obj/structure/chair/comfy/shuttle,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"dC" = (
+/obj/item/storage/box/mousetraps,
+/obj/structure/table/reinforced,
+/obj/item/melee/flyswatter,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"dF" = (
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"dL" = (
+/obj/item/toy/mecha/marauder,
+/obj/structure/closet/cardboard,
+/obj/item/toy/plush/snakeplushie,
+/obj/item/storage/fancy/cigarettes/cigpack_robust,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"fF" = (
+/obj/item/clothing/suit/caution,
+/obj/item/trash/syndi_cakes,
+/obj/effect/decal/cleanable/plastic,
+/obj/item/t_scanner,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"gq" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/shuttle,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"gy" = (
+/obj/structure/window/reinforced/shuttle,
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"hk" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/bag/trash{
+ pixel_x = -12;
+ pixel_y = 0
+ },
+/obj/item/storage/bag/trash,
+/obj/item/storage/bag/trash{
+ pixel_x = -6;
+ pixel_y = 0
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"hm" = (
+/obj/item/mecha_parts/chassis/ripley,
+/obj/item/mecha_parts/part/ripley_right_leg{
+ pixel_x = 4;
+ pixel_y = -8
+ },
+/obj/item/mecha_parts/part/ripley_left_leg{
+ pixel_x = -4;
+ pixel_y = -7
+ },
+/obj/item/mecha_parts/part/ripley_torso,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/closet/crate/large{
+ desc = "A hefty wooden crate with the word \"REJECT\" stamped on it. You'll need a crowbar to get it open."
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"ih" = (
+/obj/item/bedsheet/purple,
+/obj/item/clothing/mask/cigarette/space_cigarette,
+/obj/structure/bed/maint,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"iU" = (
+/obj/structure/chair/stool,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"jl" = (
+/obj/structure/table/reinforced,
+/obj/item/gps/spaceruin{
+ pixel_x = 6;
+ pixel_y = 2
+ },
+/obj/item/storage/backpack/industrial{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/clothing/suit/hazardvest{
+ pixel_x = -8;
+ pixel_y = -6
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"jJ" = (
+/obj/effect/spawner/random/trash/cigbutt,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"jN" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/stock_parts/scanning_module,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"jZ" = (
+/obj/machinery/door/airlock/external/glass,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"kb" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/stock_parts/cell/crap/empty,
+/obj/effect/decal/cleanable/plastic,
+/obj/effect/spawner/random/maintenance/two,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"kR" = (
+/obj/item/tank/internals/oxygen/yellow,
+/obj/structure/closet/crate/preopen,
+/obj/effect/decal/cleanable/shreds,
+/obj/effect/spawner/random/maintenance,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"la" = (
+/obj/structure/lattice,
+/obj/structure/grille/broken,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"le" = (
+/obj/structure/door_assembly/door_assembly_mhatch,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/shard,
+/obj/item/stack/cable_coil/cut,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"lv" = (
+/obj/item/storage/box/zipties{
+ pixel_x = -6;
+ pixel_y = 3
+ },
+/obj/item/storage/box/stockparts/basic{
+ pixel_x = 8;
+ pixel_y = -2
+ },
+/obj/item/storage/box/disks{
+ pixel_x = -8;
+ pixel_y = -4
+ },
+/obj/structure/closet/crate/large,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"lA" = (
+/obj/item/sticker/toolbox,
+/obj/structure/closet/crate/cardboard,
+/obj/item/book/manual/wiki/engineering_guide,
+/obj/item/book/manual/wiki/engineering_construction,
+/obj/item/book/manual/ripley_build_and_repair,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"lE" = (
+/obj/machinery/airalarm{
+ pixel_y = 25
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"lY" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"mV" = (
+/turf/closed/wall/r_wall,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"nX" = (
+/obj/structure/closet/crate/engineering/electrical,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/item/electronics/firelock,
+/obj/item/electronics/firelock,
+/obj/item/electronics/firelock,
+/obj/item/electronics/firelock,
+/obj/item/electronics/firelock,
+/obj/item/stack/cable_coil,
+/obj/item/stack/cable_coil,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"oD" = (
+/obj/effect/spawner/random/trash/cigbutt,
+/obj/item/trash/boritos/purple,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"pd" = (
+/obj/item/stack/rods/ten,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"pk" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"pC" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/storage/bag/construction,
+/obj/item/clothing/shoes/winterboots/ice_boots/eva{
+ desc = "A heavy pair of boots with grips applied to the bottom to keep the wearer vertical while walking in freezing conditions. It's clearly been well used.";
+ name = "ice climbing boots"
+ },
+/obj/structure/closet/crate/engineering/electrical,
+/obj/item/stock_parts/capacitor/adv,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"pM" = (
+/obj/item/lead_pipe,
+/obj/structure/door_assembly/door_assembly_mhatch,
+/obj/effect/decal/cleanable/glass,
+/obj/item/restraints/handcuffs/cable/zipties/used,
+/obj/item/shard,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"qF" = (
+/obj/structure/closet/cardboard,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/pushbroom,
+/obj/item/restraints/handcuffs/cable/zipties/used,
+/obj/item/toy/brokenradio,
+/obj/effect/spawner/random/engineering/tool,
+/mob/living/basic/cockroach,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"rq" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/bed/dogbed,
+/turf/open/floor/plating/dumpsterair,
+/area/space)
+"sb" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/boxcutter,
+/obj/item/boxcutter,
+/obj/item/folder/yellow,
+/obj/item/geiger_counter,
+/obj/item/stack/sticky_tape,
+/obj/structure/closet/crate/preopen,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"sf" = (
+/obj/item/burner/fuel{
+ pixel_x = -5;
+ pixel_y = -2
+ },
+/obj/effect/decal/cleanable/glass,
+/obj/effect/decal/cleanable/ash,
+/obj/item/reagent_containers/cup/beaker/plastic{
+ pixel_x = -5;
+ pixel_y = 4
+ },
+/obj/structure/table,
+/obj/item/reagent_containers/dropper{
+ pixel_x = 7;
+ pixel_y = 0
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"sF" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/gloves{
+ pixel_x = 10;
+ pixel_y = 8
+ },
+/obj/item/storage/box/masks{
+ pixel_x = -6;
+ pixel_y = 8
+ },
+/obj/machinery/recharger{
+ pixel_y = -10
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"tu" = (
+/obj/item/clothing/mask/cigarette/robust,
+/obj/structure/closet/emcloset,
+/obj/item/clothing/suit/utility/fire/heavy,
+/obj/item/clothing/head/utility/hardhat/welding/atmos,
+/obj/item/survivalcapsule/bathroom,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"tL" = (
+/obj/structure/reagent_dispensers/fueltank/large,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"ui" = (
+/obj/item/rollingpaper,
+/obj/item/book/random{
+ pixel_x = 7;
+ pixel_y = 2
+ },
+/obj/item/clothing/gloves/fingerless{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/structure/table,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"un" = (
+/obj/item/food/branrequests,
+/obj/item/kitchen/spoon/plastic,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"ut" = (
+/obj/item/clothing/suit/apron/overalls{
+ pixel_y = -3
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/reagent_dispensers/fueltank/large,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"uW" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/bonfire{
+ desc = "Begging to be lit."
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"vq" = (
+/obj/item/shard,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/closet/crate/trashcart/filled,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"vI" = (
+/obj/item/clothing/head/beanie/red{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/clothing/glasses/regular,
+/obj/structure/table,
+/obj/item/food/grown/kronkus{
+ pixel_x = -5;
+ pixel_y = 8
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"vJ" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/decal/cleanable/molten_object/large,
+/obj/structure/broken_flooring/pile,
+/obj/item/food/deadmouse/moldy,
+/obj/item/stock_parts/water_recycler,
+/obj/item/stock_parts/cell/lead,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"vW" = (
+/obj/effect/spawner/random/engineering/material_cheap,
+/obj/structure/girder/displaced,
+/obj/item/stock_parts/scanning_module,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"xg" = (
+/obj/structure/chair/office,
+/obj/item/reagent_containers/cup/mortar,
+/obj/item/pestle,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"yo" = (
+/obj/item/clothing/head/cone{
+ pixel_x = 8;
+ pixel_y = 8
+ },
+/obj/machinery/light/warm,
+/obj/machinery/power/apc{
+ cell_type = /obj/item/stock_parts/cell/lead;
+ locked = 0;
+ pixel_y = -25;
+ start_charge = 0
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"yF" = (
+/obj/item/trash/spacers_sidekick,
+/obj/item/trash/flare,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/spawner/random/contraband/narcotics,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"za" = (
+/obj/item/cigbutt/cigarbutt{
+ desc = "A manky old cigar butt. A little cobweb is on the end.";
+ pixel_x = -8;
+ pixel_y = -2
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"zh" = (
+/obj/item/cigbutt,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"zo" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/girder/displaced,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"zz" = (
+/obj/item/cigbutt/cigarbutt,
+/obj/effect/decal/cleanable/oil,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/closet/crate/trashcart,
+/obj/item/storage/bag/trash,
+/obj/item/clothing/shoes/sneakers/black,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"zC" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"zN" = (
+/obj/structure/table/reinforced,
+/obj/item/gas_filter,
+/obj/item/gas_filter,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/head/utility/hardhat/orange{
+ pixel_y = 8
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"zY" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/toy/minimeteor,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"BN" = (
+/obj/item/tank/internals/plasma/full,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/reagent_dispensers/fueltank/large,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Cm" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/mod/module/jetpack,
+/obj/item/stock_parts/servo,
+/obj/item/stock_parts/subspace/filter,
+/obj/structure/fluff/oldturret,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Dq" = (
+/obj/item/match,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/spawner/random/entertainment/cigarette,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"DR" = (
+/obj/item/shard/plasma{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/trash/semki{
+ pixel_x = 6;
+ pixel_y = 6
+ },
+/obj/item/food/badrecipe/moldy{
+ pixel_x = -6;
+ pixel_y = -4
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Er" = (
+/obj/item/clothing/suit/space,
+/obj/item/clothing/head/helmet/space,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Fe" = (
+/obj/structure/fermenting_barrel,
+/obj/item/reagent_containers/cup/bottle/welding_fuel{
+ pixel_x = 9;
+ pixel_y = -6
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"FD" = (
+/obj/structure/table/reinforced,
+/obj/item/analyzer{
+ pixel_y = 6
+ },
+/obj/item/geiger_counter{
+ pixel_x = -8;
+ pixel_y = -2
+ },
+/obj/item/flashlight{
+ pixel_x = 4
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"FN" = (
+/obj/item/storage/fancy/cigarettes/cigpack_robust{
+ pixel_x = -9;
+ pixel_y = 4
+ },
+/obj/item/storage/fancy/cigarettes/cigpack_robust{
+ pixel_x = 1;
+ pixel_y = 4
+ },
+/obj/structure/closet/crate/cardboard,
+/obj/item/storage/fancy/cigarettes/cigpack_syndicate{
+ pixel_x = -9
+ },
+/obj/item/storage/fancy/cigarettes/cigpack_shadyjims{
+ pixel_x = 1
+ },
+/obj/item/gas_filter/damaged{
+ pixel_x = -5;
+ pixel_y = -4
+ },
+/obj/item/clothing/mask/gas{
+ pixel_x = 1;
+ pixel_y = -3
+ },
+/obj/item/clothing/mask/gas{
+ desc = "This gas mask feels different. It's not quite like the others.";
+ pixel_x = -1;
+ pixel_y = -3
+ },
+/obj/item/clothing/mask/gas{
+ pixel_x = -4;
+ pixel_y = -3
+ },
+/obj/item/clothing/mask/gas{
+ pixel_x = -7;
+ pixel_y = -3
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Gn" = (
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Hk" = (
+/obj/item/food/pizzaslice/moldy/bacteria,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Hn" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/decal/cleanable/oil/slippery,
+/obj/item/pen,
+/obj/item/stock_parts/subspace/analyzer,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Hw" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/spawner/random/trash/cigbutt,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"HD" = (
+/obj/structure/mecha_wreckage/ripley,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/decal/cleanable/molten_object,
+/obj/item/organ/internal/tongue/robot,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"HN" = (
+/obj/structure/table/reinforced,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/lead,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"HZ" = (
+/turf/closed/wall/mineral/titanium,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Jx" = (
+/obj/structure/chem_separator,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"JL" = (
+/obj/machinery/space_heater/improvised_chem_heater,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"JO" = (
+/obj/item/storage/pill_bottle/stimulant{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/obj/item/storage/pill_bottle/maintenance_pill/full{
+ pixel_x = -2;
+ pixel_y = -2
+ },
+/obj/structure/closet/crate/preopen,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/item/reagent_containers/syringe/contraband/methamphetamine{
+ pixel_x = -5;
+ pixel_y = -7
+ },
+/obj/item/reagent_containers/syringe/contraband/krokodil{
+ pixel_x = -1;
+ pixel_y = -2
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"JR" = (
+/obj/effect/decal/cleanable/ash,
+/obj/effect/decal/cleanable/oil/streak,
+/mob/living/basic/trooper/russian,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"JW" = (
+/obj/machinery/door/poddoor/shutters/preopen,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"JX" = (
+/turf/open/space/basic,
+/area/space)
+"Ko" = (
+/obj/machinery/computer/terminal{
+ content = list("Property of Spinward-Upsilon Sanitation Department. Authorised employees only.");
+ desc = "A garbage truck's dusty old control console.";
+ name = "dashboard";
+ upperinfo = "Controls locked."
+ },
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Kq" = (
+/obj/structure/closet/crate,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/airlock_painter,
+/obj/item/pen/screwdriver,
+/obj/item/rcd_ammo,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"LV" = (
+/obj/machinery/power/smes,
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Ml" = (
+/obj/structure/plasticflaps/opaque,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"MJ" = (
+/obj/structure/lattice/catwalk,
+/obj/item/crowbar/large/emergency,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"MQ" = (
+/obj/item/stock_parts/cell/crap/empty{
+ pixel_x = -4;
+ pixel_y = 10
+ },
+/obj/item/clothing/mask/cigarette/space_cigarette{
+ pixel_x = -5;
+ pixel_y = 7
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/crowbar/hammer{
+ desc = "A large claw hammer. It's been heavily used, as evidenced by the dents and scratches covering its head.";
+ name = "claw hammer"
+ },
+/obj/item/storage/fancy/cigarettes/cigpack_cannabis{
+ pixel_x = 6;
+ pixel_y = 2
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Nd" = (
+/obj/item/binoculars,
+/obj/item/crowbar/large/old,
+/obj/item/tank/jetpack/improvised,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Ol" = (
+/obj/item/plate_shard,
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/decal/cleanable/oil,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Pz" = (
+/obj/structure/sign/warning,
+/turf/closed/wall/r_wall,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"PE" = (
+/obj/machinery/door/airlock/shuttle,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"PH" = (
+/obj/item/bikehorn/rubberducky,
+/obj/structure/closet/mini_fridge/grimy,
+/obj/item/reagent_containers/cup/soda_cans/grey_bull,
+/obj/item/reagent_containers/cup/soda_cans/monkey_energy,
+/obj/item/reagent_containers/cup/soda_cans/monkey_energy,
+/obj/item/reagent_containers/cup/soda_cans/pwr_game,
+/obj/item/reagent_containers/cup/blastoff_ampoule,
+/obj/structure/table,
+/obj/item/food/drug/moon_rock,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Rw" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"RD" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"RP" = (
+/obj/structure/table,
+/obj/item/food/drug/moon_rock{
+ pixel_x = 7;
+ pixel_y = 4
+ },
+/obj/item/lighter/skull{
+ light_color = "#F57247";
+ pixel_x = 8;
+ pixel_y = -3
+ },
+/obj/item/weldingtool/largetank{
+ light_color = "#F57247";
+ max_fuel = 50;
+ pixel_x = -7;
+ pixel_y = 3
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Ss" = (
+/obj/item/cigbutt/roach,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"To" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Tv" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/item/trash/can/food/beans{
+ pixel_x = 8;
+ pixel_y = -4
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"TD" = (
+/obj/item/food/deadmouse,
+/obj/item/trash/candy,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Vw" = (
+/obj/item/rollingpaper{
+ pixel_x = 8;
+ pixel_y = -6
+ },
+/obj/item/rollingpaper{
+ pixel_x = -2;
+ pixel_y = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate/wooden,
+/obj/item/clothing/glasses/night{
+ pixel_x = -1;
+ pixel_y = -2
+ },
+/obj/item/melee/roastingstick{
+ pixel_x = 11
+ },
+/obj/item/flamethrower/full/tank{
+ pixel_x = -2;
+ pixel_y = 4
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"VL" = (
+/obj/machinery/power/shuttle_engine/propulsion,
+/turf/open/space/basic,
+/area/space)
+"WK" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/item/clothing/shoes/workboots{
+ pixel_x = 7;
+ pixel_y = 5
+ },
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"WV" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Xt" = (
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Xv" = (
+/obj/item/food/deadmouse,
+/obj/item/clothing/shoes/sneakers/red,
+/obj/item/clothing/mask/cigarette/carp,
+/obj/item/extinguisher/mini,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"XS" = (
+/obj/effect/decal/cleanable/fuel_pool,
+/obj/structure/firelock_frame,
+/obj/structure/broken_flooring/pile,
+/obj/item/reagent_containers/syringe/contraband/methamphetamine,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Ye" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/obj/effect/spawner/random/entertainment/plushie,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/squat)
+"Zu" = (
+/obj/item/food/candy,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/closet/crate/trashcart,
+/obj/item/storage/bag/trash/filled,
+/obj/item/trash/champagne_cork,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating/dumpsterair,
+/area/ruin/space/has_grav/garbagetruck/squat)
+
+(1,1,1) = {"
+JX
+JX
+pk
+pk
+pk
+HZ
+VL
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+"}
+(2,1,1) = {"
+JX
+HZ
+gy
+gy
+HZ
+HZ
+mV
+mV
+mV
+mV
+mV
+mV
+mV
+mV
+mV
+mV
+mV
+mV
+mV
+mV
+"}
+(3,1,1) = {"
+la
+gq
+sF
+HN
+dC
+HZ
+mV
+bR
+ih
+un
+aI
+rq
+Fe
+lv
+pM
+tu
+hm
+pC
+fF
+Pz
+"}
+(4,1,1) = {"
+Ye
+gy
+Ko
+do
+dh
+HZ
+mV
+ut
+WK
+zh
+WV
+Tv
+za
+aG
+zo
+HD
+MQ
+qF
+Cm
+mV
+"}
+(5,1,1) = {"
+zC
+gy
+jl
+zN
+dF
+HZ
+mV
+zz
+Xt
+jJ
+Xt
+Xt
+DR
+uW
+XS
+nX
+BN
+vJ
+vW
+mV
+"}
+(6,1,1) = {"
+la
+gy
+gq
+HZ
+lE
+PE
+JW
+WV
+WV
+WV
+Xt
+To
+Hw
+Hk
+vq
+zY
+Hn
+kb
+le
+mV
+"}
+(7,1,1) = {"
+la
+gq
+hk
+FD
+dF
+PE
+JW
+oD
+Xt
+JO
+RD
+To
+Xt
+TD
+pd
+JR
+Kq
+sb
+dL
+mV
+"}
+(8,1,1) = {"
+Ye
+gq
+Gn
+Gn
+dF
+HZ
+mV
+vI
+Ss
+sf
+iU
+Xt
+Xt
+ac
+Xt
+bb
+jN
+lA
+kR
+mV
+"}
+(9,1,1) = {"
+la
+gq
+Gn
+dF
+yo
+HZ
+mV
+ui
+xg
+RP
+Jx
+lY
+JL
+tL
+Xt
+Rw
+To
+Ol
+To
+mV
+"}
+(10,1,1) = {"
+zC
+gq
+Gn
+ap
+LV
+HZ
+mV
+PH
+Xt
+FN
+Vw
+bP
+Zu
+To
+Dq
+yF
+Nd
+Er
+Xv
+Pz
+"}
+(11,1,1) = {"
+JX
+HZ
+jZ
+gq
+HZ
+HZ
+mV
+mV
+mV
+mV
+mV
+mV
+mV
+Ml
+Ml
+Ml
+mV
+mV
+mV
+mV
+"}
+(12,1,1) = {"
+JX
+JX
+pk
+pk
+MJ
+HZ
+VL
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+JX
+"}
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm
new file mode 100644
index 00000000000000..761990a97d5976
--- /dev/null
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm
@@ -0,0 +1,1147 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aj" = (
+/obj/machinery/power/smes,
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"bL" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/bag/trash{
+ pixel_x = -12;
+ pixel_y = 0
+ },
+/obj/item/storage/bag/trash,
+/obj/item/storage/bag/trash{
+ pixel_x = -6;
+ pixel_y = 0
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"bU" = (
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"cf" = (
+/obj/item/paint_palette,
+/obj/item/storage/crayons,
+/obj/structure/spider/stickyweb,
+/obj/structure/table_frame/wood,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"cg" = (
+/obj/structure/spider/stickyweb,
+/obj/item/clothing/under/costume/mummy,
+/obj/item/clothing/mask/mummy,
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"cq" = (
+/obj/machinery/light/warm,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"cT" = (
+/obj/item/c_tube,
+/obj/effect/spawner/random/trash/garbage,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"dn" = (
+/obj/structure/window/reinforced/shuttle,
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"dq" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/obj/item/trash/candy{
+ pixel_x = 7
+ },
+/obj/item/lead_pipe{
+ pixel_x = -2;
+ pixel_y = -4
+ },
+/obj/item/plate_shard{
+ pixel_x = 6;
+ pixel_y = 0
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"eL" = (
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"hD" = (
+/obj/structure/mannequin/wood{
+ desc = "Oh, so this is a dress-up game now. It makes eye contact."
+ },
+/obj/item/clothing/shoes/kindle_kicks{
+ pixel_y = -10
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"hH" = (
+/obj/structure/spider/solid,
+/obj/item/book/manual/wiki/cytology,
+/obj/effect/decal/cleanable/plastic,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"hS" = (
+/obj/structure/closet/crate/trashcart/filled,
+/obj/item/toy/xmas_cracker,
+/obj/item/toy/xmas_cracker,
+/obj/item/toy/toy_xeno,
+/obj/item/clothing/head/costume/party/festive,
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"it" = (
+/obj/item/trash/candle,
+/obj/item/food/canned/pine_nuts,
+/obj/item/kitchen/fork,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"jD" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/shuttle,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"kj" = (
+/obj/structure/mannequin/plastic,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"kz" = (
+/obj/item/storage/wallet/random,
+/obj/item/coin/plastic,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"ld" = (
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"lg" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"lm" = (
+/obj/structure/spider/stickyweb,
+/obj/structure/spider/sticky,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"mf" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random/structure/tank_holder,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"mM" = (
+/obj/structure/spider/stickyweb,
+/obj/item/food/badrecipe/moldy,
+/obj/item/storage/box/pdas,
+/obj/effect/spawner/random/entertainment/money_small,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"ng" = (
+/obj/item/vending_refill/snack,
+/obj/item/food/candy,
+/obj/structure/broken_flooring/side,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"nM" = (
+/turf/closed/wall/mineral/titanium,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"nP" = (
+/obj/structure/bed/maint,
+/obj/item/pen/survival,
+/obj/item/bedsheet/grey,
+/obj/effect/decal/cleanable/shreds,
+/obj/effect/spawner/random/bureaucracy/pen,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"pi" = (
+/obj/item/chair/wood,
+/obj/item/c_tube,
+/obj/effect/decal/cleanable/generic,
+/obj/structure/broken_flooring/corner,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"ps" = (
+/obj/effect/spawner/random/trash,
+/obj/effect/spawner/random/bureaucracy/paper,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"pA" = (
+/obj/structure/spider/effigy,
+/obj/structure/spider/stickyweb,
+/obj/item/coin/silver,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"pN" = (
+/obj/structure/closet/crate/cardboard/mothic,
+/obj/item/clothing/head/mothcap,
+/obj/item/clothing/mask/gas/explorer,
+/obj/item/clothing/under/misc/overalls,
+/obj/item/clothing/shoes/magboots,
+/obj/item/clothing/glasses/meson,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"qX" = (
+/obj/structure/spider/sticky,
+/obj/item/food/badrecipe/moldy,
+/obj/structure/spider/stickyweb,
+/obj/item/food/spidereggs{
+ pixel_x = 4;
+ pixel_y = 6
+ },
+/obj/structure/closet/crate/trashcart,
+/obj/item/food/spidereggs{
+ pixel_x = -4;
+ pixel_y = 6
+ },
+/obj/effect/spawner/random/trash/food_packaging,
+/obj/item/food/spidereggs,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"rb" = (
+/obj/structure/sign/warning,
+/turf/closed/wall/r_wall,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"rc" = (
+/obj/effect/decal/cleanable/oil,
+/obj/item/flashlight/flare/torch,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"ri" = (
+/obj/structure/lattice/catwalk,
+/obj/item/crowbar/large/emergency,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"rr" = (
+/obj/structure/floodlight_frame,
+/obj/effect/spawner/random/decoration/glowstick,
+/obj/effect/spawner/random/decoration/glowstick,
+/obj/effect/spawner/random/decoration/glowstick,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"rI" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"sh" = (
+/obj/item/food/badrecipe/moldy/bacteria,
+/obj/effect/decal/cleanable/ants,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"sw" = (
+/obj/effect/decal/cleanable/glass/plastitanium/screws,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/item/cardboard_cutout,
+/obj/item/clothing/neck/tie/horrible,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"sA" = (
+/obj/item/clothing/head/costume/rabbitears,
+/obj/item/grown/bananapeel,
+/obj/effect/decal/cleanable/garbage,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"sO" = (
+/obj/item/clothing/suit/syndicatefake,
+/obj/item/weldingtool/largetank{
+ pixel_x = -4;
+ pixel_y = 2
+ },
+/obj/effect/decal/cleanable/fuel_pool,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"ts" = (
+/obj/structure/spider/solid,
+/obj/structure/spider/stickyweb,
+/obj/structure/closet/crate/trashcart/filled,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"tQ" = (
+/obj/item/rack_parts,
+/obj/structure/spider/stickyweb,
+/obj/item/folder/blue{
+ pixel_x = -3;
+ pixel_y = -2
+ },
+/obj/item/folder/blue,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"ub" = (
+/obj/structure/filingcabinet,
+/obj/structure/spider/stickyweb,
+/obj/item/storage/wallet/random,
+/obj/item/pen/blue,
+/obj/item/paper/fluff/junkmail_redpill,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"uT" = (
+/obj/structure/table/reinforced,
+/obj/item/gas_filter,
+/obj/item/gas_filter,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/head/utility/hardhat/orange{
+ pixel_y = 8
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"uX" = (
+/obj/structure/table/reinforced,
+/obj/item/gps/spaceruin{
+ pixel_x = 6;
+ pixel_y = 2
+ },
+/obj/item/storage/backpack/industrial{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/clothing/suit/hazardvest{
+ pixel_x = -8;
+ pixel_y = -6
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"vz" = (
+/obj/structure/frame/computer,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"wo" = (
+/obj/machinery/door/airlock/shuttle,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"wu" = (
+/obj/machinery/airalarm{
+ pixel_y = 25
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"ww" = (
+/obj/machinery/door/airlock/external/glass,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"wy" = (
+/obj/item/barcodescanner,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/cardpack/series_one{
+ pixel_x = 2;
+ pixel_y = 1
+ },
+/obj/item/cardpack/series_one{
+ pixel_y = 4
+ },
+/obj/item/cardpack/series_one{
+ pixel_x = -3;
+ pixel_y = 2
+ },
+/obj/item/cardpack/series_one,
+/obj/structure/closet/crate/cardboard,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"wE" = (
+/obj/structure/closet/crate/wooden,
+/obj/item/toy/figure/wizard{
+ pixel_x = 8;
+ pixel_y = 6
+ },
+/obj/item/toy/figure/clown{
+ pixel_x = -2;
+ pixel_y = 6
+ },
+/obj/item/toy/figure/secofficer{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/item/toy/figure/secofficer{
+ pixel_x = 8;
+ pixel_y = 2
+ },
+/obj/item/toy/figure/secofficer{
+ pixel_x = -4;
+ pixel_y = 2
+ },
+/obj/item/toy/figure/dsquad{
+ pixel_x = 4;
+ pixel_y = -1
+ },
+/obj/item/toy/figure/dsquad{
+ pixel_y = -1
+ },
+/obj/item/toy/figure/dsquad{
+ pixel_x = -4;
+ pixel_y = -1
+ },
+/obj/item/toy/figure/dsquad{
+ pixel_x = -8;
+ pixel_y = -1
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"wK" = (
+/obj/effect/decal/cleanable/robot_debris/down,
+/obj/item/clothing/under/costume/skeleton,
+/obj/item/clothing/mask/gas/prop,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"wW" = (
+/obj/structure/spider/stickyweb,
+/obj/item/food/badrecipe/moldy,
+/obj/item/grown/bananapeel,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"xd" = (
+/obj/effect/decal/cleanable/robot_debris/up,
+/obj/effect/decal/cleanable/oil,
+/obj/item/melee/skateboard,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"xf" = (
+/obj/structure/door_assembly/door_assembly_wood,
+/obj/effect/decal/cleanable/plastic,
+/obj/effect/decal/cleanable/oil/slippery,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"xC" = (
+/obj/item/stack/sheet/plastic/five,
+/obj/item/stack/sheet/plastic/five,
+/obj/structure/mannequin/plastic,
+/obj/item/clothing/neck/tie/black,
+/obj/effect/decal/cleanable/glass,
+/obj/effect/decal/cleanable/plastic,
+/obj/item/spear,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"xI" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/effect/decal/cleanable/plastic,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"xQ" = (
+/obj/item/storage/box/mousetraps,
+/obj/structure/table/reinforced,
+/obj/item/melee/flyswatter,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"xW" = (
+/obj/structure/broken_flooring/pile,
+/obj/effect/spawner/random/maintenance,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"yb" = (
+/obj/item/food/canned/tomatoes{
+ pixel_x = 3;
+ pixel_y = 6
+ },
+/obj/item/food/canned/tomatoes{
+ pixel_x = 5;
+ pixel_y = 7
+ },
+/obj/structure/closet/crate/cardboard/mothic,
+/obj/item/food/uncooked_rice{
+ pixel_x = 0;
+ pixel_y = -6
+ },
+/obj/item/food/uncooked_rice{
+ pixel_x = 2;
+ pixel_y = -6
+ },
+/obj/item/food/uncooked_rice{
+ pixel_x = 4;
+ pixel_y = -6
+ },
+/obj/item/food/uncooked_rice{
+ pixel_x = 6;
+ pixel_y = -6
+ },
+/obj/item/food/uncooked_rice{
+ pixel_x = 8;
+ pixel_y = -6
+ },
+/obj/item/food/cracker,
+/obj/item/food/cracker,
+/obj/item/food/cracker,
+/obj/item/food/cracker,
+/obj/item/food/cracker,
+/obj/item/food/cracker{
+ pixel_x = -2;
+ pixel_y = -4
+ },
+/obj/item/food/cracker{
+ pixel_x = -7;
+ pixel_y = -2
+ },
+/obj/item/food/cracker{
+ pixel_y = 1
+ },
+/obj/item/food/cracker{
+ pixel_x = 2;
+ pixel_y = 1
+ },
+/obj/item/food/cracker{
+ pixel_y = -2
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"yP" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/obj/effect/spawner/random/entertainment/plushie,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"yS" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"zs" = (
+/obj/machinery/computer/terminal{
+ content = list("Property of Spinward-Upsilon Sanitation Department. Authorised employees only.");
+ desc = "A garbage truck's dusty old control console.";
+ name = "dashboard";
+ upperinfo = "Controls locked."
+ },
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"AG" = (
+/obj/item/clothing/glasses/blindfold,
+/obj/effect/decal/cleanable/plastic,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"AQ" = (
+/obj/item/food/spidereggs,
+/obj/effect/mob_spawn/corpse/human{
+ brute_damage = 200;
+ mob_type = /mob/living/carbon/human/species/moth;
+ outfit = /datum/outfit/abductorcorpse;
+ oxy_damage = 200
+ },
+/obj/structure/spider/cocoon{
+ pixel_x = -2;
+ pixel_y = 4
+ },
+/obj/item/mod/control/pre_equipped/standard{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/mob/living/basic/spider/giant/viper,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"BK" = (
+/obj/structure/closet/mini_fridge,
+/obj/item/storage/cans/sixsoda,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"BO" = (
+/obj/structure/spider/stickyweb,
+/obj/item/stock_parts/water_recycler,
+/obj/effect/decal/cleanable/insectguts,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Dm" = (
+/obj/item/trash/cheesie,
+/obj/item/shovel,
+/obj/item/seeds/nettle,
+/obj/item/popsicle_stick,
+/obj/item/hatchet/wooden,
+/obj/item/cigbutt,
+/obj/item/secateurs,
+/obj/item/pickaxe/rusted,
+/obj/item/boxcutter,
+/obj/structure/closet/crate/preopen,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Dv" = (
+/obj/machinery/door/poddoor/shutters/preopen,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"ER" = (
+/obj/structure/chair/comfy/shuttle,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"FM" = (
+/obj/structure/closet/crate/trashcart,
+/obj/item/clothing/mask/surgical,
+/obj/item/clothing/suit/costume/whitedress,
+/obj/structure/broken_flooring/singular,
+/obj/item/clothing/head/costume/nursehat,
+/obj/item/clothing/neck/stethoscope,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Gt" = (
+/obj/structure/sign/flag/mothic,
+/turf/closed/wall/r_wall,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"He" = (
+/obj/structure/spider/passage,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Hj" = (
+/obj/structure/lattice,
+/obj/structure/grille/broken,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Hv" = (
+/obj/effect/decal/cleanable/glass/plastitanium/screws,
+/obj/effect/spawner/random/bureaucracy/paper,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Hy" = (
+/obj/item/toy/xmas_cracker,
+/obj/item/kirbyplants/synthetic/plant26,
+/obj/item/storage/pill_bottle/probital,
+/obj/item/clothing/head/costume/festive,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"HK" = (
+/obj/structure/closet/crate/large,
+/obj/item/rwd/loaded,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Ix" = (
+/obj/structure/closet/cardboard,
+/obj/item/bodypart/chest/robot,
+/obj/item/toy/katana,
+/obj/item/toy/plush/snakeplushie,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"IQ" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/broken_flooring/pile,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"IS" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Ja" = (
+/obj/structure/closet/crate/trashcart/filled,
+/obj/effect/decal/cleanable/plastic,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/item/card/cardboard,
+/obj/item/broken_bottle,
+/obj/item/cardpack/resin,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"JB" = (
+/obj/structure/spider/stickyweb,
+/obj/structure/closet/crate/cardboard,
+/obj/item/bikehorn/rubberducky,
+/obj/item/clothing/glasses/monocle,
+/obj/item/clothing/head/hats/tophat{
+ desc = "It's a fancy looking hat. Inside is a label with a triangle drawn on it."
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"JI" = (
+/obj/item/dice/d10,
+/obj/structure/filingcabinet/chestdrawer,
+/obj/item/computer_disk/maintenance/modsuit_control,
+/obj/item/computer_disk/maintenance/modsuit_control,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"KR" = (
+/obj/item/clothing/head/cone{
+ pixel_x = 8;
+ pixel_y = 8
+ },
+/obj/machinery/light/warm,
+/obj/machinery/power/apc{
+ cell_type = /obj/item/stock_parts/cell/lead;
+ locked = 0;
+ pixel_y = -25;
+ start_charge = 0
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Lm" = (
+/obj/effect/decal/cleanable/garbage,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Lu" = (
+/obj/item/kirbyplants/synthetic/plant27,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Mp" = (
+/obj/structure/table/reinforced,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/lead,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"MK" = (
+/obj/structure/filingcabinet/chestdrawer,
+/obj/item/mail/junkmail,
+/obj/item/healthanalyzer/simple/disease,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"OZ" = (
+/obj/item/trash/candy,
+/obj/structure/broken_flooring/pile,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Pn" = (
+/obj/structure/closet/crate/mail,
+/obj/item/trash/can,
+/obj/item/mail/junkmail,
+/obj/item/mail/junkmail,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Pv" = (
+/obj/structure/spider/stickyweb,
+/obj/item/kirbyplants/synthetic/plant29,
+/obj/item/crowbar/hammer,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"PJ" = (
+/obj/structure/spider/passage,
+/obj/effect/spawner/random/mod/maint,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"PU" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/gloves{
+ pixel_x = 10;
+ pixel_y = 8
+ },
+/obj/item/storage/box/masks{
+ pixel_x = -6;
+ pixel_y = 8
+ },
+/obj/machinery/recharger{
+ pixel_y = -10
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Qe" = (
+/obj/item/hand_labeler,
+/obj/item/hand_labeler_refill,
+/obj/structure/spider/stickyweb,
+/mob/living/basic/spider/giant/hunter/scrawny,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"QD" = (
+/obj/effect/spawner/random/structure/crate_empty,
+/obj/effect/spawner/random/entertainment/plushie_delux,
+/obj/effect/spawner/random/entertainment/toy,
+/obj/item/c_tube{
+ pixel_y = -6
+ },
+/obj/structure/spider/stickyweb,
+/obj/item/toy/sword{
+ pixel_y = 4
+ },
+/obj/item/toy/sword{
+ pixel_y = 8
+ },
+/obj/item/kitchen/spoon/plastic,
+/obj/effect/spawner/random/entertainment/toy,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Rb" = (
+/obj/item/stack/spacecash/c500,
+/obj/item/coin/plastic,
+/obj/structure/safe,
+/obj/structure/spider/stickyweb,
+/obj/item/tank/jetpack/oxygen,
+/obj/item/switchblade,
+/obj/item/survivalcapsule/bathroom,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Rl" = (
+/obj/item/paper/crumpled,
+/obj/item/stock_parts/cell/hyper,
+/obj/item/hand_labeler,
+/obj/item/hand_labeler_refill,
+/obj/item/hand_labeler_refill,
+/obj/item/hand_labeler_refill,
+/obj/item/hand_labeler_refill,
+/obj/item/barcodescanner,
+/obj/item/pen,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Sb" = (
+/obj/structure/reagent_dispensers/beerkeg,
+/obj/structure/spider/stickyweb,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Sj" = (
+/obj/item/trash/pistachios,
+/obj/structure/closet/crate/cardboard/mothic,
+/obj/item/storage/fancy/pickles_jar,
+/obj/item/food/spaghetti/raw,
+/obj/item/food/spaghetti/raw,
+/obj/item/food/sustenance_bar/wonka,
+/obj/item/food/fueljacks_lunch,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Sk" = (
+/obj/effect/spawner/random/decoration/paint,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"ST" = (
+/obj/machinery/power/terminal,
+/obj/structure/tank_dispenser/oxygen,
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"TO" = (
+/obj/item/mop,
+/obj/item/multitool{
+ pixel_x = 8;
+ pixel_y = -6
+ },
+/obj/structure/mop_bucket,
+/obj/item/broken_bottle,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"UD" = (
+/obj/structure/closet/preopen,
+/obj/item/stack/spacecash/c200,
+/obj/item/storage/backpack/satchel,
+/obj/item/toy/plush/shark,
+/obj/item/instrument/banjo,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"VL" = (
+/obj/machinery/power/shuttle_engine/propulsion,
+/turf/open/space/basic,
+/area/space)
+"Wl" = (
+/obj/structure/plasticflaps/opaque,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"WZ" = (
+/obj/item/paper/fluff/junkmail_generic,
+/obj/item/pen/red,
+/obj/structure/table_frame/wood,
+/obj/item/mod/paint,
+/obj/effect/spawner/random/decoration/paint,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Xg" = (
+/obj/structure/spider/stickyweb,
+/obj/item/clothing/ears/earmuffs,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Xs" = (
+/obj/structure/spider/passage,
+/mob/living/basic/spider/giant/hunter/scrawny,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"XI" = (
+/obj/structure/spider/solid,
+/obj/item/food/badrecipe/moldy/bacteria,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"XL" = (
+/obj/item/scooter_frame,
+/obj/effect/decal/cleanable/oil/streak,
+/obj/effect/decal/cleanable/garbage,
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Ym" = (
+/obj/structure/table/reinforced,
+/obj/item/analyzer{
+ pixel_y = 6
+ },
+/obj/item/geiger_counter{
+ pixel_x = -8;
+ pixel_y = -2
+ },
+/obj/item/flashlight{
+ pixel_x = 4
+ },
+/turf/open/floor/iron/smooth,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Yr" = (
+/turf/closed/wall/r_wall,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Yz" = (
+/obj/structure/spider/stickyweb,
+/obj/structure/tank_holder/extinguisher,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"YR" = (
+/obj/item/food/badrecipe/moldy/bacteria,
+/obj/effect/spawner/random/bureaucracy/paper,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+"Zi" = (
+/turf/open/space/basic,
+/area/space)
+"ZM" = (
+/obj/item/papercutter,
+/obj/item/paper_bin,
+/obj/structure/spider/stickyweb,
+/obj/structure/spider/spikes,
+/obj/structure/table_frame/wood,
+/obj/effect/spawner/random/bureaucracy/paper,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/garbagetruck/toystore)
+
+(1,1,1) = {"
+Zi
+Zi
+lg
+lg
+lg
+nM
+VL
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+"}
+(2,1,1) = {"
+Zi
+nM
+dn
+dn
+nM
+nM
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+"}
+(3,1,1) = {"
+Hj
+jD
+PU
+Mp
+xQ
+nM
+Yr
+sw
+wy
+FM
+YR
+Qe
+cf
+ZM
+WZ
+xC
+Ix
+dq
+TO
+rb
+"}
+(4,1,1) = {"
+yP
+dn
+zs
+ER
+cq
+nM
+Yr
+ng
+pi
+OZ
+xI
+IS
+xf
+ub
+AG
+lm
+cg
+sO
+Dm
+Yr
+"}
+(5,1,1) = {"
+rI
+dn
+uX
+uT
+bU
+nM
+Yr
+mf
+xW
+rc
+Hv
+ps
+HK
+ts
+Pv
+cT
+xd
+wK
+QD
+Yr
+"}
+(6,1,1) = {"
+Hj
+dn
+jD
+nM
+wu
+wo
+Dv
+IS
+ld
+ld
+ld
+Lu
+XL
+He
+Xs
+wW
+JB
+sA
+wE
+Yr
+"}
+(7,1,1) = {"
+Hj
+jD
+bL
+Ym
+bU
+wo
+Dv
+ld
+ld
+ld
+IS
+ld
+Sb
+Rb
+IQ
+Yz
+PJ
+pA
+mM
+Yr
+"}
+(8,1,1) = {"
+yP
+jD
+eL
+eL
+bU
+nM
+Yr
+rr
+ld
+Sk
+ld
+ld
+Ja
+hS
+Lm
+BO
+XI
+hH
+qX
+Yr
+"}
+(9,1,1) = {"
+Hj
+jD
+eL
+bU
+KR
+nM
+Gt
+UD
+nP
+pN
+Pn
+ld
+kj
+JI
+sh
+ld
+Xg
+AQ
+tQ
+Yr
+"}
+(10,1,1) = {"
+rI
+jD
+eL
+ST
+aj
+nM
+Yr
+BK
+it
+Sj
+yb
+yS
+vz
+MK
+kz
+ld
+Hy
+Rl
+hD
+rb
+"}
+(11,1,1) = {"
+Zi
+nM
+ww
+jD
+nM
+nM
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Yr
+Wl
+Wl
+Wl
+Yr
+Yr
+Yr
+Yr
+"}
+(12,1,1) = {"
+Zi
+Zi
+lg
+lg
+ri
+nM
+VL
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+Zi
+"}
diff --git a/_maps/RandomRuins/SpaceRuins/meatderelict.dmm b/_maps/RandomRuins/SpaceRuins/meatderelict.dmm
new file mode 100644
index 00000000000000..0c4e9cd740b372
--- /dev/null
+++ b/_maps/RandomRuins/SpaceRuins/meatderelict.dmm
@@ -0,0 +1,4338 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"ab" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/machinery/door/airlock/engineering,
+/obj/structure/cable,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"af" = (
+/obj/effect/spawner/structure/window/reinforced/shuttle/indestructible,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"aj" = (
+/obj/effect/turf_decal/siding/blue,
+/obj/structure/table,
+/obj/item/paper_bin,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"at" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"au" = (
+/obj/lightning_thrower,
+/obj/structure/cable,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ay" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/north,
+/obj/item/flashlight/flare/candle{
+ pixel_x = 7;
+ pixel_y = 4
+ },
+/obj/item/flashlight/flare/candle{
+ pixel_x = -7;
+ pixel_y = 4
+ },
+/obj/item/flashlight/flare/candle{
+ pixel_y = 8
+ },
+/obj/item/toy/toy_xeno,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"aE" = (
+/obj/structure/bodycontainer/morgue{
+ dir = 2
+ },
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"aF" = (
+/obj/machinery/light/small/dim/directional/north,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"aV" = (
+/obj/effect/gibspawner/generic,
+/obj/item/mop,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"aW" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"bh" = (
+/obj/structure/sign/directions/science/directional/west,
+/obj/effect/turf_decal/siding/purple{
+ dir = 8
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"bi" = (
+/obj/effect/turf_decal/siding/purple{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"bR" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/structure/table,
+/obj/structure/microscope,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ch" = (
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"cp" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"cQ" = (
+/obj/structure/holosign/barrier,
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"dv" = (
+/obj/structure/window/spawner/directional/west,
+/obj/structure/window/spawner/directional/north,
+/obj/effect/gibspawner/generic,
+/mob/living/basic/living_limb_flesh,
+/mob/living/basic/living_limb_flesh,
+/obj/structure/window/spawner/directional/east,
+/turf/open/floor/circuit{
+ baseturfs = /turf/open/indestructible/plating
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"dD" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/filled/warning{
+ dir = 1
+ },
+/obj/machinery/computer/old,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"dQ" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/structure/rack,
+/obj/structure/window/reinforced/spawner/directional/north,
+/obj/item/grenade/chem_grenade/cleaner,
+/obj/item/grenade/chem_grenade/cleaner,
+/obj/item/grenade/chem_grenade/cleaner,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"dR" = (
+/turf/open/floor/iron/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"dW" = (
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ea" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/mob_spawn/corpse/human/scientist,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"eo" = (
+/obj/structure/marker_beacon/burgundy,
+/obj/effect/turf_decal/stripes{
+ dir = 10
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"eq" = (
+/mob/living/basic/living_floor/white,
+/obj/effect/gibspawner/generic,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ex" = (
+/obj/machinery/door/airlock/grunge{
+ id_tag = "md_morgue"
+ },
+/obj/effect/mapping_helpers/airlock/locked,
+/obj/effect/mapping_helpers/airlock_note_placer{
+ note_info = "Reminder for medbay staff to not stick failed and active experiments in the morgue."
+ },
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"eA" = (
+/obj/machinery/door/airlock/security/glass,
+/obj/effect/turf_decal/siding/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"eD" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 1
+ },
+/obj/machinery/button/door/directional/north{
+ normaldoorcontrol = 1;
+ specialfunctions = 4;
+ id = "md_morgue"
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"eF" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light/cold/dim/directional/west,
+/obj/machinery/computer/old{
+ dir = 4
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"eP" = (
+/obj/structure/meateor_fluff/eyeball,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"eT" = (
+/obj/item/fakeartefact,
+/obj/structure/table/wood/fancy/orange,
+/obj/effect/turf_decal/siding/wood{
+ dir = 1
+ },
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"fc" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 10
+ },
+/obj/structure/table,
+/obj/effect/spawner/random/medical/supplies,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"fm" = (
+/obj/effect/turf_decal/tile/red/half/contrasted,
+/obj/machinery/computer/old{
+ dir = 8
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"fo" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/structure/chair/office/light{
+ dir = 1
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"fB" = (
+/obj/machinery/computer/operating,
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"fH" = (
+/turf/closed/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"fW" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"go" = (
+/obj/effect/turf_decal/siding/purple/corner,
+/obj/effect/turf_decal/siding/purple/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 4
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"gK" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/end,
+/obj/structure/rack,
+/obj/item/climbing_hook,
+/obj/item/extinguisher,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"gN" = (
+/obj/structure/table,
+/obj/item/storage/box/petridish,
+/obj/item/healthanalyzer,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"gO" = (
+/obj/structure/toiletbong,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"gP" = (
+/obj/structure/broken_flooring/pile/always_floorplane{
+ dir = 8
+ },
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"gQ" = (
+/obj/item/ammo_casing/spent,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 8
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"gX" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red/anticorner/contrasted{
+ dir = 4
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"hd" = (
+/turf/closed/indestructible/riveted/plastinum/nodiagonal,
+/area/ruin/space)
+"hf" = (
+/obj/structure/table/reinforced/rglass,
+/obj/item/storage/medkit/toxin,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"hk" = (
+/obj/structure/aquarium/prefilled,
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"hN" = (
+/obj/structure/puzzle_blockade{
+ id = "md_toeng"
+ },
+/obj/effect/turf_decal/stripes/full,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"hQ" = (
+/obj/structure/broken_flooring/plating/directional/west,
+/obj/item/crowbar,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"hR" = (
+/obj/structure/sign/warning,
+/turf/closed/indestructible/reinforced,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"hW" = (
+/obj/effect/turf_decal/siding/purple,
+/obj/effect/decal/cleanable/blood/splatter,
+/obj/item/scalpel{
+ pixel_y = 16;
+ pixel_x = 4
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"hY" = (
+/obj/structure/barricade/wooden,
+/obj/machinery/door/airlock/science/glass{
+ name = "Janitorial Closet"
+ },
+/obj/effect/mapping_helpers/airlock_note_placer{
+ note_info = "DO NOT ENTER!!!"
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"id" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 1
+ },
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ih" = (
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ij" = (
+/turf/closed/indestructible/reinforced,
+/area/ruin/space/has_grav/powered/biooutpost)
+"il" = (
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"io" = (
+/mob/living/basic/living_floor,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"iA" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"iB" = (
+/obj/structure/broken_flooring/plating/directional/east,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"iI" = (
+/obj/structure/chair/sofa/bench/left,
+/obj/effect/turf_decal/siding/purple{
+ dir = 1
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"iO" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 4
+ },
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"iQ" = (
+/obj/machinery/computer/old,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/structure/sign/poster/official/random/directional/north,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"iX" = (
+/obj/structure/broken_flooring/pile/always_floorplane{
+ dir = 8
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ja" = (
+/obj/item/food/muffin/moffin{
+ preserved_food = 1
+ },
+/obj/structure/flora/bush/fullgrass/style_random,
+/obj/structure/window/reinforced/spawner/directional/south,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"jf" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 8
+ },
+/obj/structure/table,
+/obj/structure/window/spawner/directional/north,
+/obj/effect/spawner/random/medical/supplies,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"jj" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 8
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"jo" = (
+/obj/machinery/door/airlock/external,
+/obj/effect/mapping_helpers/airlock_note_placer{
+ note_name = "notice";
+ note_info = "This area is condemned by Nanotrasen. Employees seen near or in this area will be fined or punished otherwise."
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"jr" = (
+/obj/effect/spawner/random/trash/garbage,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"jt" = (
+/obj/item/crowbar,
+/obj/structure/broken_flooring/plating/directional/north,
+/obj/item/reagent_containers/cup/bucket,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"jA" = (
+/obj/effect/decal/cleanable/glass,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"jE" = (
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"jO" = (
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"jU" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/rack,
+/obj/item/ammo_box/magazine/wt550m9,
+/obj/item/ammo_box/magazine/wt550m9{
+ pixel_x = 6;
+ pixel_y = 6
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"jV" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 6
+ },
+/obj/item/surgery_tray/full/deployed,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"kh" = (
+/obj/machinery/computer/terminal/meatderelict{
+ dir = 1
+ },
+/obj/machinery/light/small/directional/south,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ki" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/yellow/filled/warning{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"kl" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"kn" = (
+/obj/effect/turf_decal/siding/purple,
+/obj/machinery/light/cold/directional/south,
+/obj/structure/table/reinforced/rglass,
+/obj/item/reagent_containers/cup/glass/coffee_cup{
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/cup/glass/coffee_cup{
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/cup/glass/coffee_cup,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ku" = (
+/obj/structure/rack,
+/obj/item/reagent_containers/cup/bottle/flash_powder,
+/obj/item/reagent_containers/cup/bottle/lithium,
+/obj/item/reagent_containers/cup/bottle/nitrogen,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"kB" = (
+/obj/effect/spawner/random/vending/snackvend,
+/obj/effect/turf_decal/siding/wood{
+ dir = 8
+ },
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"kX" = (
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"la" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 8
+ },
+/obj/structure/table,
+/obj/machinery/light/cold/directional/west,
+/obj/effect/spawner/random/medical/supplies,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"lf" = (
+/obj/structure/table/reinforced/rglass,
+/obj/item/reagent_containers/syringe,
+/obj/item/reagent_containers/syringe{
+ pixel_y = -4
+ },
+/obj/item/reagent_containers/syringe{
+ pixel_y = 4
+ },
+/obj/item/reagent_containers/syringe{
+ pixel_y = 8
+ },
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"lh" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/machinery/computer/old{
+ dir = 4
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"lm" = (
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 10
+ },
+/obj/item/ammo_casing/c45/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"lJ" = (
+/obj/machinery/door/airlock/science/glass,
+/obj/effect/mapping_helpers/airlock/welded,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"lT" = (
+/obj/structure/chair/office{
+ dir = 8
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"mc" = (
+/obj/machinery/door/airlock/engineering,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"mx" = (
+/obj/structure/broken_flooring/side/always_floorplane,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"mA" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/blood/innards,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"mM" = (
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"mO" = (
+/obj/effect/turf_decal/siding/blue,
+/obj/structure/table,
+/obj/item/storage/medkit/brute,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"mU" = (
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/siding/purple,
+/obj/machinery/light/cold/dim/directional/south,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ne" = (
+/obj/structure/table/wood/fancy/purple,
+/obj/item/reagent_containers/hypospray/medipen/methamphetamine{
+ pixel_x = -3
+ },
+/obj/item/book/manual/wiki/research_and_development{
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"ni" = (
+/mob/living/basic/living_floor/white,
+/obj/machinery/light/small/dim/directional/east,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"nr" = (
+/turf/open/misc/asteroid/airless,
+/area/ruin/space)
+"nx" = (
+/obj/structure/table,
+/obj/item/pen/fourcolor,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ny" = (
+/obj/structure/closet/secure_closet/chemical,
+/obj/machinery/light/small/directional/east,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"nM" = (
+/obj/structure/broken_flooring/side/directional/north,
+/obj/machinery/door/puzzle{
+ puzzle_id = "md_42069";
+ desc = "This door only opens from the other side. It looks virtually indestructible."
+ },
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 1
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"nP" = (
+/obj/effect/turf_decal/tile/red/half/contrasted{
+ dir = 8
+ },
+/obj/structure/table/reinforced,
+/obj/item/grenade/flashbang,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"nR" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/mapping_helpers/broken_machine,
+/obj/machinery/vending/snack/orange,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"nY" = (
+/obj/effect/decal/cleanable/blood/tracks,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/siding/purple,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"oh" = (
+/obj/structure/table/wood,
+/obj/effect/turf_decal/siding/wood{
+ dir = 1
+ },
+/obj/item/storage/fancy/cigarettes/cigpack_mindbreaker,
+/obj/machinery/light/directional/east,
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"oj" = (
+/obj/machinery/door/airlock/security,
+/obj/effect/turf_decal/siding/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 8
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"op" = (
+/turf/closed/mineral/random/stationside/asteroid{
+ baseturfs = /turf/open/indestructible/white
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"os" = (
+/obj/structure/grille/indestructible,
+/obj/structure/cable,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"oI" = (
+/mob/living/basic/living_floor,
+/obj/structure/sign/poster/random/directional/west,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"oO" = (
+/obj/effect/turf_decal/siding/purple{
+ dir = 1
+ },
+/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/a357/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"oQ" = (
+/obj/machinery/puzzle_button/meatderelict{
+ pixel_y = 32;
+ queue_size = 4
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"oX" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"pe" = (
+/obj/structure/chair/office,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ph" = (
+/obj/machinery/door/airlock/external,
+/obj/effect/mapping_helpers/airlock/welded,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"pj" = (
+/obj/machinery/door/airlock/research/glass{
+ id_tag = "md_scis"
+ },
+/obj/effect/mapping_helpers/airlock/locked,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"pk" = (
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"pl" = (
+/obj/effect/turf_decal/tile/yellow/half/contrasted,
+/obj/effect/turf_decal/trimline/yellow/filled/warning,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"po" = (
+/obj/structure/broken_flooring/corner/always_floorplane,
+/obj/structure/table,
+/obj/item/flashlight/lamp,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"pp" = (
+/obj/item/pressure_plate/puzzle{
+ puzzle_id = "md_42069"
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"pC" = (
+/obj/structure/table,
+/obj/item/flashlight/lamp,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"pK" = (
+/obj/machinery/iv_drip,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/siding/purple{
+ dir = 6
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"pQ" = (
+/obj/machinery/computer/old{
+ dir = 1
+ },
+/obj/machinery/light/cold/dim/directional/south,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"pY" = (
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 8
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"qg" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red/anticorner/contrasted,
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/item/restraints/handcuffs,
+/obj/machinery/light/warm/directional/south,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"qh" = (
+/obj/structure/table,
+/obj/effect/spawner/random/bureaucracy/folder,
+/obj/effect/spawner/random/bureaucracy/stamp,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"qi" = (
+/obj/structure/bodycontainer/morgue{
+ dir = 2
+ },
+/obj/effect/mob_spawn/corpse/human/damaged,
+/obj/machinery/light/cold/dim/directional/north,
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"qs" = (
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 9
+ },
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"qw" = (
+/obj/effect/turf_decal/tile/red,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"qx" = (
+/mob/living/basic/living_floor/white,
+/obj/effect/spawner/random/structure/chair_flipped,
+/obj/effect/gibspawner/generic,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"qV" = (
+/obj/machinery/power/rtg/old_station,
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"qY" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"qZ" = (
+/obj/structure/table,
+/obj/effect/spawner/random/bureaucracy/paper,
+/obj/effect/spawner/random/bureaucracy/pen,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ra" = (
+/obj/structure/closet/emcloset/anchored,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"re" = (
+/turf/closed/mineral/random/low_chance,
+/area/ruin/space)
+"rh" = (
+/obj/effect/turf_decal/siding/purple{
+ dir = 1
+ },
+/obj/item/ammo_casing/a357/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"rl" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/closet/secure_closet/chemical,
+/obj/structure/window/reinforced/spawner/directional/north,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"rm" = (
+/obj/effect/spawner/random/engineering/flashlight,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"rw" = (
+/obj/effect/turf_decal/siding/blue/corner,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"rK" = (
+/obj/structure/showcase/horrific_experiment,
+/obj/machinery/light/small/dim/directional/east,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"sd" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"se" = (
+/obj/structure/rack,
+/obj/item/reagent_containers/cup/bottle/mutagen,
+/obj/item/reagent_containers/cup/bottle/mutagen,
+/obj/item/reagent_containers/cup/bottle/mutagen,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"sk" = (
+/obj/structure/chair/sofa/bench/right,
+/obj/effect/mob_spawn/corpse/human/scientist{
+ brute_damage = 100;
+ corpse_description = "They were shot in the head, and heart."
+ },
+/obj/effect/turf_decal/siding/purple{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"sl" = (
+/obj/effect/spawner/structure/window/reinforced/shuttle/indestructible,
+/obj/effect/decal/cleanable/blood/splatter/over_window,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"sp" = (
+/obj/machinery/button/door/directional/south{
+ normaldoorcontrol = 1;
+ specialfunctions = 4;
+ id = "md_scis";
+ name = "safety lock control"
+ },
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 6
+ },
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"sJ" = (
+/obj/structure/broken_flooring/corner/always_floorplane{
+ dir = 4
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"sL" = (
+/obj/structure/marker_beacon/burgundy,
+/obj/effect/turf_decal/stripes{
+ dir = 5
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"sM" = (
+/obj/item/ammo_casing/spent,
+/obj/item/ammo_casing/spent,
+/obj/item/ammo_casing/c45/spent,
+/obj/item/ammo_casing/c45/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"sR" = (
+/obj/effect/turf_decal/trimline/yellow/filled/end,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"tg" = (
+/obj/structure/table/wood/fancy/orange,
+/obj/effect/spawner/random/exotic/technology,
+/obj/effect/turf_decal/siding/wood{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"tq" = (
+/mob/living/basic/living_floor,
+/obj/effect/mob_spawn/corpse/human/engineer,
+/obj/machinery/light/small/dim/directional/west,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"tt" = (
+/obj/effect/spawner/structure/window/hollow/middle{
+ dir = 4
+ },
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"tv" = (
+/obj/effect/decal/cleanable/blood/tracks,
+/mob/living/simple_animal/hostile/zombie,
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"tF" = (
+/obj/structure/broken_flooring/plating/directional/east,
+/obj/effect/spawner/random/structure/chair_flipped,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"tN" = (
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 4
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"tS" = (
+/obj/effect/turf_decal/stripes{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"uc" = (
+/obj/effect/turf_decal/siding/purple/corner,
+/obj/item/ammo_casing/shotgun/buckshot/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"uf" = (
+/obj/machinery/light/small/dim/directional/west,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"uh" = (
+/obj/effect/turf_decal/tile/red/half/contrasted{
+ dir = 1
+ },
+/obj/structure/chair/office{
+ dir = 8
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ui" = (
+/obj/structure/closet/wardrobe/science_white,
+/obj/effect/turf_decal/siding/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"uq" = (
+/obj/machinery/door/airlock/external,
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"us" = (
+/obj/machinery/suit_storage_unit/spaceruin,
+/obj/machinery/light/small/dim/directional/south,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"uC" = (
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"uH" = (
+/obj/effect/decal/cleanable/blood/tracks,
+/obj/structure/holosign/barrier,
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"uS" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/effect/spawner/random/food_or_drink/snack,
+/obj/effect/spawner/random/food_or_drink/refreshing_beverage{
+ pixel_x = 16
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"uU" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"uZ" = (
+/obj/machinery/door/airlock/security,
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 8
+ },
+/turf/open/indestructible{
+ icon_state = "whitehall";
+ dir = 8
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"vd" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 9
+ },
+/obj/machinery/vending/medical{
+ shut_up = 1
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"vl" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 4
+ },
+/obj/item/crowbar,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"vt" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"vF" = (
+/obj/structure/fluff/empty_cryostasis_sleeper{
+ name = "broken genetics device";
+ desc = "Depowered and broken, this machine no longer serves its purpose."
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"vY" = (
+/obj/machinery/door/puzzle/keycard{
+ puzzle_id = "md_director";
+ name = "Directors Office"
+ },
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"vZ" = (
+/obj/structure/window/spawner/directional/west,
+/obj/structure/window/spawner/directional/east,
+/obj/structure/window/spawner/directional/south,
+/obj/structure/window/spawner/directional/north,
+/obj/effect/gibspawner/generic,
+/turf/open/floor/circuit{
+ baseturfs = /turf/open/indestructible/plating
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"wf" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 6
+ },
+/obj/structure/bed/medical/anchored{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/random/directional/south,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"wj" = (
+/obj/effect/spawner/structure/window/reinforced/indestructible,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"wn" = (
+/obj/structure/bodycontainer/morgue{
+ dir = 2
+ },
+/obj/item/knife/combat/survival,
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"wy" = (
+/obj/effect/decal/cleanable/glass,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"wH" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/end{
+ dir = 1
+ },
+/obj/structure/rack,
+/obj/item/gun/ballistic/automatic/wt550{
+ pin = /obj/item/firing_pin/explorer
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"wJ" = (
+/obj/structure/grille/broken,
+/obj/effect/decal/cleanable/glass,
+/obj/structure/window/spawner/directional/east,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"wM" = (
+/obj/structure/sign/warning/biohazard/directional/east,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"wR" = (
+/obj/effect/turf_decal/tile/red/anticorner/contrasted{
+ dir = 1
+ },
+/obj/machinery/computer/old{
+ dir = 4
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"wU" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"wX" = (
+/obj/item/kirbyplants/random,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/broken/directional/north,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"xk" = (
+/obj/structure/window/spawner/directional/north,
+/obj/structure/window/spawner/directional/east,
+/obj/structure/window/spawner/directional/south,
+/obj/effect/gibspawner/generic,
+/mob/living/basic/living_limb_flesh,
+/turf/open/floor/circuit{
+ baseturfs = /turf/open/indestructible/plating
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"xm" = (
+/obj/item/kirbyplants/random/dead,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"xr" = (
+/obj/machinery/door/puzzle/meatderelict,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"xA" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"xE" = (
+/obj/lightning_thrower,
+/obj/machinery/light/small/dim/directional/north,
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/filled/warning{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"xU" = (
+/mob/living/basic/living_floor/white,
+/obj/item/flashlight,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"yf" = (
+/obj/machinery/light/small/directional/south,
+/obj/structure/broken_flooring/corner/always_floorplane{
+ dir = 8
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"yl" = (
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 8
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"yp" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"yr" = (
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"yu" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/light/small/dim/directional/north,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"yw" = (
+/obj/effect/turf_decal/tile/red/half/contrasted{
+ dir = 8
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"yU" = (
+/obj/structure/fluff/empty_cryostasis_sleeper{
+ name = "broken genetics device";
+ desc = "Depowered and broken, this machine no longer serves its purpose."
+ },
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/siding/purple{
+ dir = 5
+ },
+/obj/structure/sign/warning/chem_diamond/directional/west,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"za" = (
+/obj/structure/table,
+/obj/item/clothing/gloves/color/yellow,
+/obj/structure/sign/poster/contraband/missing_gloves/directional/west,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"zg" = (
+/obj/effect/turf_decal/tile/red/anticorner/contrasted{
+ dir = 8
+ },
+/obj/structure/table/reinforced,
+/obj/item/storage/box/handcuffs,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"zs" = (
+/obj/structure/chair/office,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"zF" = (
+/obj/effect/mob_spawn/corpse/human/scientist{
+ brute_damage = 100;
+ corpse_description = "They were shot in the head, and heart."
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"zL" = (
+/obj/structure/filingcabinet/chestdrawer,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"zP" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/structure/cable,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"zS" = (
+/obj/structure/table/wood/fancy/purple,
+/obj/effect/spawner/random/entertainment/money_large,
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"An" = (
+/obj/item/storage/toolbox/mechanical,
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"AD" = (
+/obj/machinery/computer/old{
+ dir = 8
+ },
+/turf/open/floor/circuit,
+/area/ruin/space/has_grav/powered/biooutpost)
+"AG" = (
+/obj/structure/table/wood/fancy/purple,
+/obj/effect/spawner/random/clothing/kittyears_or_rabbitears,
+/obj/item/seeds/cannabis/white,
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"AP" = (
+/obj/structure/fluff/empty_cryostasis_sleeper{
+ name = "broken genetics device";
+ desc = "Depowered and broken, this machine no longer serves its purpose."
+ },
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/siding/purple{
+ dir = 6
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"AT" = (
+/obj/structure/sign/warning,
+/turf/closed/indestructible/riveted/plastinum/nodiagonal,
+/area/ruin/space/has_grav/powered/biooutpost)
+"AV" = (
+/obj/effect/turf_decal/stripes/full,
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"AX" = (
+/obj/machinery/light/directional/north,
+/mob/living/basic/mothroach{
+ name = "Moff"
+ },
+/obj/machinery/door/window/right/directional/south{
+ req_access = list("science")
+ },
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"AY" = (
+/obj/effect/turf_decal/tile/red/diagonal_centre,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Be" = (
+/obj/effect/turf_decal/siding/purple,
+/obj/structure/table/reinforced/rglass,
+/obj/item/storage/fancy/coffee_cart_rack,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Bl" = (
+/obj/effect/turf_decal/siding/wood,
+/obj/effect/decal/cleanable/glass,
+/obj/structure/chair/office{
+ dir = 1
+ },
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Bp" = (
+/obj/structure/broken_flooring/pile/always_floorplane,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Br" = (
+/obj/structure/closet/l3closet/scientist,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Bt" = (
+/obj/machinery/door/puzzle/meatderelict,
+/obj/effect/turf_decal/stripes/corner,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Bu" = (
+/obj/item/ammo_casing/spent,
+/obj/item/ammo_casing/spent,
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Bx" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/structure/table,
+/obj/item/reagent_containers/cup/beaker/meta,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"By" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 8
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"BA" = (
+/obj/structure/marker_beacon/burgundy,
+/obj/effect/turf_decal/stripes{
+ dir = 9
+ },
+/obj/effect/turf_decal/stripes/corner,
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"Ca" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 8
+ },
+/obj/structure/sign/poster/random/directional/south,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Cf" = (
+/obj/effect/turf_decal/siding/purple{
+ dir = 5
+ },
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Cl" = (
+/obj/machinery/door/airlock/science,
+/obj/effect/turf_decal/tile/purple/fourcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"CD" = (
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"CF" = (
+/obj/machinery/computer/old{
+ dir = 4
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"CI" = (
+/mob/living/basic/living_limb_flesh,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"CN" = (
+/obj/structure/table,
+/obj/item/toy/figure/secofficer,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"CS" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/item/assembly/igniter,
+/obj/item/assembly/igniter,
+/obj/item/assembly/igniter,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"CW" = (
+/obj/effect/turf_decal/tile/purple/half/contrasted,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Df" = (
+/obj/machinery/vending/coffee,
+/obj/effect/turf_decal/siding/purple{
+ dir = 9
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Dg" = (
+/obj/structure/mecha_wreckage/ripley,
+/obj/structure/window/spawner/directional/east,
+/turf/open/indestructible{
+ icon_state = "recharge_floor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"Dh" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/machinery/chem_dispenser,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Dk" = (
+/obj/structure/table,
+/obj/item/flashlight/lamp,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Du" = (
+/obj/structure/table,
+/obj/effect/spawner/random/engineering/tool,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"DB" = (
+/mob/living/basic/living_floor,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"DC" = (
+/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/a357/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"DJ" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"DR" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/item/paper/crumpled/fluff/meatderelict/fridge,
+/obj/item/pen{
+ pixel_x = 12
+ },
+/obj/structure/sign/poster/random/directional/south,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"DU" = (
+/obj/structure/chair/sofa/bench,
+/obj/effect/turf_decal/siding/purple{
+ dir = 1
+ },
+/obj/machinery/light/cold/directional/north,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ec" = (
+/mob/living/basic/living_floor/white,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ei" = (
+/obj/machinery/door/airlock/science,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ew" = (
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 5
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ex" = (
+/obj/structure/table/optable,
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"EC" = (
+/turf/closed/indestructible/reinforced,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"EE" = (
+/obj/structure/broken_flooring/pile/always_floorplane,
+/obj/structure/table,
+/obj/machinery/microwave,
+/obj/machinery/light/broken/directional/west,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"EN" = (
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"EQ" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 1
+ },
+/obj/structure/filingcabinet/chestdrawer,
+/obj/item/keycard/meatderelict/engpost,
+/obj/item/food/candy,
+/obj/item/food/candy,
+/obj/item/food/candy_corn,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ES" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 8
+ },
+/obj/structure/table,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"EY" = (
+/obj/structure/sign/poster/random/directional/east,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Fc" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/item/storage/box/beakers,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Fv" = (
+/obj/item/food/muffin/moffin{
+ preserved_food = 1
+ },
+/obj/structure/window/reinforced/spawner/directional/south,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"FE" = (
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"FI" = (
+/obj/item/instrument/piano_synth/headphones,
+/obj/structure/table,
+/obj/machinery/puzzle_button/directional/north{
+ used = 1
+ },
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Gb" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Gd" = (
+/obj/machinery/light/cold/dim/directional/east,
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 4
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Gj" = (
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"Gn" = (
+/obj/structure/table,
+/obj/item/plate,
+/obj/item/food/burger/cheese,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/machinery/light/small/broken/directional/south,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"GA" = (
+/obj/effect/turf_decal/siding/purple{
+ dir = 8
+ },
+/obj/item/ammo_casing/c45/spent,
+/obj/item/ammo_casing/c45/spent,
+/obj/item/ammo_casing/c45/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"GC" = (
+/obj/effect/turf_decal/siding/purple{
+ dir = 6
+ },
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 4
+ },
+/obj/structure/table/reinforced/rglass,
+/obj/machinery/coffeemaker,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"GE" = (
+/obj/item/kirbyplants/random,
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"GF" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/structure/grille/indestructible,
+/obj/structure/cable,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"GO" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 4
+ },
+/obj/machinery/iv_drip,
+/obj/machinery/light/cold/directional/east,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Hb" = (
+/obj/item/kirbyplants/organic/plant12,
+/obj/effect/turf_decal/siding/purple{
+ dir = 5
+ },
+/obj/structure/sign/directions/engineering/directional/east,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Hh" = (
+/obj/effect/mob_spawn/corpse/human/scientist,
+/obj/item/keycard/meatderelict/director,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Hm" = (
+/obj/structure/grille/indestructible,
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted,
+/obj/effect/turf_decal/trimline/yellow/filled/warning,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Hx" = (
+/obj/item/ammo_casing/spent,
+/obj/item/ammo_casing/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"HA" = (
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/siding/purple,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"HC" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"HF" = (
+/mob/living/basic/living_floor/white,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"HV" = (
+/obj/structure/broken_flooring/side/always_floorplane,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ip" = (
+/obj/structure/table,
+/obj/effect/spawner/random/engineering/flashlight,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"IK" = (
+/obj/structure/puzzle_blockade{
+ id = "md_armory"
+ },
+/obj/effect/turf_decal/stripes/full,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Jb" = (
+/obj/item/ammo_casing/c45/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Jf" = (
+/obj/effect/turf_decal/tile/purple/anticorner/contrasted,
+/obj/structure/sign/departments/security/directional/east,
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Jh" = (
+/turf/closed/indestructible/riveted/plastinum/nodiagonal,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Jo" = (
+/obj/structure/table/wood/fancy/purple,
+/obj/item/mod/module/recycler/donk,
+/obj/item/mod/module/recycler,
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Jt" = (
+/obj/machinery/puzzle_button/directional/north{
+ id = "md_tosci";
+ name = "shield power panel"
+ },
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/filled/warning{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/remains/human,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ju" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Jx" = (
+/obj/machinery/door/airlock/vault,
+/obj/item/grown/bananapeel,
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"JF" = (
+/obj/structure/window/reinforced/spawner/directional/east,
+/obj/structure/window/reinforced/spawner/directional/south,
+/obj/structure/flora/bush/fullgrass/style_random,
+/obj/item/food/grown/carrot{
+ preserved_food = 1
+ },
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ka" = (
+/mob/living/basic/living_floor/white,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Kc" = (
+/obj/structure/window/reinforced/spawner/directional/east,
+/mob/living/basic/rabbit,
+/obj/structure/flora/bush/fullgrass/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ki" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 5
+ },
+/obj/structure/bed/medical/anchored{
+ dir = 1
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Kl" = (
+/obj/structure/chair/sofa/bench,
+/obj/effect/turf_decal/siding/purple{
+ dir = 1
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Kx" = (
+/obj/effect/turf_decal/siding/purple/corner{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"KC" = (
+/obj/machinery/puzzle_button/directional/north{
+ id = "md_toeng";
+ queue_size = 4
+ },
+/obj/structure/chair/office{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/machinery/light/small/broken/directional/east,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"KH" = (
+/obj/structure/broken_flooring/pile/always_floorplane{
+ dir = 1
+ },
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"KP" = (
+/obj/effect/decal/cleanable/blood/tracks,
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/iron/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"KU" = (
+/obj/machinery/door/airlock/engineering,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Lc" = (
+/obj/structure/table/wood,
+/obj/effect/turf_decal/siding/wood{
+ dir = 1
+ },
+/obj/item/storage/fancy/rollingpapers,
+/obj/item/paper/pamphlet/cybernetics,
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Lj" = (
+/obj/effect/mob_spawn/corpse/human/scientist,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ll" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/random/directional/north,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"LR" = (
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"Mb" = (
+/obj/effect/turf_decal/siding/red,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/structure/sign/poster/random/directional/west,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Mo" = (
+/obj/effect/spawner/structure/window/hollow/reinforced/plasma/end{
+ dir = 4
+ },
+/obj/structure/sign/warning/electric_shock/directional/west,
+/obj/structure/cable,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Mp" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"MF" = (
+/obj/structure/grille/indestructible,
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/yellow/filled/warning,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"MH" = (
+/obj/effect/turf_decal/siding/wood,
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ML" = (
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"MO" = (
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/iron/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"MS" = (
+/obj/structure/table,
+/obj/item/paper/crumpled/fluff/meatderelict,
+/obj/item/pen,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Nn" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/structure/table,
+/obj/item/petri_dish/random,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Nr" = (
+/obj/effect/turf_decal/siding/wood/corner{
+ dir = 8
+ },
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Nz" = (
+/obj/structure/mecha_wreckage/ripley,
+/turf/open/indestructible{
+ icon_state = "recharge_floor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"NE" = (
+/obj/structure/sign/warning/biohazard/directional/west,
+/obj/structure/broken_flooring/corner/always_floorplane{
+ dir = 1
+ },
+/obj/item/kirbyplants/random/dead,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"NI" = (
+/obj/lightning_thrower,
+/obj/machinery/light/small/dim/directional/north,
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/yellow/filled/warning{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"NK" = (
+/obj/structure/filingcabinet/chestdrawer,
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"NL" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"NU" = (
+/obj/structure/window/spawner/directional/west,
+/obj/structure/window/spawner/directional/east,
+/obj/structure/window/spawner/directional/south,
+/obj/effect/gibspawner/generic,
+/turf/open/floor/circuit{
+ baseturfs = /turf/open/indestructible/plating
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"Oh" = (
+/obj/effect/spawner/structure/window/hollow/end{
+ dir = 1
+ },
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Oi" = (
+/obj/structure/sign/warning/biohazard/directional/north,
+/obj/effect/turf_decal/tile/red/half/contrasted{
+ dir = 1
+ },
+/obj/structure/table/reinforced,
+/obj/item/book/manual/wiki/security_space_law,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Oo" = (
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"OC" = (
+/obj/structure/table,
+/obj/item/plate/large,
+/obj/effect/spawner/random/food_or_drink/donkpockets,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"OM" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 4
+ },
+/obj/machinery/light/small/directional/west,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"OP" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 1
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"OQ" = (
+/obj/machinery/door/airlock/vault{
+ name = "Teleportation Research"
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"OW" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Pa" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/obj/effect/turf_decal/stripes/corner,
+/obj/effect/turf_decal/siding/purple,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Pj" = (
+/obj/structure/broken_flooring/corner/always_floorplane,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Pt" = (
+/obj/structure/broken_flooring/pile/always_floorplane{
+ dir = 8
+ },
+/obj/structure/broken_flooring/plating/directional/east,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"PF" = (
+/obj/structure/puzzle_blockade{
+ id = "md_tosci"
+ },
+/obj/effect/turf_decal/stripes/full,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"PJ" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/machinery/computer/old{
+ dir = 4
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"PQ" = (
+/obj/structure/puzzle_blockade{
+ id = "md_armory"
+ },
+/obj/effect/turf_decal/stripes/full,
+/obj/machinery/puzzle_keycardpad/directional/south{
+ id = "md_armory";
+ name = "armory authentication pad";
+ queue_size = 5
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"PT" = (
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"PU" = (
+/turf/template_noop,
+/area/template_noop)
+"Qa" = (
+/obj/effect/turf_decal/siding/blue,
+/obj/machinery/modular_computer/preset/civilian{
+ dir = 1
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Qc" = (
+/obj/machinery/light/small/dim/directional/east,
+/obj/machinery/suit_storage_unit/open,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Qd" = (
+/obj/structure/table/wood/fancy/purple,
+/obj/effect/spawner/random/engineering/tool_advanced,
+/obj/effect/spawner/random/engineering/tool_advanced,
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Qh" = (
+/obj/effect/spawner/structure/window/hollow/reinforced/plasma/end{
+ dir = 8
+ },
+/obj/structure/sign/warning/electric_shock/directional/east,
+/obj/structure/cable,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Qj" = (
+/obj/machinery/door/airlock/external,
+/obj/effect/mapping_helpers/airlock/welded,
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Qw" = (
+/obj/structure/chair/office/light,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"QM" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/effect/turf_decal/siding/purple{
+ dir = 6
+ },
+/obj/structure/sign/directions/engineering/directional/east,
+/obj/effect/spawner/random/bureaucracy/pen,
+/obj/item/paper/crumpled/fluff/meatderelict/shieldgens,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"QP" = (
+/obj/effect/decal/cleanable/blood/old,
+/obj/structure/chair/office/light,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ra" = (
+/obj/effect/spawner/structure/window/hollow/end,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Rb" = (
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/yellow/half/contrasted,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Rf" = (
+/obj/machinery/light/dim/directional/north,
+/obj/lightning_thrower,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"RD" = (
+/obj/structure/marker_beacon/burgundy,
+/obj/effect/turf_decal/stripes{
+ dir = 6
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"RH" = (
+/mob/living/basic/living_floor/white,
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"RN" = (
+/obj/item/flashlight/flare{
+ icon_state = "flare-on"
+ },
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"RQ" = (
+/obj/effect/decal/cleanable/glass,
+/mob/living/basic/living_limb_flesh,
+/obj/item/kirbyplants/random/dead,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"RS" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Se" = (
+/obj/effect/turf_decal/tile/red/half/contrasted,
+/obj/structure/chair/office{
+ dir = 8
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Sj" = (
+/obj/machinery/power/rtg/old_station,
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/machinery/light/small/directional/south,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Sz" = (
+/mob/living/basic/meteor_heart/opens_puzzle_door{
+ id = "md_heart";
+ name = "tumor heart"
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"SX" = (
+/obj/structure/chair/comfy/black,
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"SZ" = (
+/obj/machinery/door/airlock/engineering,
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 1
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Tc" = (
+/obj/structure/table,
+/obj/effect/spawner/random/engineering/toolbox,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Tl" = (
+/obj/effect/turf_decal/siding/blue{
+ dir = 1
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Tw" = (
+/obj/structure/table/wood/fancy/orange,
+/obj/item/food/pancakes/chocolatechip,
+/obj/item/toy/figure/cargotech{
+ pixel_y = 12
+ },
+/obj/effect/turf_decal/siding/wood{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"TP" = (
+/obj/effect/turf_decal/siding/purple/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/siding/purple/corner{
+ dir = 1
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"TU" = (
+/obj/structure/showcase/horrific_experiment,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Ue" = (
+/obj/machinery/photocopier,
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ui" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 8
+ },
+/obj/machinery/light/small/dim/directional/north,
+/obj/effect/spawner/random/vending/colavend,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Uj" = (
+/obj/structure/window/spawner/directional/north,
+/obj/structure/window/spawner/directional/east,
+/obj/structure/window/spawner/directional/south,
+/obj/structure/window/spawner/directional/west,
+/obj/effect/gibspawner/generic,
+/mob/living/basic/living_limb_flesh,
+/turf/open/floor/circuit{
+ baseturfs = /turf/open/indestructible/plating
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ut" = (
+/mob/living/basic/living_limb_flesh,
+/obj/machinery/light/small/dim/directional/east,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Uv" = (
+/obj/machinery/light/small/dim/directional/west,
+/obj/machinery/suit_storage_unit/open,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"UD" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"UG" = (
+/obj/machinery/vending/tool,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"UN" = (
+/obj/effect/turf_decal/siding/purple{
+ dir = 10
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"UX" = (
+/turf/closed/indestructible/riveted/plastinum/nodiagonal,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Vc" = (
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/filled/warning{
+ dir = 1
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Vj" = (
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 8
+ },
+/obj/structure/cable,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Vn" = (
+/obj/structure/table/wood/fancy/purple,
+/obj/item/raw_anomaly_core/bluespace,
+/turf/open/floor/iron/dark/textured_large,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Vu" = (
+/obj/structure/broken_flooring/side/always_floorplane{
+ dir = 4
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"VB" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red/half/contrasted{
+ dir = 4
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"VJ" = (
+/obj/machinery/door/airlock/medical,
+/obj/effect/turf_decal/siding/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/siding/blue{
+ dir = 4
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"VN" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/ammo_casing/c45/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"VT" = (
+/obj/structure/broken_flooring/singular{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/item/food/strawberryicecreamsandwich,
+/obj/item/food/strawberryicecreamsandwich,
+/obj/item/food/strawberryicecreamsandwich,
+/obj/item/food/strawberryicecreamsandwich,
+/obj/structure/closet/mini_fridge,
+/obj/structure/broken_flooring/singular/always_floorplane{
+ dir = 1
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"VW" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/machinery/light/floor,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"We" = (
+/obj/machinery/door/airlock/engineering,
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Wj" = (
+/mob/living/basic/living_floor,
+/obj/item/chair,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Wx" = (
+/obj/structure/broken_flooring/pile/always_floorplane{
+ dir = 1
+ },
+/obj/structure/broken_flooring/plating/directional/north,
+/obj/machinery/light/cold/dim/directional/east,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"WJ" = (
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Xe" = (
+/obj/effect/turf_decal/siding/red,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/machinery/light/cold/directional/east,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Xh" = (
+/obj/machinery/door/airlock/engineering,
+/obj/structure/cable,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Xl" = (
+/obj/structure/table,
+/obj/item/flashlight/lamp,
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Xm" = (
+/obj/structure/table/wood/fancy/orange,
+/obj/item/ai_module/core/full/ten_commandments,
+/obj/effect/turf_decal/siding/wood{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Xo" = (
+/obj/structure/showcase/horrific_experiment,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Xp" = (
+/obj/structure/puzzle_blockade/meat{
+ id = "md_heart"
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Xz" = (
+/obj/machinery/door/puzzle/keycard{
+ puzzle_id = "md_engpost"
+ },
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 1
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"XA" = (
+/turf/closed/mineral/random,
+/area/ruin/space)
+"XD" = (
+/obj/structure/broken_flooring/pile/always_floorplane,
+/obj/structure/cable,
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"XO" = (
+/obj/structure/sign/directions/security/directional/south{
+ pixel_x = 32
+ },
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/structure/sign/poster/official/random/directional/east,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"XP" = (
+/turf/closed/mineral/bananium,
+/area/ruin/space)
+"XQ" = (
+/obj/effect/mob_spawn/corpse/human/scientist,
+/obj/effect/decal/cleanable/glass,
+/obj/machinery/light/small/dim/directional/west,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Yc" = (
+/turf/closed/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost/vault)
+"Yd" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/indestructible/plating,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Yr" = (
+/obj/structure/window/spawner/directional/east,
+/mob/living/basic/living_limb_flesh,
+/mob/living/basic/living_limb_flesh,
+/obj/item/keycard/meatderelict/armory,
+/obj/machinery/light/small/dim/directional/west,
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Ys" = (
+/obj/effect/turf_decal/trimline/yellow/filled/end{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"YD" = (
+/obj/item/ammo_casing/spent,
+/obj/item/ammo_casing/spent,
+/obj/effect/decal/cleanable/blood/tracks,
+/obj/item/ammo_casing/c45/spent,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"YI" = (
+/obj/structure/broken_flooring/corner/always_floorplane{
+ dir = 8
+ },
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"YW" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/rack,
+/obj/structure/sign/warning/chem_diamond/directional/south,
+/obj/machinery/door/window/left/directional/north,
+/obj/item/grenade/chem_grenade/large,
+/obj/item/grenade/chem_grenade/adv_release{
+ pixel_x = 8
+ },
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"YY" = (
+/obj/structure/filingcabinet/chestdrawer,
+/turf/open/indestructible/white{
+ icon_state = "showroomfloor"
+ },
+/area/ruin/space/has_grav/powered/biooutpost)
+"Zd" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 8
+ },
+/obj/structure/chair/office{
+ dir = 1
+ },
+/turf/open/indestructible,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Zp" = (
+/obj/effect/turf_decal/siding/blue/corner,
+/obj/effect/turf_decal/siding/blue/corner{
+ dir = 8
+ },
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Zr" = (
+/obj/item/gps/spaceruin,
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+"Zs" = (
+/obj/structure/door_assembly/door_assembly_science,
+/obj/effect/mapping_helpers/broken_floor,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Zv" = (
+/obj/effect/decal/cleanable/glass,
+/obj/item/kirbyplants/random,
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"Zx" = (
+/turf/open/indestructible/meat,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ZG" = (
+/obj/effect/turf_decal/tile/neutral/opposingcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/rack,
+/obj/item/storage/medkit/brute,
+/turf/open/indestructible/dark,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ZT" = (
+/obj/effect/turf_decal/tile/purple/opposingcorners,
+/obj/machinery/light/cold/dim/directional/east,
+/turf/open/indestructible/white,
+/area/ruin/space/has_grav/powered/biooutpost)
+"ZZ" = (
+/obj/structure/fluff/oldturret,
+/turf/open/floor/plating/airless,
+/area/ruin/space)
+
+(1,1,1) = {"
+PU
+PU
+PU
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+PU
+re
+re
+re
+re
+re
+re
+re
+PU
+PU
+PU
+re
+re
+re
+re
+re
+PU
+PU
+PU
+PU
+PU
+PU
+"}
+(2,1,1) = {"
+PU
+PU
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+PU
+"}
+(3,1,1) = {"
+PU
+PU
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+Jh
+Jh
+Jh
+Jh
+Jh
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+"}
+(4,1,1) = {"
+PU
+PU
+re
+re
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+re
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+lh
+eF
+PJ
+Jh
+hd
+re
+re
+re
+Jh
+Jh
+Jh
+Jh
+re
+re
+re
+re
+re
+re
+"}
+(5,1,1) = {"
+PU
+PU
+re
+re
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+re
+Jh
+fH
+fH
+fH
+fH
+fH
+fH
+Jh
+Dh
+vt
+vt
+oX
+dQ
+hd
+re
+re
+Jh
+Jh
+se
+ku
+Jh
+Jh
+re
+re
+re
+re
+re
+"}
+(6,1,1) = {"
+PU
+PU
+re
+re
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+re
+Jh
+fH
+xU
+Ec
+eq
+tF
+fH
+Jh
+Fc
+fo
+oX
+oX
+YW
+hd
+re
+re
+Jh
+ny
+Gb
+Gb
+ny
+Jh
+Jh
+Jh
+re
+re
+re
+"}
+(7,1,1) = {"
+PU
+PU
+re
+re
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+re
+Jh
+fH
+Ec
+Hh
+Ec
+aV
+fH
+Jh
+Bx
+CS
+RS
+HC
+rl
+hd
+re
+re
+Jh
+Jh
+Ei
+Jh
+Jh
+Jh
+Yr
+Jh
+Jh
+re
+re
+"}
+(8,1,1) = {"
+PU
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+re
+Jh
+fH
+qx
+ni
+Ec
+jt
+fH
+Jh
+Jh
+Ra
+Zs
+Oh
+fH
+Jh
+re
+Jh
+Jh
+AP
+DJ
+yU
+AT
+vF
+ih
+hf
+Jh
+Jh
+re
+"}
+(9,1,1) = {"
+PU
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+XA
+re
+Jh
+Jh
+Jh
+Jh
+Jh
+hY
+Jh
+fH
+EE
+Ec
+at
+Ec
+Pt
+Jh
+Jh
+Jh
+pK
+DJ
+DJ
+qs
+pj
+kl
+kl
+QP
+kh
+Jh
+re
+"}
+(10,1,1) = {"
+XA
+XA
+XP
+XP
+XA
+XA
+XA
+re
+re
+re
+re
+re
+re
+re
+re
+Jh
+dv
+cp
+DJ
+NU
+fH
+OC
+Ec
+yl
+Ec
+Ec
+Jh
+Kc
+JF
+DJ
+kl
+qs
+sp
+Jh
+RQ
+jA
+lf
+Jh
+Jh
+re
+"}
+(11,1,1) = {"
+XA
+XA
+XP
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+Jh
+iQ
+cp
+DJ
+CI
+lJ
+Ka
+RH
+uC
+Mp
+uC
+Cl
+DJ
+DJ
+DJ
+DJ
+dW
+DJ
+Jh
+Jh
+Ut
+Jh
+Jh
+re
+re
+"}
+(12,1,1) = {"
+XA
+XA
+XA
+re
+re
+re
+re
+re
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Uj
+DJ
+Gb
+xk
+Jh
+hQ
+iX
+Zx
+Zx
+iB
+Jh
+Nn
+DJ
+ZT
+DJ
+dW
+kl
+ui
+Jh
+Jh
+Jh
+re
+re
+re
+"}
+(13,1,1) = {"
+XA
+XA
+re
+re
+re
+re
+Jh
+Jh
+Jh
+eT
+Xm
+Tw
+tg
+Jh
+gN
+Ue
+cp
+Ju
+fW
+pQ
+Jh
+Bp
+Lj
+wy
+Zx
+Wx
+Jh
+bR
+DJ
+Jh
+Jh
+oj
+Jh
+Jh
+Jh
+re
+re
+re
+re
+re
+"}
+(14,1,1) = {"
+XA
+re
+re
+re
+re
+re
+Jh
+Zv
+il
+id
+MH
+HF
+KP
+vY
+Ju
+DJ
+ea
+mA
+Gb
+vZ
+Jh
+Jh
+tt
+wJ
+tt
+Jh
+Jh
+Jh
+Cl
+Jh
+oX
+gQ
+zL
+Jh
+re
+re
+re
+re
+re
+re
+"}
+(15,1,1) = {"
+re
+re
+re
+re
+re
+re
+Jh
+oQ
+SX
+Lc
+Bl
+dR
+MO
+Jh
+wX
+wM
+DJ
+cp
+XO
+Ju
+op
+op
+at
+HF
+CW
+Jh
+Br
+Mb
+at
+eA
+vt
+zs
+Gn
+Jh
+re
+re
+re
+re
+re
+re
+"}
+(16,1,1) = {"
+re
+re
+re
+re
+re
+re
+Jh
+NK
+il
+oh
+Nr
+kB
+Jh
+UX
+UX
+EC
+xr
+hR
+UX
+UX
+UX
+op
+Gd
+WJ
+Jf
+Jh
+Br
+Xe
+jE
+Jh
+FI
+CN
+Xl
+Jh
+re
+re
+nr
+nr
+re
+nr
+"}
+(17,1,1) = {"
+re
+re
+re
+re
+re
+re
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Yc
+Yc
+EC
+OQ
+EC
+Yc
+Yc
+UX
+UX
+Jh
+uZ
+Jh
+Jh
+Jh
+Jh
+PF
+Jh
+af
+sl
+Jh
+Jh
+re
+ZZ
+ML
+ML
+ML
+ML
+"}
+(18,1,1) = {"
+re
+re
+re
+EC
+EC
+EC
+EC
+EC
+EC
+re
+re
+re
+Yc
+Yc
+TU
+EN
+EN
+eP
+TU
+Yc
+Yc
+UX
+wR
+yw
+nP
+zg
+Jh
+Df
+GA
+bh
+bi
+UN
+Jh
+ij
+ij
+ML
+BA
+LR
+LR
+eo
+"}
+(19,1,1) = {"
+re
+re
+EC
+EC
+Jo
+Qd
+zS
+hk
+EC
+Yc
+EC
+Yc
+Yc
+TU
+EN
+eP
+EN
+EN
+EN
+TU
+Yc
+UX
+uh
+AY
+AY
+Se
+Jh
+sk
+at
+sM
+Jb
+Pa
+Jh
+Uv
+ij
+ML
+tS
+AV
+AV
+kX
+"}
+(20,1,1) = {"
+re
+re
+EC
+Fv
+PT
+aW
+OW
+PT
+EC
+Xo
+XQ
+TU
+Yc
+EN
+EN
+EN
+EN
+EN
+eP
+EN
+EC
+EC
+Oi
+AY
+AY
+fm
+Jh
+Kl
+zF
+Bu
+VN
+HA
+ph
+FE
+jo
+cQ
+tS
+AV
+AV
+kX
+"}
+(21,1,1) = {"
+re
+re
+EC
+AX
+PT
+qw
+sd
+PT
+Jx
+CD
+EN
+CD
+Xp
+EN
+eP
+EN
+Sz
+eP
+EN
+EN
+OQ
+Bt
+gX
+VB
+VB
+qg
+Jh
+DU
+mM
+YD
+lm
+mU
+Jh
+us
+ij
+cQ
+tS
+AV
+AV
+kX
+"}
+(22,1,1) = {"
+re
+re
+EC
+ja
+PT
+NL
+uU
+PT
+EC
+TU
+rK
+Xo
+Yc
+EN
+EN
+EN
+EN
+EN
+EN
+eP
+EC
+hR
+IK
+IK
+IK
+PQ
+Jh
+iI
+jE
+Hx
+Ew
+nY
+Qj
+Oo
+uq
+uH
+tS
+AV
+AV
+kX
+"}
+(23,1,1) = {"
+re
+re
+EC
+EC
+ne
+AG
+Vn
+GE
+EC
+Yc
+EC
+Yc
+Yc
+TU
+EN
+eP
+EN
+eP
+EN
+TU
+Yc
+UX
+wH
+jU
+ZG
+gK
+Jh
+Hb
+Kx
+nR
+uc
+QM
+Jh
+Qc
+ij
+ML
+tS
+AV
+AV
+kX
+"}
+(24,1,1) = {"
+re
+re
+re
+EC
+EC
+EC
+EC
+EC
+EC
+EC
+EC
+EC
+Yc
+Yc
+TU
+EN
+EN
+EN
+TU
+Yc
+Yc
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+oO
+zF
+hW
+Jh
+Jh
+ij
+ij
+Zr
+sL
+Gj
+Gj
+RD
+"}
+(25,1,1) = {"
+re
+re
+re
+re
+re
+ij
+xE
+MF
+Mo
+dD
+Zd
+EC
+EC
+Yc
+Yc
+EC
+OQ
+EC
+Yc
+Yc
+UX
+Jh
+Jh
+vd
+jf
+la
+fc
+Jh
+rh
+DC
+Be
+Jh
+re
+re
+re
+ZZ
+ML
+ML
+ML
+ML
+"}
+(26,1,1) = {"
+re
+re
+re
+re
+re
+ij
+Jt
+pl
+We
+Vc
+Rb
+Sj
+EC
+Yc
+hR
+EC
+xr
+EC
+EC
+UX
+Jh
+YY
+Jh
+Tl
+jE
+jE
+Zp
+VJ
+TP
+jE
+kn
+Jh
+re
+re
+re
+re
+nr
+re
+re
+nr
+"}
+(27,1,1) = {"
+re
+re
+re
+re
+re
+ij
+NI
+Hm
+Qh
+ki
+UD
+qV
+ij
+Nz
+sJ
+OM
+Vu
+NE
+fH
+Jh
+fB
+ch
+Jh
+Ll
+jE
+nx
+aj
+Jh
+Cf
+go
+GC
+Jh
+re
+re
+re
+re
+re
+re
+re
+re
+"}
+(28,1,1) = {"
+re
+re
+re
+re
+re
+ij
+ij
+ij
+ij
+ab
+ij
+ij
+ij
+Dg
+jj
+mx
+Zx
+EQ
+fH
+Jh
+Ex
+tv
+ex
+Tl
+jE
+Qw
+Qa
+Jh
+Jh
+KU
+Jh
+Jh
+ij
+ij
+ij
+ij
+re
+re
+re
+re
+"}
+(29,1,1) = {"
+re
+re
+re
+re
+re
+re
+re
+ij
+GF
+zP
+iA
+iA
+hN
+sJ
+OP
+io
+jj
+uS
+ij
+Jh
+qi
+ch
+Jh
+eD
+jE
+at
+mO
+Jh
+ra
+rm
+iA
+An
+ij
+yu
+za
+ij
+re
+re
+nr
+nr
+"}
+(30,1,1) = {"
+PU
+re
+re
+re
+re
+re
+re
+ij
+Rf
+Ys
+sR
+iA
+hN
+jj
+Zx
+Vu
+pe
+DR
+ij
+Jh
+aE
+pk
+Jh
+Tl
+jE
+rw
+jV
+Jh
+pY
+Vj
+pY
+By
+nM
+pp
+jr
+ij
+re
+re
+nr
+nr
+"}
+(31,1,1) = {"
+PU
+re
+re
+re
+re
+re
+re
+ij
+GF
+xA
+iA
+qY
+hN
+jj
+Zx
+Zx
+VT
+po
+ij
+Jh
+wn
+ch
+Jh
+Ki
+GO
+wf
+Jh
+Jh
+Yd
+yp
+Yd
+ij
+ij
+DB
+Zx
+fH
+re
+re
+nr
+PU
+"}
+(32,1,1) = {"
+PU
+re
+re
+re
+re
+re
+re
+ij
+ij
+ij
+wj
+wj
+ij
+Ui
+Zx
+Zx
+OP
+fH
+fH
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+Jh
+ij
+KH
+au
+yr
+ij
+CF
+sJ
+ij
+ij
+re
+re
+re
+PU
+"}
+(33,1,1) = {"
+PU
+re
+re
+re
+re
+re
+re
+re
+re
+ij
+MS
+pC
+wj
+ES
+Zx
+Zx
+OP
+ij
+fH
+ij
+fH
+fH
+fH
+ij
+ij
+ij
+re
+ij
+RN
+os
+yr
+wj
+lT
+Ca
+ij
+re
+re
+re
+re
+PU
+"}
+(34,1,1) = {"
+PU
+PU
+re
+re
+re
+re
+re
+re
+re
+ij
+KC
+qY
+Xz
+YI
+mx
+mx
+Pj
+ij
+tq
+Wj
+DB
+DB
+DB
+oI
+uf
+ij
+ij
+ij
+yr
+au
+yr
+wj
+jO
+yf
+ij
+re
+re
+re
+re
+PU
+"}
+(35,1,1) = {"
+PU
+PU
+re
+nr
+nr
+nr
+re
+re
+re
+ij
+ij
+ij
+ij
+ij
+vl
+tN
+UD
+ij
+DB
+DB
+qh
+qZ
+Ip
+Du
+mx
+ij
+aF
+yr
+yr
+os
+yr
+ij
+gO
+jO
+ij
+re
+re
+re
+re
+nr
+"}
+(36,1,1) = {"
+PU
+PU
+nr
+nr
+nr
+nr
+nr
+re
+re
+re
+re
+re
+re
+ij
+ay
+VW
+iA
+SZ
+jO
+Tc
+Dk
+DB
+DB
+Du
+jO
+mc
+yr
+au
+os
+au
+XD
+ij
+ij
+iO
+ij
+re
+re
+re
+re
+nr
+"}
+(37,1,1) = {"
+PU
+PU
+re
+re
+re
+nr
+nr
+nr
+re
+re
+re
+re
+re
+ij
+UG
+iA
+xm
+ij
+DB
+DB
+DB
+DB
+Wj
+DB
+Vu
+ij
+aF
+gP
+EY
+yr
+wU
+Xh
+jO
+HV
+ij
+re
+re
+re
+re
+re
+"}
+(38,1,1) = {"
+PU
+PU
+PU
+re
+re
+nr
+re
+re
+re
+re
+re
+re
+re
+ij
+ij
+ij
+ij
+ij
+ij
+fH
+AD
+AD
+AD
+AD
+fH
+ij
+ij
+ij
+ij
+ij
+ij
+ij
+ij
+ij
+ij
+re
+re
+re
+re
+re
+"}
+(39,1,1) = {"
+PU
+PU
+PU
+re
+re
+nr
+nr
+nr
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+fH
+fH
+ij
+fH
+ij
+ij
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+nr
+"}
+(40,1,1) = {"
+PU
+PU
+PU
+PU
+PU
+PU
+PU
+PU
+PU
+PU
+PU
+PU
+PU
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+re
+nr
+nr
+"}
diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 18dc918a109216..88da3cd7f72b99 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -5152,15 +5152,6 @@
/obj/machinery/light/directional/south,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/hall)
-"By" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/computer/monitor,
-/obj/machinery/computer/monitor,
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/engie)
"Bz" = (
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/hall)
@@ -5178,11 +5169,6 @@
/obj/structure/cable,
/turf/template_noop,
/area/space/nearstation)
-"BC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/fluff/broken_canister_frame,
-/turf/open/floor/engine/airless,
-/area/ruin/space/ancientstation/beta/supermatter)
"BH" = (
/obj/item/solar_assembly,
/obj/structure/cable,
@@ -5427,6 +5413,11 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
+"DK" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/fluff/broken_canister_frame,
+/turf/open/floor/engine/airless,
+/area/ruin/space/ancientstation/beta/supermatter)
"DM" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -6513,6 +6504,14 @@
/obj/structure/window/reinforced/spawner/directional/south,
/turf/open/floor/engine/o2,
/area/ruin/space/ancientstation/beta/atmos)
+"Ll" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/computer/monitor,
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/engie)
"Lm" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -10556,7 +10555,7 @@ NU
xY
lI
CN
-BC
+DK
iv
Qi
ZD
@@ -11607,7 +11606,7 @@ mS
jE
aa
Ma
-By
+Ll
eK
fc
Wn
diff --git a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm
index 76e7da25fa414e..65c1413bec84bd 100644
--- a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm
+++ b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm
@@ -744,7 +744,6 @@
"jD" = (
/obj/machinery/light/small/directional/east,
/obj/structure/closet/emcloset,
-/obj/machinery/light/small/directional/east,
/turf/open/floor/iron/airless,
/area/ruin/space/ks13/dorms)
"jV" = (
@@ -3633,8 +3632,6 @@
pixel_x = -5;
pixel_y = 9
},
-/obj/item/wallframe/apc,
-/obj/machinery/light/small/directional/west,
/turf/open/floor/iron/airless,
/area/ruin/space/ks13/engineering/tech_storage)
"Ce" = (
@@ -4080,7 +4077,6 @@
/area/ruin/space/ks13/science/rnd)
"EC" = (
/obj/machinery/portable_atmospherics/canister/plasma,
-/obj/machinery/portable_atmospherics/canister/plasma,
/turf/open/floor/iron/airless,
/area/ruin/space/ks13/engineering/singulo)
"ED" = (
@@ -4254,7 +4250,6 @@
/area/ruin/space/ks13/hallway/aft)
"Fy" = (
/obj/machinery/light/small/directional/west,
-/obj/machinery/light/small/directional/west,
/obj/effect/mapping_helpers/burnt_floor,
/turf/open/floor/iron/airless,
/area/ruin/space/ks13/engineering/singulo)
@@ -6070,7 +6065,6 @@
/obj/machinery/light/small/directional/east,
/obj/item/circuitboard/machine/smes,
/obj/structure/table,
-/obj/machinery/light/small/directional/east,
/obj/effect/spawner/random/maintenance,
/obj/effect/mapping_helpers/burnt_floor,
/turf/open/floor/iron/airless,
diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm
index 5fc13acae1695a..fa4f71418e1df7 100644
--- a/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm
+++ b/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm
@@ -250,7 +250,7 @@
/turf/open/floor/iron/smooth,
/area/ruin/space/has_grav/cargodise_freighter/utility)
"dT" = (
-/mob/living/simple_animal/hostile/pirate/melee{
+/mob/living/basic/trooper/pirate/melee{
faction = list("hostile")
},
/turf/open/floor/mineral/plastitanium,
@@ -2159,11 +2159,6 @@
},
/turf/open/floor/iron/white,
/area/ruin/space/has_grav/cargodise_freighter/trauma)
-"IA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/kitchen,
-/area/ruin/space/has_grav/cargodise_freighter/kitchen)
"IP" = (
/obj/machinery/vending/dinnerware,
/turf/open/floor/iron/kitchen,
@@ -2902,7 +2897,7 @@
/area/ruin/space/has_grav/cargodise_freighter/primaryhall)
"UP" = (
/obj/effect/turf_decal/trimline/blue/line,
-/mob/living/simple_animal/hostile/pirate/melee{
+/mob/living/basic/trooper/pirate/melee{
faction = list("hostile")
},
/turf/open/floor/iron/dark/textured_half{
@@ -3039,12 +3034,6 @@
/obj/machinery/light/directional/south,
/turf/open/floor/iron/kitchen,
/area/ruin/space/has_grav/cargodise_freighter/kitchen)
-"WE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/ruin/space/has_grav/cargodise_freighter/kitchen)
"WJ" = (
/obj/effect/turf_decal/tile/yellow/half{
dir = 4
@@ -4066,7 +4055,7 @@ Ey
WQ
Gg
Zq
-WE
+wd
YY
Gg
UL
@@ -4635,7 +4624,7 @@ vH
vH
Gg
gc
-IA
+FT
FT
FT
JC
diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm
index 097dacaa1fd1df..e79f5902d5d705 100644
--- a/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm
+++ b/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm
@@ -171,7 +171,7 @@
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/powered)
"ga" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/turf/open/floor/carpet,
/area/ruin/space/has_grav/powered)
"ge" = (
@@ -340,7 +340,7 @@
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/powered)
"mx" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/obj/effect/turf_decal/trimline/dark_blue/filled/line{
dir = 10
},
@@ -459,7 +459,7 @@
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered)
"pS" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/obj/effect/turf_decal/trimline/dark_red/filled/line{
dir = 8
},
@@ -665,7 +665,7 @@
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/powered)
"wr" = (
-/mob/living/simple_animal/hostile/pirate/ranged,
+/mob/living/basic/trooper/pirate/ranged,
/obj/effect/turf_decal/trimline/dark_red/filled/line{
dir = 8
},
@@ -737,7 +737,7 @@
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/powered)
"xM" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered)
"xV" = (
@@ -779,7 +779,7 @@
/turf/open/floor/iron/kitchen,
/area/ruin/space/has_grav/powered)
"yE" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/obj/effect/turf_decal/trimline/dark_red/filled/corner{
dir = 8
},
@@ -837,7 +837,7 @@
/turf/open/floor/carpet,
/area/ruin/space/has_grav/powered)
"AA" = (
-/mob/living/simple_animal/hostile/pirate/ranged,
+/mob/living/basic/trooper/pirate/ranged,
/obj/effect/turf_decal/trimline/dark_red/filled/line{
dir = 4
},
@@ -944,7 +944,7 @@
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/powered)
"EC" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/obj/effect/turf_decal/trimline/dark_red/filled/line{
dir = 1
},
@@ -999,7 +999,7 @@
/turf/open/floor/iron/kitchen,
/area/ruin/space/has_grav/powered)
"Gc" = (
-/mob/living/simple_animal/hostile/pirate/ranged,
+/mob/living/basic/trooper/pirate/ranged,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered)
"Gf" = (
@@ -1096,7 +1096,7 @@
/turf/closed/wall/r_wall/syndicate,
/area/ruin/space/has_grav/powered)
"LG" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/powered)
"LI" = (
@@ -1112,7 +1112,7 @@
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered)
"Ma" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/obj/effect/turf_decal/trimline/dark_red/filled/line,
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/powered)
@@ -1281,7 +1281,7 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/powered)
"TK" = (
-/mob/living/simple_animal/hostile/pirate/ranged/space,
+/mob/living/basic/trooper/pirate/ranged/space,
/turf/open/misc/asteroid/lowpressure,
/area/ruin/space)
"TO" = (
@@ -1332,7 +1332,7 @@
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/powered)
"UL" = (
-/mob/living/simple_animal/hostile/pirate/ranged{
+/mob/living/basic/trooper/pirate/ranged{
health = 200;
maxHealth = 200;
name = "Pirate Captain"
@@ -1360,11 +1360,11 @@
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/powered)
"VI" = (
-/mob/living/simple_animal/hostile/pirate/melee/space,
+/mob/living/basic/trooper/pirate/melee/space,
/turf/open/misc/asteroid/lowpressure,
/area/ruin/space)
"VL" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/obj/effect/turf_decal/trimline/dark_red/filled/corner{
dir = 1
},
diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm
index fdf272d8aa453d..808950d1cafb7f 100644
--- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm
+++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm
@@ -107,7 +107,7 @@
/turf/open/misc/asteroid/airless,
/area/solars/tarkon)
"aA" = (
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/cult,
/area/ruin/space/has_grav/port_tarkon/observ)
@@ -128,7 +128,7 @@
/turf/open/floor/cult,
/area/ruin/space/has_grav/port_tarkon/porthall)
"aO" = (
-/mob/living/simple_animal/hostile/construct/wraith/hostile{
+/mob/living/basic/construct/wraith/hostile{
health = 125;
maxHealth = 125
},
@@ -657,7 +657,7 @@
/obj/structure/chair/sofa/corp{
dir = 8
},
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/observ)
@@ -1462,7 +1462,7 @@
/area/ruin/space/has_grav/port_tarkon/secoff)
"id" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/mob/living/simple_animal/hostile/construct/wraith/hostile{
+/mob/living/basic/construct/wraith/hostile{
health = 125;
maxHealth = 125
},
@@ -1794,7 +1794,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/firealarm/directional/east,
-/mob/living/simple_animal/hostile/construct/wraith/hostile,
+/mob/living/basic/construct/wraith/hostile,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/starboardhall)
@@ -2901,7 +2901,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
-/mob/living/simple_animal/hostile/construct/wraith/hostile{
+/mob/living/basic/construct/wraith/hostile{
health = 125;
maxHealth = 125
},
@@ -4445,7 +4445,7 @@
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/trauma)
"yT" = (
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/porthall)
@@ -4646,7 +4646,7 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/decal/cleanable/blood,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/porthall)
@@ -6493,7 +6493,7 @@
"Kb" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/obj/effect/decal/cleanable/blood,
-/mob/living/simple_animal/hostile/construct/wraith/hostile{
+/mob/living/basic/construct/wraith/hostile{
health = 125;
maxHealth = 125
},
@@ -6918,7 +6918,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/mob/living/simple_animal/hostile/construct/wraith/hostile{
+/mob/living/basic/construct/wraith/hostile{
health = 125;
maxHealth = 125
},
@@ -7234,7 +7234,7 @@
"NZ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/observ)
@@ -7253,7 +7253,7 @@
/turf/open/floor/engine,
/area/ruin/space/has_grav/port_tarkon/atmos)
"Od" = (
-/mob/living/simple_animal/hostile/construct/wraith/hostile{
+/mob/living/basic/construct/wraith/hostile{
health = 125;
maxHealth = 125
},
@@ -7615,7 +7615,6 @@
"Qy" = (
/obj/machinery/firealarm/directional/west,
/obj/machinery/suit_storage_unit/industrial/hauler,
-/obj/machinery/suit_storage_unit/industrial/hauler,
/obj/effect/turf_decal/tile/brown/half{
dir = 8
},
@@ -7972,7 +7971,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 8
},
-/mob/living/simple_animal/hostile/construct/wraith/hostile{
+/mob/living/basic/construct/wraith/hostile{
health = 125;
maxHealth = 125
},
@@ -8302,7 +8301,7 @@
/area/ruin/space/has_grav/port_tarkon/developement)
"Uh" = (
/obj/effect/decal/cleanable/blood,
-/mob/living/simple_animal/hostile/construct/wraith/hostile{
+/mob/living/basic/construct/wraith/hostile{
health = 125;
maxHealth = 125
},
@@ -8613,7 +8612,7 @@
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/secoff)
"Wi" = (
-/mob/living/simple_animal/hostile/construct/wraith/hostile,
+/mob/living/basic/construct/wraith/hostile,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/starboardhall)
@@ -8681,7 +8680,7 @@
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/forehall)
"WK" = (
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/cult,
/area/ruin/space/has_grav/port_tarkon/afthall)
@@ -9060,7 +9059,7 @@
/area/ruin/space/has_grav/port_tarkon/trauma)
"Zt" = (
/obj/machinery/light/dim/directional/north,
-/mob/living/simple_animal/hostile/construct/wraith/hostile{
+/mob/living/basic/construct/wraith/hostile{
health = 125;
maxHealth = 125
},
diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm
index 0589f45fba18c9..8232aa56a5d78a 100644
--- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm
+++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm
@@ -7213,7 +7213,6 @@
/obj/effect/decal/cleanable/dirt,
/obj/machinery/firealarm/directional/west,
/obj/machinery/suit_storage_unit/industrial/hauler,
-/obj/machinery/suit_storage_unit/industrial/hauler,
/obj/effect/turf_decal/tile/brown/half{
dir = 8
},
diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm
index 5514e997812365..a7294b23f633fe 100644
--- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm
+++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm
@@ -6335,7 +6335,6 @@
"Qy" = (
/obj/machinery/firealarm/directional/west,
/obj/machinery/suit_storage_unit/industrial/hauler,
-/obj/machinery/suit_storage_unit/industrial/hauler,
/obj/effect/turf_decal/tile/brown/half{
dir = 8
},
diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm
index 5ebeb6648402e0..1a0adf42c2acbc 100644
--- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm
+++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm
@@ -6955,7 +6955,6 @@
"Qy" = (
/obj/machinery/firealarm/directional/west,
/obj/machinery/suit_storage_unit/industrial/hauler,
-/obj/machinery/suit_storage_unit/industrial/hauler,
/obj/effect/turf_decal/tile/brown/half{
dir = 8
},
diff --git a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
index 89f41588081387..e10d5abc1118d5 100644
--- a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
+++ b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
@@ -75,7 +75,7 @@
/turf/open/floor/eighties,
/area/ruin/space/has_grav/the_outlet/storefront)
"cK" = (
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/machinery/light/small/directional/west,
/obj/effect/decal/cleanable/blood{
icon_state = "floor2-old"
@@ -1056,7 +1056,7 @@
/obj/effect/decal/cleanable/dirt{
icon_state = "dirt-4"
},
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune6"
},
@@ -1222,7 +1222,7 @@
/area/ruin/space/has_grav/the_outlet/storefront)
"Db" = (
/obj/effect/decal/cleanable/crayon,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/turf/open/floor/cult,
/area/ruin/space/has_grav/the_outlet/cultinfluence)
"Do" = (
@@ -1481,7 +1481,7 @@
/obj/effect/decal/cleanable/crayon{
icon_state = "rune2"
},
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/turf/open/floor/iron/white,
/area/ruin/space/has_grav/the_outlet/researchrooms)
"IF" = (
@@ -1573,7 +1573,7 @@
/turf/template_noop,
/area/template_noop)
"LL" = (
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune2"
},
@@ -1667,7 +1667,7 @@
/obj/effect/decal/cleanable/crayon{
icon_state = "rune4"
},
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/turf/open/floor/cult,
/area/ruin/space/has_grav/the_outlet/cultinfluence)
"NE" = (
@@ -1976,7 +1976,7 @@
dir = 8
},
/obj/effect/decal/cleanable/crayon,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/dirt{
icon_state = "dirt-127"
},
@@ -2101,7 +2101,7 @@
/turf/open/floor/iron/white,
/area/ruin/space/has_grav/the_outlet/researchrooms)
"Yr" = (
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon,
/turf/open/floor/cult,
/area/ruin/space/has_grav/the_outlet/cultinfluence)
diff --git a/_maps/RandomRuins/SpaceRuins/waystation.dmm b/_maps/RandomRuins/SpaceRuins/waystation.dmm
index a13a5087ee3d8f..9399ee029474db 100644
--- a/_maps/RandomRuins/SpaceRuins/waystation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/waystation.dmm
@@ -1,13 +1,4 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"ak" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp{
- pixel_x = -5;
- pixel_y = 2;
- start_on = 0
- },
-/turf/open/floor/wood,
-/area/ruin/space/has_grav/waystation/dorms)
"ar" = (
/obj/machinery/vending/coffee,
/obj/effect/turf_decal/siding/green,
@@ -35,6 +26,15 @@
},
/turf/open/floor/iron/freezer,
/area/ruin/space/has_grav/waystation/dorms)
+"bg" = (
+/obj/structure/table/wood,
+/obj/item/flashlight/lamp{
+ pixel_x = -5;
+ pixel_y = 2;
+ start_on = 0
+ },
+/turf/open/floor/wood,
+/area/ruin/space/has_grav/waystation/dorms)
"bt" = (
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/dirt,
@@ -179,6 +179,17 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/ruin/space/has_grav/waystation/dorms)
+"dX" = (
+/obj/effect/turf_decal/siding/red,
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced/spawner/directional/south,
+/obj/item/flashlight/lamp{
+ pixel_x = -5;
+ pixel_y = 2;
+ start_on = 0
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/waystation/securestorage)
"dY" = (
/obj/effect/mapping_helpers/burnt_floor,
/obj/item/ammo_casing/c45/spent{
@@ -1377,17 +1388,6 @@
/obj/structure/broken_flooring/pile/directional/east,
/turf/template_noop,
/area/template_noop)
-"xk" = (
-/obj/machinery/porta_turret/syndicate/pod{
- dir = 1;
- max_integrity = 80
- },
-/obj/machinery/porta_turret/syndicate/pod{
- dir = 1;
- max_integrity = 80
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/ruin/space/has_grav/powered/waystation/assaultpod)
"xq" = (
/obj/machinery/conveyor{
dir = 1;
@@ -1791,24 +1791,6 @@
/obj/item/storage/toolbox/mechanical/old,
/turf/open/floor/plating,
/area/ruin/space/has_grav/waystation)
-"FK" = (
-/obj/structure/table,
-/obj/item/folder{
- pixel_x = 6;
- pixel_y = 3
- },
-/obj/item/pen,
-/obj/item/pen{
- pixel_x = 6;
- pixel_y = 2
- },
-/obj/item/flashlight/lamp{
- pixel_x = -5;
- pixel_y = 2;
- start_on = 0
- },
-/turf/open/floor/iron,
-/area/ruin/space/has_grav/waystation/cargooffice)
"FM" = (
/obj/structure/chair/comfy/shuttle{
dir = 4;
@@ -1911,6 +1893,24 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/ruin/space/has_grav/waystation/dorms)
+"IU" = (
+/obj/structure/table,
+/obj/item/folder{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/obj/item/pen,
+/obj/item/pen{
+ pixel_x = 6;
+ pixel_y = 2
+ },
+/obj/item/flashlight/lamp{
+ pixel_x = -5;
+ pixel_y = 2;
+ start_on = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/has_grav/waystation/cargooffice)
"IZ" = (
/obj/effect/turf_decal/loading_area/red{
dir = 8
@@ -2101,6 +2101,16 @@
},
/turf/open/floor/iron,
/area/ruin/space/has_grav/waystation/cargooffice)
+"LL" = (
+/obj/structure/table/wood,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/flashlight/lamp{
+ pixel_x = -5;
+ pixel_y = 2;
+ start_on = 0
+ },
+/turf/open/floor/wood,
+/area/ruin/space/has_grav/waystation/dorms)
"LQ" = (
/obj/effect/decal/cleanable/blood/splatter,
/obj/effect/decal/cleanable/blood/tracks{
@@ -2458,16 +2468,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/has_grav/waystation/cargooffice)
-"RO" = (
-/obj/structure/table/wood,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/flashlight/lamp{
- pixel_x = -5;
- pixel_y = 2;
- start_on = 0
- },
-/turf/open/floor/wood,
-/area/ruin/space/has_grav/waystation/dorms)
"RW" = (
/obj/effect/turf_decal/tile/brown/half/contrasted,
/obj/item/kirbyplants/random,
@@ -2581,17 +2581,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/has_grav/waystation/dorms)
-"Uc" = (
-/obj/effect/turf_decal/siding/red,
-/obj/structure/table/reinforced,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/item/flashlight/lamp{
- pixel_x = -5;
- pixel_y = 2;
- start_on = 0
- },
-/turf/open/floor/iron/dark,
-/area/ruin/space/has_grav/waystation/securestorage)
"Ud" = (
/obj/machinery/door/airlock,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -4007,22 +3996,22 @@ pK
pK
pK
Ls
-ak
+bg
Of
Ls
-RO
+LL
Of
lB
-ak
+bg
dW
Ls
-RO
+LL
dW
Ls
-ak
+bg
dW
Ls
-ak
+bg
TL
QN
Dj
@@ -4646,7 +4635,7 @@ xw
jV
UG
lx
-FK
+IU
Dc
fc
zh
@@ -4714,7 +4703,7 @@ Qx
SL
jG
my
-xk
+lM
tb
FM
TW
@@ -4832,7 +4821,7 @@ xw
jV
UG
xv
-FK
+IU
Dc
Cx
Pd
@@ -5063,7 +5052,7 @@ pK
yi
vn
LQ
-Uc
+dX
Oj
WS
yi
diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm
index 42e6fd5279b152..9685c667d2c263 100644
--- a/_maps/RandomZLevels/SnowCabin.dmm
+++ b/_maps/RandomZLevels/SnowCabin.dmm
@@ -1381,7 +1381,6 @@
/obj/machinery/space_heater,
/obj/effect/decal/remains/robot,
/obj/structure/sign/warning/fire/directional/north,
-/obj/machinery/space_heater,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/awaymission/cabin)
@@ -1640,7 +1639,7 @@
},
/area/awaymission/cabin/caves/sovietcave)
"is" = (
-/obj/structure/closet/secure_closet/freezer/kitchen,
+/obj/structure/closet/secure_closet/freezer/fridge/open,
/obj/item/reagent_containers/condiment/enzyme,
/turf/open/floor/iron/freezer,
/area/awaymission/cabin)
diff --git a/_maps/RandomZLevels/blackmesa.dmm b/_maps/RandomZLevels/blackmesa.dmm
index a4484e7711d3f4..187a8793e96e8f 100644
--- a/_maps/RandomZLevels/blackmesa.dmm
+++ b/_maps/RandomZLevels/blackmesa.dmm
@@ -5090,9 +5090,6 @@
/turf/open/floor/iron/smooth,
/area/awaymission/black_mesa/entrance_internal_hall)
"cTO" = (
-/obj/machinery/power/emitter/energycannon{
- dir = 8
- },
/obj/machinery/power/emitter/energycannon{
dir = 8
},
@@ -6329,9 +6326,6 @@
/turf/open/floor/iron/smooth_large,
/area/awaymission/black_mesa/lambda_teleporter)
"fjj" = (
-/obj/machinery/power/emitter/energycannon{
- dir = 4
- },
/obj/machinery/power/emitter/energycannon{
dir = 4
},
diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm
index fa636a49184a81..c6eb6b38b64429 100644
--- a/_maps/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/RandomZLevels/moonoutpost19.dmm
@@ -290,6 +290,12 @@
},
/turf/open/floor/iron/white,
/area/awaymission/moonoutpost19/research)
+"ca" = (
+/mob/living/basic/construct/proteon/hostile,
+/turf/open/misc/asteroid/moon{
+ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
+ },
+/area/awaymission/moonoutpost19/mines)
"cb" = (
/obj/machinery/light/broken/directional/east,
/obj/machinery/airalarm/directional/east,
@@ -393,13 +399,6 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/awaymission/moonoutpost19/research)
-"cS" = (
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
-/obj/structure/flora/lunar_plant,
-/turf/open/misc/asteroid/moon{
- initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
- },
-/area/awaymission/moonoutpost19/mines)
"cT" = (
/obj/structure/cable,
/obj/effect/decal/cleanable/xenoblood,
@@ -433,12 +432,6 @@
temperature = 251
},
/area/awaymission/moonoutpost19/syndicate)
-"dr" = (
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
-/turf/open/misc/asteroid/moon{
- initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
- },
-/area/awaymission/moonoutpost19/mines)
"ds" = (
/obj/item/pizzabox{
pixel_x = 20;
@@ -2956,6 +2949,16 @@
},
/turf/open/floor/iron,
/area/awaymission/moonoutpost19/arrivals)
+"sM" = (
+/obj/effect/mapping_helpers/burnt_floor,
+/obj/item/flashlight/flare{
+ start_on = 1
+ },
+/turf/open/floor/iron{
+ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251";
+ temperature = 251
+ },
+/area/awaymission/moonoutpost19/syndicate)
"sO" = (
/obj/machinery/light/small/directional/west,
/obj/effect/turf_decal/lunar_sand,
@@ -3500,14 +3503,6 @@
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
},
/area/awaymission/moonoutpost19/mines)
-"wA" = (
-/obj/item/flashlight/flare{
- start_on = 1
- },
-/turf/open/misc/asteroid/moon{
- initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
- },
-/area/awaymission/moonoutpost19/mines)
"wD" = (
/obj/machinery/light/small/broken/directional/east,
/obj/effect/decal/cleanable/dirt,
@@ -4980,6 +4975,13 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/awaymission/moonoutpost19/arrivals)
+"GQ" = (
+/mob/living/basic/construct/proteon/hostile,
+/obj/structure/flora/lunar_plant,
+/turf/open/misc/asteroid/moon{
+ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
+ },
+/area/awaymission/moonoutpost19/mines)
"GR" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
/turf/open/floor/plating,
@@ -5450,16 +5452,6 @@
temperature = 251
},
/area/awaymission/moonoutpost19/syndicate)
-"JU" = (
-/obj/effect/mapping_helpers/burnt_floor,
-/obj/item/flashlight/flare{
- start_on = 1
- },
-/turf/open/floor/iron{
- initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251";
- temperature = 251
- },
-/area/awaymission/moonoutpost19/syndicate)
"JV" = (
/obj/structure/sink{
dir = 4;
@@ -6176,6 +6168,14 @@
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
},
/area/awaymission/moonoutpost19/mines)
+"Pf" = (
+/obj/item/flashlight/flare{
+ start_on = 1
+ },
+/turf/open/misc/asteroid/moon{
+ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
+ },
+/area/awaymission/moonoutpost19/mines)
"Ph" = (
/obj/effect/decal/cleanable/blood/tracks{
desc = "Your instincts say you shouldn't be following these.";
@@ -15631,7 +15631,7 @@ tb
tb
tb
tb
-dr
+ca
mo
mo
FB
@@ -16408,7 +16408,7 @@ eA
tb
tb
tb
-cS
+GQ
mo
mo
mo
@@ -16419,7 +16419,7 @@ mo
mo
mo
PP
-dr
+ca
tb
tb
sn
@@ -18718,7 +18718,7 @@ tb
tb
vE
mo
-dr
+ca
Qe
Qe
tb
@@ -18987,13 +18987,13 @@ tb
mo
Np
Zs
-dr
+ca
mo
rd
tb
tb
sn
-dr
+ca
tb
tb
tb
@@ -19989,7 +19989,7 @@ tb
mo
mo
mo
-dr
+ca
tb
tb
tb
@@ -20515,7 +20515,7 @@ tb
tb
Qe
tb
-dr
+ca
mo
mo
mo
@@ -20529,7 +20529,7 @@ eA
sn
tb
tb
-dr
+ca
eA
tb
tb
@@ -21784,7 +21784,7 @@ FB
tb
tb
eA
-dr
+ca
tb
tb
tb
@@ -22077,7 +22077,7 @@ tb
tb
tb
mo
-dr
+ca
tb
tb
tb
@@ -23321,7 +23321,7 @@ tb
tb
tb
tb
-dr
+ca
mo
tb
tb
@@ -23577,7 +23577,7 @@ zk
tb
tb
tb
-dr
+ca
mo
tb
tb
@@ -40252,7 +40252,7 @@ WZ
JQ
WZ
lj
-JU
+sM
WZ
WZ
Nr
@@ -56533,7 +56533,7 @@ tb
mo
mo
mo
-wA
+Pf
pS
tb
tb
diff --git a/_maps/RandomZLevels/mothership_astrum.dmm b/_maps/RandomZLevels/mothership_astrum.dmm
index dac0135a5a05ae..e42e33f49a7819 100644
--- a/_maps/RandomZLevels/mothership_astrum.dmm
+++ b/_maps/RandomZLevels/mothership_astrum.dmm
@@ -1164,7 +1164,7 @@
/turf/open/misc/beach/coast,
/area/awaymission/mothership_astrum/deck5)
"tz" = (
-/mob/living/simple_animal/hostile/pirate/ranged{
+/mob/living/basic/trooper/pirate/ranged{
faction = list("Abductor")
},
/turf/open/misc/beach/sand,
@@ -1777,7 +1777,7 @@
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"CU" = (
-/mob/living/simple_animal/hostile/pirate/melee{
+/mob/living/basic/trooper/pirate/melee{
faction = list("Abductor");
loot = list(/obj/effect/mob_spawn/corpse/human/pirate)
},
@@ -1844,7 +1844,7 @@
/turf/open/floor/plating/abductor,
/area/awaymission/mothership_astrum/halls)
"DE" = (
-/mob/living/simple_animal/hostile/pirate/ranged{
+/mob/living/basic/trooper/pirate/ranged{
faction = list("Abductor")
},
/turf/open/floor/wood,
@@ -2305,10 +2305,10 @@
},
/area/awaymission/mothership_astrum/deck1)
"IO" = (
-/mob/living/simple_animal/hostile/pirate/ranged{
+/mob/living/basic/trooper/pirate/ranged{
faction = list("Abductor")
},
-/mob/living/simple_animal/hostile/pirate/ranged{
+/mob/living/basic/trooper/pirate/ranged{
faction = list("Abductor");
health = 200
},
diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm
index 4371f4f2489257..e6af579a236c81 100644
--- a/_maps/map_files/Birdshot/birdshot.dmm
+++ b/_maps/map_files/Birdshot/birdshot.dmm
@@ -85,14 +85,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/engineering/atmos/project)
-"acO" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/effect/spawner/random/maintenance,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/security/tram)
"acS" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -528,6 +520,10 @@
/obj/item/clothing/mask/gas/owl_mask,
/turf/open/floor/wood,
/area/station/maintenance/fore/greater)
+"akF" = (
+/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod,
+/turf/closed/wall,
+/area/station/maintenance/port/aft)
"akR" = (
/obj/effect/turf_decal/tile/dark_red/half/contrasted{
dir = 1
@@ -1093,6 +1089,12 @@
/obj/machinery/airalarm/directional/west,
/turf/open/floor/iron/dark,
/area/station/medical/pharmacy)
+"awe" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"awi" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/chair/plastic{
@@ -1195,11 +1197,6 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/fore)
-"ays" = (
-/obj/effect/turf_decal/stripes/white/line,
-/obj/structure/frame/machine,
-/turf/open/floor/tram,
-/area/station/security/tram)
"ayu" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 8
@@ -1321,6 +1318,15 @@
},
/turf/open/floor/iron/dark,
/area/station/science/xenobiology)
+"aAV" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/structure/frame/computer{
+ dir = 1
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"aBs" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -1412,6 +1418,10 @@
},
/turf/closed/wall,
/area/station/hallway/primary/central/fore)
+"aCR" = (
+/obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/maint_right,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"aCZ" = (
/obj/effect/turf_decal/sand/plating,
/obj/structure/rack,
@@ -1426,6 +1436,10 @@
},
/turf/open/floor/plating/airless,
/area/station/science/ordnance/bomb)
+"aEa" = (
+/obj/effect/turf_decal/stripes/white/line,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"aEc" = (
/obj/structure/disposalpipe/trunk{
dir = 1
@@ -1769,6 +1783,17 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/station/construction/mining/aux_base)
+"aLv" = (
+/obj/structure/transport/linear/tram,
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/obj/structure/fluff/tram_rail/floor{
+ dir = 1
+ },
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"aLA" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
@@ -1919,6 +1944,12 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/smooth,
/area/station/engineering/supermatter/room)
+"aOX" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 6
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"aOZ" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/pickaxe,
@@ -1936,13 +1967,6 @@
"aPb" = (
/turf/open/floor/plating/rust,
/area/station/engineering/atmos/project)
-"aPe" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/thermoplastic,
-/obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/sec_wing,
-/obj/effect/landmark/transport/nav_beacon/tram/nav/birdshot/prison,
-/turf/open/floor/tram,
-/area/station/security/tram)
"aPh" = (
/obj/structure/window/reinforced/plasma/spawner/directional/north,
/obj/effect/turf_decal/stripes/white/line{
@@ -2462,12 +2486,15 @@
dir = 8
},
/area/station/command/corporate_showroom)
-"aYO" = (
+"aYv" = (
+/obj/structure/transport/linear/tram,
/obj/effect/turf_decal/stripes/white/line{
- dir = 1
+ dir = 8
},
+/obj/structure/fluff/tram_rail/floor,
+/obj/structure/tram,
/turf/open/floor/tram,
-/area/station/security/tram)
+/area/station/maintenance/port/aft)
"aYR" = (
/obj/structure/broken_flooring/singular/directional/east,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -2973,6 +3000,9 @@
/obj/effect/spawner/random/maintenance,
/turf/open/floor/plating/rust,
/area/station/maintenance/fore/greater)
+"bjZ" = (
+/turf/open/floor/tram,
+/area/station/security/tram)
"bka" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -3152,6 +3182,13 @@
/obj/item/wrench,
/turf/open/floor/plating,
/area/station/engineering/supermatter/room)
+"bmT" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/obj/effect/spawner/random/maintenance,
+/turf/open/floor/tram,
+/area/station/security/tram)
"bnc" = (
/obj/structure/table/reinforced/titaniumglass,
/obj/item/pipe_dispenser,
@@ -3215,6 +3252,13 @@
/obj/structure/cable,
/turf/open/floor/iron/showroomfloor,
/area/station/medical/surgery/theatre)
+"boI" = (
+/obj/machinery/mecha_part_fabricator/maint{
+ name = "forgotten exosuit fabricator"
+ },
+/obj/machinery/light/small/broken/directional/west,
+/turf/open/floor/plating,
+/area/station/maintenance/port/aft)
"boK" = (
/obj/effect/turf_decal/stripes/asteroid/end{
dir = 1
@@ -3361,11 +3405,33 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark,
/area/station/security/prison/workout)
+"bro" = (
+/obj/structure/frame/machine,
+/turf/open/floor/tram,
+/area/station/security/tram)
"brw" = (
/obj/effect/decal/cleanable/glass,
/obj/structure/grille,
/turf/open/floor/plating,
/area/station/hallway/primary/port)
+"bry" = (
+/obj/structure/table,
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = -2;
+ pixel_y = 8
+ },
+/obj/machinery/requests_console/directional/west{
+ department = "Ordnance Test Range";
+ name = "Test Range Requests Console"
+ },
+/obj/effect/mapping_helpers/requests_console/information,
+/obj/effect/mapping_helpers/requests_console/assistance,
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = 3;
+ pixel_y = -2
+ },
+/turf/open/floor/iron,
+/area/station/science/ordnance/testlab)
"brz" = (
/obj/effect/turf_decal/sand/plating,
/obj/effect/decal/cleanable/dirt,
@@ -4218,12 +4284,6 @@
/obj/machinery/telecomms/server/presets/science,
/turf/open/floor/circuit,
/area/station/tcommsat/server)
-"bFG" = (
-/obj/effect/turf_decal/stripes/white/line,
-/obj/item/stack/sheet/mineral/titanium,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"bFM" = (
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -4699,13 +4759,6 @@
/obj/machinery/computer/records/security,
/turf/open/floor/wood/tile,
/area/station/command/bridge)
-"bQz" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/tram,
-/area/station/security/tram)
"bQU" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -4762,6 +4815,13 @@
/obj/effect/spawner/random/structure/grille,
/turf/open/floor/plating,
/area/station/maintenance/department/engine)
+"bRN" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/white/line,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"bSj" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/rack,
@@ -4857,12 +4917,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating/rust,
/area/station/maintenance/department/engine)
-"bUo" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 9
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"bUr" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/tile/blue{
@@ -4935,6 +4989,13 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/department/engine)
+"bUO" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/obj/machinery/light/cold/directional/west,
+/turf/open/floor/tram,
+/area/station/security/tram)
"bUX" = (
/obj/effect/turf_decal/tile/yellow,
/turf/open/floor/iron/dark,
@@ -5191,14 +5252,6 @@
/obj/effect/turf_decal/box/red,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/ai)
-"caE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/button/transport/tram/directional/south{
- specific_transport_id = "bird_2";
- id = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/port/aft)
"caI" = (
/obj/structure/cable,
/obj/effect/decal/cleanable/glass,
@@ -5852,15 +5905,12 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
-/turf/open/floor/iron/smooth,
-/area/station/engineering/supermatter)
-"coH" = (
-/obj/machinery/mecha_part_fabricator/maint{
- name = "forgotten exosuit fabricator"
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "engine"
},
-/obj/machinery/light/small/broken/directional/west,
-/turf/open/floor/plating,
-/area/station/maintenance/port/aft)
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/iron/smooth,
+/area/station/engineering/supermatter/room)
"coJ" = (
/obj/structure/chair/stool/directional/east,
/obj/effect/decal/cleanable/dirt,
@@ -6027,13 +6077,6 @@
},
/turf/open/floor/engine,
/area/station/maintenance/disposal/incinerator)
-"crr" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 6
- },
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"crE" = (
/obj/structure/window/spawner/directional/north,
/turf/open/space/basic,
@@ -6057,6 +6100,14 @@
/obj/structure/flora/bush/flowers_pp/style_random,
/turf/open/floor/grass,
/area/station/service/hydroponics/garden/monastery)
+"css" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 10
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"csw" = (
/obj/structure/window/reinforced/spawner/directional/south,
/obj/effect/turf_decal/stripes/end,
@@ -6144,13 +6195,6 @@
/obj/machinery/light/cold/directional/north,
/turf/open/floor/iron,
/area/station/security/prison/rec)
-"cuG" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"cuS" = (
/obj/effect/mapping_helpers/broken_floor,
/obj/effect/decal/cleanable/dirt,
@@ -6213,17 +6257,6 @@
},
/turf/open/floor/iron/dark,
/area/station/science/ordnance/testlab)
-"cwd" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/obj/machinery/computer/tram_controls{
- specific_transport_id = "bird_2"
- },
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"cwf" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -6642,6 +6675,12 @@
},
/turf/open/space/basic,
/area/space/nearstation)
+"cDt" = (
+/obj/structure/chair/comfy/shuttle,
+/obj/structure/transport/linear/tram,
+/obj/structure/thermoplastic,
+/turf/open/floor/tram,
+/area/station/security/tram)
"cDy" = (
/obj/structure/cable,
/turf/open/floor/iron/white/side{
@@ -6949,14 +6988,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/department/engine)
-"cID" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/thermoplastic,
-/turf/open/floor/tram,
-/area/station/security/tram)
"cIE" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -6979,13 +7010,6 @@
/obj/structure/chair/stool/directional/east,
/turf/open/floor/iron/small,
/area/station/maintenance/department/engine)
-"cJu" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/tram,
-/area/station/security/tram)
"cJz" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -7404,6 +7428,12 @@
/obj/item/vending_refill/hydroseeds,
/turf/open/floor/plating,
/area/station/maintenance/starboard/aft)
+"cRW" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 9
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"cSk" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/structure/closet/l3closet,
@@ -7462,12 +7492,6 @@
"cSC" = (
/turf/closed/wall,
/area/station/commons/vacant_room/office)
-"cSD" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/fluff/tram_rail/floor,
-/obj/structure/thermoplastic/light,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"cSR" = (
/obj/structure/chair{
dir = 1
@@ -7808,14 +7832,30 @@
/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
/turf/open/floor/catwalk_floor/iron_smooth,
/area/station/maintenance/port/aft)
+"cZA" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod,
+/turf/open/floor/iron,
+/area/station/security/prison/garden)
+"cZC" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/thermoplastic,
+/turf/open/floor/tram,
+/area/station/security/tram)
"cZL" = (
/obj/item/reagent_containers/cup/bucket,
/obj/item/mop,
/obj/structure/sink/kitchen/directional/east,
/obj/machinery/airalarm/directional/south,
/obj/machinery/button/door/directional/west{
- pixel_y = 8;
- id = "custodialshutters"
+ id = "custodialshutters";
+ pixel_y = 8
},
/turf/open/floor/iron/white/small,
/area/station/service/janitor)
@@ -7886,12 +7926,6 @@
"dbF" = (
/turf/open/floor/plating/rust,
/area/station/ai_monitored/turret_protected/aisat/maint)
-"dbO" = (
-/obj/effect/turf_decal/stripes/white/line,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"dbR" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -8004,6 +8038,12 @@
},
/turf/open/floor/iron/dark,
/area/station/medical/pharmacy)
+"ddq" = (
+/obj/effect/turf_decal/stripes/white/line,
+/obj/effect/spawner/random/maintenance,
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"ddy" = (
/obj/effect/spawner/structure/window,
/turf/open/floor/plating,
@@ -8197,10 +8237,6 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/maintenance/department/engine)
-"dhX" = (
-/obj/item/stack/sheet/mineral/titanium,
-/turf/open/floor/tram,
-/area/station/security/tram)
"dim" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -8463,6 +8499,15 @@
/obj/structure/tank_holder/extinguisher/advanced,
/turf/open/floor/iron,
/area/station/engineering/atmos)
+"dlx" = (
+/obj/structure/flora/bush/flowers_br/style_random,
+/obj/structure/flora/rock/pile/style_random,
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/effect/turf_decal/siding/wideplating{
+ dir = 4
+ },
+/turf/open/misc/sandy_dirt,
+/area/station/security/tram)
"dlz" = (
/obj/machinery/light/small/directional/east,
/obj/structure/closet/secure_closet/medical3,
@@ -8502,6 +8547,11 @@
},
/turf/open/floor/plating,
/area/station/maintenance/disposal/incinerator)
+"dmG" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"dmT" = (
/obj/machinery/camera/directional/north{
c_tag = "Xenobiology - Cell 2";
@@ -8692,6 +8742,12 @@
/obj/structure/firelock_frame,
/turf/open/floor/iron/dark,
/area/station/maintenance/department/engine/atmos)
+"dpR" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"dqj" = (
/obj/effect/turf_decal/stripes/red/line,
/obj/effect/turf_decal/stripes/red/line{
@@ -8782,6 +8838,14 @@
/obj/effect/spawner/structure/window,
/turf/open/floor/plating,
/area/station/security/lockers)
+"dsU" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 6
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"dtj" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -9070,14 +9134,6 @@
/obj/machinery/portable_atmospherics/canister,
/turf/open/floor/plating,
/area/station/engineering/atmos/storage/gas)
-"dyn" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"dyp" = (
/obj/effect/turf_decal/sand/plating,
/obj/effect/decal/cleanable/dirt,
@@ -9308,14 +9364,6 @@
/obj/machinery/light/small/directional/east,
/turf/open/floor/carpet/royalblack,
/area/station/commons/dorms)
-"dBF" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 9
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"dBH" = (
/turf/open/floor/iron/white/corner{
dir = 1
@@ -9370,6 +9418,14 @@
dir = 1
},
/area/station/service/library)
+"dCs" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 9
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"dCH" = (
/obj/structure/table,
/obj/item/storage/box/lights/mixed{
@@ -9472,6 +9528,12 @@
/obj/machinery/vending/cigarette,
/turf/open/floor/iron/kitchen/small,
/area/station/security/breakroom)
+"dEF" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 5
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"dER" = (
/obj/machinery/power/emitter,
/obj/effect/turf_decal/stripes/white/line{
@@ -9535,6 +9597,12 @@
},
/turf/open/floor/iron/dark,
/area/station/medical/chemistry)
+"dHn" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 10
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"dHC" = (
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
@@ -9671,6 +9739,11 @@
/obj/effect/turf_decal/tile/yellow/opposingcorners,
/turf/open/floor/iron,
/area/station/maintenance/department/engine/atmos)
+"dJz" = (
+/obj/structure/chair/stool/directional/west,
+/mob/living/basic/trooper/russian/ranged/lootless,
+/turf/open/floor/carpet/orange,
+/area/station/service/abandoned_gambling_den)
"dJN" = (
/obj/machinery/griddle,
/turf/open/floor/plating,
@@ -9762,13 +9835,6 @@
dir = 1
},
/area/station/maintenance/disposal/incinerator)
-"dLd" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 10
- },
-/obj/item/stack/sheet/mineral/titanium,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"dLf" = (
/obj/effect/turf_decal/tile/yellow/opposingcorners,
/obj/structure/table/reinforced/titaniumglass,
@@ -10158,6 +10224,14 @@
/obj/machinery/meter,
/turf/open/floor/plating,
/area/station/engineering/atmos)
+"dSV" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 5
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"dTa" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -10652,6 +10726,13 @@
},
/turf/open/floor/iron/small,
/area/station/security/prison/shower)
+"dZT" = (
+/obj/machinery/button/transport/tram/directional/south{
+ id = 2;
+ specific_transport_id = "bird_2"
+ },
+/turf/open/floor/iron,
+/area/station/maintenance/department/medical/central)
"dZZ" = (
/obj/structure/cable/layer3,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
@@ -10852,10 +10933,6 @@
/obj/machinery/status_display/ai/directional/north,
/turf/open/floor/iron/smooth,
/area/station/ai_monitored/turret_protected/aisat_interior)
-"edW" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"eeb" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -12288,6 +12365,13 @@
/obj/machinery/status_display/evac/directional/east,
/turf/open/floor/circuit/red,
/area/station/ai_monitored/turret_protected/ai)
+"eDt" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/security/tram)
"eDy" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -12357,11 +12441,6 @@
/obj/item/stamp/head/hos,
/turf/open/floor/carpet/red,
/area/station/command/heads_quarters/hos)
-"eEl" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/thermoplastic/light,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"eEq" = (
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/stripes/corner,
@@ -12383,10 +12462,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/smooth,
/area/station/ai_monitored/turret_protected/aisat/equipment)
-"eFi" = (
-/obj/structure/frame/machine,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"eFk" = (
/obj/structure/cable/layer3,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -13039,6 +13114,11 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark,
/area/station/engineering/atmos)
+"eQC" = (
+/obj/effect/spawner/random/maintenance,
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/security/tram)
"eQJ" = (
/obj/structure/cable,
/turf/open/floor/iron/stairs{
@@ -13193,14 +13273,6 @@
/obj/effect/landmark/start/roboticist,
/turf/open/floor/iron/grimy,
/area/station/science/cubicle)
-"eTq" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"eTr" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -13319,14 +13391,6 @@
/obj/machinery/light/warm/directional/east,
/turf/open/floor/catwalk_floor/iron_smooth,
/area/station/maintenance/port/aft)
-"eVe" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 6
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"eVu" = (
/obj/effect/mapping_helpers/broken_floor,
/obj/structure/chair/sofa/bench{
@@ -13515,9 +13579,6 @@
/obj/machinery/portable_atmospherics/pump,
/turf/open/floor/iron/dark,
/area/station/engineering/atmos)
-"fay" = (
-/turf/open/floor/tram,
-/area/station/security/tram)
"faB" = (
/obj/structure/table/wood,
/obj/item/book/bible,
@@ -13627,15 +13688,6 @@
},
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/rd)
-"fbX" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/fluff/tram_rail/end{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/port/aft)
"fca" = (
/obj/structure/flora/bush/lavendergrass/style_random,
/obj/structure/flora/bush/flowers_br/style_random,
@@ -14222,15 +14274,6 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/fore)
-"fos" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/fluff/tram_rail/end{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/port/aft)
"fov" = (
/obj/effect/turf_decal/tile/dark_red/opposingcorners,
/obj/machinery/vending/security,
@@ -14350,15 +14393,6 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/central/fore)
-"fqT" = (
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 8
- },
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"frf" = (
/obj/structure/table/glass,
/obj/item/defibrillator/loaded{
@@ -14402,13 +14436,6 @@
/obj/machinery/door/firedoor,
/turf/open/floor/catwalk_floor/iron_smooth,
/area/station/command/heads_quarters/ce)
-"frB" = (
-/obj/machinery/button/transport/tram/directional/south{
- specific_transport_id = "bird_2";
- id = 2
- },
-/turf/open/floor/iron,
-/area/station/maintenance/department/medical/central)
"frI" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/tile/neutral{
@@ -14604,12 +14631,6 @@
/obj/machinery/light/small/directional/south,
/turf/open/floor/stone,
/area/station/command/heads_quarters/hos)
-"fuk" = (
-/obj/effect/turf_decal/stripes/white/line,
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"fun" = (
/obj/structure/cable/layer3,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -14839,10 +14860,6 @@
/obj/machinery/coffeemaker{
pixel_y = 12
},
-/obj/item/reagent_containers/cup/coffeepot{
- pixel_x = 3;
- pixel_y = -5
- },
/turf/open/floor/iron/kitchen/small,
/area/station/security/breakroom)
"fyr" = (
@@ -16165,6 +16182,12 @@
/obj/effect/mapping_helpers/airlock/access/all/command/minisat,
/turf/open/floor/catwalk_floor/iron_smooth,
/area/station/ai_monitored/turret_protected/aisat_interior)
+"fTd" = (
+/obj/structure/transport/linear/tram,
+/obj/effect/landmark/transport/transport_id/birdshot/line_1,
+/obj/structure/thermoplastic,
+/turf/open/floor/tram,
+/area/station/security/tram)
"fTe" = (
/turf/closed/wall/r_wall,
/area/station/ai_monitored/turret_protected/aisat_interior)
@@ -16324,12 +16347,6 @@
/obj/machinery/camera/directional/east,
/turf/open/floor/iron,
/area/station/service/hydroponics)
-"fWh" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"fWr" = (
/obj/structure/closet/crate,
/obj/structure/barricade/wooden/crude,
@@ -16403,6 +16420,14 @@
},
/turf/open/floor/iron/smooth,
/area/station/ai_monitored/turret_protected/aisat/foyer)
+"fXD" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"fXJ" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment,
@@ -16750,8 +16775,12 @@
/obj/machinery/atmospherics/pipe/smart/simple/purple/visible,
/obj/machinery/airalarm/directional/east,
/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnancefreezer"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
/turf/open/floor/iron/dark,
-/area/station/science/ordnance/freezerchamber)
+/area/station/science/ordnance)
"gfE" = (
/obj/effect/turf_decal/siding/red{
dir = 8
@@ -16785,6 +16814,13 @@
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/plating/airless,
/area/space/nearstation)
+"ggh" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/security/tram)
"ggi" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -17002,12 +17038,6 @@
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
-"gjr" = (
-/obj/effect/turf_decal/stripes/white/line,
-/obj/effect/spawner/random/structure/girder,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"gjL" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
@@ -17032,6 +17062,15 @@
},
/turf/open/floor/engine/vacuum,
/area/station/engineering/atmos)
+"gkq" = (
+/obj/structure/transport/linear/tram,
+/obj/effect/turf_decal/stripes/white/corner,
+/obj/effect/turf_decal/stripes/white/corner{
+ dir = 4
+ },
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"gkw" = (
/obj/structure/cable,
/obj/machinery/light_switch/directional/west,
@@ -17062,12 +17101,6 @@
/obj/machinery/power/apc/auto_name/directional/west,
/turf/open/floor/iron,
/area/station/hallway/primary/fore)
-"gkO" = (
-/obj/structure/rack,
-/obj/structure/transport/linear/tram,
-/obj/structure/thermoplastic,
-/turf/open/floor/tram,
-/area/station/security/tram)
"glb" = (
/obj/structure/cable,
/obj/effect/turf_decal/tile/brown/full,
@@ -17238,6 +17271,15 @@
/obj/machinery/keycard_auth/directional/south,
/turf/open/floor/iron,
/area/station/command/heads_quarters/ce)
+"gow" = (
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
+"goB" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 6
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"goE" = (
/obj/structure/disposalpipe/trunk{
dir = 4
@@ -17621,12 +17663,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer1,
/turf/open/floor/iron/dark,
/area/station/engineering/atmos)
-"gwh" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"gwo" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{
@@ -18176,6 +18212,14 @@
/obj/machinery/camera/directional/north,
/turf/open/floor/iron,
/area/station/hallway/secondary/dock)
+"gFZ" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 6
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"gGc" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -18896,6 +18940,17 @@
/obj/effect/gibspawner/human,
/turf/open/floor/plating,
/area/station/maintenance/starboard/greater)
+"gSs" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 10
+ },
+/obj/item/stack/sheet/mineral/titanium,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
+"gSz" = (
+/obj/item/stack/sheet/mineral/titanium,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"gSD" = (
/obj/machinery/mass_driver/chapelgun{
dir = 8
@@ -18957,20 +19012,6 @@
},
/turf/open/floor/carpet/executive,
/area/station/command/meeting_room)
-"gTk" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/thermoplastic/light,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
-"gTC" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 6
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"gTH" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -19208,14 +19249,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
-"gXd" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 9
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"gXf" = (
/obj/effect/turf_decal/sand/plating,
/obj/effect/decal/cleanable/dirt,
@@ -19735,6 +19768,34 @@
dir = 1
},
/area/station/command/gateway)
+"heT" = (
+/obj/structure/table,
+/obj/machinery/airalarm/directional/west,
+/obj/item/pipe_dispenser{
+ pixel_x = 3;
+ pixel_y = -1
+ },
+/obj/item/assembly/timer{
+ pixel_x = -3;
+ pixel_y = 13
+ },
+/obj/item/transfer_valve{
+ pixel_x = 10;
+ pixel_y = 21
+ },
+/obj/item/transfer_valve{
+ pixel_x = 7;
+ pixel_y = 19
+ },
+/obj/item/transfer_valve{
+ pixel_x = 4;
+ pixel_y = 17
+ },
+/obj/item/pipe_dispenser{
+ pixel_y = 4
+ },
+/turf/open/floor/iron,
+/area/station/science/ordnance/testlab)
"hfc" = (
/obj/structure/rack,
/obj/effect/spawner/random/maintenance/three,
@@ -19957,8 +20018,8 @@
pixel_y = 11
},
/obj/item/mod/module/signlang_radio{
- pixel_y = 2;
- pixel_x = -2
+ pixel_x = -2;
+ pixel_y = 2
},
/turf/open/floor/iron/small,
/area/station/security/office)
@@ -20152,6 +20213,14 @@
/obj/structure/sign/poster/official/random/directional/west,
/turf/open/floor/iron/smooth,
/area/station/commons/storage/tools)
+"hmf" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/obj/effect/spawner/random/maintenance,
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/security/tram)
"hmg" = (
/obj/structure/disposalpipe/segment{
dir = 9
@@ -20189,10 +20258,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/white/small,
/area/station/science/ordnance/storage)
-"hmB" = (
-/obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/maint_right,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"hmQ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/table,
@@ -20936,12 +21001,6 @@
"hzm" = (
/turf/closed/wall/rust,
/area/station/cargo/miningoffice)
-"hzI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
"hzK" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
@@ -21776,6 +21835,11 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
+"hPq" = (
+/obj/effect/turf_decal/siding/wood,
+/mob/living/basic/trooper/russian/ranged/lootless,
+/turf/open/floor/wood,
+/area/station/service/abandoned_gambling_den)
"hPs" = (
/obj/effect/turf_decal/stripes/line,
/obj/machinery/airalarm/directional/south,
@@ -21972,15 +22036,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/showroomfloor,
/area/station/commons/toilet/restrooms)
-"hUT" = (
-/obj/structure/flora/bush/flowers_br/style_random,
-/obj/structure/flora/rock/pile/style_random,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/siding/wideplating{
- dir = 4
- },
-/turf/open/misc/sandy_dirt,
-/area/station/security/tram)
"hVb" = (
/obj/machinery/plate_press,
/obj/effect/turf_decal/stripes/line,
@@ -22189,12 +22244,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/engine,
/area/station/engineering/gravity_generator)
-"hYz" = (
-/obj/structure/transport/linear/tram,
-/obj/machinery/transport/tram_controller,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"hYC" = (
/turf/closed/wall,
/area/station/engineering/atmos)
@@ -22336,17 +22385,6 @@
/obj/machinery/holopad,
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/rd)
-"iaZ" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/thermoplastic/light,
-/obj/machinery/door/airlock/tram{
- transport_linked_id = "bird_2"
- },
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"ibe" = (
/obj/effect/turf_decal/bot_white,
/obj/structure/closet/crate/freezer,
@@ -22643,6 +22681,13 @@
},
/turf/open/floor/plating,
/area/station/maintenance/fore/lesser)
+"igD" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"ihc" = (
/obj/structure/cable,
/obj/machinery/door/airlock/command/glass{
@@ -23065,10 +23110,6 @@
},
/turf/open/floor/iron/dark/smooth_large,
/area/station/command/meeting_room)
-"ipn" = (
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/tram,
-/area/station/security/tram)
"ips" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -23244,18 +23285,6 @@
/obj/effect/turf_decal/tile/blue/opposingcorners,
/turf/open/floor/iron/dark/textured,
/area/station/command/heads_quarters/hop)
-"isf" = (
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 4
- },
-/obj/structure/transport/linear/tram,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/fluff/tram_rail/floor,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"isi" = (
/obj/structure/table,
/obj/effect/turf_decal/siding/thinplating_new{
@@ -23309,11 +23338,6 @@
dir = 1
},
/area/station/command/gateway)
-"isW" = (
-/obj/effect/turf_decal/siding/wood,
-/mob/living/basic/trooper/russian/ranged/lootless,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
"isY" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment,
@@ -23324,14 +23348,6 @@
"itb" = (
/turf/closed/wall/r_wall/rust,
/area/station/ai_monitored/turret_protected/aisat/maint)
-"itv" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/chair{
- dir = 1
- },
-/obj/structure/thermoplastic,
-/turf/open/floor/tram,
-/area/station/security/tram)
"itw" = (
/obj/structure/disposalpipe/segment{
dir = 9
@@ -23416,14 +23432,6 @@
/obj/machinery/power/apc/worn_out/directional/east,
/turf/open/floor/plating,
/area/station/maintenance/hallway/abandoned_command)
-"ius" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"iut" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -23658,11 +23666,6 @@
},
/turf/open/floor/plating,
/area/station/security/brig/entrance)
-"iyk" = (
-/obj/effect/spawner/random/maintenance,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/security/tram)
"iyq" = (
/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{
dir = 9
@@ -23807,13 +23810,6 @@
/obj/structure/cable,
/turf/open/floor/wood/tile,
/area/station/maintenance/port/lesser)
-"iBV" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"iBZ" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -24273,11 +24269,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/white/small,
/area/station/security/warden)
-"iLk" = (
-/obj/structure/chair/stool/directional/west,
-/mob/living/basic/trooper/russian/ranged/lootless,
-/turf/open/floor/carpet/orange,
-/area/station/service/abandoned_gambling_den)
"iLp" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -24443,6 +24434,13 @@
/obj/effect/mapping_helpers/airlock/abandoned,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
+"iNO" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 6
+ },
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/security/tram)
"iNV" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 4
@@ -24607,12 +24605,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark/small,
/area/station/service/chapel/storage)
-"iRp" = (
-/obj/structure/transport/linear/tram,
-/obj/effect/landmark/transport/transport_id/birdshot/line_1,
-/obj/structure/thermoplastic,
-/turf/open/floor/tram,
-/area/station/security/tram)
"iRv" = (
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
@@ -24812,6 +24804,19 @@
/obj/machinery/airalarm/directional/north,
/turf/open/floor/iron,
/area/station/cargo/storage)
+"iVq" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 10
+ },
+/obj/item/stack/sheet/mineral/titanium,
+/turf/open/floor/tram,
+/area/station/security/tram)
+"iVu" = (
+/obj/structure/transport/linear/tram,
+/obj/machinery/transport/tram_controller,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"iVx" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -25234,6 +25239,12 @@
},
/turf/open/floor/wood/parquet,
/area/station/command/heads_quarters/cmo)
+"jbt" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"jbV" = (
/obj/machinery/photocopier,
/turf/open/floor/iron/dark,
@@ -25418,13 +25429,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/fore/greater)
-"jfX" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 6
- },
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/security/tram)
"jfZ" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -26188,13 +26192,11 @@
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/plating,
/area/station/maintenance/starboard/aft)
-"jwC" = (
-/obj/structure/transport/linear/tram,
-/obj/effect/landmark/transport/nav_beacon/tram/nav/birdshot/maint,
-/obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/maint_left,
-/obj/structure/thermoplastic/light,
+"jwZ" = (
+/obj/effect/turf_decal/stripes/white/line,
+/obj/structure/frame/machine,
/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
+/area/station/security/tram)
"jxd" = (
/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2{
dir = 9
@@ -26389,6 +26391,17 @@
},
/turf/open/floor/iron/kitchen/small,
/area/station/hallway/secondary/service)
+"jzg" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/thermoplastic/light,
+/obj/machinery/door/airlock/tram{
+ transport_linked_id = "bird_2"
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"jzo" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -26719,13 +26732,6 @@
},
/turf/open/floor/iron,
/area/station/cargo/office)
-"jEX" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/machinery/light/cold/directional/west,
-/turf/open/floor/tram,
-/area/station/security/tram)
"jEZ" = (
/obj/structure/hedge,
/obj/effect/decal/cleanable/dirt,
@@ -26917,6 +26923,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/cargo/sorting)
+"jHI" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 5
+ },
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/security/tram)
"jHU" = (
/obj/structure/chair/sofa/bench/left{
dir = 8
@@ -27622,14 +27635,6 @@
/obj/item/instrument/harmonica,
/turf/open/floor/iron,
/area/station/security/prison/rec)
-"jUN" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/obj/machinery/computer/tram_controls{
- specific_transport_id = "bird_1"
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"jVe" = (
/obj/structure/cable,
/turf/open/floor/iron/smooth,
@@ -27652,17 +27657,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/hallway/secondary/recreation)
-"jVX" = (
-/obj/structure/transport/linear/tram,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/structure/fluff/tram_rail/floor{
- dir = 1
- },
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"jWd" = (
/obj/structure/cable,
/obj/item/kirbyplants/random/fullysynthetic,
@@ -27824,12 +27818,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/starboard/greater)
-"jYd" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"jYr" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/machinery/mecha_part_fabricator{
@@ -28020,6 +28008,14 @@
/obj/structure/broken_flooring/corner/directional/south,
/turf/open/floor/plating,
/area/station/maintenance/hallway/abandoned_recreation)
+"kbc" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/thermoplastic/light,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"kbE" = (
/obj/effect/decal/cleanable/blood/gibs/body,
/obj/machinery/light/small/broken/directional/north,
@@ -28143,13 +28139,6 @@
},
/turf/open/floor/iron,
/area/station/cargo/storage)
-"kef" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/security/tram)
"kel" = (
/obj/machinery/light/cold/directional/south,
/obj/machinery/modular_computer/preset/id{
@@ -28157,6 +28146,15 @@
},
/turf/open/floor/wood/parquet,
/area/station/command/heads_quarters/cmo)
+"keq" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/fluff/tram_rail/end{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/station/maintenance/port/aft)
"ket" = (
/turf/open/floor/iron,
/area/station/security/prison/work)
@@ -28273,6 +28271,18 @@
/obj/machinery/newscaster/directional/east,
/turf/open/floor/wood,
/area/station/service/chapel/funeral)
+"khl" = (
+/obj/effect/turf_decal/stripes/white/line,
+/turf/open/floor/tram,
+/area/station/security/tram)
+"khp" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 9
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"khD" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/reagent_dispensers/watertank,
@@ -28305,6 +28315,12 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/security/execution/transfer)
+"khQ" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/fluff/tram_rail/floor,
+/obj/structure/thermoplastic,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"khS" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -28390,20 +28406,6 @@
/obj/effect/spawner/random/structure/grille,
/turf/open/floor/plating,
/area/station/maintenance/fore/lesser)
-"kjn" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/structure/holosign/barrier/atmos/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"kjw" = (
/obj/effect/turf_decal/tile/blue,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -28555,6 +28557,11 @@
/obj/machinery/light/small/directional/east,
/turf/open/floor/carpet/orange,
/area/station/service/abandoned_gambling_den)
+"klY" = (
+/obj/effect/turf_decal/stripes/white/line,
+/obj/effect/spawner/random/maintenance,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"kmb" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -28614,6 +28621,12 @@
},
/turf/open/floor/plating,
/area/station/cargo/storage)
+"kms" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/firealarm/directional/east,
+/turf/open/floor/iron,
+/area/station/hallway/secondary/entry)
"kmC" = (
/obj/structure/cable,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -28840,12 +28853,6 @@
"kqX" = (
/turf/closed/wall,
/area/station/ai_monitored/aisat/exterior)
-"kqZ" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"krc" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -28943,6 +28950,13 @@
/obj/machinery/camera/autoname/directional/north,
/turf/open/floor/iron,
/area/station/hallway/secondary/spacebridge)
+"ksv" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"ksx" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -28981,13 +28995,6 @@
},
/turf/open/floor/catwalk_floor/iron,
/area/station/engineering/gravity_generator)
-"ksL" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/obj/item/stack/sheet/mineral/titanium,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"ksN" = (
/obj/structure/transit_tube/station/dispenser,
/obj/effect/decal/cleanable/dirt,
@@ -29100,11 +29107,6 @@
/obj/effect/turf_decal/trimline/neutral/line,
/turf/open/floor/iron,
/area/station/hallway/primary/central/fore)
-"kvb" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/thermoplastic,
-/turf/open/floor/tram,
-/area/station/security/tram)
"kvf" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
@@ -29236,10 +29238,6 @@
/obj/structure/window/spawner/directional/east,
/turf/open/floor/plating/rust,
/area/station/maintenance/fore/lesser)
-"kye" = (
-/obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/prison_wing,
-/turf/open/floor/tram,
-/area/station/security/tram)
"kyr" = (
/obj/structure/window/reinforced/spawner/directional/south,
/obj/machinery/airalarm/directional/west,
@@ -29276,13 +29274,6 @@
/obj/effect/turf_decal/trimline/neutral/line,
/turf/open/floor/iron,
/area/station/hallway/primary/central/fore)
-"kyS" = (
-/obj/effect/turf_decal/stripes/white/corner,
-/obj/effect/turf_decal/stripes/white/line,
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"kyT" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/event_spawn,
@@ -29933,13 +29924,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark/side,
/area/station/science/xenobiology)
-"kKy" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/security/tram)
"kKB" = (
/obj/structure/window/spawner/directional/west,
/obj/structure/window/spawner/directional/south,
@@ -30000,12 +29984,6 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/turf/open/floor/iron/showroomfloor,
/area/station/commons/toilet/restrooms)
-"kLG" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"kLS" = (
/turf/open/floor/iron/stairs{
dir = 1
@@ -30053,15 +30031,6 @@
/obj/structure/closet/emcloset,
/turf/open/floor/iron/small,
/area/station/maintenance/department/medical/central)
-"kNA" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"kND" = (
/turf/closed/wall/r_wall,
/area/station/security/prison)
@@ -30304,14 +30273,6 @@
/obj/machinery/holopad,
/turf/open/floor/wood,
/area/station/command/heads_quarters/qm)
-"kSo" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/thermoplastic,
-/turf/open/floor/tram,
-/area/station/security/tram)
"kSr" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -30768,6 +30729,14 @@
/obj/effect/landmark/start/bitrunner,
/turf/open/floor/iron/dark/smooth_half,
/area/station/bitrunning/den)
+"lbG" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"lbM" = (
/obj/structure/chair/sofa/bench/right{
dir = 1
@@ -31383,12 +31352,6 @@
/obj/structure/window/reinforced/spawner/directional/west,
/turf/open/floor/iron,
/area/station/maintenance/fore/greater)
-"liU" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 6
- },
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"ljk" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -31817,6 +31780,10 @@
},
/turf/open/floor/wood/parquet,
/area/station/service/library)
+"lqL" = (
+/obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/prison_wing,
+/turf/open/floor/tram,
+/area/station/security/tram)
"lrh" = (
/obj/structure/cable,
/obj/effect/spawner/random/trash,
@@ -32025,18 +31992,6 @@
},
/turf/open/floor/wood/parquet,
/area/station/service/greenroom)
-"lvM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/public/glass{
- name = "Prison Garden"
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/textured_half{
- dir = 8
- },
-/area/station/security/prison/garden)
"lvS" = (
/obj/machinery/porta_turret/ai{
dir = 4
@@ -33518,6 +33473,12 @@
},
/turf/open/floor/iron/dark,
/area/station/cargo/storage)
+"lTU" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 10
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"lUo" = (
/turf/open/floor/iron,
/area/station/science/lobby)
@@ -34128,6 +34089,10 @@
/obj/effect/landmark/start/chief_medical_officer,
/turf/open/floor/wood/parquet,
/area/station/command/heads_quarters/cmo)
+"mdr" = (
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"mdt" = (
/turf/closed/wall/r_wall,
/area/station/science/robotics/mechbay)
@@ -34553,25 +34518,6 @@
},
/turf/open/floor/plating,
/area/station/maintenance/department/science/xenobiology)
-"mmf" = (
-/obj/structure/table,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/item/assembly/timer{
- pixel_x = -3;
- pixel_y = 9
- },
-/obj/item/assembly/timer{
- pixel_y = 7
- },
-/obj/machinery/light_switch/directional/south,
-/obj/structure/extinguisher_cabinet/directional/west,
-/obj/item/holosign_creator/atmos,
-/obj/item/holosign_creator/atmos{
- pixel_x = 3;
- pixel_y = -3
- },
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
"mmi" = (
/obj/structure/chair/sofa/bench/left{
dir = 4
@@ -34636,6 +34582,17 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/security/execution/transfer)
+"mnb" = (
+/obj/effect/turf_decal/stripes/white/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"mnc" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -35529,6 +35486,13 @@
/obj/machinery/light_switch/directional/south,
/turf/open/floor/iron/white,
/area/station/science/cytology)
+"mET" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/item/stack/sheet/mineral/titanium,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"mEU" = (
/obj/machinery/light/small/directional/east,
/turf/open/floor/iron/showroomfloor,
@@ -35627,13 +35591,6 @@
/obj/structure/sink/directional/west,
/turf/open/floor/iron/white/small,
/area/station/medical/storage)
-"mGQ" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/frame/machine,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"mGT" = (
/obj/structure/cable,
/obj/machinery/door/airlock{
@@ -35682,15 +35639,6 @@
/obj/effect/landmark/start/virologist,
/turf/open/floor/iron/white/small,
/area/station/medical/virology)
-"mId" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/button/transport/tram/directional/north{
- specific_transport_id = "bird_1";
- id = 1
- },
-/obj/machinery/transport/destination_sign/indicator/directional/north,
-/turf/open/floor/noslip,
-/area/station/security/tram)
"mIg" = (
/obj/machinery/light/small/directional/west,
/turf/open/floor/catwalk_floor/iron_dark,
@@ -36057,6 +36005,14 @@
/obj/effect/mapping_helpers/airlock/access/any/science/maintenance,
/turf/open/floor/plating,
/area/station/maintenance/aft)
+"mNG" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/button/transport/tram/directional/south{
+ id = 1;
+ specific_transport_id = "bird_2"
+ },
+/turf/open/floor/iron,
+/area/station/maintenance/port/aft)
"mNN" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/button/door/directional/east{
@@ -36512,6 +36468,13 @@
/obj/machinery/status_display/evac/directional/north,
/turf/open/floor/iron/dark/small,
/area/station/medical/storage)
+"mXD" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/obj/item/stack/sheet/mineral/titanium,
+/turf/open/floor/tram,
+/area/station/security/tram)
"mXT" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -36805,6 +36768,12 @@
/obj/structure/cable,
/turf/open/floor/iron/dark/smooth_large,
/area/station/ai_monitored/turret_protected/ai_upload)
+"ndp" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"ndq" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -36815,13 +36784,6 @@
},
/turf/open/floor/catwalk_floor/iron_dark,
/area/station/maintenance/central/greater)
-"ndA" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/security/tram)
"ndM" = (
/obj/structure/tank_dispenser/oxygen,
/turf/open/floor/iron,
@@ -37002,6 +36964,12 @@
},
/turf/open/floor/iron/dark,
/area/station/security/office)
+"nhx" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"nhB" = (
/obj/effect/mapping_helpers/broken_floor,
/obj/effect/decal/cleanable/dirt,
@@ -38254,15 +38222,6 @@
/turf/open/floor/plating,
/area/station/maintenance/starboard/greater)
"nEl" = (
-/obj/machinery/computer/quantum_console{
- dir = 4
- },
-/obj/machinery/computer/quantum_console{
- dir = 4
- },
-/obj/machinery/computer/quantum_console{
- dir = 4
- },
/obj/machinery/computer/quantum_console{
dir = 4
},
@@ -38603,13 +38562,6 @@
/obj/structure/cable,
/turf/open/floor/iron/small,
/area/station/maintenance/solars/starboard/fore)
-"nJm" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"nJx" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -39385,6 +39337,16 @@
"nZx" = (
/turf/closed/mineral/random/stationside,
/area/station/ai_monitored/turret_protected/ai)
+"nZz" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/holosign/barrier/atmos/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"nZM" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable,
@@ -39436,14 +39398,6 @@
/obj/machinery/camera/autoname/directional/west,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"oaE" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 6
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"oaV" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -39499,13 +39453,6 @@
"ocb" = (
/turf/open/floor/iron/white/small,
/area/station/science/cubicle)
-"ocg" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/item/stack/sheet/mineral/titanium,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"ocs" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -40808,12 +40755,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
-"oBo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
"oBA" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment,
@@ -40932,6 +40873,20 @@
},
/turf/open/floor/iron/white/small,
/area/station/science/server)
+"oDY" = (
+/obj/effect/turf_decal/stripes/corner,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/structure/holosign/barrier/atmos/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"oEi" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/decal/cleanable/dirt,
@@ -40980,6 +40935,7 @@
/obj/effect/turf_decal/stripes/white/line{
dir = 4
},
+/obj/machinery/air_sensor/engine_chamber,
/turf/open/floor/engine,
/area/station/engineering/supermatter)
"oFf" = (
@@ -41093,15 +41049,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/starboard/greater)
-"oGS" = (
-/obj/structure/transport/linear/tram,
-/obj/effect/turf_decal/stripes/white/corner,
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 4
- },
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"oHa" = (
/obj/structure/table,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -41138,6 +41085,13 @@
/obj/structure/table,
/turf/open/floor/iron,
/area/station/commons)
+"oIK" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/structure/frame/machine,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"oIP" = (
/obj/effect/turf_decal/siding/wood{
dir = 8
@@ -41194,6 +41148,13 @@
/obj/machinery/camera/autoname/directional/west,
/turf/open/floor/iron/dark/small,
/area/station/medical/morgue)
+"oJA" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/fluff/tram_rail/floor,
+/obj/structure/thermoplastic,
+/obj/structure/chair/sofa/bench/tram/solo,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"oJE" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -41403,17 +41364,6 @@
/obj/structure/alien/weeds,
/turf/open/floor/iron,
/area/station/maintenance/starboard/greater)
-"oNM" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/transport/linear/tram,
-/obj/machinery/transport/tram_controller{
- configured_transport_id = "bird_2"
- },
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"oNX" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -41491,6 +41441,17 @@
/obj/machinery/portable_atmospherics/canister,
/turf/open/floor/iron,
/area/station/maintenance/port/fore)
+"oOL" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/structure/transport/linear/tram,
+/obj/machinery/transport/tram_controller{
+ configured_transport_id = "bird_2"
+ },
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"oPc" = (
/obj/structure/window/reinforced/spawner/directional/west,
/obj/machinery/computer/upload/borg{
@@ -41747,6 +41708,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/port/greater)
+"oTI" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/effect/spawner/random/maintenance,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"oTL" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating/rust,
@@ -41846,18 +41814,6 @@
/obj/structure/broken_flooring/singular/directional/east,
/turf/open/floor/plating,
/area/station/maintenance/port/aft)
-"oVE" = (
-/obj/structure/flora/bush/large/style_random{
- pixel_x = -18;
- pixel_y = -9
- },
-/obj/structure/flora/bush/flowers_yw/style_random,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/siding/wideplating{
- dir = 4
- },
-/turf/open/misc/sandy_dirt,
-/area/station/security/tram)
"oVK" = (
/obj/structure/chair{
pixel_y = -2
@@ -41924,17 +41880,6 @@
/obj/machinery/duct,
/turf/open/floor/plating,
/area/station/maintenance/central/greater)
-"oXh" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/fluff/tram_rail/floor{
- dir = 1
- },
-/obj/structure/thermoplastic,
-/obj/structure/chair/sofa/bench/tram/right{
- dir = 1
- },
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"oXs" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/emcloset,
@@ -42109,6 +42054,14 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
+"paI" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"paL" = (
/obj/structure/fireplace,
/obj/effect/turf_decal/siding/wood/end,
@@ -42223,6 +42176,12 @@
/obj/structure/broken_flooring/corner/directional/south,
/turf/open/floor/plating,
/area/station/hallway/secondary/recreation)
+"pdf" = (
+/obj/structure/transport/linear/tram,
+/obj/effect/landmark/transport/transport_id/birdshot/line_2,
+/obj/structure/thermoplastic/light,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"pds" = (
/obj/structure/cable,
/obj/machinery/holopad,
@@ -42355,6 +42314,15 @@
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/iron/small,
/area/station/maintenance/port/lesser)
+"pfd" = (
+/obj/effect/turf_decal/stripes/white/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/white/corner{
+ dir = 8
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"pfh" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/alien/weeds,
@@ -42409,16 +42377,6 @@
dir = 8
},
/area/station/service/bar/backroom)
-"pfY" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/holosign/barrier/atmos/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"pgh" = (
/obj/effect/turf_decal/tile/red/fourcorners,
/obj/structure/table/reinforced/titaniumglass,
@@ -42600,6 +42558,12 @@
/obj/structure/broken_flooring/singular/directional/south,
/turf/open/floor/iron,
/area/station/maintenance/starboard/aft)
+"pje" = (
+/obj/effect/turf_decal/stripes/white/line,
+/obj/effect/spawner/random/structure/girder,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"pjn" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/machinery/dna_scannernew,
@@ -43023,9 +42987,6 @@
/obj/structure/window/reinforced/spawner/directional/east,
/turf/open/space/basic,
/area/space)
-"pqf" = (
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"pqm" = (
/turf/closed/wall/r_wall,
/area/station/engineering/storage/tcomms)
@@ -43103,11 +43064,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/cafeteria,
/area/station/service/kitchen)
-"prT" = (
-/obj/effect/turf_decal/stripes/white/line,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"prW" = (
/obj/effect/turf_decal/stripes/red/line{
dir = 8
@@ -43420,13 +43376,6 @@
},
/turf/open/floor/iron/white/side,
/area/station/science/research)
-"pwG" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
"pwJ" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -43459,15 +43408,6 @@
/obj/machinery/door/firedoor,
/turf/open/floor/iron,
/area/station/service/hydroponics)
-"pxs" = (
-/obj/structure/transport/linear/tram,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/structure/fluff/tram_rail/floor,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"pxw" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -43616,6 +43556,13 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/station/security/checkpoint/customs/auxiliary)
+"pzN" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 5
+ },
+/obj/item/stack/sheet/mineral/titanium,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"pzR" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -43818,6 +43765,12 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/recreation)
+"pCC" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"pCF" = (
/obj/machinery/door/window/brigdoor/right/directional/east{
id = "Cell 2";
@@ -43876,15 +43829,6 @@
},
/turf/open/floor/wood/tile,
/area/station/service/lawoffice)
-"pDG" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/frame/computer{
- dir = 1
- },
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"pDQ" = (
/obj/structure/cable,
/obj/structure/table/glass,
@@ -44307,6 +44251,13 @@
/obj/effect/turf_decal/delivery/red,
/turf/open/floor/iron/white/small,
/area/station/medical/medbay/central)
+"pKp" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 6
+ },
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"pKR" = (
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
dir = 4
@@ -44465,13 +44416,6 @@
},
/turf/open/floor/wood/tile,
/area/station/command/corporate_showroom)
-"pNm" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"pNy" = (
/obj/structure/disposalpipe/segment{
dir = 9
@@ -44499,17 +44443,6 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/iron/white/small,
/area/station/science/lab)
-"pNT" = (
-/obj/structure/transport/linear/tram,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/fluff/tram_rail/floor{
- dir = 1
- },
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"pOb" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -45126,6 +45059,14 @@
},
/turf/open/floor/iron/dark/small,
/area/station/science/xenobiology)
+"pXh" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/effect/spawner/random/maintenance,
+/obj/effect/spawner/random/structure/girder,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"pXo" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -45647,17 +45588,6 @@
},
/turf/open/misc/sandy_dirt,
/area/station/security/tram)
-"qfw" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/fluff/tram_rail/floor{
- dir = 1
- },
-/obj/structure/thermoplastic,
-/obj/structure/chair/sofa/bench/tram/left{
- dir = 1
- },
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"qfz" = (
/obj/item/kirbyplants/organic/applebush,
/obj/machinery/light/small/directional/south,
@@ -45939,34 +45869,6 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/fore)
-"qiH" = (
-/obj/structure/table,
-/obj/machinery/airalarm/directional/west,
-/obj/item/pipe_dispenser{
- pixel_x = 3;
- pixel_y = -1
- },
-/obj/item/assembly/timer{
- pixel_x = -3;
- pixel_y = 13
- },
-/obj/item/transfer_valve{
- pixel_x = 10;
- pixel_y = 21
- },
-/obj/item/transfer_valve{
- pixel_x = 7;
- pixel_y = 19
- },
-/obj/item/transfer_valve{
- pixel_x = 4;
- pixel_y = 17
- },
-/obj/item/pipe_dispenser{
- pixel_y = 4
- },
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
"qiM" = (
/obj/structure/table,
/turf/open/floor/iron/cafeteria,
@@ -46654,15 +46556,6 @@
/obj/machinery/light/small/directional/south,
/turf/open/floor/grass,
/area/station/service/hydroponics/garden/monastery)
-"quQ" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"quS" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -46926,6 +46819,15 @@
/obj/structure/table/glass,
/turf/open/floor/iron/white,
/area/station/science/research)
+"qzp" = (
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/machinery/button/transport/tram/directional/north{
+ id = 1;
+ specific_transport_id = "bird_1"
+ },
+/obj/machinery/transport/destination_sign/indicator/directional/north,
+/turf/open/floor/noslip,
+/area/station/security/tram)
"qzq" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 4
@@ -47008,6 +46910,12 @@
/obj/effect/spawner/random/maintenance,
/turf/open/floor/iron,
/area/station/maintenance/department/medical/central)
+"qAq" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 5
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"qAs" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/stripes/red/line{
@@ -47239,12 +47147,6 @@
/obj/structure/sign/poster/contraband/random/directional/north,
/turf/open/floor/iron/white/small,
/area/station/maintenance/port/aft)
-"qDD" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"qDK" = (
/obj/machinery/light_switch/directional/west,
/obj/structure/reagent_dispensers/water_cooler,
@@ -47532,6 +47434,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/commons/dorms)
+"qIB" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/white/line,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"qID" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -47826,12 +47735,6 @@
/obj/machinery/light/cold/directional/north,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
-"qOv" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/fluff/tram_rail/floor,
-/obj/structure/thermoplastic,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"qOG" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -47865,18 +47768,6 @@
},
/turf/open/floor/iron/smooth,
/area/station/cargo/drone_bay)
-"qOO" = (
-/obj/item/stack/sheet/mineral/titanium,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
-"qOT" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"qPc" = (
/obj/effect/turf_decal/tile/green/opposingcorners{
dir = 1
@@ -48278,14 +48169,6 @@
/obj/machinery/power/apc/auto_name/directional/south,
/turf/open/floor/wood/tile,
/area/station/command/corporate_showroom)
-"qVz" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"qVK" = (
/obj/machinery/firealarm/directional/west,
/obj/effect/turf_decal/stripes/corner{
@@ -48309,10 +48192,6 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/turf/open/floor/wood,
/area/station/cargo/boutique)
-"qWd" = (
-/obj/structure/frame/machine,
-/turf/open/floor/tram,
-/area/station/security/tram)
"qWh" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -48522,6 +48401,11 @@
/obj/effect/spawner/random/structure/girder,
/turf/open/floor/plating,
/area/station/maintenance/fore/lesser)
+"qYA" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/thermoplastic/light,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"qYD" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/turf/open/floor/iron/showroomfloor,
@@ -48600,6 +48484,17 @@
/obj/structure/broken_flooring/corner/directional/south,
/turf/open/floor/plating,
/area/station/hallway/secondary/dock)
+"qZH" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/fluff/tram_rail/floor{
+ dir = 1
+ },
+/obj/structure/thermoplastic,
+/obj/structure/chair/sofa/bench/tram/right{
+ dir = 1
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"qZU" = (
/obj/machinery/portable_atmospherics/canister/plasma,
/obj/effect/turf_decal/stripes/white/line{
@@ -48620,6 +48515,15 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/commons/storage/tools)
+"ral" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"ram" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/turf/open/floor/wood/large,
@@ -48668,6 +48572,14 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/turf/open/floor/wood/large,
/area/station/service/hydroponics/garden/monastery)
+"rbc" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/obj/machinery/computer/tram_controls{
+ specific_transport_id = "bird_1"
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"rbh" = (
/obj/structure/cable,
/obj/effect/turf_decal/siding/wood{
@@ -49059,6 +48971,14 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/smooth,
/area/station/cargo/drone_bay)
+"rhy" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/thermoplastic,
+/turf/open/floor/tram,
+/area/station/security/tram)
"rhD" = (
/obj/structure/cable,
/obj/structure/rack,
@@ -49292,15 +49212,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/wood,
/area/station/cargo/boutique)
-"rlV" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/frame/computer{
- dir = 4
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"rma" = (
/obj/machinery/atmospherics/pipe/smart/simple/general/visible{
dir = 6
@@ -49370,6 +49281,13 @@
/obj/effect/mapping_helpers/mail_sorting/service/library,
/turf/open/floor/plating,
/area/station/maintenance/central/greater)
+"rnZ" = (
+/obj/structure/transport/linear/tram,
+/obj/effect/landmark/transport/nav_beacon/tram/nav/birdshot/maint,
+/obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/maint_left,
+/obj/structure/thermoplastic/light,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"roi" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -49579,12 +49497,6 @@
},
/turf/open/floor/glass,
/area/station/hallway/secondary/spacebridge)
-"rrB" = (
-/obj/structure/transport/linear/tram,
-/obj/effect/landmark/transport/transport_id/birdshot/line_2,
-/obj/structure/thermoplastic/light,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"rrC" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -49690,6 +49602,14 @@
/obj/machinery/light/small/directional/east,
/turf/open/floor/plating,
/area/station/engineering/main)
+"rsQ" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/landmark/navigate_destination/chapel,
+/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod,
+/turf/open/floor/iron,
+/area/station/hallway/primary/port)
"rsV" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -49757,6 +49677,18 @@
},
/turf/closed/wall,
/area/station/hallway/secondary/recreation)
+"ruc" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/door/airlock/public/glass{
+ name = "Prison Garden"
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/iron/textured_half{
+ dir = 8
+ },
+/area/station/security/prison/garden)
"rui" = (
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
@@ -49803,6 +49735,12 @@
"rvp" = (
/turf/closed/mineral/random/stationside,
/area/station/maintenance/hallway/abandoned_command)
+"rvs" = (
+/obj/effect/turf_decal/stripes/white/line,
+/obj/item/stack/sheet/mineral/titanium,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"rvy" = (
/obj/effect/mapping_helpers/broken_floor,
/obj/effect/decal/cleanable/dirt,
@@ -49947,8 +49885,8 @@
/obj/structure/table,
/obj/machinery/airalarm/directional/south,
/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 6
},
/obj/item/clipboard{
pixel_x = 4;
@@ -50000,14 +49938,6 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/maintenance/fore/lesser)
-"ryj" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 10
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"ryk" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -50380,6 +50310,12 @@
/obj/machinery/airalarm/directional/west,
/turf/open/floor/iron/smooth,
/area/station/cargo/drone_bay)
+"rDY" = (
+/obj/effect/turf_decal/stripes/white/line,
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"rEb" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/generic_maintenance_landmark,
@@ -51192,14 +51128,6 @@
/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy,
/turf/open/floor/iron/dark/small,
/area/station/medical/pharmacy)
-"rQM" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"rQN" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/tile/neutral{
@@ -51516,12 +51444,6 @@
},
/turf/open/floor/iron/smooth_large,
/area/station/science/auxlab/firing_range)
-"rVz" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 10
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"rVH" = (
/obj/effect/turf_decal/tile/blue/fourcorners,
/obj/structure/table/glass,
@@ -51761,12 +51683,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/catwalk_floor/flat_white,
/area/station/science/robotics/augments)
-"rZk" = (
-/obj/structure/chair/comfy/shuttle,
-/obj/structure/transport/linear/tram,
-/obj/structure/thermoplastic,
-/turf/open/floor/tram,
-/area/station/security/tram)
"rZn" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment,
@@ -52039,13 +51955,6 @@
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/plating,
/area/station/maintenance/department/medical/central)
-"sdC" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/fluff/tram_rail/floor,
-/obj/structure/thermoplastic,
-/obj/structure/chair/sofa/bench/tram/solo,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"sdQ" = (
/obj/structure/cable,
/obj/machinery/door/airlock/maintenance{
@@ -52623,6 +52532,14 @@
/obj/effect/spawner/random/engineering/tracking_beacon,
/turf/open/floor/iron,
/area/station/security/courtroom)
+"snB" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/structure/thermoplastic,
+/turf/open/floor/tram,
+/area/station/security/tram)
"snJ" = (
/obj/effect/turf_decal/stripes/corner,
/obj/machinery/light/small/directional/south,
@@ -52674,6 +52591,12 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/iron/small,
/area/station/engineering/atmos)
+"sox" = (
+/obj/effect/turf_decal/stripes/white/line,
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"soD" = (
/obj/effect/turf_decal/siding/thinplating_new/dark/corner{
dir = 8
@@ -53490,6 +53413,12 @@
/obj/effect/spawner/structure/window/reinforced/tinted,
/turf/open/floor/plating,
/area/station/maintenance/central/lesser)
+"sBm" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/fluff/tram_rail/floor,
+/obj/structure/thermoplastic/light,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"sBp" = (
/obj/structure/table,
/obj/machinery/processor{
@@ -54057,6 +53986,20 @@
/obj/structure/closet/secure_closet/security/med,
/turf/open/floor/iron/smooth,
/area/station/security/checkpoint/customs/auxiliary)
+"sLS" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/corner,
+/obj/structure/holosign/barrier/atmos/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"sLU" = (
/obj/structure/cable,
/obj/effect/spawner/structure/window/reinforced,
@@ -54760,6 +54703,10 @@
},
/turf/open/floor/engine,
/area/station/science/cytology)
+"sXI" = (
+/obj/structure/frame/machine,
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"sXO" = (
/obj/structure/chair{
dir = 4
@@ -55157,6 +55104,25 @@
dir = 1
},
/area/station/security/execution/transfer)
+"teE" = (
+/obj/structure/table,
+/obj/effect/mapping_helpers/broken_floor,
+/obj/item/assembly/timer{
+ pixel_x = -3;
+ pixel_y = 9
+ },
+/obj/item/assembly/timer{
+ pixel_y = 7
+ },
+/obj/machinery/light_switch/directional/south,
+/obj/structure/extinguisher_cabinet/directional/west,
+/obj/item/holosign_creator/atmos,
+/obj/item/holosign_creator/atmos{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/open/floor/iron,
+/area/station/science/ordnance/testlab)
"teG" = (
/obj/structure/chair/sofa/bench{
dir = 4
@@ -55245,15 +55211,6 @@
/obj/item/clipboard,
/turf/open/floor/iron/white/small,
/area/station/science/server)
-"tfY" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/fluff/tram_rail/floor{
- dir = 1
- },
-/obj/structure/thermoplastic,
-/obj/structure/rack,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"tgj" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/easel,
@@ -55529,24 +55486,6 @@
"tnb" = (
/turf/open/floor/plating,
/area/station/maintenance/central/lesser)
-"tno" = (
-/obj/structure/table,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = -2;
- pixel_y = 8
- },
-/obj/machinery/requests_console/directional/west{
- department = "Ordnance Test Range";
- name = "Test Range Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/information,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = 3;
- pixel_y = -2
- },
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
"tns" = (
/obj/effect/mapping_helpers/broken_floor,
/obj/effect/decal/cleanable/dirt,
@@ -55581,6 +55520,17 @@
},
/turf/open/floor/plating,
/area/station/maintenance/department/engine)
+"tnA" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/fluff/tram_rail/floor{
+ dir = 1
+ },
+/obj/structure/thermoplastic,
+/obj/structure/chair/sofa/bench/tram/left{
+ dir = 1
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"tnO" = (
/obj/structure/cable,
/obj/effect/mapping_helpers/broken_floor,
@@ -55610,6 +55560,17 @@
},
/turf/open/floor/wood/tile,
/area/station/tcommsat/server)
+"top" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/obj/machinery/computer/tram_controls{
+ specific_transport_id = "bird_2"
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"toA" = (
/turf/open/floor/iron,
/area/station/hallway/secondary/recreation)
@@ -56166,6 +56127,12 @@
/obj/structure/cable,
/turf/open/floor/plating/rust,
/area/station/maintenance/fore/greater)
+"twQ" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 9
+ },
+/turf/open/floor/tram,
+/area/station/maintenance/department/medical/central)
"twR" = (
/obj/structure/table/glass,
/obj/machinery/cell_charger,
@@ -56255,6 +56222,13 @@
/obj/structure/cable,
/turf/open/floor/iron/smooth,
/area/station/cargo/drone_bay)
+"tyT" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/thermoplastic,
+/obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/sec_wing,
+/obj/effect/landmark/transport/nav_beacon/tram/nav/birdshot/prison,
+/turf/open/floor/tram,
+/area/station/security/tram)
"tyY" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/firealarm/directional/south,
@@ -56586,18 +56560,6 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/port)
-"tDM" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "rdordnance";
- name = "Ordnance Lab Shutters"
- },
-/turf/open/floor/plating,
-/area/station/science/ordnance)
"tDP" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -56614,6 +56576,17 @@
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/wood/parquet,
/area/station/service/theater)
+"tEg" = (
+/obj/structure/transport/linear/tram,
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/obj/structure/fluff/tram_rail/floor{
+ dir = 1
+ },
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"tEj" = (
/obj/effect/turf_decal/stripes/white/line{
dir = 1
@@ -56741,6 +56714,15 @@
"tGq" = (
/turf/closed/wall,
/area/station/service/kitchen/coldroom)
+"tGv" = (
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/machinery/button/transport/tram/directional/north{
+ id = 2;
+ specific_transport_id = "bird_1"
+ },
+/obj/machinery/transport/destination_sign/indicator/directional/north,
+/turf/open/floor/noslip,
+/area/station/security/tram)
"tGI" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -57772,6 +57754,15 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/port/greater)
+"tYM" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"tYN" = (
/obj/structure/cable,
/turf/open/floor/iron,
@@ -58132,14 +58123,6 @@
},
/turf/open/floor/iron/textured_large,
/area/station/security/brig/entrance)
-"udE" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/spawner/random/maintenance,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"udI" = (
/obj/structure/closet{
name = "Evidence Closet 3"
@@ -58269,14 +58252,6 @@
/obj/effect/turf_decal/trimline/neutral/line,
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
-"ufU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod,
-/turf/open/floor/iron,
-/area/station/security/prison/garden)
"ugb" = (
/obj/effect/turf_decal/tile/yellow/opposingcorners,
/obj/effect/decal/cleanable/dirt,
@@ -58349,12 +58324,6 @@
/obj/effect/mapping_helpers/airlock/access/all/science/robotics,
/turf/open/floor/catwalk_floor/flat_white,
/area/station/science/robotics/augments)
-"ugY" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 10
- },
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"uhe" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/machinery/conveyor{
@@ -58653,6 +58622,13 @@
},
/turf/open/floor/engine,
/area/station/science/explab)
+"umx" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 9
+ },
+/obj/item/stack/sheet/mineral/titanium,
+/turf/open/floor/tram,
+/area/station/security/tram)
"umz" = (
/obj/effect/turf_decal/siding/wood{
dir = 5
@@ -58825,11 +58801,6 @@
dir = 5
},
/area/station/science/research)
-"upR" = (
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"uqc" = (
/obj/structure/cable,
/obj/effect/spawner/random/trash,
@@ -58990,14 +58961,6 @@
"usJ" = (
/turf/open/floor/iron/kitchen/small,
/area/station/maintenance/aft)
-"utg" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/landmark/navigate_destination/chapel,
-/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod,
-/turf/open/floor/iron,
-/area/station/hallway/primary/port)
"uth" = (
/obj/effect/turf_decal/plaque{
icon_state = "L2"
@@ -59193,6 +59156,12 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/fore/greater)
+"uwI" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod,
+/turf/open/floor/iron,
+/area/station/hallway/secondary/entry)
"uwU" = (
/obj/structure/closet/secure_closet/hydroponics,
/obj/effect/turf_decal/bot,
@@ -59967,11 +59936,6 @@
},
/turf/open/floor/iron/showroomfloor,
/area/station/commons/toilet/auxiliary)
-"uJZ" = (
-/obj/structure/window/reinforced/shuttle,
-/obj/structure/window/reinforced/shuttle,
-/turf/open/floor/plating,
-/area/station/commons/fitness/recreation/entertainment)
"uKl" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -60242,6 +60206,15 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/maintenance/hallway/abandoned_command)
+"uPw" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/obj/structure/frame/computer{
+ dir = 4
+ },
+/turf/open/floor/tram,
+/area/station/security/tram)
"uPJ" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -60351,13 +60324,6 @@
/obj/machinery/light/small/directional/east,
/turf/open/floor/iron/smooth,
/area/station/maintenance/solars/port/aft)
-"uRp" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/item/stack/sheet/mineral/titanium,
-/turf/open/floor/tram,
-/area/station/security/tram)
"uRF" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -60660,20 +60626,6 @@
"uWo" = (
/turf/closed/wall,
/area/station/medical/paramedic)
-"uWu" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/corner,
-/obj/structure/holosign/barrier/atmos/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"uWv" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/structure/flora/bush/flowers_pp/style_random,
@@ -61145,14 +61097,6 @@
/obj/machinery/door/firedoor,
/turf/open/floor/catwalk_floor/flat_white,
/area/station/science/robotics/augments)
-"vez" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 10
- },
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/maintenance/port/aft)
"veA" = (
/obj/machinery/atmospherics/pipe/smart/simple/green/visible,
/obj/machinery/door/poddoor/shutters/preopen{
@@ -61726,6 +61670,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/obj/machinery/camera/autoname/directional/north,
/obj/machinery/light/small/directional/north,
+/obj/vehicle/sealed/mecha/ripley/paddy/preset,
/turf/open/floor/iron,
/area/station/security/tram)
"vmX" = (
@@ -63375,6 +63320,15 @@
"vMC" = (
/turf/closed/wall/r_wall,
/area/station/science/lab)
+"vMF" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/fluff/tram_rail/end{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/station/maintenance/port/aft)
"vMJ" = (
/obj/structure/disposalpipe/sorting/mail,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -63406,12 +63360,9 @@
/obj/effect/spawner/random/trash,
/turf/open/floor/plating,
/area/station/maintenance/central/greater)
-"vNj" = (
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 4
- },
+"vMX" = (
/obj/effect/turf_decal/stripes/white/line{
- dir = 1
+ dir = 5
},
/obj/structure/transport/linear/tram,
/obj/structure/tram,
@@ -63477,6 +63428,10 @@
"vOP" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/curtain/cloth/fancy/mechanical{
+ id = "detpriv";
+ name = "Curtains"
+ },
/turf/open/floor/iron/dark/small,
/area/station/security/detectives_office)
"vPa" = (
@@ -63709,6 +63664,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{
dir = 4
},
+/obj/machinery/air_sensor/ordnance_freezer_chamber,
/turf/open/floor/engine/vacuum,
/area/station/science/ordnance/freezerchamber)
"vTm" = (
@@ -64447,12 +64403,6 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/turf/open/floor/iron,
/area/station/construction/mining/aux_base)
-"weV" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/tram,
-/area/station/security/tram)
"wfa" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -64502,12 +64452,6 @@
/obj/machinery/door/firedoor,
/turf/open/floor/catwalk_floor/flat_white,
/area/station/science/research)
-"wfH" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 9
- },
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"wfP" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/security/glass{
@@ -64648,6 +64592,18 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/dock)
+"whF" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 1;
+ id = "rdordnance";
+ name = "Ordnance Lab Shutters"
+ },
+/turf/open/floor/plating,
+/area/station/science/ordnance)
"whL" = (
/obj/effect/spawner/structure/window,
/turf/open/floor/plating,
@@ -65314,6 +65270,13 @@
},
/turf/open/floor/iron/dark/side,
/area/station/science/xenobiology)
+"wte" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/white/line,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
"wtm" = (
/obj/structure/cable,
/obj/effect/turf_decal/siding/blue{
@@ -65806,9 +65769,10 @@
pixel_x = -5;
pixel_y = 3
},
-/obj/machinery/button/door/directional/west{
- id = "detpriv";
- name = "Curtains"
+/obj/machinery/button/curtain{
+ pixel_x = -24;
+ name = "Curtains";
+ id = "detpriv"
},
/turf/open/floor/wood,
/area/station/security/detectives_office)
@@ -65994,10 +65958,6 @@
/obj/machinery/light_switch/directional/south,
/turf/open/floor/iron/white,
/area/station/medical/medbay/central)
-"wDu" = (
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"wDA" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
@@ -66234,13 +66194,6 @@
/obj/effect/turf_decal/tile/neutral/opposingcorners,
/turf/open/floor/iron,
/area/station/hallway/secondary/spacebridge)
-"wHY" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 9
- },
-/obj/item/stack/sheet/mineral/titanium,
-/turf/open/floor/tram,
-/area/station/security/tram)
"wIc" = (
/obj/structure/window/spawner/directional/west,
/obj/structure/flora/rock/pile/jungle/style_random,
@@ -66639,6 +66592,12 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
+"wNS" = (
+/obj/structure/rack,
+/obj/structure/transport/linear/tram,
+/obj/structure/thermoplastic,
+/turf/open/floor/tram,
+/area/station/security/tram)
"wNT" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -66761,18 +66720,9 @@
/turf/open/floor/iron/dark,
/area/station/security/interrogation)
"wPf" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "hop";
- name = "Privacy Shutters"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "hop";
- name = "Privacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/hop)
+/obj/item/clothing/glasses/blindfold,
+/turf/open/space/basic,
+/area/space)
"wPh" = (
/obj/structure/disposalpipe/trunk{
dir = 8
@@ -66976,8 +66926,8 @@
/obj/item/radio/intercom/directional/south,
/obj/structure/extinguisher_cabinet/directional/west,
/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = 4
+ pixel_x = 4;
+ pixel_y = 6
},
/obj/item/stack/medical/gauze{
pixel_x = -2;
@@ -67735,6 +67685,13 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
+"xcq" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/obj/effect/spawner/random/maintenance,
+/turf/open/floor/tram,
+/area/station/security/tram)
"xcv" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -67962,6 +67919,15 @@
},
/turf/open/floor/iron/white,
/area/station/science/cytology)
+"xfy" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/fluff/tram_rail/floor{
+ dir = 1
+ },
+/obj/structure/thermoplastic,
+/obj/structure/rack,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"xfH" = (
/obj/machinery/portable_atmospherics/canister/air,
/turf/open/floor/iron,
@@ -68128,6 +68094,18 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/central/greater)
+"xhU" = (
+/obj/structure/flora/bush/large/style_random{
+ pixel_x = -18;
+ pixel_y = -9
+ },
+/obj/structure/flora/bush/flowers_yw/style_random,
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/effect/turf_decal/siding/wideplating{
+ dir = 4
+ },
+/turf/open/misc/sandy_dirt,
+/area/station/security/tram)
"xia" = (
/turf/closed/wall,
/area/station/science/cubicle)
@@ -68241,6 +68219,14 @@
"xjz" = (
/turf/closed/wall/r_wall,
/area/station/security/prison/garden)
+"xjE" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 8
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"xjG" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/radio/intercom/prison/directional/north,
@@ -68534,6 +68520,13 @@
/obj/effect/turf_decal/delivery/white,
/turf/open/floor/iron,
/area/station/cargo/sorting)
+"xnB" = (
+/obj/effect/turf_decal/stripes/white/corner,
+/obj/effect/turf_decal/stripes/white/line,
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"xnC" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -68547,8 +68540,12 @@
/obj/effect/decal/cleanable/dirt,
/obj/machinery/airalarm/directional/east,
/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnanceburn"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
/turf/open/floor/iron/dark,
-/area/station/science/ordnance/burnchamber)
+/area/station/science/ordnance)
"xoa" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -68693,6 +68690,11 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
+"xpV" = (
+/obj/structure/transport/linear/tram,
+/obj/structure/thermoplastic,
+/turf/open/floor/tram,
+/area/station/security/tram)
"xpY" = (
/obj/structure/cable,
/obj/structure/table/reinforced,
@@ -68779,15 +68781,6 @@
"xqW" = (
/turf/closed/wall/r_wall,
/area/station/hallway/primary/starboard)
-"xrh" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/button/transport/tram/directional/north{
- specific_transport_id = "bird_1";
- id = 2
- },
-/obj/machinery/transport/destination_sign/indicator/directional/north,
-/turf/open/floor/noslip,
-/area/station/security/tram)
"xrk" = (
/obj/effect/turf_decal/tile/dark_red/opposingcorners,
/obj/effect/decal/cleanable/dirt,
@@ -69212,6 +69205,14 @@
/obj/structure/barricade/wooden/crude,
/turf/open/floor/plating,
/area/station/maintenance/starboard/central)
+"xwJ" = (
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 10
+ },
+/obj/structure/transport/linear/tram,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/security/tram)
"xwQ" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/white/line{
@@ -69684,13 +69685,6 @@
},
/turf/open/floor/iron/small,
/area/station/hallway/primary/starboard)
-"xDM" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 10
- },
-/obj/item/stack/sheet/mineral/titanium,
-/turf/open/floor/tram,
-/area/station/security/tram)
"xDW" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -69852,12 +69846,6 @@
},
/turf/open/floor/plating,
/area/station/maintenance/department/engine)
-"xGb" = (
-/obj/effect/turf_decal/stripes/white/line,
-/obj/structure/transport/linear/tram,
-/obj/structure/tram,
-/turf/open/floor/tram,
-/area/station/security/tram)
"xGc" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -70367,6 +70355,10 @@
/obj/machinery/airalarm/directional/south,
/turf/open/floor/iron/dark,
/area/station/science/ordnance)
+"xMM" = (
+/obj/item/stack/sheet/mineral/titanium,
+/turf/open/floor/tram,
+/area/station/security/tram)
"xMO" = (
/obj/effect/spawner/random/entertainment/arcade{
dir = 1
@@ -71560,6 +71552,18 @@
/obj/structure/extinguisher_cabinet/directional/east,
/turf/open/floor/iron/white,
/area/station/medical/medbay/aft)
+"yci" = (
+/obj/effect/turf_decal/stripes/white/corner{
+ dir = 4
+ },
+/obj/structure/transport/linear/tram,
+/obj/effect/turf_decal/stripes/white/line{
+ dir = 4
+ },
+/obj/structure/fluff/tram_rail/floor,
+/obj/structure/tram,
+/turf/open/floor/tram,
+/area/station/maintenance/port/aft)
"ycj" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -71579,13 +71583,6 @@
},
/turf/open/floor/iron/white,
/area/station/science/research)
-"ycv" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/tram,
-/area/station/maintenance/department/medical/central)
"ycC" = (
/turf/closed/wall/r_wall,
/area/station/command/bridge)
@@ -72008,10 +72005,6 @@
/obj/structure/window/spawner/directional/north,
/turf/open/floor/plating,
/area/station/maintenance/department/engine)
-"yhE" = (
-/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod,
-/turf/closed/wall,
-/area/station/maintenance/port/aft)
"yhF" = (
/obj/machinery/door/firedoor,
/turf/open/floor/iron,
@@ -84581,12 +84574,12 @@ vKU
lPO
vfc
lzM
-jfX
-cJu
-kKy
-cJu
-uRp
-kef
+iNO
+xcq
+ggh
+xcq
+mXD
+jHI
ieZ
rtQ
aJq
@@ -84838,12 +84831,12 @@ dkI
dLn
rxu
lzM
-ndA
-qWd
-qWd
-dhX
-iyk
-ays
+eDt
+bro
+bro
+xMM
+eQC
+jwZ
ieZ
rtQ
aJq
@@ -85095,12 +85088,12 @@ qBT
uRJ
rcg
lzM
-xDM
-acO
-kLG
-bQz
-rlV
-wHY
+iVq
+hmf
+dpR
+bmT
+uPw
+umx
ieZ
rtQ
aJq
@@ -85623,11 +85616,11 @@ nlV
toT
kaI
tlI
-hUT
+dlx
uEI
gxx
gxx
-oVE
+xhU
jYv
nlV
sGp
@@ -85866,12 +85859,12 @@ mZc
hXU
hXU
aFR
-oaE
-dyn
-dyn
-dyn
-dyn
-qOT
+gFZ
+xjE
+xjE
+xjE
+xjE
+vMX
aFR
kGC
qBi
@@ -85893,12 +85886,12 @@ qBi
qBi
ltp
qBi
-gTC
-weV
-jEX
-weV
-weV
-jYd
+aOX
+awe
+bUO
+awe
+awe
+dEF
qBi
xAG
pGR
@@ -86123,12 +86116,12 @@ ccD
yap
lzM
ezE
-ius
-rZk
-kvb
-kvb
-itv
-xGb
+fXD
+cDt
+xpV
+xpV
+snB
+sox
aFR
kGC
qBi
@@ -86150,12 +86143,12 @@ qBi
qBi
ltp
qBi
-aYO
-fay
-fay
-fay
-fay
-ipn
+pCC
+bjZ
+bjZ
+bjZ
+bjZ
+khl
qBi
xAG
pGR
@@ -86339,7 +86332,7 @@ xRZ
wAZ
wXk
xgN
-utg
+rsQ
kar
vnr
vIh
@@ -86380,39 +86373,39 @@ qXj
rBE
lzM
aFR
-hYz
-gkO
-iRp
-aPe
-kvb
-jUN
-kNA
-uWu
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kNA
-kjn
-quQ
-fay
-fay
-fay
-kye
-fay
-fay
+iVu
+wNS
+fTd
+tyT
+xpV
+rbc
+ral
+sLS
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+ral
+oDY
+tYM
+bjZ
+bjZ
+bjZ
+lqL
+bjZ
+bjZ
qBi
iJt
pGR
@@ -86426,7 +86419,7 @@ eax
xAG
jWd
lGO
-ufU
+cZA
hyX
tBm
tBm
@@ -86637,12 +86630,12 @@ dBr
eWB
lzM
aFR
-vNj
-rZk
-kvb
-kvb
-kSo
-kyS
+mnb
+cDt
+xpV
+xpV
+rhy
+xnB
aFR
kGC
qBi
@@ -86664,12 +86657,12 @@ qBi
qBi
ltp
qBi
-aYO
-fay
-fay
-fay
-fay
-ipn
+pCC
+bjZ
+bjZ
+bjZ
+bjZ
+khl
qBi
xAG
pSd
@@ -86683,7 +86676,7 @@ xAG
xAG
uby
wCX
-lvM
+ruc
uby
wCX
uby
@@ -86894,12 +86887,12 @@ tRE
vzY
lzM
aFR
-ryj
-eTq
-cID
-cID
-eTq
-gXd
+xwJ
+paI
+cZC
+cZC
+paI
+khp
aFR
kGC
qBi
@@ -86921,12 +86914,12 @@ qBi
qBi
ltp
aFR
-rVz
-kLG
-kLG
-kLG
-kLG
-bUo
+dHn
+dpR
+dpR
+dpR
+dpR
+cRW
qBi
xAG
pSd
@@ -87151,7 +87144,7 @@ tRE
dUD
lzM
lzM
-xrh
+tGv
tpm
jeh
jeh
@@ -87178,7 +87171,7 @@ mTQ
qDO
lzM
lzM
-mId
+qzp
tpm
jeh
jeh
@@ -88708,7 +88701,7 @@ trp
trp
trp
trp
-yhE
+akF
trp
trp
trp
@@ -88964,9 +88957,9 @@ xAR
gqg
hQE
xAR
-fos
+keq
xAR
-fbX
+vMF
xAR
xAR
xAR
@@ -89220,11 +89213,11 @@ trp
trp
trp
trp
-eVe
-pxs
-upR
-jVX
-rQM
+dsU
+aYv
+dmG
+aLv
+dSV
vJH
xAR
trp
@@ -89471,17 +89464,17 @@ xAR
trp
kiG
iVJ
-coH
+boI
trp
mPv
aGU
wqD
trp
-qVz
-sdC
-eEl
-qfw
-fuk
+lbG
+oJA
+qYA
+tnA
+rDY
vJH
xAR
trp
@@ -89734,11 +89727,11 @@ sVL
xul
knJ
fAr
-oNM
-qOv
-eEl
-oXh
-fuk
+oOL
+khQ
+qYA
+qZH
+rDY
vJH
xAR
trp
@@ -89991,11 +89984,11 @@ jRx
knJ
xul
mxM
-iaZ
-cSD
-rrB
-tfY
-fuk
+jzg
+sBm
+pdf
+xfy
+rDY
vJH
xAR
trp
@@ -90248,11 +90241,11 @@ xIC
knJ
nFu
mxM
-gTk
-cSD
-jwC
-tfY
-fuk
+kbc
+sBm
+rnZ
+xfy
+rDY
vJH
xAR
trp
@@ -90505,11 +90498,11 @@ gEe
bbU
knJ
fAr
-cwd
-qOv
-eEl
-qfw
-fuk
+top
+khQ
+qYA
+tnA
+rDY
vJH
xAR
trp
@@ -90760,13 +90753,13 @@ vUf
muI
vUf
vAU
-caE
+mNG
trp
-qVz
-sdC
-eEl
-oXh
-fuk
+lbG
+oJA
+qYA
+qZH
+rDY
vJH
xAR
trp
@@ -91019,11 +91012,11 @@ xul
edP
xul
trp
-vez
-isf
-oGS
-pNT
-dBF
+css
+yci
+gkq
+tEg
+dCs
trp
vfi
trp
@@ -91278,7 +91271,7 @@ xul
trp
vJH
vJH
-iBV
+bRN
vJH
vJH
trp
@@ -91792,7 +91785,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -92049,7 +92042,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -92306,7 +92299,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -92563,7 +92556,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -92820,7 +92813,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -93077,7 +93070,7 @@ blb
blb
blb
blb
-pwG
+wte
blb
blb
blb
@@ -93334,7 +93327,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -93591,7 +93584,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -93848,7 +93841,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -94105,7 +94098,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -94362,7 +94355,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -94619,7 +94612,7 @@ blb
blb
blb
blb
-pwG
+wte
blb
blb
blb
@@ -94790,7 +94783,7 @@ tgw
lqt
ghD
aZP
-wPf
+xQw
mvT
vrn
kvT
@@ -94876,7 +94869,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -95133,7 +95126,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -95304,7 +95297,7 @@ njA
lqt
cpT
xQv
-wPf
+xQw
mvT
vrn
ncL
@@ -95390,7 +95383,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -95647,7 +95640,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -95904,7 +95897,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -96161,7 +96154,7 @@ blb
blb
blb
blb
-pwG
+wte
blb
blb
blb
@@ -96418,7 +96411,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -96675,7 +96668,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -96932,7 +96925,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -97189,7 +97182,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -97446,7 +97439,7 @@ blb
blb
blb
blb
-pwG
+wte
blb
blb
blb
@@ -97703,7 +97696,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -97960,7 +97953,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -98217,7 +98210,7 @@ blb
dDB
dDB
dDB
-pwG
+wte
dDB
dDB
bSo
@@ -98474,7 +98467,7 @@ blb
sSQ
lMF
lMF
-pfY
+nZz
lMF
lMF
sSQ
@@ -98731,7 +98724,7 @@ sSQ
sSQ
ulO
ulO
-ycv
+qIB
ulO
ulO
sSQ
@@ -98986,11 +98979,11 @@ sSQ
sqV
nFy
sSQ
-liU
-fWh
-fqT
-fWh
-kqZ
+goB
+jbt
+pfd
+jbt
+qAq
sSQ
rwq
sSQ
@@ -99241,13 +99234,13 @@ wgL
tLt
sSQ
aTc
-frB
+dZT
sSQ
-qDD
-pqf
-pqf
-pqf
-wDu
+ndp
+gow
+gow
+gow
+aEa
ulO
gpu
sSQ
@@ -99500,18 +99493,18 @@ sSQ
liH
uOw
eBQ
-qDD
-pqf
-pqf
-pqf
-wDu
+ndp
+gow
+gow
+gow
+aEa
ulO
gpu
sOj
vTG
-crr
-cuG
-ksL
+pKp
+ksv
+pzN
sSQ
dDB
dDB
@@ -99757,18 +99750,18 @@ sSQ
ewW
aTc
cku
-qDD
-pqf
-pqf
-pqf
-wDu
+ndp
+gow
+gow
+gow
+aEa
ulO
gpu
sOj
vTG
-ocg
-pqf
-gjr
+mET
+gow
+pje
sSQ
dDB
dDB
@@ -100014,18 +100007,18 @@ pVK
oZY
aTc
cku
-qDD
-pqf
-hmB
-pqf
-wDu
+ndp
+gow
+aCR
+gow
+aEa
ulO
gpu
sOj
vTG
-udE
-edW
-prT
+pXh
+mdr
+klY
sSQ
dDB
dDB
@@ -100271,18 +100264,18 @@ sSQ
hia
ggl
eBQ
-qDD
-pqf
-pqf
-pqf
-wDu
+ndp
+gow
+gow
+gow
+aEa
ulO
gpu
sOj
vTG
-pDG
-qOO
-dbO
+aAV
+gSz
+ddq
sSQ
dDB
dDB
@@ -100528,18 +100521,18 @@ sSQ
fWW
idW
sSQ
-qDD
-pqf
-pqf
-pqf
-wDu
+ndp
+gow
+gow
+gow
+aEa
ulO
gpu
sOj
vTG
-pNm
-eFi
-prT
+igD
+sXI
+klY
sSQ
dDB
dDB
@@ -100785,18 +100778,18 @@ sSQ
lQZ
sSQ
sSQ
-ugY
-gwh
-gwh
-gwh
-wfH
+lTU
+nhx
+nhx
+nhx
+twQ
ulO
gpu
sOj
vTG
-nJm
-pqf
-prT
+oTI
+gow
+klY
sSQ
dDB
dDB
@@ -101051,9 +101044,9 @@ ulO
gpu
sOj
vTG
-mGQ
-edW
-bFG
+oIK
+mdr
+rvs
sSQ
dDB
dDB
@@ -101308,9 +101301,9 @@ ulO
gpu
sOj
vTG
-dLd
-gwh
-wfH
+gSs
+nhx
+twQ
sSQ
blb
blb
@@ -107725,8 +107718,8 @@ ykn
vbR
vbR
vbR
-hzI
-oBo
+kms
+uwI
vbR
vbR
fnz
@@ -109941,7 +109934,7 @@ tIE
aJN
aJN
aJN
-uJZ
+aJN
aJN
doX
doX
@@ -112269,7 +112262,7 @@ jAV
wOp
kbE
vgf
-iLk
+dJz
nSu
xXT
cek
@@ -112523,7 +112516,7 @@ kIL
lao
lui
ssY
-isW
+hPq
kbW
nfS
uLf
@@ -121305,7 +121298,7 @@ qJr
qJr
fky
lkV
-tDM
+whF
okW
kQt
fUo
@@ -123612,9 +123605,9 @@ rle
wTJ
wrv
ejx
-tno
-qiH
-mmf
+bry
+heT
+teE
qei
xwQ
wCH
@@ -132060,7 +132053,7 @@ dDB
dDB
dDB
dDB
-dDB
+wPf
dDB
dDB
dDB
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index ad05d3cb906c63..bb4f8c4c16b49b 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -23,13 +23,6 @@
},
/turf/closed/wall/r_wall,
/area/station/maintenance/solars/port/fore)
-"aaj" = (
-/obj/structure/bed/dogbed/renault,
-/obj/machinery/newscaster/directional/south,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/mob/living/basic/pet/fox/renault,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/captain)
"aaz" = (
/obj/effect/landmark/start/hangover,
/obj/structure/chair/stool/directional/east,
@@ -285,6 +278,11 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/grimy,
/area/station/command/bridge)
+"adE" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/plating,
+/area/station/maintenance/port/aft)
"adF" = (
/obj/effect/turf_decal/stripes/corner{
dir = 8
@@ -376,6 +374,18 @@
},
/turf/open/floor/iron/white,
/area/station/science/xenobiology)
+"aeD" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/camera/directional/east{
+ c_tag = "Cargo Bay - Delivery Office";
+ name = "cargo camera"
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/light/directional/east,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/station/cargo/sorting)
"aeE" = (
/obj/structure/table/reinforced,
/obj/item/stack/package_wrap,
@@ -1280,6 +1290,14 @@
},
/turf/open/floor/iron,
/area/station/maintenance/port/aft)
+"apf" = (
+/obj/machinery/mech_bay_recharge_port{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"apu" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
@@ -2187,6 +2205,16 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
+"azD" = (
+/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"azE" = (
/obj/effect/turf_decal/tile/red/opposingcorners,
/obj/effect/turf_decal/tile/yellow/opposingcorners{
@@ -2527,17 +2555,20 @@
/obj/item/clothing/under/rank/civilian/lawyer/black/skirt,
/turf/open/floor/wood,
/area/station/commons/dorms)
+"aFb" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/loading_area{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"aFo" = (
/obj/structure/lattice,
/obj/structure/grille/broken,
/turf/open/space,
/area/space/nearstation)
-"aFs" = (
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
"aFv" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -2745,11 +2776,6 @@
/obj/item/toy/figure/chef,
/turf/open/floor/iron/dark,
/area/station/service/kitchen)
-"aHw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/maintenance/port/aft)
"aHC" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/status_display/evac/directional/east,
@@ -3270,6 +3296,11 @@
/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted,
/turf/open/floor/iron/dark,
/area/station/medical/morgue)
+"aOd" = (
+/obj/structure/table/wood,
+/obj/item/paper/fluff/jobs/engineering/frequencies,
+/turf/open/floor/iron/grimy,
+/area/station/tcommsat/computer)
"aOf" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -3418,15 +3449,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/science/robotics/lab)
-"aPD" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"aPO" = (
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
/obj/effect/turf_decal/tile/yellow{
@@ -3558,6 +3580,12 @@
},
/turf/open/floor/iron,
/area/station/security/prison/safe)
+"aRX" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/turf_decal/tile/red/fourcorners,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/iron,
+/area/station/service/kitchen/abandoned)
"aRZ" = (
/obj/structure/dresser,
/obj/item/radio/intercom/directional/east,
@@ -4053,6 +4081,21 @@
/obj/effect/spawner/structure/window/reinforced/plasma,
/turf/open/floor/plating,
/area/station/engineering/main)
+"aZj" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/structure/table/reinforced,
+/obj/item/clothing/glasses/welding,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/item/weldingtool/empty{
+ pixel_y = 8;
+ pixel_x = 9
+ },
+/obj/machinery/power/apc/auto_name/directional/south,
+/obj/structure/cable,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"aZo" = (
/obj/structure/table/reinforced,
/obj/item/electronics/airalarm,
@@ -4984,13 +5027,6 @@
},
/turf/open/floor/iron/grimy,
/area/station/command/heads_quarters/hos)
-"bkr" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/conveyor{
- id = "cargodisposals"
- },
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
"bkD" = (
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
@@ -5127,6 +5163,16 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/hallway/primary/central/fore)
+"bmo" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 4
+ },
+/turf/open/floor/iron/herringbone,
+/area/station/cargo/miningoffice)
"bmp" = (
/obj/machinery/status_display/ai/directional/north,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -6658,6 +6704,13 @@
},
/turf/open/floor/iron/dark/corner,
/area/station/maintenance/disposal/incinerator)
+"bFA" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron/herringbone,
+/area/station/cargo/miningoffice)
"bFS" = (
/obj/effect/turf_decal/trimline/blue/filled/warning,
/obj/structure/cable,
@@ -6870,6 +6923,13 @@
},
/turf/open/floor/iron,
/area/station/construction/mining/aux_base)
+"bHd" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/table/wood,
+/obj/item/radio/intercom/command,
+/obj/item/paper/fluff/jobs/engineering/frequencies,
+/turf/open/floor/carpet,
+/area/station/command/meeting_room/council)
"bHg" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/corner,
@@ -7294,28 +7354,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/department/science)
-"bLN" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/toolbox/emergency{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/storage/toolbox/emergency,
-/obj/item/shovel,
-/obj/item/shovel,
-/obj/item/pickaxe,
-/obj/item/pickaxe,
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/small/directional/south,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/machinery/light_switch/directional/west{
- pixel_x = -38
- },
-/obj/machinery/airalarm/directional/south,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"bLP" = (
/obj/machinery/camera/directional/east{
c_tag = "Permabrig - Kitchen Entrance";
@@ -7389,12 +7427,6 @@
/obj/effect/turf_decal/trimline/purple/filled/warning,
/turf/open/floor/iron/white,
/area/station/science/lab)
-"bMw" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/space,
-/area/space/nearstation)
"bMB" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -7676,6 +7708,14 @@
dir = 8
},
/area/station/science/lobby)
+"bRs" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 8
+ },
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/plating,
+/area/station/maintenance/port)
"bRw" = (
/obj/structure/sign/warning/deathsposal/directional/east,
/obj/machinery/disposal/bin,
@@ -8187,17 +8227,6 @@
},
/turf/open/floor/iron,
/area/station/commons/fitness/recreation)
-"bWw" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/machinery/status_display/door_timer{
- id = "Isolation_Cell";
- name = "Isolation Cell";
- pixel_x = -32
- },
-/turf/open/floor/iron,
-/area/station/security/execution/transfer)
"bWD" = (
/obj/effect/turf_decal/siding/wood{
dir = 4
@@ -8428,6 +8457,16 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
+"bZe" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/glass,
+/obj/machinery/duct,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/mob/living/basic/cockroach,
+/turf/open/floor/iron,
+/area/station/medical/abandoned)
"bZz" = (
/obj/structure/table/wood,
/obj/item/folder,
@@ -9143,6 +9182,24 @@
"cjN" = (
/turf/closed/wall/r_wall,
/area/station/security/office)
+"cjO" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/generic,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/start/bitrunner,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"ckb" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable,
@@ -10099,17 +10156,6 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/turf/open/floor/iron,
/area/station/security/prison/safe)
-"cvc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/maintenance/department/science)
"cvo" = (
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable,
@@ -10150,12 +10196,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/hop)
-"cwd" = (
-/obj/machinery/light/directional/south,
-/obj/machinery/byteforge,
-/obj/effect/turf_decal/box,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/bitrunning/den)
"cwe" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -10207,22 +10247,6 @@
/obj/structure/sign/warning/radiation/directional/south,
/turf/open/floor/iron,
/area/station/engineering/supermatter/room)
-"cwK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 4
- },
-/obj/effect/turf_decal/delivery,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/maintenance/starboard/fore)
"cwV" = (
/obj/effect/landmark/start/hangover,
/obj/structure/disposalpipe/segment{
@@ -10291,14 +10315,6 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/iron,
/area/station/engineering/storage/tech)
-"cxv" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/maintenance/fore)
"cxM" = (
/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/stripes/line,
@@ -10333,11 +10349,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/medical/treatment_center)
-"cyc" = (
-/obj/machinery/netpod,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/bitrunning/den)
"cyq" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -11092,9 +11103,6 @@
/obj/item/radio/intercom/directional/north,
/turf/open/floor/iron/grimy,
/area/station/tcommsat/computer)
-"cGV" = (
-/turf/closed/wall,
-/area/station/bitrunning/den)
"cHb" = (
/obj/machinery/door/firedoor/heavy,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -11653,13 +11661,6 @@
/obj/effect/spawner/random/trash/janitor_supplies,
/turf/open/floor/plating,
/area/station/maintenance/fore)
-"cOS" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/fore)
"cOU" = (
/obj/structure/weightmachine/weightlifter,
/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
@@ -11890,6 +11891,13 @@
/obj/machinery/light/small/directional/west,
/turf/open/floor/plating,
/area/station/maintenance/department/eva/abandoned)
+"cRR" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/structure/table,
+/obj/item/storage/medkit/regular,
+/obj/machinery/light/directional/west,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"cRT" = (
/turf/open/floor/iron,
/area/station/medical/abandoned)
@@ -12016,6 +12024,13 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
+"cTv" = (
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"cTy" = (
/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{
dir = 1
@@ -12733,6 +12748,18 @@
/obj/effect/landmark/event_spawn,
/turf/open/floor/plating,
/area/station/service/library/abandoned)
+"ddp" = (
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/item/mod/module/plasma_stabilizer,
+/obj/item/mod/module/thermal_regulator,
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/digital_clock/directional/south,
+/obj/item/mod/module/signlang_radio,
+/turf/open/floor/iron,
+/area/station/medical/storage)
"dds" = (
/obj/machinery/camera/directional/east{
c_tag = "Virology - Break Room";
@@ -13270,6 +13297,19 @@
},
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
+"dkr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/chair/office,
+/obj/machinery/status_display/supply{
+ pixel_x = 32
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/cargo/sorting)
"dkz" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/light/small/directional/west,
@@ -13798,6 +13838,12 @@
dir = 4
},
/area/station/science/lobby)
+"dsb" = (
+/obj/machinery/netpod,
+/obj/structure/sign/poster/random/directional/north,
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"dse" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -14020,18 +14066,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/xenobiology)
-"dux" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/brown/half{
- dir = 4
- },
-/obj/item/clipboard,
-/obj/item/toy/figure/miner,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/cargo/miningoffice)
"duA" = (
/turf/closed/wall/r_wall,
/area/station/command/corporate_showroom)
@@ -14311,6 +14345,11 @@
"dxe" = (
/turf/closed/wall,
/area/station/medical/abandoned)
+"dxh" = (
+/obj/structure/table/wood,
+/obj/item/aquarium_kit,
+/turf/open/floor/carpet/red,
+/area/station/hallway/secondary/service)
"dxi" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/door/window{
@@ -15250,6 +15289,17 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/aisat_interior)
+"dKR" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/plating,
+/area/station/maintenance/department/science)
"dLd" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -15681,18 +15731,19 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/command/gateway)
+"dPv" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/cargo/storage)
"dPB" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plating,
/area/station/engineering/supermatter/room)
-"dPC" = (
-/obj/structure/closet/secure_closet/miner,
-/obj/effect/turf_decal/delivery,
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"dPD" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -15858,15 +15909,6 @@
/obj/effect/turf_decal/tile/brown/half/contrasted,
/turf/open/floor/iron,
/area/station/cargo/lobby)
-"dRQ" = (
-/obj/structure/table/glass,
-/obj/item/surgery_tray/full,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/item/clothing/gloves/latex,
-/obj/item/clothing/suit/apron/surgical,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/medical/surgery/theatre)
"dSj" = (
/obj/effect/spawner/random/engineering/tracking_beacon,
/obj/effect/landmark/event_spawn,
@@ -16095,6 +16137,16 @@
},
/turf/open/floor/iron,
/area/station/commons/fitness/recreation)
+"dVA" = (
+/obj/structure/cable,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/neutral/half/contrasted{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/station/maintenance/fore)
"dVC" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -16233,14 +16285,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/maintenance/port)
-"dXs" = (
-/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 4
- },
-/obj/structure/table/reinforced,
-/obj/item/flashlight/lamp,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"dXw" = (
/obj/structure/sign/painting/large/library_private{
dir = 1;
@@ -16287,6 +16331,13 @@
/obj/effect/landmark/start/medical_doctor,
/turf/open/floor/iron/white,
/area/station/medical/medbay)
+"dXX" = (
+/obj/structure/closet/secure_closet/miner,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light/directional/north,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"dYj" = (
/turf/closed/wall/r_wall,
/area/station/engineering/atmos/hfr_room)
@@ -16672,6 +16723,13 @@
/obj/machinery/light/small/directional/north,
/turf/open/floor/iron,
/area/station/engineering/atmos/hfr_room)
+"ecX" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor{
+ id = "cargodisposals"
+ },
+/turf/open/floor/plating,
+/area/station/cargo/sorting)
"eda" = (
/obj/structure/chair/sofa/bench{
dir = 8
@@ -17062,6 +17120,11 @@
/obj/effect/turf_decal/tile/bar/opposingcorners,
/turf/open/floor/iron/dark,
/area/station/service/bar)
+"eit" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/mob/living/basic/cockroach,
+/turf/open/floor/iron/dark,
+/area/station/service/abandoned_gambling_den)
"eiw" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -17153,19 +17216,6 @@
},
/turf/open/floor/iron,
/area/station/command/heads_quarters/qm)
-"eke" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral/half/contrasted{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/maintenance/fore)
"ekM" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb/cobweb2,
@@ -17240,12 +17290,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/command/gateway)
-"elO" = (
-/obj/effect/landmark/event_spawn,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"elP" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/tile/yellow/fourcorners,
@@ -17323,18 +17367,6 @@
},
/turf/open/floor/plating,
/area/station/maintenance/department/engine/atmos)
-"emZ" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "garbage"
- },
-/obj/machinery/recycler{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
"enc" = (
/obj/machinery/status_display/evac/directional/east,
/obj/item/kirbyplants/photosynthetic{
@@ -17647,6 +17679,12 @@
/obj/effect/turf_decal/tile/purple/opposingcorners,
/turf/open/floor/iron/textured,
/area/station/maintenance/port/aft)
+"ero" = (
+/obj/structure/bed/dogbed/mcgriff,
+/obj/effect/turf_decal/tile/red/anticorner/contrasted,
+/mob/living/basic/pet/dog/pug/mcgriff,
+/turf/open/floor/iron,
+/area/station/security/warden)
"ers" = (
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
@@ -18543,6 +18581,28 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/iron,
/area/station/engineering/storage/tech)
+"eCQ" = (
+/obj/structure/rack,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/storage/toolbox/emergency{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/storage/toolbox/emergency,
+/obj/item/shovel,
+/obj/item/shovel,
+/obj/item/pickaxe,
+/obj/item/pickaxe,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light/small/directional/south,
+/obj/machinery/power/apc/auto_name/directional/west,
+/obj/machinery/light_switch/directional/west{
+ pixel_x = -38
+ },
+/obj/machinery/airalarm/directional/south,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"eCR" = (
/obj/effect/turf_decal/trimline/neutral/filled/corner{
dir = 4
@@ -18668,6 +18728,14 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/starboard/aft)
+"eEI" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible,
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/duct,
+/mob/living/basic/goat/pete,
+/turf/open/floor/iron/freezer,
+/area/station/service/kitchen/coldroom)
"eFj" = (
/obj/structure/window/reinforced/spawner/directional/west,
/obj/structure/window/reinforced/spawner/directional/north,
@@ -18728,18 +18796,6 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
-"eFU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/starboard/fore)
"eGb" = (
/obj/effect/spawner/random/trash/mess,
/turf/open/floor/wood,
@@ -19070,6 +19126,16 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/grimy,
/area/station/service/lawoffice)
+"eJx" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/landmark/blobstart,
+/obj/effect/turf_decal/tile/red/opposingcorners,
+/obj/effect/turf_decal/tile/yellow/opposingcorners{
+ dir = 1
+ },
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/iron,
+/area/station/service/kitchen/abandoned)
"eJy" = (
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt,
@@ -19708,6 +19774,14 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/ai_monitored/turret_protected/aisat_interior)
+"eQG" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron/herringbone,
+/area/station/cargo/miningoffice)
"eQK" = (
/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{
dir = 1
@@ -20039,6 +20113,11 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/command/bridge)
+"eVc" = (
+/obj/effect/landmark/blobstart,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/plating,
+/area/station/maintenance/solars/starboard/aft)
"eVk" = (
/obj/structure/disposalpipe/sorting/mail/flip{
dir = 4;
@@ -20070,6 +20149,13 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/engineering/atmos)
+"eVz" = (
+/obj/structure/cable,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/station/maintenance/fore)
"eVE" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -20292,29 +20378,6 @@
},
/turf/open/floor/glass,
/area/station/maintenance/space_hut/observatory)
-"eYo" = (
-/obj/structure/table/reinforced,
-/obj/item/gun/energy/laser/carbine/practice{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/gun/energy/laser/practice,
-/obj/item/clothing/ears/earmuffs,
-/obj/item/clothing/ears/earmuffs,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"eYt" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/computer/order_console/mining,
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/firealarm/directional/west{
- pixel_y = -9
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"eYy" = (
/obj/structure/cable,
/obj/structure/closet/secure_closet/atmospherics,
@@ -20398,13 +20461,6 @@
/obj/effect/mapping_helpers/airlock/access/all/security/general,
/turf/open/floor/iron,
/area/station/security/checkpoint/escape)
-"eYZ" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/sorting)
"eZe" = (
/obj/machinery/vending/wardrobe/viro_wardrobe,
/obj/structure/sign/poster/official/cleanliness/directional/west,
@@ -20506,10 +20562,6 @@
/obj/effect/decal/cleanable/cobweb,
/turf/open/floor/iron/smooth,
/area/station/maintenance/department/science/xenobiology)
-"fbu" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/bitrunning/den)
"fbA" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -20946,6 +20998,18 @@
/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/station/service/theater/abandoned)
+"fgk" = (
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=hall12";
+ location = "hall11"
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/mob/living/simple_animal/bot/secbot/beepsky/officer,
+/turf/open/floor/iron,
+/area/station/hallway/primary/starboard)
"fgq" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -21100,11 +21164,6 @@
},
/turf/open/floor/wood,
/area/station/service/library/abandoned)
-"fiu" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/mob/living/basic/cockroach,
-/turf/open/floor/iron/dark,
-/area/station/service/abandoned_gambling_den)
"fix" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -21120,13 +21179,6 @@
/obj/effect/turf_decal/tile/purple,
/turf/open/floor/iron/white,
/area/station/science/robotics/lab)
-"fiJ" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/maintenance/fore)
"fiL" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -21447,6 +21499,21 @@
},
/turf/open/floor/wood,
/area/station/service/library/abandoned)
+"fmH" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/station/maintenance/starboard/fore)
"fmI" = (
/obj/machinery/bluespace_vendor/directional/south,
/obj/effect/turf_decal/tile/neutral,
@@ -21990,13 +22057,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/grimy,
/area/station/service/library)
-"ftS" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/iron/herringbone,
-/area/station/cargo/miningoffice)
"ftU" = (
/obj/structure/cable,
/obj/effect/turf_decal/siding/yellow,
@@ -22074,6 +22134,13 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
+"fvD" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/line{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"fvE" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/engine,
@@ -22247,6 +22314,10 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/central/fore)
+"fxx" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"fxP" = (
/obj/machinery/computer/security/telescreen/entertainment/directional/west,
/obj/structure/table/wood,
@@ -22433,16 +22504,6 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/iron,
/area/station/engineering/storage)
-"fAj" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/herringbone,
-/area/station/cargo/miningoffice)
"fAn" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
@@ -23017,6 +23078,12 @@
},
/turf/open/floor/iron/dark/smooth_large,
/area/station/security/evidence)
+"fIe" = (
+/obj/effect/turf_decal/trimline/blue/filled/warning{
+ dir = 4
+ },
+/turf/open/floor/iron/white,
+/area/station/science/lobby)
"fIg" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -23088,6 +23155,18 @@
},
/turf/open/floor/iron,
/area/station/maintenance/department/crew_quarters/bar)
+"fIU" = (
+/obj/structure/rack,
+/obj/item/gun/energy/laser/carbine/practice{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/gun/energy/laser/practice,
+/obj/effect/turf_decal/bot,
+/obj/machinery/firealarm/directional/east,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron/dark,
+/area/station/science/auxlab/firing_range)
"fIW" = (
/obj/structure/table,
/obj/structure/bedsheetbin,
@@ -23620,17 +23699,6 @@
},
/turf/open/floor/iron,
/area/station/command/teleporter)
-"fQC" = (
-/obj/structure/table,
-/obj/item/mod/module/plasma_stabilizer,
-/obj/item/mod/module/thermal_regulator,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 5
- },
-/obj/item/radio/intercom/directional/south,
-/obj/item/mod/module/signlang_radio,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
"fQF" = (
/obj/effect/mapping_helpers/airlock/access/all/command/general,
/obj/structure/cable,
@@ -23798,16 +23866,6 @@
"fSW" = (
/turf/closed/indestructible/opshuttle,
/area/station/science/ordnance/bomb)
-"fTh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/blobstart,
-/obj/effect/turf_decal/tile/red/opposingcorners,
-/obj/effect/turf_decal/tile/yellow/opposingcorners{
- dir = 1
- },
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron,
-/area/station/service/kitchen/abandoned)
"fTw" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
/obj/effect/turf_decal/bot,
@@ -23848,6 +23906,12 @@
/obj/effect/turf_decal/siding/wood,
/turf/open/floor/wood,
/area/station/service/library)
+"fTE" = (
+/obj/machinery/cryo_cell{
+ dir = 8
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/medical/cryo)
"fTF" = (
/obj/machinery/atmospherics/pipe/smart/simple/green/visible,
/obj/structure/window/reinforced/spawner/directional/west,
@@ -23916,12 +23980,6 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/station/commons/fitness/recreation)
-"fUr" = (
-/obj/machinery/cryo_cell{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/medical/cryo)
"fUF" = (
/obj/structure/table/reinforced,
/obj/structure/window/reinforced/spawner/directional/east,
@@ -24403,27 +24461,6 @@
/obj/effect/landmark/navigate_destination,
/turf/open/floor/iron,
/area/station/security/courtroom)
-"gan" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/newscaster/directional/east,
-/obj/effect/spawner/random/structure/table_fancy,
-/obj/item/reagent_containers/cup/glass/bottle/beer{
- desc = "Whatever it is, it reeks of foul, putrid froth.";
- list_reagents = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 15);
- name = "Delta-Down";
- pixel_x = 5;
- pixel_y = 5
- },
-/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
- pixel_x = -3;
- pixel_y = 6
- },
-/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
- pixel_x = -6;
- pixel_y = 3
- },
-/turf/open/floor/wood,
-/area/station/commons/dorms)
"gat" = (
/obj/machinery/door/poddoor/preopen{
id = "brigprison";
@@ -24608,16 +24645,6 @@
},
/turf/open/floor/iron,
/area/station/service/hydroponics)
-"gco" = (
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"gcr" = (
/obj/effect/turf_decal/tile/neutral/half/contrasted,
/turf/open/floor/iron,
@@ -25039,6 +25066,11 @@
/obj/effect/turf_decal/siding/white,
/turf/open/floor/iron,
/area/station/hallway/secondary/exit/departure_lounge)
+"ggW" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/station/security/lockers)
"gho" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -25284,6 +25316,16 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/grimy,
/area/station/tcommsat/computer)
+"gkt" = (
+/obj/effect/turf_decal/caution/stand_clear,
+/obj/effect/turf_decal/box,
+/obj/machinery/door/poddoor/shutters{
+ dir = 8;
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"gku" = (
/obj/machinery/meter,
/obj/machinery/door/window/right/directional/west,
@@ -25607,6 +25649,18 @@
},
/turf/open/floor/iron/dark,
/area/station/maintenance/port)
+"goa" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/iron,
+/area/station/maintenance/starboard/aft)
"goc" = (
/obj/machinery/keycard_auth/directional/south{
pixel_y = -38
@@ -25731,6 +25785,18 @@
/obj/structure/reflector/single,
/turf/open/floor/plating,
/area/station/engineering/supermatter/room)
+"gpD" = (
+/obj/item/kirbyplants/random,
+/obj/effect/turf_decal/tile/brown/half{
+ dir = 8
+ },
+/obj/machinery/light/directional/west,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/sign/poster/official/random/directional/west,
+/turf/open/floor/iron/half{
+ dir = 1
+ },
+/area/station/cargo/miningoffice)
"gpI" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -26105,6 +26171,13 @@
/obj/item/toy/cards/deck,
/turf/open/floor/iron/grimy,
/area/station/service/abandoned_gambling_den)
+"gty" = (
+/obj/structure/table/reinforced,
+/obj/item/folder/yellow,
+/obj/item/gps/mining,
+/obj/effect/turf_decal/tile/brown/anticorner/contrasted,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"gtG" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -26158,14 +26231,6 @@
},
/turf/open/floor/iron,
/area/station/commons/storage/primary)
-"guj" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"gum" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -26562,11 +26627,6 @@
/obj/effect/mapping_helpers/mail_sorting/service/law_office,
/turf/open/floor/plating,
/area/station/maintenance/department/security)
-"gzc" = (
-/obj/structure/table/wood,
-/obj/item/aquarium_kit,
-/turf/open/floor/carpet/red,
-/area/station/hallway/secondary/service)
"gzj" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/start/prisoner,
@@ -26801,6 +26861,19 @@
/obj/effect/turf_decal/tile/neutral/half/contrasted,
/turf/open/floor/iron,
/area/station/commons/dorms)
+"gCa" = (
+/obj/effect/turf_decal/caution/stand_clear,
+/obj/effect/turf_decal/box,
+/obj/machinery/door/poddoor/shutters{
+ dir = 8;
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"gCn" = (
/obj/structure/sign/warning/electric_shock/directional/east,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -27231,6 +27304,10 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/research)
+"gHq" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/station/bitrunning/den)
"gHt" = (
/obj/item/kirbyplants/random,
/obj/machinery/button/door/directional/north{
@@ -27784,11 +27861,6 @@
},
/turf/open/floor/iron,
/area/station/security/prison)
-"gOH" = (
-/obj/effect/landmark/blobstart,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/fore)
"gOR" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -28163,16 +28235,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/station/medical/cryo)
-"gTH" = (
-/obj/machinery/flasher/directional/south{
- id = "Isolation_Cell"
- },
-/obj/machinery/light/small/broken/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/security/prison/safe)
"gTO" = (
/obj/structure/table/wood,
/obj/item/crowbar/red,
@@ -28342,6 +28404,11 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/commons/storage/primary)
+"gVv" = (
+/obj/machinery/netpod,
+/obj/effect/decal/cleanable/robot_debris,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"gVx" = (
/obj/structure/cable,
/obj/machinery/door/window/brigdoor/right/directional/south{
@@ -29375,13 +29442,6 @@
/obj/effect/landmark/start/hangover,
/turf/open/floor/iron/white/smooth_large,
/area/station/medical/medbay)
-"hkn" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"hkt" = (
/obj/effect/spawner/random/engineering/tank,
/turf/open/floor/plating,
@@ -29847,6 +29907,28 @@
/obj/machinery/newscaster/directional/north,
/turf/open/floor/wood,
/area/station/maintenance/starboard/aft)
+"hrz" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/corner{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"hrG" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -30090,14 +30172,6 @@
/obj/effect/turf_decal/trimline/blue/filled/line,
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
-"huS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/obj/effect/mapping_helpers/burnt_floor,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron,
-/area/station/maintenance/department/electrical)
"huX" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/disposalpipe/segment{
@@ -30336,6 +30410,13 @@
/obj/effect/turf_decal/tile/neutral/anticorner/contrasted,
/turf/open/floor/iron,
/area/station/maintenance/department/chapel)
+"hxP" = (
+/obj/structure/bed/dogbed/renault,
+/obj/machinery/newscaster/directional/south,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/mob/living/basic/pet/fox/renault,
+/turf/open/floor/iron/dark,
+/area/station/command/heads_quarters/captain)
"hxS" = (
/turf/open/floor/carpet/royalblack,
/area/station/service/chapel/office)
@@ -30379,6 +30460,20 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
+"hyR" = (
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 5
+ },
+/obj/machinery/vending/wardrobe/sec_wardrobe,
+/obj/machinery/button/door/directional/east{
+ name = "Security Mech Garage Door Controls";
+ id = "secmechbay";
+ req_access = list("security")
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/station/security/lockers)
"hza" = (
/obj/effect/turf_decal/tile/yellow{
dir = 8
@@ -30399,10 +30494,6 @@
},
/turf/open/floor/glass/reinforced,
/area/station/maintenance/department/science/xenobiology)
-"hzs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"hzx" = (
/obj/machinery/firealarm/directional/west,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
@@ -31277,6 +31368,13 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/hos)
+"hMp" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 1
+ },
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/plating,
+/area/station/maintenance/port)
"hMx" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -31395,6 +31493,11 @@
},
/turf/open/floor/iron,
/area/station/engineering/main)
+"hOk" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/security/lockers)
"hOw" = (
/obj/structure/chair/office{
dir = 4
@@ -32095,6 +32198,9 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/maintenance/department/science)
+"hXg" = (
+/turf/closed/wall,
+/area/station/bitrunning/den)
"hXi" = (
/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -32764,6 +32870,13 @@
/obj/structure/window/reinforced/spawner/directional/south,
/turf/open/space,
/area/space/nearstation)
+"idX" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/loading_area{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"iee" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -33024,16 +33137,6 @@
},
/turf/open/floor/plating,
/area/station/medical/virology)
-"iio" = (
-/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"iiy" = (
/obj/structure/easel,
/turf/open/floor/iron,
@@ -33715,6 +33818,18 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/central/fore)
+"irx" = (
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/duct,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/iron,
+/area/station/maintenance/department/chapel)
"irD" = (
/obj/machinery/door/firedoor,
/obj/effect/mapping_helpers/airlock/access/all/medical/general,
@@ -33854,13 +33969,6 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/station/maintenance/port/fore)
-"itC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/starboard/aft)
"itF" = (
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
dir = 6
@@ -34283,14 +34391,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/hallway/secondary/entry)
-"izj" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/herringbone,
-/area/station/cargo/miningoffice)
"izo" = (
/obj/structure/table/wood,
/obj/item/gavelblock,
@@ -34332,6 +34432,14 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/command/heads_quarters/hos)
+"izK" = (
+/obj/machinery/door/airlock/mining{
+ name = "Mining Dock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"izM" = (
/obj/structure/closet/crate/trashcart/laundry,
/obj/effect/spawner/random/contraband/prison,
@@ -34481,11 +34589,6 @@
},
/turf/open/floor/wood,
/area/station/medical/psychology)
-"iBH" = (
-/obj/structure/table/wood,
-/obj/item/paper/fluff/jobs/engineering/frequencies,
-/turf/open/floor/iron/grimy,
-/area/station/tcommsat/computer)
"iBO" = (
/obj/machinery/power/turbine/inlet_compressor,
/turf/open/floor/engine,
@@ -34609,6 +34712,14 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/service/abandoned_gambling_den)
+"iDm" = (
+/obj/machinery/status_display/evac/directional/west,
+/obj/structure/filingcabinet/chestdrawer,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/machinery/newscaster/directional/north,
+/mob/living/simple_animal/parrot/poly,
+/turf/open/floor/iron/dark,
+/area/station/command/heads_quarters/ce)
"iDq" = (
/turf/closed/wall/r_wall,
/area/station/security/range)
@@ -34876,6 +34987,12 @@
/obj/machinery/light/floor,
/turf/open/floor/iron/dark,
/area/station/command/bridge)
+"iGF" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible/layer4,
+/obj/machinery/air_sensor/engine_chamber,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter)
"iGI" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/maintenance_hatch{
@@ -34927,6 +35044,14 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/security/holding_cell)
+"iHn" = (
+/obj/machinery/computer/mech_bay_power_console{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"iHq" = (
/obj/effect/turf_decal/trimline/neutral/warning{
dir = 10
@@ -35744,6 +35869,25 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/medical/coldroom)
+"iTM" = (
+/obj/structure/table/reinforced,
+/obj/item/stack/sheet/rglass{
+ amount = 50;
+ pixel_x = 2;
+ pixel_y = -2
+ },
+/obj/item/stock_parts/cell/emproof{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/newscaster/directional/east,
+/obj/item/mod/module/plasma_stabilizer,
+/obj/item/mod/module/thermal_regulator,
+/obj/item/mod/module/magboot,
+/obj/item/mod/module/signlang_radio,
+/turf/open/floor/iron,
+/area/station/engineering/storage)
"iTW" = (
/obj/structure/closet/emcloset,
/obj/effect/decal/cleanable/dirt,
@@ -36022,15 +36166,6 @@
},
/turf/open/floor/iron,
/area/station/engineering/lobby)
-"iXd" = (
-/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/start/shaft_miner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"iXj" = (
/obj/effect/landmark/start/hangover,
/obj/effect/turf_decal/bot,
@@ -36100,14 +36235,6 @@
/obj/effect/mapping_helpers/airlock/access/all/security/general,
/turf/open/floor/iron,
/area/station/security/checkpoint/escape)
-"iXE" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/aisat/exterior)
"iXM" = (
/obj/structure/cable,
/obj/item/kirbyplants/random,
@@ -36287,6 +36414,17 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
+"jag" = (
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/mapping_helpers/broken_floor,
+/obj/effect/turf_decal/trimline/white/warning{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/mob/living/simple_animal/hostile/retaliate/goose/vomit,
+/turf/open/floor/iron/dark,
+/area/station/service/abandoned_gambling_den)
"jap" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -36853,13 +36991,6 @@
/obj/structure/sign/warning/secure_area/directional/west,
/turf/open/floor/plating,
/area/station/engineering/atmos/mix)
-"jfO" = (
-/obj/structure/closet/wardrobe/miner,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/backpack/satchel/explorer,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"jfP" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -37025,6 +37156,7 @@
/obj/effect/turf_decal/trimline/red/filled/warning{
dir = 1
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/security/lockers)
"jhs" = (
@@ -37483,13 +37615,6 @@
/obj/effect/turf_decal/tile/neutral/anticorner/contrasted,
/turf/open/floor/iron,
/area/station/security/courtroom)
-"jnd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
"jni" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/mapping_helpers/airlock/access/all/science/robotics,
@@ -37637,21 +37762,6 @@
/obj/item/clothing/suit/toggle/labcoat,
/turf/open/floor/plating,
/area/station/maintenance/port/aft)
-"joP" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/maintenance_hatch{
- name = "Cargo Maintenance"
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/access/all/supply/general,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/maintenance/fore)
"joU" = (
/obj/structure/table,
/obj/item/paper_bin,
@@ -38046,6 +38156,13 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/science/xenobiology)
+"juz" = (
+/obj/structure/cable,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/plating,
+/area/station/maintenance/fore)
"juF" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -38098,6 +38215,16 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/central/aft)
+"jvp" = (
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/delivery,
+/obj/effect/turf_decal/tile/neutral/anticorner/contrasted,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/station/maintenance/fore)
"jvq" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -38314,6 +38441,19 @@
/obj/effect/mapping_helpers/mail_sorting/medbay/chemistry,
/turf/open/floor/iron/white,
/area/station/medical/medbay)
+"jyL" = (
+/obj/structure/cable,
+/obj/structure/disposalpipe/junction/yjunction{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/neutral/half/contrasted{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/station/maintenance/fore)
"jyP" = (
/obj/effect/turf_decal/siding/dark_blue{
dir = 8
@@ -38352,6 +38492,11 @@
/obj/effect/turf_decal/tile/neutral/full,
/turf/open/floor/iron/dark/smooth_large,
/area/station/security/evidence)
+"jyZ" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"jzb" = (
/obj/machinery/door/poddoor/shutters{
dir = 4;
@@ -38567,11 +38712,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/science/lobby)
-"jBM" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"jCb" = (
/obj/machinery/computer/records/security{
dir = 8
@@ -38655,13 +38795,6 @@
/obj/item/pen,
/turf/open/floor/wood,
/area/station/service/library/abandoned)
-"jCu" = (
-/obj/structure/closet/secure_closet/miner,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"jCv" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/hydroponics/constructable,
@@ -39309,18 +39442,6 @@
/obj/effect/turf_decal/tile/blue/opposingcorners,
/turf/open/floor/iron/white,
/area/station/command/heads_quarters/cmo)
-"jKY" = (
-/obj/effect/decal/cleanable/oil/streak,
-/obj/machinery/camera/directional/south,
-/obj/structure/table,
-/obj/item/storage/toolbox/mechanical{
- pixel_y = 7
- },
-/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind{
- pixel_x = 5
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/bitrunning/den)
"jLa" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/railing{
@@ -39903,19 +40024,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/white,
/area/station/medical/medbay)
-"jRc" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/starboard/fore)
"jRg" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
@@ -40100,6 +40208,19 @@
},
/turf/open/floor/iron,
/area/station/maintenance/department/eva/abandoned)
+"jTH" = (
+/obj/structure/table/glass,
+/obj/machinery/status_display/ai/directional/west,
+/obj/machinery/newscaster/directional/north,
+/obj/effect/turf_decal/siding/dark_red,
+/obj/item/storage/box/bandages{
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/cup/bottle/morphine,
+/obj/item/reagent_containers/syringe,
+/turf/open/floor/iron/dark,
+/area/station/security/execution/transfer)
"jTI" = (
/obj/structure/table/wood,
/obj/machinery/newscaster/directional/north,
@@ -41658,6 +41779,17 @@
/obj/effect/turf_decal/tile/blue/opposingcorners,
/turf/open/floor/iron/white,
/area/station/medical/storage)
+"knp" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/structure/table/reinforced,
+/obj/item/cigbutt/cigarbutt,
+/obj/item/stack/cable_coil{
+ pixel_x = -10;
+ pixel_y = 7
+ },
+/obj/machinery/airalarm/directional/south,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"knu" = (
/obj/structure/cable,
/obj/effect/turf_decal/tile/green{
@@ -41864,6 +41996,18 @@
/obj/effect/landmark/event_spawn,
/turf/open/floor/iron/grimy,
/area/station/tcommsat/computer)
+"kqJ" = (
+/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
+ dir = 1
+ },
+/obj/effect/landmark/start/shaft_miner,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"kqM" = (
/obj/effect/turf_decal/stripes/corner{
dir = 1
@@ -42069,6 +42213,17 @@
/obj/structure/cable/layer3,
/turf/open/floor/circuit/green,
/area/station/ai_monitored/turret_protected/ai)
+"kuj" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
+/obj/machinery/door/airlock/mining/glass{
+ name = "Bitrunning Den"
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"kun" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable,
@@ -42616,13 +42771,6 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
-"kBE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/table/wood,
-/obj/item/radio/intercom/command,
-/obj/item/paper/fluff/jobs/engineering/frequencies,
-/turf/open/floor/carpet,
-/area/station/command/meeting_room/council)
"kBH" = (
/obj/machinery/status_display/evac/directional/west,
/obj/machinery/chem_master,
@@ -42766,15 +42914,6 @@
/obj/structure/chair/pew/right,
/turf/open/floor/iron/chapel,
/area/station/service/chapel)
-"kDv" = (
-/obj/structure/bed/dogbed/runtime,
-/obj/item/radio/intercom/directional/south,
-/obj/effect/turf_decal/tile/neutral/half/contrasted{
- dir = 1
- },
-/mob/living/simple_animal/pet/cat/runtime,
-/turf/open/floor/iron,
-/area/station/command/heads_quarters/cmo)
"kDB" = (
/obj/structure/plasticflaps/opaque,
/obj/machinery/navbeacon{
@@ -43218,15 +43357,6 @@
/obj/structure/sign/warning/pods,
/turf/closed/wall,
/area/station/hallway/secondary/entry)
-"kKx" = (
-/obj/effect/turf_decal/tile/brown/half{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/cargo/miningoffice)
"kKy" = (
/obj/machinery/airalarm/directional/east,
/obj/machinery/rnd/production/techfab/department/medical,
@@ -43325,6 +43455,22 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/exit/departure_lounge)
+"kLA" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown/half{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/half{
+ dir = 1
+ },
+/area/station/cargo/miningoffice)
"kLI" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/firealarm/directional/north{
@@ -43853,18 +43999,6 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/iron/dark,
/area/station/engineering/main)
-"kTs" = (
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
- dir = 1
- },
-/obj/effect/landmark/start/shaft_miner,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"kTy" = (
/obj/structure/chair/office{
dir = 8
@@ -43914,6 +44048,18 @@
},
/turf/open/floor/iron,
/area/station/maintenance/port)
+"kUj" = (
+/obj/effect/decal/cleanable/oil/streak,
+/obj/machinery/camera/directional/south,
+/obj/structure/table,
+/obj/item/storage/toolbox/mechanical{
+ pixel_y = 7
+ },
+/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind{
+ pixel_x = 5
+ },
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"kUn" = (
/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/brown{
@@ -44000,15 +44146,6 @@
},
/turf/open/floor/iron,
/area/station/maintenance/port/aft)
-"kVw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron,
-/area/station/service/kitchen/abandoned)
"kVx" = (
/obj/machinery/door/airlock/highsecurity{
name = "Emergency Access"
@@ -44778,22 +44915,6 @@
/mob/living/carbon/human/species/monkey,
/turf/open/floor/engine,
/area/station/science/genetics)
-"lfC" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 1
- },
-/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = 4
- },
-/obj/item/storage/toolbox/mechanical,
-/obj/item/storage/belt/utility,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
"lfD" = (
/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/siding/dark_red{
@@ -45169,15 +45290,6 @@
/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
/turf/open/floor/iron,
/area/station/maintenance/solars/starboard/fore)
-"ljQ" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/turf_decal/loading_area{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"ljS" = (
/obj/structure/cable,
/obj/effect/spawner/structure/window/reinforced,
@@ -45317,16 +45429,6 @@
/obj/machinery/light/directional/west,
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
-"llj" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/herringbone,
-/area/station/cargo/miningoffice)
"llm" = (
/obj/structure/chair/office/tactical{
dir = 8
@@ -45479,6 +45581,16 @@
},
/turf/open/floor/iron/dark/textured_large,
/area/station/engineering/atmos/storage/gas)
+"lni" = (
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/plating,
+/area/station/maintenance/department/chapel)
"lnm" = (
/obj/structure/closet/secure_closet/captains,
/obj/effect/turf_decal/stripes/line{
@@ -45854,16 +45966,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/maintenance/department/science)
-"ltg" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/maintenance/department/chapel)
"ltr" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -46316,8 +46418,19 @@
dir = 1
},
/obj/machinery/light/directional/north,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/security/lockers)
+"lyx" = (
+/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"lyE" = (
/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
@@ -46723,6 +46836,17 @@
},
/turf/open/floor/iron/dark,
/area/station/command/corporate_showroom)
+"lDu" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/structure/table,
+/obj/machinery/microwave{
+ desc = "Cooks and boils stuff, somehow.";
+ pixel_x = -3;
+ pixel_y = 5
+ },
+/obj/structure/sign/poster/official/random/directional/west,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"lDI" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -47289,6 +47413,11 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/rd)
+"lJw" = (
+/obj/machinery/computer/quantum_console,
+/obj/structure/extinguisher_cabinet/directional/west,
+/turf/open/floor/iron/dark/smooth_corner,
+/area/station/bitrunning/den)
"lJB" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/directional/west,
@@ -47666,12 +47795,6 @@
/obj/machinery/newscaster/directional/east,
/turf/open/floor/carpet/blue,
/area/station/commons/vacant_room/office)
-"lNN" = (
-/obj/structure/bed/dogbed/mcgriff,
-/obj/effect/turf_decal/tile/red/anticorner/contrasted,
-/mob/living/basic/pet/dog/pug/mcgriff,
-/turf/open/floor/iron,
-/area/station/security/warden)
"lNZ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -47800,6 +47923,8 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 4
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/security/lockers)
"lPM" = (
@@ -48125,12 +48250,6 @@
/obj/effect/turf_decal/tile/neutral/full,
/turf/open/floor/iron/large,
/area/station/medical/paramedic)
-"lUW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron,
-/area/station/service/kitchen/abandoned)
"lVi" = (
/obj/structure/closet/l3closet/virology,
/obj/effect/turf_decal/bot,
@@ -48581,11 +48700,6 @@
dir = 4
},
/area/station/hallway/secondary/entry)
-"mcF" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/space,
-/area/space/nearstation)
"mcG" = (
/obj/machinery/button/door/directional/east{
id = "Dorm6";
@@ -48665,6 +48779,8 @@
/obj/effect/turf_decal/trimline/red/filled/warning{
dir = 1
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/security/lockers)
"mdB" = (
@@ -49090,6 +49206,27 @@
"mjz" = (
/turf/closed/wall,
/area/station/maintenance/starboard/lesser)
+"mjH" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/item/folder/yellow{
+ pixel_x = -6
+ },
+/obj/item/pen{
+ pixel_x = -6
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/window/right/directional/south{
+ name = "Delivery Office Desk";
+ req_access = list("shipping")
+ },
+/obj/structure/desk_bell{
+ pixel_x = 7
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/cargo/sorting)
"mjK" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/trimline/green/filled/corner{
@@ -49167,6 +49304,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/station/service/theater)
+"mlv" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/tile/brown/anticorner/contrasted,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/cargo/sorting)
"mlw" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -49197,11 +49341,6 @@
"mlE" = (
/turf/closed/wall/r_wall,
/area/station/ai_monitored/command/storage/eva)
-"mlF" = (
-/obj/machinery/computer/quantum_console,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/dark/smooth_corner,
-/area/station/bitrunning/den)
"mlM" = (
/obj/structure/table/wood,
/obj/machinery/computer/records/medical/laptop,
@@ -49275,16 +49414,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/space/basic,
/area/space/nearstation)
-"mmA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/glass,
-/obj/machinery/duct,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/mob/living/basic/cockroach,
-/turf/open/floor/iron,
-/area/station/medical/abandoned)
"mmM" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
@@ -49748,11 +49877,6 @@
/obj/effect/turf_decal/tile/yellow/fourcorners,
/turf/open/floor/iron,
/area/station/engineering/storage)
-"mtL" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/status_display/evac/directional/north,
-/turf/open/floor/plating,
-/area/station/cargo/miningoffice)
"mtO" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/tile/yellow{
@@ -49996,6 +50120,19 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
+"mwM" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/station/maintenance/starboard/fore)
"mwR" = (
/obj/machinery/door/firedoor,
/obj/effect/mapping_helpers/airlock/access/all/medical/general,
@@ -50506,13 +50643,6 @@
/obj/structure/cable,
/turf/open/floor/engine,
/area/station/maintenance/disposal/incinerator)
-"mDm" = (
-/obj/machinery/quantum_server,
-/obj/effect/turf_decal/bot/left,
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 4
- },
-/area/station/bitrunning/den)
"mDo" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -50657,6 +50787,19 @@
/obj/effect/turf_decal/tile/neutral/opposingcorners,
/turf/open/floor/iron,
/area/station/maintenance/department/security)
+"mEv" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/firealarm/directional/east,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/light/small/directional/east,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/iron,
+/area/station/hallway/primary/central/fore)
"mEx" = (
/obj/structure/table/reinforced,
/obj/item/clothing/suit/hazardvest,
@@ -51458,17 +51601,6 @@
/obj/machinery/light_switch/directional/north,
/turf/open/floor/iron/grimy,
/area/station/tcommsat/computer)
-"mOh" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/turf_decal/trimline/white/warning{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/mob/living/simple_animal/hostile/retaliate/goose/vomit,
-/turf/open/floor/iron/dark,
-/area/station/service/abandoned_gambling_den)
"mOo" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/turf/open/floor/circuit/green/telecomms/mainframe,
@@ -51849,11 +51981,6 @@
"mTA" = (
/turf/closed/wall/r_wall,
/area/station/security/holding_cell)
-"mTB" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/space,
-/area/space/nearstation)
"mTT" = (
/obj/machinery/holopad,
/obj/structure/cable,
@@ -52026,6 +52153,12 @@
/obj/effect/spawner/structure/window/reinforced/plasma,
/turf/open/floor/plating,
/area/station/engineering/supermatter)
+"mWs" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/plating,
+/area/station/maintenance/fore)
"mWy" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/disposalpipe/segment,
@@ -52596,17 +52729,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
-"neT" = (
-/obj/effect/turf_decal/trimline/neutral/mid_joiner{
- dir = 4
- },
-/obj/structure/table/reinforced,
-/obj/item/surgery_tray/full/morgue,
-/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
"nfd" = (
/obj/machinery/portable_atmospherics/canister/plasma,
/turf/open/floor/engine/plasma,
@@ -52745,17 +52867,6 @@
/obj/effect/spawner/random/trash/hobo_squat,
/turf/open/floor/plating,
/area/station/maintenance/department/chapel)
-"nhj" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/structure/table,
-/obj/machinery/microwave{
- desc = "Cooks and boils stuff, somehow.";
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"nhm" = (
/turf/closed/wall/r_wall,
/area/station/maintenance/starboard/lesser)
@@ -53024,6 +53135,22 @@
},
/turf/open/floor/iron,
/area/station/commons/fitness/recreation)
+"nkO" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/iron,
+/area/station/maintenance/starboard/fore)
"nkU" = (
/obj/effect/turf_decal/tile/blue/half/contrasted,
/turf/open/floor/iron/dark,
@@ -53525,7 +53652,12 @@
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible/layer4,
-/obj/structure/sign/warning/secure_area/directional/west,
+/obj/machinery/airalarm/directional/west,
+/obj/effect/mapping_helpers/airalarm/engine_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "engine"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
/turf/open/floor/iron,
/area/station/engineering/supermatter/room)
"nsd" = (
@@ -53643,12 +53775,6 @@
/obj/machinery/light/small/directional/north,
/turf/open/floor/iron/dark,
/area/station/commons/fitness/recreation)
-"ntU" = (
-/obj/structure/table/reinforced,
-/obj/machinery/microwave/engineering/cell_included,
-/obj/structure/sign/poster/random/directional/west,
-/turf/open/floor/wood,
-/area/station/engineering/break_room)
"ntX" = (
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
@@ -54357,6 +54483,13 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/breakroom)
+"nCY" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/station/cargo/sorting)
"nDk" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/conveyor{
@@ -54476,12 +54609,6 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/iron,
/area/station/maintenance/port)
-"nEE" = (
-/obj/machinery/netpod,
-/obj/structure/sign/poster/random/directional/north,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/bitrunning/den)
"nEJ" = (
/obj/structure/cable,
/obj/effect/turf_decal/trimline/yellow/line,
@@ -54496,6 +54623,9 @@
/obj/structure/sign/warning/electric_shock/directional/east,
/turf/open/space/basic,
/area/space)
+"nEZ" = (
+/turf/closed/wall/r_wall,
+/area/station/security/mechbay)
"nFb" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/generic_maintenance_landmark,
@@ -54872,18 +55002,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
-"nJF" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=hall12";
- location = "hall11"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/mob/living/simple_animal/bot/secbot/beepsky/officer,
-/turf/open/floor/iron,
-/area/station/hallway/primary/starboard)
"nJK" = (
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix{
dir = 1
@@ -55038,6 +55156,15 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
+"nMi" = (
+/obj/effect/turf_decal/tile/brown/half{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/iron/half{
+ dir = 1
+ },
+/area/station/cargo/miningoffice)
"nMp" = (
/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible,
/obj/machinery/meter,
@@ -56154,6 +56281,15 @@
},
/turf/open/floor/plating,
/area/station/science/robotics/mechbay)
+"occ" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/machinery/computer/order_console/mining,
+/obj/item/radio/intercom/directional/west,
+/obj/machinery/firealarm/directional/west{
+ pixel_y = -9
+ },
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"ocd" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/structure/flora/bush/flowers_yw/style_random,
@@ -56848,24 +56984,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/security/prison/garden)
-"okN" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/generic,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/landmark/start/bitrunner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/bitrunning/den)
"okV" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/reagent_dispensers/plumbed{
@@ -57130,12 +57248,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/ordnance/testlab)
-"onA" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/fore)
"onK" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -57575,6 +57687,15 @@
/obj/machinery/light/small/red/directional/north,
/turf/open/floor/iron/dark/smooth_large,
/area/station/service/chapel/funeral)
+"ove" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red/fourcorners,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/iron,
+/area/station/service/kitchen/abandoned)
"ovf" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -57676,6 +57797,14 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/iron,
/area/station/command/teleporter)
+"own" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible,
+/obj/effect/spawner/random/engineering/tracking_beacon,
+/obj/effect/mapping_helpers/burnt_floor,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/iron,
+/area/station/maintenance/department/electrical)
"owu" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -57716,8 +57845,12 @@
},
/obj/machinery/airalarm/directional/west,
/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnanceburn"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
/turf/open/floor/iron/dark,
-/area/station/science/ordnance/burnchamber)
+/area/station/science/ordnance)
"owY" = (
/obj/structure/table/reinforced,
/obj/item/stack/sheet/iron{
@@ -57731,13 +57864,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/maintenance/port)
-"owZ" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/structure/table,
-/obj/item/storage/medkit/regular,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"oxb" = (
/obj/machinery/duct,
/obj/effect/turf_decal/siding/white,
@@ -57981,28 +58107,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/grimy,
/area/station/command/heads_quarters/captain/private)
-"oAV" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/corner{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/bitrunning/den)
"oAW" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -58188,6 +58292,12 @@
"oDE" = (
/turf/closed/wall,
/area/station/medical/cryo)
+"oDJ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/delivery,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/iron,
+/area/station/science/research/abandoned)
"oDR" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -58308,14 +58418,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/maintenance/department/medical/morgue)
-"oFk" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/steam_vent,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/fore)
"oFr" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
@@ -58612,6 +58714,14 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/security/evidence)
+"oKn" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/mob/living/basic/cockroach,
+/turf/open/floor/iron/dark,
+/area/station/service/abandoned_gambling_den)
"oKr" = (
/turf/closed/wall,
/area/station/security/checkpoint/supply)
@@ -58892,6 +59002,11 @@
/obj/machinery/light/floor,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/aisat/exterior)
+"oNE" = (
+/obj/effect/landmark/blobstart,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/plating,
+/area/station/maintenance/solars/starboard/fore)
"oNF" = (
/obj/effect/turf_decal/siding/blue,
/obj/effect/turf_decal/tile/blue/opposingcorners,
@@ -59627,6 +59742,15 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/grimy,
/area/station/command/heads_quarters/hos)
+"oYr" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"oYs" = (
/turf/closed/wall,
/area/station/maintenance/port/fore)
@@ -60189,6 +60313,13 @@
/obj/effect/turf_decal/tile/blue,
/turf/open/floor/iron,
/area/station/hallway/primary/central/fore)
+"pfs" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/mapping_helpers/broken_floor,
+/obj/effect/landmark/generic_maintenance_landmark,
+/turf/open/floor/plating,
+/area/station/maintenance/port/fore)
"pfA" = (
/obj/structure/table/reinforced,
/obj/item/assembly/timer,
@@ -60331,6 +60462,23 @@
/obj/machinery/newscaster/directional/south,
/turf/open/floor/iron,
/area/station/engineering/supermatter/room)
+"pgZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/button/door/directional/north{
+ id = "secmechbay";
+ name = "Security Mech Garage Door Controls";
+ req_access = list("security")
+ },
+/obj/effect/turf_decal/trimline/dark_red/filled/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"phn" = (
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -60424,6 +60572,7 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/security/lockers)
"phX" = (
@@ -61216,16 +61365,6 @@
/obj/structure/cable,
/turf/open/floor/circuit/green,
/area/station/ai_monitored/turret_protected/ai_upload)
-"ptA" = (
-/obj/structure/cable,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/item/mod/module/tether,
-/obj/item/mod/module/tether,
-/obj/item/stack/sheet/plasteel/fifty,
-/turf/open/floor/iron,
-/area/station/engineering/storage)
"ptC" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -61286,6 +61425,13 @@
},
/turf/open/floor/iron,
/area/station/engineering/main)
+"put" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/mapping_helpers/broken_floor,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron/dark,
+/area/station/maintenance/starboard/aft)
"puJ" = (
/obj/machinery/suit_storage_unit/standard_unit,
/obj/effect/turf_decal/delivery,
@@ -61568,21 +61714,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/hallway/secondary/exit/departure_lounge)
-"pxS" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown/half{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/landmark/start/bitrunner,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/cargo/miningoffice)
"pxT" = (
/obj/effect/spawner/random/structure/crate,
/turf/open/floor/plating,
@@ -61776,6 +61907,15 @@
},
/turf/open/floor/iron,
/area/station/service/kitchen/abandoned)
+"pAa" = (
+/obj/structure/chair/office{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown/half/contrasted,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/start/shaft_miner,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"pAd" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -61950,10 +62090,29 @@
},
/turf/open/floor/wood,
/area/station/service/lawoffice)
+"pBN" = (
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"pBY" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/service/abandoned_gambling_den)
+"pCr" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
+ id = "chemisttop";
+ name = "Pharmacy Shutters"
+ },
+/obj/machinery/smartfridge/chemistry/preloaded,
+/obj/machinery/door/firedoor,
+/turf/open/floor/iron/white,
+/area/station/medical/pharmacy)
"pCy" = (
/obj/structure/table,
/obj/item/clipboard,
@@ -62048,13 +62207,13 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/security/armory)
-"pDy" = (
-/obj/machinery/cryo_cell{
- dir = 8
+"pDz" = (
+/obj/machinery/quantum_server,
+/obj/effect/turf_decal/bot/left,
+/turf/open/floor/iron/dark/smooth_corner{
+ dir = 4
},
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/medical/cryo)
+/area/station/bitrunning/den)
"pDE" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -62408,6 +62567,10 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/aisat_interior)
+"pGR" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/iron/herringbone,
+/area/station/cargo/miningoffice)
"pHa" = (
/obj/structure/lattice,
/obj/structure/sign/warning/directional/west,
@@ -63284,13 +63447,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/robotics/lab)
-"pRp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
"pRy" = (
/obj/effect/turf_decal/siding/green,
/obj/structure/window/reinforced/spawner/directional/south,
@@ -63498,39 +63654,6 @@
/obj/effect/landmark/event_spawn,
/turf/open/floor/iron/grimy,
/area/station/command/heads_quarters/hos)
-"pTz" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/structure/desk_bell{
- pixel_x = 7;
- pixel_y = 6
- },
-/obj/item/folder/yellow{
- pixel_x = -3;
- pixel_y = -6
- },
-/obj/item/pen{
- pixel_x = -3;
- pixel_y = -2
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 4;
- id = "chemisttop";
- name = "Pharmacy Shutters"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/door/window/left/directional/west{
- name = "Pharmacy Desk";
- req_access = list("pharmacy");
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/pharmacy)
"pTB" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -63651,17 +63774,6 @@
},
/turf/open/floor/iron/dark/corner,
/area/station/engineering/atmos/pumproom)
-"pUs" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
-/obj/machinery/door/airlock/mining/glass{
- name = "Bitrunning Den"
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/bitrunning/den)
"pUw" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
@@ -64094,6 +64206,17 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/maintenance/port)
+"pZf" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/status_display/door_timer{
+ id = "Isolation_Cell";
+ name = "Isolation Cell";
+ pixel_x = -32
+ },
+/turf/open/floor/iron,
+/area/station/security/execution/transfer)
"pZi" = (
/obj/structure/training_machine,
/obj/item/target/alien,
@@ -64250,6 +64373,21 @@
/obj/machinery/light/small/directional/south,
/turf/open/floor/iron,
/area/station/commons/toilet/locker)
+"qbd" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown/half{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/half{
+ dir = 1
+ },
+/area/station/cargo/miningoffice)
"qbg" = (
/obj/machinery/duct,
/obj/structure/disposalpipe/segment{
@@ -64881,18 +65019,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/command/bridge)
-"qko" = (
-/obj/item/kirbyplants/random,
-/obj/effect/turf_decal/tile/brown/half{
- dir = 8
- },
-/obj/machinery/light/directional/west,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/cargo/miningoffice)
"qkv" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -65049,21 +65175,6 @@
},
/turf/open/floor/plating,
/area/station/engineering/supermatter/room)
-"qmT" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/maintenance/starboard/fore)
"qnc" = (
/obj/machinery/firealarm/directional/south,
/obj/effect/turf_decal/tile/blue{
@@ -65235,6 +65346,14 @@
/obj/machinery/firealarm/directional/east,
/turf/open/floor/iron,
/area/station/commons/vacant_room/commissary)
+"qpd" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/loading_area{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"qpg" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -65491,22 +65610,6 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/station/science/xenobiology)
-"qsF" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/line,
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 1
- },
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/bitrunning/den)
"qsN" = (
/obj/structure/chair{
dir = 4
@@ -65586,6 +65689,21 @@
/obj/effect/turf_decal/tile/neutral/full,
/turf/open/floor/iron/dark/smooth_large,
/area/station/security/detectives_office)
+"quh" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/machinery/holopad,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"qul" = (
/obj/structure/chair/stool/bar/directional/south,
/turf/open/floor/wood,
@@ -66328,6 +66446,17 @@
/obj/item/circuitboard/machine/chem_master,
/turf/open/floor/iron/grimy,
/area/station/maintenance/port/fore)
+"qDw" = (
+/obj/structure/table,
+/obj/item/mod/module/plasma_stabilizer,
+/obj/item/mod/module/thermal_regulator,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 5
+ },
+/obj/item/radio/intercom/directional/south,
+/obj/item/mod/module/signlang_radio,
+/turf/open/floor/iron/dark,
+/area/station/security/office)
"qDI" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -67415,6 +67544,14 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/fore)
+"qQy" = (
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 4
+ },
+/obj/structure/table/reinforced,
+/obj/item/flashlight/lamp,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"qQE" = (
/obj/effect/turf_decal/delivery,
/turf/open/floor/iron,
@@ -67678,6 +67815,27 @@
/obj/item/shovel/spade,
/turf/open/floor/iron/dark,
/area/station/service/hydroponics/garden/abandoned)
+"qVa" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/newscaster/directional/east,
+/obj/effect/spawner/random/structure/table_fancy,
+/obj/item/reagent_containers/cup/glass/bottle/beer{
+ desc = "Whatever it is, it reeks of foul, putrid froth.";
+ list_reagents = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 15);
+ name = "Delta-Down";
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
+ pixel_x = -3;
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
+ pixel_x = -6;
+ pixel_y = 3
+ },
+/turf/open/floor/wood,
+/area/station/commons/dorms)
"qVf" = (
/obj/structure/chair,
/obj/effect/decal/cleanable/blood/splatter,
@@ -68421,13 +68579,6 @@
/obj/effect/landmark/start/hangover,
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
-"rgC" = (
-/obj/structure/table/reinforced,
-/obj/item/folder/yellow,
-/obj/item/gps/mining,
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"rgG" = (
/obj/structure/closet/secure_closet/engineering_personal,
/obj/effect/decal/cleanable/dirt,
@@ -68570,6 +68721,19 @@
},
/turf/open/floor/iron,
/area/station/medical/virology)
+"rid" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"riq" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/grille/broken,
@@ -68637,16 +68801,6 @@
/obj/effect/landmark/start/hangover,
/turf/open/floor/iron/white,
/area/station/medical/medbay)
-"riZ" = (
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 4;
- id = "chemisttop";
- name = "Pharmacy Shutters"
- },
-/obj/machinery/smartfridge/chemistry/preloaded,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
"rjd" = (
/obj/structure/table/wood,
/obj/item/flashlight/lamp/green,
@@ -69061,19 +69215,6 @@
/obj/machinery/light/dim/directional/east,
/turf/open/floor/iron/dark,
/area/station/tcommsat/computer)
-"rmH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"rmI" = (
/obj/structure/table/reinforced,
/obj/item/electronics/apc,
@@ -69353,14 +69494,6 @@
},
/turf/open/floor/iron,
/area/station/science/xenobiology)
-"rqN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/maintenance/port)
"rqV" = (
/obj/machinery/dna_infuser,
/obj/item/infuser_book,
@@ -70053,16 +70186,6 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/iron,
/area/station/cargo/storage)
-"rAl" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/conveyor{
- id = "cargodisposals"
- },
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
"rAm" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/tile/yellow/half/contrasted{
@@ -70376,6 +70499,14 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/station/engineering/atmos/pumproom)
+"rFg" = (
+/obj/structure/cable,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random/structure/steam_vent,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/plating,
+/area/station/maintenance/fore)
"rFm" = (
/obj/structure/window/reinforced/spawner/directional/south,
/obj/structure/bed/medical/emergency,
@@ -70871,6 +71002,22 @@
/obj/effect/turf_decal/tile/neutral/full,
/turf/open/floor/iron/large,
/area/station/hallway/secondary/exit/departure_lounge)
+"rLB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 1
+ },
+/obj/item/storage/box/bandages{
+ pixel_x = 4;
+ pixel_y = 6
+ },
+/obj/item/storage/toolbox/mechanical,
+/obj/item/storage/belt/utility,
+/turf/open/floor/iron,
+/area/station/cargo/storage)
"rLL" = (
/obj/structure/filingcabinet/chestdrawer,
/obj/machinery/newscaster/directional/north,
@@ -70912,6 +71059,21 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/engineering/atmos)
+"rMj" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Cargo Maintenance"
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/mapping_helpers/airlock/access/all/supply/general,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/maintenance/fore)
"rMn" = (
/obj/structure/table/wood,
/obj/effect/spawner/random/techstorage/arcade_boards,
@@ -71176,6 +71338,14 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/station/science/research)
+"rPb" = (
+/obj/machinery/light/directional/north,
+/obj/effect/turf_decal/trimline/dark_red/filled/line{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"rPc" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -71218,6 +71388,13 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/fore)
+"rPi" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"rPj" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/landmark/start/hangover,
@@ -71361,11 +71538,6 @@
/obj/structure/mirror/directional/west,
/turf/open/floor/wood,
/area/station/maintenance/port/aft)
-"rQF" = (
-/obj/machinery/netpod,
-/obj/effect/decal/cleanable/robot_debris,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/bitrunning/den)
"rQI" = (
/obj/machinery/airlock_sensor/incinerator_atmos{
pixel_x = 24
@@ -71600,6 +71772,9 @@
/obj/machinery/airalarm/directional/north,
/turf/open/floor/iron,
/area/station/cargo/lobby)
+"rTB" = (
+/turf/open/floor/iron,
+/area/station/cargo/storage)
"rTG" = (
/obj/structure/cable,
/obj/structure/disposalpipe/sorting/mail{
@@ -71667,14 +71842,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/xenobiology)
-"rUi" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/turf_decal/loading_area{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"rUj" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/preopen{
@@ -71724,16 +71891,6 @@
/obj/effect/mapping_helpers/burnt_floor,
/turf/open/floor/plating,
/area/station/maintenance/fore)
-"rUV" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral/half/contrasted{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/maintenance/fore)
"rUW" = (
/obj/item/kirbyplants/organic/plant21,
/obj/effect/turf_decal/stripes/line{
@@ -71823,8 +71980,6 @@
/turf/open/floor/iron/white,
/area/station/science/research)
"rVM" = (
-/obj/machinery/airalarm/directional/north,
-/obj/effect/mapping_helpers/airalarm/engine_access,
/turf/open/floor/engine,
/area/station/engineering/supermatter)
"rVX" = (
@@ -72020,6 +72175,12 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/engineering/atmos)
+"rYp" = (
+/obj/structure/closet/secure_closet/miner,
+/obj/effect/turf_decal/delivery,
+/obj/structure/extinguisher_cabinet/directional/north,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"rYA" = (
/turf/closed/wall,
/area/station/maintenance/department/security)
@@ -72356,18 +72517,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/service/chapel)
-"scv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/camera/directional/east{
- c_tag = "Cargo Bay - Delivery Office";
- name = "cargo camera"
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/machinery/light/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/cargo/sorting)
"scy" = (
/obj/machinery/atmospherics/components/trinary/mixer{
dir = 4
@@ -72525,6 +72674,21 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
+"seX" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/sign/nanotrasen{
+ pixel_y = 32
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/iron,
+/area/station/hallway/primary/central/fore)
"sfc" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
@@ -72675,15 +72839,6 @@
},
/turf/open/space/basic,
/area/space)
-"sgK" = (
-/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"sgZ" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable,
@@ -73380,13 +73535,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/hallway/primary/central/aft)
-"sqW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/cargo/sorting)
"sqX" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
@@ -73562,10 +73710,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/medical/pharmacy)
-"stf" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/herringbone,
-/area/station/cargo/miningoffice)
"stp" = (
/obj/machinery/airalarm/directional/west,
/obj/effect/turf_decal/trimline/brown/filled/line{
@@ -74047,6 +74191,16 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
+"syW" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/conveyor{
+ id = "cargodisposals"
+ },
+/turf/open/floor/plating,
+/area/station/cargo/sorting)
"sze" = (
/turf/open/floor/iron/cafeteria,
/area/station/security/prison/mess)
@@ -74208,6 +74362,14 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/station/maintenance/department/medical/morgue)
+"sAL" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/machinery/disposal/bin,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"sAU" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable,
@@ -74374,23 +74536,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/half,
/area/station/service/hydroponics)
-"sCW" = (
-/obj/machinery/door/firedoor,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/mining/glass{
- name = "Delivery Office"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
-/obj/effect/mapping_helpers/airlock/access/any/supply/shipping,
-/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
-/turf/open/floor/iron,
-/area/station/cargo/sorting)
"sCY" = (
/obj/structure/cable,
/obj/machinery/power/tracker,
@@ -75074,9 +75219,6 @@
/obj/structure/sign/poster/official/build/directional/north,
/turf/open/floor/iron,
/area/station/science/robotics/mechbay)
-"sLg" = (
-/turf/open/floor/iron,
-/area/station/cargo/storage)
"sLx" = (
/obj/effect/decal/cleanable/generic,
/turf/open/floor/iron/grimy,
@@ -75163,6 +75305,16 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
+"sMG" = (
+/obj/machinery/flasher/directional/south{
+ id = "Isolation_Cell"
+ },
+/obj/machinery/light/small/broken/directional/south,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/station/security/prison/safe)
"sMN" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -75244,18 +75396,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/engineering/main)
-"sNP" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/duct,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron,
-/area/station/maintenance/department/chapel)
"sOi" = (
/obj/machinery/portable_atmospherics/pump,
/obj/effect/turf_decal/bot,
@@ -75270,6 +75410,15 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/service/abandoned_gambling_den/gaming)
+"sOp" = (
+/obj/structure/table/glass,
+/obj/item/surgery_tray/full,
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/item/clothing/gloves/latex,
+/obj/item/clothing/suit/apron/surgical,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron/dark,
+/area/station/medical/surgery/theatre)
"sOs" = (
/obj/structure/chair/pew/left,
/turf/open/floor/iron/chapel{
@@ -75592,12 +75741,6 @@
/obj/effect/spawner/random/trash/graffiti,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
-"sSx" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/delivery,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron,
-/area/station/science/research/abandoned)
"sSH" = (
/obj/effect/turf_decal/tile/green/half/contrasted{
dir = 8
@@ -76071,6 +76214,11 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/white,
/area/station/science/ordnance/office)
+"sYn" = (
+/obj/machinery/netpod,
+/obj/machinery/airalarm/directional/east,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"sYw" = (
/obj/effect/landmark/start/hangover,
/obj/effect/landmark/event_spawn,
@@ -76308,6 +76456,7 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/security/lockers)
"tch" = (
@@ -76348,14 +76497,6 @@
/obj/machinery/light/directional/south,
/turf/open/floor/iron,
/area/station/engineering/supermatter/room)
-"tcB" = (
-/obj/machinery/door/airlock/mining{
- name = "Mining Dock"
- },
-/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"tcG" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -76573,6 +76714,13 @@
},
/turf/open/floor/iron,
/area/station/cargo/storage)
+"tfJ" = (
+/obj/machinery/cryo_cell{
+ dir = 8
+ },
+/obj/machinery/status_display/ai/directional/south,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/medical/cryo)
"tfK" = (
/obj/item/kirbyplants/random,
/obj/machinery/status_display/evac/directional/east,
@@ -76585,12 +76733,6 @@
/obj/effect/turf_decal/tile/blue,
/turf/open/floor/iron/white,
/area/station/medical/paramedic)
-"tfO" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/space,
-/area/space/nearstation)
"tgl" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -76742,14 +76884,6 @@
/obj/effect/turf_decal/trimline/green/filled/corner,
/turf/open/floor/iron/white,
/area/station/medical/virology)
-"thZ" = (
-/obj/machinery/status_display/evac/directional/west,
-/obj/structure/filingcabinet/chestdrawer,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/newscaster/directional/north,
-/mob/living/simple_animal/parrot/poly,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/ce)
"tip" = (
/obj/structure/rack,
/obj/item/aicard,
@@ -76798,6 +76932,12 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/cargo/storage)
+"tjo" = (
+/obj/machinery/light/directional/south,
+/obj/machinery/byteforge,
+/obj/effect/turf_decal/box,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"tjp" = (
/obj/structure/table/reinforced,
/obj/item/storage/toolbox/mechanical,
@@ -77056,13 +77196,6 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/station/hallway/primary/central/aft)
-"toy" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/herringbone,
-/area/station/cargo/miningoffice)
"toB" = (
/obj/machinery/light/directional/west,
/obj/effect/turf_decal/stripes/line{
@@ -77400,14 +77533,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/engineering/atmos)
-"tsx" = (
-/obj/structure/table/glass,
-/obj/item/surgery_tray/full,
-/obj/item/clothing/gloves/latex,
-/obj/item/clothing/suit/apron/surgical,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/medical/surgery/theatre)
"tsz" = (
/turf/open/floor/plating,
/area/station/service/abandoned_gambling_den/gaming)
@@ -77635,6 +77760,16 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/xenobiology)
+"tum" = (
+/obj/structure/cable,
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/power/apc/auto_name/directional/east,
+/obj/item/mod/module/tether,
+/obj/item/mod/module/tether,
+/obj/item/stack/sheet/plasteel/fifty,
+/turf/open/floor/iron,
+/area/station/engineering/storage)
"tup" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Theater Maintenance"
@@ -78572,25 +78707,6 @@
},
/turf/open/floor/iron/dark,
/area/station/medical/morgue)
-"tGm" = (
-/obj/structure/table/reinforced,
-/obj/item/stack/sheet/rglass{
- amount = 50;
- pixel_x = 2;
- pixel_y = -2
- },
-/obj/item/stock_parts/cell/emproof{
- pixel_x = 1;
- pixel_y = 3
- },
-/obj/effect/turf_decal/bot,
-/obj/machinery/newscaster/directional/east,
-/obj/item/mod/module/plasma_stabilizer,
-/obj/item/mod/module/thermal_regulator,
-/obj/item/mod/module/magboot,
-/obj/item/mod/module/signlang_radio,
-/turf/open/floor/iron,
-/area/station/engineering/storage)
"tGq" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
@@ -78843,6 +78959,18 @@
/obj/effect/turf_decal/tile/yellow/opposingcorners,
/turf/open/floor/iron,
/area/station/engineering/supermatter/room)
+"tJp" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/brown/half{
+ dir = 4
+ },
+/obj/item/clipboard,
+/obj/item/toy/figure/miner,
+/obj/machinery/light/directional/south,
+/turf/open/floor/iron/half{
+ dir = 1
+ },
+/area/station/cargo/miningoffice)
"tJt" = (
/obj/structure/table/wood,
/obj/item/paper_bin,
@@ -79117,16 +79245,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/server)
-"tNn" = (
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"tNq" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -79185,6 +79303,17 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/central/fore)
+"tNU" = (
+/obj/effect/turf_decal/trimline/neutral/mid_joiner{
+ dir = 4
+ },
+/obj/structure/table/reinforced,
+/obj/item/surgery_tray/full/morgue,
+/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
+ dir = 4
+ },
+/turf/open/floor/iron/dark,
+/area/station/medical/morgue)
"tNV" = (
/obj/machinery/door/firedoor,
/obj/structure/cable,
@@ -80090,6 +80219,22 @@
/obj/structure/window/reinforced/spawner/directional/west,
/turf/open/floor/carpet/blue,
/area/station/commons/vacant_room/office)
+"tYI" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 1
+ },
+/obj/machinery/power/apc/auto_name/directional/west,
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 4
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"tYL" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -80170,14 +80315,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
-"uao" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/duct,
-/mob/living/basic/goat/pete,
-/turf/open/floor/iron/freezer,
-/area/station/service/kitchen/coldroom)
"uaE" = (
/obj/effect/turf_decal/trimline/blue/filled/warning{
dir = 8
@@ -80425,9 +80562,11 @@
},
/area/station/service/chapel)
"udb" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 6
+ },
/obj/structure/cable,
-/turf/open/floor/plating,
+/turf/open/floor/iron,
/area/station/security/lockers)
"udd" = (
/obj/structure/cable,
@@ -81267,6 +81406,18 @@
/obj/structure/sign/plaques/kiddie/library,
/turf/open/floor/plating,
/area/station/service/library)
+"uoz" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/station/maintenance/starboard/fore)
"uoI" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
@@ -81361,18 +81512,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/aisat_interior)
-"upq" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron,
-/area/station/maintenance/starboard/aft)
"upv" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
@@ -81627,13 +81766,6 @@
},
/turf/open/floor/wood,
/area/station/command/heads_quarters/hop)
-"usJ" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/turf_decal/loading_area{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"usZ" = (
/obj/item/flashlight/lamp,
/obj/machinery/airalarm/directional/east,
@@ -81655,6 +81787,15 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/xenobiology)
+"utz" = (
+/obj/structure/bed/dogbed/runtime,
+/obj/item/radio/intercom/directional/south,
+/obj/effect/turf_decal/tile/neutral/half/contrasted{
+ dir = 1
+ },
+/mob/living/simple_animal/pet/cat/runtime,
+/turf/open/floor/iron,
+/area/station/command/heads_quarters/cmo)
"utK" = (
/obj/effect/turf_decal/trimline/yellow/filled/line{
dir = 8
@@ -82118,27 +82259,6 @@
/obj/effect/turf_decal/stripes/white/line,
/turf/open/floor/wood,
/area/station/engineering/break_room)
-"uzn" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/item/folder/yellow{
- pixel_x = -6
- },
-/obj/item/pen{
- pixel_x = -6
- },
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/window/right/directional/south{
- name = "Delivery Office Desk";
- req_access = list("shipping")
- },
-/obj/structure/desk_bell{
- pixel_x = 7
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/sorting)
"uzo" = (
/obj/structure/chair/office/light,
/obj/structure/disposalpipe/segment{
@@ -82311,21 +82431,6 @@
dir = 1
},
/area/station/medical/morgue)
-"uBd" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/nanotrasen{
- pixel_y = 32
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/primary/central/fore)
"uBf" = (
/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{
dir = 4
@@ -82865,6 +82970,17 @@
/obj/structure/cable,
/turf/open/floor/circuit/telecomms/mainframe,
/area/station/tcommsat/server)
+"uHu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/dark_red/filled/line,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"uHE" = (
/obj/structure/table/wood/poker,
/obj/effect/decal/cleanable/dirt,
@@ -83266,6 +83382,13 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
+"uMS" = (
+/obj/structure/closet/wardrobe/miner,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/storage/backpack/satchel/explorer,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"uMV" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -83315,19 +83438,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/commons/storage/primary)
-"uND" = (
-/obj/effect/turf_decal/tile/brown/half{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/computer/order_console/bitrunning,
-/obj/effect/turf_decal/stripes/end,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/cargo/miningoffice)
"uNE" = (
/obj/machinery/atmospherics/components/unary/passive_vent{
dir = 4
@@ -83374,15 +83484,6 @@
},
/turf/open/floor/iron/white,
/area/station/science/ordnance/office)
-"uOk" = (
-/obj/structure/chair/office{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown/half/contrasted,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/start/shaft_miner,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"uOn" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -84154,8 +84255,12 @@
},
/obj/machinery/airalarm/directional/east,
/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnancefreezer"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
/turf/open/floor/iron/dark,
-/area/station/science/ordnance/freezerchamber)
+/area/station/science/ordnance)
"uXU" = (
/obj/structure/disposaloutlet{
dir = 8
@@ -84507,18 +84612,6 @@
},
/turf/open/floor/iron,
/area/station/maintenance/port/fore)
-"vbT" = (
-/obj/structure/rack,
-/obj/item/gun/energy/laser/carbine/practice{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/gun/energy/laser/practice,
-/obj/effect/turf_decal/bot,
-/obj/machinery/firealarm/directional/east,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/science/auxlab/firing_range)
"vbV" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
@@ -84920,11 +85013,6 @@
/obj/structure/cable,
/turf/open/floor/iron/grimy,
/area/station/service/bar/backroom)
-"vhK" = (
-/obj/effect/landmark/blobstart,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/aft)
"vhW" = (
/obj/item/kirbyplants/random,
/obj/structure/sign/warning/pods/directional/south{
@@ -85204,19 +85292,6 @@
},
/turf/open/floor/iron/cafeteria,
/area/station/service/cafeteria)
-"vmo" = (
-/obj/structure/table/glass,
-/obj/machinery/status_display/ai/directional/west,
-/obj/machinery/newscaster/directional/north,
-/obj/effect/turf_decal/siding/dark_red,
-/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = -6
- },
-/obj/item/reagent_containers/cup/bottle/morphine,
-/obj/item/reagent_containers/syringe,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
"vmr" = (
/obj/machinery/airalarm/directional/west,
/obj/machinery/disposal/bin,
@@ -85458,6 +85533,13 @@
},
/turf/open/floor/iron,
/area/station/command/heads_quarters/cmo)
+"vpI" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 8
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"vpJ" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -85683,6 +85765,16 @@
},
/turf/open/floor/iron,
/area/station/cargo/lobby)
+"vsR" = (
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"vsV" = (
/obj/machinery/duct,
/turf/open/floor/plating,
@@ -86077,19 +86169,6 @@
"vxs" = (
/turf/closed/wall/r_wall,
/area/station/security/prison/visit)
-"vxt" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/office,
-/obj/machinery/status_display/supply{
- pixel_x = 32
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/sorting)
"vxu" = (
/obj/effect/turf_decal/siding/green{
dir = 1
@@ -86592,10 +86671,7 @@
/area/station/construction/mining/aux_base)
"vCQ" = (
/obj/machinery/newscaster/directional/south,
-/obj/machinery/vending/wardrobe/sec_wardrobe,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 6
- },
+/obj/effect/turf_decal/trimline/red/filled/line,
/turf/open/floor/iron,
/area/station/security/lockers)
"vCU" = (
@@ -86609,21 +86685,6 @@
/obj/effect/turf_decal/tile/neutral/half/contrasted,
/turf/open/floor/iron,
/area/station/command/heads_quarters/hos)
-"vDj" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/line,
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/bitrunning/den)
"vDm" = (
/obj/effect/turf_decal/siding/wood{
dir = 1
@@ -86802,6 +86863,13 @@
},
/turf/open/floor/iron,
/area/station/commons/dorms)
+"vFg" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron/herringbone,
+/area/station/cargo/miningoffice)
"vFh" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -87008,23 +87076,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/department/security)
-"vId" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 8
- },
-/obj/item/radio/intercom/directional/south,
-/obj/effect/decal/cleanable/oil,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/bitrunning/den)
"vIq" = (
/obj/structure/cable,
/obj/structure/disposalpipe/junction{
@@ -87159,16 +87210,6 @@
},
/turf/open/floor/iron/white,
/area/station/medical/pharmacy)
-"vKx" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/delivery,
-/obj/effect/turf_decal/tile/neutral/anticorner/contrasted,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/maintenance/fore)
"vKI" = (
/obj/item/radio/intercom/directional/west,
/obj/effect/turf_decal/trimline/blue/filled/line{
@@ -87278,6 +87319,11 @@
"vMp" = (
/turf/closed/wall/r_wall,
/area/station/medical/chemistry)
+"vMq" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/status_display/evac/directional/north,
+/turf/open/floor/plating,
+/area/station/cargo/miningoffice)
"vMx" = (
/obj/item/kirbyplants/random,
/obj/machinery/firealarm/directional/north,
@@ -87364,22 +87410,6 @@
},
/turf/open/floor/iron,
/area/station/security/checkpoint/engineering)
-"vNV" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown/half{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/landmark/start/bitrunner,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/cargo/miningoffice)
"vOh" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -87663,6 +87693,23 @@
},
/turf/open/floor/iron,
/area/station/security/courtroom)
+"vSm" = (
+/obj/machinery/door/firedoor,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/mining/glass{
+ name = "Delivery Office"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
+/obj/effect/mapping_helpers/airlock/access/any/supply/shipping,
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
+/turf/open/floor/iron,
+/area/station/cargo/sorting)
"vSo" = (
/obj/structure/table/wood,
/obj/item/clipboard,
@@ -87793,6 +87840,39 @@
},
/turf/open/floor/iron,
/area/station/science/research)
+"vUf" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/structure/desk_bell{
+ pixel_x = 7;
+ pixel_y = 6
+ },
+/obj/item/folder/yellow{
+ pixel_x = -3;
+ pixel_y = -6
+ },
+/obj/item/pen{
+ pixel_x = -3;
+ pixel_y = -2
+ },
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
+ id = "chemisttop";
+ name = "Pharmacy Shutters"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/door/window/left/directional/west{
+ dir = 4;
+ name = "Pharmacy Desk";
+ req_access = list("pharmacy")
+ },
+/turf/open/floor/iron/dark,
+/area/station/medical/pharmacy)
"vUk" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/components/binary/pump{
@@ -88015,6 +88095,16 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark/corner,
/area/station/hallway/secondary/entry)
+"vXy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron/herringbone,
+/area/station/cargo/miningoffice)
"vXH" = (
/obj/structure/chair/office{
dir = 8
@@ -88106,8 +88196,10 @@
/area/station/solars/port/fore)
"vYw" = (
/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 5
+ dir = 1
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/security/lockers)
"vYG" = (
@@ -88720,24 +88812,6 @@
/obj/effect/landmark/start/depsec/medical,
/turf/open/floor/iron/large,
/area/station/security/checkpoint/medical/medsci)
-"whb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/door/airlock/mining/glass{
- name = "Delivery Office"
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/shipping,
-/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
-/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
-/turf/open/floor/iron,
-/area/station/cargo/sorting)
"whc" = (
/obj/structure/sign/poster/official/fruit_bowl/directional/west,
/obj/effect/turf_decal/stripes/line{
@@ -89023,6 +89097,20 @@
},
/turf/open/floor/iron/dark,
/area/station/command/bridge)
+"wlc" = (
+/obj/structure/table/reinforced,
+/obj/item/gun/energy/laser/carbine/practice{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/gun/energy/laser/practice,
+/obj/item/clothing/ears/earmuffs,
+/obj/item/clothing/ears/earmuffs,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/airalarm/directional/south,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron/dark,
+/area/station/security/range)
"wld" = (
/obj/machinery/door/window/right/directional/south,
/turf/open/floor/plating,
@@ -89778,6 +89866,12 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/science/server)
+"wsT" = (
+/obj/structure/table/reinforced,
+/obj/machinery/microwave/engineering/cell_included,
+/obj/structure/sign/poster/random/directional/west,
+/turf/open/floor/wood,
+/area/station/engineering/break_room)
"wsU" = (
/obj/docking_port/stationary/escape_pod,
/turf/open/space/basic,
@@ -89931,19 +90025,6 @@
},
/turf/open/floor/iron/white,
/area/station/science/ordnance/storage)
-"wuU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/firealarm/directional/east,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/machinery/light/small/directional/east,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/primary/central/fore)
"wuV" = (
/obj/structure/fireaxecabinet/directional/south,
/obj/effect/turf_decal/tile/blue/half/contrasted,
@@ -90172,6 +90253,24 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/central/fore)
+"wxX" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/airlock/mining/glass{
+ name = "Delivery Office"
+ },
+/obj/effect/mapping_helpers/airlock/access/any/supply/shipping,
+/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
+/turf/open/floor/iron,
+/area/station/cargo/sorting)
"wyh" = (
/obj/structure/disposalpipe/segment{
dir = 10
@@ -91775,6 +91874,23 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/maintenance/port)
+"wTL" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 8
+ },
+/obj/item/radio/intercom/directional/south,
+/obj/effect/decal/cleanable/oil,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 1
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"wTN" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
@@ -92294,6 +92410,13 @@
/obj/structure/lattice/catwalk,
/turf/open/space,
/area/station/solars/starboard/fore)
+"xce" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/station/cargo/sorting)
"xcm" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/poddoor/shutters/window/preopen{
@@ -92401,6 +92524,19 @@
},
/turf/open/floor/iron/dark,
/area/station/command/bridge)
+"xdZ" = (
+/obj/effect/turf_decal/tile/brown/half{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 8
+ },
+/obj/machinery/computer/order_console/bitrunning,
+/obj/effect/turf_decal/stripes/end,
+/turf/open/floor/iron/half{
+ dir = 1
+ },
+/area/station/cargo/miningoffice)
"xef" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/disposalpipe/segment,
@@ -92731,6 +92867,14 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/command/heads_quarters/qm)
+"xhO" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/maintenance/fore)
"xhR" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -93390,6 +93534,10 @@
/obj/machinery/duct,
/turf/open/floor/iron/white,
/area/station/medical/virology)
+"xqp" = (
+/obj/vehicle/sealed/mecha/ripley/paddy/preset,
+/turf/open/floor/iron/recharge_floor,
+/area/station/security/mechbay)
"xqM" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
@@ -93439,6 +93587,15 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/engineering/main)
+"xrl" = (
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/start/shaft_miner,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"xrr" = (
/turf/closed/wall/r_wall,
/area/station/maintenance/solars/starboard/fore)
@@ -93685,18 +93842,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/maintenance/fore)
-"xtS" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/item/mod/module/plasma_stabilizer,
-/obj/item/mod/module/thermal_regulator,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/machinery/digital_clock/directional/south,
-/obj/item/mod/module/signlang_radio,
-/turf/open/floor/iron,
-/area/station/medical/storage)
"xtZ" = (
/obj/item/kirbyplants/random,
/obj/effect/turf_decal/delivery,
@@ -94165,13 +94310,6 @@
"xzJ" = (
/turf/open/floor/iron,
/area/station/security/execution/transfer)
-"xzL" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/maintenance/port)
"xzO" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/medical/glass{
@@ -94584,6 +94722,14 @@
/obj/structure/plasticflaps,
/turf/open/floor/plating,
/area/station/cargo/storage)
+"xES" = (
+/obj/structure/table/glass,
+/obj/item/surgery_tray/full,
+/obj/item/clothing/gloves/latex,
+/obj/item/clothing/suit/apron/surgical,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron/dark,
+/area/station/medical/surgery/theatre)
"xEV" = (
/obj/item/target,
/obj/effect/decal/cleanable/dirt,
@@ -95259,13 +95405,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/ai)
-"xMZ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
"xNe" = (
/obj/structure/lattice,
/obj/structure/grille/broken,
@@ -95418,17 +95557,6 @@
"xPc" = (
/turf/closed/wall,
/area/station/medical/virology)
-"xPf" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/mob/living/basic/sloth/citrus,
-/turf/open/floor/iron,
-/area/station/command/heads_quarters/qm)
"xPo" = (
/obj/machinery/camera/directional/north{
c_tag = "Security - Prison Port"
@@ -95477,14 +95605,6 @@
/obj/machinery/incident_display/delam/directional/south,
/turf/open/floor/iron,
/area/station/engineering/supermatter/room)
-"xQq" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/mob/living/basic/cockroach,
-/turf/open/floor/iron/dark,
-/area/station/service/abandoned_gambling_den)
"xQr" = (
/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{
dir = 6
@@ -95685,6 +95805,17 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/iron/dark,
/area/station/engineering/atmos/storage)
+"xTD" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/mob/living/basic/sloth/citrus,
+/turf/open/floor/iron,
+/area/station/command/heads_quarters/qm)
"xTJ" = (
/obj/structure/cable,
/obj/effect/turf_decal/stripes/line{
@@ -95815,13 +95946,6 @@
/obj/structure/barricade/wooden,
/turf/open/floor/plating,
/area/station/service/abandoned_gambling_den)
-"xVv" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
"xVI" = (
/obj/structure/rack,
/obj/item/analyzer,
@@ -96043,6 +96167,12 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/engineering/transit_tube)
+"xYM" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"xYN" = (
/obj/machinery/newscaster/directional/north,
/obj/effect/turf_decal/siding/white/corner{
@@ -96123,6 +96253,12 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/station/command/heads_quarters/qm)
+"xZP" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/camera/directional/south,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"yah" = (
/obj/machinery/computer/bank_machine,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -96696,6 +96832,18 @@
/obj/machinery/photocopier,
/turf/open/floor/iron/white,
/area/station/science/research)
+"yhW" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "garbage"
+ },
+/obj/machinery/recycler{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating,
+/area/station/maintenance/disposal)
"yhY" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -103262,7 +103410,7 @@ nOy
smV
smV
nOy
-mcF
+smV
aaa
bPC
bRz
@@ -103273,7 +103421,7 @@ caa
bPC
pYJ
ePZ
-tfO
+nCB
cVr
bAU
cVr
@@ -107385,7 +107533,7 @@ pGJ
bPC
pYJ
ePZ
-bMw
+qpQ
smV
aOl
smV
@@ -107628,7 +107776,7 @@ pSa
chU
chU
chU
-iXE
+chU
chU
chU
iIm
@@ -108413,7 +108561,7 @@ chU
chU
chU
aaQ
-mTB
+pzp
qYo
qYo
qYo
@@ -118444,7 +118592,7 @@ aVW
lbl
sHT
msB
-kXR
+iGF
owf
fUY
jjw
@@ -118993,7 +119141,7 @@ gpd
cXL
bMd
eJy
-mOh
+jag
jtC
ibp
pxb
@@ -119188,14 +119336,14 @@ uiP
vkg
wlS
vQj
-ntU
+wsT
cJX
fhr
kTd
wwr
rSZ
bAR
-thZ
+iDm
viB
pOz
hEL
@@ -120272,7 +120420,7 @@ sfN
rnS
mAt
mSP
-xQq
+oKn
bfz
bsY
vOk
@@ -120282,7 +120430,7 @@ tuq
grz
urh
pxb
-fiu
+eit
egk
nCI
nCI
@@ -121797,7 +121945,7 @@ lAs
trG
fnq
uKY
-xzL
+hMp
mYM
pTC
eSu
@@ -121819,7 +121967,7 @@ vSX
nEc
tFP
oMV
-sSx
+oDJ
cHU
eKz
qel
@@ -124362,8 +124510,8 @@ iqz
kgi
hps
hkJ
-ptA
-tGm
+tum
+iTM
abO
pTC
sNd
@@ -124906,7 +125054,7 @@ aJX
fSw
fTA
jkC
-cvc
+dKR
jUx
wEI
qYo
@@ -126439,7 +126587,7 @@ ddn
wMi
sIX
qCb
-vbT
+fIU
ljC
gmE
omw
@@ -126670,7 +126818,7 @@ ikf
vcB
vcB
jPf
-rqN
+bRs
sIe
bTe
jTw
@@ -127744,7 +127892,7 @@ bvd
wJJ
wEI
dnV
-aHw
+adE
gFO
qQM
isR
@@ -128140,7 +128288,7 @@ azA
oYs
bEs
bEs
-pRp
+pfs
tQY
ltr
qRN
@@ -128174,7 +128322,7 @@ hXw
btc
hFP
xAt
-uao
+eEI
oTB
sqM
oYs
@@ -132080,7 +132228,7 @@ whK
rcW
dJa
oRz
-aFs
+fIe
bgL
mfI
fvi
@@ -133589,7 +133737,7 @@ mGE
qGW
nHu
lgQ
-kBE
+bHd
mxU
xJh
pRS
@@ -134577,7 +134725,7 @@ ptC
maV
rgK
gmh
-gzc
+dxh
nUG
kVP
kVP
@@ -134673,7 +134821,7 @@ rEO
uLn
pMF
jDq
-kDv
+utz
loe
eoE
jbc
@@ -135133,7 +135281,7 @@ eVl
cGR
vBA
aPW
-iBH
+aOd
lkL
jDi
dZD
@@ -136965,8 +137113,8 @@ uNY
squ
pEU
cwh
-riZ
-pTz
+pCr
+vUf
cwh
cwh
udd
@@ -137445,7 +137593,7 @@ gOU
gOU
vDo
eBw
-aaj
+hxP
gOU
fOw
ilI
@@ -137505,10 +137653,10 @@ pdl
fOJ
kuU
tOS
-tsx
+xES
jqJ
jqJ
-dRQ
+sOp
qYL
jNY
llm
@@ -138025,7 +138173,7 @@ uue
jdf
qYL
qpU
-neT
+tNU
aNV
hvf
vid
@@ -138270,7 +138418,7 @@ nFO
tqw
kKy
xhT
-xtS
+ddp
ako
ako
gMX
@@ -138681,8 +138829,8 @@ pKn
vsA
fsl
elS
-eke
-vKx
+jyL
+jvp
cCb
wQv
oDR
@@ -138939,7 +139087,7 @@ sPo
vxL
jdL
jdL
-fiJ
+eVz
jdL
mDP
szg
@@ -138967,7 +139115,7 @@ hoC
yfI
bGf
kGo
-sCW
+vSm
xhW
ygL
xhW
@@ -139196,7 +139344,7 @@ hEQ
weX
iLF
jdL
-rUV
+dVA
jdL
gJI
ttP
@@ -139453,7 +139601,7 @@ vyG
dRo
tpI
jdL
-onA
+mWs
jdL
lgc
dfk
@@ -139679,7 +139827,7 @@ aad
aad
csz
jSE
-gOH
+oNE
wFz
xrr
aaa
@@ -139710,7 +139858,7 @@ uTB
wak
xor
jdL
-oFk
+rFg
jdL
lDi
lHC
@@ -139720,7 +139868,7 @@ kRn
kjl
lDi
lDi
-sLg
+rTB
bqv
hDZ
bfT
@@ -139808,9 +139956,9 @@ cwe
ltS
cwe
oDE
-fUr
+fTE
bcj
-pDy
+tfJ
oDE
ajY
tJh
@@ -139967,7 +140115,7 @@ nmb
kYn
djn
jdL
-cOS
+juz
jdL
aix
wHa
@@ -139984,21 +140132,21 @@ oSv
ueU
cNf
wqo
-lfC
+rLB
oSv
mOe
yhh
liD
mZU
-whb
+wxX
uBZ
pso
-sqW
-sqW
-scv
-eYZ
-vxt
-uzn
+nCY
+nCY
+aeD
+mlv
+dkr
+mjH
eUH
dvy
lSl
@@ -140224,7 +140372,7 @@ xwO
liM
xGK
jdL
-cOS
+juz
jdL
ncT
hTl
@@ -140481,9 +140629,9 @@ sma
tyU
kvK
sKC
-cxv
-joP
-jnd
+xhO
+rMj
+dPv
udk
uyt
iRP
@@ -140507,8 +140655,8 @@ gLz
xhW
axz
fOz
-rAl
-bkr
+syW
+ecX
yfo
qLp
pcx
@@ -140764,14 +140912,14 @@ ohH
xhW
xhW
nPo
-xMZ
-cGV
-cGV
-cGV
-cGV
-cGV
-uBd
-wuU
+xce
+hXg
+hXg
+hXg
+hXg
+hXg
+seX
+mEv
vPp
tJT
qzY
@@ -141019,14 +141167,14 @@ uSp
oSv
cFz
rWo
-qko
-vNV
-pxS
-fbu
-mlF
-qsF
-jKY
-cGV
+gpD
+kLA
+qbd
+gHq
+lJw
+tYI
+kUj
+hXg
lDY
tpZ
kOj
@@ -141238,11 +141386,11 @@ aeF
vno
nNs
ffk
-fTh
+eJx
egs
vno
rJN
-lUW
+aRX
pGy
vno
kvs
@@ -141275,16 +141423,16 @@ qaF
tQW
hQj
uzM
-aPD
-stf
-llj
-ftS
-fbu
-mDm
-vDj
-cwd
-cGV
-qmT
+oYr
+pGR
+bmo
+bFA
+gHq
+pDz
+quh
+tjo
+hXg
+fmH
tpZ
aaa
aad
@@ -141532,16 +141680,16 @@ rbV
qLg
uTu
tQP
-rmH
-toy
-izj
-fAj
-pUs
-okN
-oAV
-vId
-cGV
-eFU
+rid
+vFg
+eQG
+vXy
+kuj
+cjO
+hrz
+wTL
+hXg
+uoz
tpZ
aaa
lhY
@@ -141790,15 +141938,15 @@ fya
cSK
pok
rWo
-uND
-kKx
-dux
-cGV
-nEE
-cyc
-rQF
-cGV
-eFU
+xdZ
+nMi
+tJp
+hXg
+dsb
+sYn
+gVv
+hXg
+uoz
tpZ
aad
lhY
@@ -141861,7 +142009,7 @@ bRZ
qMf
jfW
gUF
-ltg
+lni
xeX
qkj
qMf
@@ -142047,15 +142195,15 @@ fKA
krp
krp
aJE
-mtL
-tcB
+vMq
+izK
rWo
-cGV
-cGV
-cGV
-cGV
-cGV
-jRc
+hXg
+hXg
+hXg
+hXg
+hXg
+mwM
tpZ
aaa
lhY
@@ -142305,14 +142453,14 @@ iWR
gkP
krp
llJ
-ljQ
-guj
-eYt
-nhj
-owZ
-bLN
+aFb
+sAL
+occ
+lDu
+cRR
+eCQ
tpZ
-eFU
+uoz
tpZ
aaa
lhY
@@ -142557,19 +142705,19 @@ aDg
krp
cAF
qqx
-xPf
+xTD
xZC
aiF
aJE
-jCu
-rUi
-kTs
-sgK
-iio
-gco
-hkn
+dXX
+qpd
+kqJ
+pBN
+vsR
+lyx
+rPi
qyX
-cwK
+nkO
tpZ
aaa
lhY
@@ -142784,7 +142932,7 @@ aad
aad
vno
iJj
-kVw
+ove
acU
vno
aad
@@ -142818,12 +142966,12 @@ osw
qZD
qrG
aJE
-dPC
-usJ
-iXd
-elO
-hzs
-uOk
+rYp
+idX
+xrl
+xYM
+fxx
+pAa
bhJ
tpZ
tpZ
@@ -142889,7 +143037,7 @@ pPl
vPf
qMf
rPf
-sNP
+irx
ovf
qkj
ygf
@@ -143075,12 +143223,12 @@ uQZ
xhJ
vMd
tgX
-jfO
-jBM
-tNn
-xVv
-dXs
-rgC
+uMS
+jyZ
+azD
+cTv
+qQy
+gty
tDD
rWo
aad
@@ -143564,7 +143712,7 @@ gdM
lbu
jtm
ikR
-emZ
+yhW
akS
oeX
aaa
@@ -144178,7 +144326,7 @@ xPK
wZE
eSU
haQ
-huS
+own
pdb
hnH
nvM
@@ -146443,7 +146591,7 @@ lYY
lYY
lYY
pdY
-nJF
+fgk
fvn
rNx
uPH
@@ -146923,7 +147071,7 @@ mSe
mSe
mSe
mSe
-vmo
+jTH
lQj
xBD
mXg
@@ -147178,7 +147326,7 @@ qYo
qYo
mSe
prB
-gTH
+sMG
mSe
iiR
log
@@ -147948,7 +148096,7 @@ hlr
wDX
biI
iZG
-bWw
+pZf
kxj
wDX
xNU
@@ -148284,7 +148432,7 @@ wEM
uen
iYg
klE
-mmA
+bZe
tHd
ujU
ehy
@@ -149305,7 +149453,7 @@ ouy
geH
nXH
gWF
-upq
+goa
jix
nmD
gQK
@@ -149516,7 +149664,7 @@ anY
dql
eBE
gIV
-eYo
+wlc
vgK
ryB
jlV
@@ -149529,7 +149677,7 @@ rIa
rIa
rIa
aVz
-lNN
+ero
lra
cgZ
qiM
@@ -149801,7 +149949,7 @@ aaa
aad
vop
qqe
-gan
+qVa
yaI
fNn
uEo
@@ -150082,7 +150230,7 @@ nXH
aad
nXH
uFH
-itC
+put
udQ
cun
kOR
@@ -150350,7 +150498,7 @@ hrt
wZV
vNa
cPU
-vhK
+eVc
oBM
pWe
aad
@@ -150540,7 +150688,7 @@ bzi
sWa
gDY
tKw
-fQC
+qDw
vgK
eOv
tLx
@@ -151074,7 +151222,7 @@ dwU
wtB
qBw
vYw
-lPH
+hOk
vCQ
hEF
hEF
@@ -151330,10 +151478,10 @@ teo
pKD
pbN
bLs
-hEF
-udb
+hyR
+lPH
udb
-hEF
+ggW
aad
aad
efQ
@@ -151587,11 +151735,11 @@ lIy
uro
bLs
bLs
-aaa
-aad
-aaa
-aKU
-aaa
+nEZ
+gCa
+gkt
+nEZ
+nEZ
aad
aaa
aaa
@@ -151844,11 +151992,11 @@ bLs
bLs
bLs
ptN
-efQ
-qYo
-efQ
-efQ
-qYo
+nEZ
+pgZ
+uHu
+aZj
+nEZ
qYo
efQ
qYo
@@ -152101,11 +152249,11 @@ mfO
aaa
aaa
aaa
-aaa
-qYo
-aaa
-aaa
-aaa
+nEZ
+rPb
+fvD
+knp
+nEZ
qYo
aaa
aaa
@@ -152358,12 +152506,12 @@ efQ
efQ
efQ
efQ
+nEZ
+xqp
+vpI
+xZP
+nEZ
qYo
-efQ
-efQ
-efQ
-qYo
-efQ
lvw
qYo
efQ
@@ -152615,14 +152763,14 @@ qYo
aaa
aaa
qYo
+nEZ
+apf
+iHn
+nEZ
+nEZ
qYo
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
efQ
aaa
uKw
@@ -152872,12 +153020,12 @@ efQ
efQ
efQ
qYo
+nEZ
+nEZ
+nEZ
+nEZ
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+qYo
aaa
aaa
efQ
@@ -153128,15 +153276,15 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+qYo
+qYo
+lvw
+qYo
+qYo
+uHd
+qYo
+uHd
+qYo
aad
dTS
uKw
@@ -153386,13 +153534,13 @@ aaa
aaa
aaa
aaa
+lvw
aaa
+uHd
aaa
+lvw
aaa
-aaa
-aaa
-aaa
-aaa
+uHd
aaa
efQ
aad
@@ -153643,13 +153791,13 @@ aaa
aaa
aaa
aaa
+uHd
aaa
+lvw
aaa
+uHd
aaa
-aaa
-aaa
-aaa
-aaa
+lvw
aaa
efQ
aaa
diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index 4de6c4c210e9cf..db261f9b2b9a38 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -1392,8 +1392,8 @@
/area/station/security/courtroom)
"awR" = (
/obj/machinery/conveyor{
- id = "garbage";
- dir = 1
+ dir = 1;
+ id = "garbage"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
@@ -1677,6 +1677,12 @@
},
/turf/open/floor/circuit/red,
/area/station/ai_monitored/turret_protected/ai_upload)
+"aAl" = (
+/obj/machinery/computer/mech_bay_power_console{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/station/security/mechbay)
"aAv" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -2815,8 +2821,8 @@
"aUi" = (
/obj/structure/table,
/obj/item/storage/briefcase{
- pixel_y = 3;
- pixel_x = 2
+ pixel_x = 2;
+ pixel_y = 3
},
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/item/storage/wallet,
@@ -3181,8 +3187,8 @@
pixel_x = 7
},
/obj/item/reagent_containers/cup/soda_cans/sol_dry{
- pixel_y = 4;
- pixel_x = -7
+ pixel_x = -7;
+ pixel_y = 4
},
/turf/open/floor/iron/white/corner,
/area/station/hallway/secondary/entry)
@@ -3446,6 +3452,13 @@
},
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/ai_upload)
+"bdL" = (
+/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{
+ dir = 4
+ },
+/obj/machinery/meter,
+/turf/open/floor/iron/dark,
+/area/station/science/ordnance)
"bdQ" = (
/obj/structure/table,
/obj/item/assembly/signaler{
@@ -3533,7 +3546,6 @@
/turf/open/floor/plating,
/area/mine/eva/lower)
"bfB" = (
-/obj/item/kirbyplants/random,
/obj/machinery/firealarm/directional/east,
/turf/open/floor/iron/dark/textured,
/area/station/security/office)
@@ -5312,8 +5324,8 @@
dir = 8;
id = "garbage";
name = "disposal conveyor";
- pixel_y = 5;
- pixel_x = -5
+ pixel_x = -5;
+ pixel_y = 5
},
/obj/structure/railing/corner,
/obj/effect/turf_decal/box/corners{
@@ -5915,12 +5927,6 @@
},
/turf/open/floor/iron/dark,
/area/station/service/chapel)
-"bMr" = (
-/obj/item/flashlight/lantern{
- start_on = 1
- },
-/turf/open/misc/asteroid/snow/icemoon,
-/area/icemoon/underground/explored)
"bMu" = (
/obj/structure/table/reinforced,
/obj/machinery/door/window/left/directional/north{
@@ -7155,8 +7161,8 @@
name = "Disposal Exit Vent"
},
/obj/machinery/conveyor{
- id = "garbage";
- dir = 1
+ dir = 1;
+ id = "garbage"
},
/obj/effect/turf_decal/stripes/red/box,
/turf/open/floor/plating,
@@ -7838,8 +7844,8 @@
/obj/structure/table,
/obj/item/storage/wallet,
/obj/item/storage/wallet{
- pixel_y = 3;
- pixel_x = 4
+ pixel_x = 4;
+ pixel_y = 3
},
/turf/open/floor/plastic,
/area/station/commons/dorms/laundry)
@@ -12094,7 +12100,6 @@
dir = 4
},
/obj/machinery/firealarm/directional/south,
-/obj/machinery/firealarm/directional/south,
/turf/open/floor/iron/dark,
/area/station/engineering/atmos/storage/gas)
"dBQ" = (
@@ -15378,35 +15383,6 @@
/obj/structure/bookcase/random/fiction,
/turf/open/floor/iron/dark,
/area/station/commons/lounge)
-"eDW" = (
-/obj/machinery/camera/directional/west{
- c_tag = "Security - HoS Office"
- },
-/obj/item/flashlight/lamp/green{
- pixel_x = -6;
- pixel_y = 16;
- start_on = 0
- },
-/obj/structure/table/wood,
-/obj/item/paper_bin{
- pixel_x = 8;
- pixel_y = 3
- },
-/obj/item/stamp/head/hos{
- pixel_x = 10;
- pixel_y = 6
- },
-/obj/machinery/recharger{
- pixel_x = -4;
- pixel_y = -1
- },
-/obj/machinery/airalarm/directional/west,
-/obj/item/phone{
- pixel_x = -9;
- pixel_y = 7
- },
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hos)
"eEh" = (
/obj/structure/table/reinforced,
/obj/item/storage/toolbox/mechanical,
@@ -16732,6 +16708,35 @@
/obj/structure/cable,
/turf/open/floor/engine,
/area/station/engineering/supermatter/room)
+"fad" = (
+/obj/machinery/camera/directional/west{
+ c_tag = "Security - HoS Office"
+ },
+/obj/item/flashlight/lamp/green{
+ pixel_x = -6;
+ pixel_y = 16;
+ start_on = 0
+ },
+/obj/structure/table/wood,
+/obj/item/paper_bin{
+ pixel_x = 8;
+ pixel_y = 3
+ },
+/obj/item/stamp/head/hos{
+ pixel_x = 10;
+ pixel_y = 6
+ },
+/obj/machinery/recharger{
+ pixel_x = -4;
+ pixel_y = -1
+ },
+/obj/machinery/airalarm/directional/west,
+/obj/item/phone{
+ pixel_x = -9;
+ pixel_y = 7
+ },
+/turf/open/floor/wood/large,
+/area/station/command/heads_quarters/hos)
"faf" = (
/obj/structure/tank_holder/extinguisher,
/turf/open/floor/plating,
@@ -16896,8 +16901,8 @@
/area/icemoon/underground/explored)
"fdX" = (
/obj/item/toy/cards/deck{
- pixel_y = 13;
- pixel_x = -9
+ pixel_x = -9;
+ pixel_y = 13
},
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/generic,
@@ -18195,6 +18200,13 @@
/obj/item/reagent_containers/cup/glass/waterbottle,
/turf/open/floor/plating,
/area/station/maintenance/starboard/fore)
+"fAH" = (
+/obj/effect/turf_decal/tile/red/anticorner/contrasted,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 1
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"fAV" = (
/obj/item/kirbyplants/random,
/turf/open/floor/iron,
@@ -19486,9 +19498,9 @@
},
/obj/effect/turf_decal/tile/yellow/fourcorners,
/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
id = "pharmacy_shutters2";
- name = "Pharmacy Shutters";
- dir = 4
+ name = "Pharmacy Shutters"
},
/turf/open/floor/iron,
/area/station/medical/pharmacy)
@@ -21048,6 +21060,18 @@
/obj/effect/spawner/random/vending/colavend,
/turf/open/floor/iron,
/area/station/commons/locker)
+"guh" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8
+ },
+/obj/machinery/airalarm/directional/south,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnancefreezer"
+ },
+/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/iron/dark,
+/area/station/science/ordnance)
"guS" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -21088,8 +21112,8 @@
/area/station/security/prison/workout)
"gvp" = (
/obj/item/chair/stool{
- pixel_y = -3;
- pixel_x = -1
+ pixel_x = -1;
+ pixel_y = -3
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/dim/directional/west,
@@ -22472,17 +22496,6 @@
/obj/machinery/light/small/directional/south,
/turf/open/floor/iron,
/area/station/security/prison/visit)
-"gSr" = (
-/obj/structure/table/reinforced,
-/obj/item/clothing/suit/utility/radiation,
-/obj/item/clothing/head/utility/radiation,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/item/geiger_counter,
-/obj/item/clothing/glasses/meson,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
"gSy" = (
/turf/open/floor/iron,
/area/station/security/prison/workout)
@@ -22650,13 +22663,13 @@
/area/station/science/breakroom)
"gVm" = (
/obj/item/coin/silver{
- pixel_y = -3;
- pixel_x = -5
+ pixel_x = -5;
+ pixel_y = -3
},
/obj/item/toy/plush/moth{
- pixel_y = 5;
+ name = "Marcellus";
pixel_x = 5;
- name = "Marcellus"
+ pixel_y = 5
},
/turf/open/floor/plating,
/area/station/commons/dorms/laundry)
@@ -24729,17 +24742,17 @@
"hCY" = (
/obj/structure/table/wood,
/obj/item/folder/yellow{
- pixel_y = 8;
- pixel_x = 3
+ pixel_x = 3;
+ pixel_y = 8
},
/obj/item/folder/white{
- pixel_y = 12;
- pixel_x = -3
+ pixel_x = -3;
+ pixel_y = 12
},
/obj/structure/sign/poster/contraband/random/directional/south,
/obj/item/folder/blue{
- pixel_y = 3;
- pixel_x = -3
+ pixel_x = -3;
+ pixel_y = 3
},
/obj/item/folder/red{
pixel_x = 5;
@@ -26550,18 +26563,6 @@
/obj/structure/chair/stool/directional/south,
/turf/open/floor/iron,
/area/station/commons/locker)
-"ihr" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "pharmacy_shutters2";
- name = "Pharmacy Shutters"
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "pharmacy_shutters2";
- name = "Pharmacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/medical/pharmacy)
"ihu" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
@@ -26616,7 +26617,6 @@
dir = 8
},
/obj/machinery/airalarm/directional/east,
-/obj/machinery/airalarm/directional/east,
/obj/machinery/camera/directional/east{
c_tag = "Cargo Bay Office - Access"
},
@@ -27535,8 +27535,8 @@
"ixb" = (
/obj/machinery/button/door/directional/south{
id = "vacantofficemaintshutter";
- pixel_x = 4;
name = "Privacy Shutters";
+ pixel_x = 4;
pixel_y = -28
},
/turf/open/floor/iron/grimy,
@@ -30656,12 +30656,6 @@
/obj/machinery/atmospherics/pipe/smart/simple/purple/visible,
/turf/open/floor/iron,
/area/station/engineering/atmos)
-"jwj" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance)
"jwl" = (
/obj/machinery/airalarm/directional/south,
/turf/open/floor/iron,
@@ -31302,8 +31296,8 @@
/area/station/engineering/atmos)
"jHV" = (
/obj/machinery/mineral/stacking_machine{
- stack_amt = 10;
- output_dir = 2
+ output_dir = 2;
+ stack_amt = 10
},
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -32566,6 +32560,12 @@
/obj/item/clothing/shoes/workboots,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
+"kbm" = (
+/obj/machinery/mech_bay_recharge_port{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/station/security/mechbay)
"kbn" = (
/obj/effect/decal/cleanable/food/pie_smudge,
/turf/open/floor/iron,
@@ -32577,8 +32577,8 @@
/area/icemoon/surface/outdoors/nospawn)
"kbq" = (
/obj/machinery/conveyor{
- id = "garbage";
- dir = 1
+ dir = 1;
+ id = "garbage"
},
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -32721,6 +32721,16 @@
/obj/structure/sign/warning/test_chamber/directional/south,
/turf/open/floor/iron,
/area/station/science/ordnance/testlab)
+"kdy" = (
+/obj/machinery/door/poddoor/shutters{
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/obj/structure/cable,
+/obj/effect/turf_decal/caution/stand_clear,
+/obj/effect/turf_decal/box,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"kdD" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -33719,6 +33729,16 @@
/obj/machinery/power/apc/auto_name/directional/east,
/turf/open/floor/iron/kitchen/diagonal,
/area/station/service/kitchen)
+"kqG" = (
+/obj/structure/table/reinforced,
+/obj/machinery/light/small/directional/east,
+/obj/effect/spawner/random/engineering/tool{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/obj/machinery/airalarm/directional/east,
+/turf/open/floor/iron,
+/area/station/security/mechbay)
"kqK" = (
/obj/effect/spawner/random/trash/mess,
/obj/effect/decal/cleanable/dirt,
@@ -33952,17 +33972,6 @@
/obj/structure/sign/warning/electric_shock,
/turf/closed/wall/r_wall,
/area/station/security/prison/work)
-"ktw" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/firealarm/directional/south,
-/obj/machinery/camera/directional/south{
- c_tag = "Engineering Supermatter Fore";
- network = list("ss13","engine");
- pixel_x = 23
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
"ktx" = (
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 1
@@ -34111,6 +34120,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
},
+/obj/item/kirbyplants/random,
/turf/open/floor/iron/dark/textured,
/area/station/security/office)
"kvR" = (
@@ -34598,8 +34608,8 @@
pixel_y = 2
},
/obj/item/clothing/suit/hooded/wintercoat/eva{
- pixel_y = 5;
- pixel_x = 1
+ pixel_x = 1;
+ pixel_y = 5
},
/obj/machinery/light/small/directional/east,
/obj/machinery/mining_weather_monitor/directional/north,
@@ -36910,6 +36920,15 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/mine/laborcamp)
+"lmM" = (
+/obj/structure/cable,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"lmY" = (
/obj/machinery/newscaster/directional/west,
/obj/machinery/camera{
@@ -37043,8 +37062,14 @@
/turf/open/floor/iron,
/area/station/construction)
"loy" = (
-/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/red/anticorner/contrasted,
+/obj/machinery/button/door/directional/east{
+ id = "secmechbay";
+ name = "Security Mech Garage Door Controls";
+ req_access = list("security")
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/security/brig/upper)
"loG" = (
@@ -38267,6 +38292,19 @@
},
/turf/open/floor/iron/dark/corner,
/area/station/engineering/atmos/storage/gas)
+"lHL" = (
+/obj/structure/cable,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/machinery/button/door/directional/north{
+ id = "secmechbay";
+ name = "Security Mech Garage Door Controls";
+ req_access = list("security")
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"lIk" = (
/obj/effect/spawner/structure/window,
/turf/open/floor/plating,
@@ -38460,8 +38498,8 @@
/obj/structure/table,
/obj/effect/turf_decal/tile/brown/half/contrasted,
/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 6
},
/obj/item/food/cheesiehonkers,
/turf/open/floor/iron,
@@ -38816,6 +38854,11 @@
/obj/machinery/light/small/directional/east,
/turf/open/floor/iron,
/area/station/commons/fitness)
+"lRc" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/station/security/mechbay)
"lRd" = (
/obj/structure/chair,
/obj/effect/turf_decal/stripes/line{
@@ -40621,9 +40664,9 @@
"mwF" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
id = "pharmacy_shutters";
- name = "Pharmacy Shutters";
- dir = 4
+ name = "Pharmacy Shutters"
},
/turf/open/floor/plating,
/area/station/medical/pharmacy)
@@ -41038,6 +41081,10 @@
/obj/item/stamp/head/ce,
/turf/open/floor/iron,
/area/station/command/heads_quarters/ce)
+"mDA" = (
+/obj/machinery/air_sensor/engine_chamber,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter)
"mDX" = (
/turf/open/floor/engine/n2,
/area/station/engineering/atmos)
@@ -43181,6 +43228,19 @@
},
/turf/open/floor/iron,
/area/station/commons/dorms)
+"nmq" = (
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/structure/cable,
+/obj/structure/table/reinforced,
+/obj/effect/spawner/random/engineering/tool{
+ pixel_x = -11
+ },
+/obj/effect/spawner/random/engineering/tool{
+ pixel_x = 5;
+ pixel_y = 8
+ },
+/turf/open/floor/iron,
+/area/station/security/mechbay)
"nmr" = (
/obj/machinery/hydroponics/soil,
/obj/item/cultivator,
@@ -43844,8 +43904,8 @@
dir = 4
},
/obj/machinery/door/airlock/multi_tile/public/glass{
- name = "Arrivals Dock";
- dir = 4
+ dir = 4;
+ name = "Arrivals Dock"
},
/turf/open/floor/iron/dark/textured,
/area/station/hallway/secondary/entry)
@@ -45505,6 +45565,18 @@
/obj/machinery/atmospherics/pipe/smart/simple/orange/visible,
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
+"nTk" = (
+/obj/structure/table/reinforced,
+/obj/item/clothing/suit/utility/radiation,
+/obj/item/clothing/head/utility/radiation,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/item/geiger_counter,
+/obj/item/clothing/glasses/meson,
+/obj/machinery/firealarm/directional/north,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter/room)
"nTp" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -46015,15 +46087,6 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/iron,
/area/station/science/xenobiology)
-"odf" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/obj/effect/turf_decal/box/red,
-/obj/machinery/airalarm/directional/east,
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/burnchamber)
"odi" = (
/obj/item/toy/snowball{
pixel_x = 5;
@@ -46739,8 +46802,8 @@
dir = 4
},
/obj/machinery/door/airlock/multi_tile/public/glass{
- name = "Arrivals Dock";
- dir = 4
+ dir = 4;
+ name = "Arrivals Dock"
},
/turf/open/floor/iron/dark/textured,
/area/station/hallway/secondary/entry)
@@ -47143,8 +47206,8 @@
/obj/structure/rack,
/obj/machinery/light/cold/directional/north,
/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 6
},
/obj/item/healthanalyzer,
/turf/open/floor/iron/white/textured,
@@ -47446,6 +47509,13 @@
/obj/structure/sign/poster/contraband/random/directional/north,
/turf/open/floor/plating,
/area/station/security/prison/safe)
+"oyL" = (
+/obj/effect/turf_decal/tile/red/half/contrasted,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 1
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"oyV" = (
/obj/effect/turf_decal/tile/neutral/diagonal_edge,
/obj/structure/cable,
@@ -49349,12 +49419,12 @@
/area/station/medical/medbay/central)
"pcc" = (
/obj/item/stack/spacecash/c10{
- pixel_y = 4;
- pixel_x = 4
+ pixel_x = 4;
+ pixel_y = 4
},
/obj/item/toy/plush/beeplushie{
- pixel_y = -6;
- name = "Coolidge"
+ name = "Coolidge";
+ pixel_y = -6
},
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plating,
@@ -50414,6 +50484,17 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/cargo/office)
+"psY" = (
+/obj/machinery/door/poddoor/shutters{
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/obj/effect/turf_decal/caution/stand_clear,
+/obj/effect/turf_decal/box,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"ptd" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -52294,6 +52375,9 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/engineering/main)
+"pVL" = (
+/turf/closed/wall/r_wall,
+/area/station/security/mechbay)
"pVN" = (
/obj/structure/cable,
/turf/open/floor/plating,
@@ -54293,16 +54377,6 @@
/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
/turf/open/floor/iron/large,
/area/mine/mechbay)
-"qDj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1;
- name = "Gas to Filter"
- },
-/obj/effect/mapping_helpers/airalarm/engine_access,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
"qDD" = (
/obj/machinery/washing_machine,
/obj/effect/decal/cleanable/dirt,
@@ -55814,9 +55888,9 @@
/obj/machinery/smartfridge/chemistry/preloaded,
/obj/machinery/door/firedoor,
/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
id = "pharmacy_shutters";
- name = "Pharmacy Shutters";
- dir = 4
+ name = "Pharmacy Shutters"
},
/turf/open/floor/iron/white,
/area/station/medical/pharmacy)
@@ -56902,8 +56976,8 @@
pixel_y = 3
},
/obj/item/assembly/flash/handheld{
- pixel_y = 3;
- pixel_x = -19
+ pixel_x = -19;
+ pixel_y = 3
},
/obj/structure/table,
/obj/effect/turf_decal/tile/red/anticorner/contrasted,
@@ -57938,9 +58012,9 @@
/obj/machinery/smartfridge/chemistry/preloaded,
/obj/machinery/door/firedoor,
/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
id = "pharmacy_shutters2";
- name = "Pharmacy Shutters";
- dir = 4
+ name = "Pharmacy Shutters"
},
/turf/open/floor/iron/white,
/area/station/medical/pharmacy)
@@ -58621,6 +58695,14 @@
},
/turf/open/floor/iron,
/area/station/maintenance/disposal/incinerator)
+"rTp" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1;
+ name = "Gas to Filter"
+ },
+/turf/open/floor/engine,
+/area/station/engineering/supermatter)
"rTs" = (
/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden,
/turf/open/floor/plating,
@@ -59119,9 +59201,9 @@
},
/obj/effect/turf_decal/tile/yellow/fourcorners,
/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
id = "pharmacy_shutters";
- name = "Pharmacy Shutters";
- dir = 4
+ name = "Pharmacy Shutters"
},
/turf/open/floor/iron,
/area/station/medical/pharmacy)
@@ -59531,6 +59613,22 @@
},
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
+"shJ" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/camera/directional/south{
+ c_tag = "Engineering Supermatter Fore";
+ network = list("ss13","engine");
+ pixel_x = 23
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
+/obj/machinery/airalarm/directional/south,
+/obj/effect/mapping_helpers/airalarm/engine_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "engine"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter/room)
"shT" = (
/obj/effect/turf_decal/tile/blue{
dir = 1
@@ -59966,14 +60064,6 @@
/obj/effect/turf_decal/tile/blue/half/contrasted,
/turf/open/floor/iron,
/area/station/engineering/atmos)
-"soi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/item/flashlight/lamp{
- start_on = 0
- },
-/turf/open/floor/wood,
-/area/station/maintenance/aft/greater)
"sok" = (
/obj/machinery/door/airlock/security/glass{
name = "Security Office"
@@ -60104,13 +60194,13 @@
pixel_y = -5
},
/obj/item/coin/plasma{
- pixel_y = -2;
- pixel_x = 3
+ pixel_x = 3;
+ pixel_y = -2
},
/obj/item/toy/plush/lizard_plushie{
+ name = "Cassius";
pixel_x = 11;
- pixel_y = -4;
- name = "Cassius"
+ pixel_y = -4
},
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plating,
@@ -61655,8 +61745,8 @@
/area/station/medical/chemistry)
"sLR" = (
/obj/machinery/conveyor{
- id = "garbage";
- dir = 1
+ dir = 1;
+ id = "garbage"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
@@ -62440,6 +62530,14 @@
/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry,
/turf/open/floor/plating,
/area/station/maintenance/department/medical/morgue)
+"taj" = (
+/obj/structure/cable,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light/small/directional/west,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"tak" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -62626,9 +62724,9 @@
"teE" = (
/obj/effect/spawner/structure/window,
/obj/machinery/door/poddoor/shutters{
+ dir = 8;
id = "vacantofficemaintshutter";
- name = "Privacy Shutters";
- dir = 8
+ name = "Privacy Shutters"
},
/turf/open/floor/plating,
/area/station/commons/vacant_room/office)
@@ -62950,8 +63048,8 @@
dir = 4
},
/obj/machinery/door/airlock/multi_tile/public/glass{
- name = "Auxiliary Dock";
- dir = 4
+ dir = 4;
+ name = "Auxiliary Dock"
},
/turf/open/floor/iron/dark/textured,
/area/station/hallway/secondary/entry)
@@ -65023,6 +65121,12 @@
/obj/machinery/suit_storage_unit/security,
/turf/open/floor/iron/smooth,
/area/station/security/brig/upper)
+"tSs" = (
+/obj/item/flashlight/lantern{
+ start_on = 1
+ },
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/underground/explored)
"tSt" = (
/obj/structure/sign/painting/library,
/turf/closed/wall,
@@ -68054,15 +68158,6 @@
dir = 1
},
/area/station/engineering/main)
-"uSq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{
- dir = 4
- },
-/obj/machinery/meter,
-/obj/machinery/airalarm/directional/east,
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/freezerchamber)
"uSS" = (
/obj/machinery/recharge_station,
/obj/effect/turf_decal/stripes/box,
@@ -69413,6 +69508,11 @@
/obj/structure/sign/warning/gas_mask/directional/west,
/turf/open/floor/iron,
/area/station/cargo/drone_bay)
+"vpn" = (
+/obj/vehicle/sealed/mecha/ripley/paddy/preset,
+/obj/structure/cable,
+/turf/open/floor/iron/recharge_floor,
+/area/station/security/mechbay)
"vpR" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark,
@@ -69566,6 +69666,16 @@
/obj/structure/marker_beacon/burgundy,
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
+"vsL" = (
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/red/anticorner/contrasted{
+ dir = 8
+ },
+/obj/machinery/camera/directional/west{
+ c_tag = "Security - Office - Port"
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"vsM" = (
/obj/structure/cable,
/obj/machinery/power/apc/auto_name/directional/west,
@@ -70790,6 +70900,14 @@
/obj/structure/cable/layer3,
/turf/open/floor/plating,
/area/station/ai_monitored/turret_protected/aisat_interior)
+"vMN" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table,
+/obj/item/flashlight/lamp{
+ start_on = 0
+ },
+/turf/open/floor/wood,
+/area/station/maintenance/aft/greater)
"vMR" = (
/obj/structure/table/glass,
/obj/item/seeds/glowshroom,
@@ -73358,6 +73476,8 @@
"wAT" = (
/obj/structure/cable,
/obj/effect/turf_decal/tile/red/half/contrasted,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/security/brig/upper)
"wAW" = (
@@ -75567,8 +75687,8 @@
"xgX" = (
/obj/structure/table/wood,
/obj/effect/spawner/random/entertainment/deck{
- pixel_y = 15;
- pixel_x = -2
+ pixel_x = -2;
+ pixel_y = 15
},
/obj/effect/spawner/random/food_or_drink/snack{
pixel_x = 5;
@@ -76239,6 +76359,19 @@
/obj/item/food/grown/carrot,
/turf/open/misc/asteroid/snow/standard_air,
/area/station/science/research)
+"xsR" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/effect/turf_decal/box/red,
+/obj/machinery/airalarm/directional/east,
+/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnanceburn"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/iron/dark,
+/area/station/science/ordnance)
"xtc" = (
/obj/effect/turf_decal/trimline/blue/filled/warning{
dir = 1
@@ -186529,7 +186662,7 @@ thA
thA
thA
rcY
-bMr
+tSs
iDt
scw
scw
@@ -194033,7 +194166,7 @@ qSk
sbd
rEh
qSk
-jwj
+guh
qZN
dJy
pNB
@@ -194286,11 +194419,11 @@ nBV
iao
hKj
iao
-odf
+xsR
sbd
jaY
rhY
-uSq
+bdL
pjc
gmb
hac
@@ -238670,7 +238803,7 @@ nbp
mgU
nbt
ioi
-eDW
+fad
azx
tDw
rhf
@@ -238779,9 +238912,9 @@ sSJ
oSR
glc
fab
-ktw
+shJ
bny
-qDj
+rTp
xBp
bYw
bYw
@@ -239040,7 +239173,7 @@ tfR
iNa
tLW
seR
-esE
+mDA
uey
esE
uLe
@@ -239805,7 +239938,7 @@ sIp
uif
wRd
gka
-gSr
+nTk
fab
iag
loc
@@ -240740,7 +240873,7 @@ jNp
jNp
jNp
jNp
-sDl
+pVL
sDl
sDl
sDl
@@ -240993,11 +241126,11 @@ law
eqI
ewM
wAT
-lbk
-bln
-bln
-bln
-sDl
+kdy
+taj
+vsL
+vpn
+lRc
sDl
sDl
sDl
@@ -241250,11 +241383,11 @@ eyb
hAQ
ksC
loy
-lbk
-bln
-bln
-bln
-sDl
+psY
+lmM
+oyL
+kbm
+lRc
sDl
sDl
sDl
@@ -241508,10 +241641,10 @@ mfH
cIY
mfH
mfH
-ntK
-bln
-sDl
-sDl
+lHL
+fAH
+aAl
+lRc
sDl
sDl
sDl
@@ -241764,11 +241897,11 @@ ykw
tSi
kfc
dcX
-lbk
-bln
-bln
-sDl
-sDl
+mfH
+nmq
+kqG
+pVL
+pVL
sDl
sDl
sDl
@@ -242022,9 +242155,9 @@ nOQ
cqx
sQB
mfH
-bln
-sDl
-sDl
+pVL
+pVL
+pVL
sDl
sDl
tOq
@@ -245155,7 +245288,7 @@ aMP
dQo
oQD
hHI
-ihr
+tdE
fBR
fKi
tHr
@@ -249561,7 +249694,7 @@ bPY
rwe
wGO
npD
-soi
+vMN
hRe
ves
dFA
diff --git a/_maps/map_files/Mafia/mafia_ayylmao.dmm b/_maps/map_files/Mafia/mafia_ayylmao.dmm
index b9d8582f3b0101..6fdc04e3d0954f 100644
--- a/_maps/map_files/Mafia/mafia_ayylmao.dmm
+++ b/_maps/map_files/Mafia/mafia_ayylmao.dmm
@@ -9,6 +9,10 @@
/obj/effect/landmark/mafia,
/turf/open/floor/plating/abductor,
/area/centcom/mafia)
+"f" = (
+/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium,
+/turf/closed/indestructible/alien,
+/area/centcom/mafia)
"g" = (
/obj/mafia_game_board,
/obj/effect/mapping_helpers/broken_floor,
@@ -48,15 +52,6 @@
/obj/item/abductor/gizmo,
/turf/open/floor/plating/abductor2,
/area/centcom/mafia)
-"p" = (
-/obj/machinery/door/poddoor/preopen{
- desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
- id = "mafia";
- max_integrity = 99999;
- name = "Station Night Shutters"
- },
-/turf/closed/indestructible/fakeglass,
-/area/centcom/mafia)
"q" = (
/turf/open/floor/plating/abductor,
/area/centcom/mafia)
@@ -83,8 +78,8 @@
max_integrity = 99999;
name = "Station Night Shutters"
},
-/obj/structure/window/reinforced/plasma/plastitanium,
-/turf/open/floor/plating/abductor2,
+/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium,
+/turf/open/space/basic,
/area/centcom/mafia)
"z" = (
/obj/structure/grille/indestructible,
@@ -350,7 +345,7 @@ i
N
o
r
-p
+x
m
q
x
@@ -578,7 +573,7 @@ q
b
b
r
-b
+f
q
b
b
diff --git a/_maps/map_files/Mafia/mafia_ball.dmm b/_maps/map_files/Mafia/mafia_ball.dmm
index fb4dc490d367f7..e642cc78783e27 100644
--- a/_maps/map_files/Mafia/mafia_ball.dmm
+++ b/_maps/map_files/Mafia/mafia_ball.dmm
@@ -67,7 +67,8 @@
max_integrity = 99999;
name = "Station Night Shutters"
},
-/turf/closed/indestructible/fakeglass,
+/obj/effect/spawner/structure/window/reinforced/indestructible,
+/turf/open/space/basic,
/area/centcom/mafia)
"q" = (
/turf/open/floor/iron/dark,
@@ -91,8 +92,12 @@
/obj/effect/mapping_helpers/burnt_floor,
/turf/open/floor/plating,
/area/centcom/mafia)
+"E" = (
+/turf/template_noop,
+/area/template_noop)
(1,1,1) = {"
+E
a
a
a
@@ -114,10 +119,10 @@ a
a
a
a
-a
-a
+E
"}
(2,1,1) = {"
+E
a
b
b
@@ -138,14 +143,13 @@ b
b
b
b
-b
-b
a
+E
"}
(3,1,1) = {"
+E
a
b
-b
c
c
c
@@ -164,13 +168,13 @@ c
c
c
b
-b
a
+E
"}
(4,1,1) = {"
+E
a
b
-b
c
g
h
@@ -189,12 +193,12 @@ h
k
c
b
-b
a
+E
"}
(5,1,1) = {"
a
-b
+a
b
c
h
@@ -214,7 +218,7 @@ i
h
c
b
-b
+a
a
"}
(6,1,1) = {"
@@ -544,7 +548,7 @@ a
"}
(19,1,1) = {"
a
-b
+a
b
c
h
@@ -564,13 +568,13 @@ d
h
c
b
-b
+a
a
"}
(20,1,1) = {"
+E
a
b
-b
c
k
h
@@ -589,13 +593,13 @@ h
v
c
b
-b
a
+E
"}
(21,1,1) = {"
+E
a
b
-b
c
c
c
@@ -614,10 +618,11 @@ c
c
c
b
-b
a
+E
"}
(22,1,1) = {"
+E
a
b
b
@@ -638,11 +643,11 @@ b
b
b
b
-b
-b
a
+E
"}
(23,1,1) = {"
+E
a
a
a
@@ -664,6 +669,5 @@ a
a
a
a
-a
-a
+E
"}
diff --git a/_maps/map_files/Mafia/mafia_gothic.dmm b/_maps/map_files/Mafia/mafia_gothic.dmm
index 817e145d111035..5dadad3d2c1794 100644
--- a/_maps/map_files/Mafia/mafia_gothic.dmm
+++ b/_maps/map_files/Mafia/mafia_gothic.dmm
@@ -62,7 +62,8 @@
max_integrity = 99999;
name = "Station Night Shutters"
},
-/turf/closed/indestructible/opsglass,
+/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium,
+/turf/open/space/basic,
/area/centcom/mafia)
"q" = (
/turf/open/floor/carpet/red,
@@ -85,6 +86,9 @@
/obj/effect/mapping_helpers/burnt_floor,
/turf/open/floor/plating,
/area/centcom/mafia)
+"y" = (
+/turf/template_noop,
+/area/template_noop)
"D" = (
/obj/effect/landmark/mafia,
/turf/open/floor/iron/chapel{
@@ -131,6 +135,9 @@
dir = 8
},
/area/centcom/mafia)
+"U" = (
+/turf/closed/wall/r_wall,
+/area/centcom/mafia)
"X" = (
/turf/open/floor/iron/chapel{
dir = 1
@@ -138,6 +145,7 @@
/area/centcom/mafia)
(1,1,1) = {"
+y
a
a
a
@@ -159,38 +167,37 @@ a
a
a
a
-a
-a
+y
"}
(2,1,1) = {"
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-a
+y
+a
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+a
+y
"}
(3,1,1) = {"
+y
a
-b
-b
+U
c
c
c
@@ -208,14 +215,14 @@ c
c
c
c
-b
-b
+U
a
+y
"}
(4,1,1) = {"
+y
a
-b
-b
+U
c
g
h
@@ -233,14 +240,14 @@ d
h
k
c
-b
-b
+U
a
+y
"}
(5,1,1) = {"
a
-b
-b
+a
+U
c
h
d
@@ -258,14 +265,14 @@ d
i
h
c
-b
-b
+U
+a
a
"}
(6,1,1) = {"
a
-b
-b
+U
+U
c
i
b
@@ -283,13 +290,13 @@ b
b
d
c
-b
-b
+U
+U
a
"}
(7,1,1) = {"
a
-b
+U
c
c
d
@@ -309,12 +316,12 @@ b
d
c
c
-b
+U
a
"}
(8,1,1) = {"
a
-b
+U
c
d
d
@@ -334,12 +341,12 @@ b
d
d
c
-b
+U
a
"}
(9,1,1) = {"
a
-b
+U
c
d
b
@@ -359,12 +366,12 @@ b
b
d
c
-b
+U
a
"}
(10,1,1) = {"
a
-b
+U
c
d
b
@@ -384,12 +391,12 @@ Q
b
d
c
-b
+U
a
"}
(11,1,1) = {"
a
-b
+U
c
d
j
@@ -409,12 +416,12 @@ O
j
i
c
-b
+U
a
"}
(12,1,1) = {"
a
-b
+U
c
i
b
@@ -434,12 +441,12 @@ b
b
d
c
-b
+U
a
"}
(13,1,1) = {"
a
-b
+U
c
d
j
@@ -459,12 +466,12 @@ q
j
d
c
-b
+U
a
"}
(14,1,1) = {"
a
-b
+U
c
d
b
@@ -484,12 +491,12 @@ l
b
i
c
-b
+U
a
"}
(15,1,1) = {"
a
-b
+U
c
d
b
@@ -509,12 +516,12 @@ b
b
d
c
-b
+U
a
"}
(16,1,1) = {"
a
-b
+U
c
f
d
@@ -534,12 +541,12 @@ b
d
d
c
-b
+U
a
"}
(17,1,1) = {"
a
-b
+U
c
c
d
@@ -559,13 +566,13 @@ b
d
c
c
-b
+U
a
"}
(18,1,1) = {"
a
-b
-b
+U
+U
c
d
b
@@ -583,14 +590,14 @@ b
b
d
c
-b
-b
+U
+U
a
"}
(19,1,1) = {"
a
-b
-b
+a
+U
c
h
i
@@ -608,14 +615,14 @@ i
d
h
c
-b
-b
+U
+a
a
"}
(20,1,1) = {"
+y
a
-b
-b
+U
c
k
h
@@ -633,14 +640,14 @@ d
h
v
c
-b
-b
+U
a
+y
"}
(21,1,1) = {"
+y
a
-b
-b
+U
c
c
c
@@ -658,36 +665,37 @@ c
c
c
c
-b
-b
+U
a
+y
"}
(22,1,1) = {"
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-a
+y
+a
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+U
+a
+y
"}
(23,1,1) = {"
+y
a
a
a
@@ -709,6 +717,5 @@ a
a
a
a
-a
-a
+y
"}
diff --git a/_maps/map_files/Mafia/mafia_lavaland.dmm b/_maps/map_files/Mafia/mafia_lavaland.dmm
index 96ddef90b5cebf..c6189750b0aabd 100644
--- a/_maps/map_files/Mafia/mafia_lavaland.dmm
+++ b/_maps/map_files/Mafia/mafia_lavaland.dmm
@@ -82,7 +82,8 @@
max_integrity = 99999;
name = "Station Night Shutters"
},
-/turf/closed/indestructible/fakeglass,
+/obj/effect/spawner/structure/window/reinforced/indestructible,
+/turf/open/space/basic,
/area/centcom/mafia)
"aq" = (
/turf/open/floor/fakebasalt,
@@ -282,12 +283,16 @@
},
/turf/open/floor/iron/dark,
/area/centcom/mafia)
+"qp" = (
+/turf/template_noop,
+/area/template_noop)
"GL" = (
/obj/effect/turf_decal/tile/red/half/contrasted,
/turf/open/floor/iron/dark,
/area/centcom/mafia)
(1,1,1) = {"
+qp
aa
aa
aa
@@ -309,10 +314,10 @@ aa
aa
aa
aa
-aa
-aa
+qp
"}
(2,1,1) = {"
+qp
aa
aY
aY
@@ -333,14 +338,13 @@ aY
aY
aY
aY
-aY
-aY
aa
+qp
"}
(3,1,1) = {"
+qp
aa
aY
-aY
ac
ac
ac
@@ -359,13 +363,13 @@ ac
ac
ac
aY
-aY
aa
+qp
"}
(4,1,1) = {"
+qp
aa
aY
-aY
ac
ag
ah
@@ -384,12 +388,12 @@ ah
ak
ac
aY
-aY
aa
+qp
"}
(5,1,1) = {"
aa
-aY
+aa
aY
ac
ah
@@ -409,7 +413,7 @@ ai
ah
ac
aY
-aY
+aa
aa
"}
(6,1,1) = {"
@@ -739,7 +743,7 @@ aa
"}
(19,1,1) = {"
aa
-aY
+aa
aY
ac
ah
@@ -759,13 +763,13 @@ ad
ah
ac
aY
-aY
+aa
aa
"}
(20,1,1) = {"
+qp
aa
aY
-aY
ac
ak
ah
@@ -784,13 +788,13 @@ ah
av
ac
aY
-aY
aa
+qp
"}
(21,1,1) = {"
+qp
aa
aY
-aY
ac
ac
ac
@@ -809,10 +813,11 @@ ac
ac
ac
aY
-aY
aa
+qp
"}
(22,1,1) = {"
+qp
aa
aY
aY
@@ -833,11 +838,11 @@ aY
aY
aY
aY
-aY
-aY
aa
+qp
"}
(23,1,1) = {"
+qp
aa
aa
aa
@@ -859,6 +864,5 @@ aa
aa
aa
aa
-aa
-aa
+qp
"}
diff --git a/_maps/map_files/Mafia/mafia_snow.dmm b/_maps/map_files/Mafia/mafia_snow.dmm
index b8fbc0650b4cb8..bbc5f958d75abd 100644
--- a/_maps/map_files/Mafia/mafia_snow.dmm
+++ b/_maps/map_files/Mafia/mafia_snow.dmm
@@ -71,7 +71,8 @@
max_integrity = 99999;
name = "Station Night Shutters"
},
-/turf/closed/indestructible/fakeglass,
+/obj/effect/spawner/structure/window/ice,
+/turf/open/space/basic,
/area/centcom/mafia)
"q" = (
/turf/open/floor/iron/dark,
@@ -176,6 +177,9 @@
"K" = (
/turf/closed/indestructible/rock/snow,
/area/centcom/mafia)
+"L" = (
+/turf/template_noop,
+/area/template_noop)
"R" = (
/obj/effect/landmark/mafia,
/turf/open/floor/iron,
@@ -187,7 +191,7 @@
/area/centcom/mafia)
(1,1,1) = {"
-a
+L
a
a
a
@@ -212,6 +216,7 @@ a
a
"}
(2,1,1) = {"
+L
a
b
b
@@ -222,7 +227,6 @@ b
b
b
b
-b
s
K
K
@@ -237,9 +241,9 @@ K
a
"}
(3,1,1) = {"
+L
a
b
-b
s
s
s
@@ -262,9 +266,9 @@ K
a
"}
(4,1,1) = {"
+L
a
b
-b
s
g
h
@@ -288,7 +292,7 @@ a
"}
(5,1,1) = {"
a
-b
+a
b
s
h
@@ -375,8 +379,8 @@ s
q
s
t
-p
-p
+s
+s
z
z
p
@@ -427,7 +431,7 @@ p
p
p
p
-p
+s
p
D
p
@@ -467,7 +471,7 @@ b
s
i
s
-b
+s
p
s
p
@@ -477,10 +481,10 @@ v
t
p
p
+s
p
-p
-p
-p
+s
+s
w
w
K
@@ -527,7 +531,7 @@ p
p
p
p
-p
+s
p
D
p
@@ -575,8 +579,8 @@ s
r
s
t
-p
-p
+s
+s
z
z
p
@@ -638,7 +642,7 @@ a
"}
(19,1,1) = {"
a
-b
+a
b
s
h
@@ -662,9 +666,9 @@ K
a
"}
(20,1,1) = {"
+L
a
b
-b
s
k
h
@@ -687,9 +691,9 @@ K
a
"}
(21,1,1) = {"
+L
a
b
-b
s
s
s
@@ -712,6 +716,7 @@ K
a
"}
(22,1,1) = {"
+L
a
b
b
@@ -722,7 +727,6 @@ b
b
b
b
-b
s
K
K
@@ -737,7 +741,7 @@ K
a
"}
(23,1,1) = {"
-a
+L
a
a
a
diff --git a/_maps/map_files/Mafia/mafia_spiderclan.dmm b/_maps/map_files/Mafia/mafia_spiderclan.dmm
index ff83f8de3ec40e..a00e373c1a4c5a 100644
--- a/_maps/map_files/Mafia/mafia_spiderclan.dmm
+++ b/_maps/map_files/Mafia/mafia_spiderclan.dmm
@@ -94,11 +94,15 @@
/obj/structure/showcase/katana,
/turf/open/misc/beach/sand,
/area/centcom/mafia)
+"Q" = (
+/turf/template_noop,
+/area/template_noop)
"S" = (
/turf/closed/wall/mineral/wood,
/area/centcom/mafia)
(1,1,1) = {"
+Q
a
a
a
@@ -120,10 +124,10 @@ a
a
a
a
-a
-a
+Q
"}
(2,1,1) = {"
+Q
a
S
S
@@ -144,14 +148,13 @@ S
S
S
S
-S
-S
a
+Q
"}
(3,1,1) = {"
+Q
a
S
-S
c
c
c
@@ -170,13 +173,13 @@ c
c
c
S
-S
a
+Q
"}
(4,1,1) = {"
+Q
a
S
-S
c
g
h
@@ -195,12 +198,12 @@ h
k
c
S
-S
a
+Q
"}
(5,1,1) = {"
a
-S
+a
S
c
h
@@ -220,7 +223,7 @@ i
h
c
S
-S
+a
a
"}
(6,1,1) = {"
@@ -550,7 +553,7 @@ a
"}
(19,1,1) = {"
a
-S
+a
S
c
h
@@ -570,13 +573,13 @@ d
h
c
S
-S
+a
a
"}
(20,1,1) = {"
+Q
a
S
-S
c
k
h
@@ -595,13 +598,13 @@ h
v
c
S
-S
a
+Q
"}
(21,1,1) = {"
+Q
a
S
-S
c
c
c
@@ -620,10 +623,11 @@ c
c
c
S
-S
a
+Q
"}
(22,1,1) = {"
+Q
a
S
S
@@ -644,11 +648,11 @@ S
S
S
S
-S
-S
a
+Q
"}
(23,1,1) = {"
+Q
a
a
a
@@ -670,6 +674,5 @@ a
a
a
a
-a
-a
+Q
"}
diff --git a/_maps/map_files/Mafia/mafia_syndie.dmm b/_maps/map_files/Mafia/mafia_syndie.dmm
index 12287245828d5d..4c275e2ef3237f 100644
--- a/_maps/map_files/Mafia/mafia_syndie.dmm
+++ b/_maps/map_files/Mafia/mafia_syndie.dmm
@@ -46,7 +46,6 @@
/turf/open/floor/plating,
/area/centcom/mafia)
"o" = (
-/obj/effect/turf_decal/tile/red/fourcorners,
/turf/open/floor/iron/dark,
/area/centcom/mafia)
"p" = (
@@ -56,14 +55,14 @@
max_integrity = 99999;
name = "Station Night Shutters"
},
-/turf/closed/indestructible/opsglass,
+/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium,
+/turf/open/space/basic,
/area/centcom/mafia)
"q" = (
/obj/structure/chair/office{
dir = 1;
name = "tactical swivel chair"
},
-/obj/effect/turf_decal/tile/red/fourcorners,
/obj/effect/landmark/mafia,
/turf/open/floor/iron/dark,
/area/centcom/mafia)
@@ -82,14 +81,13 @@
/turf/open/floor/plating,
/area/centcom/mafia)
"w" = (
-/turf/closed/indestructible/syndicate,
+/turf/closed/wall/r_wall,
/area/centcom/mafia)
"x" = (
/obj/structure/chair/office{
dir = 4;
name = "tactical swivel chair"
},
-/obj/effect/turf_decal/tile/red/fourcorners,
/obj/effect/landmark/mafia,
/turf/open/floor/iron/dark,
/area/centcom/mafia)
@@ -104,7 +102,6 @@
/obj/structure/chair/office{
name = "tactical swivel chair"
},
-/obj/effect/turf_decal/tile/red/fourcorners,
/obj/effect/landmark/mafia,
/turf/open/floor/iron/dark,
/area/centcom/mafia)
@@ -129,7 +126,6 @@
dir = 8;
name = "tactical swivel chair"
},
-/obj/effect/turf_decal/tile/red/fourcorners,
/obj/effect/landmark/mafia,
/turf/open/floor/iron/dark,
/area/centcom/mafia)
@@ -146,7 +142,6 @@
desc = "A storage closet for syndicate conflict resolution operatives.";
name = "red closet"
},
-/obj/effect/turf_decal/tile/red/fourcorners,
/obj/effect/spawner/random/clothing/syndie,
/turf/open/floor/iron/dark,
/area/centcom/mafia)
@@ -156,8 +151,15 @@
"S" = (
/turf/open/floor/mineral/plastitanium/red,
/area/centcom/mafia)
+"W" = (
+/turf/closed/wall/mineral/plastitanium,
+/area/centcom/mafia)
+"Y" = (
+/turf/template_noop,
+/area/template_noop)
(1,1,1) = {"
+Y
a
a
a
@@ -179,10 +181,10 @@ a
a
a
a
-a
-a
+Y
"}
(2,1,1) = {"
+Y
a
w
w
@@ -203,14 +205,13 @@ w
w
w
w
-w
-w
a
+Y
"}
(3,1,1) = {"
+Y
a
w
-w
c
c
c
@@ -229,13 +230,13 @@ c
c
c
w
-w
a
+Y
"}
(4,1,1) = {"
+Y
a
w
-w
c
g
h
@@ -254,32 +255,32 @@ h
k
c
w
-w
a
+Y
"}
(5,1,1) = {"
a
-w
+a
w
c
h
d
d
i
-w
-w
+W
+W
j
-w
+W
j
-w
-w
+W
+W
d
d
i
h
c
w
-w
+a
a
"}
(6,1,1) = {"
@@ -288,19 +289,19 @@ w
w
c
i
-w
-w
+W
+W
j
-w
+W
b
r
-w
+W
o
G
-w
+W
j
-w
-w
+W
+W
d
c
w
@@ -313,7 +314,7 @@ w
c
c
d
-w
+W
G
o
p
@@ -325,7 +326,7 @@ o
p
r
b
-w
+W
d
c
c
@@ -338,19 +339,19 @@ w
c
d
d
-w
+W
o
o
-w
-w
+W
+W
r
-w
+W
o
-w
-w
+W
+W
r
r
-w
+W
d
d
c
@@ -362,8 +363,8 @@ a
w
c
d
-w
-w
+W
+W
p
o
x
@@ -375,8 +376,8 @@ p
B
r
p
-w
-w
+W
+W
d
c
w
@@ -387,10 +388,10 @@ a
w
c
d
-w
+W
b
p
-w
+W
p
p
p
@@ -398,10 +399,10 @@ p
p
p
p
-w
+W
p
G
-w
+W
d
c
w
@@ -437,10 +438,10 @@ a
w
c
i
-w
-w
+W
+W
p
-w
+W
p
p
Q
@@ -448,10 +449,10 @@ u
Q
p
p
-w
+W
p
-w
-w
+W
+W
d
c
w
@@ -487,10 +488,10 @@ a
w
c
d
-w
+W
G
p
-w
+W
p
p
p
@@ -498,10 +499,10 @@ p
p
p
p
-w
+W
p
b
-w
+W
i
c
w
@@ -512,8 +513,8 @@ a
w
c
d
-w
-w
+W
+W
p
r
A
@@ -525,8 +526,8 @@ p
C
o
p
-w
-w
+W
+W
d
c
w
@@ -538,19 +539,19 @@ w
c
f
d
-w
+W
r
r
-w
-w
+W
+W
o
-w
+W
r
-w
-w
+W
+W
o
o
-w
+W
d
d
c
@@ -563,7 +564,7 @@ w
c
c
d
-w
+W
b
r
p
@@ -575,7 +576,7 @@ r
p
o
G
-w
+W
d
c
c
@@ -588,19 +589,19 @@ w
w
c
d
-w
-w
+W
+W
j
-w
+W
G
o
-w
+W
r
b
-w
+W
j
-w
-w
+W
+W
d
c
w
@@ -609,33 +610,33 @@ a
"}
(19,1,1) = {"
a
-w
+a
w
c
h
i
d
d
-w
-w
+W
+W
j
-w
+W
j
-w
-w
+W
+W
d
i
d
h
c
w
-w
+a
a
"}
(20,1,1) = {"
+Y
a
w
-w
c
k
h
@@ -654,13 +655,13 @@ h
v
c
w
-w
a
+Y
"}
(21,1,1) = {"
+Y
a
w
-w
c
c
c
@@ -679,10 +680,11 @@ c
c
c
w
-w
a
+Y
"}
(22,1,1) = {"
+Y
a
w
w
@@ -703,11 +705,11 @@ w
w
w
w
-w
-w
a
+Y
"}
(23,1,1) = {"
+Y
a
a
a
@@ -729,6 +731,5 @@ a
a
a
a
-a
-a
+Y
"}
diff --git a/_maps/map_files/Mafia/mafia_unit_test.dmm b/_maps/map_files/Mafia/mafia_unit_test.dmm
new file mode 100644
index 00000000000000..93fd1d176ee57e
--- /dev/null
+++ b/_maps/map_files/Mafia/mafia_unit_test.dmm
@@ -0,0 +1,598 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"c" = (
+/turf/open/floor/iron,
+/area/centcom/mafia)
+"i" = (
+/obj/effect/landmark/mafia,
+/turf/open/floor/iron,
+/area/centcom/mafia)
+"E" = (
+/obj/effect/landmark/mafia/town_center,
+/turf/open/floor/iron,
+/area/centcom/mafia)
+"G" = (
+/turf/closed/indestructible,
+/area/centcom/mafia)
+"W" = (
+/obj/mafia_game_board,
+/turf/open/floor/iron,
+/area/centcom/mafia)
+"Y" = (
+/turf/template_noop,
+/area/template_noop)
+
+(1,1,1) = {"
+G
+G
+G
+G
+G
+G
+G
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(2,1,1) = {"
+G
+W
+i
+i
+i
+W
+G
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(3,1,1) = {"
+G
+i
+c
+c
+c
+i
+G
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(4,1,1) = {"
+G
+i
+c
+E
+c
+i
+G
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(5,1,1) = {"
+G
+i
+c
+c
+c
+i
+G
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(6,1,1) = {"
+G
+W
+i
+i
+i
+W
+G
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(7,1,1) = {"
+G
+G
+G
+G
+G
+G
+G
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(8,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(9,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(10,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(11,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(12,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(13,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(14,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(15,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(16,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(17,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(18,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(19,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(20,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(21,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(22,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
+(23,1,1) = {"
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+"}
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 9b8acb43075cfb..687ded631f7dee 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -589,6 +589,12 @@
"alE" = (
/turf/open/floor/iron,
/area/station/security/courtroom)
+"alF" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"alI" = (
/obj/machinery/door/window/left/directional/west{
dir = 4;
@@ -2915,6 +2921,23 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/hallway/primary/central)
+"bar" = (
+/obj/structure/table,
+/obj/item/reagent_containers/cup/beaker{
+ pixel_x = 10
+ },
+/obj/item/flashlight/lamp{
+ pixel_x = -7;
+ pixel_y = 18;
+ start_on = 0
+ },
+/obj/item/kitchen/rollingpin{
+ pixel_x = -4
+ },
+/obj/effect/mapping_helpers/broken_floor,
+/obj/machinery/light/small/dim/directional/west,
+/turf/open/floor/plating,
+/area/station/maintenance/port/aft)
"bas" = (
/obj/machinery/airalarm/directional/west,
/turf/open/floor/iron/chapel,
@@ -4398,7 +4421,6 @@
/area/station/commons/dorms)
"bAI" = (
/obj/machinery/disposal/bin,
-/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk,
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/cobweb/cobweb2,
@@ -7652,6 +7674,13 @@
/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
+"cQn" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"cQx" = (
/obj/machinery/computer/atmos_control/nitrous_tank{
dir = 1
@@ -9871,17 +9900,6 @@
/obj/machinery/door/window/right/directional/west,
/turf/open/floor/wood,
/area/station/command/heads_quarters/captain/private)
-"dIW" = (
-/obj/effect/turf_decal/siding/purple{
- dir = 8
- },
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1
- },
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/freezerchamber)
"dJk" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -10074,6 +10092,24 @@
/obj/structure/reagent_dispensers/beerkeg,
/turf/open/floor/wood,
/area/station/maintenance/port/aft)
+"dMt" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/camera/directional/east{
+ c_tag = "Engineering Supermatter Port";
+ network = list("ss13","engine")
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
+/obj/machinery/airalarm/directional/east,
+/obj/effect/mapping_helpers/airalarm/engine_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "engine"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter/room)
"dMv" = (
/obj/machinery/holopad,
/obj/structure/cable,
@@ -12525,6 +12561,10 @@
/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
/turf/open/floor/iron/dark,
/area/station/engineering/atmospherics_engine)
+"eDd" = (
+/obj/machinery/air_sensor/engine_chamber,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter)
"eDC" = (
/obj/structure/table/wood,
/obj/effect/spawner/random/entertainment/deck,
@@ -13144,6 +13184,13 @@
},
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/ai_upload)
+"eQr" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light_switch/directional/south,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"eQs" = (
/obj/machinery/air_sensor/air_tank,
/turf/open/floor/engine/air,
@@ -13685,6 +13732,16 @@
/obj/item/food/pizzaslice/moldy/bacteria,
/turf/open/floor/iron/white,
/area/station/medical/abandoned)
+"faW" = (
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/structure/table,
+/obj/structure/cable,
+/obj/item/poster/random_official,
+/obj/item/poster/random_official{
+ pixel_y = 10
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"fbf" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable,
@@ -16207,6 +16264,10 @@
/obj/structure/table,
/obj/structure/cable,
/obj/effect/turf_decal/tile/red/half/contrasted,
+/obj/machinery/fax{
+ fax_name = "Security Office";
+ name = "Security Office Fax Machine"
+ },
/turf/open/floor/iron/dark,
/area/station/security/office)
"fYq" = (
@@ -16222,6 +16283,9 @@
/obj/structure/cable,
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/iron/white,
/area/station/medical/medbay/central)
"fYC" = (
@@ -16385,6 +16449,18 @@
/obj/effect/turf_decal/tile/neutral/half/contrasted,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
+"gcL" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/stripes/corner,
+/obj/structure/cable,
+/obj/machinery/button/door/directional/east{
+ name = "Security Mech Garage Door Controls";
+ id = "secmechbay";
+ req_access = list("security")
+ },
+/turf/open/floor/iron,
+/area/station/security/office)
"gcU" = (
/obj/structure/disposalpipe/segment,
/obj/effect/mapping_helpers/airlock/access/all/science/robotics,
@@ -18193,6 +18269,15 @@
/obj/machinery/firealarm/directional/west,
/turf/open/floor/iron/white,
/area/station/science/xenobiology)
+"gKH" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/security/office)
"gKK" = (
/obj/effect/turf_decal/stripes/white/line{
dir = 1
@@ -18450,6 +18535,11 @@
},
/turf/open/floor/iron/white,
/area/station/medical/virology)
+"gOT" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/station/security/mechbay)
"gOY" = (
/obj/structure/chair{
dir = 8
@@ -20264,7 +20354,6 @@
"hyn" = (
/obj/machinery/airalarm/directional/west,
/obj/effect/spawner/random/vending/snackvend,
-/obj/machinery/airalarm/directional/west,
/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/tile/neutral/opposingcorners{
dir = 1
@@ -20314,6 +20403,10 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/ai)
+"hza" = (
+/obj/vehicle/sealed/mecha/ripley/paddy/preset,
+/turf/open/floor/iron/recharge_floor,
+/area/station/security/mechbay)
"hzt" = (
/obj/structure/transit_tube/curved/flipped,
/obj/effect/turf_decal/tile/blue{
@@ -23037,6 +23130,10 @@
/obj/item/clothing/glasses/welding,
/turf/open/floor/iron,
/area/station/science/robotics/lab)
+"iwH" = (
+/obj/machinery/atmospherics/pipe/smart/simple/dark/visible,
+/turf/closed/wall/r_wall,
+/area/station/science/ordnance)
"iwL" = (
/obj/effect/spawner/structure/window/reinforced/tinted,
/obj/structure/disposalpipe/segment{
@@ -24593,6 +24690,13 @@
},
/turf/open/floor/iron,
/area/station/command/gateway)
+"iVJ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"iVN" = (
/obj/effect/spawner/structure/window/reinforced/tinted,
/turf/open/floor/plating,
@@ -24769,15 +24873,6 @@
},
/turf/open/floor/plating/airless,
/area/station/science/ordnance/bomb)
-"iYE" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible,
-/obj/effect/turf_decal/siding/purple{
- dir = 6
- },
-/obj/machinery/airalarm/directional/east,
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/burnchamber)
"iYG" = (
/obj/effect/landmark/event_spawn,
/obj/effect/turf_decal/tile/neutral{
@@ -26419,7 +26514,6 @@
/area/station/service/kitchen)
"jAd" = (
/obj/machinery/door/airlock/maintenance,
-/obj/structure/disposalpipe/segment,
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
/obj/effect/mapping_helpers/airlock/unres{
dir = 1
@@ -26595,8 +26689,8 @@
dir = 8
},
/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 6
},
/obj/item/storage/medkit/regular,
/obj/item/reagent_containers/cup/bottle/multiver,
@@ -28150,6 +28244,12 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/iron,
/area/station/hallway/primary/central)
+"kdy" = (
+/obj/structure/frame/computer{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/station/security/mechbay)
"kdA" = (
/obj/machinery/door/airlock/mining{
name = "Warehouse"
@@ -28798,6 +28898,13 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
+"kqM" = (
+/obj/effect/turf_decal/stripes/corner,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"kqZ" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -29714,20 +29821,6 @@
/obj/structure/sign/poster/official/help_others/directional/south,
/turf/open/floor/iron/white,
/area/station/medical/medbay/central)
-"kKk" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/camera/directional/east{
- c_tag = "Engineering Supermatter Port";
- network = list("ss13","engine")
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
-/obj/machinery/airalarm/directional/east,
-/obj/effect/mapping_helpers/airalarm/engine_access,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
"kKp" = (
/obj/structure/rack,
/obj/item/gun/energy/laser/carbine/practice{
@@ -30968,12 +31061,10 @@
/obj/structure/bed/medical{
dir = 8
},
-/obj/item/clothing/suit/jacket/straight_jacket,
-/obj/item/clothing/glasses/blindfold,
-/obj/item/clothing/mask/muzzle,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
},
+/obj/machinery/iv_drip,
/turf/open/floor/iron/white,
/area/station/security/execution/transfer)
"lgl" = (
@@ -31214,6 +31305,12 @@
/obj/effect/landmark/event_spawn,
/turf/open/floor/glass/reinforced,
/area/station/science/research)
+"llU" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"lma" = (
/obj/structure/chair/stool/directional/north,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -33317,6 +33414,21 @@
/obj/structure/cable,
/turf/open/floor/iron/dark,
/area/station/engineering/atmos)
+"mcu" = (
+/obj/machinery/door/poddoor/shutters{
+ dir = 8;
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/caution/stand_clear{
+ dir = 4
+ },
+/obj/effect/turf_decal/box,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"mcF" = (
/obj/structure/table,
/obj/machinery/button/door{
@@ -35019,8 +35131,8 @@
dir = 1
},
/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = 4
+ pixel_x = 4;
+ pixel_y = 6
},
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
@@ -36740,6 +36852,10 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/central)
+"nkA" = (
+/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
+/turf/closed/wall/r_wall,
+/area/station/science/ordnance)
"nkG" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
/obj/machinery/meter,
@@ -36910,7 +37026,6 @@
/turf/open/floor/iron,
/area/station/commons/vacant_room/commissary)
"nnt" = (
-/obj/vehicle/ridden/secway,
/obj/effect/turf_decal/bot,
/obj/structure/cable,
/turf/open/floor/iron/dark,
@@ -38183,23 +38298,6 @@
},
/turf/open/floor/iron/dark,
/area/station/security/lockers)
-"nJA" = (
-/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior,
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/machinery/airlock_controller/incinerator_ordmix{
- pixel_x = -24
- },
-/obj/machinery/button/ignition/incinerator/ordmix{
- pixel_x = 24;
- pixel_y = -6
- },
-/obj/machinery/button/door/incinerator_vent_ordmix{
- pixel_x = 24;
- pixel_y = 8
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/ordnance,
-/turf/open/floor/engine,
-/area/station/science/ordnance/burnchamber)
"nJG" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -39650,6 +39748,12 @@
/obj/machinery/duct,
/turf/open/floor/plating,
/area/station/maintenance/port/aft)
+"omA" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"omF" = (
/obj/machinery/teleport/station,
/obj/machinery/status_display/evac/directional/north,
@@ -39768,6 +39872,9 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/central)
+"ope" = (
+/turf/closed/wall,
+/area/station/security/mechbay)
"oph" = (
/obj/structure/chair/wood/wings{
dir = 8
@@ -40049,11 +40156,15 @@
"ouj" = (
/obj/structure/bed/medical/emergency,
/obj/structure/bed/medical/emergency,
-/obj/machinery/iv_drip,
-/obj/machinery/iv_drip,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 6
},
+/obj/item/clothing/suit/jacket/straight_jacket,
+/obj/item/clothing/suit/jacket/straight_jacket,
+/obj/item/clothing/mask/muzzle,
+/obj/item/clothing/mask/muzzle,
+/obj/item/clothing/glasses/blindfold,
+/obj/item/clothing/glasses/blindfold,
/turf/open/floor/iron/white,
/area/station/security/execution/transfer)
"ouk" = (
@@ -41897,6 +42008,7 @@
/obj/effect/mapping_helpers/airlock/access/all/medical/coroner,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/iron/dark,
/area/station/medical/morgue)
"pdX" = (
@@ -42994,9 +43106,6 @@
/turf/open/floor/iron,
/area/station/security/courtroom)
"pyh" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -43190,14 +43299,9 @@
/turf/open/floor/iron,
/area/station/security/checkpoint/customs)
"pBL" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 9
- },
/obj/machinery/newscaster/directional/west,
-/obj/structure/table,
-/obj/machinery/fax{
- fax_name = "Security Office";
- name = "Security Office Fax Machine"
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 8
},
/turf/open/floor/iron,
/area/station/security/office)
@@ -44615,13 +44719,11 @@
/obj/structure/bed/medical{
dir = 4
},
-/obj/item/clothing/suit/jacket/straight_jacket,
-/obj/item/clothing/glasses/blindfold,
-/obj/item/clothing/mask/muzzle,
/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 4
},
+/obj/machinery/iv_drip,
/turf/open/floor/iron/white,
/area/station/security/execution/transfer)
"qby" = (
@@ -50281,6 +50383,26 @@
/obj/effect/turf_decal/tile/blue/fourcorners,
/turf/open/floor/iron/white,
/area/station/medical/storage)
+"saa" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/structure/cable,
+/obj/structure/table,
+/obj/machinery/camera/directional/west{
+ c_tag = "Security - Office - Port"
+ },
+/obj/machinery/button/door/directional/west{
+ id = "secmechbay";
+ name = "Security Mech Garage Door Controls";
+ req_access = list("security")
+ },
+/obj/item/circuitboard/computer/mech_bay_power_console,
+/obj/item/stack/sheet/glass{
+ pixel_y = 14
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"sab" = (
/obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/plating,
@@ -52490,6 +52612,23 @@
/obj/machinery/light_switch/directional/north,
/turf/open/floor/iron/white,
/area/station/science/explab)
+"sPH" = (
+/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior,
+/obj/effect/mapping_helpers/airlock/locked,
+/obj/machinery/airlock_controller/incinerator_ordmix{
+ pixel_x = -24
+ },
+/obj/machinery/button/ignition/incinerator/ordmix{
+ pixel_x = 24;
+ pixel_y = -6
+ },
+/obj/machinery/button/door/incinerator_vent_ordmix{
+ pixel_x = 24;
+ pixel_y = 8
+ },
+/obj/effect/mapping_helpers/airlock/access/all/science/ordnance,
+/turf/open/floor/engine,
+/area/station/science/ordnance)
"sPV" = (
/obj/structure/closet/secure_closet/captains,
/obj/structure/window/reinforced/spawner/directional/north,
@@ -52534,6 +52673,18 @@
/obj/structure/window/reinforced/spawner/directional/east,
/turf/open/floor/plating,
/area/station/maintenance/port/aft)
+"sQz" = (
+/obj/machinery/door/poddoor/shutters{
+ dir = 8;
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/obj/effect/turf_decal/caution/stand_clear{
+ dir = 4
+ },
+/obj/effect/turf_decal/box,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"sQB" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -55133,23 +55284,6 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
-"tLG" = (
-/obj/structure/table,
-/obj/item/reagent_containers/cup/beaker{
- pixel_x = 10
- },
-/obj/item/flashlight/lamp{
- pixel_x = -7;
- pixel_y = 18;
- start_on = 0
- },
-/obj/item/kitchen/rollingpin{
- pixel_x = -4
- },
-/obj/effect/mapping_helpers/broken_floor,
-/obj/machinery/light/small/dim/directional/west,
-/turf/open/floor/plating,
-/area/station/maintenance/port/aft)
"tLN" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk{
@@ -57137,6 +57271,19 @@
/obj/machinery/firealarm/directional/east,
/turf/open/floor/iron,
/area/station/service/bar)
+"utV" = (
+/obj/machinery/atmospherics/pipe/smart/simple/dark/visible,
+/obj/effect/turf_decal/siding/purple{
+ dir = 6
+ },
+/obj/machinery/airalarm/directional/east,
+/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnanceburn"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/iron/dark,
+/area/station/science/ordnance)
"uuc" = (
/obj/structure/chair/pew/left,
/turf/open/floor/iron/chapel{
@@ -57165,6 +57312,12 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
+"uuO" = (
+/obj/machinery/mech_bay_recharge_port{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/station/security/mechbay)
"uvw" = (
/obj/machinery/status_display/supply{
pixel_y = 32
@@ -57681,6 +57834,15 @@
/obj/structure/extinguisher_cabinet/directional/north,
/turf/open/floor/iron/white,
/area/station/medical/medbay/central)
+"uEW" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"uFf" = (
/obj/machinery/holopad,
/obj/effect/spawner/random/engineering/tracking_beacon,
@@ -58731,6 +58893,12 @@
/obj/effect/turf_decal/trimline/red/filled/corner,
/turf/open/floor/iron,
/area/station/security/brig)
+"uWs" = (
+/obj/machinery/computer/mech_bay_power_console{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/station/security/mechbay)
"uWt" = (
/obj/structure/rack,
/obj/item/stack/medical/mesh,
@@ -61009,6 +61177,21 @@
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
+"vIL" = (
+/obj/effect/turf_decal/siding/purple{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1
+ },
+/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/machinery/airalarm/directional/west,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnancefreezer"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/iron/dark,
+/area/station/science/ordnance)
"vIM" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -61676,6 +61859,16 @@
"vTX" = (
/turf/open/floor/iron/dark,
/area/station/engineering/atmospherics_engine)
+"vUa" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/airalarm/directional/north,
+/obj/item/stack/rods/two,
+/obj/item/stack/cable_coil/five,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"vUx" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
@@ -61871,6 +62064,13 @@
},
/turf/open/floor/circuit/green/off,
/area/station/science/research)
+"vXj" = (
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 9
+ },
+/obj/machinery/light/small/directional/west,
+/turf/open/floor/iron,
+/area/station/security/office)
"vXt" = (
/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{
dir = 9
@@ -62669,6 +62869,9 @@
dir = 1
},
/area/station/engineering/storage_shared)
+"wlz" = (
+/turf/closed/wall/r_wall,
+/area/station/security/mechbay)
"wlL" = (
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 4
@@ -62696,6 +62899,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/science/robotics/lab)
+"wmr" = (
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 8
+ },
+/obj/vehicle/ridden/secway,
+/turf/open/floor/iron,
+/area/station/security/office)
"wmz" = (
/obj/machinery/atmospherics/pipe/smart/simple/dark/visible,
/turf/open/floor/iron,
@@ -63388,6 +63598,15 @@
/obj/item/flashlight/lamp,
/turf/open/floor/iron/dark,
/area/station/security/execution/education)
+"wzq" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/security/office)
"wzy" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -64568,9 +64787,9 @@
/turf/open/floor/iron,
/area/station/hallway/primary/aft)
"wVt" = (
-/obj/item/storage/box/deputy,
/obj/structure/table,
/obj/item/radio/intercom/directional/west,
+/obj/item/storage/box/deputy,
/turf/open/floor/iron/dark,
/area/station/security/office)
"wVy" = (
@@ -64910,6 +65129,13 @@
/obj/structure/cable,
/turf/open/floor/iron/white/smooth_large,
/area/station/command/heads_quarters/cmo)
+"xcv" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"xcz" = (
/obj/effect/turf_decal/stripes/corner,
/obj/structure/reagent_dispensers/watertank,
@@ -65344,6 +65570,15 @@
},
/turf/open/floor/iron,
/area/station/commons/storage/tools)
+"xkq" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/security/office)
"xkr" = (
/obj/effect/turf_decal/plaque{
icon_state = "L13"
@@ -66761,6 +66996,10 @@
},
/turf/open/floor/iron/dark,
/area/station/command/bridge)
+"xJv" = (
+/obj/machinery/light/directional/north,
+/turf/open/floor/iron/recharge_floor,
+/area/station/security/mechbay)
"xJA" = (
/obj/structure/sign/warning/docking,
/turf/closed/wall,
@@ -84638,7 +84877,7 @@ pOa
uOH
jUb
xIK
-tLG
+bar
nBp
dqN
pqz
@@ -97158,11 +97397,11 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+gdb
+gdb
+gdb
+gdb
+gdb
iTZ
ahj
ahj
@@ -97413,11 +97652,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
rrt
lMJ
gdb
@@ -97425,12 +97659,17 @@ rDE
fOw
nQC
ikZ
+vXj
+iGj
+iGj
+iGj
+iGj
pBL
iGj
iGj
iGj
vdi
-iGj
+wmr
ljf
kYg
nnt
@@ -97670,11 +97909,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
rrt
aaa
vaB
@@ -97682,6 +97916,11 @@ kKp
iDq
mPT
fCn
+gKH
+gcL
+wzq
+wzq
+xkq
pyh
aja
lyF
@@ -97927,11 +98166,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
rrt
lMJ
gdb
@@ -97939,6 +98173,11 @@ hhl
fOf
eZI
dgD
+ope
+ope
+mcu
+sQz
+ope
kYg
vGt
fYb
@@ -98186,16 +98425,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
gdb
nMV
luV
rqs
dgD
+faW
+saa
+uEW
+eQr
+ope
jGl
kxA
wxj
@@ -98443,16 +98682,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
gdb
ksg
aGM
rpz
dgD
+vUa
+cQn
+kqM
+omA
+ope
jGl
kxA
xXh
@@ -98698,11 +98937,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
rrt
lMJ
gdb
@@ -98710,6 +98944,11 @@ ksg
aGM
rpz
dgD
+xJv
+alF
+xcv
+hza
+ope
rtI
kxA
kAT
@@ -98808,7 +99047,7 @@ raK
dOA
gyQ
qSP
-dIW
+vIL
iTc
qfQ
cLk
@@ -98955,11 +99194,6 @@ aaa
aav
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
rrt
aaa
ikZ
@@ -98967,6 +99201,11 @@ ksg
vuP
rpz
dgD
+uuO
+alF
+xcv
+uuO
+ope
jGl
kxA
qmu
@@ -99212,11 +99451,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
rrt
lMJ
gdb
@@ -99224,6 +99458,11 @@ dhN
nuI
qJa
dgD
+kdy
+iVJ
+llU
+uWs
+ope
kYg
jAN
wxj
@@ -99470,17 +99709,17 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
tLb
gdb
ikZ
gdb
ikZ
gdb
+wlz
+gOT
+gOT
+wlz
+wlz
hYd
olD
mLx
@@ -99584,7 +99823,7 @@ fhi
fhi
uEo
fiS
-hqj
+gyQ
eRn
hqj
hqj
@@ -99841,7 +100080,7 @@ huj
fhi
xEU
iqx
-deY
+nkA
gil
deY
oet
@@ -100098,7 +100337,7 @@ fhi
fhi
fhi
twy
-nJA
+sPH
nZL
bEv
cgP
@@ -100354,8 +100593,8 @@ jwj
ujk
jvo
aHH
-iYE
-pCa
+utV
+iwH
dEF
pCa
cOT
@@ -110299,7 +110538,7 @@ otn
dRN
wdB
oET
-kKk
+dMt
qLw
vQt
qLw
@@ -111326,7 +111565,7 @@ wBE
oNs
eyD
qZB
-oNs
+eDd
hRl
jWE
auc
diff --git a/_maps/map_files/NSVBlueshift/Blueshift.dmm b/_maps/map_files/NSVBlueshift/Blueshift.dmm
index 30af5242388c37..1c57902b587e29 100644
--- a/_maps/map_files/NSVBlueshift/Blueshift.dmm
+++ b/_maps/map_files/NSVBlueshift/Blueshift.dmm
@@ -471,6 +471,9 @@
/turf/open/floor/plating,
/area/station/maintenance/department/eva)
"aey" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/security/interrogation)
"aeM" = (
@@ -7467,6 +7470,8 @@
dir = 4
},
/obj/effect/mapping_helpers/airlock/access/all/security/general,
+/obj/structure/cable,
+/obj/machinery/door/firedoor,
/turf/open/floor/iron,
/area/station/security/interrogation)
"bnZ" = (
@@ -7548,10 +7553,6 @@
},
/obj/effect/mapping_helpers/requests_console/information,
/obj/effect/mapping_helpers/requests_console/assistance,
-/obj/machinery/requests_console/directional/west{
- department = "Toxins Lab";
- name = "Toxins Requests Console"
- },
/obj/effect/mapping_helpers/requests_console/information,
/obj/effect/mapping_helpers/requests_console/assistance,
/obj/effect/turf_decal/bot,
@@ -7572,12 +7573,23 @@
/turf/open/floor/iron,
/area/station/science/ordnance)
"bop" = (
-/obj/effect/decal/cleanable/dirt{
- icon_state = "dirt-flat-1"
+/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
+ dir = 1
},
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/stripes{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/item/poster/random_official{
+ pixel_y = 10
+ },
+/obj/item/poster/random_official,
+/obj/machinery/firealarm/directional/north,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"bos" = (
/obj/structure/table,
/obj/effect/decal/cleanable/dirt{
@@ -8991,10 +9003,17 @@
/turf/open/floor/wood,
/area/station/medical/exam_room)
"bAo" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 4
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"bAt" = (
/obj/effect/turf_decal/siding/wood{
dir = 1
@@ -13830,7 +13849,7 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/turf/open/floor/iron,
@@ -17255,6 +17274,7 @@
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2{
dir = 9
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/security/interrogation)
"cOS" = (
@@ -17935,7 +17955,7 @@
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2{
dir = 10
},
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/turf/open/floor/iron,
@@ -18553,6 +18573,9 @@
/obj/machinery/duct,
/turf/open/floor/iron/freezer,
/area/station/command/heads_quarters/captain/private)
+"cZT" = (
+/turf/closed/wall/r_wall,
+/area/station/security/mechbay)
"cZU" = (
/obj/effect/turf_decal/trimline/purple/filled/line,
/obj/structure/cable,
@@ -21275,6 +21298,15 @@
/obj/effect/turf_decal/stripes/box,
/turf/open/floor/plating/airless,
/area/station/engineering/atmos/upper)
+"dyS" = (
+/obj/effect/turf_decal/tile/dark_blue/half/contrasted,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/stripes/blue/line,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"dyT" = (
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
@@ -23590,11 +23622,10 @@
/turf/open/floor/plating,
/area/station/maintenance/fore/upper)
"dTy" = (
-/obj/machinery/door/airlock/maintenance_hatch{
- name = "Security Maintenance"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"dTz" = (
/obj/structure/extinguisher_cabinet/directional/west,
/obj/machinery/light/directional/south,
@@ -27214,7 +27245,7 @@
/area/station/commons/dorms/room2)
"ezm" = (
/obj/effect/turf_decal/siding/wood/corner,
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
@@ -28080,6 +28111,16 @@
},
/turf/open/floor/iron,
/area/station/maintenance/port/upper)
+"eGr" = (
+/obj/effect/turf_decal/tile/dark_blue/half/contrasted,
+/obj/machinery/computer/mech_bay_power_console{
+ dir = 1
+ },
+/obj/effect/turf_decal/bot_blue,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/stripes/blue/line,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"eGt" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer2{
@@ -29646,6 +29687,21 @@
/obj/item/trash/energybar,
/turf/open/floor/plating,
/area/station/maintenance/fore/upper)
+"eSi" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 8
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/brig)
"eSj" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4{
@@ -30646,7 +30702,6 @@
"fax" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/south,
/turf/open/floor/engine,
/area/station/science/xenobiology)
"faz" = (
@@ -33230,7 +33285,6 @@
"fwI" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/south,
/turf/open/floor/plating,
/area/station/cargo/drone_bay)
"fwM" = (
@@ -34776,7 +34830,6 @@
/area/station/service/theater/abandoned)
"fLn" = (
/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/south,
/obj/structure/window/reinforced/spawner/directional/west,
/turf/open/floor/engine,
/area/station/science/xenobiology)
@@ -36166,6 +36219,10 @@
dir = 4
},
/area/station/maintenance/disposal/incinerator)
+"fYr" = (
+/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4,
+/turf/open/floor/circuit,
+/area/station/security/mechbay)
"fYz" = (
/obj/structure/closet/emcloset,
/obj/effect/turf_decal/bot,
@@ -36941,6 +36998,14 @@
/obj/machinery/duct,
/turf/open/floor/wood,
/area/station/command/heads_quarters/captain/private)
+"geL" = (
+/obj/effect/turf_decal/stripes/box,
+/obj/effect/turf_decal/stripes/blue/box,
+/obj/machinery/camera/directional/west{
+ c_tag = "Security - Mechbay"
+ },
+/turf/open/floor/iron/recharge_floor,
+/area/station/security/mechbay)
"geQ" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable,
@@ -38548,7 +38613,7 @@
/turf/open/floor/iron,
/area/station/commons/vacant_room/commissary)
"gsK" = (
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/turf/open/floor/iron/white,
@@ -39449,6 +39514,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer2{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/security/interrogation)
"gAC" = (
@@ -41577,8 +41643,12 @@
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"gTF" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2{
- dir = 6
+/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer2{
+ dir = 8
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4{
+ dir = 5
},
/turf/open/floor/iron,
/area/station/security/interrogation)
@@ -41714,8 +41784,6 @@
dir = 1
},
/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/south,
/obj/structure/window/reinforced/spawner/directional/south,
/turf/open/floor/engine,
/area/station/science/xenobiology)
@@ -42119,14 +42187,8 @@
"gZm" = (
/turf/open/floor/wood,
/area/station/service/library)
-"gZp" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/engine,
-/area/station/science/xenobiology)
"gZu" = (
-/obj/machinery/computer/atmos_control/noreconnect{
- atmos_chambers = list("ordnancegas1"="Burn Chamber","ordnancegas2"="Freezer Chamber");
+/obj/machinery/computer/atmos_control/ordnancemix{
dir = 8
},
/turf/open/floor/engine{
@@ -43466,6 +43528,10 @@
/obj/machinery/duct,
/turf/open/floor/wood,
/area/station/commons/dorms/vacantroom)
+"hlw" = (
+/obj/machinery/air_sensor/engine_chamber,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter)
"hlC" = (
/obj/effect/turf_decal/box,
/obj/machinery/holopad,
@@ -43960,6 +44026,15 @@
/obj/machinery/duct,
/turf/open/floor/iron/white,
/area/station/medical/virology)
+"hpF" = (
+/obj/effect/turf_decal/tile/dark_blue/half/contrasted,
+/obj/machinery/power/apc/auto_name/directional/south,
+/obj/structure/cable,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/stripes/blue/line,
+/obj/machinery/light/directional/south,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"hpS" = (
/obj/effect/decal/cleanable/dirt{
icon_state = "dirt-flat-1"
@@ -45004,6 +45079,26 @@
},
/turf/open/floor/wood/parquet,
/area/station/common/night_club)
+"hAz" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 8
+ },
+/obj/machinery/door/poddoor/shutters/window{
+ id = "SecMech";
+ name = "Security Mechbay Shutters"
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"hAB" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -46143,7 +46238,7 @@
/turf/open/floor/engine,
/area/station/science/ordnance)
"hJF" = (
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/obj/effect/turf_decal/trimline/purple/filled/line{
@@ -53353,7 +53448,7 @@
/obj/structure/railing/corner/end/flip{
dir = 8
},
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/turf/open/floor/iron,
@@ -54290,7 +54385,6 @@
"jcw" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/north,
/obj/structure/disposalpipe/trunk{
dir = 1
},
@@ -54661,7 +54755,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/turf/open/floor/iron,
@@ -57506,6 +57600,24 @@
dir = 4
},
/area/station/cargo/miningoffice)
+"jEw" = (
+/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
+ dir = 8
+ },
+/obj/machinery/cell_charger_multi/wall_mounted/directional/west,
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 8
+ },
+/obj/structure/table,
+/obj/item/circuitboard/computer/mech_bay_power_console,
+/obj/item/stack/sheet/glass{
+ pixel_y = 14
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"jEz" = (
/turf/open/floor/iron/dark,
/area/station/security/prison/garden)
@@ -58900,8 +59012,6 @@
dir = 1
},
/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/south,
/obj/structure/window/reinforced/spawner/directional/south,
/turf/open/floor/engine,
/area/station/science/xenobiology)
@@ -60799,10 +60909,14 @@
/obj/structure/table,
/obj/machinery/airalarm/directional/east,
/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnanceburn"
+ },
/turf/open/floor/engine{
icon_state = "floor"
},
-/area/station/science/ordnance/burnchamber)
+/area/station/science/ordnance)
"kfv" = (
/obj/effect/decal/cleanable/dirt{
icon_state = "dirt-flat-1"
@@ -61301,7 +61415,7 @@
},
/obj/structure/window/reinforced/spawner/directional/west,
/obj/effect/turf_decal/stripes/blue/line{
- dir = 4
+ dir = 1
},
/obj/structure/closet/secure_closet/personal,
/turf/open/floor/iron/dark,
@@ -63117,6 +63231,14 @@
/obj/item/stack/cable_coil/five,
/turf/open/floor/iron,
/area/station/commons/vacant_room/commissary)
+"kxe" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2{
+ dir = 10
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"kxk" = (
/obj/structure/chair/comfy/shuttle{
dir = 8
@@ -63533,7 +63655,7 @@
"kAi" = (
/obj/machinery/door/firedoor,
/obj/machinery/firealarm/directional/south,
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/obj/structure/railing/corner/end/flip{
@@ -64073,7 +64195,6 @@
/area/station/cargo/miningoffice)
"kFe" = (
/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/south,
/turf/open/floor/engine,
/area/station/science/xenobiology)
"kFn" = (
@@ -67126,7 +67247,7 @@
/obj/structure/railing{
dir = 8
},
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/turf/open/floor/iron,
@@ -68045,26 +68166,14 @@
/obj/machinery/suit_storage_unit/standard_unit,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/command/storage/eva)
-"lpP" = (
-/obj/structure/disposalpipe/trunk{
- dir = 2
- },
-/obj/structure/disposaloutlet{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/engine,
-/area/station/science/xenobiology)
"lpQ" = (
/obj/machinery/power/apc/auto_name/directional/north,
/obj/structure/cable,
/turf/open/floor/iron/dark,
/area/station/science/power_station)
"lpR" = (
-/obj/machinery/doppler_array,
/obj/effect/turf_decal/bot_red,
+/obj/machinery/doppler_array,
/turf/open/floor/iron/dark,
/area/station/science/ordnance/testlab)
"lpV" = (
@@ -69905,6 +70014,10 @@
/obj/machinery/atmospherics/components/binary/pump{
name = "Gas to Chamber"
},
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "engine"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
/turf/open/floor/engine,
/area/station/engineering/supermatter)
"lGz" = (
@@ -70071,10 +70184,17 @@
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
"lHT" = (
-/obj/structure/closet/crate/trashcart/filled,
-/obj/effect/spawner/random/contraband/cannabis,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted,
+/obj/machinery/recharge_station,
+/obj/effect/turf_decal/stripes{
+ dir = 6
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 9
+ },
+/obj/machinery/light_switch/directional/south,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"lHV" = (
/obj/structure/railing/corner{
dir = 8
@@ -73615,6 +73735,23 @@
/obj/machinery/duct,
/turf/open/floor/plating,
/area/station/maintenance/department/medical/morgue)
+"mmu" = (
+/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
+ dir = 1
+ },
+/obj/machinery/airalarm/directional/north,
+/obj/effect/turf_decal/stripes{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/item/stack/rods/two,
+/obj/item/stack/cable_coil/five,
+/obj/machinery/light/directional/north,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"mmz" = (
/obj/effect/turf_decal/stripes{
dir = 4
@@ -75161,7 +75298,7 @@
/area/station/science/xenobiology)
"mBe" = (
/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/west,
+/obj/structure/window/reinforced/spawner/directional/north,
/turf/open/floor/engine,
/area/station/science/xenobiology)
"mBt" = (
@@ -75179,6 +75316,21 @@
},
/turf/open/floor/iron/cafeteria,
/area/station/service/kitchen)
+"mBw" = (
+/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{
+ dir = 1
+ },
+/obj/machinery/mech_bay_recharge_port{
+ dir = 2
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 9
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 6
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"mBC" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2{
@@ -81322,6 +81474,29 @@
/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/station/maintenance/fore/upper)
+"nDO" = (
+/obj/effect/turf_decal/caution/stand_clear/blue{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 8
+ },
+/obj/machinery/door/poddoor/shutters/window{
+ id = "SecMech";
+ name = "Security Mechbay Shutters"
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"nDT" = (
/obj/effect/turf_decal/tile/red,
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2{
@@ -83101,7 +83276,6 @@
/area/station/hallway/secondary/entry)
"nSZ" = (
/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/north,
/turf/open/floor/engine,
/area/station/science/xenobiology)
"nTd" = (
@@ -86614,7 +86788,7 @@
/obj/structure/railing/corner/end{
dir = 8
},
-/obj/structure/railing/corner/end{
+/obj/structure/railing/corner/end/flip{
dir = 4
},
/turf/open/floor/iron/dark,
@@ -88814,7 +88988,7 @@
color = "#DE3A3A";
dir = 1
},
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/obj/structure/railing/corner/end/flip{
@@ -91797,7 +91971,6 @@
"pnj" = (
/obj/machinery/hydroponics/constructable,
/obj/structure/flora/bush/sparsegrass,
-/obj/machinery/hydroponics/constructable,
/turf/open/floor/grass,
/area/station/security/prison/garden)
"pnk" = (
@@ -96937,6 +97110,26 @@
/obj/structure/railing/corner/end/flip,
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
+"qgJ" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/button/door/directional/south{
+ name = "Security Mech Garage Door Controls";
+ id = "SecMech";
+ req_access = list("security")
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 8
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/brig)
"qgM" = (
/obj/machinery/chem_master/condimaster{
name = "HoochMaster 2000"
@@ -97609,9 +97802,7 @@
/turf/open/floor/iron,
/area/station/hallway/primary/upper)
"qmn" = (
-/obj/machinery/air_sensor{
- chamber_id = "ordnancegas1"
- },
+/obj/machinery/air_sensor/ordnance_burn_chamber,
/turf/open/floor/engine,
/area/station/science/ordnance/burnchamber)
"qmr" = (
@@ -99924,12 +100115,11 @@
},
/area/station/hallway/primary/central)
"qDO" = (
-/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4{
- dir = 5
- },
+/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/security/interrogation)
"qDP" = (
@@ -108312,13 +108502,11 @@
},
/area/station/engineering/gravity_generator)
"rZq" = (
-/obj/machinery/portable_atmospherics/scrubber,
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt{
- icon_state = "dirt-flat-1"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/stripes/box,
+/obj/effect/turf_decal/stripes/blue/box,
+/obj/vehicle/sealed/mecha/ripley/paddy/preset,
+/turf/open/floor/iron/recharge_floor,
+/area/station/security/mechbay)
"rZu" = (
/obj/item/storage/crayons{
pixel_x = 2;
@@ -112164,12 +112352,6 @@
/obj/effect/decal/remains/human,
/turf/open/floor/plating,
/area/station/security/courtroom)
-"sFT" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/engine,
-/area/station/science/xenobiology)
"sFU" = (
/obj/machinery/light/small/directional/north,
/turf/open/floor/plating,
@@ -113662,7 +113844,7 @@
/area/station/maintenance/department/chapel)
"sSF" = (
/obj/structure/lattice/catwalk,
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/obj/structure/railing/corner/end/flip{
@@ -119954,10 +120136,20 @@
/turf/open/floor/iron,
/area/station/engineering/storage)
"tUd" = (
-/obj/machinery/portable_atmospherics/pump,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{
+ dir = 8
+ },
+/obj/machinery/mech_bay_recharge_port{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 10
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 5
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"tUg" = (
/obj/machinery/door/airlock/security{
name = "Interrogation Monitoring"
@@ -119968,8 +120160,12 @@
/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4,
/obj/structure/disposalpipe/segment,
/obj/effect/mapping_helpers/airlock/access/all/security/general,
+/obj/machinery/door/firedoor,
/turf/open/floor/iron/dark,
/area/station/security/interrogation)
+"tUj" = (
+/turf/open/floor/circuit,
+/area/station/security/mechbay)
"tUm" = (
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4,
@@ -121667,10 +121863,14 @@
},
/obj/machinery/airalarm/directional/south,
/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnancefreezer"
+ },
/turf/open/floor/engine{
icon_state = "darkfull"
},
-/area/station/science/ordnance/freezerchamber)
+/area/station/science/ordnance)
"uja" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
@@ -123093,6 +123293,13 @@
},
/turf/open/floor/wood,
/area/station/service/hydroponics/garden/abandoned)
+"uut" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 4
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"uuu" = (
/obj/effect/spawner/random/trash/cigbutt,
/obj/effect/decal/cleanable/dirt{
@@ -123381,7 +123588,7 @@
},
/obj/structure/window/reinforced/spawner/directional/east,
/obj/effect/turf_decal/stripes/blue/line{
- dir = 8
+ dir = 1
},
/turf/open/floor/iron/dark,
/area/station/security/lockers)
@@ -128168,12 +128375,12 @@
/area/station/commons/dorms)
"vof" = (
/obj/docking_port/stationary{
- dheight = 43;
dir = 4;
height = 19;
name = "Deprecated Port Dock";
shuttle_id = "whiteship_home";
- width = 55
+ width = 55;
+ dwidth = 43
},
/turf/open/space/basic,
/area/space)
@@ -128299,10 +128506,9 @@
/turf/open/floor/iron/cafeteria,
/area/station/service/kitchen)
"vpe" = (
-/obj/structure/trash_pile,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"vpn" = (
/obj/structure/extinguisher_cabinet/directional/south,
/turf/open/floor/iron/dark/side{
@@ -132851,7 +133057,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/structure/railing/corner/end{
+/obj/structure/railing/corner/end/flip{
dir = 4
},
/turf/open/floor/iron,
@@ -132879,7 +133085,6 @@
"wbW" = (
/obj/structure/window/reinforced/spawner/directional/west,
/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/north,
/obj/structure/disposalpipe/trunk{
dir = 1
},
@@ -133018,9 +133223,7 @@
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{
dir = 4
},
-/obj/machinery/air_sensor{
- chamber_id = "ordnancegas2"
- },
+/obj/machinery/air_sensor/ordnance_freezer_chamber,
/turf/open/floor/engine,
/area/station/science/ordnance/freezerchamber)
"wcJ" = (
@@ -133037,6 +133240,12 @@
},
/turf/open/floor/grass,
/area/station/science/research)
+"wcZ" = (
+/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/turf/open/floor/circuit,
+/area/station/security/mechbay)
"wdb" = (
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
dir = 4
@@ -135005,7 +135214,6 @@
/obj/effect/turf_decal/box/white{
color = "#52B4E9"
},
-/obj/machinery/portable_atmospherics/canister/anesthetic_mix,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
@@ -135592,7 +135800,7 @@
dir = 8
},
/obj/effect/landmark/generic_maintenance_landmark,
-/obj/structure/railing/corner/end/flip{
+/obj/structure/railing/corner/end{
dir = 4
},
/turf/open/floor/iron,
@@ -138925,9 +139133,23 @@
/turf/open/floor/iron/white/telecomms,
/area/station/tcommsat/server)
"wZT" = (
-/obj/effect/spawner/random/structure/chair_maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{
+ dir = 4
+ },
+/obj/machinery/button/door/directional/east{
+ name = "Security Mech Garage Door Controls";
+ id = "SecMech";
+ req_access = list("security")
+ },
+/obj/machinery/recharge_station,
+/obj/effect/turf_decal/stripes{
+ dir = 5
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 10
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"wZU" = (
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt{
@@ -140031,12 +140253,16 @@
/obj/effect/turf_decal/trimline/blue/filled/warning{
dir = 1
},
-/obj/machinery/door/airlock/maintenance_hatch{
- name = "Security Maintenance"
- },
/obj/effect/mapping_helpers/airlock/access/all/security/general,
+/obj/structure/cable,
+/obj/machinery/door/airlock/security{
+ name = "Security Mechbay"
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2,
/turf/open/floor/iron,
-/area/station/maintenance/port/fore)
+/area/station/security/mechbay)
"xkf" = (
/obj/machinery/door/airlock/wood{
name = "Sauna"
@@ -144293,7 +144519,6 @@
dir = 1
},
/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/south,
/obj/structure/window/reinforced/spawner/directional/east,
/turf/open/floor/engine,
/area/station/science/xenobiology)
@@ -144323,7 +144548,6 @@
"xXm" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/north,
/turf/open/floor/engine,
/area/station/science/xenobiology)
"xXo" = (
@@ -145946,6 +146170,20 @@
"yjE" = (
/turf/closed/wall,
/area/station/maintenance/thruster_room/central)
+"yjN" = (
+/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
+ dir = 1
+ },
+/obj/machinery/computer/mech_bay_power_console,
+/obj/effect/turf_decal/bot_blue,
+/obj/effect/turf_decal/stripes{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/blue/line{
+ dir = 1
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"yjO" = (
/obj/structure/rack,
/obj/effect/spawner/random/maintenance/two,
@@ -146119,6 +146357,7 @@
},
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4,
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/security/interrogation)
"ylw" = (
@@ -170936,13 +171175,13 @@ lCn
rKn
war
nbK
-rKn
-rKn
-ttc
-rKn
-rKn
-rKn
-rKn
+tNz
+tNz
+tNz
+tNz
+tNz
+tNz
+tNz
aQk
fbq
wZU
@@ -171193,13 +171432,13 @@ rKn
rKn
plI
nWK
-rKn
-ufv
-mjK
-rKn
+tNz
+mBw
+geL
+jEw
rZq
tUd
-rKn
+tNz
ggF
wMc
mWp
@@ -171450,13 +171689,13 @@ etj
rKn
xrJ
ejO
-rKn
-ttc
-rKn
-rKn
-kbf
-kbf
tNz
+yjN
+vpe
+tUj
+uut
+eGr
+cZT
fAw
fAw
fAw
@@ -171707,13 +171946,13 @@ rKn
rKn
rKn
rKn
-rKn
-tcI
-rKn
-vpe
-kbf
-wZT
tNz
+mmu
+tUj
+vpe
+wcZ
+hpF
+cZT
bbn
dqw
eBG
@@ -171964,12 +172203,12 @@ mjK
kbf
ttc
ttc
-kbf
+tNz
bop
dTy
-ttc
-kbf
-mjK
+fYr
+kxe
+dyS
xkc
aey
gTF
@@ -172037,9 +172276,9 @@ xNW
tvB
waa
uYL
-cvi
-sGN
dty
+sGN
+cvi
ckv
lKd
vDU
@@ -172221,13 +172460,13 @@ rKn
kif
tPT
ufv
-mjK
+tNz
wZT
-rKn
-hHH
+bAo
+bAo
bAo
lHT
-tNz
+cZT
lSs
qDO
uro
@@ -172479,12 +172718,12 @@ tNz
tNz
cue
tNz
-tNz
-tNz
-tNz
-tNz
-tNz
-tNz
+cZT
+hAz
+nDO
+hAz
+fAw
+fAw
fAw
bnX
fAw
@@ -172737,9 +172976,9 @@ kcW
cAi
bVB
yiK
-wYY
-wYY
-tbW
+eSi
+eSi
+qgJ
fAw
uNk
pre
@@ -177752,7 +177991,7 @@ jbe
nxi
tBq
kQu
-qax
+hlw
mdF
qax
pTu
@@ -242241,7 +242480,7 @@ lcM
bOU
mya
pWp
-sFT
+mBe
tyf
tyf
fDT
@@ -242748,8 +242987,8 @@ rPB
ttS
beQ
dfM
-gZp
-gZp
+dNw
+dNw
gUs
rJh
dfF
@@ -243012,7 +243251,7 @@ iai
lAF
tvg
ono
-sFT
+mBe
tyf
tyf
fDT
@@ -243776,8 +244015,8 @@ rPB
ajP
xep
dfM
-mBe
-mBe
+tyf
+tyf
jQj
lRC
bgt
@@ -244549,7 +244788,7 @@ tzR
gDN
tyf
tyf
-lpP
+jQj
plv
eUV
kzI
diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm
index 62ef5d9b6481b2..9faf41aca0f409 100644
--- a/_maps/map_files/NorthStar/north_star.dmm
+++ b/_maps/map_files/NorthStar/north_star.dmm
@@ -1600,9 +1600,9 @@
dir = 8
},
/obj/machinery/atmospherics/components/unary/outlet_injector/on{
- volume_rate = 200;
dir = 8;
- initialize_directions = 8
+ initialize_directions = 8;
+ volume_rate = 200
},
/turf/open/floor/engine,
/area/station/science/cytology)
@@ -3259,6 +3259,9 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/exit)
+"aRU" = (
+/turf/closed/wall,
+/area/station/security/mechbay)
"aRX" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -13011,15 +13014,9 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
/obj/machinery/duct,
/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port)
+/area/station/security/mechbay)
"dqB" = (
/obj/item/clothing/mask/breath{
pixel_x = -4
@@ -18416,13 +18413,8 @@
/turf/open/floor/pod/light,
/area/station/maintenance/floor3/starboard/aft)
"eNj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/emcloset/anchored,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
+/turf/closed/wall/r_wall,
+/area/station/security/mechbay)
"eNk" = (
/obj/machinery/door/firedoor/heavy,
/obj/effect/turf_decal/stripes/line{
@@ -18532,6 +18524,17 @@
dir = 1
},
/area/station/commons/locker)
+"ePC" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
+/obj/structure/cable,
+/obj/machinery/airalarm/directional/east,
+/obj/effect/mapping_helpers/airalarm/engine_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "engine"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter/room)
"ePH" = (
/obj/structure/railing{
dir = 4
@@ -20470,6 +20473,21 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/service/hydroponics)
+"ftt" = (
+/obj/structure/table,
+/obj/structure/cable,
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/item/radio/intercom/directional/west,
+/obj/effect/spawner/random/engineering/tool{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/obj/effect/spawner/random/engineering/tool{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"ftu" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -23318,6 +23336,10 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/cargo/miningdock)
+"ghe" = (
+/obj/effect/baseturf_helper/reinforced_plating/ceiling,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter)
"ghg" = (
/obj/effect/turf_decal/trimline/yellow/warning{
dir = 10
@@ -23654,6 +23676,13 @@
},
/turf/open/floor/iron,
/area/station/security/brig)
+"glU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/air_sensor/engine_chamber,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter)
"glW" = (
/obj/structure/table,
/obj/item/toy/cards/deck,
@@ -26034,12 +26063,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/white,
/area/station/medical/treatment_center)
-"gSd" = (
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/obj/machinery/airalarm/directional/south,
-/obj/effect/mapping_helpers/airalarm/engine_access,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
"gSj" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -28165,6 +28188,14 @@
},
/turf/open/floor/pod/light,
/area/station/maintenance/floor3/starboard/fore)
+"hvb" = (
+/obj/machinery/mech_bay_recharge_port{
+ dir = 2
+ },
+/obj/effect/turf_decal/tile/red/anticorner,
+/obj/machinery/light/directional/east,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"hvc" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -34766,8 +34797,8 @@
/obj/structure/table/glass,
/obj/item/radio/intercom/directional/south,
/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 6
},
/obj/item/storage/medkit/regular,
/turf/open/floor/iron/white,
@@ -35539,6 +35570,10 @@
dir = 1
},
/area/station/security/brig)
+"jsL" = (
+/obj/effect/turf_decal/tile/red/opposingcorners,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"jsP" = (
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 4
@@ -35638,6 +35673,14 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
/turf/open/floor/plating,
/area/station/engineering/supermatter)
+"jun" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/duct,
+/obj/machinery/airalarm/directional/west,
+/turf/open/floor/catwalk_floor,
+/area/station/security/mechbay)
"juq" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -38218,6 +38261,19 @@
/obj/effect/turf_decal/tile/red/fourcorners,
/turf/open/floor/iron/dark,
/area/station/security/evidence)
+"kcw" = (
+/obj/machinery/computer/mech_bay_power_console{
+ dir = 8
+ },
+/obj/machinery/button/door/directional/north{
+ id = "secmechbay";
+ name = "Security Mech Garage Door Controls";
+ req_access = list("security")
+ },
+/obj/effect/turf_decal/tile/red/opposingcorners,
+/obj/machinery/light_switch/directional/east,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"kcy" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -42961,7 +43017,12 @@
/obj/machinery/computer/department_orders/security{
dir = 8
},
-/obj/item/radio/intercom/directional/south,
+/obj/item/radio/intercom/directional/east,
+/obj/machinery/button/door/directional/south{
+ id = "secmechbay";
+ name = "Security Mech Garage Door Controls";
+ req_access = list("security")
+ },
/turf/open/floor/iron,
/area/station/security/office)
"lkB" = (
@@ -43415,8 +43476,8 @@
"lqD" = (
/obj/structure/table,
/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 6
},
/obj/item/storage/box/donkpockets{
pixel_x = 6
@@ -44372,12 +44433,6 @@
/obj/effect/spawner/random/structure/crate,
/turf/open/floor/pod/light,
/area/station/maintenance/floor1/port/aft)
-"lET" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
"lFa" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
@@ -44993,14 +45048,6 @@
/obj/machinery/light/red/dim/directional/east,
/turf/open/openspace,
/area/station/maintenance/floor3/port/fore)
-"lNx" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{
- dir = 4
- },
-/obj/machinery/airalarm/directional/north,
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/freezerchamber)
"lNA" = (
/obj/effect/turf_decal/trimline/green/warning{
dir = 8
@@ -45731,6 +45778,24 @@
},
/turf/open/floor/wood,
/area/station/medical/psychology)
+"lVT" = (
+/obj/machinery/button/ignition/incinerator/ordmix{
+ pixel_x = 8;
+ pixel_y = 32
+ },
+/obj/machinery/button/door/incinerator_vent_ordmix{
+ pixel_x = -8;
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
+/obj/machinery/airalarm/directional/west,
+/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnanceburn"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/iron/dark,
+/area/station/science/ordnance/testlab)
"lVU" = (
/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
dir = 4
@@ -47940,6 +48005,13 @@
dir = 4
},
/area/station/hallway/secondary/exit/departure_lounge)
+"myp" = (
+/obj/effect/turf_decal/tile/red/anticorner,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 8
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"myr" = (
/turf/open/floor/iron/textured_large,
/area/station/hallway/secondary/entry)
@@ -53295,9 +53367,6 @@
/turf/open/floor/iron/dark/textured,
/area/station/medical/pharmacy)
"nPN" = (
-/obj/machinery/computer/message_monitor{
- dir = 4
- },
/obj/machinery/computer/message_monitor{
dir = 4
},
@@ -54083,7 +54152,6 @@
"oad" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/portable_atmospherics/pump,
-/obj/machinery/portable_atmospherics/pump,
/turf/open/floor/pod/light,
/area/station/maintenance/floor4/port/fore)
"oar" = (
@@ -54303,6 +54371,13 @@
},
/turf/open/floor/iron/white,
/area/station/command/heads_quarters/rd)
+"odH" = (
+/obj/effect/turf_decal/tile/red/opposingcorners,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 8
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"odJ" = (
/obj/effect/turf_decal/trimline/green/filled/line{
dir = 6
@@ -57066,6 +57141,15 @@
dir = 8
},
/area/station/security/brig)
+"oQu" = (
+/obj/effect/turf_decal/caution/stand_clear,
+/obj/effect/turf_decal/box,
+/obj/machinery/door/poddoor/shutters{
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"oQv" = (
/obj/structure/flora/bush/sparsegrass/style_random,
/obj/machinery/light/directional/west,
@@ -59236,7 +59320,6 @@
/turf/open/floor/iron/dark/corner,
/area/station/commons/storage/primary)
"pvO" = (
-/obj/item/kirbyplants/organic/plant10,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/tile/red/fourcorners,
/turf/open/floor/iron/dark,
@@ -60149,8 +60232,12 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/duct,
+/obj/machinery/door/airlock/hatch{
+ name = "Maintenance Bulkhead"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/security/general,
/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port)
+/area/station/security/mechbay)
"pIS" = (
/obj/machinery/requests_console/directional/east{
department = "Captain's Desk";
@@ -60331,6 +60418,18 @@
/obj/structure/reagent_dispensers/watertank,
/turf/open/floor/pod/light,
/area/station/maintenance/floor1/port)
+"pLh" = (
+/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{
+ dir = 4
+ },
+/obj/machinery/airalarm/directional/north,
+/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnancefreezer"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/iron/dark,
+/area/station/science/ordnance/testlab)
"pLy" = (
/obj/effect/spawner/random/trash/cigbutt,
/obj/machinery/shower/directional/west,
@@ -60883,20 +60982,6 @@
dir = 8
},
/area/station/hallway/floor1/fore)
-"pSI" = (
-/obj/machinery/button/ignition/incinerator/ordmix{
- pixel_x = 8;
- pixel_y = 32
- },
-/obj/machinery/button/door/incinerator_vent_ordmix{
- pixel_x = -8;
- pixel_y = 32
- },
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/obj/machinery/airalarm/directional/west,
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/burnchamber)
"pSV" = (
/obj/machinery/griddle,
/turf/open/floor/iron/kitchen,
@@ -69027,9 +69112,6 @@
"scn" = (
/obj/machinery/netpod,
/obj/machinery/airalarm/directional/east,
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/airalarm/directional/east,
/turf/open/floor/catwalk_floor/iron_dark,
/area/station/bitrunning/den)
"sct" = (
@@ -73481,16 +73563,18 @@
/turf/open/floor/catwalk_floor,
/area/station/maintenance/floor2/port/fore)
"tlx" = (
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/duct,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port)
+/obj/machinery/door/poddoor/shutters{
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/obj/effect/turf_decal/caution/stand_clear,
+/obj/effect/turf_decal/box,
+/turf/open/floor/iron/dark,
+/area/station/security/mechbay)
"tlJ" = (
/obj/machinery/camera/autoname/directional/east,
/turf/open/space/openspace,
@@ -76780,6 +76864,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/effect/turf_decal/tile/red/fourcorners,
+/obj/item/kirbyplants/organic/plant10,
/turf/open/floor/iron/dark,
/area/station/security/office)
"ufL" = (
@@ -79144,9 +79229,9 @@
/area/station/maintenance/floor2/port/aft)
"uLB" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/on{
- volume_rate = 200;
dir = 8;
- initialize_directions = 8
+ initialize_directions = 8;
+ volume_rate = 200
},
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{
dir = 8
@@ -83533,6 +83618,10 @@
/obj/structure/disposalpipe/trunk/multiz,
/turf/open/floor/plating,
/area/station/maintenance/floor3/port/fore)
+"vRF" = (
+/obj/vehicle/sealed/mecha/ripley/paddy/preset,
+/turf/open/floor/iron/recharge_floor,
+/area/station/security/mechbay)
"vRO" = (
/turf/open/openspace,
/area/station/hallway/floor4/aft)
@@ -138333,7 +138422,7 @@ oqA
wlP
klY
klY
-klY
+ePC
nHv
cAf
klY
@@ -138849,7 +138938,7 @@ sly
uyD
aFJ
mMq
-gSd
+ghe
uyD
sHL
ddT
@@ -139876,7 +139965,7 @@ kcB
ppO
fJE
jxc
-lET
+glU
wCu
vap
kBK
@@ -313075,7 +313164,7 @@ mSG
mSG
doC
mSG
-mSG
+sJm
sJm
sJm
nPE
@@ -313332,7 +313421,7 @@ tQO
mXH
qyH
mXH
-pSI
+lVT
mUd
xJx
nPE
@@ -315125,8 +315214,8 @@ ucA
ucA
ucA
ucA
-lYx
-lNx
+sJm
+pLh
koC
oOA
tyR
@@ -317743,10 +317832,10 @@ lnl
uYM
eOy
cgv
-vEa
-jbV
-jbV
-jbV
+eNj
+ftt
+eNj
+eNj
eNj
fPD
jbV
@@ -318002,7 +318091,7 @@ mbx
rVS
tlx
dqs
-dqs
+jun
dqs
pIP
hOs
@@ -318257,11 +318346,11 @@ mBg
dPf
rDw
pse
-vEa
-fXs
-fXs
-fXs
-fXs
+oQu
+odH
+jsL
+myp
+eNj
jjh
fXs
fXs
@@ -318514,11 +318603,11 @@ fNA
ebz
vuQ
lku
-vEa
-owb
-owb
-owb
-fXs
+eNj
+kcw
+hvb
+vRF
+eNj
mgx
kHx
fXs
@@ -318771,11 +318860,11 @@ fNA
ufI
dnU
dnU
-fXs
-vEa
-vEa
-owb
-fXs
+aRU
+eNj
+eNj
+eNj
+eNj
xGh
vPu
fXs
diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
index 706a9c71528bf0..9c40f1af9ff34d 100644
--- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm
+++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
@@ -2144,10 +2144,6 @@
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 6
},
-/obj/machinery/button/door/directional/south{
- id = "genetics_shutters";
- name = "Genetics Shutters"
- },
/obj/item/storage/box/monkeycubes{
pixel_x = 6;
pixel_y = 9
@@ -16605,7 +16601,6 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
-/obj/machinery/firealarm/directional/east,
/obj/structure/bed/dogbed{
anchored = 1;
name = "Markus's bed"
@@ -24341,6 +24336,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/air_sensor/engine_chamber,
/turf/open/floor/engine,
/area/station/engineering/supermatter)
"haq" = (
@@ -33525,6 +33521,10 @@
/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden,
/obj/machinery/airalarm/directional/west,
/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnanceburn"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
/turf/open/floor/engine,
/area/station/science/ordnance/burnchamber)
"jCA" = (
@@ -34478,10 +34478,14 @@
/obj/effect/turf_decal/trimline/dark_red/filled/line{
dir = 4
},
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnancefreezer"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
/turf/open/floor/iron/smooth_edge{
dir = 8
},
-/area/station/science/ordnance/freezerchamber)
+/area/station/science/ordnance)
"jOG" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 8
@@ -80157,6 +80161,10 @@
},
/obj/machinery/airalarm/directional/west,
/obj/effect/mapping_helpers/airalarm/engine_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "engine"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
/turf/open/floor/engine,
/area/station/engineering/supermatter)
"wjk" = (
diff --git a/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_1.dmm b/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_1.dmm
index 658ed7e840d0f2..67bdf4f43e910e 100644
--- a/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_1.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_1.dmm
@@ -277,7 +277,7 @@ M
M
"}
(11,1,1) = {"
-w
+a
w
w
s
@@ -292,7 +292,7 @@ a
a
"}
(12,1,1) = {"
-w
+a
w
w
s
@@ -307,7 +307,7 @@ a
a
"}
(13,1,1) = {"
-w
+a
w
w
s
@@ -322,7 +322,7 @@ a
a
"}
(14,1,1) = {"
-w
+a
w
w
s
@@ -337,7 +337,7 @@ a
a
"}
(15,1,1) = {"
-w
+a
w
w
s
diff --git a/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_2.dmm b/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_2.dmm
index ee5e2a4a69440f..ed00e590e9d2e7 100644
--- a/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_2.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_2.dmm
@@ -256,7 +256,7 @@ R
R
"}
(11,1,1) = {"
-T
+a
T
t
j
@@ -271,7 +271,7 @@ a
a
"}
(12,1,1) = {"
-T
+a
T
t
d
@@ -286,7 +286,7 @@ a
a
"}
(13,1,1) = {"
-T
+a
T
t
s
@@ -301,7 +301,7 @@ a
a
"}
(14,1,1) = {"
-T
+a
T
t
N
@@ -316,7 +316,7 @@ a
a
"}
(15,1,1) = {"
-T
+a
T
t
I
diff --git a/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_3.dmm b/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_3.dmm
index 21be0b689bd7c0..6f7e4019e12257 100644
--- a/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_3.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/arrivalsecupper_3.dmm
@@ -56,6 +56,16 @@
/obj/item/stack/ore/glass,
/turf/open/misc/asteroid/dug,
/area/station/asteroid)
+"x" = (
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Security Maintenance Hatch"
+ },
+/obj/effect/mapping_helpers/airlock/access/any/security/maintenance,
+/turf/open/floor/plating,
+/area/station/maintenance/department/eva)
+"y" = (
+/turf/closed/wall/r_wall,
+/area/station/maintenance/department/eva)
"E" = (
/turf/open/misc/asteroid,
/area/station/asteroid)
@@ -276,7 +286,7 @@ N
N
"}
(11,1,1) = {"
-t
+y
t
L
t
@@ -291,7 +301,7 @@ a
a
"}
(12,1,1) = {"
-t
+y
r
k
t
@@ -306,7 +316,7 @@ a
a
"}
(13,1,1) = {"
-t
+y
d
d
t
@@ -321,7 +331,7 @@ a
a
"}
(14,1,1) = {"
-t
+x
e
e
K
@@ -336,7 +346,7 @@ a
a
"}
(15,1,1) = {"
-t
+y
Y
e
t
diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm
index 8ffdf89bfbaef7..398d8a8ab2b672 100644
--- a/_maps/map_files/tramstation/tramstation.dmm
+++ b/_maps/map_files/tramstation/tramstation.dmm
@@ -4064,6 +4064,8 @@
/area/station/commons/vacant_room)
"aBK" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/security/brig)
"aBL" = (
@@ -5658,6 +5660,10 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/station/engineering/atmos)
+"aOW" = (
+/obj/machinery/light/directional/west,
+/turf/open/floor/catwalk_floor,
+/area/station/security/mechbay)
"aPe" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Library Maintenance Hatch"
@@ -5674,6 +5680,22 @@
},
/turf/open/floor/wood/tile,
/area/station/service/chapel/office)
+"aPi" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
+/obj/effect/turf_decal/trimline/yellow/arrow_ccw,
+/obj/effect/turf_decal/trimline/yellow/arrow_cw{
+ dir = 1
+ },
+/obj/structure/cable/layer1,
+/obj/machinery/airalarm/directional/south,
+/obj/effect/mapping_helpers/airalarm/engine_access,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "engine"
+ },
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter/room)
"aPk" = (
/obj/effect/turf_decal/trimline/neutral/filled/line{
dir = 4
@@ -6632,6 +6654,11 @@
/obj/structure/cable,
/turf/open/floor/iron/dark,
/area/station/security/interrogation)
+"biB" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/vehicle/sealed/mecha/ripley/paddy/preset,
+/turf/open/floor/iron/recharge_floor,
+/area/station/security/mechbay)
"biS" = (
/obj/effect/turf_decal/trimline/neutral/filled/line{
dir = 6
@@ -7256,6 +7283,13 @@
/obj/structure/cable,
/turf/open/space/basic,
/area/station/solars/starboard/fore)
+"bwu" = (
+/obj/machinery/computer/mech_bay_power_console{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"bwz" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/neutral/filled/corner{
@@ -7896,6 +7930,14 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/exit)
+"bIz" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/machinery/airalarm/directional/north,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"bIC" = (
/obj/effect/turf_decal/trimline/neutral/filled/line{
dir = 6
@@ -10263,6 +10305,14 @@
},
/turf/open/floor/iron,
/area/station/cargo/storage)
+"cyb" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 4
+ },
+/obj/machinery/light/directional/south,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"cye" = (
/obj/structure/chair/stool/bar/directional/west,
/obj/effect/turf_decal/siding/thinplating/dark{
@@ -13588,6 +13638,18 @@
/obj/machinery/firealarm/directional/east,
/turf/open/floor/iron,
/area/station/hallway/secondary/command)
+"dFN" = (
+/obj/machinery/door/poddoor/shutters{
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/station/security/mechbay)
"dFP" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -19159,6 +19221,15 @@
/obj/machinery/atmospherics/pipe/smart/simple/dark/visible,
/turf/open/floor/engine/vacuum,
/area/station/maintenance/disposal/incinerator)
+"fLY" = (
+/obj/machinery/door/poddoor/shutters{
+ id = "secmechbay";
+ name = "Security Mech Bay Shutters"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plating,
+/area/station/security/mechbay)
"fMm" = (
/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{
dir = 8
@@ -23906,6 +23977,13 @@
/obj/machinery/light/floor,
/turf/open/floor/engine/n2o,
/area/station/engineering/atmos)
+"hCO" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"hDj" = (
/obj/machinery/door/airlock/atmos/glass{
name = "Atmospherics Testing Room"
@@ -24712,6 +24790,7 @@
/obj/machinery/firealarm/directional/south,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/security/brig)
"hRK" = (
@@ -25627,6 +25706,10 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/commons/fitness/recreation)
+"ijQ" = (
+/obj/machinery/air_sensor/engine_chamber,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter)
"ijR" = (
/obj/structure/table/reinforced,
/turf/open/floor/iron/dark,
@@ -26088,6 +26171,12 @@
},
/turf/open/misc/asteroid,
/area/station/asteroid)
+"itH" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/oil/slippery,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"itN" = (
/obj/effect/turf_decal/stripes/white/corner{
dir = 1
@@ -29176,6 +29265,13 @@
},
/turf/open/floor/plating,
/area/station/medical/storage)
+"jwV" = (
+/obj/effect/turf_decal/trimline/red/filled/corner,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/security/brig)
"jwX" = (
/obj/structure/railing{
dir = 1
@@ -30480,6 +30576,17 @@
"jWs" = (
/turf/closed/wall/r_wall,
/area/station/security/execution/transfer)
+"jWy" = (
+/obj/machinery/button/door/directional/east{
+ name = "Security Mech Garage Door Controls";
+ id = "secmechbay";
+ req_access = list("security")
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor,
+/area/station/security/mechbay)
"jXc" = (
/obj/effect/turf_decal/trimline/yellow/filled/corner{
dir = 8
@@ -31018,6 +31125,17 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/engineering/atmos)
+"kcV" = (
+/obj/structure/table,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/stack/cable_coil{
+ amount = 15;
+ pixel_x = 6;
+ pixel_y = 6
+ },
+/obj/item/stack/cable_coil/cut,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"kcZ" = (
/obj/item/kirbyplants/random,
/turf/open/floor/carpet,
@@ -31153,6 +31271,13 @@
/obj/machinery/light/dim/directional/west,
/turf/open/floor/iron,
/area/station/science/lower)
+"kft" = (
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 1
+ },
+/obj/machinery/light/directional/north,
+/turf/open/floor/iron,
+/area/station/security/brig)
"kfD" = (
/obj/effect/turf_decal/sand,
/obj/machinery/door/airlock/external{
@@ -31934,8 +32059,8 @@
dir = 6
},
/obj/item/storage/box/donkpockets/donkpocketberry{
- pixel_y = 10;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 10
},
/turf/open/floor/iron,
/area/station/engineering/break_room)
@@ -32761,6 +32886,15 @@
/obj/machinery/airalarm/directional/north,
/turf/open/floor/iron/showroomfloor,
/area/station/security/lockers)
+"kIA" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 4
+ },
+/obj/item/stack/rods/two,
+/obj/machinery/light_switch/directional/west,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"kIE" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/white/line{
@@ -33250,6 +33384,7 @@
/obj/effect/landmark/event_spawn,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/security/brig)
"kRL" = (
@@ -34683,9 +34818,9 @@
"lqu" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
id = "pharmacy_shutters_2";
- name = "Pharmacy Shutters";
- dir = 4
+ name = "Pharmacy Shutters"
},
/turf/open/floor/plating,
/area/station/medical/pharmacy)
@@ -35321,18 +35456,6 @@
/obj/machinery/light/small/dim/directional/north,
/turf/open/floor/iron/freezer,
/area/station/science/lower)
-"lBF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{
- dir = 8
- },
-/obj/machinery/meter,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/obj/machinery/airalarm/directional/west,
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/freezerchamber)
"lBP" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
@@ -37105,6 +37228,12 @@
},
/turf/open/floor/iron/white,
/area/station/science/lobby)
+"mez" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/oil/slippery,
+/obj/structure/reagent_dispensers/fueltank,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"meA" = (
/obj/machinery/disposal/bin,
/obj/effect/turf_decal/trimline/green/filled/line{
@@ -38699,10 +38828,12 @@
/turf/open/floor/iron/checker,
/area/station/commons/lounge)
"mJQ" = (
-/obj/structure/closet/secure_closet/brig,
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 8
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/security/brig)
"mKe" = (
@@ -45441,9 +45572,9 @@
"pob" = (
/obj/machinery/smartfridge/chemistry/preloaded,
/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
id = "pharmacy_shutters_2";
- name = "Pharmacy Shutters";
- dir = 4
+ name = "Pharmacy Shutters"
},
/obj/machinery/door/firedoor,
/turf/open/floor/plating,
@@ -47436,6 +47567,12 @@
/obj/structure/cable,
/turf/open/floor/iron/dark,
/area/station/command/bridge)
+"pWO" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/security/brig)
"pWP" = (
/obj/structure/railing{
dir = 8
@@ -48058,8 +48195,8 @@
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable,
/obj/item/storage/box/bandages{
- pixel_y = 6;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 6
},
/obj/item/storage/box/bodybags{
pixel_x = 3;
@@ -49182,17 +49319,6 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/iron/dark,
/area/station/science/ordnance/testlab)
-"qCG" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
-/obj/machinery/firealarm/directional/south,
-/obj/effect/turf_decal/trimline/yellow/arrow_ccw,
-/obj/effect/turf_decal/trimline/yellow/arrow_cw{
- dir = 1
- },
-/obj/structure/cable/layer1,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
"qCJ" = (
/obj/structure/sign/directions/evac{
dir = 4;
@@ -50333,6 +50459,27 @@
/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible,
/turf/open/floor/iron,
/area/station/engineering/atmos)
+"qXK" = (
+/obj/structure/table,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/stock_parts/cell/crap/empty{
+ pixel_y = 10;
+ pixel_x = 6
+ },
+/obj/item/stock_parts/cell/crap/empty{
+ pixel_y = 2;
+ pixel_x = 6
+ },
+/obj/item/stock_parts/cell/crap/empty{
+ pixel_y = 7;
+ pixel_x = -7
+ },
+/obj/item/stock_parts/cell/crap/empty{
+ pixel_y = -2;
+ pixel_x = -2
+ },
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"qXS" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -50736,6 +50883,13 @@
/obj/machinery/light/directional/east,
/turf/open/floor/iron/white,
/area/station/medical/treatment_center)
+"rdN" = (
+/obj/machinery/mech_bay_recharge_port{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"rdO" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
/turf/closed/wall/r_wall,
@@ -51809,6 +51963,18 @@
},
/turf/open/floor/tram,
/area/station/hallway/primary/tram/right)
+"ryY" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
+/obj/machinery/meter,
+/obj/effect/turf_decal/trimline/yellow/arrow_ccw{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/arrow_cw,
+/obj/structure/cable/layer1,
+/obj/machinery/firealarm/directional/south,
+/turf/open/floor/engine,
+/area/station/engineering/supermatter/room)
"rzt" = (
/obj/structure/rack,
/obj/item/storage/box/gloves{
@@ -52241,19 +52407,6 @@
/obj/structure/sign/clock/directional/east,
/turf/open/floor/iron/grimy,
/area/station/hallway/secondary/entry)
-"rJD" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/obj/machinery/meter,
-/obj/effect/turf_decal/trimline/yellow/arrow_ccw{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/arrow_cw,
-/obj/structure/cable/layer1,
-/obj/machinery/airalarm/directional/south,
-/obj/effect/mapping_helpers/airalarm/engine_access,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
"rJE" = (
/obj/machinery/door/airlock/medical/glass{
name = "Medical Freezer"
@@ -54418,6 +54571,17 @@
/obj/machinery/light/directional/south,
/turf/open/floor/iron,
/area/station/science/ordnance/testlab)
+"sub" = (
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 10
+ },
+/obj/machinery/button/door/directional/south{
+ name = "Security Mech Garage Door Controls";
+ id = "secmechbay";
+ req_access = list("security")
+ },
+/turf/open/floor/iron,
+/area/station/security/brig)
"sud" = (
/obj/structure/table,
/obj/item/food/cakeslice/birthday,
@@ -56935,6 +57099,26 @@
/obj/effect/mapping_helpers/airlock/access/any/service/chapel_office,
/turf/open/floor/iron/smooth,
/area/station/service/chapel/office)
+"tpI" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/machinery/camera/directional/south{
+ c_tag = "Science - Mixing Lab";
+ network = list("ss13","rd")
+ },
+/obj/machinery/airalarm/directional/south,
+/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnanceburn"
+ },
+/turf/open/floor/iron/white,
+/area/station/science/ordnance)
"tpR" = (
/obj/machinery/vending/coffee,
/obj/effect/turf_decal/siding/wood{
@@ -57875,13 +58059,8 @@
/turf/open/floor/iron/dark,
/area/station/service/chapel)
"tFk" = (
-/obj/structure/closet/secure_closet/brig,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 9
- },
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron,
-/area/station/security/brig)
+/turf/closed/wall/r_wall,
+/area/station/security/mechbay)
"tFB" = (
/obj/structure/cable,
/turf/open/floor/iron/white,
@@ -61059,6 +61238,13 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
+"uGn" = (
+/obj/effect/turf_decal/trimline/red/filled/line,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/security/brig)
"uGo" = (
/obj/structure/table/reinforced,
/obj/effect/turf_decal/trimline/purple/filled/line{
@@ -61577,6 +61763,13 @@
},
/turf/open/floor/iron,
/area/station/engineering/atmos)
+"uNJ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor,
+/area/station/security/mechbay)
"uNK" = (
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
@@ -62030,22 +62223,6 @@
/obj/item/pen,
/turf/open/floor/iron/grimy,
/area/station/service/library/lounge)
-"uXn" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/machinery/camera/directional/south{
- c_tag = "Science - Mixing Lab";
- network = list("ss13","rd")
- },
-/obj/machinery/airalarm/directional/south,
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/burnchamber)
"uXv" = (
/obj/effect/turf_decal/stripes/corner{
dir = 4
@@ -63612,6 +63789,10 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/iron,
/area/station/hallway/primary/tram/right)
+"vyO" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/catwalk_floor,
+/area/station/security/mechbay)
"vyR" = (
/obj/effect/spawner/random/structure/closet_private,
/turf/open/floor/carpet,
@@ -65922,8 +66103,8 @@
/area/station/hallway/secondary/service)
"wrJ" = (
/obj/structure/railing{
- layer = 3.1;
- dir = 4
+ dir = 4;
+ layer = 3.1
},
/obj/machinery/netpod,
/turf/open/floor/catwalk_floor/iron_dark,
@@ -67175,6 +67356,22 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/hallway/primary/tram/right)
+"wQg" = (
+/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{
+ dir = 8
+ },
+/obj/machinery/meter,
+/obj/effect/turf_decal/trimline/purple/filled/line{
+ dir = 8
+ },
+/obj/machinery/airalarm/directional/west,
+/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
+/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
+/obj/effect/mapping_helpers/airalarm/link{
+ chamber_id = "ordnancefreezer"
+ },
+/turf/open/floor/iron/white,
+/area/station/science/ordnance)
"wQm" = (
/turf/open/floor/iron,
/area/station/engineering/atmos)
@@ -67650,9 +67847,9 @@
pixel_x = -7
},
/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
id = "pharmacy_shutters_2";
- name = "Pharmacy Shutters";
- dir = 4
+ name = "Pharmacy Shutters"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/window/left/directional/south{
@@ -68421,6 +68618,10 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/white,
/area/station/medical/virology)
+"xsg" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"xsh" = (
/obj/machinery/door/airlock/medical{
name = "Surgery"
@@ -69520,6 +69721,14 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/security/checkpoint/science)
+"xNL" = (
+/obj/structure/table,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/machinery/power/apc/auto_name/directional/east,
+/obj/item/crowbar,
+/turf/open/floor/iron/smooth,
+/area/station/security/mechbay)
"xNP" = (
/obj/structure/chair/stool/bar/directional/south,
/turf/open/floor/eighties,
@@ -101084,7 +101293,7 @@ nxT
lfB
ltq
bWN
-qCG
+aPi
hiB
rZx
lEf
@@ -101345,7 +101554,7 @@ svA
jBn
bKt
gqf
-bKt
+ijQ
dQn
bKt
frN
@@ -101855,7 +102064,7 @@ pfG
qHs
bpZ
fuj
-rJD
+ryY
hDI
oMc
lEf
@@ -120353,7 +120562,7 @@ dfz
vqa
uIk
uIk
-lBF
+wQg
vjT
fjn
mBW
@@ -121895,7 +122104,7 @@ dfz
vqO
edP
edP
-uXn
+tpI
hBl
hBl
gkD
@@ -149067,11 +149276,11 @@ aac
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+tFk
+tFk
+tFk
+tFk
+tFk
aaa
aaa
abM
@@ -149321,14 +149530,14 @@ aac
aac
aac
aac
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+tFk
+tFk
+tFk
+tFk
+biB
+rdN
+bwu
+tFk
aaa
aaa
abM
@@ -149578,14 +149787,14 @@ aac
aac
aac
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+tFk
+mez
+kIA
+aOW
+xsg
+vyO
+cyb
+tFk
aaa
aaa
abM
@@ -149835,14 +150044,14 @@ aac
aac
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+tFk
+bIz
+hCO
+jWy
+hCO
+uNJ
+itH
+tFk
aaa
aaa
abM
@@ -150092,14 +150301,14 @@ aaa
aaa
aaa
yji
-yji
-yji
-yji
-yji
-aaa
-aaa
-aaa
-aaa
+tFk
+dFN
+fLY
+tFk
+kcV
+xNL
+qXK
+tFk
aaa
aaa
abM
@@ -150349,9 +150558,9 @@ aaa
aaa
aaa
yji
-tFk
+wOb
mJQ
-dTL
+sub
yji
run
run
@@ -150606,8 +150815,8 @@ aaa
aaa
aaa
yji
-nDj
-dkO
+kft
+aBK
rGN
dTL
mjM
@@ -151378,7 +151587,7 @@ qhI
kDS
mOZ
wvG
-gvQ
+pWO
kEc
ntp
mjM
@@ -151892,7 +152101,7 @@ avA
xSX
xDQ
iko
-gvQ
+pWO
iGJ
gki
nca
@@ -152149,7 +152358,7 @@ avB
jPx
xDQ
rOh
-iBO
+jwV
pNI
gki
nca
@@ -152663,7 +152872,7 @@ avD
hYT
xSX
rOh
-rco
+uGn
awp
hWL
vgl
diff --git a/_maps/shuttles/emergency_narnar.dmm b/_maps/shuttles/emergency_narnar.dmm
index 804c59fa4fff45..d6c48664e08e7d 100644
--- a/_maps/shuttles/emergency_narnar.dmm
+++ b/_maps/shuttles/emergency_narnar.dmm
@@ -166,7 +166,7 @@
/turf/open/floor/cult,
/area/shuttle/escape)
"H" = (
-/mob/living/simple_animal/hostile/construct/wraith,
+/mob/living/basic/construct/wraith,
/turf/open/floor/cult,
/area/shuttle/escape)
"I" = (
diff --git a/_maps/shuttles/pirate_ex_interdyne.dmm b/_maps/shuttles/pirate_ex_interdyne.dmm
index 5d2149c049fa52..ab11aa1dfdf4d4 100644
--- a/_maps/shuttles/pirate_ex_interdyne.dmm
+++ b/_maps/shuttles/pirate_ex_interdyne.dmm
@@ -52,7 +52,6 @@
/obj/effect/mapping_helpers/airlock/cutaiwire,
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/effect/turf_decal/tile/dark_blue/fourcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
/turf/open/floor/iron/dark,
/area/shuttle/pirate)
diff --git a/_maps/shuttles/ruin_pirate_cutter.dmm b/_maps/shuttles/ruin_pirate_cutter.dmm
index 634386c56c2633..7dd4be59ba7ca1 100644
--- a/_maps/shuttles/ruin_pirate_cutter.dmm
+++ b/_maps/shuttles/ruin_pirate_cutter.dmm
@@ -75,7 +75,7 @@
/turf/open/floor/plating,
/area/shuttle/ruin/caravan/pirate)
"iN" = (
-/mob/living/simple_animal/hostile/pirate/melee{
+/mob/living/basic/trooper/pirate/melee{
environment_smash = 0
},
/turf/open/floor/iron,
@@ -139,7 +139,7 @@
pixel_y = -30;
req_access = null
},
-/mob/living/simple_animal/hostile/pirate/ranged{
+/mob/living/basic/trooper/pirate/ranged{
environment_smash = 0
},
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -787,7 +787,7 @@
/area/shuttle/ruin/caravan/pirate)
"WV" = (
/obj/effect/decal/cleanable/dirt,
-/mob/living/simple_animal/hostile/pirate/ranged{
+/mob/living/basic/trooper/pirate/ranged{
environment_smash = 0
},
/turf/open/floor/iron,
diff --git a/_maps/shuttles/skyrat/pirate_nri_raider.dmm b/_maps/shuttles/skyrat/pirate_nri_raider.dmm
index 5c44bc377d4a4c..932fe6348ba0bf 100644
--- a/_maps/shuttles/skyrat/pirate_nri_raider.dmm
+++ b/_maps/shuttles/skyrat/pirate_nri_raider.dmm
@@ -17,12 +17,12 @@
/obj/item/storage/box/zipties{
pixel_x = 2
},
-/obj/item/gun/energy/e_gun/advtaser,
-/obj/item/gun/energy/e_gun/advtaser,
-/obj/item/gun/energy/e_gun/advtaser,
/obj/item/melee/baton,
/obj/item/melee/baton,
/obj/item/melee/baton,
+/obj/item/gun/energy/e_gun/advtaser/normal,
+/obj/item/gun/energy/e_gun/advtaser/normal,
+/obj/item/gun/energy/e_gun/advtaser/normal,
/turf/open/floor/pod,
/area/shuttle/pirate/nri)
"be" = (
@@ -383,14 +383,12 @@
desc = "A secure crate to keep all your personal belongings in.";
anchored = 1
},
-/obj/item/clothing/under/costume/nri/engineer,
/obj/item/clothing/mask/balaclavaadjust,
-/obj/item/clothing/under/syndicate/rus_army/cin_surplus/marine,
/obj/item/clothing/glasses/meson/engine,
/obj/item/storage/belt/military/cin_surplus/marine,
-/obj/item/clothing/suit/armor/vest/cin_surplus_vest,
-/obj/item/clothing/head/helmet/cin_surplus_helmet/marine,
/obj/item/clothing/glasses/hud/security/sunglasses/peacekeeper,
+/obj/item/clothing/head/helmet/nri_police,
+/obj/item/clothing/suit/armor/vest/nri_police,
/obj/item/encryptionkey/heads/ce,
/turf/open/floor/pod/light,
/area/shuttle/pirate/nri)
@@ -469,8 +467,8 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/item/gun/ballistic/shotgun/riot,
/obj/item/gun/ballistic/automatic/nri_smg,
+/obj/item/gun/ballistic/shotgun/automatic/combat/compact,
/turf/open/floor/pod,
/area/shuttle/pirate/nri)
"rp" = (
@@ -817,13 +815,11 @@
anchored = 1
},
/obj/item/clothing/glasses/hud/health,
-/obj/item/clothing/under/costume/nri/medic,
/obj/item/clothing/glasses/hud/security/sunglasses/peacekeeper,
/obj/item/clothing/mask/balaclavaadjust,
-/obj/item/clothing/under/syndicate/rus_army/cin_surplus/marine,
/obj/item/storage/belt/military/cin_surplus/marine,
-/obj/item/clothing/suit/armor/vest/cin_surplus_vest,
-/obj/item/clothing/head/helmet/cin_surplus_helmet/marine,
+/obj/item/clothing/head/helmet/nri_police,
+/obj/item/clothing/suit/armor/vest/nri_police,
/obj/item/encryptionkey/heads/cmo,
/turf/open/floor/pod/light,
/area/shuttle/pirate/nri)
@@ -943,13 +939,11 @@
desc = "A secure crate to keep all your personal belongings in.";
anchored = 1
},
-/obj/item/clothing/under/costume/nri/captain,
/obj/item/clothing/glasses/hud/security/sunglasses/peacekeeper,
/obj/item/clothing/mask/balaclavaadjust,
-/obj/item/clothing/under/syndicate/rus_army/cin_surplus/marine,
/obj/item/storage/belt/military/cin_surplus/marine,
-/obj/item/clothing/suit/armor/vest/cin_surplus_vest,
-/obj/item/clothing/head/helmet/cin_surplus_helmet/marine,
+/obj/item/clothing/head/helmet/nri_police,
+/obj/item/clothing/suit/armor/vest/nri_police,
/obj/item/encryptionkey/heads/hos,
/turf/open/floor/pod/light,
/area/shuttle/pirate/nri)
diff --git a/_maps/shuttles/whiteship_obelisk.dmm b/_maps/shuttles/whiteship_obelisk.dmm
index 4a632a01df2683..170c3db24bd7e0 100644
--- a/_maps/shuttles/whiteship_obelisk.dmm
+++ b/_maps/shuttles/whiteship_obelisk.dmm
@@ -122,7 +122,7 @@
/area/shuttle/abandoned/engine)
"gw" = (
/obj/structure/cable,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune4";
paint_colour = "#DC143C"
@@ -134,7 +134,7 @@
/turf/open/floor/catwalk_floor/iron_smooth,
/area/shuttle/abandoned/engine)
"hg" = (
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/blood/old,
/obj/structure/cable,
/turf/open/floor/mineral/titanium/white,
@@ -166,7 +166,7 @@
/area/shuttle/abandoned/engine)
"ji" = (
/obj/structure/cable,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
dir = 4
},
@@ -438,7 +438,7 @@
/area/shuttle/abandoned/crew)
"yo" = (
/obj/structure/cable,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune4";
paint_colour = "#DC143C"
@@ -616,7 +616,7 @@
/area/shuttle/abandoned)
"IH" = (
/obj/structure/cable,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/blood/gibs/core,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -781,7 +781,7 @@
/area/shuttle/abandoned/medbay)
"SE" = (
/obj/structure/cable,
-/mob/living/simple_animal/hostile/construct/proteon/hostile,
+/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune4";
paint_colour = "#DC143C"
diff --git a/_maps/skyrat/automapper/templates/metastation/metastation_arrivals.dmm b/_maps/skyrat/automapper/templates/metastation/metastation_arrivals.dmm
index 946510b8f2cb92..fc238d37eddbd5 100644
--- a/_maps/skyrat/automapper/templates/metastation/metastation_arrivals.dmm
+++ b/_maps/skyrat/automapper/templates/metastation/metastation_arrivals.dmm
@@ -1209,6 +1209,17 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
+"Kh" = (
+/obj/docking_port/stationary{
+ dir = 2;
+ dwidth = 11;
+ height = 24;
+ name = "SS13: Auxiliary Dock, Station-Port";
+ shuttle_id = "whiteship_home";
+ width = 35
+ },
+/turf/open/space/basic,
+/area/space)
"Kk" = (
/obj/machinery/newscaster/directional/south,
/obj/structure/table,
@@ -2504,7 +2515,7 @@ EW
PD
aG
Wm
-FF
+Kh
FF
FF
"}
diff --git a/_maps/templates/battlecruiser_starfury.dmm b/_maps/templates/battlecruiser_starfury.dmm
index 1e4905ac26ebf4..3e759257296248 100644
--- a/_maps/templates/battlecruiser_starfury.dmm
+++ b/_maps/templates/battlecruiser_starfury.dmm
@@ -119,7 +119,6 @@
"as" = (
/obj/machinery/light/directional/north,
/obj/machinery/atmospherics/components/unary/thermomachine/freezer,
-/obj/machinery/light/directional/north,
/obj/effect/turf_decal/siding/thinplating_new{
dir = 4
},
diff --git a/_maps/templates/lazy_templates/heretic_sacrifice.dmm b/_maps/templates/lazy_templates/heretic_sacrifice.dmm
index 06ace91956c01f..44300c13735fee 100644
--- a/_maps/templates/lazy_templates/heretic_sacrifice.dmm
+++ b/_maps/templates/lazy_templates/heretic_sacrifice.dmm
@@ -44,7 +44,7 @@
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"fO" = (
/turf/open/indestructible,
/area/space)
@@ -59,7 +59,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/storage/toolbox/mechanical/old,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"hZ" = (
/obj/effect/decal/cleanable/blood/old,
/turf/open/indestructible/necropolis/air,
@@ -71,7 +71,7 @@
/area/centcom/heretic_sacrifice/rust)
"jt" = (
/turf/closed/indestructible/reinforced,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"jB" = (
/obj/machinery/light/very_dim/directional/south,
/turf/open/misc/asteroid,
@@ -105,7 +105,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/spear,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"mZ" = (
/obj/effect/decal/fakelattice{
density = 0
@@ -176,7 +176,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/storage/toolbox/mechanical/old,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"qu" = (
/obj/effect/turf_decal/weather/dirt,
/turf/open/misc/ashplanet/wateryrock{
@@ -234,7 +234,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/clothing/under/color/grey/ancient,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"uT" = (
/obj/structure/cable,
/turf/open/floor/plating/rust,
@@ -260,7 +260,7 @@
/area/centcom/heretic_sacrifice/ash)
"wo" = (
/turf/closed/indestructible/grille,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"wt" = (
/obj/structure/stone_tile/block{
dir = 1
@@ -285,7 +285,7 @@
start_on = 1
},
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"wS" = (
/turf/open/misc/dirt/jungle/dark{
planetary_atmos = 0;
@@ -326,7 +326,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/clothing/mask/gas,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"AH" = (
/obj/effect/turf_decal/trimline/brown/corner,
/turf/open/floor/plating/rust,
@@ -345,11 +345,11 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/clothing/mask/gas/tiki_mask/yalp_elor,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"AY" = (
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"Bv" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/brown/line,
@@ -405,7 +405,7 @@
/area/centcom/heretic_sacrifice/ash)
"En" = (
/turf/closed/indestructible/fakedoor/maintenance,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"ER" = (
/turf/open/misc/ironsand,
/area/centcom/heretic_sacrifice/rust)
@@ -543,7 +543,7 @@
start_on = 1
},
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"Nh" = (
/obj/effect/turf_decal/trimline/brown/line{
dir = 1
@@ -589,7 +589,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/clothing/under/color/grey/ancient,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"Pl" = (
/obj/effect/turf_decal/weather/dirt{
dir = 6
@@ -712,9 +712,9 @@
"Zw" = (
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/landmark/heretic/knock,
+/obj/effect/landmark/heretic/lock,
/turf/open/indestructible/plating,
-/area/centcom/heretic_sacrifice/knock)
+/area/centcom/heretic_sacrifice/lock)
"ZA" = (
/turf/closed/indestructible/riveted/boss,
/area/centcom/heretic_sacrifice/ash)
diff --git a/_maps/virtual_domains/ash_drake.dmm b/_maps/virtual_domains/ash_drake.dmm
index 50fbac8696ab39..6056136a278a8b 100644
--- a/_maps/virtual_domains/ash_drake.dmm
+++ b/_maps/virtual_domains/ash_drake.dmm
@@ -21,7 +21,7 @@
/obj/machinery/light/small/blacklight/directional/south,
/obj/effect/baseturf_helper/virtual_domain,
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
-/area/virtual_domain/powered)
+/area/virtual_domain)
"i" = (
/obj/structure/marker_beacon/jade,
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
@@ -35,7 +35,7 @@
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
/area/lavaland/surface/outdoors/virtual_domain)
"q" = (
-/mob/living/simple_animal/hostile/megafauna/dragon/virtual_domain,
+/mob/living/simple_animal/hostile/megafauna/dragon,
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
/area/lavaland/surface/outdoors/virtual_domain)
"s" = (
diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm
index 29fe04d82837f3..779b1b893c04ee 100644
--- a/_maps/virtual_domains/beach_bar.dmm
+++ b/_maps/virtual_domains/beach_bar.dmm
@@ -159,9 +159,9 @@
pixel_x = -8;
pixel_y = -1
},
-/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain{
- pixel_y = 8;
- pixel_x = 5
+/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada{
+ pixel_y = 5;
+ pixel_x = 6
},
/turf/open/floor/wood,
/area/virtual_domain/powered)
@@ -300,6 +300,9 @@
/obj/item/food/meat/slab/rawcrab,
/turf/open/floor/wood,
/area/virtual_domain/powered)
+"no" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/virtual_domain/powered)
"nP" = (
/obj/item/stack/sheet/iron/fifty,
/obj/effect/mapping_helpers/burnt_floor,
@@ -396,7 +399,6 @@
/area/virtual_domain/powered)
"uc" = (
/obj/machinery/light/small/directional/east,
-/obj/machinery/light/small/directional/east,
/turf/open/misc/asteroid/basalt/lava_land_surface,
/area/virtual_domain/powered)
"ug" = (
@@ -424,10 +426,10 @@
/area/virtual_domain/powered)
"uq" = (
/obj/structure/table/wood,
-/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain,
-/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain{
- pixel_x = -4;
- pixel_y = 8
+/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada,
+/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada{
+ pixel_x = -5;
+ pixel_y = 5
},
/turf/open/floor/wood,
/area/virtual_domain/powered)
@@ -878,11 +880,11 @@
/area/virtual_domain/powered)
"Mp" = (
/obj/structure/table/wood,
-/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain{
- pixel_y = 7;
- pixel_x = 4
+/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada{
+ pixel_x = 5;
+ pixel_y = 5
},
-/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain,
+/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada,
/turf/open/floor/wood,
/area/virtual_domain/powered)
"Mw" = (
@@ -2116,7 +2118,7 @@ iz
(23,1,1) = {"
iz
Al
-xb
+no
Fn
Cb
wD
@@ -2159,7 +2161,7 @@ xW
(24,1,1) = {"
iz
Al
-xb
+no
Fn
wD
Gz
@@ -2202,7 +2204,7 @@ xW
(25,1,1) = {"
iz
Al
-xb
+no
Fn
OK
Gz
@@ -2245,7 +2247,7 @@ xW
(26,1,1) = {"
iz
Al
-xb
+no
Fn
Sg
wD
diff --git a/_maps/virtual_domains/blood_drunk_miner.dmm b/_maps/virtual_domains/blood_drunk_miner.dmm
index c3369a1c822de7..bf673bd6dfa04a 100644
--- a/_maps/virtual_domains/blood_drunk_miner.dmm
+++ b/_maps/virtual_domains/blood_drunk_miner.dmm
@@ -27,7 +27,7 @@
/obj/machinery/light/small/blacklight/directional/south,
/obj/effect/baseturf_helper/virtual_domain,
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
-/area/virtual_domain/powered)
+/area/virtual_domain)
"i" = (
/obj/structure/stone_tile{
dir = 4
@@ -171,7 +171,7 @@
/obj/structure/stone_tile/surrounding/cracked{
dir = 6
},
-/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual_domain,
+/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner,
/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors/virtual_domain)
"T" = (
diff --git a/_maps/virtual_domains/breeze_bay.dmm b/_maps/virtual_domains/breeze_bay.dmm
new file mode 100644
index 00000000000000..6fe6f49ab3ab10
--- /dev/null
+++ b/_maps/virtual_domains/breeze_bay.dmm
@@ -0,0 +1,836 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/closed/indestructible/binary,
+/area/virtual_domain/powered)
+"c" = (
+/obj/structure/flora/coconuts,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"d" = (
+/obj/structure/chair/wood,
+/turf/open/floor/wood/large,
+/area/virtual_domain/powered)
+"e" = (
+/turf/open/floor/carpet/red,
+/area/virtual_domain/powered)
+"g" = (
+/obj/item/toy/beach_ball/branded,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"i" = (
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"k" = (
+/obj/effect/landmark/bitrunning/loot_signal,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"m" = (
+/obj/item/fishing_rod{
+ pixel_x = 5;
+ pixel_y = -5
+ },
+/obj/item/fishing_rod,
+/obj/item/fishing_rod{
+ pixel_y = 5;
+ pixel_x = -5
+ },
+/obj/structure/table/wood,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"o" = (
+/obj/structure/flora/tree/jungle/style_5,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"p" = (
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"s" = (
+/obj/structure/fluff/beach_umbrella/cap,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"t" = (
+/obj/structure/fluff/beach_umbrella/syndi,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"v" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"y" = (
+/obj/structure/flora/bush/sparsegrass/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"z" = (
+/mob/living/basic/crab,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"B" = (
+/obj/structure/flora/tree/jungle/style_6,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"C" = (
+/obj/structure/flora/tree/jungle/style_2,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"D" = (
+/turf/open/floor/carpet/green,
+/area/virtual_domain/powered)
+"F" = (
+/obj/structure/fluff/beach_umbrella/engine,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"G" = (
+/obj/structure/flora/bush/jungle/a/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"H" = (
+/obj/structure/flora/tree/jungle/style_4,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"I" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"J" = (
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"K" = (
+/obj/structure/flora/tree/jungle,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"L" = (
+/obj/item/fishing_line,
+/obj/item/fishing_hook,
+/obj/item/fishing_hook,
+/obj/item/fishing_hook,
+/obj/structure/closet/crate,
+/obj/item/bait_can/worm,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"O" = (
+/obj/structure/flora/rock/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"P" = (
+/turf/open/misc/beach/coast,
+/area/virtual_domain/powered)
+"Q" = (
+/obj/structure/flora/bush/stalky/style_random,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"R" = (
+/obj/structure/closet/crate/freezer{
+ name = "Cooler"
+ },
+/obj/item/reagent_containers/cup/glass/ice,
+/obj/item/reagent_containers/cup/glass/colocup,
+/obj/item/reagent_containers/cup/glass/colocup,
+/obj/item/reagent_containers/cup/glass/bottle/beer{
+ desc = "Beer advertised to be the best in space.";
+ name = "Masterbrand Beer"
+ },
+/obj/item/reagent_containers/cup/glass/bottle/beer{
+ desc = "Beer advertised to be the best in space.";
+ name = "Masterbrand Beer"
+ },
+/obj/item/reagent_containers/cup/glass/bottle/beer{
+ desc = "Beer advertised to be the best in space.";
+ name = "Masterbrand Beer"
+ },
+/obj/item/reagent_containers/cup/glass/bottle/beer/light,
+/obj/item/reagent_containers/cup/glass/bottle/beer/light,
+/obj/item/reagent_containers/cup/glass/bottle/beer/light,
+/obj/item/clothing/head/soft/fishing_hat,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"S" = (
+/obj/structure/flora/tree/jungle/style_3,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"U" = (
+/obj/structure/flora/tree/palm/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"X" = (
+/turf/open/floor/wood/large,
+/area/virtual_domain/powered)
+"Z" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/virtual_domain/powered)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+"}
+(2,1,1) = {"
+a
+K
+G
+y
+J
+J
+J
+J
+J
+J
+J
+z
+P
+i
+i
+i
+i
+i
+i
+i
+Q
+i
+i
+i
+a
+"}
+(3,1,1) = {"
+a
+J
+O
+J
+J
+I
+I
+I
+I
+I
+v
+J
+P
+Q
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(4,1,1) = {"
+a
+J
+C
+J
+J
+I
+I
+I
+I
+I
+I
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(5,1,1) = {"
+a
+J
+y
+J
+J
+I
+I
+I
+I
+I
+I
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(6,1,1) = {"
+a
+S
+J
+J
+J
+I
+I
+I
+I
+I
+I
+y
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(7,1,1) = {"
+a
+G
+G
+J
+J
+I
+I
+I
+I
+I
+I
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(8,1,1) = {"
+a
+J
+H
+g
+J
+I
+I
+I
+I
+I
+I
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(9,1,1) = {"
+a
+G
+y
+J
+J
+I
+I
+I
+I
+I
+I
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(10,1,1) = {"
+a
+o
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(11,1,1) = {"
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(12,1,1) = {"
+a
+J
+B
+y
+J
+J
+J
+U
+c
+J
+J
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(13,1,1) = {"
+a
+J
+J
+J
+J
+s
+J
+J
+J
+J
+k
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(14,1,1) = {"
+a
+K
+y
+J
+J
+p
+p
+J
+J
+J
+m
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(15,1,1) = {"
+a
+J
+J
+J
+J
+t
+J
+J
+J
+J
+L
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(16,1,1) = {"
+a
+J
+C
+J
+J
+e
+e
+J
+J
+J
+J
+J
+P
+i
+i
+i
+i
+X
+X
+i
+i
+i
+i
+i
+a
+"}
+(17,1,1) = {"
+a
+G
+J
+J
+J
+F
+J
+J
+J
+J
+J
+J
+P
+i
+i
+i
+i
+X
+X
+i
+i
+i
+i
+i
+a
+"}
+(18,1,1) = {"
+a
+S
+G
+J
+J
+D
+D
+J
+J
+J
+J
+J
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+i
+i
+a
+"}
+(19,1,1) = {"
+a
+J
+J
+J
+J
+R
+J
+J
+J
+J
+J
+J
+X
+X
+X
+X
+X
+X
+X
+X
+d
+X
+i
+i
+a
+"}
+(20,1,1) = {"
+a
+J
+H
+J
+J
+J
+J
+J
+J
+J
+J
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(21,1,1) = {"
+a
+J
+O
+J
+J
+J
+J
+J
+J
+c
+J
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(22,1,1) = {"
+a
+o
+J
+y
+J
+J
+J
+J
+J
+U
+J
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(23,1,1) = {"
+a
+J
+G
+J
+J
+J
+J
+J
+J
+y
+J
+J
+P
+i
+i
+i
+i
+i
+i
+i
+i
+i
+Q
+i
+a
+"}
+(24,1,1) = {"
+a
+J
+B
+J
+z
+J
+y
+J
+J
+J
+J
+J
+P
+i
+Q
+i
+i
+i
+i
+i
+i
+i
+i
+i
+a
+"}
+(25,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/virtual_domains/bubblegum.dmm b/_maps/virtual_domains/bubblegum.dmm
index 3381b1735398b6..a801fa4918746b 100644
--- a/_maps/virtual_domains/bubblegum.dmm
+++ b/_maps/virtual_domains/bubblegum.dmm
@@ -29,7 +29,7 @@
/obj/machinery/light/small/blacklight/directional/south,
/obj/effect/baseturf_helper/virtual_domain,
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
-/area/virtual_domain/powered)
+/area/virtual_domain)
"x" = (
/obj/structure/marker_beacon/olive,
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
@@ -43,7 +43,7 @@
/turf/template_noop,
/area/virtual_domain/safehouse)
"C" = (
-/mob/living/simple_animal/hostile/megafauna/bubblegum/virtual_domain,
+/mob/living/simple_animal/hostile/megafauna/bubblegum,
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
/area/lavaland/surface/outdoors/virtual_domain)
"F" = (
@@ -134,6 +134,16 @@ F
F
F
F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
R
"}
(2,1,1) = {"
@@ -182,16 +192,492 @@ Z
Z
Z
Z
-F
-"}
-(3,1,1) = {"
-F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(3,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(4,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(5,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(6,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(7,1,1) = {"
+F
+Z
+Z
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(8,1,1) = {"
+F
+Z
+Z
+F
+Z
+Z
+Z
+a
+a
+Z
+Z
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+Z
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+Z
+a
+a
+a
+a
+a
+a
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(9,1,1) = {"
+F
+Z
+Z
+F
+Z
+Z
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(10,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+p
+Z
+Z
+Z
+Z
+F
+Z
+F
+"}
+(11,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
Z
a
a
-Z
-Z
-Z
a
a
a
@@ -208,9 +694,6 @@ a
a
a
a
-Z
-Z
-Z
a
a
a
@@ -219,22 +702,38 @@ a
a
a
a
-Z
-Z
+a
+G
+a
+a
+a
+a
+a
a
a
a
a
a
a
+a
+p
+p
+Z
Z
Z
Z
F
+Z
+F
"}
-(4,1,1) = {"
+(12,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -249,6 +748,7 @@ a
a
a
a
+x
a
a
a
@@ -270,19 +770,28 @@ a
a
a
a
+Z
a
a
a
a
-a
-a
-a
+p
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(5,1,1) = {"
+(13,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -319,24 +828,38 @@ a
a
a
a
+Z
+Z
a
a
a
-a
-a
-p
+Z
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(6,1,1) = {"
+(14,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
a
a
a
+p
+p
+p
+p
a
a
a
@@ -358,9 +881,6 @@ a
a
a
a
-G
-a
-a
a
a
a
@@ -371,19 +891,34 @@ a
a
a
a
-p
-p
+Z
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(7,1,1) = {"
+(15,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
+Z
a
a
a
a
a
+Z
+Z
+Z
+p
+a
a
a
a
@@ -393,7 +928,6 @@ a
a
a
a
-x
a
a
a
@@ -416,36 +950,90 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(16,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+a
a
a
a
a
-p
Z
-F
-"}
-(8,1,1) = {"
-F
Z
+Z
+p
+a
+a
+a
+a
+a
+a
+a
+a
+a
a
a
a
a
a
a
+Z
+Z
+a
+a
a
a
a
a
a
a
+p
+p
+a
+a
+a
a
a
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(17,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
a
a
a
a
a
+p
+Z
+p
+p
a
a
a
@@ -468,23 +1056,39 @@ Z
a
a
a
+a
+a
+a
+a
+p
+a
+a
+a
+a
+a
+Z
+Z
+Z
+Z
Z
Z
F
"}
-(9,1,1) = {"
+(18,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
+Z
a
a
a
a
a
a
-p
-p
-p
-p
a
a
a
@@ -504,11 +1108,15 @@ a
a
a
a
+Z
+Z
+Z
a
a
a
a
a
+M
a
a
a
@@ -518,21 +1126,27 @@ a
a
Z
Z
+Z
+Z
+Z
+Z
F
"}
-(10,1,1) = {"
+(19,1,1) = {"
F
Z
Z
+Z
+Z
+Z
+Z
+a
+a
a
a
a
a
a
-Z
-Z
-Z
-p
a
a
a
@@ -552,6 +1166,10 @@ a
a
a
a
+Z
+Z
+Z
+a
a
a
a
@@ -566,21 +1184,31 @@ a
a
Z
Z
+Z
+Z
+Z
+Z
F
"}
-(11,1,1) = {"
+(20,1,1) = {"
F
Z
Z
+Z
+Z
+Z
+Z
+a
+a
+a
+a
+a
+a
a
a
a
a
a
-Z
-Z
-Z
-p
a
a
a
@@ -596,8 +1224,6 @@ a
a
a
a
-Z
-Z
a
a
a
@@ -606,29 +1232,35 @@ a
a
a
a
-p
-p
+a
+c
a
a
a
a
a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(12,1,1) = {"
+(21,1,1) = {"
F
Z
Z
+Z
+Z
+Z
+Z
a
a
a
a
a
-p
-Z
-p
-p
a
a
a
@@ -645,9 +1277,10 @@ a
a
a
a
+I
+a
+a
a
-Z
-Z
a
a
a
@@ -655,19 +1288,32 @@ a
a
a
a
-p
a
a
a
a
a
+a
+a
+a
+a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(13,1,1) = {"
+(22,1,1) = {"
F
Z
Z
+Z
+Z
+Z
+Z
a
a
a
@@ -679,6 +1325,10 @@ a
a
a
a
+W
+a
+a
+a
a
a
a
@@ -693,15 +1343,11 @@ a
a
a
a
-Z
-Z
-Z
a
a
a
a
a
-M
a
a
a
@@ -709,12 +1355,23 @@ a
a
a
a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(14,1,1) = {"
+(23,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -741,9 +1398,6 @@ a
a
a
a
-Z
-Z
-Z
a
a
a
@@ -757,12 +1411,25 @@ a
a
a
a
+a
+a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(15,1,1) = {"
+(24,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -798,24 +1465,35 @@ a
a
a
a
-c
a
a
a
a
a
a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(16,1,1) = {"
+(25,1,1) = {"
F
Z
+Z
+F
+Z
+Z
+Z
a
a
a
a
a
+z
a
a
a
@@ -832,7 +1510,6 @@ a
a
a
a
-I
a
a
a
@@ -854,11 +1531,21 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(17,1,1) = {"
+(26,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -870,13 +1557,6 @@ a
a
a
a
-W
-a
-a
-a
-a
-a
-a
a
a
a
@@ -900,13 +1580,30 @@ a
a
a
a
+w
+S
+S
+S
+S
+S
+T
a
Z
+Z
+Z
+Z
+Z
+F
F
"}
-(18,1,1) = {"
+(27,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -942,19 +1639,29 @@ a
a
a
a
+S
+S
+S
+S
+S
+S
a
-a
-a
-a
-a
-a
-a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(19,1,1) = {"
+(28,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -974,6 +1681,7 @@ a
a
a
a
+C
a
a
a
@@ -989,27 +1697,29 @@ a
a
a
a
+S
+S
+S
+S
+S
+S
a
-a
-a
-a
-a
-a
-a
-a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(20,1,1) = {"
+(29,1,1) = {"
F
Z
-a
-a
-a
-a
-a
-z
-a
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -1042,15 +1752,33 @@ a
a
a
a
+X
a
a
+S
+S
+S
+S
+S
+S
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(21,1,1) = {"
+(30,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
+a
a
a
a
@@ -1085,20 +1813,29 @@ a
a
a
a
-w
S
S
S
S
S
-T
+S
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(22,1,1) = {"
+(31,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -1142,11 +1879,21 @@ S
S
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(23,1,1) = {"
+(32,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -1166,7 +1913,6 @@ a
a
a
a
-C
a
a
a
@@ -1182,19 +1928,30 @@ a
a
a
a
+w
S
S
S
S
S
-S
+A
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(24,1,1) = {"
+(33,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -1207,6 +1964,10 @@ a
a
a
a
+f
+a
+a
+a
a
a
a
@@ -1227,27 +1988,35 @@ a
a
a
a
-X
a
a
-S
-S
-S
-S
-S
-S
a
+a
+a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(25,1,1) = {"
+(34,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
+a
a
a
a
a
a
+Z
a
a
a
@@ -1263,6 +2032,7 @@ a
a
a
a
+r
a
a
a
@@ -1278,25 +2048,35 @@ a
a
a
a
-S
-S
-S
-S
-S
-S
a
+a
+a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(26,1,1) = {"
+(35,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
a
a
a
+Z
+Z
+Z
a
a
a
@@ -1326,24 +2106,37 @@ a
a
a
a
-S
-S
-S
-S
-S
-S
a
+a
+a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(27,1,1) = {"
+(36,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
+a
a
a
a
a
a
+Z
+Z
+Z
+a
+a
a
a
a
@@ -1373,20 +2166,24 @@ a
a
a
a
-w
-S
-S
-S
-S
-S
-A
a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(28,1,1) = {"
+(37,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -1394,12 +2191,12 @@ a
a
a
a
+Z
a
a
a
a
a
-f
a
a
a
@@ -1430,12 +2227,21 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(29,1,1) = {"
+(38,1,1) = {"
F
Z
-a
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -1457,7 +2263,6 @@ a
a
a
a
-r
a
a
a
@@ -1471,6 +2276,8 @@ a
a
a
a
+d
+a
a
a
a
@@ -1478,20 +2285,29 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(30,1,1) = {"
+(39,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
+Z
a
a
a
a
+Z
a
a
-Z
-Z
-Z
a
a
a
@@ -1512,6 +2328,7 @@ a
a
a
a
+Z
a
a
a
@@ -1526,22 +2343,28 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(31,1,1) = {"
+(40,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
+Z
a
a
a
a
a
a
-Z
-Z
-Z
-a
-a
a
a
a
@@ -1553,6 +2376,7 @@ a
a
a
a
+X
a
a
a
@@ -1561,6 +2385,9 @@ a
a
a
a
+Z
+Z
+Z
a
a
a
@@ -1574,11 +2401,22 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(32,1,1) = {"
+(41,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
+Z
a
a
a
@@ -1586,10 +2424,6 @@ a
a
a
a
-Z
-a
-a
-a
a
a
a
@@ -1609,6 +2443,9 @@ a
a
a
a
+Z
+Z
+Z
a
a
a
@@ -1622,17 +2459,27 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(33,1,1) = {"
+(42,1,1) = {"
+F
+Z
+Z
F
Z
+Z
+Z
+Z
a
a
a
a
a
-Z
a
a
a
@@ -1661,7 +2508,6 @@ a
a
a
a
-d
a
a
a
@@ -1670,40 +2516,50 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(34,1,1) = {"
+(43,1,1) = {"
F
Z
Z
-a
-a
-a
-a
Z
+Z
+Z
+Z
+a
a
a
+p
+p
a
a
a
a
a
+g
a
a
a
a
+Z
a
a
a
a
a
a
+p
a
a
a
a
a
-Z
a
a
a
@@ -1718,15 +2574,27 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(35,1,1) = {"
+(44,1,1) = {"
F
Z
Z
+Z
+Z
+Z
+Z
a
a
a
+p
+p
a
a
a
@@ -1736,23 +2604,22 @@ a
a
a
a
+Z
+Z
+Z
a
a
a
a
a
-X
-a
-a
+p
+p
a
a
a
a
a
a
-Z
-Z
-Z
a
a
a
@@ -1766,13 +2633,23 @@ a
a
a
Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(36,1,1) = {"
+(45,1,1) = {"
F
Z
Z
+Z
+Z
+Z
+Z
a
+c
a
a
a
@@ -1798,9 +2675,6 @@ a
a
a
a
-Z
-Z
-Z
a
a
a
@@ -1813,13 +2687,26 @@ a
a
a
a
+a
+a
+a
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(37,1,1) = {"
+(46,1,1) = {"
F
Z
Z
+Z
+Z
+Z
+Z
+a
a
a
a
@@ -1853,6 +2740,7 @@ a
a
a
a
+Y
a
a
a
@@ -1862,34 +2750,32 @@ a
a
Z
Z
+Z
+Z
+Z
+Z
F
"}
-(38,1,1) = {"
+(47,1,1) = {"
F
Z
+Z
+Z
+Z
+Z
+Z
a
a
a
-p
-p
-a
-a
-a
-a
-a
-g
-a
a
a
a
-Z
a
a
a
a
a
a
-p
a
a
a
@@ -1908,18 +2794,9 @@ a
a
a
a
-Z
-Z
-F
-"}
-(39,1,1) = {"
-F
-Z
a
a
a
-p
-p
a
a
a
@@ -1932,227 +2809,360 @@ a
Z
Z
Z
+Z
+Z
+Z
+F
+"}
+(48,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
a
+Z
+Z
+Z
+Z
a
a
a
a
-p
-p
a
+Z
+Z
+Z
+Z
a
a
a
+Z
+Z
+Z
+Z
+Z
a
a
a
a
a
a
+Z
+Z
+Z
+Z
a
a
a
a
a
a
+Z
+Z
a
a
Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(49,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+Z
+Z
+Z
+Z
+F
+"}
+(50,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+"}
+(51,1,1) = {"
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
F
"}
-(40,1,1) = {"
+(52,1,1) = {"
F
Z
-a
-c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+Z
+Z
+Z
+Z
Z
F
-"}
-(41,1,1) = {"
F
Z
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-Y
-a
-a
-a
-a
-a
-a
-a
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
Z
F
-"}
-(42,1,1) = {"
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
F
Z
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(43,1,1) = {"
+(53,1,1) = {"
F
Z
-a
Z
Z
Z
Z
-a
-a
-a
-a
-a
Z
Z
Z
Z
-a
-a
-a
Z
Z
Z
Z
Z
-a
-a
-a
-a
-a
-a
Z
Z
Z
Z
-a
-a
-a
-a
-a
-a
Z
Z
-a
-a
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
Z
F
"}
-(44,1,1) = {"
+(54,1,1) = {"
F
Z
Z
@@ -2191,16 +3201,36 @@ Z
Z
Z
Z
+F
+Z
+Z
+Z
+Z
+Z
+Z
+Z
+Z
Z
Z
Z
+F
Z
Z
Z
Z
F
"}
-(45,1,1) = {"
+(55,1,1) = {"
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
F
F
F
diff --git a/_maps/virtual_domains/colossus.dmm b/_maps/virtual_domains/colossus.dmm
index a9c3c6e6d79e72..fe97dcace42882 100644
--- a/_maps/virtual_domains/colossus.dmm
+++ b/_maps/virtual_domains/colossus.dmm
@@ -30,7 +30,7 @@
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
/area/lavaland/surface/outdoors/virtual_domain)
"p" = (
-/mob/living/simple_animal/hostile/megafauna/colossus/virtual_domain,
+/mob/living/simple_animal/hostile/megafauna/colossus,
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
/area/lavaland/surface/outdoors/virtual_domain)
"q" = (
@@ -41,7 +41,7 @@
/obj/machinery/light/small/blacklight/directional/south,
/obj/effect/baseturf_helper/virtual_domain,
/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
-/area/virtual_domain/powered)
+/area/virtual_domain)
"s" = (
/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors/virtual_domain)
diff --git a/_maps/virtual_domains/hierophant.dmm b/_maps/virtual_domains/hierophant.dmm
index 02b11ad4e1ef43..81f8a9f97a73ed 100644
--- a/_maps/virtual_domains/hierophant.dmm
+++ b/_maps/virtual_domains/hierophant.dmm
@@ -37,7 +37,7 @@
/turf/closed/indestructible/binary,
/area/lavaland/surface/outdoors/virtual_domain)
"E" = (
-/mob/living/simple_animal/hostile/megafauna/hierophant/virtual_domain,
+/mob/living/simple_animal/hostile/megafauna/hierophant,
/turf/open/indestructible/hierophant/two,
/area/lavaland/surface/outdoors/virtual_domain)
"H" = (
@@ -51,7 +51,7 @@
/obj/machinery/light/small/blacklight/directional/south,
/obj/effect/baseturf_helper/virtual_domain,
/turf/open/indestructible/hierophant,
-/area/virtual_domain/powered)
+/area/virtual_domain)
"S" = (
/obj/effect/mob_spawn/corpse/human/miner,
/turf/open/indestructible/hierophant,
diff --git a/_maps/virtual_domains/pirates.dmm b/_maps/virtual_domains/pirates.dmm
index 9c970f78c371a0..9868ab8e9b32ed 100644
--- a/_maps/virtual_domains/pirates.dmm
+++ b/_maps/virtual_domains/pirates.dmm
@@ -161,7 +161,7 @@
dir = 8
},
/obj/effect/decal/cleanable/dirt/dust,
-/mob/living/simple_animal/hostile/pirate/ranged/space,
+/mob/living/basic/trooper/pirate/ranged/space,
/turf/open/floor/carpet/blue,
/area/virtual_domain/powered)
"iO" = (
@@ -293,7 +293,7 @@
/area/virtual_domain/powered)
"nX" = (
/obj/effect/decal/cleanable/dirt/dust,
-/mob/living/simple_animal/hostile/pirate/melee/space,
+/mob/living/basic/trooper/pirate/melee/space,
/turf/open/floor/wood/parquet,
/area/virtual_domain/powered)
"oo" = (
@@ -342,7 +342,7 @@
},
/obj/effect/mapping_helpers/burnt_floor,
/obj/effect/decal/cleanable/dirt/dust,
-/mob/living/simple_animal/hostile/pirate/ranged,
+/mob/living/basic/trooper/pirate/ranged,
/turf/open/floor/wood,
/area/virtual_domain/powered)
"qN" = (
@@ -385,7 +385,7 @@
/turf/open/misc/grass,
/area/virtual_domain/powered)
"to" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/turf/open/misc/grass,
/area/virtual_domain/powered)
"ub" = (
@@ -472,7 +472,7 @@
/turf/open/misc/dirt/jungle,
/area/virtual_domain/powered)
"yi" = (
-/mob/living/simple_animal/hostile/pirate/melee,
+/mob/living/basic/trooper/pirate/melee,
/turf/open/misc/beach/sand,
/area/virtual_domain/powered)
"yq" = (
@@ -481,7 +481,7 @@
/area/virtual_domain/powered)
"yw" = (
/obj/effect/mapping_helpers/burnt_floor,
-/mob/living/simple_animal/hostile/pirate/ranged,
+/mob/living/basic/trooper/pirate/ranged,
/obj/structure/chair/wood,
/turf/open/floor/wood{
icon_state = "wood_large"
@@ -616,7 +616,7 @@
/area/virtual_domain/powered)
"Hp" = (
/obj/effect/turf_decal/siding/wood,
-/mob/living/simple_animal/hostile/pirate/ranged,
+/mob/living/basic/trooper/pirate/ranged,
/turf/open/floor/wood,
/area/virtual_domain/powered)
"HY" = (
diff --git a/_maps/virtual_domains/wendigo.dmm b/_maps/virtual_domains/wendigo.dmm
index 17bcb48d688bfc..dcce722cbbd047 100644
--- a/_maps/virtual_domains/wendigo.dmm
+++ b/_maps/virtual_domains/wendigo.dmm
@@ -58,7 +58,7 @@
/turf/open/misc/asteroid/snow/ice/icemoon,
/area/icemoon/underground/explored/virtual_domain)
"H" = (
-/mob/living/simple_animal/hostile/megafauna/wendigo/virtual_domain,
+/mob/living/simple_animal/hostile/megafauna/wendigo,
/turf/open/indestructible/necropolis{
initial_gas_mix = "ICEMOON_ATMOS"
},
diff --git a/code/__DEFINES/achievements.dm b/code/__DEFINES/achievements.dm
index 4a0299d835ac32..cfe3cd2e456ae8 100644
--- a/code/__DEFINES/achievements.dm
+++ b/code/__DEFINES/achievements.dm
@@ -46,7 +46,7 @@
#define MEDAL_VOID_ASCENSION "Void"
#define MEDAL_BLADE_ASCENSION "Blade"
#define MEDAL_COSMOS_ASCENSION "Cosmos"
-#define MEDAL_KNOCK_ASCENSION "Knock"
+#define MEDAL_LOCK_ASCENSION "Knock"
#define MEDAL_TOOLBOX_SOUL "Toolsoul"
#define MEDAL_CHEM_TUT "Beginner Chemist"
#define MEDAL_HOT_DAMN "Hot Damn!"
diff --git a/code/__DEFINES/actions.dm b/code/__DEFINES/actions.dm
index 5bc2b161781247..99f9c1aca551d9 100644
--- a/code/__DEFINES/actions.dm
+++ b/code/__DEFINES/actions.dm
@@ -41,3 +41,10 @@ DEFINE_BITFIELD(check_flags, list(
#define UPDATE_BUTTON_BACKGROUND (1<<2)
#define UPDATE_BUTTON_OVERLAY (1<<3)
#define UPDATE_BUTTON_STATUS (1<<4)
+
+/// Takes in a typepath of a `/datum/action` and adds it to `src`.
+/// Only useful if you want to add the action and never desire to reference it again ever.
+#define GRANT_ACTION(typepath) do {\
+ var/datum/action/_ability = new typepath(src);\
+ _ability.Grant(src);\
+} while (FALSE)
diff --git a/code/__DEFINES/ai/ai.dm b/code/__DEFINES/ai/ai.dm
index 53cbf117af410e..5e0b979b2f8c8f 100644
--- a/code/__DEFINES/ai/ai.dm
+++ b/code/__DEFINES/ai/ai.dm
@@ -1,4 +1,5 @@
#define GET_AI_BEHAVIOR(behavior_type) SSai_behaviors.ai_behaviors[behavior_type]
+#define GET_TARGETING_STRATEGY(targeting_type) SSai_behaviors.targeting_strategies[targeting_type]
#define HAS_AI_CONTROLLER_TYPE(thing, type) istype(thing?.ai_controller, type)
#define AI_STATUS_ON 1
diff --git a/code/__DEFINES/ai/ai_blackboard.dm b/code/__DEFINES/ai/ai_blackboard.dm
index 484b38b0fd16bd..3da9c08ae27ed9 100644
--- a/code/__DEFINES/ai/ai_blackboard.dm
+++ b/code/__DEFINES/ai/ai_blackboard.dm
@@ -40,31 +40,33 @@
///Basic Mob Keys
-///Targetting subtrees
+///Targeting subtrees
#define BB_BASIC_MOB_CURRENT_TARGET "BB_basic_current_target"
#define BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION "BB_basic_current_target_hiding_location"
-#define BB_TARGETTING_DATUM "targetting_datum"
+#define BB_TARGETING_STRATEGY "targeting_strategy"
///some behaviors that check current_target also set this on deep crit mobs
#define BB_BASIC_MOB_EXECUTION_TARGET "BB_basic_execution_target"
///Blackboard key for a whitelist typecache of "things we can target while trying to move"
-#define BB_OBSTACLE_TARGETTING_WHITELIST "BB_targetting_whitelist"
+#define BB_OBSTACLE_TARGETING_WHITELIST "BB_targeting_whitelist"
/// Key for the minimum status at which we want to target mobs (does not need to be specified if CONSCIOUS)
#define BB_TARGET_MINIMUM_STAT "BB_target_minimum_stat"
/// Flag for whether to target only wounded mobs
#define BB_TARGET_WOUNDED_ONLY "BB_target_wounded_only"
+/// What typepath the holding object targeting strategy should look for
+#define BB_TARGET_HELD_ITEM "BB_target_held_item"
-/// Blackboard key storing how long your targetting datum has held a particular target
+/// Blackboard key storing how long your targeting strategy has held a particular target
#define BB_BASIC_MOB_HAS_TARGET_TIME "BB_basic_mob_has_target_time"
-///Targetting keys for something to run away from, if you need to store this separately from current target
+///Targeting keys for something to run away from, if you need to store this separately from current target
#define BB_BASIC_MOB_FLEE_TARGET "BB_basic_flee_target"
#define BB_BASIC_MOB_FLEE_TARGET_HIDING_LOCATION "BB_basic_flee_target_hiding_location"
-#define BB_FLEE_TARGETTING_DATUM "flee_targetting_datum"
+#define BB_FLEE_TARGETING_STRATEGY "flee_targeting_strategy"
#define BB_BASIC_MOB_FLEE_DISTANCE "BB_basic_flee_distance"
#define DEFAULT_BASIC_FLEE_DISTANCE 9
-/// Generic key for a non-specific targetted action
-#define BB_TARGETTED_ACTION "BB_targetted_action"
+/// Generic key for a non-specific targeted action
+#define BB_TARGETED_ACTION "BB_TARGETED_action"
/// Generic key for a non-specific action
#define BB_GENERIC_ACTION "BB_generic_action"
@@ -115,9 +117,9 @@
///Range for a MOD AI controller.
#define MOD_AI_RANGE 200
-///should we skip the faction check for the targetting datum?
+///should we skip the faction check for the targeting strategy?
#define BB_ALWAYS_IGNORE_FACTION "BB_always_ignore_factions"
-///are we in some kind of temporary state of ignoring factions when targetting? can result in volatile results if multiple behaviours touch this
+///are we in some kind of temporary state of ignoring factions when targeting? can result in volatile results if multiple behaviours touch this
#define BB_TEMPORARILY_IGNORE_FACTION "BB_temporarily_ignore_factions"
///currently only used by clowns, a list of what can the mob speak randomly
diff --git a/code/__DEFINES/ai/carp.dm b/code/__DEFINES/ai/carp.dm
index 8286f326207748..459b98ffb0204b 100644
--- a/code/__DEFINES/ai/carp.dm
+++ b/code/__DEFINES/ai/carp.dm
@@ -7,9 +7,9 @@
/// Current target turf in your migration
#define BB_CARP_MIGRATION_TARGET "BB_carp_migration_target"
-/// Targetting keys for magicarp spells
+/// Targeting keys for magicarp spells
#define BB_MAGICARP_SPELL_TARGET "BB_magicarp_spell_target"
-#define BB_MAGICARP_SPELL_SPECIAL_TARGETTING "BB_magicarp_spell_special_targetting"
+#define BB_MAGICARP_SPELL_SPECIAL_TARGETING "BB_magicarp_spell_special_targeting"
#define MAGICARP_SPELL_CORPSES "magicarp_spell_corpses"
#define MAGICARP_SPELL_WALLS "magicarp_spell_walls"
#define MAGICARP_SPELL_OBJECTS "magicarp_spell_objects"
diff --git a/code/__DEFINES/ai/monsters.dm b/code/__DEFINES/ai/monsters.dm
index 72d756c0554609..750d65e6eb33e3 100644
--- a/code/__DEFINES/ai/monsters.dm
+++ b/code/__DEFINES/ai/monsters.dm
@@ -160,10 +160,8 @@
#define BB_DEMON_CLONE_ABILITY "demon_clone_ability"
///our slippery ice ability
#define BB_DEMON_SLIP_ABILITY "demon_slip_ability"
-///the turf we are escaping too
+///the turf we are escaping to
#define BB_ESCAPE_DESTINATION "escape_destination"
-///how far away we will be from our target before teleporting
-#define BB_MINIMUM_DISTANCE_RANGE "minimum_distance_range"
/// Corpse we have consumed
#define BB_LEGION_CORPSE "legion_corpse"
@@ -191,3 +189,30 @@
#define BB_MOOK_MUSIC_AUDIENCE "music_audience"
/// the bonfire we will light up
#define BB_MOOK_BONFIRE_TARGET "bonfire_target"
+
+//leaper keys
+///key holds our volley ability
+#define BB_LEAPER_VOLLEY "leaper_volley"
+///key holds our flop ability
+#define BB_LEAPER_FLOP "leaper_flop"
+///key holds our bubble ability
+#define BB_LEAPER_BUBBLE "leaper_bubble"
+///key holds our summon ability
+#define BB_LEAPER_SUMMON "leaper_summon"
+///key holds the world timer for swimming
+#define BB_KEY_SWIM_TIME "key_swim_time"
+///key holds the water or land target turf
+#define BB_SWIM_ALTERNATE_TURF "swim_alternate_turf"
+///key holds our state of swimming
+#define BB_CURRENTLY_SWIMMING "currently_swimming"
+///key holds how long we will be swimming for
+#define BB_KEY_SWIMMER_COOLDOWN "key_swimmer_cooldown"
+//Wizard AI keys
+/// Key where we store our main targeted spell
+#define BB_WIZARD_TARGETED_SPELL "BB_wizard_targeted_spell"
+/// Key where we store our secondary, untargeted spell
+#define BB_WIZARD_SECONDARY_SPELL "BB_wizard_secondary_spell"
+/// Key where we store our blink spell
+#define BB_WIZARD_BLINK_SPELL "BB_wizard_blink_spell"
+/// Key for the next time we can cast a spell
+#define BB_WIZARD_SPELL_COOLDOWN "BB_wizard_spell_cooldown"
diff --git a/code/__DEFINES/ai/pet_commands.dm b/code/__DEFINES/ai/pet_commands.dm
index 5894aedff14d06..1e692b9f805aaa 100644
--- a/code/__DEFINES/ai/pet_commands.dm
+++ b/code/__DEFINES/ai/pet_commands.dm
@@ -4,6 +4,6 @@
/// Blackboard field for what we actually want the pet to target
#define BB_CURRENT_PET_TARGET "BB_current_pet_target"
/// Blackboard field for how we target things, as usually we want to be more permissive than normal
-#define BB_PET_TARGETTING_DATUM "BB_pet_targetting"
+#define BB_PET_TARGETING_STRATEGY "BB_pet_targeting"
/// Typecache of weakrefs to mobs this mob is friends with, will follow their instructions and won't attack them
#define BB_FRIENDS_LIST "BB_friends_list"
diff --git a/code/__DEFINES/ai/trader.dm b/code/__DEFINES/ai/trader.dm
new file mode 100644
index 00000000000000..853dd8736b6492
--- /dev/null
+++ b/code/__DEFINES/ai/trader.dm
@@ -0,0 +1,6 @@
+///The ability to setup our "shop"
+#define BB_SETUP_SHOP "BB_setup_shop"
+///Reference to the plastic chair that is considered as our shop
+#define BB_SHOP_SPOT "BB_shop_spot"
+///Reference to our first customer to harass with deals
+#define BB_FIRST_CUSTOMER "BB_first_customer"
diff --git a/code/__DEFINES/ai/ventcrawling.dm b/code/__DEFINES/ai/ventcrawling.dm
index f981ef3bba5d62..a60b7fd594017f 100644
--- a/code/__DEFINES/ai/ventcrawling.dm
+++ b/code/__DEFINES/ai/ventcrawling.dm
@@ -3,7 +3,7 @@
/// Key that holds a vent that we want to exit out of (when we're already in a pipenet)
#define BB_EXIT_VENT_TARGET "BB_exit_vent_target"
/// Do we plan on going inside a vent? Boolean.
-#define BB_CURRENTLY_TARGETTING_VENT "BB_currently_targetting_vent"
+#define BB_CURRENTLY_TARGETING_VENT "BB_currently_targeting_vent"
/// How long should we wait before we try and enter a vent again?
#define BB_VENTCRAWL_COOLDOWN "BB_ventcrawl_cooldown"
/// The least amount of time (in seconds) we take to go through the vents.
diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm
index 8ac421f8b0a897..94296a25d9ed9f 100644
--- a/code/__DEFINES/antagonists.dm
+++ b/code/__DEFINES/antagonists.dm
@@ -80,7 +80,7 @@
#define PATH_VOID "Void Path"
#define PATH_BLADE "Blade Path"
#define PATH_COSMIC "Cosmic Path"
-#define PATH_KNOCK "Knock Path"
+#define PATH_LOCK "Lock Path"
/// Defines are used in /proc/has_living_heart() to report if the heretic has no heart period, no living heart, or has a living heart.
#define HERETIC_NO_HEART_ORGAN -1
diff --git a/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm b/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm
index dd794cbf0539f5..9a040f0c160a03 100644
--- a/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm
+++ b/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm
@@ -7,6 +7,8 @@
#define OPENTURF_DEFAULT_ATMOS GAS_O2 + "=22;" + GAS_N2 + "=82;TEMP=293.15"
/// the default low-pressure air mix used mostly for mining areas.
#define OPENTURF_LOW_PRESSURE GAS_O2 + "=14;" + GAS_N2 + "=30;TEMP=293.15"
+/// breathable air that causes disease
+#define OPENTURF_DIRTY_ATMOS GAS_MIASMA + "=15;" + GAS_O2 + "=88;TEMP=293.15"
/// -193,15°C telecommunications. also used for xenobiology slime killrooms
#define TCOMMS_ATMOS GAS_N2 + "=100;TEMP=80"
/// space
diff --git a/code/__DEFINES/botany.dm b/code/__DEFINES/botany.dm
index c2ec221b5e26e4..9607819c880728 100644
--- a/code/__DEFINES/botany.dm
+++ b/code/__DEFINES/botany.dm
@@ -84,3 +84,6 @@
/// A list of possible egg laying descriptions
#define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")
+
+/// Used as a baseline plant rarity for more uncommon plants, usually requiring mutation
+#define PLANT_MODERATELY_RARE 20
diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index b23df993432799..eae18813fae22c 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -33,6 +33,13 @@
#define COLOR_HALF_TRANSPARENT_BLACK "#0000007A"
#define COLOR_RED "#FF0000"
+#define COLOR_CHRISTMAS_RED "#D6001C"
+#define COLOR_OLD_GLORY_RED "#B22234"
+#define COLOR_FRENCH_RED "#EF4135"
+#define COLOR_ETHIOPIA_RED "#DA121A"
+#define COLOR_UNION_JACK_RED "#C8102E"
+#define COLOR_MEDIUM_DARK_RED "#CC0000"
+#define COLOR_PINK_RED "EF3340"
#define COLOR_SYNDIE_RED "#F10303"
#define COLOR_SYNDIE_RED_HEAD "#760500"
#define COLOR_MOSTLY_PURE_RED "#FF3300"
@@ -50,7 +57,10 @@
#define COLOR_YELLOW "#FFFF00"
#define COLOR_VIVID_YELLOW "#FBFF23"
+#define COLOR_TANGERINE_YELLOW "#FFCC00"
#define COLOR_VERY_SOFT_YELLOW "#FAE48E"
+#define COLOR_GOLD "#FFD700"
+#define COLOR_ETHIOPIA_YELLOW "#FCDD09"
#define COLOR_OLIVE "#808000"
#define COLOR_ASSISTANT_OLIVE "#828163"
@@ -63,6 +73,9 @@
#define COLOR_VERY_PALE_LIME_GREEN "#DDFFD3"
#define COLOR_VERY_DARK_LIME_GREEN "#003300"
#define COLOR_GREEN "#008000"
+#define COLOR_CHRISTMAS_GREEN "#00873E"
+#define COLOR_IRISH_GREEN "#169B62"
+#define COLOR_ETHIOPIA_GREEN "#078930"
#define COLOR_DARK_MODERATE_LIME_GREEN "#44964A"
#define COLOR_PAI_GREEN "#00FF88"
#define COLOR_PALE_GREEN "#20e28e"
@@ -72,6 +85,10 @@
#define COLOR_DARK_CYAN "#00A2FF"
#define COLOR_TEAL "#008080"
#define COLOR_BLUE "#0000FF"
+#define COLOR_OLD_GLORY_BLUE "#3C3B6E"
+#define COLOR_FRENCH_BLUE "#0055A4"
+#define COLOR_UNION_JACK_BLUE "#012169"
+#define COLOR_TRUE_BLUE "#0066CC"
#define COLOR_STRONG_BLUE "#1919c8"
#define COLOR_CENTCOM_BLUE "#134975"
#define COLOR_BRIGHT_BLUE "#2CB2E8"
@@ -101,6 +118,7 @@
#define COLOR_DARK_PURPLE "#551A8B"
#define COLOR_ORANGE "#FF9900"
+#define COLOR_IRISH_ORANGE "#FF883E"
#define COLOR_ENGINEERING_ORANGE "#FFA62B"
#define COLOR_MOSTLY_PURE_ORANGE "#ff8000"
#define COLOR_TAN_ORANGE "#FF7B00"
diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm
index 63c1f2fd7136e8..3335ac50fc4a9c 100644
--- a/code/__DEFINES/cooldowns.dm
+++ b/code/__DEFINES/cooldowns.dm
@@ -74,14 +74,18 @@
#define TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(end_cooldown), cd_source, cd_index), cd_time))
-#define TIMER_COOLDOWN_CHECK(cd_source, cd_index) LAZYACCESS(cd_source.cooldowns, cd_index)
+/// Checks if a timer based cooldown is NOT finished.
+#define TIMER_COOLDOWN_RUNNING(cd_source, cd_index) LAZYACCESS(cd_source.cooldowns, cd_index)
+
+/// Checks if a timer based cooldown is finished.
+#define TIMER_COOLDOWN_FINISHED(cd_source, cd_index) (!TIMER_COOLDOWN_RUNNING(cd_source, cd_index))
#define TIMER_COOLDOWN_END(cd_source, cd_index) LAZYREMOVE(cd_source.cooldowns, cd_index)
/*
* Stoppable timer cooldowns.
* Use indexes the same as the regular tiemr cooldowns.
- * They make use of the TIMER_COOLDOWN_CHECK() and TIMER_COOLDOWN_END() macros the same, just not the TIMER_COOLDOWN_START() one.
+ * They make use of the TIMER_COOLDOWN_RUNNING() and TIMER_COOLDOWN_END() macros the same, just not the TIMER_COOLDOWN_START() one.
* A bit more expensive than the regular timers, but can be reset before they end and the time left can be checked.
*/
@@ -89,7 +93,7 @@
#define S_TIMER_COOLDOWN_RESET(cd_source, cd_index) reset_cooldown(cd_source, cd_index)
-#define S_TIMER_COOLDOWN_TIMELEFT(cd_source, cd_index) (timeleft(TIMER_COOLDOWN_CHECK(cd_source, cd_index)))
+#define S_TIMER_COOLDOWN_TIMELEFT(cd_source, cd_index) (timeleft(TIMER_COOLDOWN_RUNNING(cd_source, cd_index)))
/*
diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm
index cd123e2e0b15e3..c3ec1aa8a84684 100644
--- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm
+++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm
@@ -125,5 +125,5 @@
#define COMSIG_ATOM_GERM_EXPOSED "atom_germ_exposed"
/// when atom is picked up from the floor or moved to an elevated structure: (datum/component/germ_exposure)
#define COMSIG_ATOM_GERM_UNEXPOSED "atom_germ_unexposed"
-/// when atom is washed
-#define COMSIG_ATOM_WASHED "atom_washed"
+/// signal sent to puzzle pieces by activator
+#define COMSIG_PUZZLE_COMPLETED "puzzle_completed"
diff --git a/code/__DEFINES/dcs/signals/signals_bitrunning.dm b/code/__DEFINES/dcs/signals/signals_bitrunning.dm
index e2731a05b34e73..3bca73db596b32 100644
--- a/code/__DEFINES/dcs/signals/signals_bitrunning.dm
+++ b/code/__DEFINES/dcs/signals/signals_bitrunning.dm
@@ -1,37 +1,50 @@
-/// from /obj/machinery/netpod/default_pry_open() : (mob/living/intruder)
-#define COMSIG_BITRUNNER_CROWBAR_ALERT "bitrunner_crowbar"
+/// from /atom/movable/screen/alert/bitrunning/qserver_domain_complete
+#define COMSIG_BITRUNNER_ALERT_SEVER "bitrunner_alert_sever"
/// from /obj/effect/bitrunning/loot_signal: (points)
#define COMSIG_BITRUNNER_GOAL_POINT "bitrunner_goal_point"
-/// from /obj/machinery/quantum_server/on_goal_turf_entered(): (atom/entered, reward_points)
-#define COMSIG_BITRUNNER_DOMAIN_COMPLETE "bitrunner_complete"
+// Netpods
+
+/// from /obj/machinery/netpod/sever_connection()
+#define COMSIG_BITRUNNER_NETPOD_SEVER "bitrunner_netpod_sever"
+
+/// from /obj/machinery/netpod/default_pry_open() : (mob/living/intruder)
+#define COMSIG_BITRUNNER_CROWBAR_ALERT "bitrunner_crowbar"
-/// from /obj/machinery/netpod/on_take_damage()
+/// from /obj/machinery/netpod/on_damage_taken()
#define COMSIG_BITRUNNER_NETPOD_INTEGRITY "bitrunner_netpod_damage"
-/// from /obj/structure/hololadder and complete alert
-#define COMSIG_BITRUNNER_SAFE_DISCONNECT "bitrunner_disconnect"
+/// from /obj/machinery/netpod/open_machine()
+#define COMSIG_BITRUNNER_NETPOD_OPENED "bitrunner_netpod_opened"
+
+// Server
+
+/// from /obj/machinery/quantum_server/on_goal_turf_entered(): (atom/entered, reward_points)
+#define COMSIG_BITRUNNER_DOMAIN_COMPLETE "bitrunner_complete"
+
+/// from /obj/machinery/quantum_server/generate_loot()
+#define COMSIG_BITRUNNER_CACHE_SEVER "bitrunner_cache_sever"
-/// from /obj/machinery/netpod/open_machine(), /obj/machinery/quantum_server, etc (obj/machinery/netpod)
-#define COMSIG_BITRUNNER_SEVER_AVATAR "bitrunner_sever"
+/// from /obj/machinery/quantum_server/sever_connection()
+#define COMSIG_BITRUNNER_QSRV_SEVER "bitrunner_qserver_sever"
/// from /obj/machinery/quantum_server/shutdown() : (mob/living)
#define COMSIG_BITRUNNER_SHUTDOWN_ALERT "bitrunner_shutdown"
-// Notifies the bitrunners
-/// from /datum/antagonist/cyber_police/proc/notify() :
+/// from /obj/machinery/quantum_server/notify_threat()
#define COMSIG_BITRUNNER_THREAT_CREATED "bitrunner_threat"
-// Informs the server to up the threat count
-/// from event spawns: (mob/living)
-#define COMSIG_BITRUNNER_SPAWN_GLITCH "bitrunner_spawn_glitch"
-
-/// from /obj/machinery/quantum_server/refreshParts(): (servo rating)
-#define COMSIG_BITRUNNER_SERVER_UPGRADED "bitrunner_server_upgraded"
-
/// from /obj/machinery/quantum_server/scrub_vdom()
#define COMSIG_BITRUNNER_DOMAIN_SCRUBBED "bitrunner_domain_scrubbed"
-/// from /obj/machinery/netpod/open_machine()
-#define COMSIG_BITRUNNER_NETPOD_OPENED "bitrunner_netpod_opened"
+/// from /obj/machienry/quantum_server/station_spawn()
+#define COMSIG_BITRUNNER_STATION_SPAWN "bitrunner_station_spawn"
+
+// Ladder
+/// from /obj/structure/hololadder/disconnect()
+#define COMSIG_BITRUNNER_LADDER_SEVER "bitrunner_ladder_sever"
+
+
+/// deprecated
+#define COMSIG_BITRUNNER_SPAWN_GLITCH "bitrunner_spawn_glitch"
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_guardian.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_guardian.dm
new file mode 100644
index 00000000000000..9f4819de79749f
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_guardian.dm
@@ -0,0 +1,7 @@
+/// Sent when a guardian is manifested
+#define COMSIG_GUARDIAN_MANIFESTED "guardian_manifested"
+/// Sent when a guardian is recalled
+#define COMSIG_GUARDIAN_RECALLED "guardian_recalled"
+
+/// Sent when an assassin guardian is forced to exit stealth
+#define COMSIG_GUARDIAN_ASSASSIN_REVEALED "guardian_assassin_revealed"
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
index ceebe7f304be7c..160849218d1d7e 100644
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
@@ -225,3 +225,8 @@
#define COMSIG_MOB_LOST_CHAIN_TAIL "living_detached_chain_tail"
/// Sent from a 'contract chain' button on a mob chain
#define COMSIG_MOB_CHAIN_CONTRACT "living_chain_contracted"
+
+/// Sent from a mob to their loc when starting to remove cuffs on itself
+#define COMSIG_MOB_REMOVING_CUFFS "living_removing_cuffs"
+/// Sent as a reply to above from any atom that wishs to stop self-cuff removal
+#define COMSIG_MOB_BLOCK_CUFF_REMOVAL (1<<0)
diff --git a/code/__DEFINES/exosuit_fab.dm b/code/__DEFINES/exosuit_fab.dm
index 706daf6e2dec29..4cc21f210d61dd 100644
--- a/code/__DEFINES/exosuit_fab.dm
+++ b/code/__DEFINES/exosuit_fab.dm
@@ -33,10 +33,12 @@
#define EXOSUIT_MODULE_RETICENCE (1<<9)
/// Module is compatible with Marauder models
#define EXOSUIT_MODULE_MARAUDER (1<<10)
+/// Module is compatible with Paddy models
+#define EXOSUIT_MODULE_PADDY (1<<11)
/// Module is compatible with "Working" Exosuit models - Ripley and Clarke
#define EXOSUIT_MODULE_WORKING (EXOSUIT_MODULE_RIPLEY | EXOSUIT_MODULE_CLARKE)
/// Module is compatible with "Combat" Exosuit models - Gygax, H.O.N.K, Durand and Phazon, or any Exosuit with an empty Concealed Weapon Bay
-#define EXOSUIT_MODULE_COMBAT (EXOSUIT_MODULE_GYGAX | EXOSUIT_MODULE_HONK | EXOSUIT_MODULE_DURAND | EXOSUIT_MODULE_PHAZON | EXOSUIT_MODULE_SAVANNAH | EXOSUIT_MODULE_RETICENCE | EXOSUIT_MODULE_MARAUDER | EXOSUIT_MODULE_CONCEALED_WEP_BAY)
+#define EXOSUIT_MODULE_COMBAT (EXOSUIT_MODULE_GYGAX | EXOSUIT_MODULE_HONK | EXOSUIT_MODULE_DURAND | EXOSUIT_MODULE_PHAZON | EXOSUIT_MODULE_SAVANNAH | EXOSUIT_MODULE_RETICENCE | EXOSUIT_MODULE_MARAUDER | EXOSUIT_MODULE_PADDY | EXOSUIT_MODULE_CONCEALED_WEP_BAY)
/// Module is compatible with "Medical" Exosuit modelsm - Odysseus
#define EXOSUIT_MODULE_MEDICAL EXOSUIT_MODULE_ODYSSEUS
diff --git a/code/__DEFINES/guardian_defines.dm b/code/__DEFINES/guardian_defines.dm
index e7961368feee09..ae2c3175b4a615 100644
--- a/code/__DEFINES/guardian_defines.dm
+++ b/code/__DEFINES/guardian_defines.dm
@@ -3,5 +3,28 @@
#define GUARDIAN_THEME_CARP "carp"
#define GUARDIAN_THEME_MINER "miner"
-#define GUARDIAN_COLOR_LAYER 1
-#define GUARDIAN_TOTAL_LAYERS 1
+#define GUARDIAN_MAGIC "magic"
+#define GUARDIAN_TECH "tech"
+
+#define GUARDIAN_ASSASSIN "assassin"
+#define GUARDIAN_CHARGER "charger"
+#define GUARDIAN_DEXTROUS "dextrous"
+#define GUARDIAN_EXPLOSIVE "explosive"
+#define GUARDIAN_GASEOUS "gaseous"
+#define GUARDIAN_GRAVITOKINETIC "gravitokinetic"
+#define GUARDIAN_LIGHTNING "lightning"
+#define GUARDIAN_PROTECTOR "protector"
+#define GUARDIAN_RANGED "ranged"
+#define GUARDIAN_STANDARD "standard"
+#define GUARDIAN_SUPPORT "support"
+
+/// List of all guardians currently extant
+GLOBAL_LIST_EMPTY(parasites)
+
+/// Assoc list of guardian theme singletons
+GLOBAL_LIST_INIT(guardian_themes, list(
+ GUARDIAN_THEME_TECH = new /datum/guardian_fluff/tech,
+ GUARDIAN_THEME_MAGIC = new /datum/guardian_fluff,
+ GUARDIAN_THEME_CARP = new /datum/guardian_fluff/carp,
+ GUARDIAN_THEME_MINER = new /datum/guardian_fluff/miner,
+))
diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm
index 55d25fd5e45b81..c00361184a50a3 100644
--- a/code/__DEFINES/icon_smoothing.dm
+++ b/code/__DEFINES/icon_smoothing.dm
@@ -132,12 +132,12 @@ DEFINE_BITFIELD(smoothing_junction, list(
#define SMOOTH_GROUP_TURF_OPEN_CLIFF S_TURF(60) ///turf/open/cliff
// SKYRAT EDIT ADDITION
-#define SMOOTH_GROUP_ELEVATED_PLASTEEL S_TURF(60)
-#define SMOOTH_GROUP_LOWERED_PLASTEEL S_TURF(61)
+#define SMOOTH_GROUP_ELEVATED_PLASTEEL S_TURF(61)
+#define SMOOTH_GROUP_LOWERED_PLASTEEL S_TURF(62)
-#define SMOOTH_GROUP_FISSURE S_TURF(62)
+#define SMOOTH_GROUP_FISSURE S_TURF(63)
-#define MAX_S_TURF 62 //Always match this value with the one above it.
+#define MAX_S_TURF 63 //Always match this value with the one above it.
//SKYRAT EDIT END
diff --git a/code/__DEFINES/interaction_flags.dm b/code/__DEFINES/interaction_flags.dm
index 0b4e9588729430..55732f2364bb1e 100644
--- a/code/__DEFINES/interaction_flags.dm
+++ b/code/__DEFINES/interaction_flags.dm
@@ -36,9 +36,8 @@
#define INTERACT_MACHINE_OPEN_SILICON (1<<4)
/// must be silicon to interact
#define INTERACT_MACHINE_REQUIRES_SILICON (1<<5)
-/// MACHINES HAVE THIS BY DEFAULT, SOMEONE SHOULD RUN THROUGH MACHINES AND REMOVE IT FROM THINGS LIKE LIGHT SWITCHES WHEN POSSIBLE!!--------------------------
/// This flag determines if a machine set_machine's the user when the user uses it, making updateUsrDialog make the user re-call interact() on it.
-/// THIS FLAG IS ON ALL MACHINES BY DEFAULT, NEEDS TO BE RE-EVALUATED LATER!!
+/// This is exclusively used for non-TGUI UIs, and its instances should be removed when moved to TGUI.
#define INTERACT_MACHINE_SET_MACHINE (1<<6)
/// the user must have vision to interact (blind people need not apply)
#define INTERACT_MACHINE_REQUIRES_SIGHT (1<<7)
diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm
index 5bf9fd6d8073ac..f164c78d422d57 100644
--- a/code/__DEFINES/inventory.dm
+++ b/code/__DEFINES/inventory.dm
@@ -194,8 +194,6 @@
//Allowed equipment lists for security vests.
GLOBAL_LIST_INIT(detective_vest_allowed, list(
- /obj/item/ammo_box,
- /obj/item/ammo_casing,
/obj/item/detective_scanner,
/obj/item/flashlight,
/obj/item/gun/ballistic,
@@ -216,8 +214,6 @@ GLOBAL_LIST_INIT(detective_vest_allowed, list(
))
GLOBAL_LIST_INIT(security_vest_allowed, list(
- /obj/item/ammo_box,
- /obj/item/ammo_casing,
/obj/item/flashlight,
/obj/item/gun/ballistic,
/obj/item/gun/energy,
@@ -231,12 +227,11 @@ GLOBAL_LIST_INIT(security_vest_allowed, list(
/obj/item/storage/belt/holster/nukie,
/obj/item/storage/belt/holster/energy,
/obj/item/gun/ballistic/shotgun/automatic/combat/compact,
+ /obj/item/pen/red/security,
/obj/item/gun/microfusion, //SKYRAT EDIT ADDITION
))
GLOBAL_LIST_INIT(security_wintercoat_allowed, list(
- /obj/item/ammo_box,
- /obj/item/ammo_casing,
/obj/item/gun/ballistic,
/obj/item/gun/energy,
/obj/item/melee/baton,
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index 7f408a6805ed64..e9963ca1f6a291 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -73,6 +73,8 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list(
#define iscliffturf(A) (istype(A, /turf/open/cliff))
+#define iswaterturf(A) (istype(A, /turf/open/water))
+
GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
/turf/closed/mineral,
/turf/open/misc/asteroid,
@@ -145,10 +147,14 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
// basic mobs
#define isbasicmob(A) (istype(A, /mob/living/basic))
+#define isconstruct(A) (istype(A, /mob/living/basic/construct))
+
#define iscow(A) (istype(A, /mob/living/basic/cow))
#define isgorilla(A) (istype(A, /mob/living/basic/gorilla))
+#define isshade(A) (istype(A, /mob/living/basic/shade))
+
#define is_simian(A) (isgorilla(A) || ismonkey(A))
/// returns whether or not the atom is either a basic mob OR simple animal
@@ -159,9 +165,6 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define ismining(A) (istype(A, /mob/living/simple_animal/hostile/asteroid) || istype(A, /mob/living/basic/mining))
-/// constructs, which are both simple and basic for now
-#define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct) || istype(A, /mob/living/basic/construct))
-
//Simple animals
#define isanimal(A) (istype(A, /mob/living/simple_animal))
@@ -169,8 +172,6 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define isbot(A) (istype(A, /mob/living/simple_animal/bot))
-#define isshade(A) (istype(A, /mob/living/simple_animal/shade))
-
#define ismouse(A) (istype(A, /mob/living/basic/mouse))
#define isslime(A) (istype(A, /mob/living/simple_animal/slime))
@@ -187,7 +188,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define isregalrat(A) (istype(A, /mob/living/basic/regal_rat))
-#define isguardian(A) (istype(A, /mob/living/simple_animal/hostile/guardian))
+#define isguardian(A) (istype(A, /mob/living/basic/guardian))
#define ismegafauna(A) (istype(A, /mob/living/simple_animal/hostile/megafauna))
diff --git a/code/__DEFINES/mecha.dm b/code/__DEFINES/mecha.dm
index db65b0b6ee8d3c..5a37f60aba6fb5 100644
--- a/code/__DEFINES/mecha.dm
+++ b/code/__DEFINES/mecha.dm
@@ -46,6 +46,7 @@
#define MECHA_SNOWFLAKE_ID_AIR_TANK "air_tank_snowflake"
#define MECHA_SNOWFLAKE_ID_WEAPON_BALLISTIC "ballistic_weapon_snowflake"
#define MECHA_SNOWFLAKE_ID_GENERATOR "generator_snowflake"
+#define MECHA_SNOWFLAKE_ID_CLAW "lawclaw_snowflake"
#define MECHA_AMMO_INCENDIARY "Incendiary bullet"
#define MECHA_AMMO_BUCKSHOT "Buckshot shell"
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 2912da06a9cfce..14f1deff7f346a 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -151,6 +151,7 @@
#define BODYPART_ID_DIGITIGRADE "digitigrade"
#define BODYPART_ID_LARVA "larva"
#define BODYPART_ID_PSYKER "psyker"
+#define BODYPART_ID_MEAT "meat"
//See: datum/species/var/digitigrade_customization
///The species does not have digitigrade legs in generation.
diff --git a/code/__DEFINES/observers.dm b/code/__DEFINES/observers.dm
new file mode 100644
index 00000000000000..0bacf223d8c026
--- /dev/null
+++ b/code/__DEFINES/observers.dm
@@ -0,0 +1,12 @@
+// Various flags for notify_ghosts ghost popups.
+/// Determines if the notification will not run if called during mapload.
+#define GHOST_NOTIFY_IGNORE_MAPLOAD (1<<0)
+/// Determines if the notification will flash the Byond window.
+#define GHOST_NOTIFY_FLASH_WINDOW (1<<1)
+/// Determines if the notification will notify suiciders.
+#define GHOST_NOTIFY_NOTIFY_SUICIDERS (1<<2)
+
+/// The default set of flags to be passed into a notify_ghosts call.
+#define NOTIFY_CATEGORY_DEFAULT (GHOST_NOTIFY_FLASH_WINDOW | GHOST_NOTIFY_IGNORE_MAPLOAD | GHOST_NOTIFY_NOTIFY_SUICIDERS)
+/// The default set of flags, without the flash_window flag.
+#define NOTIFY_CATEGORY_NOFLASH (NOTIFY_CATEGORY_DEFAULT & ~GHOST_NOTIFY_FLASH_WINDOW)
diff --git a/code/__DEFINES/projectiles.dm b/code/__DEFINES/projectiles.dm
index a82ac8422c5aef..58f25ac39f1126 100644
--- a/code/__DEFINES/projectiles.dm
+++ b/code/__DEFINES/projectiles.dm
@@ -52,6 +52,14 @@
#define CALIBER_ARROW "arrow"
/// The caliber used by the harpoon gun.
#define CALIBER_HARPOON "harpoon"
+/// The caliber used by the rebar crossbow.
+#define CALIBER_REBAR "sharpened iron rod"
+/// The caliber used by the rebar crossbow when forced to hold 2 rods.
+#define CALIBER_REBAR_FORCED "sharpened iron rod"
+/// The caliber used by the syndicate rebar crossbow.
+#define CALIBER_REBAR_SYNDIE "jagged iron rod"
+/// The caliber used by the syndicate rebar crossbow.
+#define CALIBER_REBAR_SYNDIE_NORMAL "sharpened iron rod"
/// The caliber used by the meat hook.
#define CALIBER_HOOK "hook"
/// The caliber used by the changeling tentacle mutation.
diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm
index 56b9c1cea2ca1b..cb2747d4f4b39a 100644
--- a/code/__DEFINES/reagents.dm
+++ b/code/__DEFINES/reagents.dm
@@ -58,8 +58,10 @@
#define ALLERGIC_REMOVAL_SKIP "Allergy"
//Used in holder.dm/equlibrium.dm to set values and volume limits
-///the minimum volume of reagents than can be operated on.
+///The minimum volume of reagents than can be operated on.
#define CHEMICAL_QUANTISATION_LEVEL 0.0001
+///Sanity check limit to clamp chems to sane amounts and prevent rounding errors during transfer.
+#define CHEMICAL_VOLUME_ROUNDING 0.01
///Default pH for reagents datum
#define CHEMICAL_NORMAL_PH 7.000
///Minimum pH attainable by a solution
diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm
index 52ee2c87f4ed36..c1427fcb67a060 100644
--- a/code/__DEFINES/research.dm
+++ b/code/__DEFINES/research.dm
@@ -55,7 +55,6 @@
#define CELL_LINE_TABLE_WALKING_MUSHROOM "cell_line_walking_mushroom_table"
#define CELL_LINE_TABLE_QUEEN_BEE "cell_line_bee_queen_table"
#define CELL_LINE_TABLE_BUTTERFLY "cell_line_butterfly_table"
-#define CELL_LINE_TABLE_LEAPER "cell_line_leaper_table"
#define CELL_LINE_TABLE_MEGA_ARACHNID "cell_line_table_mega_arachnid"
//! All cell virus types
diff --git a/code/__DEFINES/research/anomalies.dm b/code/__DEFINES/research/anomalies.dm
index 12a114439c7d90..9ab97ae5a8df88 100644
--- a/code/__DEFINES/research/anomalies.dm
+++ b/code/__DEFINES/research/anomalies.dm
@@ -44,6 +44,9 @@ GLOBAL_LIST_INIT(bioscrambler_organs_blacklist, typecacheof(list (
/obj/item/organ/internal/monster_core,
/obj/item/organ/internal/vocal_cords/colossus,
/obj/item/organ/internal/zombie_infection,
+ /obj/item/organ/internal/empowered_borer_egg, // SKYRAT EDIT ADDITION
+ /obj/item/organ/internal/eyes/robotic, // SKYRAT EDIT ADDITION
+ /obj/item/organ/internal/eyes/night_vision/cyber, // SKYRAT EDIT ADDITION
)))
/// List of body parts we can apply to people
diff --git a/code/__DEFINES/research/research_categories.dm b/code/__DEFINES/research/research_categories.dm
index e8d426fcfc5a7c..9ebdb44c8a58c5 100644
--- a/code/__DEFINES/research/research_categories.dm
+++ b/code/__DEFINES/research/research_categories.dm
@@ -126,6 +126,7 @@
#define RND_SUBCATEGORY_EXOSUIT_BOARDS_SAVANNAH_IVANOV "/Savannah-Ivanov"
#define RND_CATEGORY_MECHFAB_RIPLEY "/Ripley"
+#define RND_CATEGORY_MECHFAB_PADDY "/Paddy"
#define RND_CATEGORY_MECHFAB_ODYSSEUS "/Odysseus"
#define RND_CATEGORY_MECHFAB_GYGAX "/Gygax"
#define RND_CATEGORY_MECHFAB_DURAND "/Durand"
diff --git a/code/__DEFINES/sight.dm b/code/__DEFINES/sight.dm
index ae5f4e48352c25..645e009413593c 100644
--- a/code/__DEFINES/sight.dm
+++ b/code/__DEFINES/sight.dm
@@ -64,7 +64,8 @@
// INVISIBILITY PRIORITIES
#define INVISIBILITY_PRIORITY_ADMIN 100
-#define INVISIBILITY_PRIORITY_BASIC_ANTI_INVISIBILITY 1
+#define INVISIBILITY_PRIORITY_TURRET_COVER 20
+#define INVISIBILITY_PRIORITY_BASIC_ANTI_INVISIBILITY 10
#define INVISIBILITY_PRIORITY_NONE 0
//------------------------
diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm
index 361c4d41b81d38..ab8ff969e307fc 100644
--- a/code/__DEFINES/span.dm
+++ b/code/__DEFINES/span.dm
@@ -23,6 +23,7 @@
#define span_bold(str) ("" + str + "")
#define span_boldannounce(str) ("" + str + "")
#define span_bolddanger(str) ("" + str + "")
+#define span_bolditalic(str) ("" + str + "")
#define span_boldnicegreen(str) ("" + str + "")
#define span_boldnotice(str) ("" + str + "")
#define span_boldwarning(str) ("" + str + "")
@@ -115,6 +116,7 @@
#define span_smallnoticeital(str) ("" + str + "")
#define span_spiderbroodmother(str) ("" + str + "")
#define span_spiderscout(str) ("" + str + "")
+#define span_spiderbreacher(str) ("" + str + "")
#define span_suicide(str) ("" + str + "")
#define span_suppradio(str) ("" + str + "")
#define span_syndradio(str) ("" + str + "")
diff --git a/code/__DEFINES/stack_trace.dm b/code/__DEFINES/stack_trace.dm
index 969eaecc707038..4911b4a0d571e9 100644
--- a/code/__DEFINES/stack_trace.dm
+++ b/code/__DEFINES/stack_trace.dm
@@ -1,2 +1,4 @@
/// gives us the stack trace from CRASH() without ending the current proc.
#define stack_trace(message) _stack_trace(message, __FILE__, __LINE__)
+
+#define WORKAROUND_IDENTIFIER "%//%"
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index 2f452345ef9eab..52890a428e64c6 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -171,6 +171,7 @@
#define INIT_ORDER_LANGUAGE 25
#define INIT_ORDER_MACHINES 20
#define INIT_ORDER_SKILLS 15
+#define INIT_ORDER_QUEUELINKS 10
#define INIT_ORDER_TIMER 1
#define INIT_ORDER_DEFAULT 0
#define INIT_ORDER_AIR -1
diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm
index 6187a67825a471..0cc106ec9cf2fc 100644
--- a/code/__DEFINES/tgs.dm
+++ b/code/__DEFINES/tgs.dm
@@ -1,6 +1,6 @@
// tgstation-server DMAPI
-#define TGS_DMAPI_VERSION "6.5.3"
+#define TGS_DMAPI_VERSION "6.6.2"
// All functions and datums outside this document are subject to change with any version and should not be relied on.
@@ -129,6 +129,13 @@
/// DreamDaemon Ultrasafe security level.
#define TGS_SECURITY_ULTRASAFE 2
+/// DreamDaemon public visibility level.
+#define TGS_VISIBILITY_PUBLIC 0
+/// DreamDaemon private visibility level.
+#define TGS_VISIBILITY_PRIVATE 1
+/// DreamDaemon invisible visibility level.
+#define TGS_VISIBILITY_INVISIBLE 2
+
//REQUIRED HOOKS
/**
@@ -458,6 +465,10 @@
/world/proc/TgsSecurityLevel()
return
+/// Returns the current BYOND visibility level as a TGS_VISIBILITY_ define if TGS is present, null otherwise. Requires TGS to be using interop API version 5 or higher otherwise the string "___unimplemented" wil be returned. This function may sleep if the call to [/world/proc/TgsNew] is sleeping!
+/world/proc/TgsVisibility()
+ return
+
/// Returns a list of active [/datum/tgs_revision_information/test_merge]s if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping!
/world/proc/TgsTestMerges()
return
diff --git a/code/__DEFINES/trader.dm b/code/__DEFINES/trader.dm
new file mode 100644
index 00000000000000..aae6da26499838
--- /dev/null
+++ b/code/__DEFINES/trader.dm
@@ -0,0 +1,16 @@
+#define ITEM_REJECTED_PHRASE "ITEM_REJECTED_PHRASE"
+#define ITEM_SELLING_CANCELED_PHRASE "ITEM_SELLING_CANCELED_PHRASE"
+#define ITEM_SELLING_ACCEPTED_PHRASE "ITEM_SELLING_ACCEPTED_PHRASE"
+#define INTERESTED_PHRASE "INTERESTED_PHRASE"
+#define BUY_PHRASE "BUY_PHRASE"
+#define NO_CASH_PHRASE "NO_CASH_PHRASE"
+#define NO_STOCK_PHRASE "NO_STOCK_PHRASE"
+#define NOT_WILLING_TO_BUY_PHRASE "NOT_WILLING_TO_BUY_PHRASE"
+#define ITEM_IS_WORTHLESS_PHRASE "ITEM_IS_WORTHLESS_PHRASE"
+#define TRADER_HAS_ENOUGH_ITEM_PHRASE "TRADER_HAS_ENOUGH_ITEM_PHRASE"
+#define TRADER_LORE_PHRASE "TRADER_LORE_PHRASE"
+#define TRADER_BATTLE_START_PHRASE "TRADER_AGGRO_PHRASE"
+#define TRADER_BATTLE_END_PHRASE "TRADER_DEAGGRO_PHRASE"
+#define TRADER_NOT_BUYING_ANYTHING "TRADER_NOT_BUYING_ANYTHING"
+#define TRADER_NOT_SELLING_ANYTHING "TRADER_NOT_SELLING_ANYTHING"
+#define TRADER_SHOP_OPENING_PHRASE "TRADER_SHOP_OPENING_PHRASE"
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 5a15c562b453a3..413c116d21cf74 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -496,8 +496,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_BLOODSHOT_EYES "bloodshot_eyes"
/// This mob should never close UI even if it doesn't have a client
#define TRAIT_PRESERVE_UI_WITHOUT_CLIENT "preserve_ui_without_client"
-/// Lets the mob use flight potions
-#define TRAIT_CAN_USE_FLIGHT_POTION "can_use_flight_potion"
/// This mob overrides certian SSlag_switch measures with this special trait
#define TRAIT_BYPASS_MEASURES "bypass_lagswitch_measures"
/// Someone can safely be attacked with honorbound with ONLY a combat mode check, the trait is assuring holding a weapon and hitting won't hurt them..
@@ -665,7 +663,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_TENTACLE_IMMUNE "tentacle_immune"
/// Currently under the effect of overwatch
#define TRAIT_OVERWATCHED "watcher_overwatched"
-/// Cannot be targetted by watcher overwatch
+/// Cannot be targeted by watcher overwatch
#define TRAIT_OVERWATCH_IMMUNE "overwatch_immune"
//non-mob traits
@@ -869,6 +867,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// Trait applied when an integrated circuit/module becomes undupable
#define TRAIT_CIRCUIT_UNDUPABLE "circuit_undupable"
+/// Trait applied when an integrated circuit opens a UI on a player (see list pick component)
+#define TRAIT_CIRCUIT_UI_OPEN "circuit_ui_open"
+
/// Hearing trait that is from the hearing component
#define CIRCUIT_HEAR_TRAIT "circuit_hear"
@@ -1335,9 +1336,15 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
///Trait given by /datum/element/relay_attacker
#define TRAIT_RELAYING_ATTACKER "relaying_attacker"
+///Trait given to limb by /mob/living/basic/living_limb_flesh
+#define TRAIT_IGNORED_BY_LIVING_FLESH "livingflesh_ignored"
+
/// Trait given while using /datum/action/cooldown/mob_cooldown/wing_buffet
#define TRAIT_WING_BUFFET "wing_buffet"
/// Trait given while tired after using /datum/action/cooldown/mob_cooldown/wing_buffet
#define TRAIT_WING_BUFFET_TIRED "wing_buffet_tired"
/// Trait given to a dragon who fails to defend their rifts
#define TRAIT_RIFT_FAILURE "fail_dragon_loser"
+
+/// Trait given to mobs that we do not want to mindswap
+#define TRAIT_NO_MINDSWAP "no_mindswap"
diff --git a/code/__DEFINES/vehicles.dm b/code/__DEFINES/vehicles.dm
index 9aac19be3c1087..d210a07dde4dd5 100644
--- a/code/__DEFINES/vehicles.dm
+++ b/code/__DEFINES/vehicles.dm
@@ -26,6 +26,8 @@
#define UNBUCKLE_DISABLED_RIDER (1<<3)
// For fireman carries, the carrying human needs an arm
#define CARRIER_NEEDS_ARM (1<<4)
+// This rider must be our friend
+#define JUST_FRIEND_RIDERS (1<<5)
//car_traits flags
///Will this car kidnap people by ramming into them?
diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm
index 1cc9025b821646..f6cb654b1d5493 100644
--- a/code/__DEFINES/vv.dm
+++ b/code/__DEFINES/vv.dm
@@ -57,7 +57,7 @@
// VV HREF KEYS
#define VV_HK_TARGET "target"
-#define VV_HK_VARNAME "targetvar" //name or index of var for 1 variable targetting hrefs.
+#define VV_HK_VARNAME "targetvar" //name or index of var for 1 variable targeting hrefs.
// vv_do_list() keys
#define VV_HK_LIST_ADD "listadd"
diff --git a/code/__DEFINES/wiremod.dm b/code/__DEFINES/wiremod.dm
index 14a03d780ce10b..421650e3bf1e79 100644
--- a/code/__DEFINES/wiremod.dm
+++ b/code/__DEFINES/wiremod.dm
@@ -45,6 +45,8 @@
#define PORT_TYPE_ATOM "entity"
/// Datum datatype
#define PORT_TYPE_DATUM "datum"
+/// User datatype
+#define PORT_TYPE_USER "user"
/// The maximum range between a port and an atom
diff --git a/code/__DEFINES/wounds.dm b/code/__DEFINES/wounds.dm
index 7aec41d7b5cb33..79c188cd4817c5 100644
--- a/code/__DEFINES/wounds.dm
+++ b/code/__DEFINES/wounds.dm
@@ -90,7 +90,7 @@ GLOBAL_LIST_INIT(wound_severities_chronological, list(
// "Where" a specific biostate is within a given limb
// Interior is hard shit, the last line, shit like bones
-// Exterior is soft shit, targetted by slashes and pierces (usually), protects exterior
+// Exterior is soft shit, targeted by slashes and pierces (usually), protects exterior
// A limb needs both mangled interior and exterior to be dismembered, but slash/pierce must mangle exterior to attack the interior
// Not having exterior/interior counts as mangled exterior/interior for the purposes of dismemberment
/// The given biostate is on the "interior" of the limb - hard shit, protected by exterior
diff --git a/code/__DEFINES/~skyrat_defines/barsigns.dm b/code/__DEFINES/~skyrat_defines/barsigns.dm
new file mode 100644
index 00000000000000..8a6fe2652bb677
--- /dev/null
+++ b/code/__DEFINES/~skyrat_defines/barsigns.dm
@@ -0,0 +1,2 @@
+#define SKYRAT_BARSIGN_FILE 'modular_skyrat/modules/barsigns/icons/barsigns.dmi'
+#define SKYRAT_LARGE_BARSIGN_FILE 'modular_skyrat/modules/barsigns/icons/barsigns96x96.dmi'
diff --git a/code/__DEFINES/~skyrat_defines/colors.dm b/code/__DEFINES/~skyrat_defines/colors.dm
index 9c5e17b06a5b5c..4f00b0651b1b1f 100644
--- a/code/__DEFINES/~skyrat_defines/colors.dm
+++ b/code/__DEFINES/~skyrat_defines/colors.dm
@@ -1,3 +1,5 @@
#define LIGHT_COLOR_CLOCKWORK "#BE8700"
#define COLOR_SOLFED_GOLD "#FFD900"
#define LIGHT_COLOR_YELLOW "#E1E17D"
+#define COLOR_NRI_POLICE_BLUE "#1f3347"
+#define COLOR_NRI_POLICE_SILVER "#c0c0c0"
diff --git a/code/__DEFINES/~tannhauser_defines/barsigns.dm b/code/__DEFINES/~tannhauser_defines/barsigns.dm
new file mode 100644
index 00000000000000..6df6490f950bd6
--- /dev/null
+++ b/code/__DEFINES/~tannhauser_defines/barsigns.dm
@@ -0,0 +1 @@
+#define TAN_BAR_SIGNS 'modular_tannhauser/_skyrat_override/modules/barsigns/icons/tanbars.dmi'
diff --git a/code/__DEFINES/~tannhauser_defines/jobs.dm b/code/__DEFINES/~tannhauser_defines/jobs.dm
deleted file mode 100644
index 05ec0d1af469c9..00000000000000
--- a/code/__DEFINES/~tannhauser_defines/jobs.dm
+++ /dev/null
@@ -1 +0,0 @@
-#define FLAVOR_TEXT_CHAR_REQUIREMENT 100
diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index 32e4135b96515b..4ab974dd4a8a9a 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -898,6 +898,13 @@
UNTYPED_LIST_ADD(keys, key)
return keys
+///Gets the total amount of everything in the associative list.
+/proc/assoc_value_sum(list/input)
+ var/list/keys = list()
+ for(var/key in input)
+ keys += input[key]
+ return keys
+
///compare two lists, returns TRUE if they are the same
/proc/compare_list(list/l,list/d)
if(!islist(l) || !islist(d))
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index 616469ecabfbc0..9dbfa2e3e2bdd3 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -119,7 +119,7 @@
/obj/item/stack/sheet/sinew = GLOB.sinew_recipes,
/obj/item/stack/sheet/animalhide/carp = GLOB.carp_recipes,
/obj/item/stack/sheet/mineral/sandstone = GLOB.sandstone_recipes,
- /obj/item/stack/sheet/mineral/clay = GLOB.clay_recipes,
+ /obj/item/stack/sheet/mineral/clay = GLOB.clay_recipes, // SKYRAT EDIT ADDITION
/obj/item/stack/sheet/mineral/sandbags = GLOB.sandbag_recipes,
/obj/item/stack/sheet/mineral/diamond = GLOB.diamond_recipes,
/obj/item/stack/sheet/mineral/uranium = GLOB.uranium_recipes,
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index c2b2f1e33b23fa..4a60dd23c6020b 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -1481,3 +1481,27 @@ GLOBAL_LIST_EMPTY(transformation_animation_objects)
var/icon/my_icon = icon(icon_path)
GLOB.icon_dimensions[icon_path] = list("width" = my_icon.Width(), "height" = my_icon.Height())
return GLOB.icon_dimensions[icon_path]
+
+/// Fikou's fix for making toast alerts look nice - resets offsets, transforms to fit
+/proc/get_small_overlay(atom/source)
+ var/mutable_appearance/alert_overlay = new(source)
+ alert_overlay.pixel_x = 0
+ alert_overlay.pixel_y = 0
+
+ var/scale = 1
+ var/list/icon_dimensions = get_icon_dimensions(source.icon)
+ var/width = icon_dimensions["width"]
+ var/height = icon_dimensions["height"]
+
+ if(width > world.icon_size)
+ alert_overlay.pixel_x = -(world.icon_size / 2) * ((width - world.icon_size) / world.icon_size)
+ if(height > world.icon_size)
+ alert_overlay.pixel_y = -(world.icon_size / 2) * ((height - world.icon_size) / world.icon_size)
+ if(width > world.icon_size || height > world.icon_size)
+ if(width >= height)
+ scale = world.icon_size / width
+ else
+ scale = world.icon_size / height
+ alert_overlay.transform = alert_overlay.transform.Scale(scale)
+
+ return alert_overlay
diff --git a/code/__HELPERS/priority_announce.dm b/code/__HELPERS/priority_announce.dm
index a7d47fb8f09225..72d6aa0597ce11 100644
--- a/code/__HELPERS/priority_announce.dm
+++ b/code/__HELPERS/priority_announce.dm
@@ -87,16 +87,21 @@
if(isnull(sender_override))
if(length(title) > 0)
- GLOB.news_network.submit_article(title + "
" + text, "Central Command", "Station Announcements", null)
+ GLOB.news_network.submit_article(title + "
" + text, "[command_name()]", "Station Announcements", null)
else
- GLOB.news_network.submit_article(text, "Central Command Update", "Station Announcements", null)
+ GLOB.news_network.submit_article(text, "[command_name()] Update", "Station Announcements", null)
/proc/print_command_report(text = "", title = null, announce=TRUE)
if(!title)
title = "Classified [command_name()] Update"
if(announce)
- priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", SSstation.announcer.get_rand_report_sound(), has_important_message = TRUE)
+ priority_announce(
+ text = "A report has been downloaded and printed out at all communications consoles.",
+ title = "Incoming Classified Message",
+ sound = SSstation.announcer.get_rand_report_sound(),
+ has_important_message = TRUE,
+ )
var/datum/comm_message/message = new
message.title = title
diff --git a/code/__HELPERS/stack_trace.dm b/code/__HELPERS/stack_trace.dm
index 5c220d7a74a46e..bb2d78de110805 100644
--- a/code/__HELPERS/stack_trace.dm
+++ b/code/__HELPERS/stack_trace.dm
@@ -1,4 +1,4 @@
/// gives us the stack trace from CRASH() without ending the current proc.
/// Do not call directly, use the [stack_trace] macro instead.
/proc/_stack_trace(message, file, line)
- CRASH("[message] ([file]:[line])")
+ CRASH("[message][WORKAROUND_IDENTIFIER][json_encode(list(file, line))][WORKAROUND_IDENTIFIER]")
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index 135fb00dea10a2..1e775dd49ae40f 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -6,16 +6,11 @@ GLOBAL_LIST_EMPTY(deadmins) //all ckeys who have used the de-admin verb.
GLOBAL_LIST_EMPTY(directory) //all ckeys with associated client
GLOBAL_LIST_EMPTY(stealthminID) //reference list with IDs that store ckeys, for stealthmins
-GLOBAL_LIST_INIT(dangerous_turfs, typecacheof(list(
- /turf/open/lava,
- /turf/open/chasm,
- /turf/open/space,
- /turf/open/openspace)))
-
/// List of types of abstract mob which shouldn't usually exist in the world on its own if we're spawning random mobs
GLOBAL_LIST_INIT(abstract_mob_types, list(
/mob/living/basic/blob_minion,
/mob/living/basic/construct,
+ /mob/living/basic/guardian,
/mob/living/basic/heretic_summon,
/mob/living/basic/mining,
/mob/living/basic/pet,
@@ -32,8 +27,6 @@ GLOBAL_LIST_INIT(abstract_mob_types, list(
/mob/living/simple_animal/bot,
/mob/living/simple_animal/hostile/asteroid/elite,
/mob/living/simple_animal/hostile/asteroid,
- /mob/living/simple_animal/hostile/construct,
- /mob/living/simple_animal/hostile/guardian,
/mob/living/simple_animal/hostile/megafauna,
/mob/living/simple_animal/hostile/mimic, // Cannot exist if spawned without being passed an item reference
/mob/living/simple_animal/hostile/retaliate,
diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm
index b2662b5e804a6f..52af61db88ac94 100644
--- a/code/_globalvars/lists/names.dm
+++ b/code/_globalvars/lists/names.dm
@@ -25,6 +25,9 @@ GLOBAL_LIST_INIT(megacarp_first_names, world.file2list("strings/names/megacarp1.
GLOBAL_LIST_INIT(megacarp_last_names, world.file2list("strings/names/megacarp2.txt"))
GLOBAL_LIST_INIT(cyberauth_names, world.file2list("strings/names/cyberauth.txt"))
GLOBAL_LIST_INIT(syndicate_monkey_names, world.file2list("strings/names/syndicate_monkey.txt"))
+GLOBAL_LIST_INIT(guardian_first_names, world.file2list("strings/names/guardian_descriptions.txt"))
+GLOBAL_LIST_INIT(guardian_tech_surnames, world.file2list("strings/names/guardian_gamepieces.txt"))
+GLOBAL_LIST_INIT(guardian_fantasy_surnames, world.file2list("strings/names/guardian_tarot.txt"))
GLOBAL_LIST_INIT(verbs, world.file2list("strings/names/verbs.txt"))
GLOBAL_LIST_INIT(ing_verbs, world.file2list("strings/names/ing_verbs.txt"))
diff --git a/code/_globalvars/lists/reagents.dm b/code/_globalvars/lists/reagents.dm
index 68d63d97934eaf..47b1008aa8aa6d 100644
--- a/code/_globalvars/lists/reagents.dm
+++ b/code/_globalvars/lists/reagents.dm
@@ -63,8 +63,6 @@ GLOBAL_LIST_INIT(blacklisted_metalgen_types, typecacheof(list(
/turf/closed/indestructible, //indestructible turfs should be indestructible, metalgen transmutation to plasma allows them to be destroyed
/turf/open/indestructible
)))
-/// Names of human readable reagents used by plumbing UI.
-GLOBAL_LIST_INIT(chemical_name_list, init_chemical_name_list())
/// Map of reagent names to its datum path
GLOBAL_LIST_INIT(name2reagent, build_name2reagentlist())
@@ -81,16 +79,6 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagentlist())
return reagent_list
-/// Creates an list which is indexed by reagent name . used by plumbing reaction chamber and chemical filter UI
-/proc/init_chemical_name_list()
- var/list/name_list = list()
-
- for(var/X in GLOB.chemical_reagents_list)
- var/datum/reagent/Reagent = GLOB.chemical_reagents_list[X]
- name_list += Reagent.name
-
- return sort_list(name_list)
-
/**
* Chemical Reactions - Initialises all /datum/chemical_reaction into a list
* It is filtered into multiple lists within a list.
@@ -196,7 +184,19 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagentlist())
/// Builds map of reagent name to its datum path
/proc/build_name2reagentlist()
. = list()
- for (var/datum/reagent/R as anything in subtypesof(/datum/reagent))
- var/name = initial(R.name)
+
+ //build map with keys stored seperatly
+ var/list/name_to_reagent = list()
+ var/list/only_names = list()
+ for (var/datum/reagent/reagent as anything in GLOB.chemical_reagents_list)
+ var/name = initial(reagent.name)
if (length(name))
- .[ckey(name)] = R
+ name_to_reagent[name] = reagent
+ only_names += name
+
+ //sort keys
+ only_names = sort_list(only_names)
+
+ //build map with sorted keys
+ for(var/name as anything in only_names)
+ .[name] = name_to_reagent[name]
diff --git a/code/_globalvars/lists/xenobiology.dm b/code/_globalvars/lists/xenobiology.dm
index 1e247a6279d39a..f641e9d5eccdef 100644
--- a/code/_globalvars/lists/xenobiology.dm
+++ b/code/_globalvars/lists/xenobiology.dm
@@ -73,11 +73,9 @@ GLOBAL_LIST_INIT_TYPED(cell_line_tables, /list, list(
CELL_LINE_TABLE_WALKING_MUSHROOM = list(/datum/micro_organism/cell_line/walking_mushroom = 1),
CELL_LINE_TABLE_QUEEN_BEE = list(/datum/micro_organism/cell_line/queen_bee = 1),
CELL_LINE_TABLE_BUTTERFLY = list(/datum/micro_organism/cell_line/butterfly = 1),
- CELL_LINE_TABLE_LEAPER = list(/datum/micro_organism/cell_line/leaper = 1),
CELL_LINE_TABLE_MEGA_ARACHNID = list(/datum/micro_organism/cell_line/mega_arachnid = 1),
CELL_LINE_TABLE_ALGAE = list(
/datum/micro_organism/cell_line/frog = 2,
- /datum/micro_organism/cell_line/leaper = 2,
/datum/micro_organism/cell_line/mega_arachnid = 1,
/datum/micro_organism/cell_line/queen_bee = 1,
/datum/micro_organism/cell_line/butterfly = 1,
diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm
index f8ea532914bcc3..5bb8b4bf31498d 100644
--- a/code/_globalvars/phobias.dm
+++ b/code/_globalvars/phobias.dm
@@ -57,7 +57,7 @@ GLOBAL_LIST_INIT(phobia_mobs, list(
/mob/living/carbon/alien,
/mob/living/simple_animal/slime,
)),
- "anime" = typecacheof(list(/mob/living/simple_animal/hostile/guardian)),
+ "anime" = typecacheof(list(/mob/living/basic/guardian)),
"birds" = typecacheof(list(
/mob/living/basic/chick,
/mob/living/basic/chicken,
@@ -96,14 +96,13 @@ GLOBAL_LIST_INIT(phobia_mobs, list(
/mob/living/basic/faithless,
/mob/living/basic/ghost,
/mob/living/basic/heretic_summon,
- /mob/living/basic/skeleton,
/mob/living/basic/revenant,
+ /mob/living/basic/shade,
+ /mob/living/basic/skeleton,
+ /mob/living/basic/wizard,
/mob/living/simple_animal/bot/mulebot/paranormal,
- /mob/living/simple_animal/hostile/construct,
/mob/living/simple_animal/hostile/dark_wizard,
- /mob/living/simple_animal/hostile/wizard,
/mob/living/simple_animal/hostile/zombie,
- /mob/living/simple_animal/shade,
)),
))
@@ -368,7 +367,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/effect/forcefield/wizard/heretic,
/obj/effect/heretic_influence,
/obj/effect/heretic_rune,
- /obj/effect/knock_portal,
+ /obj/effect/lock_portal,
/obj/effect/visible_heretic_influence,
/obj/item/ammo_box/strilka310/lionhunter,
/obj/item/ammo_casing/strilka310/lionhunter,
@@ -380,7 +379,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/item/codex_cicatrix,
/obj/item/coin/eldritch,
/obj/item/gun/ballistic/rifle/lionhunter,
- /obj/item/heretic_lintel,
+ /obj/item/heretic_labyrinth_handbook,
/obj/item/melee/rune_carver,
/obj/item/melee/sickly_blade,
/obj/item/melee/touch_attack/mansus_fist,
@@ -389,7 +388,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/item/toy/reality_pierce,
/obj/projectile/curse_hand,
/obj/structure/destructible/eldritch_crucible,
- /obj/structure/knock_tear,
+ /obj/structure/lock_tear,
)),
"insects" = typecacheof(list(
/obj/item/clothing/mask/animal/small/bee,
diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm
index 8fd711279a5e24..4e83823b4d9e55 100644
--- a/code/_globalvars/traits.dm
+++ b/code/_globalvars/traits.dm
@@ -85,6 +85,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_BLOOD_DEFICIENCY" = TRAIT_BLOOD_DEFICIENCY,
"TRAIT_JOLLY" = TRAIT_JOLLY,
"TRAIT_NO_GLIDE" = TRAIT_NO_GLIDE,
+ "TRAIT_NO_FLOATING_ANIM" = TRAIT_NO_FLOATING_ANIM,
"TRAIT_NOCRITDAMAGE" = TRAIT_NOCRITDAMAGE,
"TRAIT_NO_SLIP_WATER" = TRAIT_NO_SLIP_WATER,
"TRAIT_NO_SLIP_ICE" = TRAIT_NO_SLIP_ICE,
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 4275c78dbe43eb..3e6790aee6b7d1 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -502,7 +502,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
alerttooltipstyle = "cult"
var/static/image/narnar
var/angle = 0
- var/mob/living/simple_animal/hostile/construct/Cviewer = null
+ var/mob/living/basic/construct/Cviewer
/atom/movable/screen/alert/bloodsense/Initialize(mapload, datum/hud/hud_owner)
. = ..()
@@ -607,19 +607,13 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
//GUARDIANS
-/atom/movable/screen/alert/cancharge
- name = "Charge Ready"
- desc = "You are ready to charge at a location!"
- icon_state = "guardian_charge"
- alerttooltipstyle = "parasite"
-
/atom/movable/screen/alert/canstealth
name = "Stealth Ready"
desc = "You are ready to enter stealth!"
icon_state = "guardian_canstealth"
alerttooltipstyle = "parasite"
-/atom/movable/screen/alert/instealth
+/atom/movable/screen/alert/status_effect/instealth
name = "In Stealth"
desc = "You are in stealth and your next attack will do bonus damage!"
icon_state = "guardian_instealth"
diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm
index f9963c1fa3a915..ba1d8f4565e64f 100644
--- a/code/_onclick/hud/guardian.dm
+++ b/code/_onclick/hud/guardian.dm
@@ -1,7 +1,7 @@
/datum/hud/guardian
ui_style = 'icons/hud/guardian.dmi'
-/datum/hud/guardian/New(mob/living/simple_animal/hostile/guardian/owner)
+/datum/hud/guardian/New(mob/living/basic/guardian/owner)
..()
var/atom/movable/screen/using
@@ -34,10 +34,10 @@
using.screen_loc = ui_back
static_inventory += using
-/datum/hud/dextrous/guardian/New(mob/living/simple_animal/hostile/guardian/owner) //for a dextrous guardian
+/datum/hud/dextrous/guardian/New(mob/living/basic/guardian/owner) //for a dextrous guardian
..()
var/atom/movable/screen/using
- if(istype(owner, /mob/living/simple_animal/hostile/guardian/dextrous))
+ if(istype(owner, /mob/living/basic/guardian/dextrous))
var/atom/movable/screen/inventory/inv_box
inv_box = new /atom/movable/screen/inventory(null, src)
@@ -86,8 +86,8 @@
/datum/hud/dextrous/guardian/persistent_inventory_update()
if(!mymob)
return
- if(istype(mymob, /mob/living/simple_animal/hostile/guardian/dextrous))
- var/mob/living/simple_animal/hostile/guardian/dextrous/dex_guardian = mymob
+ if(istype(mymob, /mob/living/basic/guardian/dextrous))
+ var/mob/living/basic/guardian/dextrous/dex_guardian = mymob
if(hud_shown)
if(dex_guardian.internal_storage)
@@ -109,7 +109,7 @@
/atom/movable/screen/guardian/manifest/Click()
if(isguardian(usr))
- var/mob/living/simple_animal/hostile/guardian/user = usr
+ var/mob/living/basic/guardian/user = usr
user.manifest()
@@ -120,7 +120,7 @@
/atom/movable/screen/guardian/recall/Click()
if(isguardian(usr))
- var/mob/living/simple_animal/hostile/guardian/user = usr
+ var/mob/living/basic/guardian/user = usr
user.recall()
/atom/movable/screen/guardian/toggle_mode
@@ -130,7 +130,7 @@
/atom/movable/screen/guardian/toggle_mode/Click()
if(isguardian(usr))
- var/mob/living/simple_animal/hostile/guardian/user = usr
+ var/mob/living/basic/guardian/user = usr
user.toggle_modes()
/atom/movable/screen/guardian/toggle_mode/inactive
@@ -153,7 +153,7 @@
/atom/movable/screen/guardian/communicate/Click()
if(isguardian(usr))
- var/mob/living/simple_animal/hostile/guardian/user = usr
+ var/mob/living/basic/guardian/user = usr
user.communicate()
@@ -164,5 +164,5 @@
/atom/movable/screen/guardian/toggle_light/Click()
if(isguardian(usr))
- var/mob/living/simple_animal/hostile/guardian/user = usr
+ var/mob/living/basic/guardian/user = usr
user.toggle_light()
diff --git a/code/_onclick/hud/ooze.dm b/code/_onclick/hud/ooze.dm
index 1b466f7ff97969..0962b58126af9f 100644
--- a/code/_onclick/hud/ooze.dm
+++ b/code/_onclick/hud/ooze.dm
@@ -1,4 +1,4 @@
-///Hud type with targetting dol and a nutrition bar
+///Hud type with targeting dol and a nutrition bar
/datum/hud/ooze/New(mob/living/owner)
. = ..()
diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm
index f54b81ca669876..ba1ccbd5d47b76 100644
--- a/code/_onclick/hud/radial.dm
+++ b/code/_onclick/hud/radial.dm
@@ -347,9 +347,13 @@ GLOBAL_LIST_EMPTY(radial_menus)
Choices should be a list where list keys are movables or text used for element names and return value
and list values are movables/icons/images used for element icons
*/
-/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE, no_repeat_close = FALSE, radial_slice_icon = "radial_slice")
+/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE, no_repeat_close = FALSE, radial_slice_icon = "radial_slice", autopick_single_option = TRUE)
if(!user || !anchor || !length(choices))
return
+
+ if(length(choices)==1 && autopick_single_option)
+ return choices[1]
+
if(!uniqueid)
uniqueid = "defmenu_[REF(user)]_[REF(anchor)]"
diff --git a/code/_onclick/hud/rendering/plane_master.dm b/code/_onclick/hud/rendering/plane_master.dm
deleted file mode 100644
index 4ae1c573ad4af2..00000000000000
--- a/code/_onclick/hud/rendering/plane_master.dm
+++ /dev/null
@@ -1,684 +0,0 @@
-// I hate this place
-INITIALIZE_IMMEDIATE(/atom/movable/screen/plane_master)
-
-/atom/movable/screen/plane_master
- screen_loc = "CENTER"
- icon_state = "blank"
- appearance_flags = PLANE_MASTER
- blend_mode = BLEND_OVERLAY
- plane = LOWEST_EVER_PLANE
- /// Will be sent to the debug ui as a description for each plane
- /// Also useful as a place to explain to coders how/why your plane works, and what it's meant to do
- /// Plaintext and basic html are fine to use here.
- /// I'll bonk you if I find you putting "lmao stuff" in here, make this useful.
- var/documentation = ""
- /// Our real alpha value, so alpha can persist through being hidden/shown
- var/true_alpha = 255
- /// Tracks if we're using our true alpha, or being manipulated in some other way
- var/alpha_enabled = TRUE
-
- /// The plane master group we're a member of, our "home"
- var/datum/plane_master_group/home
-
- /// If our plane master allows for offsetting
- /// Mostly used for planes that really don't need to be duplicated, like the hud planes
- var/allows_offsetting = TRUE
- /// Our offset from our "true" plane, see below
- var/offset
- /// When rendering multiz, lower levels get their own set of plane masters
- /// Real plane here represents the "true" plane value of something, ignoring the offset required to handle lower levels
- var/real_plane
-
- //--rendering relay vars--
- /// list of planes we will relay this plane's render to
- var/list/render_relay_planes = list(RENDER_PLANE_GAME)
- /// blend mode to apply to the render relay in case you dont want to use the plane_masters blend_mode
- var/blend_mode_override
- /// list of current relays this plane is utilizing to render
- var/list/atom/movable/render_plane_relay/relays = list()
- /// if render relays have already be generated
- var/relays_generated = FALSE
-
- /// If this plane master should be hidden from the player at roundstart
- /// We do this so PMs can opt into being temporary, to reduce load on clients
- var/start_hidden = FALSE
- /// If this plane master is being forced to hide.
- /// Hidden PMs will dump ANYTHING relayed or drawn onto them. Be careful with this
- /// Remember: a hidden plane master will dump anything drawn directly to it onto the output render. It does NOT hide its contents
- /// Use alpha for that
- var/force_hidden = FALSE
-
- /// If this plane should be scaled by multiz
- /// Planes with this set should NEVER be relay'd into each other, as that will cause visual fuck
- var/multiz_scaled = TRUE
-
- /// Bitfield that describes how this plane master will render if its z layer is being "optimized"
- /// If a plane master is NOT critical, it will be completely dropped if we start to render outside a client's multiz boundary prefs
- /// Of note: most of the time we will relay renders to non critical planes in this stage. so the plane master will end up drawing roughly "in order" with its friends
- /// This is NOT done for parallax and other problem children, because the rules of BLEND_MULTIPLY appear to not behave as expected :(
- /// This will also just make debugging harder, because we do fragile things in order to ensure things operate as epected. I'm sorry
- /// Compile time
- /// See [code\__DEFINES\layers.dm] for our bitflags
- var/critical = NONE
-
- /// If this plane master is outside of our visual bounds right now
- var/is_outside_bounds = FALSE
-
-/atom/movable/screen/plane_master/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset = 0)
- . = ..()
- src.offset = offset
- true_alpha = alpha
- real_plane = plane
-
- if(!set_home(home))
- return INITIALIZE_HINT_QDEL
- update_offset()
- if(!documentation && !(istype(src, /atom/movable/screen/plane_master) || istype(src, /atom/movable/screen/plane_master/rendering_plate)))
- stack_trace("Plane master created without a description. Document how your thing works so people will know in future, and we can display it in the debug menu")
- if(start_hidden)
- hide_plane(home.our_hud?.mymob)
- generate_render_relays()
-
-/atom/movable/screen/plane_master/Destroy()
- if(home)
- // NOTE! We do not clear ourselves from client screens
- // We relay on whoever qdel'd us to reset our hud, and properly purge us
- home.plane_masters -= "[plane]"
- home = null
- . = ..()
- QDEL_LIST(relays)
-
-/// Sets the plane group that owns us, it also determines what screen we render to
-/// Returns FALSE if the set_home fails, TRUE otherwise
-/atom/movable/screen/plane_master/proc/set_home(datum/plane_master_group/home)
- if(!istype(home, /datum/plane_master_group))
- return FALSE
- src.home = home
- if(home.map)
- screen_loc = "[home.map]:[screen_loc]"
- assigned_map = home.map
- return TRUE
-
-/// Updates our "offset", basically what layer of multiz we're meant to render
-/// Top is 0, goes up as you go down
-/// It's taken into account by render targets and relays, so we gotta make sure they're on the same page
-/atom/movable/screen/plane_master/proc/update_offset()
- name = "[initial(name)] #[offset]"
- SET_PLANE_W_SCALAR(src, real_plane, offset)
- for(var/i in 1 to length(render_relay_planes))
- render_relay_planes[i] = GET_NEW_PLANE(render_relay_planes[i], offset)
- if(initial(render_target))
- render_target = OFFSET_RENDER_TARGET(initial(render_target), offset)
-
-/atom/movable/screen/plane_master/proc/set_alpha(new_alpha)
- true_alpha = new_alpha
- if(!alpha_enabled)
- return
- alpha = new_alpha
-
-/atom/movable/screen/plane_master/proc/disable_alpha()
- alpha_enabled = FALSE
- alpha = 0
-
-/atom/movable/screen/plane_master/proc/enable_alpha()
- alpha_enabled = TRUE
- alpha = true_alpha
-
-/// Shows a plane master to the passed in mob
-/// Override this to apply unique effects and such
-/// Returns TRUE if the call is allowed, FALSE otherwise
-/atom/movable/screen/plane_master/proc/show_to(mob/mymob)
- SHOULD_CALL_PARENT(TRUE)
- if(force_hidden)
- return FALSE
-
- var/client/our_client = mymob?.canon_client
- // Alright, let's get this out of the way
- // Mobs can move z levels without their client. If this happens, we need to ensure critical display settings are respected
- // This is done here. Mild to severe pain but it's nessesary
- if(check_outside_bounds())
- if(!(critical & PLANE_CRITICAL_DISPLAY))
- return FALSE
- if(!our_client)
- return TRUE
- our_client.screen += src
-
- if(!(critical & PLANE_CRITICAL_NO_RELAY))
- our_client.screen += relays
- return TRUE
- return TRUE
-
- if(!our_client)
- return TRUE
-
- our_client.screen += src
- our_client.screen += relays
- return TRUE
-
-/// Hook to allow planes to work around is_outside_bounds
-/// Return false to allow a show, true otherwise
-/atom/movable/screen/plane_master/proc/check_outside_bounds()
- return is_outside_bounds
-
-/// Hides a plane master from the passeed in mob
-/// Do your effect cleanup here
-/atom/movable/screen/plane_master/proc/hide_from(mob/oldmob)
- SHOULD_CALL_PARENT(TRUE)
- var/client/their_client = oldmob?.client
- if(!their_client)
- return
- their_client.screen -= src
- their_client.screen -= relays
-
-
-/// Forces this plane master to hide, until unhide_plane is called
-/// This allows us to disable unused PMs without breaking anything else
-/atom/movable/screen/plane_master/proc/hide_plane(mob/cast_away)
- force_hidden = TRUE
- hide_from(cast_away)
-
-/// Disables any forced hiding, allows the plane master to be used as normal
-/atom/movable/screen/plane_master/proc/unhide_plane(mob/enfold)
- force_hidden = FALSE
- show_to(enfold)
-
-/// Mirrors our force hidden state to the hidden state of the plane that came before, assuming it's valid
-/// This allows us to mirror any hidden sets from before we were created, no matter how low that chance is
-/atom/movable/screen/plane_master/proc/mirror_parent_hidden()
- var/mob/our_mob = home?.our_hud?.mymob
- var/atom/movable/screen/plane_master/true_plane = our_mob?.hud_used?.get_plane_master(plane)
- if(true_plane == src || !true_plane)
- return
-
- if(true_plane.force_hidden == force_hidden)
- return
-
- // If one of us already exists and it's not hidden, unhide ourselves
- if(true_plane.force_hidden)
- hide_plane(our_mob)
- else
- unhide_plane(our_mob)
-
-/atom/movable/screen/plane_master/proc/outside_bounds(mob/relevant)
- if(force_hidden || is_outside_bounds)
- return
- is_outside_bounds = TRUE
- // If we're of critical importance, AND we're below the rendering layer
- if(critical & PLANE_CRITICAL_DISPLAY)
- // We here assume that your render target starts with *
- if(critical & PLANE_CRITICAL_CUT_RENDER && render_target)
- render_target = copytext_char(render_target, 2)
- if(!(critical & PLANE_CRITICAL_NO_RELAY))
- return
- var/client/our_client = relevant.client
- if(our_client)
- for(var/atom/movable/render_plane_relay/relay as anything in relays)
- our_client.screen -= relay
-
- return
- hide_from(relevant)
-
-/atom/movable/screen/plane_master/proc/inside_bounds(mob/relevant)
- is_outside_bounds = FALSE
- if(critical & PLANE_CRITICAL_DISPLAY)
- // We here assume that your render target starts with *
- if(critical & PLANE_CRITICAL_CUT_RENDER && render_target)
- render_target = "*[render_target]"
-
- if(!(critical & PLANE_CRITICAL_NO_RELAY))
- return
- var/client/our_client = relevant.client
- if(our_client)
- for(var/atom/movable/render_plane_relay/relay as anything in relays)
- our_client.screen += relay
-
- return
- show_to(relevant)
-
-/atom/movable/screen/plane_master/clickcatcher
- name = "Click Catcher"
- documentation = "Contains the screen object we use as a backdrop to catch clicks on portions of the screen that would otherwise contain nothing else. \
-
Will always be below almost everything else"
- plane = CLICKCATCHER_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- multiz_scaled = FALSE
- critical = PLANE_CRITICAL_DISPLAY
-
-/atom/movable/screen/plane_master/clickcatcher/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
- . = ..()
- RegisterSignal(SSmapping, COMSIG_PLANE_OFFSET_INCREASE, PROC_REF(offset_increased))
- offset_increased(SSmapping, 0, SSmapping.max_plane_offset)
-
-/atom/movable/screen/plane_master/clickcatcher/proc/offset_increased(datum/source, old_off, new_off)
- SIGNAL_HANDLER
- // We only want need the lowest level
- // If my system better supported changing PM plane values mid op I'd do that, but I do NOT so
- if(new_off > offset)
- hide_plane(home?.our_hud?.mymob)
-
-/atom/movable/screen/plane_master/parallax_white
- name = "Parallax whitifier"
- documentation = "Essentially a backdrop for the parallax plane. We're rendered just below it, so we'll be multiplied by its well, parallax.\
-
If you want something to look as if it has parallax on it, draw it to this plane."
- plane = PLANE_SPACE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_relay_planes = list(RENDER_PLANE_GAME, LIGHT_MASK_PLANE)
- critical = PLANE_CRITICAL_FUCKO_PARALLAX // goes funny when touched. no idea why I don't trust byond
-
-/atom/movable/screen/plane_master/parallax_white/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
- . = ..()
- add_relay_to(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset), relay_layer = EMISSIVE_SPACE_LAYER)
-
-///Contains space parallax
-/atom/movable/screen/plane_master/parallax
- name = "Parallax"
- documentation = "Contains parallax, or to be more exact the screen objects that hold parallax.\
-
Note the BLEND_MULTIPLY. The trick here is how low our plane value is. Because of that, we draw below almost everything in the game.\
-
We abuse this to ensure we multiply against the Parallax whitifier plane, or space's plane. It's set to full white, so when you do the multiply you just get parallax out where it well, makes sense to be.\
-
Also notice that the parent parallax plane is mirrored down to all children. We want to support viewing parallax across all z levels at once."
- plane = PLANE_SPACE_PARALLAX
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- blend_mode = BLEND_MULTIPLY
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- multiz_scaled = FALSE
-
-/atom/movable/screen/plane_master/parallax/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
- . = ..()
- if(offset != 0)
- // You aren't the source? don't change yourself
- return
- RegisterSignal(SSmapping, COMSIG_PLANE_OFFSET_INCREASE, PROC_REF(on_offset_increase))
- RegisterSignal(SSdcs, COMSIG_NARSIE_SUMMON_UPDATE, PROC_REF(narsie_modified))
- if(GLOB.narsie_summon_count >= 1)
- narsie_start_midway(GLOB.narsie_effect_last_modified) // We assume we're on the start, so we can use this number
- offset_increase(0, SSmapping.max_plane_offset)
-
-/atom/movable/screen/plane_master/parallax/proc/on_offset_increase(datum/source, old_offset, new_offset)
- SIGNAL_HANDLER
- offset_increase(old_offset, new_offset)
-
-/atom/movable/screen/plane_master/parallax/proc/offset_increase(old_offset, new_offset)
- // Parallax will be mirrored down to any new planes that are added, so it will properly render across mirage borders
- for(var/offset in old_offset to new_offset)
- if(offset != 0)
- // Overlay so we don't multiply twice, and thus fuck up our rendering
- add_relay_to(GET_NEW_PLANE(plane, offset), BLEND_OVERLAY)
-
-// Hacky shit to ensure parallax works in perf mode
-/atom/movable/screen/plane_master/parallax/outside_bounds(mob/relevant)
- if(offset == 0)
- remove_relay_from(GET_NEW_PLANE(RENDER_PLANE_GAME, 0))
- is_outside_bounds = TRUE // I'm sorry :(
- return
- // If we can't render, and we aren't the bottom layer, don't render us
- // This way we only multiply against stuff that's not fullwhite space
- var/atom/movable/screen/plane_master/parent_parallax = home.our_hud.get_plane_master(PLANE_SPACE_PARALLAX)
- var/turf/viewing_turf = get_turf(relevant)
- if(!viewing_turf || offset != GET_LOWEST_STACK_OFFSET(viewing_turf.z))
- parent_parallax.remove_relay_from(plane)
- else
- parent_parallax.add_relay_to(plane, BLEND_OVERLAY)
- return ..()
-
-/atom/movable/screen/plane_master/parallax/inside_bounds(mob/relevant)
- if(offset == 0)
- add_relay_to(GET_NEW_PLANE(RENDER_PLANE_GAME, 0))
- is_outside_bounds = FALSE
- return
- // Always readd, just in case we lost it
- var/atom/movable/screen/plane_master/parent_parallax = home.our_hud.get_plane_master(PLANE_SPACE_PARALLAX)
- parent_parallax.add_relay_to(plane, BLEND_OVERLAY)
- return ..()
-
-// Needs to handle rejoining on a lower z level, so we NEED to readd old planes
-/atom/movable/screen/plane_master/parallax/check_outside_bounds()
- // If we're outside bounds AND we're the 0th plane, we need to show cause parallax is hacked to hell
- return offset != 0 && is_outside_bounds
-
-/// Starts the narsie animation midway, so we can catch up to everyone else quickly
-/atom/movable/screen/plane_master/parallax/proc/narsie_start_midway(start_time)
- var/time_elapsed = world.time - start_time
- narsie_summoned_effect(max(16 SECONDS - time_elapsed, 0))
-
-/// Starts the narsie animation, make us grey, then red
-/atom/movable/screen/plane_master/parallax/proc/narsie_modified(datum/source, new_count)
- SIGNAL_HANDLER
- if(new_count >= 1)
- narsie_summoned_effect(16 SECONDS)
- else
- narsie_unsummoned()
-
-/atom/movable/screen/plane_master/parallax/proc/narsie_summoned_effect(animate_time)
- if(GLOB.narsie_summon_count >= 2)
- var/static/list/nightmare_parallax = list(255,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, -130,0,0,0)
- animate(src, color = nightmare_parallax, time = animate_time)
- return
-
- var/static/list/grey_parallax = list(0.4,0.4,0.4,0, 0.4,0.4,0.4,0, 0.4,0.4,0.4,0, 0,0,0,1, -0.1,-0.1,-0.1,0)
- // We're gonna animate ourselves grey
- // Then, once it's done, about 40 seconds into the event itself, we're gonna start doin some shit. see below
- animate(src, color = grey_parallax, time = animate_time)
-
-/atom/movable/screen/plane_master/parallax/proc/narsie_unsummoned()
- animate(src, color = null, time = 8 SECONDS)
-
-/atom/movable/screen/plane_master/gravpulse
- name = "Gravpulse"
- documentation = "Ok so this one's fun. Basically, we want to be able to distort the game plane when a grav annom is around.\
-
So we draw the pattern we want to use to this plane, and it's then used as a render target by a distortion filter on the game plane.\
-
Note the blend mode and lack of relay targets. This plane exists only to distort, it's never rendered anywhere."
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- plane = GRAVITY_PULSE_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- blend_mode = BLEND_ADD
- render_target = GRAVITY_PULSE_RENDER_TARGET
- render_relay_planes = list()
-
-///Contains just the floor
-/atom/movable/screen/plane_master/floor
- name = "Floor"
- documentation = "The well, floor. This is mostly used as a sorting mechanism, but it also lets us create a \"border\" around the game world plane, so its drop shadow will actually work."
- plane = FLOOR_PLANE
- render_relay_planes = list(RENDER_PLANE_GAME, LIGHT_MASK_PLANE)
-
-/atom/movable/screen/plane_master/transparent_floor
- name = "Transparent Floor"
- documentation = "Really just openspace, stuff that is a turf but has no color or alpha whatsoever.\
-
We use this to draw to just the light mask plane, cause if it's not there we get holes of blackness over openspace"
- plane = TRANSPARENT_FLOOR_PLANE
- render_relay_planes = list(LIGHT_MASK_PLANE)
- // Needs to be critical or it uh, it'll look white
- critical = PLANE_CRITICAL_DISPLAY|PLANE_CRITICAL_NO_RELAY
-
-/atom/movable/screen/plane_master/floor/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
- . = ..()
- add_relay_to(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset), relay_layer = EMISSIVE_FLOOR_LAYER, relay_color = GLOB.em_block_color)
-
-/atom/movable/screen/plane_master/wall
- name = "Wall"
- documentation = "Holds all walls. We render this onto the game world. Separate so we can use this + space and floor planes as a guide for where byond blackness is NOT."
- plane = WALL_PLANE
- render_relay_planes = list(RENDER_PLANE_GAME_WORLD, LIGHT_MASK_PLANE)
-
-/atom/movable/screen/plane_master/wall/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
- . = ..()
- add_relay_to(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset), relay_layer = EMISSIVE_WALL_LAYER, relay_color = GLOB.em_block_color)
-
-/atom/movable/screen/plane_master/game
- name = "Lower game world"
- documentation = "Exists mostly because of FOV shit. Basically, if you've just got a normal not ABOVE fov thing, and you don't want it masked, stick it here yeah?"
- plane = GAME_PLANE
- render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
-
-/atom/movable/screen/plane_master/game_world_fov_hidden
- name = "lower game world fov hidden"
- documentation = "If you want something to be hidden by fov, stick it on this plane. We're masked by the fov blocker plane, so the items on us can actually well, disappear."
- plane = GAME_PLANE_FOV_HIDDEN
- render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
-
-/atom/movable/screen/plane_master/game_world_fov_hidden/Initialize(mapload, datum/hud/hud_owner)
- . = ..()
- add_filter("vision_cone", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(FIELD_OF_VISION_BLOCKER_RENDER_TARGET, offset), flags = MASK_INVERSE))
-
-/atom/movable/screen/plane_master/field_of_vision_blocker
- name = "Field of vision blocker"
- documentation = "This is one of those planes that's only used as a filter. It masks out things that want to be hidden by fov.\
-
Literally just contains FOV images, or masks."
- plane = FIELD_OF_VISION_BLOCKER_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_target = FIELD_OF_VISION_BLOCKER_RENDER_TARGET
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- render_relay_planes = list()
- // We do NOT allow offsetting, because there's no case where you would want to block only one layer, at least currently
- allows_offsetting = FALSE
- start_hidden = TRUE
- // We mark as multiz_scaled FALSE so transforms don't effect us, and we draw to the planes below us as if they were us.
- // This is safe because we will ALWAYS be on the top z layer, so it DON'T MATTER
- multiz_scaled = FALSE
-
-/atom/movable/screen/plane_master/field_of_vision_blocker/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
- . = ..()
- mirror_parent_hidden()
-
-/atom/movable/screen/plane_master/game_world_upper
- name = "Upper game world"
- documentation = "Ok so fov is kinda fucky, because planes in byond serve both as effect groupings and as rendering orderers. Since that's true, we need a plane that we can stick stuff that draws above fov blocked stuff on."
- plane = GAME_PLANE_UPPER
- render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
-
-/atom/movable/screen/plane_master/wall_upper
- name = "Upper wall"
- documentation = "There are some walls that want to render above most things (mostly minerals since they shift over.\
-
We draw them to their own plane so we can hijack them for our emissive mask stuff"
- plane = WALL_PLANE_UPPER
- render_relay_planes = list(RENDER_PLANE_GAME_WORLD, LIGHT_MASK_PLANE)
-
-/atom/movable/screen/plane_master/wall_upper/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
- . = ..()
- add_relay_to(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset), relay_layer = EMISSIVE_WALL_LAYER, relay_color = GLOB.em_block_color)
-
-/atom/movable/screen/plane_master/game_world_upper_fov_hidden
- name = "Upper game world fov hidden"
- documentation = "Just as we need a place to draw things \"above\" the hidden fov plane, we also need to be able to hide stuff that draws over the upper game plane."
- plane = GAME_PLANE_UPPER_FOV_HIDDEN
- render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
-
-/atom/movable/screen/plane_master/game_world_upper_fov_hidden/Initialize(mapload, datum/hud/hud_owner)
- . = ..()
- // Dupe of the other hidden plane
- add_filter("vision_cone", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(FIELD_OF_VISION_BLOCKER_RENDER_TARGET, offset), flags = MASK_INVERSE))
-
-/atom/movable/screen/plane_master/seethrough
- name = "Seethrough"
- documentation = "Holds the seethrough versions (done using image overrides) of large objects. Mouse transparent, so you can click through them."
- plane = SEETHROUGH_PLANE
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
- start_hidden = TRUE
-
-/atom/movable/screen/plane_master/game_world_above
- name = "Above game world"
- documentation = "We need a place that's unmasked by fov that also draws above the upper game world fov hidden plane. I told you fov was hacky man."
- plane = ABOVE_GAME_PLANE
- render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
-
-/**
- * Plane master that byond will by default draw to
- * Shouldn't be used, exists to prevent people using plane 0
- * NOTE: If we used SEE_BLACKNESS on a map format that wasn't SIDE_MAP, this is where its darkness would land
- * This would allow us to control it and do fun things. But we can't because side map doesn't support it, so this is just a stub
- */
-/atom/movable/screen/plane_master/default
- name = "Default"
- documentation = "This is quite fiddly, so bear with me. By default (in byond) everything in the game is rendered onto plane 0. It's the default plane. \
-
But, because we've moved everything we control off plane 0, all that's left is stuff byond internally renders. \
-
What I'd like to do with this is capture byond blackness by giving mobs the SEE_BLACKNESS sight flag. \
-
But we CAN'T because SEE_BLACKNESS does not work with our rendering format. So I just eat it I guess"
- plane = DEFAULT_PLANE
- multiz_scaled = FALSE
- start_hidden = TRUE // Doesn't DO anything, exists to hold this place
-
-/atom/movable/screen/plane_master/area
- name = "Area"
- documentation = "Holds the areas themselves, which ends up meaning it holds any overlays/effects we apply to areas. NOT snow or rad storms, those go on above lighting"
- plane = AREA_PLANE
-
-/atom/movable/screen/plane_master/massive_obj
- name = "Massive object"
- documentation = "Huge objects need to render above everything else on the game plane, otherwise they'd well, get clipped and look not that huge. This does that."
- plane = MASSIVE_OBJ_PLANE
-
-/atom/movable/screen/plane_master/point
- name = "Point"
- documentation = "I mean like, what do you want me to say? Points draw over pretty much everything else, so they get their own plane. Remember we layer render relays to draw planes in their proper order on render plates."
- plane = POINT_PLANE
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-
-///Contains all turf lighting
-/atom/movable/screen/plane_master/turf_lighting
- name = "Turf Lighting"
- documentation = "Contains all lighting drawn to turfs. Not so complex, draws directly onto the lighting plate."
- plane = LIGHTING_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_relay_planes = list(RENDER_PLANE_LIGHTING)
- blend_mode_override = BLEND_ADD
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- critical = PLANE_CRITICAL_DISPLAY
-
-/// This will not work through multiz, because of a byond bug with BLEND_MULTIPLY
-/// Bug report is up, waiting on a fix
-/atom/movable/screen/plane_master/o_light_visual
- name = "Overlight light visual"
- documentation = "Holds overlay lighting objects, or the sort of lighting that's a well, overlay stuck to something.\
-
Exists because lighting updating is really slow, and movement needs to feel smooth.\
-
We draw to the game plane, and mask out space for ourselves on the lighting plane so any color we have has the chance to display."
- plane = O_LIGHTING_VISUAL_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_target = O_LIGHTING_VISUAL_RENDER_TARGET
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- blend_mode = BLEND_MULTIPLY
- critical = PLANE_CRITICAL_DISPLAY
-
-/atom/movable/screen/plane_master/above_lighting
- name = "Above lighting"
- plane = ABOVE_LIGHTING_PLANE
- documentation = "Anything on the game plane that needs a space to draw on that will be above the lighting plane.\
-
Mostly little alerts and effects, also sometimes contains things that are meant to look as if they glow."
-
-/**
- * Handles emissive overlays and emissive blockers.
- */
-/atom/movable/screen/plane_master/emissive
- name = "Emissive"
- documentation = "Holds things that will be used to mask the lighting plane later on. Masked by the Emissive Mask plane to ensure we don't emiss out under a wall.\
-
Relayed onto the Emissive render plane to do the actual masking of lighting, since we need to be transformed and other emissive stuff needs to be transformed too.\
-
Don't want to double scale now."
- plane = EMISSIVE_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- render_relay_planes = list(EMISSIVE_RENDER_PLATE)
- critical = PLANE_CRITICAL_DISPLAY
-
-/atom/movable/screen/plane_master/pipecrawl
- name = "Pipecrawl"
- documentation = "Holds pipecrawl images generated during well, pipecrawling.\
-
Has a few effects and a funky color matrix designed to make things a bit more visually readable."
- plane = PIPECRAWL_IMAGES_PLANE
- start_hidden = TRUE
-
-/atom/movable/screen/plane_master/pipecrawl/Initialize(mapload, datum/hud/hud_owner)
- . = ..()
- // Makes everything on this plane slightly brighter
- // Has a nice effect, makes thing stand out
- color = list(1.2,0,0,0, 0,1.2,0,0, 0,0,1.2,0, 0,0,0,1, 0,0,0,0)
- // This serves a similar purpose, I want the pipes to pop
- add_filter("pipe_dropshadow", 1, drop_shadow_filter(x = -1, y= -1, size = 1, color = "#0000007A"))
- mirror_parent_hidden()
-
-/atom/movable/screen/plane_master/camera_static
- name = "Camera static"
- documentation = "Holds camera static images. Usually only visible to people who can well, see static.\
-
We use images rather then vis contents because they're lighter on maptick, and maptick sucks butt."
- plane = CAMERA_STATIC_PLANE
-
-/atom/movable/screen/plane_master/camera_static/show_to(mob/mymob)
- . = ..()
- if(!.)
- return
- var/datum/hud/our_hud = home.our_hud
- if(isnull(our_hud))
- return
-
- // We'll hide the slate if we're not seeing through a camera eye
- // This can call on a cycle cause we don't clear in hide_from
- // Yes this is the best way of hooking into the hud, I hate myself too
- RegisterSignal(our_hud, COMSIG_HUD_EYE_CHANGED, PROC_REF(eye_changed), override = TRUE)
- eye_changed(our_hud, null, our_hud.mymob?.canon_client?.eye)
-
-/atom/movable/screen/plane_master/camera_static/proc/eye_changed(datum/hud/source, atom/old_eye, atom/new_eye)
- SIGNAL_HANDLER
-
- if(!isaicamera(new_eye))
- if(!force_hidden)
- hide_plane(source.mymob)
- return
-
- if(force_hidden)
- unhide_plane(source.mymob)
-
-/atom/movable/screen/plane_master/high_game
- name = "High Game"
- documentation = "Holds anything that wants to be displayed above the rest of the game plane, and doesn't want to be clickable. \
-
This includes atmos debug overlays, blind sound images, and mining scanners. \
-
Really only exists for its layering potential, we don't use this for any vfx"
- plane = HIGH_GAME_PLANE
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-
-/atom/movable/screen/plane_master/ghost
- name = "Ghost"
- documentation = "Ghosts draw here, so they don't get mixed up in the visuals of the game world. Note, this is not not how we HIDE ghosts from people, that's done with invisible and see_invisible."
- plane = GHOST_PLANE
- render_relay_planes = list(RENDER_PLANE_NON_GAME)
-
-/atom/movable/screen/plane_master/fullscreen
- name = "Fullscreen"
- documentation = "Holds anything that applies to or above the full screen. \
-
Note, it's still rendered underneath hud objects, but this lets us control the order that things like death/damage effects render in."
- plane = FULLSCREEN_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_relay_planes = list(RENDER_PLANE_NON_GAME)
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- allows_offsetting = FALSE
-
-/atom/movable/screen/plane_master/runechat
- name = "Runechat"
- documentation = "Holds runechat images, that text that pops up when someone say something. Uses a dropshadow to well, look nice."
- plane = RUNECHAT_PLANE
- render_relay_planes = list(RENDER_PLANE_NON_GAME)
-
-/atom/movable/screen/plane_master/runechat/show_to(mob/mymob)
- . = ..()
- if(!.)
- return
- remove_filter("AO")
- if(istype(mymob) && mymob.canon_client?.prefs?.read_preference(/datum/preference/toggle/ambient_occlusion))
- add_filter("AO", 1, drop_shadow_filter(x = 0, y = -2, size = 4, color = "#04080FAA"))
-
-/atom/movable/screen/plane_master/balloon_chat
- name = "Balloon chat"
- documentation = "Holds ballon chat images, those little text bars that pop up for a second when you do some things. NOT runechat."
- plane = BALLOON_CHAT_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_relay_planes = list(RENDER_PLANE_NON_GAME)
-
-/atom/movable/screen/plane_master/hud
- name = "HUD"
- documentation = "Contains anything that want to be rendered on the hud. Typically is just screen elements."
- plane = HUD_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_relay_planes = list(RENDER_PLANE_NON_GAME)
- allows_offsetting = FALSE
-
-/atom/movable/screen/plane_master/above_hud
- name = "Above HUD"
- documentation = "Anything that wants to be drawn ABOVE the rest of the hud. Typically close buttons and other elements that need to be always visible. Think preventing draggable action button memes."
- plane = ABOVE_HUD_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_relay_planes = list(RENDER_PLANE_NON_GAME)
- allows_offsetting = FALSE
-
-/atom/movable/screen/plane_master/splashscreen
- name = "Splashscreen"
- documentation = "Cinematics and the splash screen."
- plane = SPLASHSCREEN_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_relay_planes = list(RENDER_PLANE_NON_GAME)
- allows_offsetting = FALSE
-
-/atom/movable/screen/plane_master/escape_menu
- name = "Escape Menu"
- documentation = "Anything relating to the escape menu."
- plane = ESCAPE_MENU_PLANE
- appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
- render_relay_planes = list(RENDER_PLANE_MASTER)
- allows_offsetting = FALSE
diff --git a/code/_onclick/hud/rendering/plane_masters/_plane_master.dm b/code/_onclick/hud/rendering/plane_masters/_plane_master.dm
new file mode 100644
index 00000000000000..13f94fa9f5aa09
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/_plane_master.dm
@@ -0,0 +1,236 @@
+// I hate this place
+INITIALIZE_IMMEDIATE(/atom/movable/screen/plane_master)
+
+/atom/movable/screen/plane_master
+ screen_loc = "CENTER"
+ icon_state = "blank"
+ appearance_flags = PLANE_MASTER
+ blend_mode = BLEND_OVERLAY
+ plane = LOWEST_EVER_PLANE
+ /// Will be sent to the debug ui as a description for each plane
+ /// Also useful as a place to explain to coders how/why your plane works, and what it's meant to do
+ /// Plaintext and basic html are fine to use here.
+ /// I'll bonk you if I find you putting "lmao stuff" in here, make this useful.
+ var/documentation = ""
+ /// Our real alpha value, so alpha can persist through being hidden/shown
+ var/true_alpha = 255
+ /// Tracks if we're using our true alpha, or being manipulated in some other way
+ var/alpha_enabled = TRUE
+
+ /// The plane master group we're a member of, our "home"
+ var/datum/plane_master_group/home
+
+ /// If our plane master allows for offsetting
+ /// Mostly used for planes that really don't need to be duplicated, like the hud planes
+ var/allows_offsetting = TRUE
+ /// Our offset from our "true" plane, see below
+ var/offset
+ /// When rendering multiz, lower levels get their own set of plane masters
+ /// Real plane here represents the "true" plane value of something, ignoring the offset required to handle lower levels
+ var/real_plane
+
+ //--rendering relay vars--
+ /// list of planes we will relay this plane's render to
+ var/list/render_relay_planes = list(RENDER_PLANE_GAME)
+ /// blend mode to apply to the render relay in case you dont want to use the plane_masters blend_mode
+ var/blend_mode_override
+ /// list of current relays this plane is utilizing to render
+ var/list/atom/movable/render_plane_relay/relays = list()
+ /// if render relays have already be generated
+ var/relays_generated = FALSE
+
+ /// If this plane master should be hidden from the player at roundstart
+ /// We do this so PMs can opt into being temporary, to reduce load on clients
+ var/start_hidden = FALSE
+ /// If this plane master is being forced to hide.
+ /// Hidden PMs will dump ANYTHING relayed or drawn onto them. Be careful with this
+ /// Remember: a hidden plane master will dump anything drawn directly to it onto the output render. It does NOT hide its contents
+ /// Use alpha for that
+ var/force_hidden = FALSE
+
+ /// If this plane should be scaled by multiz
+ /// Planes with this set should NEVER be relay'd into each other, as that will cause visual fuck
+ var/multiz_scaled = TRUE
+
+ /// Bitfield that describes how this plane master will render if its z layer is being "optimized"
+ /// If a plane master is NOT critical, it will be completely dropped if we start to render outside a client's multiz boundary prefs
+ /// Of note: most of the time we will relay renders to non critical planes in this stage. so the plane master will end up drawing roughly "in order" with its friends
+ /// This is NOT done for parallax and other problem children, because the rules of BLEND_MULTIPLY appear to not behave as expected :(
+ /// This will also just make debugging harder, because we do fragile things in order to ensure things operate as epected. I'm sorry
+ /// Compile time
+ /// See [code\__DEFINES\layers.dm] for our bitflags
+ var/critical = NONE
+
+ /// If this plane master is outside of our visual bounds right now
+ var/is_outside_bounds = FALSE
+
+/atom/movable/screen/plane_master/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset = 0)
+ . = ..()
+ src.offset = offset
+ true_alpha = alpha
+ real_plane = plane
+
+ if(!set_home(home))
+ return INITIALIZE_HINT_QDEL
+ update_offset()
+ if(!documentation && !(istype(src, /atom/movable/screen/plane_master) || istype(src, /atom/movable/screen/plane_master/rendering_plate)))
+ stack_trace("Plane master created without a description. Document how your thing works so people will know in future, and we can display it in the debug menu")
+ if(start_hidden)
+ hide_plane(home.our_hud?.mymob)
+ generate_render_relays()
+
+/atom/movable/screen/plane_master/Destroy()
+ if(home)
+ // NOTE! We do not clear ourselves from client screens
+ // We relay on whoever qdel'd us to reset our hud, and properly purge us
+ home.plane_masters -= "[plane]"
+ home = null
+ . = ..()
+ QDEL_LIST(relays)
+
+/// Sets the plane group that owns us, it also determines what screen we render to
+/// Returns FALSE if the set_home fails, TRUE otherwise
+/atom/movable/screen/plane_master/proc/set_home(datum/plane_master_group/home)
+ if(!istype(home, /datum/plane_master_group))
+ return FALSE
+ src.home = home
+ if(home.map)
+ screen_loc = "[home.map]:[screen_loc]"
+ assigned_map = home.map
+ return TRUE
+
+/// Updates our "offset", basically what layer of multiz we're meant to render
+/// Top is 0, goes up as you go down
+/// It's taken into account by render targets and relays, so we gotta make sure they're on the same page
+/atom/movable/screen/plane_master/proc/update_offset()
+ name = "[initial(name)] #[offset]"
+ SET_PLANE_W_SCALAR(src, real_plane, offset)
+ for(var/i in 1 to length(render_relay_planes))
+ render_relay_planes[i] = GET_NEW_PLANE(render_relay_planes[i], offset)
+ if(initial(render_target))
+ render_target = OFFSET_RENDER_TARGET(initial(render_target), offset)
+
+/atom/movable/screen/plane_master/proc/set_alpha(new_alpha)
+ true_alpha = new_alpha
+ if(!alpha_enabled)
+ return
+ alpha = new_alpha
+
+/atom/movable/screen/plane_master/proc/disable_alpha()
+ alpha_enabled = FALSE
+ alpha = 0
+
+/atom/movable/screen/plane_master/proc/enable_alpha()
+ alpha_enabled = TRUE
+ alpha = true_alpha
+
+/// Shows a plane master to the passed in mob
+/// Override this to apply unique effects and such
+/// Returns TRUE if the call is allowed, FALSE otherwise
+/atom/movable/screen/plane_master/proc/show_to(mob/mymob)
+ SHOULD_CALL_PARENT(TRUE)
+ if(force_hidden)
+ return FALSE
+
+ var/client/our_client = mymob?.canon_client
+ // Alright, let's get this out of the way
+ // Mobs can move z levels without their client. If this happens, we need to ensure critical display settings are respected
+ // This is done here. Mild to severe pain but it's nessesary
+ if(check_outside_bounds())
+ if(!(critical & PLANE_CRITICAL_DISPLAY))
+ return FALSE
+ if(!our_client)
+ return TRUE
+ our_client.screen += src
+
+ if(!(critical & PLANE_CRITICAL_NO_RELAY))
+ our_client.screen += relays
+ return TRUE
+ return TRUE
+
+ if(!our_client)
+ return TRUE
+
+ our_client.screen += src
+ our_client.screen += relays
+ return TRUE
+
+/// Hook to allow planes to work around is_outside_bounds
+/// Return false to allow a show, true otherwise
+/atom/movable/screen/plane_master/proc/check_outside_bounds()
+ return is_outside_bounds
+
+/// Hides a plane master from the passeed in mob
+/// Do your effect cleanup here
+/atom/movable/screen/plane_master/proc/hide_from(mob/oldmob)
+ SHOULD_CALL_PARENT(TRUE)
+ var/client/their_client = oldmob?.client
+ if(!their_client)
+ return
+ their_client.screen -= src
+ their_client.screen -= relays
+
+
+/// Forces this plane master to hide, until unhide_plane is called
+/// This allows us to disable unused PMs without breaking anything else
+/atom/movable/screen/plane_master/proc/hide_plane(mob/cast_away)
+ force_hidden = TRUE
+ hide_from(cast_away)
+
+/// Disables any forced hiding, allows the plane master to be used as normal
+/atom/movable/screen/plane_master/proc/unhide_plane(mob/enfold)
+ force_hidden = FALSE
+ show_to(enfold)
+
+/// Mirrors our force hidden state to the hidden state of the plane that came before, assuming it's valid
+/// This allows us to mirror any hidden sets from before we were created, no matter how low that chance is
+/atom/movable/screen/plane_master/proc/mirror_parent_hidden()
+ var/mob/our_mob = home?.our_hud?.mymob
+ var/atom/movable/screen/plane_master/true_plane = our_mob?.hud_used?.get_plane_master(plane)
+ if(true_plane == src || !true_plane)
+ return
+
+ if(true_plane.force_hidden == force_hidden)
+ return
+
+ // If one of us already exists and it's not hidden, unhide ourselves
+ if(true_plane.force_hidden)
+ hide_plane(our_mob)
+ else
+ unhide_plane(our_mob)
+
+/atom/movable/screen/plane_master/proc/outside_bounds(mob/relevant)
+ if(force_hidden || is_outside_bounds)
+ return
+ is_outside_bounds = TRUE
+ // If we're of critical importance, AND we're below the rendering layer
+ if(critical & PLANE_CRITICAL_DISPLAY)
+ // We here assume that your render target starts with *
+ if(critical & PLANE_CRITICAL_CUT_RENDER && render_target)
+ render_target = copytext_char(render_target, 2)
+ if(!(critical & PLANE_CRITICAL_NO_RELAY))
+ return
+ var/client/our_client = relevant.client
+ if(our_client)
+ for(var/atom/movable/render_plane_relay/relay as anything in relays)
+ our_client.screen -= relay
+
+ return
+ hide_from(relevant)
+
+/atom/movable/screen/plane_master/proc/inside_bounds(mob/relevant)
+ is_outside_bounds = FALSE
+ if(critical & PLANE_CRITICAL_DISPLAY)
+ // We here assume that your render target starts with *
+ if(critical & PLANE_CRITICAL_CUT_RENDER && render_target)
+ render_target = "*[render_target]"
+
+ if(!(critical & PLANE_CRITICAL_NO_RELAY))
+ return
+ var/client/our_client = relevant.client
+ if(our_client)
+ for(var/atom/movable/render_plane_relay/relay as anything in relays)
+ our_client.screen += relay
+
+ return
+ show_to(relevant)
diff --git a/code/_onclick/hud/rendering/plane_masters/camera_static.dm b/code/_onclick/hud/rendering/plane_masters/camera_static.dm
new file mode 100644
index 00000000000000..4cb3436a7a4901
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/camera_static.dm
@@ -0,0 +1,30 @@
+/atom/movable/screen/plane_master/camera_static
+ name = "Camera static"
+ documentation = "Holds camera static images. Usually only visible to people who can well, see static.\
+
We use images rather then vis contents because they're lighter on maptick, and maptick sucks butt."
+ plane = CAMERA_STATIC_PLANE
+
+/atom/movable/screen/plane_master/camera_static/show_to(mob/mymob)
+ . = ..()
+ if(!.)
+ return
+ var/datum/hud/our_hud = home.our_hud
+ if(isnull(our_hud))
+ return
+
+ // We'll hide the slate if we're not seeing through a camera eye
+ // This can call on a cycle cause we don't clear in hide_from
+ // Yes this is the best way of hooking into the hud, I hate myself too
+ RegisterSignal(our_hud, COMSIG_HUD_EYE_CHANGED, PROC_REF(eye_changed), override = TRUE)
+ eye_changed(our_hud, null, our_hud.mymob?.canon_client?.eye)
+
+/atom/movable/screen/plane_master/camera_static/proc/eye_changed(datum/hud/source, atom/old_eye, atom/new_eye)
+ SIGNAL_HANDLER
+
+ if(!isaicamera(new_eye))
+ if(!force_hidden)
+ hide_plane(source.mymob)
+ return
+
+ if(force_hidden)
+ unhide_plane(source.mymob)
diff --git a/code/_onclick/hud/rendering/plane_masters/clickcatcher.dm b/code/_onclick/hud/rendering/plane_masters/clickcatcher.dm
new file mode 100644
index 00000000000000..8e581dc081c824
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/clickcatcher.dm
@@ -0,0 +1,20 @@
+/atom/movable/screen/plane_master/clickcatcher
+ name = "Click Catcher"
+ documentation = "Contains the screen object we use as a backdrop to catch clicks on portions of the screen that would otherwise contain nothing else. \
+
Will always be below almost everything else"
+ plane = CLICKCATCHER_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ multiz_scaled = FALSE
+ critical = PLANE_CRITICAL_DISPLAY
+
+/atom/movable/screen/plane_master/clickcatcher/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
+ . = ..()
+ RegisterSignal(SSmapping, COMSIG_PLANE_OFFSET_INCREASE, PROC_REF(offset_increased))
+ offset_increased(SSmapping, 0, SSmapping.max_plane_offset)
+
+/atom/movable/screen/plane_master/clickcatcher/proc/offset_increased(datum/source, old_off, new_off)
+ SIGNAL_HANDLER
+ // We only want need the lowest level
+ // If my system better supported changing PM plane values mid op I'd do that, but I do NOT so
+ if(new_off > offset)
+ hide_plane(home?.our_hud?.mymob)
diff --git a/code/_onclick/hud/rendering/plane_masters/core_game_planes.dm b/code/_onclick/hud/rendering/plane_masters/core_game_planes.dm
new file mode 100644
index 00000000000000..89379070b35006
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/core_game_planes.dm
@@ -0,0 +1,122 @@
+//-------------------- FLOOR PLANE --------------------
+
+///Contains just the floor
+/atom/movable/screen/plane_master/floor
+ name = "Floor"
+ documentation = "The well, floor. This is mostly used as a sorting mechanism, but it also lets us create a \"border\" around the game world plane, so its drop shadow will actually work."
+ plane = FLOOR_PLANE
+ render_relay_planes = list(RENDER_PLANE_GAME, LIGHT_MASK_PLANE)
+
+/atom/movable/screen/plane_master/transparent_floor
+ name = "Transparent Floor"
+ documentation = "Really just openspace, stuff that is a turf but has no color or alpha whatsoever.\
+
We use this to draw to just the light mask plane, cause if it's not there we get holes of blackness over openspace"
+ plane = TRANSPARENT_FLOOR_PLANE
+ render_relay_planes = list(LIGHT_MASK_PLANE)
+ // Needs to be critical or it uh, it'll look white
+ critical = PLANE_CRITICAL_DISPLAY|PLANE_CRITICAL_NO_RELAY
+
+/atom/movable/screen/plane_master/floor/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
+ . = ..()
+ add_relay_to(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset), relay_layer = EMISSIVE_FLOOR_LAYER, relay_color = GLOB.em_block_color)
+
+//-------------------- WALL PLANE --------------------
+
+/atom/movable/screen/plane_master/wall
+ name = "Wall"
+ documentation = "Holds all walls. We render this onto the game world. Separate so we can use this + space and floor planes as a guide for where byond blackness is NOT."
+ plane = WALL_PLANE
+ render_relay_planes = list(RENDER_PLANE_GAME_WORLD, LIGHT_MASK_PLANE)
+
+/atom/movable/screen/plane_master/wall/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
+ . = ..()
+ add_relay_to(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset), relay_layer = EMISSIVE_WALL_LAYER, relay_color = GLOB.em_block_color)
+
+/atom/movable/screen/plane_master/wall_upper
+ name = "Upper wall"
+ documentation = "There are some walls that want to render above most things (mostly minerals since they shift over.\
+
We draw them to their own plane so we can hijack them for our emissive mask stuff"
+ plane = WALL_PLANE_UPPER
+ render_relay_planes = list(RENDER_PLANE_GAME_WORLD, LIGHT_MASK_PLANE)
+
+/atom/movable/screen/plane_master/wall_upper/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
+ . = ..()
+ add_relay_to(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset), relay_layer = EMISSIVE_WALL_LAYER, relay_color = GLOB.em_block_color)
+
+//-------------------- AREA PLANE --------------------
+
+/atom/movable/screen/plane_master/area
+ name = "Area"
+ documentation = "Holds the areas themselves, which ends up meaning it holds any overlays/effects we apply to areas. NOT snow or rad storms, those go on above lighting"
+ plane = AREA_PLANE
+
+//-------------------- GAME PLANES --------------------
+
+/atom/movable/screen/plane_master/game
+ name = "Lower game world"
+ documentation = "Exists mostly because of FOV shit. Basically, if you've just got a normal not ABOVE fov thing, and you don't want it masked, stick it here yeah?"
+ plane = GAME_PLANE
+ render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
+
+/atom/movable/screen/plane_master/high_game
+ name = "High Game"
+ documentation = "Holds anything that wants to be displayed above the rest of the game plane, and doesn't want to be clickable. \
+
This includes atmos debug overlays, blind sound images, and mining scanners. \
+
Really only exists for its layering potential, we don't use this for any vfx"
+ plane = HIGH_GAME_PLANE
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+
+//-------------------- FOV PLANES --------------------
+
+/atom/movable/screen/plane_master/game_world_fov_hidden
+ name = "lower game world fov hidden"
+ documentation = "If you want something to be hidden by fov, stick it on this plane. We're masked by the fov blocker plane, so the items on us can actually well, disappear."
+ plane = GAME_PLANE_FOV_HIDDEN
+ render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
+
+/atom/movable/screen/plane_master/game_world_fov_hidden/Initialize(mapload, datum/hud/hud_owner)
+ . = ..()
+ add_filter("vision_cone", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(FIELD_OF_VISION_BLOCKER_RENDER_TARGET, offset), flags = MASK_INVERSE))
+
+/atom/movable/screen/plane_master/field_of_vision_blocker
+ name = "Field of vision blocker"
+ documentation = "This is one of those planes that's only used as a filter. It masks out things that want to be hidden by fov.\
+
Literally just contains FOV images, or masks."
+ plane = FIELD_OF_VISION_BLOCKER_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_target = FIELD_OF_VISION_BLOCKER_RENDER_TARGET
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ render_relay_planes = list()
+ // We do NOT allow offsetting, because there's no case where you would want to block only one layer, at least currently
+ allows_offsetting = FALSE
+ start_hidden = TRUE
+ // We mark as multiz_scaled FALSE so transforms don't effect us, and we draw to the planes below us as if they were us.
+ // This is safe because we will ALWAYS be on the top z layer, so it DON'T MATTER
+ multiz_scaled = FALSE
+
+/atom/movable/screen/plane_master/field_of_vision_blocker/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
+ . = ..()
+ mirror_parent_hidden()
+
+/atom/movable/screen/plane_master/game_world_above
+ name = "Above game world"
+ documentation = "We need a place that's unmasked by fov that also draws above the upper game world fov hidden plane. I told you fov was hacky man."
+ plane = ABOVE_GAME_PLANE
+ render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
+
+/atom/movable/screen/plane_master/game_world_upper
+ name = "Upper game world"
+ documentation = "Ok so fov is kinda fucky, because planes in byond serve both as effect groupings and as rendering orderers. Since that's true, we need a plane that we can stick stuff that draws above fov blocked stuff on."
+ plane = GAME_PLANE_UPPER
+ render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
+
+/atom/movable/screen/plane_master/game_world_upper_fov_hidden
+ name = "Upper game world fov hidden"
+ documentation = "Just as we need a place to draw things \"above\" the hidden fov plane, we also need to be able to hide stuff that draws over the upper game plane."
+ plane = GAME_PLANE_UPPER_FOV_HIDDEN
+ render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
+
+/atom/movable/screen/plane_master/game_world_upper_fov_hidden/Initialize(mapload, datum/hud/hud_owner)
+ . = ..()
+ // Dupe of the other hidden plane
+ add_filter("vision_cone", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(FIELD_OF_VISION_BLOCKER_RENDER_TARGET, offset), flags = MASK_INVERSE))
diff --git a/code/_onclick/hud/rendering/plane_masters/default.dm b/code/_onclick/hud/rendering/plane_masters/default.dm
new file mode 100644
index 00000000000000..f4f49f5bdd86b4
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/default.dm
@@ -0,0 +1,15 @@
+/**
+ * Plane master that byond will by default draw to
+ * Shouldn't be used, exists to prevent people using plane 0
+ * NOTE: If we used SEE_BLACKNESS on a map format that wasn't SIDE_MAP, this is where its darkness would land
+ * This would allow us to control it and do fun things. But we can't because side map doesn't support it, so this is just a stub
+ */
+/atom/movable/screen/plane_master/default
+ name = "Default"
+ documentation = "This is quite fiddly, so bear with me. By default (in byond) everything in the game is rendered onto plane 0. It's the default plane. \
+
But, because we've moved everything we control off plane 0, all that's left is stuff byond internally renders. \
+
What I'd like to do with this is capture byond blackness by giving mobs the SEE_BLACKNESS sight flag. \
+
But we CAN'T because SEE_BLACKNESS does not work with our rendering format. So I just eat it I guess"
+ plane = DEFAULT_PLANE
+ multiz_scaled = FALSE
+ start_hidden = TRUE // Doesn't DO anything, exists to hold this place
diff --git a/code/_onclick/hud/rendering/plane_masters/in_world_chat.dm b/code/_onclick/hud/rendering/plane_masters/in_world_chat.dm
new file mode 100644
index 00000000000000..bc7d327b8fb954
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/in_world_chat.dm
@@ -0,0 +1,20 @@
+/atom/movable/screen/plane_master/runechat
+ name = "Runechat"
+ documentation = "Holds runechat images, that text that pops up when someone say something. Uses a dropshadow to well, look nice."
+ plane = RUNECHAT_PLANE
+ render_relay_planes = list(RENDER_PLANE_NON_GAME)
+
+/atom/movable/screen/plane_master/runechat/show_to(mob/mymob)
+ . = ..()
+ if(!.)
+ return
+ remove_filter("AO")
+ if(istype(mymob) && mymob.canon_client?.prefs?.read_preference(/datum/preference/toggle/ambient_occlusion))
+ add_filter("AO", 1, drop_shadow_filter(x = 0, y = -2, size = 4, color = "#04080FAA"))
+
+/atom/movable/screen/plane_master/balloon_chat
+ name = "Balloon chat"
+ documentation = "Holds ballon chat images, those little text bars that pop up for a second when you do some things. NOT runechat."
+ plane = BALLOON_CHAT_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_relay_planes = list(RENDER_PLANE_NON_GAME)
diff --git a/code/_onclick/hud/rendering/plane_masters/lighting.dm b/code/_onclick/hud/rendering/plane_masters/lighting.dm
new file mode 100644
index 00000000000000..2ac4139b78f49d
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/lighting.dm
@@ -0,0 +1,44 @@
+///Contains all turf lighting
+/atom/movable/screen/plane_master/turf_lighting
+ name = "Turf Lighting"
+ documentation = "Contains all lighting drawn to turfs. Not so complex, draws directly onto the lighting plate."
+ plane = LIGHTING_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_relay_planes = list(RENDER_PLANE_LIGHTING)
+ blend_mode_override = BLEND_ADD
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ critical = PLANE_CRITICAL_DISPLAY
+
+/// This will not work through multiz, because of a byond bug with BLEND_MULTIPLY
+/// Bug report is up, waiting on a fix
+/atom/movable/screen/plane_master/o_light_visual
+ name = "Overlight light visual"
+ documentation = "Holds overlay lighting objects, or the sort of lighting that's a well, overlay stuck to something.\
+
Exists because lighting updating is really slow, and movement needs to feel smooth.\
+
We draw to the game plane, and mask out space for ourselves on the lighting plane so any color we have has the chance to display."
+ plane = O_LIGHTING_VISUAL_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_target = O_LIGHTING_VISUAL_RENDER_TARGET
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ blend_mode = BLEND_MULTIPLY
+ critical = PLANE_CRITICAL_DISPLAY
+
+/atom/movable/screen/plane_master/above_lighting
+ name = "Above lighting"
+ plane = ABOVE_LIGHTING_PLANE
+ documentation = "Anything on the game plane that needs a space to draw on that will be above the lighting plane.\
+
Mostly little alerts and effects, also sometimes contains things that are meant to look as if they glow."
+
+/**
+ * Handles emissive overlays and emissive blockers.
+ */
+/atom/movable/screen/plane_master/emissive
+ name = "Emissive"
+ documentation = "Holds things that will be used to mask the lighting plane later on. Masked by the Emissive Mask plane to ensure we don't emiss out under a wall.\
+
Relayed onto the Emissive render plane to do the actual masking of lighting, since we need to be transformed and other emissive stuff needs to be transformed too.\
+
Don't want to double scale now."
+ plane = EMISSIVE_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ render_relay_planes = list(EMISSIVE_RENDER_PLATE)
+ critical = PLANE_CRITICAL_DISPLAY
diff --git a/code/_onclick/hud/rendering/plane_masters/parallax.dm b/code/_onclick/hud/rendering/plane_masters/parallax.dm
new file mode 100644
index 00000000000000..ee49ab177007ec
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/parallax.dm
@@ -0,0 +1,105 @@
+/atom/movable/screen/plane_master/parallax_white
+ name = "Parallax whitifier"
+ documentation = "Essentially a backdrop for the parallax plane. We're rendered just below it, so we'll be multiplied by its well, parallax.\
+
If you want something to look as if it has parallax on it, draw it to this plane."
+ plane = PLANE_SPACE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_relay_planes = list(RENDER_PLANE_GAME, LIGHT_MASK_PLANE)
+ critical = PLANE_CRITICAL_FUCKO_PARALLAX // goes funny when touched. no idea why I don't trust byond
+
+/atom/movable/screen/plane_master/parallax_white/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
+ . = ..()
+ add_relay_to(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset), relay_layer = EMISSIVE_SPACE_LAYER)
+
+///Contains space parallax
+/atom/movable/screen/plane_master/parallax
+ name = "Parallax"
+ documentation = "Contains parallax, or to be more exact the screen objects that hold parallax.\
+
Note the BLEND_MULTIPLY. The trick here is how low our plane value is. Because of that, we draw below almost everything in the game.\
+
We abuse this to ensure we multiply against the Parallax whitifier plane, or space's plane. It's set to full white, so when you do the multiply you just get parallax out where it well, makes sense to be.\
+
Also notice that the parent parallax plane is mirrored down to all children. We want to support viewing parallax across all z levels at once."
+ plane = PLANE_SPACE_PARALLAX
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ blend_mode = BLEND_MULTIPLY
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ multiz_scaled = FALSE
+
+/atom/movable/screen/plane_master/parallax/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
+ . = ..()
+ if(offset != 0)
+ // You aren't the source? don't change yourself
+ return
+ RegisterSignal(SSmapping, COMSIG_PLANE_OFFSET_INCREASE, PROC_REF(on_offset_increase))
+ RegisterSignal(SSdcs, COMSIG_NARSIE_SUMMON_UPDATE, PROC_REF(narsie_modified))
+ if(GLOB.narsie_summon_count >= 1)
+ narsie_start_midway(GLOB.narsie_effect_last_modified) // We assume we're on the start, so we can use this number
+ offset_increase(0, SSmapping.max_plane_offset)
+
+/atom/movable/screen/plane_master/parallax/proc/on_offset_increase(datum/source, old_offset, new_offset)
+ SIGNAL_HANDLER
+ offset_increase(old_offset, new_offset)
+
+/atom/movable/screen/plane_master/parallax/proc/offset_increase(old_offset, new_offset)
+ // Parallax will be mirrored down to any new planes that are added, so it will properly render across mirage borders
+ for(var/offset in old_offset to new_offset)
+ if(offset != 0)
+ // Overlay so we don't multiply twice, and thus fuck up our rendering
+ add_relay_to(GET_NEW_PLANE(plane, offset), BLEND_OVERLAY)
+
+// Hacky shit to ensure parallax works in perf mode
+/atom/movable/screen/plane_master/parallax/outside_bounds(mob/relevant)
+ if(offset == 0)
+ remove_relay_from(GET_NEW_PLANE(RENDER_PLANE_GAME, 0))
+ is_outside_bounds = TRUE // I'm sorry :(
+ return
+ // If we can't render, and we aren't the bottom layer, don't render us
+ // This way we only multiply against stuff that's not fullwhite space
+ var/atom/movable/screen/plane_master/parent_parallax = home.our_hud.get_plane_master(PLANE_SPACE_PARALLAX)
+ var/turf/viewing_turf = get_turf(relevant)
+ if(!viewing_turf || offset != GET_LOWEST_STACK_OFFSET(viewing_turf.z))
+ parent_parallax.remove_relay_from(plane)
+ else
+ parent_parallax.add_relay_to(plane, BLEND_OVERLAY)
+ return ..()
+
+/atom/movable/screen/plane_master/parallax/inside_bounds(mob/relevant)
+ if(offset == 0)
+ add_relay_to(GET_NEW_PLANE(RENDER_PLANE_GAME, 0))
+ is_outside_bounds = FALSE
+ return
+ // Always readd, just in case we lost it
+ var/atom/movable/screen/plane_master/parent_parallax = home.our_hud.get_plane_master(PLANE_SPACE_PARALLAX)
+ parent_parallax.add_relay_to(plane, BLEND_OVERLAY)
+ return ..()
+
+// Needs to handle rejoining on a lower z level, so we NEED to readd old planes
+/atom/movable/screen/plane_master/parallax/check_outside_bounds()
+ // If we're outside bounds AND we're the 0th plane, we need to show cause parallax is hacked to hell
+ return offset != 0 && is_outside_bounds
+
+/// Starts the narsie animation midway, so we can catch up to everyone else quickly
+/atom/movable/screen/plane_master/parallax/proc/narsie_start_midway(start_time)
+ var/time_elapsed = world.time - start_time
+ narsie_summoned_effect(max(16 SECONDS - time_elapsed, 0))
+
+/// Starts the narsie animation, make us grey, then red
+/atom/movable/screen/plane_master/parallax/proc/narsie_modified(datum/source, new_count)
+ SIGNAL_HANDLER
+ if(new_count >= 1)
+ narsie_summoned_effect(16 SECONDS)
+ else
+ narsie_unsummoned()
+
+/atom/movable/screen/plane_master/parallax/proc/narsie_summoned_effect(animate_time)
+ if(GLOB.narsie_summon_count >= 2)
+ var/static/list/nightmare_parallax = list(255,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, -130,0,0,0)
+ animate(src, color = nightmare_parallax, time = animate_time)
+ return
+
+ var/static/list/grey_parallax = list(0.4,0.4,0.4,0, 0.4,0.4,0.4,0, 0.4,0.4,0.4,0, 0,0,0,1, -0.1,-0.1,-0.1,0)
+ // We're gonna animate ourselves grey
+ // Then, once it's done, about 40 seconds into the event itself, we're gonna start doin some shit. see below
+ animate(src, color = grey_parallax, time = animate_time)
+
+/atom/movable/screen/plane_master/parallax/proc/narsie_unsummoned()
+ animate(src, color = null, time = 8 SECONDS)
diff --git a/code/_onclick/hud/rendering/plane_masters/pipecrawl.dm b/code/_onclick/hud/rendering/plane_masters/pipecrawl.dm
new file mode 100644
index 00000000000000..cb75135e1a4914
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/pipecrawl.dm
@@ -0,0 +1,15 @@
+/atom/movable/screen/plane_master/pipecrawl
+ name = "Pipecrawl"
+ documentation = "Holds pipecrawl images generated during well, pipecrawling.\
+
Has a few effects and a funky color matrix designed to make things a bit more visually readable."
+ plane = PIPECRAWL_IMAGES_PLANE
+ start_hidden = TRUE
+
+/atom/movable/screen/plane_master/pipecrawl/Initialize(mapload, datum/hud/hud_owner)
+ . = ..()
+ // Makes everything on this plane slightly brighter
+ // Has a nice effect, makes thing stand out
+ color = list(1.2,0,0,0, 0,1.2,0,0, 0,0,1.2,0, 0,0,0,1, 0,0,0,0)
+ // This serves a similar purpose, I want the pipes to pop
+ add_filter("pipe_dropshadow", 1, drop_shadow_filter(x = -1, y= -1, size = 1, color = "#0000007A"))
+ mirror_parent_hidden()
diff --git a/code/_onclick/hud/rendering/plane_masters/simple_plane_masters.dm b/code/_onclick/hud/rendering/plane_masters/simple_plane_masters.dm
new file mode 100644
index 00000000000000..ea0ad21a773558
--- /dev/null
+++ b/code/_onclick/hud/rendering/plane_masters/simple_plane_masters.dm
@@ -0,0 +1,82 @@
+/*
+ * Put plane masters that are just a simple type def in here, anything more complex should get its own file
+ */
+
+/atom/movable/screen/plane_master/gravpulse
+ name = "Gravpulse"
+ documentation = "Ok so this one's fun. Basically, we want to be able to distort the game plane when a grav annom is around.\
+
So we draw the pattern we want to use to this plane, and it's then used as a render target by a distortion filter on the game plane.\
+
Note the blend mode and lack of relay targets. This plane exists only to distort, it's never rendered anywhere."
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ plane = GRAVITY_PULSE_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ blend_mode = BLEND_ADD
+ render_target = GRAVITY_PULSE_RENDER_TARGET
+ render_relay_planes = list()
+
+/atom/movable/screen/plane_master/seethrough
+ name = "Seethrough"
+ documentation = "Holds the seethrough versions (done using image overrides) of large objects. Mouse transparent, so you can click through them."
+ plane = SEETHROUGH_PLANE
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ render_relay_planes = list(RENDER_PLANE_GAME_WORLD)
+ start_hidden = TRUE
+
+/atom/movable/screen/plane_master/massive_obj
+ name = "Massive object"
+ documentation = "Huge objects need to render above everything else on the game plane, otherwise they'd well, get clipped and look not that huge. This does that."
+ plane = MASSIVE_OBJ_PLANE
+
+/atom/movable/screen/plane_master/point
+ name = "Point"
+ documentation = "I mean like, what do you want me to say? Points draw over pretty much everything else, so they get their own plane. Remember we layer render relays to draw planes in their proper order on render plates."
+ plane = POINT_PLANE
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+
+/atom/movable/screen/plane_master/ghost
+ name = "Ghost"
+ documentation = "Ghosts draw here, so they don't get mixed up in the visuals of the game world. Note, this is not not how we HIDE ghosts from people, that's done with invisible and see_invisible."
+ plane = GHOST_PLANE
+ render_relay_planes = list(RENDER_PLANE_NON_GAME)
+
+/atom/movable/screen/plane_master/fullscreen
+ name = "Fullscreen"
+ documentation = "Holds anything that applies to or above the full screen. \
+
Note, it's still rendered underneath hud objects, but this lets us control the order that things like death/damage effects render in."
+ plane = FULLSCREEN_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_relay_planes = list(RENDER_PLANE_NON_GAME)
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ allows_offsetting = FALSE
+
+/atom/movable/screen/plane_master/hud
+ name = "HUD"
+ documentation = "Contains anything that want to be rendered on the hud. Typically is just screen elements."
+ plane = HUD_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_relay_planes = list(RENDER_PLANE_NON_GAME)
+ allows_offsetting = FALSE
+
+/atom/movable/screen/plane_master/above_hud
+ name = "Above HUD"
+ documentation = "Anything that wants to be drawn ABOVE the rest of the hud. Typically close buttons and other elements that need to be always visible. Think preventing draggable action button memes."
+ plane = ABOVE_HUD_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_relay_planes = list(RENDER_PLANE_NON_GAME)
+ allows_offsetting = FALSE
+
+/atom/movable/screen/plane_master/splashscreen
+ name = "Splashscreen"
+ documentation = "Cinematics and the splash screen."
+ plane = SPLASHSCREEN_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_relay_planes = list(RENDER_PLANE_NON_GAME)
+ allows_offsetting = FALSE
+
+/atom/movable/screen/plane_master/escape_menu
+ name = "Escape Menu"
+ documentation = "Anything relating to the escape menu."
+ plane = ESCAPE_MENU_PLANE
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ render_relay_planes = list(RENDER_PLANE_MASTER)
+ allows_offsetting = FALSE
diff --git a/code/controllers/subsystem/circuit_component.dm b/code/controllers/subsystem/circuit_component.dm
index 3ef1be5a3aa322..bae302ed9d0a3c 100644
--- a/code/controllers/subsystem/circuit_component.dm
+++ b/code/controllers/subsystem/circuit_component.dm
@@ -39,7 +39,7 @@ SUBSYSTEM_DEF(circuit_component)
* Those that registered first will be executed first and those registered last will be executed last.
*/
/datum/controller/subsystem/circuit_component/proc/add_callback(datum/port/input, datum/callback/to_call)
- if(instant_run_tick == world.time && (TICK_USAGE - instant_run_start_cpu_usage) < instant_run_max_cpu_usage)
+ if(instant_run_tick == world.time && (TICK_USAGE - instant_run_start_cpu_usage) <= instant_run_max_cpu_usage)
instant_run_callbacks_to_run += to_call
return
@@ -80,7 +80,7 @@ SUBSYSTEM_DEF(circuit_component)
else
instant_run_tick = 0
- if((TICK_USAGE - instant_run_start_cpu_usage) < instant_run_max_cpu_usage)
+ if((TICK_USAGE - instant_run_start_cpu_usage) <= instant_run_max_cpu_usage)
return received_inputs
else
return null
diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm
index 511a438bf9a60c..f047d17d944f0b 100644
--- a/code/controllers/subsystem/economy.dm
+++ b/code/controllers/subsystem/economy.dm
@@ -53,10 +53,6 @@ SUBSYSTEM_DEF(economy)
*/
var/list/audit_log = list()
- /// Total value of exported materials.
- var/export_total = 0
- /// Total value of imported goods.
- var/import_total = 0
/// Number of mail items generated.
var/mail_waiting = 0
/// Mail Holiday: AKA does mail arrive today? Always blocked on Sundays.
diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm
index 88112f9322676b..d21e2da97d2e74 100644
--- a/code/controllers/subsystem/garbage.dm
+++ b/code/controllers/subsystem/garbage.dm
@@ -359,75 +359,80 @@ SUBSYSTEM_DEF(garbage)
/datum/qdel_item/New(mytype)
name = "[mytype]"
-
/// Should be treated as a replacement for the 'del' keyword.
///
/// Datums passed to this will be given a chance to clean up references to allow the GC to collect them.
-/proc/qdel(datum/D, force=FALSE, ...)
- if(!istype(D))
- del(D)
+/proc/qdel(datum/to_delete, force = FALSE, ...)
+ if(!istype(to_delete))
+ del(to_delete)
return
- var/datum/qdel_item/I = SSgarbage.items[D.type]
- if (!I)
- I = SSgarbage.items[D.type] = new /datum/qdel_item(D.type)
- I.qdels++
+ var/datum/qdel_item/trash = SSgarbage.items[to_delete.type]
+ if (isnull(trash))
+ trash = SSgarbage.items[to_delete.type] = new /datum/qdel_item(to_delete.type)
+ trash.qdels++
- if(isnull(D.gc_destroyed))
- if (SEND_SIGNAL(D, COMSIG_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted
- return
- D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED
- var/start_time = world.time
- var/start_tick = world.tick_usage
- SEND_SIGNAL(D, COMSIG_QDELETING, force) // Let the (remaining) components know about the result of Destroy
- var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up.
- if(world.time != start_time)
- I.slept_destroy++
- else
- I.destroy_time += TICK_USAGE_TO_MS(start_tick)
- if(!D)
+ if(!isnull(to_delete.gc_destroyed))
+ if(to_delete.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
+ CRASH("[to_delete.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic")
+ return
+
+ if (SEND_SIGNAL(to_delete, COMSIG_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted
+ return
+
+ to_delete.gc_destroyed = GC_CURRENTLY_BEING_QDELETED
+ var/start_time = world.time
+ var/start_tick = world.tick_usage
+ SEND_SIGNAL(to_delete, COMSIG_QDELETING, force) // Let the (remaining) components know about the result of Destroy
+ var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up.
+
+ if(world.time != start_time)
+ trash.slept_destroy++
+ else
+ trash.destroy_time += TICK_USAGE_TO_MS(start_tick)
+
+ if(isnull(to_delete))
+ return
+
+ switch(hint)
+ if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion.
+ SSgarbage.Queue(to_delete)
+ if (QDEL_HINT_IWILLGC)
+ to_delete.gc_destroyed = world.time
return
- switch(hint)
- if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion.
- SSgarbage.Queue(D)
- if (QDEL_HINT_IWILLGC)
- D.gc_destroyed = world.time
+ if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory.
+ if(!force)
+ to_delete.gc_destroyed = null //clear the gc variable (important!)
return
- if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory.
- if(!force)
- D.gc_destroyed = null //clear the gc variable (important!)
- return
- // Returning LETMELIVE after being told to force destroy
- // indicates the objects Destroy() does not respect force
- #ifdef TESTING
- if(!I.no_respect_force)
- testing("WARNING: [D.type] has been force deleted, but is \
- returning an immortal QDEL_HINT, indicating it does \
- not respect the force flag for qdel(). It has been \
- placed in the queue, further instances of this type \
- will also be queued.")
- #endif
- I.no_respect_force++
+ // Returning LETMELIVE after being told to force destroy
+ // indicates the objects Destroy() does not respect force
+ #ifdef TESTING
+ if(!trash.no_respect_force)
+ testing("WARNING: [to_delete.type] has been force deleted, but is \
+ returning an immortal QDEL_HINT, indicating it does \
+ not respect the force flag for qdel(). It has been \
+ placed in the queue, further instances of this type \
+ will also be queued.")
+ #endif
+ trash.no_respect_force++
- SSgarbage.Queue(D)
- if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete
- SSgarbage.Queue(D, GC_QUEUE_HARDDELETE)
- if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste.
- SSgarbage.HardDelete(D)
- #ifdef REFERENCE_TRACKING
- if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion.
- SSgarbage.Queue(D)
- INVOKE_ASYNC(D, TYPE_PROC_REF(/datum, find_references))
- if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object.
- SSgarbage.Queue(D)
- SSgarbage.reference_find_on_fail[text_ref(D)] = TRUE
+ SSgarbage.Queue(to_delete)
+ if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete
+ SSgarbage.Queue(to_delete, GC_QUEUE_HARDDELETE)
+ if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste.
+ SSgarbage.HardDelete(to_delete)
+ #ifdef REFERENCE_TRACKING
+ if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion.
+ SSgarbage.Queue(to_delete)
+ INVOKE_ASYNC(to_delete, TYPE_PROC_REF(/datum, find_references))
+ if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object.
+ SSgarbage.Queue(to_delete)
+ SSgarbage.reference_find_on_fail[text_ref(to_delete)] = TRUE
+ #endif
+ else
+ #ifdef TESTING
+ if(!trash.no_hint)
+ testing("WARNING: [to_delete.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.")
#endif
- else
- #ifdef TESTING
- if(!I.no_hint)
- testing("WARNING: [D.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.")
- #endif
- I.no_hint++
- SSgarbage.Queue(D)
- else if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
- CRASH("[D.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic")
+ trash.no_hint++
+ SSgarbage.Queue(to_delete)
diff --git a/code/controllers/subsystem/movement/movement_types.dm b/code/controllers/subsystem/movement/movement_types.dm
index 0b464a9a1960ce..6e18d35dd8ff44 100644
--- a/code/controllers/subsystem/movement/movement_types.dm
+++ b/code/controllers/subsystem/movement/movement_types.dm
@@ -367,7 +367,7 @@
///Bool used to determine if we're already making a path in JPS. this prevents us from re-pathing while we're already busy.
var/is_pathing = FALSE
///Callbacks to invoke once we make a path
- var/list/datum/callback/on_finish_callbacks
+ var/list/datum/callback/on_finish_callbacks = list()
/datum/move_loop/has_target/jps/New(datum/movement_packet/owner, datum/controller/subsystem/movement/controller, atom/moving, priority, flags, datum/extra_info)
. = ..()
diff --git a/code/controllers/subsystem/nightshift.dm b/code/controllers/subsystem/nightshift.dm
index 78583cef3503ff..b8df42742e43c1 100644
--- a/code/controllers/subsystem/nightshift.dm
+++ b/code/controllers/subsystem/nightshift.dm
@@ -24,7 +24,12 @@ SUBSYSTEM_DEF(nightshift)
check_nightshift()
/datum/controller/subsystem/nightshift/proc/announce(message)
- priority_announce(message, sound='sound/misc/notice2.ogg', sender_override="Automated Lighting System Announcement")
+ priority_announce(
+ text = message,
+ sound = 'sound/misc/notice2.ogg',
+ sender_override = "Automated Lighting System Announcement",
+ color_override = "grey",
+ )
/datum/controller/subsystem/nightshift/proc/check_nightshift()
var/emergency = SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED
diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm
deleted file mode 100644
index ce3c1f7619b016..00000000000000
--- a/code/controllers/subsystem/persistence.dm
+++ /dev/null
@@ -1,631 +0,0 @@
-#define FILE_RECENT_MAPS "data/RecentMaps.json"
-
-#define KEEP_ROUNDS_MAP 3
-
-SUBSYSTEM_DEF(persistence)
- name = "Persistence"
- init_order = INIT_ORDER_PERSISTENCE
- flags = SS_NO_FIRE
-
- ///instantiated wall engraving components
- var/list/wall_engravings = list()
- ///all saved persistent engravings loaded from JSON
- var/list/saved_engravings = list()
- ///tattoo stories that we're saving.
- var/list/prison_tattoos_to_save = list()
- ///tattoo stories that have been selected for this round.
- var/list/prison_tattoos_to_use = list()
- var/list/saved_messages = list()
- var/list/saved_modes = list(1,2,3)
- var/list/saved_maps = list()
- var/list/blocked_maps = list()
- var/list/saved_trophies = list()
- var/list/picture_logging_information = list()
- var/list/obj/structure/sign/picture_frame/photo_frames
- var/list/obj/item/storage/photo_album/photo_albums
- var/rounds_since_engine_exploded = 0
- var/delam_highscore = 0
- var/tram_hits_this_round = 0
- var/tram_hits_last_round = 0
-
-/datum/controller/subsystem/persistence/Initialize()
- load_poly()
- load_wall_engravings()
- load_prisoner_tattoos()
- load_trophies()
- load_recent_maps()
- load_photo_persistence()
- load_randomized_recipes()
- load_custom_outfits()
- load_delamination_counter()
- load_tram_counter()
- load_panic_bunker() //SKYRAT EDIT ADDITION - PANICBUNKER
- load_adventures()
- return SS_INIT_SUCCESS
-
-///Collects all data to persist.
-/datum/controller/subsystem/persistence/proc/collect_data()
- save_wall_engravings()
- save_prisoner_tattoos()
- collect_trophies()
- collect_maps()
- save_photo_persistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION.
- save_randomized_recipes()
- save_scars()
- save_modular_persistence() // SKYRAT EDIT ADDITION - MODULAR_PERSISTENCE
- save_custom_outfits()
- save_delamination_counter()
- if(SStransport.can_fire)
- for(var/datum/transport_controller/linear/tram/transport as anything in SStransport.transports_by_type[TRANSPORT_TYPE_TRAM])
- save_tram_history(transport.specific_transport_id)
- save_tram_counter()
- save_panic_bunker() //SKYRAT EDIT ADDITION - PANICBUNKER
-
-///Loads up Poly's speech buffer.
-/datum/controller/subsystem/persistence/proc/load_poly()
- for(var/mob/living/simple_animal/parrot/poly/P in GLOB.alive_mob_list)
- twitterize(P.speech_buffer, "polytalk")
- break //Who's been duping the bird?!
-
-///Loads all engravings, and places a select amount in maintenance and the prison.
-/datum/controller/subsystem/persistence/proc/load_wall_engravings()
- var/json_file = file(ENGRAVING_SAVE_FILE)
- if(!fexists(json_file))
- return
-
- var/list/json = json_decode(file2text(json_file))
- if(!json)
- return
-
- if(json["version"] < ENGRAVING_PERSISTENCE_VERSION)
- update_wall_engravings(json)
-
- saved_engravings = json["entries"]
-
- if(!saved_engravings.len)
- log_world("Failed to load engraved messages on map [SSmapping.config.map_name]")
- return
-
- var/list/viable_turfs = get_area_turfs(/area/station/maintenance, subtypes = TRUE) + get_area_turfs(/area/station/security/prison, subtypes = TRUE)
- var/list/turfs_to_pick_from = list()
-
- for(var/turf/T as anything in viable_turfs)
- if(!isclosedturf(T))
- continue
- turfs_to_pick_from += T
-
- var/successfully_loaded_engravings = 0
-
- for(var/iteration in 1 to rand(MIN_PERSISTENT_ENGRAVINGS, MAX_PERSISTENT_ENGRAVINGS))
- var/engraving = pick_n_take(saved_engravings)
- if(!islist(engraving))
- stack_trace("something's wrong with the engraving data! one of the saved engravings wasn't a list!")
- continue
-
- var/turf/closed/engraved_wall = pick(turfs_to_pick_from)
-
- if(HAS_TRAIT(engraved_wall, TRAIT_NOT_ENGRAVABLE))
- continue
-
- engraved_wall.AddComponent(/datum/component/engraved, engraving["story"], FALSE, engraving["story_value"])
- successfully_loaded_engravings++
- turfs_to_pick_from -= engraved_wall
-
- log_world("Loaded [successfully_loaded_engravings] engraved messages on map [SSmapping.config.map_name]")
-
-///Saves all new engravings in the world.
-/datum/controller/subsystem/persistence/proc/save_wall_engravings()
- var/list/saved_data = list()
-
- saved_data["version"] = ENGRAVING_PERSISTENCE_VERSION
- saved_data["entries"] = list()
-
-
- var/json_file = file(ENGRAVING_SAVE_FILE)
- if(fexists(json_file))
- var/list/old_json = json_decode(file2text(json_file))
- if(old_json)
- saved_data["entries"] = old_json["entries"]
-
- for(var/datum/component/engraved/engraving in wall_engravings)
- if(!engraving.persistent_save)
- continue
- var/area/engraved_area = get_area(engraving.parent)
- if(!(engraved_area.area_flags & PERSISTENT_ENGRAVINGS))
- continue
- saved_data["entries"] += engraving.save_persistent()
-
- fdel(json_file)
-
- WRITE_FILE(json_file, json_encode(saved_data))
-
-///This proc can update entries if the format has changed at some point.
-/datum/controller/subsystem/persistence/proc/update_wall_engravings(json)
- for(var/engraving_entry in json["entries"])
- continue //no versioning yet
-
- //Save it to the file
- var/json_file = file(ENGRAVING_SAVE_FILE)
- fdel(json_file)
- WRITE_FILE(json_file, json_encode(json))
-
- return json
-
-///Loads all tattoos, and select a few based on the amount of prisoner spawn positions.
-/datum/controller/subsystem/persistence/proc/load_prisoner_tattoos()
- var/json_file = file(PRISONER_TATTOO_SAVE_FILE)
- if(!fexists(json_file))
- return
- var/list/json = json_decode(file2text(json_file))
- if(!json)
- return
-
- if(json["version"] < TATTOO_PERSISTENCE_VERSION)
- update_prisoner_tattoos(json)
-
- var/datum/job/prisoner_datum = SSjob.name_occupations[JOB_PRISONER]
- if(!prisoner_datum)
- return
- var/iterations_allowed = prisoner_datum.spawn_positions
-
- var/list/entries = json["entries"]
- if(entries.len)
- for(var/index in 1 to iterations_allowed)
- prison_tattoos_to_use += list(entries[rand(1, entries.len)])
-
- log_world("Loaded [prison_tattoos_to_use.len] prison tattoos")
-
-///Saves all tattoos, so they can appear on prisoners in future rounds
-/datum/controller/subsystem/persistence/proc/save_prisoner_tattoos()
- var/json_file = file(PRISONER_TATTOO_SAVE_FILE)
- var/list/saved_data = list()
- var/list/entries = list()
-
- if(fexists(json_file))
- var/list/old_json = json_decode(file2text(json_file))
- if(old_json)
- entries += old_json["entries"] //Save the old if its there
-
- entries += prison_tattoos_to_save
-
- saved_data["version"] = ENGRAVING_PERSISTENCE_VERSION
- saved_data["entries"] = entries
-
- fdel(json_file)
- WRITE_FILE(json_file, json_encode(saved_data))
-
-///This proc can update entries if the format has changed at some point.
-/datum/controller/subsystem/persistence/proc/update_prisoner_tattoos(json)
- for(var/tattoo_entry in json["entries"])
- continue //no versioning yet
-
- //Save it to the file
- var/json_file = file(PRISONER_TATTOO_SAVE_FILE)
- fdel(json_file)
- WRITE_FILE(json_file, json_encode(json))
-
- return json
-
-/// Loads the trophies from the source file, and places a few in trophy display cases.
-/datum/controller/subsystem/persistence/proc/load_trophies()
- var/list/raw_saved_trophies = list()
- if(fexists("data/npc_saves/TrophyItems.json"))
- var/json_file = file("data/npc_saves/TrophyItems.json")
- if(!fexists(json_file))
- return
- var/list/json = json_decode(file2text(json_file))
- if(!json)
- return
- raw_saved_trophies = json["data"]
- fdel("data/npc_saves/TrophyItems.json")
- else
- var/json_file = file("data/trophy_items.json")
- if(!fexists(json_file))
- return
- var/list/json = json_decode(file2text(json_file))
- if(!json)
- return
- raw_saved_trophies = json["data"]
-
- for(var/raw_json in raw_saved_trophies)
- var/datum/trophy_data/parsed_trophy_data = new
- parsed_trophy_data.load_from_json(raw_json)
- saved_trophies += parsed_trophy_data
-
- set_up_trophies()
-
-///trophy data datum, for admin manipulation
-/datum/trophy_data
- ///path of the item the trophy will try to mimic, null if path_string is invalid
- var/path
- ///the message that appears under the item
- var/message
- ///the key of the one who placed the item in the trophy case
- var/placer_key
-
-/datum/trophy_data/proc/load_from_json(list/json_data)
- path = json_data["path"]
- message = json_data["message"]
- placer_key = json_data["placer_key"]
-
-/datum/trophy_data/proc/to_json()
- var/list/new_data = list()
- new_data["path"] = path
- new_data["message"] = message
- new_data["placer_key"] = placer_key
- new_data["is_valid"] = text2path(path) ? TRUE : FALSE
- return new_data
-
-/// Returns a list for the admin trophy panel.
-/datum/controller/subsystem/persistence/proc/trophy_ui_data()
- var/list/ui_data = list()
- for(var/datum/trophy_data/data in saved_trophies)
- var/list/pdata = data.to_json()
- pdata["ref"] = REF(data)
- ui_data += list(pdata)
-
- return ui_data
-
-/// Loads up the amount of times maps appeared to alter their appearance in voting and rotation.
-/datum/controller/subsystem/persistence/proc/load_recent_maps()
- var/map_sav = FILE_RECENT_MAPS
- if(!fexists(FILE_RECENT_MAPS))
- return
- var/list/json = json_decode(file2text(map_sav))
- if(!json)
- return
- saved_maps = json["data"]
-
- //Convert the mapping data to a shared blocking list, saves us doing this in several places later.
- for(var/map in config.maplist)
- var/datum/map_config/VM = config.maplist[map]
- var/run = 0
- if(VM.map_name == SSmapping.config.map_name)
- run++
- for(var/name in SSpersistence.saved_maps)
- if(VM.map_name == name)
- run++
- if(run >= 2) //If run twice in the last KEEP_ROUNDS_MAP + 1 (including current) rounds, disable map for voting and rotation.
- blocked_maps += VM.map_name
-
-/// Puts trophies into trophy cases.
-/datum/controller/subsystem/persistence/proc/set_up_trophies()
-
- var/list/valid_trophies = list()
-
- for(var/datum/trophy_data/data in saved_trophies)
-
- if(!data) //sanity for incorrect deserialization
- continue
-
- var/path = text2path(data.path)
- if(!path) //If the item no longer exist, ignore it
- continue
-
- valid_trophies += data
-
- for(var/obj/structure/displaycase/trophy/trophy_case in GLOB.trophy_cases)
- if(!valid_trophies.len)
- break
-
- if(trophy_case.showpiece)
- continue
-
- trophy_case.set_up_trophy(pick_n_take(valid_trophies))
-
-///Loads up the photo album source file.
-/datum/controller/subsystem/persistence/proc/get_photo_albums()
- var/album_path = file("data/photo_albums.json")
- if(fexists(album_path))
- return json_decode(file2text(album_path))
-
-///Loads up the photo frames source file.
-/datum/controller/subsystem/persistence/proc/get_photo_frames()
- var/frame_path = file("data/photo_frames.json")
- if(fexists(frame_path))
- return json_decode(file2text(frame_path))
-
-/// Removes the identifier of a persistent photo frame from the json.
-/datum/controller/subsystem/persistence/proc/remove_photo_frames(identifier)
- var/frame_path = file("data/photo_frames.json")
- if(!fexists(frame_path))
- return
-
- var/frame_json = json_decode(file2text(frame_path))
- frame_json -= identifier
-
- frame_json = json_encode(frame_json)
- fdel(frame_path)
- WRITE_FILE(frame_path, frame_json)
-
-///Loads photo albums, and populates them; also loads and applies frames to picture frames.
-/datum/controller/subsystem/persistence/proc/load_photo_persistence()
- var/album_path = file("data/photo_albums.json")
- var/frame_path = file("data/photo_frames.json")
- if(fexists(album_path))
- var/list/json = json_decode(file2text(album_path))
- if(json.len)
- for(var/i in photo_albums)
- var/obj/item/storage/photo_album/A = i
- if(!A.persistence_id)
- continue
- if(json[A.persistence_id])
- A.populate_from_id_list(json[A.persistence_id])
-
- if(fexists(frame_path))
- var/list/json = json_decode(file2text(frame_path))
- if(json.len)
- for(var/i in photo_frames)
- var/obj/structure/sign/picture_frame/PF = i
- if(!PF.persistence_id)
- continue
- if(json[PF.persistence_id])
- PF.load_from_id(json[PF.persistence_id])
-
-///Saves the contents of photo albums and the picture frames.
-/datum/controller/subsystem/persistence/proc/save_photo_persistence()
- var/album_path = file("data/photo_albums.json")
- var/frame_path = file("data/photo_frames.json")
-
- var/list/frame_json = list()
- var/list/album_json = list()
-
- if(fexists(album_path))
- album_json = json_decode(file2text(album_path))
- fdel(album_path)
-
- for(var/i in photo_albums)
- var/obj/item/storage/photo_album/A = i
- if(!istype(A) || !A.persistence_id)
- continue
- var/list/L = A.get_picture_id_list()
- album_json[A.persistence_id] = L
-
- album_json = json_encode(album_json)
-
- WRITE_FILE(album_path, album_json)
-
- if(fexists(frame_path))
- frame_json = json_decode(file2text(frame_path))
- fdel(frame_path)
-
- for(var/i in photo_frames)
- var/obj/structure/sign/picture_frame/F = i
- if(!istype(F) || !F.persistence_id)
- continue
- frame_json[F.persistence_id] = F.get_photo_id()
-
- frame_json = json_encode(frame_json)
-
- WRITE_FILE(frame_path, frame_json)
-
-///Collects trophies from all existing trophy cases.
-/datum/controller/subsystem/persistence/proc/collect_trophies()
- for(var/trophy_case in GLOB.trophy_cases)
- save_trophy(trophy_case)
-
- var/json_file = file("data/trophy_items.json")
- var/list/file_data = list()
- var/list/converted_data = list()
-
- for(var/datum/trophy_data/data in saved_trophies)
- converted_data += list(data.to_json())
-
- converted_data = remove_duplicate_trophies(converted_data)
-
- file_data["data"] = converted_data
- fdel(json_file)
- WRITE_FILE(json_file, json_encode(file_data))
-
-///gets the list of json trophies, and deletes the ones with an identical path and message
-/datum/controller/subsystem/persistence/proc/remove_duplicate_trophies(list/trophies)
- var/list/ukeys = list()
- . = list()
- for(var/trophy in trophies)
- var/tkey = "[trophy["path"]]-[trophy["message"]]"
- if(ukeys[tkey])
- continue
- else
- . += list(trophy)
- ukeys[tkey] = TRUE
-
-///If there is a trophy in the trophy case, saved it, if the trophy was not a holo trophy and has a message attached.
-/datum/controller/subsystem/persistence/proc/save_trophy(obj/structure/displaycase/trophy/trophy_case)
- if(!trophy_case.holographic_showpiece && trophy_case.showpiece && trophy_case.trophy_message)
- var/datum/trophy_data/data = new
- data.path = trophy_case.showpiece.type
- data.message = trophy_case.trophy_message
- data.placer_key = trophy_case.placer_key
- saved_trophies += data
-
-///Updates the list of the most recent maps.
-/datum/controller/subsystem/persistence/proc/collect_maps()
- if(length(saved_maps) > KEEP_ROUNDS_MAP) //Get rid of extras from old configs.
- saved_maps.Cut(KEEP_ROUNDS_MAP+1)
- var/mapstosave = min(length(saved_maps)+1, KEEP_ROUNDS_MAP)
- if(length(saved_maps) < mapstosave) //Add extras if too short, one per round.
- saved_maps += mapstosave
- for(var/i = mapstosave; i > 1; i--)
- saved_maps[i] = saved_maps[i-1]
- saved_maps[1] = SSmapping.config.map_name
- var/json_file = file(FILE_RECENT_MAPS)
- var/list/file_data = list()
- file_data["data"] = saved_maps
- fdel(json_file)
- WRITE_FILE(json_file, json_encode(file_data))
-
-///Loads all randomized recipes.
-/datum/controller/subsystem/persistence/proc/load_randomized_recipes()
- var/json_file = file("data/RandomizedChemRecipes.json")
- var/json
- if(fexists(json_file))
- json = json_decode(file2text(json_file))
-
- for(var/randomized_type in subtypesof(/datum/chemical_reaction/randomized))
- var/datum/chemical_reaction/randomized/R = new randomized_type
- var/loaded = FALSE
- if(R.persistent && json)
- var/list/recipe_data = json["[R.type]"]
- if(recipe_data)
- if(R.LoadOldRecipe(recipe_data) && (daysSince(R.created) <= R.persistence_period))
- loaded = TRUE
- if(!loaded) //We do not have information for whatever reason, just generate new one
- if(R.persistent)
- log_game("Resetting persistent [randomized_type] random recipe.")
- R.GenerateRecipe()
-
- if(!R.HasConflicts()) //Might want to try again if conflicts happened in the future.
- add_chemical_reaction(R)
- else
- log_game("Randomized recipe [randomized_type] resulted in conflicting recipes.")
-
-///Saves all randomized recipes.
-/datum/controller/subsystem/persistence/proc/save_randomized_recipes()
- var/json_file = file("data/RandomizedChemRecipes.json")
- var/list/file_data = list()
-
- //asert globchems done
- for(var/randomized_type in subtypesof(/datum/chemical_reaction/randomized))
- var/datum/chemical_reaction/randomized/R = get_chemical_reaction(randomized_type) //ew, would be nice to add some simple tracking
- if(R?.persistent)
- var/list/recipe_data = R.SaveOldRecipe()
- file_data["[R.type]"] = recipe_data
-
- fdel(json_file)
- WRITE_FILE(json_file, json_encode(file_data))
-
-///Saves all scars for everyone's original characters
-/datum/controller/subsystem/persistence/proc/save_scars()
- for(var/i in GLOB.joined_player_list)
- var/mob/living/carbon/human/ending_human = get_mob_by_ckey(i)
- if(!istype(ending_human) || !ending_human.mind?.original_character_slot_index || !ending_human.client?.prefs.read_preference(/datum/preference/toggle/persistent_scars))
- continue
-
- var/mob/living/carbon/human/original_human = ending_human.mind.original_character.resolve()
-
- if(!original_human)
- continue
-
- if(original_human.stat == DEAD || !original_human.all_scars || original_human != ending_human)
- original_human.save_persistent_scars(TRUE)
- else
- original_human.save_persistent_scars()
-
-///Loads the custom outfits of every admin.
-/datum/controller/subsystem/persistence/proc/load_custom_outfits()
- var/file = file("data/custom_outfits.json")
- if(!fexists(file))
- return
- var/outfits_json = file2text(file)
- var/list/outfits = json_decode(outfits_json)
- if(!islist(outfits))
- return
-
- for(var/outfit_data in outfits)
- if(!islist(outfit_data))
- continue
-
- var/outfittype = text2path(outfit_data["outfit_type"])
- if(!ispath(outfittype, /datum/outfit))
- continue
- var/datum/outfit/outfit = new outfittype
- if(!outfit.load_from(outfit_data))
- continue
- GLOB.custom_outfits += outfit
-
-///Saves each admin's custom outfit list
-/datum/controller/subsystem/persistence/proc/save_custom_outfits()
- var/file = file("data/custom_outfits.json")
- fdel(file)
-
- var/list/data = list()
- for(var/datum/outfit/outfit in GLOB.custom_outfits)
- data += list(outfit.get_json_data())
-
- WRITE_FILE(file, json_encode(data))
-
-/// Location where we save the information about how many rounds it has been since the engine blew up/tram hits
-#define DELAMINATION_COUNT_FILEPATH "data/rounds_since_delamination.txt"
-#define DELAMINATION_HIGHSCORE_FILEPATH "data/delamination_highscore.txt"
-#define TRAM_COUNT_FILEPATH "data/tram_hits_last_round.txt"
-
-/datum/controller/subsystem/persistence/proc/load_delamination_counter()
- if (!fexists(DELAMINATION_COUNT_FILEPATH))
- return
- rounds_since_engine_exploded = text2num(file2text(DELAMINATION_COUNT_FILEPATH))
- if (fexists(DELAMINATION_HIGHSCORE_FILEPATH))
- delam_highscore = text2num(file2text(DELAMINATION_HIGHSCORE_FILEPATH))
- for (var/obj/machinery/incident_display/sign as anything in GLOB.map_delamination_counters)
- sign.update_delam_count(rounds_since_engine_exploded, delam_highscore)
-
-/datum/controller/subsystem/persistence/proc/save_delamination_counter()
- rustg_file_write("[rounds_since_engine_exploded + 1]", DELAMINATION_COUNT_FILEPATH)
- if((rounds_since_engine_exploded + 1) > delam_highscore)
- rustg_file_write("[rounds_since_engine_exploded + 1]", DELAMINATION_HIGHSCORE_FILEPATH)
-
-/datum/controller/subsystem/persistence/proc/load_tram_counter()
- if(!fexists(TRAM_COUNT_FILEPATH))
- return
- tram_hits_last_round = text2num(file2text(TRAM_COUNT_FILEPATH))
-
-/datum/controller/subsystem/persistence/proc/save_tram_counter()
- rustg_file_write("[tram_hits_this_round]", TRAM_COUNT_FILEPATH)
-
-#define MAX_TRAM_SAVES 4
-
-// Loads historical tram data
-/datum/controller/subsystem/persistence/proc/load_tram_history(specific_transport_id)
- var/list/raw_saved_trams = list()
- var/json_file = file("data/tram_data/[specific_transport_id].json")
- if(!fexists(json_file))
- return
- var/list/json = json_decode(file2text(json_file))
- if(!json)
- return
- raw_saved_trams = json["data"]
-
- var/list/previous_tram_data = list()
- for(var/raw_json in raw_saved_trams)
- var/datum/tram_mfg_info/parsed_tram_data = new
- parsed_tram_data.load_from_json(raw_json)
- previous_tram_data += parsed_tram_data
- return previous_tram_data
-
-// Saves historical tram data
-/datum/controller/subsystem/persistence/proc/save_tram_history(specific_transport_id)
- var/list/packaged_tram_data = list()
- for(var/datum/transport_controller/linear/tram/transport as anything in SStransport.transports_by_type[TRANSPORT_TYPE_TRAM])
- if(transport.specific_transport_id == specific_transport_id)
- packaged_tram_data = package_tram_data(transport)
- break
-
- var/json_file = file("data/tram_data/[specific_transport_id].json")
- var/list/file_data = list()
- var/list/converted_data = list()
-
- for(var/datum/tram_mfg_info/data in packaged_tram_data)
- converted_data += list(data.export_to_json())
-
- file_data["data"] = converted_data
- fdel(json_file)
- WRITE_FILE(json_file, json_encode(file_data))
-
-/datum/controller/subsystem/persistence/proc/package_tram_data(datum/transport_controller/linear/tram/tram_controller)
- var/list/packaged_data = list()
- var/list/tram_list = tram_controller.tram_history
- if(!isnull(tram_list))
- while(tram_list.len > MAX_TRAM_SAVES)
- tram_list.Cut(1,2)
-
- for(var/datum/tram_mfg_info/data as anything in tram_list)
- packaged_data += data
-
- packaged_data += tram_controller.tram_registration
- return packaged_data
-
-#undef DELAMINATION_COUNT_FILEPATH
-#undef DELAMINATION_HIGHSCORE_FILEPATH
-#undef TRAM_COUNT_FILEPATH
-#undef FILE_RECENT_MAPS
-#undef KEEP_ROUNDS_MAP
-#undef MAX_TRAM_SAVES
diff --git a/code/controllers/subsystem/persistence/_persistence.dm b/code/controllers/subsystem/persistence/_persistence.dm
new file mode 100644
index 00000000000000..c98be5d1c5a96d
--- /dev/null
+++ b/code/controllers/subsystem/persistence/_persistence.dm
@@ -0,0 +1,108 @@
+#define FILE_RECENT_MAPS "data/RecentMaps.json"
+#define KEEP_ROUNDS_MAP 3
+
+SUBSYSTEM_DEF(persistence)
+ name = "Persistence"
+ init_order = INIT_ORDER_PERSISTENCE
+ flags = SS_NO_FIRE
+
+ ///instantiated wall engraving components
+ var/list/wall_engravings = list()
+ ///all saved persistent engravings loaded from JSON
+ var/list/saved_engravings = list()
+ ///tattoo stories that we're saving.
+ var/list/prison_tattoos_to_save = list()
+ ///tattoo stories that have been selected for this round.
+ var/list/prison_tattoos_to_use = list()
+ var/list/saved_messages = list()
+ var/list/saved_modes = list(1,2,3)
+ var/list/saved_maps = list()
+ var/list/blocked_maps = list()
+ var/list/saved_trophies = list()
+ var/list/picture_logging_information = list()
+ var/list/obj/structure/sign/picture_frame/photo_frames
+ var/list/obj/item/storage/photo_album/photo_albums
+ var/rounds_since_engine_exploded = 0
+ var/delam_highscore = 0
+ var/tram_hits_this_round = 0
+ var/tram_hits_last_round = 0
+
+/datum/controller/subsystem/persistence/Initialize()
+ load_poly()
+ load_wall_engravings()
+ load_prisoner_tattoos()
+ load_trophies()
+ load_recent_maps()
+ load_photo_persistence()
+ load_randomized_recipes()
+ load_custom_outfits()
+ load_delamination_counter()
+ load_panic_bunker() //SKYRAT EDIT ADDITION - PANICBUNKER
+ load_tram_counter()
+ load_adventures()
+ return SS_INIT_SUCCESS
+
+///Collects all data to persist.
+/datum/controller/subsystem/persistence/proc/collect_data()
+ save_wall_engravings()
+ save_prisoner_tattoos()
+ collect_trophies()
+ collect_maps()
+ save_photo_persistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION.
+ save_randomized_recipes()
+ save_scars()
+ save_custom_outfits()
+ save_modular_persistence() // SKYRAT EDIT ADDITION - MODULAR_PERSISTENCE
+ save_delamination_counter()
+ if(SStransport.can_fire)
+ for(var/datum/transport_controller/linear/tram/transport as anything in SStransport.transports_by_type[TRANSPORT_TYPE_TRAM])
+ save_tram_history(transport.specific_transport_id)
+ save_tram_counter()
+ save_panic_bunker() //SKYRAT EDIT ADDITION - PANICBUNKER
+
+///Loads up Poly's speech buffer.
+/datum/controller/subsystem/persistence/proc/load_poly()
+ for(var/mob/living/simple_animal/parrot/poly/P in GLOB.alive_mob_list)
+ twitterize(P.speech_buffer, "polytalk")
+ break //Who's been duping the bird?!
+
+/// Loads up the amount of times maps appeared to alter their appearance in voting and rotation.
+/datum/controller/subsystem/persistence/proc/load_recent_maps()
+ var/map_sav = FILE_RECENT_MAPS
+ if(!fexists(FILE_RECENT_MAPS))
+ return
+ var/list/json = json_decode(file2text(map_sav))
+ if(!json)
+ return
+ saved_maps = json["data"]
+
+ //Convert the mapping data to a shared blocking list, saves us doing this in several places later.
+ for(var/map in config.maplist)
+ var/datum/map_config/VM = config.maplist[map]
+ var/run = 0
+ if(VM.map_name == SSmapping.config.map_name)
+ run++
+ for(var/name in SSpersistence.saved_maps)
+ if(VM.map_name == name)
+ run++
+ if(run >= 2) //If run twice in the last KEEP_ROUNDS_MAP + 1 (including current) rounds, disable map for voting and rotation.
+ blocked_maps += VM.map_name
+
+///Updates the list of the most recent maps.
+/datum/controller/subsystem/persistence/proc/collect_maps()
+ if(length(saved_maps) > KEEP_ROUNDS_MAP) //Get rid of extras from old configs.
+ saved_maps.Cut(KEEP_ROUNDS_MAP+1)
+ var/mapstosave = min(length(saved_maps)+1, KEEP_ROUNDS_MAP)
+ if(length(saved_maps) < mapstosave) //Add extras if too short, one per round.
+ saved_maps += mapstosave
+ for(var/i = mapstosave; i > 1; i--)
+ saved_maps[i] = saved_maps[i-1]
+ saved_maps[1] = SSmapping.config.map_name
+ var/json_file = file(FILE_RECENT_MAPS)
+ var/list/file_data = list()
+ file_data["data"] = saved_maps
+ fdel(json_file)
+ WRITE_FILE(json_file, json_encode(file_data))
+
+#undef FILE_RECENT_MAPS
+#undef KEEP_ROUNDS_MAP
diff --git a/code/controllers/subsystem/persistence/counter_delamination.dm b/code/controllers/subsystem/persistence/counter_delamination.dm
new file mode 100644
index 00000000000000..81dca300c7e1ee
--- /dev/null
+++ b/code/controllers/subsystem/persistence/counter_delamination.dm
@@ -0,0 +1,20 @@
+/// Location where we save the information about how many rounds it has been since the engine blew up
+#define DELAMINATION_COUNT_FILEPATH "data/rounds_since_delamination.txt"
+#define DELAMINATION_HIGHSCORE_FILEPATH "data/delamination_highscore.txt"
+
+/datum/controller/subsystem/persistence/proc/load_delamination_counter()
+ if(!fexists(DELAMINATION_COUNT_FILEPATH))
+ return
+ rounds_since_engine_exploded = text2num(file2text(DELAMINATION_COUNT_FILEPATH))
+ if(fexists(DELAMINATION_HIGHSCORE_FILEPATH))
+ delam_highscore = text2num(file2text(DELAMINATION_HIGHSCORE_FILEPATH))
+ for(var/obj/machinery/incident_display/sign as anything in GLOB.map_delamination_counters)
+ sign.update_delam_count(rounds_since_engine_exploded, delam_highscore)
+
+/datum/controller/subsystem/persistence/proc/save_delamination_counter()
+ rustg_file_write("[rounds_since_engine_exploded + 1]", DELAMINATION_COUNT_FILEPATH)
+ if((rounds_since_engine_exploded + 1) > delam_highscore)
+ rustg_file_write("[rounds_since_engine_exploded + 1]", DELAMINATION_HIGHSCORE_FILEPATH)
+
+#undef DELAMINATION_COUNT_FILEPATH
+#undef DELAMINATION_HIGHSCORE_FILEPATH
diff --git a/code/controllers/subsystem/persistence/counter_tram_hits.dm b/code/controllers/subsystem/persistence/counter_tram_hits.dm
new file mode 100644
index 00000000000000..806d5d5b5c2cc5
--- /dev/null
+++ b/code/controllers/subsystem/persistence/counter_tram_hits.dm
@@ -0,0 +1,64 @@
+/// Location where we save the information about how many times the tram hit on previous round
+#define TRAM_COUNT_FILEPATH "data/tram_hits_last_round.txt"
+#define MAX_TRAM_SAVES 4
+
+// Loads historical tram data
+/datum/controller/subsystem/persistence/proc/load_tram_history(specific_transport_id)
+ var/list/raw_saved_trams = list()
+ var/json_file = file("data/tram_data/[specific_transport_id].json")
+ if(!fexists(json_file))
+ return
+ var/list/json = json_decode(file2text(json_file))
+ if(!json)
+ return
+ raw_saved_trams = json["data"]
+
+ var/list/previous_tram_data = list()
+ for(var/raw_json in raw_saved_trams)
+ var/datum/tram_mfg_info/parsed_tram_data = new
+ parsed_tram_data.load_from_json(raw_json)
+ previous_tram_data += parsed_tram_data
+ return previous_tram_data
+
+// Saves historical tram data
+/datum/controller/subsystem/persistence/proc/save_tram_history(specific_transport_id)
+ var/list/packaged_tram_data = list()
+ for(var/datum/transport_controller/linear/tram/transport as anything in SStransport.transports_by_type[TRANSPORT_TYPE_TRAM])
+ if(transport.specific_transport_id == specific_transport_id)
+ packaged_tram_data = package_tram_data(transport)
+ break
+
+ var/json_file = file("data/tram_data/[specific_transport_id].json")
+ var/list/file_data = list()
+ var/list/converted_data = list()
+
+ for(var/datum/tram_mfg_info/data in packaged_tram_data)
+ converted_data += list(data.export_to_json())
+
+ file_data["data"] = converted_data
+ fdel(json_file)
+ WRITE_FILE(json_file, json_encode(file_data))
+
+/datum/controller/subsystem/persistence/proc/package_tram_data(datum/transport_controller/linear/tram/tram_controller)
+ var/list/packaged_data = list()
+ var/list/tram_list = tram_controller.tram_history
+ if(!isnull(tram_list))
+ while(tram_list.len > MAX_TRAM_SAVES)
+ tram_list.Cut(1,2)
+
+ for(var/datum/tram_mfg_info/data as anything in tram_list)
+ packaged_data += data
+
+ packaged_data += tram_controller.tram_registration
+ return packaged_data
+
+/datum/controller/subsystem/persistence/proc/load_tram_counter()
+ if(!fexists(TRAM_COUNT_FILEPATH))
+ return
+ tram_hits_last_round = text2num(file2text(TRAM_COUNT_FILEPATH))
+
+/datum/controller/subsystem/persistence/proc/save_tram_counter()
+ rustg_file_write("[tram_hits_this_round]", TRAM_COUNT_FILEPATH)
+
+#undef TRAM_COUNT_FILEPATH
+#undef MAX_TRAM_SAVES
diff --git a/code/controllers/subsystem/persistence/custom_outfits.dm b/code/controllers/subsystem/persistence/custom_outfits.dm
new file mode 100644
index 00000000000000..942f874fde5e59
--- /dev/null
+++ b/code/controllers/subsystem/persistence/custom_outfits.dm
@@ -0,0 +1,32 @@
+///Loads the custom outfits of every admin.
+/datum/controller/subsystem/persistence/proc/load_custom_outfits()
+ var/file = file("data/custom_outfits.json")
+ if(!fexists(file))
+ return
+ var/outfits_json = file2text(file)
+ var/list/outfits = json_decode(outfits_json)
+ if(!islist(outfits))
+ return
+
+ for(var/outfit_data in outfits)
+ if(!islist(outfit_data))
+ continue
+
+ var/outfittype = text2path(outfit_data["outfit_type"])
+ if(!ispath(outfittype, /datum/outfit))
+ continue
+ var/datum/outfit/outfit = new outfittype
+ if(!outfit.load_from(outfit_data))
+ continue
+ GLOB.custom_outfits += outfit
+
+///Saves each admin's custom outfit list
+/datum/controller/subsystem/persistence/proc/save_custom_outfits()
+ var/file = file("data/custom_outfits.json")
+ fdel(file)
+
+ var/list/data = list()
+ for(var/datum/outfit/outfit in GLOB.custom_outfits)
+ data += list(outfit.get_json_data())
+
+ WRITE_FILE(file, json_encode(data))
diff --git a/code/controllers/subsystem/persistence/engravings.dm b/code/controllers/subsystem/persistence/engravings.dm
new file mode 100644
index 00000000000000..f47fc7fbba124c
--- /dev/null
+++ b/code/controllers/subsystem/persistence/engravings.dm
@@ -0,0 +1,84 @@
+///Loads all engravings, and places a select amount in maintenance and the prison.
+/datum/controller/subsystem/persistence/proc/load_wall_engravings()
+ var/json_file = file(ENGRAVING_SAVE_FILE)
+ if(!fexists(json_file))
+ return
+
+ var/list/json = json_decode(file2text(json_file))
+ if(!json)
+ return
+
+ if(json["version"] < ENGRAVING_PERSISTENCE_VERSION)
+ update_wall_engravings(json)
+
+ saved_engravings = json["entries"]
+
+ if(!saved_engravings.len)
+ log_world("Failed to load engraved messages on map [SSmapping.config.map_name]")
+ return
+
+ var/list/viable_turfs = get_area_turfs(/area/station/maintenance, subtypes = TRUE) + get_area_turfs(/area/station/security/prison, subtypes = TRUE)
+ var/list/turfs_to_pick_from = list()
+
+ for(var/turf/T as anything in viable_turfs)
+ if(!isclosedturf(T))
+ continue
+ turfs_to_pick_from += T
+
+ var/successfully_loaded_engravings = 0
+
+ for(var/iteration in 1 to rand(MIN_PERSISTENT_ENGRAVINGS, MAX_PERSISTENT_ENGRAVINGS))
+ var/engraving = pick_n_take(saved_engravings)
+ if(!islist(engraving))
+ stack_trace("something's wrong with the engraving data! one of the saved engravings wasn't a list!")
+ continue
+
+ var/turf/closed/engraved_wall = pick(turfs_to_pick_from)
+
+ if(HAS_TRAIT(engraved_wall, TRAIT_NOT_ENGRAVABLE))
+ continue
+
+ engraved_wall.AddComponent(/datum/component/engraved, engraving["story"], FALSE, engraving["story_value"])
+ successfully_loaded_engravings++
+ turfs_to_pick_from -= engraved_wall
+
+ log_world("Loaded [successfully_loaded_engravings] engraved messages on map [SSmapping.config.map_name]")
+
+///Saves all new engravings in the world.
+/datum/controller/subsystem/persistence/proc/save_wall_engravings()
+ var/list/saved_data = list()
+
+ saved_data["version"] = ENGRAVING_PERSISTENCE_VERSION
+ saved_data["entries"] = list()
+
+
+ var/json_file = file(ENGRAVING_SAVE_FILE)
+ if(fexists(json_file))
+ var/list/old_json = json_decode(file2text(json_file))
+ if(old_json)
+ saved_data["entries"] = old_json["entries"]
+
+ for(var/datum/component/engraved/engraving in wall_engravings)
+ if(!engraving.persistent_save)
+ continue
+ var/area/engraved_area = get_area(engraving.parent)
+ if(!(engraved_area.area_flags & PERSISTENT_ENGRAVINGS))
+ continue
+ saved_data["entries"] += engraving.save_persistent()
+
+ fdel(json_file)
+
+ WRITE_FILE(json_file, json_encode(saved_data))
+
+///This proc can update entries if the format has changed at some point.
+/datum/controller/subsystem/persistence/proc/update_wall_engravings(json)
+ for(var/engraving_entry in json["entries"])
+ continue //no versioning yet
+
+ //Save it to the file
+ var/json_file = file(ENGRAVING_SAVE_FILE)
+ fdel(json_file)
+ WRITE_FILE(json_file, json_encode(json))
+
+ return json
+
diff --git a/code/controllers/subsystem/persistence/photo_albums.dm b/code/controllers/subsystem/persistence/photo_albums.dm
new file mode 100644
index 00000000000000..3aee856b2c21ce
--- /dev/null
+++ b/code/controllers/subsystem/persistence/photo_albums.dm
@@ -0,0 +1,86 @@
+///Loads up the photo album source file.
+/datum/controller/subsystem/persistence/proc/get_photo_albums()
+ var/album_path = file("data/photo_albums.json")
+ if(fexists(album_path))
+ return json_decode(file2text(album_path))
+
+///Loads up the photo frames source file.
+/datum/controller/subsystem/persistence/proc/get_photo_frames()
+ var/frame_path = file("data/photo_frames.json")
+ if(fexists(frame_path))
+ return json_decode(file2text(frame_path))
+
+/// Removes the identifier of a persistent photo frame from the json.
+/datum/controller/subsystem/persistence/proc/remove_photo_frames(identifier)
+ var/frame_path = file("data/photo_frames.json")
+ if(!fexists(frame_path))
+ return
+
+ var/frame_json = json_decode(file2text(frame_path))
+ frame_json -= identifier
+
+ frame_json = json_encode(frame_json)
+ fdel(frame_path)
+ WRITE_FILE(frame_path, frame_json)
+
+///Loads photo albums, and populates them; also loads and applies frames to picture frames.
+/datum/controller/subsystem/persistence/proc/load_photo_persistence()
+ var/album_path = file("data/photo_albums.json")
+ var/frame_path = file("data/photo_frames.json")
+ if(fexists(album_path))
+ var/list/json = json_decode(file2text(album_path))
+ if(json.len)
+ for(var/i in photo_albums)
+ var/obj/item/storage/photo_album/A = i
+ if(!A.persistence_id)
+ continue
+ if(json[A.persistence_id])
+ A.populate_from_id_list(json[A.persistence_id])
+
+ if(fexists(frame_path))
+ var/list/json = json_decode(file2text(frame_path))
+ if(json.len)
+ for(var/i in photo_frames)
+ var/obj/structure/sign/picture_frame/PF = i
+ if(!PF.persistence_id)
+ continue
+ if(json[PF.persistence_id])
+ PF.load_from_id(json[PF.persistence_id])
+
+///Saves the contents of photo albums and the picture frames.
+/datum/controller/subsystem/persistence/proc/save_photo_persistence()
+ var/album_path = file("data/photo_albums.json")
+ var/frame_path = file("data/photo_frames.json")
+
+ var/list/frame_json = list()
+ var/list/album_json = list()
+
+ if(fexists(album_path))
+ album_json = json_decode(file2text(album_path))
+ fdel(album_path)
+
+ for(var/i in photo_albums)
+ var/obj/item/storage/photo_album/A = i
+ if(!istype(A) || !A.persistence_id)
+ continue
+ var/list/L = A.get_picture_id_list()
+ album_json[A.persistence_id] = L
+
+ album_json = json_encode(album_json)
+
+ WRITE_FILE(album_path, album_json)
+
+ if(fexists(frame_path))
+ frame_json = json_decode(file2text(frame_path))
+ fdel(frame_path)
+
+ for(var/i in photo_frames)
+ var/obj/structure/sign/picture_frame/F = i
+ if(!istype(F) || !F.persistence_id)
+ continue
+ frame_json[F.persistence_id] = F.get_photo_id()
+
+ frame_json = json_encode(frame_json)
+
+ WRITE_FILE(frame_path, frame_json)
+
diff --git a/code/controllers/subsystem/persistence/recipes.dm b/code/controllers/subsystem/persistence/recipes.dm
new file mode 100644
index 00000000000000..84145b26aabc37
--- /dev/null
+++ b/code/controllers/subsystem/persistence/recipes.dm
@@ -0,0 +1,39 @@
+///Loads all randomized recipes.
+/datum/controller/subsystem/persistence/proc/load_randomized_recipes()
+ var/json_file = file("data/RandomizedChemRecipes.json")
+ var/json
+ if(fexists(json_file))
+ json = json_decode(file2text(json_file))
+
+ for(var/randomized_type in subtypesof(/datum/chemical_reaction/randomized))
+ var/datum/chemical_reaction/randomized/R = new randomized_type
+ var/loaded = FALSE
+ if(R.persistent && json)
+ var/list/recipe_data = json["[R.type]"]
+ if(recipe_data)
+ if(R.LoadOldRecipe(recipe_data) && (daysSince(R.created) <= R.persistence_period))
+ loaded = TRUE
+ if(!loaded) //We do not have information for whatever reason, just generate new one
+ if(R.persistent)
+ log_game("Resetting persistent [randomized_type] random recipe.")
+ R.GenerateRecipe()
+
+ if(!R.HasConflicts()) //Might want to try again if conflicts happened in the future.
+ add_chemical_reaction(R)
+ else
+ log_game("Randomized recipe [randomized_type] resulted in conflicting recipes.")
+
+///Saves all randomized recipes.
+/datum/controller/subsystem/persistence/proc/save_randomized_recipes()
+ var/json_file = file("data/RandomizedChemRecipes.json")
+ var/list/file_data = list()
+
+ //asert globchems done
+ for(var/randomized_type in subtypesof(/datum/chemical_reaction/randomized))
+ var/datum/chemical_reaction/randomized/R = get_chemical_reaction(randomized_type) //ew, would be nice to add some simple tracking
+ if(R?.persistent)
+ var/list/recipe_data = R.SaveOldRecipe()
+ file_data["[R.type]"] = recipe_data
+
+ fdel(json_file)
+ WRITE_FILE(json_file, json_encode(file_data))
diff --git a/code/controllers/subsystem/persistence/scars.dm b/code/controllers/subsystem/persistence/scars.dm
new file mode 100644
index 00000000000000..fa378f24dd4376
--- /dev/null
+++ b/code/controllers/subsystem/persistence/scars.dm
@@ -0,0 +1,17 @@
+///Saves all scars for everyone's original characters
+/datum/controller/subsystem/persistence/proc/save_scars()
+ for(var/i in GLOB.joined_player_list)
+ var/mob/living/carbon/human/ending_human = get_mob_by_ckey(i)
+ if(!istype(ending_human) || !ending_human.mind?.original_character_slot_index || !ending_human.client?.prefs.read_preference(/datum/preference/toggle/persistent_scars))
+ continue
+
+ var/mob/living/carbon/human/original_human = ending_human.mind.original_character.resolve()
+
+ if(!original_human)
+ continue
+
+ if(original_human.stat == DEAD || !original_human.all_scars || original_human != ending_human)
+ original_human.save_persistent_scars(TRUE)
+ else
+ original_human.save_persistent_scars()
+
diff --git a/code/controllers/subsystem/persistence/tattoos.dm b/code/controllers/subsystem/persistence/tattoos.dm
new file mode 100644
index 00000000000000..45dd31c7f5c94a
--- /dev/null
+++ b/code/controllers/subsystem/persistence/tattoos.dm
@@ -0,0 +1,55 @@
+///Loads all tattoos, and select a few based on the amount of prisoner spawn positions.
+/datum/controller/subsystem/persistence/proc/load_prisoner_tattoos()
+ var/json_file = file(PRISONER_TATTOO_SAVE_FILE)
+ if(!fexists(json_file))
+ return
+ var/list/json = json_decode(file2text(json_file))
+ if(!json)
+ return
+
+ if(json["version"] < TATTOO_PERSISTENCE_VERSION)
+ update_prisoner_tattoos(json)
+
+ var/datum/job/prisoner_datum = SSjob.name_occupations[JOB_PRISONER]
+ if(!prisoner_datum)
+ return
+ var/iterations_allowed = prisoner_datum.spawn_positions
+
+ var/list/entries = json["entries"]
+ if(entries.len)
+ for(var/index in 1 to iterations_allowed)
+ prison_tattoos_to_use += list(entries[rand(1, entries.len)])
+
+ log_world("Loaded [prison_tattoos_to_use.len] prison tattoos")
+
+///Saves all tattoos, so they can appear on prisoners in future rounds
+/datum/controller/subsystem/persistence/proc/save_prisoner_tattoos()
+ var/json_file = file(PRISONER_TATTOO_SAVE_FILE)
+ var/list/saved_data = list()
+ var/list/entries = list()
+
+ if(fexists(json_file))
+ var/list/old_json = json_decode(file2text(json_file))
+ if(old_json)
+ entries += old_json["entries"] //Save the old if its there
+
+ entries += prison_tattoos_to_save
+
+ saved_data["version"] = ENGRAVING_PERSISTENCE_VERSION
+ saved_data["entries"] = entries
+
+ fdel(json_file)
+ WRITE_FILE(json_file, json_encode(saved_data))
+
+///This proc can update entries if the format has changed at some point.
+/datum/controller/subsystem/persistence/proc/update_prisoner_tattoos(json)
+ for(var/tattoo_entry in json["entries"])
+ continue //no versioning yet
+
+ //Save it to the file
+ var/json_file = file(PRISONER_TATTOO_SAVE_FILE)
+ fdel(json_file)
+ WRITE_FILE(json_file, json_encode(json))
+
+ return json
+
diff --git a/code/controllers/subsystem/persistence/trophies.dm b/code/controllers/subsystem/persistence/trophies.dm
new file mode 100644
index 00000000000000..515ed386085011
--- /dev/null
+++ b/code/controllers/subsystem/persistence/trophies.dm
@@ -0,0 +1,125 @@
+///trophy data datum, for admin manipulation
+/datum/trophy_data
+ ///path of the item the trophy will try to mimic, null if path_string is invalid
+ var/path
+ ///the message that appears under the item
+ var/message
+ ///the key of the one who placed the item in the trophy case
+ var/placer_key
+
+/// Loads the trophies from the source file, and places a few in trophy display cases.
+/datum/controller/subsystem/persistence/proc/load_trophies()
+ var/list/raw_saved_trophies = list()
+ if(fexists("data/npc_saves/TrophyItems.json"))
+ var/json_file = file("data/npc_saves/TrophyItems.json")
+ if(!fexists(json_file))
+ return
+ var/list/json = json_decode(file2text(json_file))
+ if(!json)
+ return
+ raw_saved_trophies = json["data"]
+ fdel("data/npc_saves/TrophyItems.json")
+ else
+ var/json_file = file("data/trophy_items.json")
+ if(!fexists(json_file))
+ return
+ var/list/json = json_decode(file2text(json_file))
+ if(!json)
+ return
+ raw_saved_trophies = json["data"]
+
+ for(var/raw_json in raw_saved_trophies)
+ var/datum/trophy_data/parsed_trophy_data = new
+ parsed_trophy_data.load_from_json(raw_json)
+ saved_trophies += parsed_trophy_data
+
+ set_up_trophies()
+
+/datum/trophy_data/proc/load_from_json(list/json_data)
+ path = json_data["path"]
+ message = json_data["message"]
+ placer_key = json_data["placer_key"]
+
+/datum/trophy_data/proc/to_json()
+ var/list/new_data = list()
+ new_data["path"] = path
+ new_data["message"] = message
+ new_data["placer_key"] = placer_key
+ new_data["is_valid"] = text2path(path) ? TRUE : FALSE
+ return new_data
+
+/// Returns a list for the admin trophy panel.
+/datum/controller/subsystem/persistence/proc/trophy_ui_data()
+ var/list/ui_data = list()
+ for(var/datum/trophy_data/data in saved_trophies)
+ var/list/pdata = data.to_json()
+ pdata["ref"] = REF(data)
+ ui_data += list(pdata)
+
+ return ui_data
+
+
+/// Puts trophies into trophy cases.
+/datum/controller/subsystem/persistence/proc/set_up_trophies()
+
+ var/list/valid_trophies = list()
+
+ for(var/datum/trophy_data/data in saved_trophies)
+
+ if(!data) //sanity for incorrect deserialization
+ continue
+
+ var/path = text2path(data.path)
+ if(!path) //If the item no longer exist, ignore it
+ continue
+
+ valid_trophies += data
+
+ for(var/obj/structure/displaycase/trophy/trophy_case in GLOB.trophy_cases)
+ if(!valid_trophies.len)
+ break
+
+ if(trophy_case.showpiece)
+ continue
+
+ trophy_case.set_up_trophy(pick_n_take(valid_trophies))
+
+///Collects trophies from all existing trophy cases.
+/datum/controller/subsystem/persistence/proc/collect_trophies()
+ for(var/trophy_case in GLOB.trophy_cases)
+ save_trophy(trophy_case)
+
+ var/json_file = file("data/trophy_items.json")
+ var/list/file_data = list()
+ var/list/converted_data = list()
+
+ for(var/datum/trophy_data/data in saved_trophies)
+ converted_data += list(data.to_json())
+
+ converted_data = remove_duplicate_trophies(converted_data)
+
+ file_data["data"] = converted_data
+ fdel(json_file)
+ WRITE_FILE(json_file, json_encode(file_data))
+
+///gets the list of json trophies, and deletes the ones with an identical path and message
+/datum/controller/subsystem/persistence/proc/remove_duplicate_trophies(list/trophies)
+ var/list/ukeys = list()
+ . = list()
+ for(var/trophy in trophies)
+ var/tkey = "[trophy["path"]]-[trophy["message"]]"
+ if(ukeys[tkey])
+ continue
+ else
+ . += list(trophy)
+ ukeys[tkey] = TRUE
+
+///If there is a trophy in the trophy case, saved it, if the trophy was not a holo trophy and has a message attached.
+/datum/controller/subsystem/persistence/proc/save_trophy(obj/structure/displaycase/trophy/trophy_case)
+ if(!trophy_case.holographic_showpiece && trophy_case.showpiece && trophy_case.trophy_message)
+ var/datum/trophy_data/data = new
+ data.path = trophy_case.showpiece.type
+ data.message = trophy_case.trophy_message
+ data.placer_key = trophy_case.placer_key
+ saved_trophies += data
+
diff --git a/code/controllers/subsystem/persistent_paintings.dm b/code/controllers/subsystem/persistent_paintings.dm
index 4eb77bd21be8ca..35656e2a56d4d8 100644
--- a/code/controllers/subsystem/persistent_paintings.dm
+++ b/code/controllers/subsystem/persistent_paintings.dm
@@ -113,6 +113,11 @@ SUBSYSTEM_DEF(persistent_paintings)
/// A list of /datum/paintings saved or ready to be saved this round.
var/list/paintings = list()
+ /// A list of paintings' data for paintings that are currently stored in the library.
+ var/list/cached_painting_data = list()
+ /// A list of paintings' data for paintings that are currently stored in the library, with admin metadata
+ var/list/admin_painting_data = list()
+
///The list of available frame reskins (they are purely cosmetic) and the associated patronage amount required for them.
var/list/frame_types_by_patronage_tier = list(
"simple" = 0,
@@ -127,8 +132,8 @@ SUBSYSTEM_DEF(persistent_paintings)
"gold" = PATRONAGE_EXCELLENT_FRAME,
"diamond" = PATRONAGE_AMAZING_FRAME,
"rainbow" = PATRONAGE_SUPERB_FRAME,
- "supermatter" = PATRONAGE_LEGENDARY_FRAME
- )
+ "supermatter" = PATRONAGE_LEGENDARY_FRAME,
+ )
/datum/controller/subsystem/persistent_paintings/Initialize()
var/json_file = file("data/paintings.json")
@@ -142,8 +147,29 @@ SUBSYSTEM_DEF(persistent_paintings)
for(var/obj/structure/sign/painting/painting_frame as anything in painting_frames)
painting_frame.load_persistent()
+ cache_paintings()
+
return SS_INIT_SUCCESS
+/datum/controller/subsystem/persistent_paintings/proc/cache_paintings()
+ cached_painting_data = list()
+ admin_painting_data = list()
+
+ for(var/datum/painting/painting as anything in paintings)
+ cached_painting_data += list(list(
+ "title" = painting.title,
+ "creator" = painting.creator_name,
+ "md5" = painting.md5,
+ "ref" = REF(painting),
+ "width" = painting.width,
+ "height" = painting.height,
+ "ratio" = painting.width/painting.height,
+ ))
+
+ var/list/pdata = painting.to_json()
+ pdata["ref"] = REF(painting)
+ admin_painting_data += pdata
+
/**
* Generates painting data ready to be consumed by ui.
* Args:
@@ -152,31 +178,27 @@ SUBSYSTEM_DEF(persistent_paintings)
* * search_text : text to search for if the PAINTINGS_FILTER_SEARCH_TITLE or PAINTINGS_FILTER_SEARCH_CREATOR filters are enabled.
*/
/datum/controller/subsystem/persistent_paintings/proc/painting_ui_data(filter=NONE, admin=FALSE, search_text)
- . = list()
var/searching = filter & (PAINTINGS_FILTER_SEARCH_TITLE|PAINTINGS_FILTER_SEARCH_CREATOR) && search_text
- for(var/datum/painting/painting as anything in paintings)
- if(filter & PAINTINGS_FILTER_AI_PORTRAIT && ((painting.width != 24 && painting.width != 23) || (painting.height != 24 && painting.height != 23)))
+
+ if(!searching)
+ return admin ? admin_painting_data : cached_painting_data
+
+ var/list/filtered_paintings = list()
+ var/list/searched_paintings = admin ? admin_painting_data : cached_painting_data
+
+ for(var/painting as anything in searched_paintings)
+ if(filter & PAINTINGS_FILTER_AI_PORTRAIT && ((painting["width"] != 24 && painting["width"] != 23) || (painting["height"] != 24 && painting["height"] != 23)))
continue
if(searching)
var/haystack_text = ""
if(filter & PAINTINGS_FILTER_SEARCH_TITLE)
- haystack_text = painting.title
+ haystack_text = painting["title"]
else if(filter & PAINTINGS_FILTER_SEARCH_CREATOR)
- haystack_text = painting.creator_name
+ haystack_text = painting["creator"]
if(!findtext(haystack_text, search_text))
continue
- if(admin)
- var/list/pdata = painting.to_json()
- pdata["ref"] = REF(painting)
- . += list(pdata)
- else
- . += list(list(
- "title" = painting.title,
- "creator" = painting.creator_name,
- "md5" = painting.md5,
- "ref" = REF(painting),
- "ratio" = painting.width/painting.height,
- ))
+ filtered_paintings += painting
+ return filtered_paintings
/// Returns paintings with given tag.
/datum/controller/subsystem/persistent_paintings/proc/get_paintings_with_tag(tag_name)
@@ -309,6 +331,7 @@ SUBSYSTEM_DEF(persistent_paintings)
var/payload = json_encode(all_data)
fdel(json_file)
WRITE_FILE(json_file, payload)
+ cache_paintings()
#undef PAINTINGS_DATA_FORMAT_VERSION
#undef PATRONAGE_OK_FRAME
diff --git a/code/controllers/subsystem/processing/ai_behaviors.dm b/code/controllers/subsystem/processing/ai_behaviors.dm
index 4ec698db32bbcc..e92da2474bb736 100644
--- a/code/controllers/subsystem/processing/ai_behaviors.dm
+++ b/code/controllers/subsystem/processing/ai_behaviors.dm
@@ -8,9 +8,12 @@ PROCESSING_SUBSYSTEM_DEF(ai_behaviors)
wait = 1
///List of all ai_behavior singletons, key is the typepath while assigned value is a newly created instance of the typepath. See SetupAIBehaviors()
var/list/ai_behaviors
+ ///List of all targeting_strategy singletons, key is the typepath while assigned value is a newly created instance of the typepath. See SetupAIBehaviors()
+ var/list/targeting_strategies
/datum/controller/subsystem/processing/ai_behaviors/Initialize()
SetupAIBehaviors()
+ SetupTargetingStrats()
return SS_INIT_SUCCESS
/datum/controller/subsystem/processing/ai_behaviors/proc/SetupAIBehaviors()
@@ -18,3 +21,9 @@ PROCESSING_SUBSYSTEM_DEF(ai_behaviors)
for(var/behavior_type in subtypesof(/datum/ai_behavior))
var/datum/ai_behavior/ai_behavior = new behavior_type
ai_behaviors[behavior_type] = ai_behavior
+
+/datum/controller/subsystem/processing/ai_behaviors/proc/SetupTargetingStrats()
+ targeting_strategies = list()
+ for(var/target_type in subtypesof(/datum/targeting_strategy))
+ var/datum/targeting_strategy/target_start = new target_type
+ targeting_strategies[target_type] = target_start
diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm
index c34d97b28f9c45..8d8e9a82136622 100644
--- a/code/controllers/subsystem/processing/quirks.dm
+++ b/code/controllers/subsystem/processing/quirks.dm
@@ -20,7 +20,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list(
list(/datum/quirk/mute, /datum/quirk/softspoken),
list(/datum/quirk/poor_aim, /datum/quirk/bighands),
list(/datum/quirk/bilingual, /datum/quirk/foreigner),
- list(/datum/quirk/spacer_born, /datum/quirk/paraplegic, /datum/quirk/item_quirk/settler),
+ list(/datum/quirk/spacer_born, /datum/quirk/item_quirk/settler),
list(/datum/quirk/photophobia, /datum/quirk/nyctophobia),
list(/datum/quirk/item_quirk/settler, /datum/quirk/freerunning),
list(/datum/quirk/numb, /datum/quirk/selfaware),
diff --git a/code/controllers/subsystem/queuelinks.dm b/code/controllers/subsystem/queuelinks.dm
new file mode 100644
index 00000000000000..6a3b8288821624
--- /dev/null
+++ b/code/controllers/subsystem/queuelinks.dm
@@ -0,0 +1,68 @@
+/atom/proc/MatchedLinks(id, list/partners)
+
+SUBSYSTEM_DEF(queuelinks)
+ name = "Queue Links"
+ flags = SS_NO_FIRE
+ init_order = INIT_ORDER_QUEUELINKS
+ ///assoc list of pending queues, id = /datum/queue_link
+ var/list/queues = list()
+
+/datum/controller/subsystem/queuelinks/Initialize()
+ return SS_INIT_SUCCESS
+
+///Creates or adds to a queue with the id supplied, if the queue is now or above the size of the queue, calls MatchedLinks and clears queue.
+/// queues with a size of 0 wait never pop until something is added with an actual queue_max
+/datum/controller/subsystem/queuelinks/proc/add_to_queue(atom/what, id, queue_max = 0)
+ if(!isatom(what))
+ CRASH("Attempted to add a non-atom to queue; [what]!")
+ if(isnull(id))
+ CRASH("Attempted to add to queue with no ID; [what]")
+
+ var/datum/queue_link/link
+ if(isnull(queues[id]))
+ link = new /datum/queue_link(id)
+ queues[id] = link
+ else
+ link = queues[id]
+
+ if(link.add(what, queue_max))
+ queues -= id
+
+/datum/queue_link
+ /// atoms in our queue
+ var/list/partners = list()
+ /// how much length until we pop, only incrementable, 0 means the queue will not pop until a maximum is set
+ var/queue_max = 0
+ /// id
+ var/id
+
+/datum/queue_link/New(new_id)
+ id = new_id
+ return ..()
+
+///adds an atom to the queue, if we are popping this returns TRUE
+/datum/queue_link/proc/add(atom/what, max = 0)
+ . = FALSE
+ if(what in partners)
+ return
+ partners += what
+
+ if(queue_max != 0 && max != 0 && max != queue_max)
+ CRASH("Tried to change queue size to [max] from [queue_max]!")
+ else if(!queue_max)
+ queue_max = max
+
+ if(!queue_max || length(partners) < queue_max)
+ return
+
+ pop()
+ return TRUE
+
+/datum/queue_link/proc/pop()
+ for(var/atom/item as anything in partners)
+ item.MatchedLinks(id, partners)
+ qdel(src)
+
+/datum/queue_link/Destroy()
+ . = ..()
+ partners = null
diff --git a/code/controllers/subsystem/security_level.dm b/code/controllers/subsystem/security_level.dm
index b82a113d4fa543..df5ea642ce3701 100644
--- a/code/controllers/subsystem/security_level.dm
+++ b/code/controllers/subsystem/security_level.dm
@@ -39,6 +39,9 @@ SUBSYSTEM_DEF(security_level)
if(!selected_level)
CRASH("set_level was called with an invalid security level([new_level])")
+ if(SSnightshift.can_fire && (selected_level.number_level >= SEC_LEVEL_RED || current_security_level.number_level >= SEC_LEVEL_RED))
+ SSnightshift.next_fire = world.time + 7 SECONDS // Fire nightshift after the security level announcement is complete
+
level_announce(selected_level, current_security_level.number_level) // We want to announce BEFORE updating to the new level
SSsecurity_level.current_security_level = selected_level
@@ -53,7 +56,6 @@ SUBSYSTEM_DEF(security_level)
SSshuttle.emergency.alert_coeff_change(selected_level.shuttle_call_time_mod)
SEND_SIGNAL(src, COMSIG_SECURITY_LEVEL_CHANGED, selected_level.number_level)
- SSnightshift.check_nightshift()
SSblackbox.record_feedback("tally", "security_level_changes", 1, selected_level.name)
/**
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index eee808e9f4e74f..b1ebf3d586cfc7 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -100,9 +100,6 @@ SUBSYSTEM_DEF(shuttle)
/// Wishlist items made by crew for cargo to purchase at their leisure.
var/list/request_list = list()
- /// A listing of previously delivered supply packs.
- var/list/order_history = list()
-
/// A list of job accesses that are able to purchase any shuttles.
var/list/has_purchase_shuttle_access
@@ -265,13 +262,27 @@ SUBSYSTEM_DEF(shuttle)
message_admins(msg)
log_shuttle("[msg] Alive: [alive], Roundstart: [total], Threshold: [threshold]")
emergency_no_recall = TRUE
- priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.")
+ priority_announce(
+ text = "Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.",
+ title = "Emergency Shuttle Dispatched",
+ sound = ANNOUNCER_SHUTTLECALLED,
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "orange",
+ )
if(emergency.timeLeft(1) > emergency_call_time * ALERT_COEFF_AUTOEVAC_CRITICAL)
emergency.request(null, set_coefficient = ALERT_COEFF_AUTOEVAC_CRITICAL)
/datum/controller/subsystem/shuttle/proc/block_recall(lockout_timer)
+ if(isnull(lockout_timer))
+ CRASH("Emergency shuttle block was called, but missing a value for the lockout duration")
if(admin_emergency_no_recall)
- priority_announce("Error!", "Emergency Shuttle Uplink Alert", ANNOUNCER_SHUTTLE) // SKYRAT EDIT CHANGE - Announcer Sounds
+ priority_announce(
+ text = "Emergency shuttle uplink interference detected, shuttle call disabled while the system reinitializes. Estimated restore in [DisplayTimeText(lockout_timer, round_seconds_to = 60)].",
+ title = "Uplink Interference",
+ sound = ANNOUNCER_SHUTTLE, // SKYRAT EDIT CHANGE - Announcer Sounds - ORIGINAL: sound = 'sound/misc/announce_dig.ogg',
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "grey",
+ )
addtimer(CALLBACK(src, PROC_REF(unblock_recall)), lockout_timer)
return
emergency_no_recall = TRUE
@@ -279,7 +290,13 @@ SUBSYSTEM_DEF(shuttle)
/datum/controller/subsystem/shuttle/proc/unblock_recall()
if(admin_emergency_no_recall)
- priority_announce("Error!", "Emergency Shuttle Uplink Alert", ANNOUNCER_SHUTTLE) // SKYRAT EDIT CHANGE - Announcer Sounds
+ priority_announce(
+ text= "Emergency shuttle uplink services are now back online.",
+ title = "Uplink Restored",
+ sound = ANNOUNCER_SHUTTLE, // SKYRAT EDIT CHANGE - Announcer Sounds - ORIGINAL: sound = 'sound/misc/announce_dig.ogg',
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "green",
+ )
return
emergency_no_recall = FALSE
@@ -519,15 +536,23 @@ SUBSYSTEM_DEF(shuttle)
emergency.mode = SHUTTLE_STRANDED
emergency.timer = null
emergency.sound_played = FALSE
- priority_announce("Hostile environment detected. \
- Departure has been postponed indefinitely pending \
- conflict resolution.", null, 'sound/misc/notice1.ogg', ANNOUNCEMENT_TYPE_PRIORITY)
+ priority_announce(
+ text = "Departure has been postponed indefinitely pending conflict resolution.",
+ title = "Hostile Environment Detected",
+ sound = 'sound/misc/notice1.ogg',
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "grey",
+ )
if(!emergency_no_escape && (emergency.mode == SHUTTLE_STRANDED))
emergency.mode = SHUTTLE_DOCKED
emergency.setTimer(emergency_dock_time)
- priority_announce("Hostile environment resolved. \
- You have 3 minutes to board the Emergency Shuttle.",
- null, ANNOUNCER_SHUTTLEDOCK, ANNOUNCEMENT_TYPE_PRIORITY)
+ priority_announce(
+ text = "You have [DisplayTimeText(emergency_dock_time)] to board the emergency shuttle.",
+ title = "Hostile Environment Resolved",
+ sound = 'sound/misc/announce_dig.ogg',
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "green",
+ )
//try to move/request to dock_home if possible, otherwise dock_away. Mainly used for admin buttons
/datum/controller/subsystem/shuttle/proc/toggleShuttle(shuttle_id, dock_home, dock_away, timed)
@@ -717,8 +742,6 @@ SUBSYSTEM_DEF(shuttle)
shopping_list = SSshuttle.shopping_list
if (istype(SSshuttle.request_list))
request_list = SSshuttle.request_list
- if (istype(SSshuttle.order_history))
- order_history = SSshuttle.order_history
if (istype(SSshuttle.shuttle_loan))
shuttle_loan = SSshuttle.shuttle_loan
diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm
index 15a4aed4adbf75..e68ee9ee1f2f4b 100644
--- a/code/controllers/subsystem/vote.dm
+++ b/code/controllers/subsystem/vote.dm
@@ -66,7 +66,7 @@ SUBSYSTEM_DEF(vote)
// Remove AFK or clientless non-voters.
for(var/non_voter_ckey in non_voters)
var/client/non_voter_client = non_voters[non_voter_ckey]
- if(!non_voter_client || non_voter_client.is_afk())
+ if(!istype(non_voter_client) || non_voter_client.is_afk())
non_voters -= non_voter_ckey
// Now get the result of the vote.
diff --git a/code/datums/achievements/misc_achievements.dm b/code/datums/achievements/misc_achievements.dm
index f83f2cde7b0a18..8ae3da33e3a3a5 100644
--- a/code/datums/achievements/misc_achievements.dm
+++ b/code/datums/achievements/misc_achievements.dm
@@ -135,11 +135,11 @@
database_id = MEDAL_COSMOS_ASCENSION
icon = "cosmicascend"
-/datum/award/achievement/misc/knock_ascension
- name = "Secrets behind the Spider Door"
+/datum/award/achievement/misc/lock_ascension
+ name = "Secrets of the Locked Labyrinth"
desc = "You managed to open a gate into the mansus."
- database_id = MEDAL_KNOCK_ASCENSION
- icon = "knockascend"
+ database_id = MEDAL_LOCK_ASCENSION
+ icon = "lockascend"
/datum/award/achievement/misc/grand_ritual_finale
name = "Archmage"
diff --git a/code/datums/actions/cooldown_action.dm b/code/datums/actions/cooldown_action.dm
index a7e0603461a77c..ed4309c36e1cb5 100644
--- a/code/datums/actions/cooldown_action.dm
+++ b/code/datums/actions/cooldown_action.dm
@@ -177,6 +177,8 @@
/// Starts a cooldown time for other abilities that share a cooldown with this. Has some niche usage with more complicated attack ai!
/// Will use default cooldown time if an override is not specified
/datum/action/cooldown/proc/StartCooldownOthers(override_cooldown_time)
+ if(!length(owner.actions))
+ return // Possible if they have an action they don't control
for(var/datum/action/cooldown/shared_ability in owner.actions - src)
if(!(shared_cooldown & shared_ability.shared_cooldown))
continue
diff --git a/code/datums/actions/mobs/charge.dm b/code/datums/actions/mobs/charge.dm
index 7fb56209777123..0c73145770ea41 100644
--- a/code/datums/actions/mobs/charge.dm
+++ b/code/datums/actions/mobs/charge.dm
@@ -156,17 +156,23 @@
SSexplosions.med_mov_atom += target
INVOKE_ASYNC(src, PROC_REF(DestroySurroundings), source)
- hit_target(source, target, charge_damage)
-
-/datum/action/cooldown/mob_cooldown/charge/proc/hit_target(atom/movable/source, atom/target, damage_dealt)
- if(!isliving(target))
- return
- var/mob/living/living_target = target
- living_target.visible_message("[source] slams into [living_target]!", "[source] tramples you into the ground!")
- source.forceMove(get_turf(living_target))
- living_target.apply_damage(damage_dealt, BRUTE, wound_bonus = CANT_WOUND)
- playsound(get_turf(living_target), 'sound/effects/meteorimpact.ogg', 100, TRUE)
- shake_camera(living_target, 4, 3)
+ try_hit_target(source, target)
+
+/// Attempt to hit someone with our charge
+/datum/action/cooldown/mob_cooldown/charge/proc/try_hit_target(atom/movable/source, atom/target)
+ if (can_hit_target(source, target))
+ hit_target(source, target, charge_damage)
+
+/// Returns true if we're allowed to charge into this target
+/datum/action/cooldown/mob_cooldown/charge/proc/can_hit_target(atom/movable/source, atom/target)
+ return isliving(target)
+
+/// Actually hit someone
+/datum/action/cooldown/mob_cooldown/charge/proc/hit_target(atom/movable/source, mob/living/target, damage_dealt)
+ target.visible_message(span_danger("[source] slams into [target]!"), span_userdanger("[source] tramples you into the ground!"))
+ target.apply_damage(damage_dealt, BRUTE, wound_bonus = CANT_WOUND)
+ playsound(get_turf(target), 'sound/effects/meteorimpact.ogg', 100, TRUE)
+ shake_camera(target, 4, 3)
shake_camera(source, 2, 3)
/datum/action/cooldown/mob_cooldown/charge/basic_charge
@@ -187,18 +193,21 @@
/datum/action/cooldown/mob_cooldown/charge/basic_charge/do_charge_indicator(atom/charger, atom/charge_target)
charger.Shake(shake_pixel_shift, shake_pixel_shift, shake_duration)
+/datum/action/cooldown/mob_cooldown/charge/basic_charge/can_hit_target(atom/movable/source, atom/target)
+ if(!isliving(target))
+ if(!target.density || target.CanPass(source, get_dir(target, source)))
+ return FALSE
+ return TRUE
+ return ..()
+
/datum/action/cooldown/mob_cooldown/charge/basic_charge/hit_target(atom/movable/source, atom/target, damage_dealt)
var/mob/living/living_source
if(isliving(source))
living_source = source
if(!isliving(target))
- if(!target.density || target.CanPass(source, get_dir(target, source)))
- return
source.visible_message(span_danger("[source] smashes into [target]!"))
- if(!living_source)
- return
- living_source.Stun(recoil_duration, ignore_canstun = TRUE)
+ living_source?.Stun(recoil_duration, ignore_canstun = TRUE)
return
var/mob/living/living_target = target
@@ -208,10 +217,9 @@
living_source.Stun(recoil_duration, ignore_canstun = TRUE)
return
- living_target.visible_message(span_danger("[source] charges on [living_target]!"), span_userdanger("[source] charges into you!"))
+ living_target.visible_message(span_danger("[source] charges into [living_target]!"), span_userdanger("[source] charges into you!"))
living_target.Knockdown(knockdown_duration)
-
/datum/status_effect/tired_post_charge
id = "tired_post_charge"
duration = 1 SECONDS
diff --git a/code/datums/actions/mobs/fire_breath.dm b/code/datums/actions/mobs/fire_breath.dm
index 45b6538c01836e..b3673b2f96cf93 100644
--- a/code/datums/actions/mobs/fire_breath.dm
+++ b/code/datums/actions/mobs/fire_breath.dm
@@ -37,7 +37,7 @@
var/list/turfs = get_line(owner, target_turf) - get_turf(owner)
INVOKE_ASYNC(src, PROC_REF(progressive_fire_line), turfs)
-/// Creates fire with a delay on the list of targetted turfs
+/// Creates fire with a delay on the list of targeted turfs
/datum/action/cooldown/mob_cooldown/fire_breath/proc/progressive_fire_line(list/burn_turfs)
if (QDELETED(owner) || owner.stat == DEAD)
return
diff --git a/code/datums/actions/mobs/personality_commune.dm b/code/datums/actions/mobs/personality_commune.dm
new file mode 100644
index 00000000000000..26cf4834492044
--- /dev/null
+++ b/code/datums/actions/mobs/personality_commune.dm
@@ -0,0 +1,56 @@
+// This can probably be changed to use mind linker at some point
+/datum/action/personality_commune
+ name = "Personality Commune"
+ desc = "Sends thoughts to your alternate consciousness."
+ background_icon_state = "bg_spell"
+ button_icon = 'icons/mob/actions/actions_spells.dmi'
+ button_icon_state = "telepathy"
+ overlay_icon_state = "bg_spell_border"
+
+ /// Fluff text shown when a message is sent to the pair
+ var/fluff_text = span_boldnotice("You hear an echoing voice in the back of your head...")
+
+/datum/action/personality_commune/New(Target)
+ . = ..()
+ if(!istype(target, /datum/brain_trauma/severe/split_personality))
+ stack_trace("[type] was created on a target that isn't a /datum/brain_trauma/severe/split_personality, this doesn't work.")
+ qdel(src)
+
+/datum/action/personality_commune/Grant(mob/grant_to)
+ if(!istype(grant_to, /mob/living/split_personality))
+ return
+
+ return ..()
+
+/datum/action/personality_commune/Trigger(trigger_flags)
+ . = ..()
+ if(!.)
+ return FALSE
+
+ var/datum/brain_trauma/severe/split_personality/trauma = target
+ var/mob/living/split_personality/non_controller = usr
+ var/client/non_controller_client = non_controller.client
+
+ var/to_send = tgui_input_text(non_controller, "What would you like to tell your other self?", "Commune")
+ if(QDELETED(src) || QDELETED(trauma) || !to_send)
+ return FALSE
+
+ var/mob/living/carbon/human/personality_body = trauma.owner
+ if(personality_body.client == non_controller_client) // We took control
+ return FALSE
+
+ var/user_message = span_boldnotice("You concentrate and send thoughts to your other self:")
+ var/user_message_body = span_notice("[to_send]")
+
+ to_chat(non_controller, "[user_message] [user_message_body]")
+
+ personality_body.balloon_alert(personality_body, "you hear a voice")
+ to_chat(personality_body, "[fluff_text] [user_message_body]")
+
+ log_directed_talk(non_controller, personality_body, to_send, LOG_SAY, "[name]")
+ for(var/dead_mob in GLOB.dead_mob_list)
+ if(!isobserver(dead_mob))
+ continue
+ to_chat(dead_mob, "[FOLLOW_LINK(dead_mob, non_controller)] [span_boldnotice("[non_controller] [name]:")] [span_notice("\"[to_send]\" to")] [span_name("[trauma]")]")
+
+ return TRUE
diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm
index f5af1409f9a9f2..a8c118303f32d0 100644
--- a/code/datums/ai/_ai_controller.dm
+++ b/code/datums/ai/_ai_controller.dm
@@ -619,6 +619,7 @@ multiple modular subtrees with behaviors
// We found the value that's been deleted, it was an assoc value. Clear it out entirely
else if(associated_value == source)
next_to_clear -= inner_value
+ SEND_SIGNAL(pawn, COMSIG_AI_BLACKBOARD_KEY_CLEARED(inner_value))
index += 1
diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/basic_attacking.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/basic_attacking.dm
index 91ba7ec489415d..21b141feff801e 100644
--- a/code/datums/ai/basic_mobs/basic_ai_behaviors/basic_attacking.dm
+++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/basic_attacking.dm
@@ -2,10 +2,10 @@
action_cooldown = 0.2 SECONDS // We gotta check unfortunately often because we're in a race condition with nextmove
behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION
-/datum/ai_behavior/basic_melee_attack/setup(datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_melee_attack/setup(datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
- if(!controller.blackboard_key_exists(targetting_datum_key))
- CRASH("No target datum was supplied in the blackboard for [controller.pawn]")
+ if(!controller.blackboard[targeting_strategy_key])
+ CRASH("No targeting strategy was supplied in the blackboard for [controller.pawn]")
//Hiding location is priority
var/atom/target = controller.blackboard[hiding_location_key] || controller.blackboard[target_key]
@@ -14,7 +14,7 @@
set_movement_target(controller, target)
-/datum/ai_behavior/basic_melee_attack/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_melee_attack/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
if (isliving(controller.pawn))
var/mob/living/pawn = controller.pawn
if (world.time < pawn.next_move)
@@ -22,15 +22,15 @@
. = ..()
var/mob/living/basic/basic_mob = controller.pawn
- //targetting datum will kill the action if not real anymore
+ //targeting strategy will kill the action if not real anymore
var/atom/target = controller.blackboard[target_key]
- var/datum/targetting_datum/targetting_datum = controller.blackboard[targetting_datum_key]
+ var/datum/targeting_strategy/targeting_strategy = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
- if(!targetting_datum.can_attack(basic_mob, target))
+ if(!targeting_strategy.can_attack(basic_mob, target))
finish_action(controller, FALSE, target_key)
return
- var/hiding_target = targetting_datum.find_hidden_mobs(basic_mob, target) //If this is valid, theyre hidden in something!
+ var/hiding_target = targeting_strategy.find_hidden_mobs(basic_mob, target) //If this is valid, theyre hidden in something!
controller.set_blackboard_key(hiding_location_key, hiding_target)
@@ -40,7 +40,7 @@
basic_mob.melee_attack(target)
-/datum/ai_behavior/basic_melee_attack/finish_action(datum/ai_controller/controller, succeeded, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_melee_attack/finish_action(datum/ai_controller/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
if(!succeeded)
controller.clear_blackboard_key(target_key)
@@ -54,30 +54,30 @@
///do we care about avoiding friendly fire?
var/avoid_friendly_fire = FALSE
-/datum/ai_behavior/basic_ranged_attack/setup(datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_ranged_attack/setup(datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
var/atom/target = controller.blackboard[hiding_location_key] || controller.blackboard[target_key]
if(QDELETED(target))
return FALSE
set_movement_target(controller, target)
-/datum/ai_behavior/basic_ranged_attack/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_ranged_attack/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
var/mob/living/basic/basic_mob = controller.pawn
- //targetting datum will kill the action if not real anymore
+ //targeting strategy will kill the action if not real anymore
var/atom/target = controller.blackboard[target_key]
- var/datum/targetting_datum/targetting_datum = controller.blackboard[targetting_datum_key]
+ var/datum/targeting_strategy/targeting_strategy = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
- if(!targetting_datum.can_attack(basic_mob, target, chase_range))
+ if(!targeting_strategy.can_attack(basic_mob, target, chase_range))
finish_action(controller, FALSE, target_key)
return
- var/atom/hiding_target = targetting_datum.find_hidden_mobs(basic_mob, target) //If this is valid, theyre hidden in something!
+ var/atom/hiding_target = targeting_strategy.find_hidden_mobs(basic_mob, target) //If this is valid, theyre hidden in something!
var/atom/final_target = hiding_target ? hiding_target : target
if(!can_see(basic_mob, final_target, required_distance))
return
- if(avoid_friendly_fire && check_friendly_in_path(basic_mob, target, targetting_datum))
+ if(avoid_friendly_fire && check_friendly_in_path(basic_mob, target, targeting_strategy))
adjust_position(basic_mob, target)
return ..()
@@ -85,17 +85,17 @@
basic_mob.RangedAttack(final_target)
return ..() //only start the cooldown when the shot is shot
-/datum/ai_behavior/basic_ranged_attack/finish_action(datum/ai_controller/controller, succeeded, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_ranged_attack/finish_action(datum/ai_controller/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
if(!succeeded)
controller.clear_blackboard_key(target_key)
-/datum/ai_behavior/basic_ranged_attack/proc/check_friendly_in_path(mob/living/source, atom/target, datum/targetting_datum/targetting_datum)
+/datum/ai_behavior/basic_ranged_attack/proc/check_friendly_in_path(mob/living/source, atom/target, datum/targeting_strategy/targeting_strategy)
var/list/turfs_list = calculate_trajectory(source, target)
for(var/turf/possible_turf as anything in turfs_list)
for(var/mob/living/potential_friend in possible_turf)
- if(!targetting_datum.can_attack(source, potential_friend))
+ if(!targeting_strategy.can_attack(source, potential_friend))
return TRUE
return FALSE
diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/nearest_targetting.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/nearest_targeting.dm
similarity index 100%
rename from code/datums/ai/basic_mobs/basic_ai_behaviors/nearest_targetting.dm
rename to code/datums/ai/basic_mobs/basic_ai_behaviors/nearest_targeting.dm
diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/set_travel_destination.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/set_travel_destination.dm
new file mode 100644
index 00000000000000..207df4424577d9
--- /dev/null
+++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/set_travel_destination.dm
@@ -0,0 +1,13 @@
+/datum/ai_behavior/set_travel_destination
+
+/datum/ai_behavior/set_travel_destination/perform(seconds_per_tick, datum/ai_controller/controller, target_key, location_key)
+ . = ..()
+ var/atom/target = controller.blackboard[target_key]
+
+ if(QDELETED(target))
+ finish_action(controller, FALSE, target_key)
+ return
+
+ controller.set_blackboard_key(location_key, target)
+
+ finish_action(controller, TRUE, target_key)
diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/targetting.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/targeting.dm
similarity index 82%
rename from code/datums/ai/basic_mobs/basic_ai_behaviors/targetting.dm
rename to code/datums/ai/basic_mobs/basic_ai_behaviors/targeting.dm
index 376f62a5855b53..435b9cb1ef3d04 100644
--- a/code/datums/ai/basic_mobs/basic_ai_behaviors/targetting.dm
+++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/targeting.dm
@@ -7,16 +7,16 @@
/// Static typecache list of potentially dangerous objs
var/static/list/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/vehicle/sealed/mecha))
-/datum/ai_behavior/find_potential_targets/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/find_potential_targets/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
var/mob/living/living_mob = controller.pawn
- var/datum/targetting_datum/targetting_datum = controller.blackboard[targetting_datum_key]
+ var/datum/targeting_strategy/targeting_strategy = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
- if(!targetting_datum)
+ if(!targeting_strategy)
CRASH("No target datum was supplied in the blackboard for [controller.pawn]")
var/atom/current_target = controller.blackboard[target_key]
- if (targetting_datum.can_attack(living_mob, current_target, vision_range))
+ if (targeting_strategy.can_attack(living_mob, current_target, vision_range))
finish_action(controller, succeeded = FALSE)
return
@@ -37,7 +37,7 @@
var/list/filtered_targets = list()
for(var/atom/pot_target in potential_targets)
- if(targetting_datum.can_attack(living_mob, pot_target))//Can we attack it?
+ if(targeting_strategy.can_attack(living_mob, pot_target))//Can we attack it?
filtered_targets += pot_target
continue
@@ -48,7 +48,7 @@
var/atom/target = pick_final_target(controller, filtered_targets)
controller.set_blackboard_key(target_key, target)
- var/atom/potential_hiding_location = targetting_datum.find_hidden_mobs(living_mob, target)
+ var/atom/potential_hiding_location = targeting_strategy.find_hidden_mobs(living_mob, target)
if(potential_hiding_location) //If they're hiding inside of something, we need to know so we can go for that instead initially.
controller.set_blackboard_key(hiding_location_key, potential_hiding_location)
diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/ventcrawling.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/ventcrawling.dm
index f5e4f74a1fecc3..e162cc612990a2 100644
--- a/code/datums/ai/basic_mobs/basic_ai_behaviors/ventcrawling.dm
+++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/ventcrawling.dm
@@ -18,7 +18,7 @@
. = ..()
var/obj/machinery/atmospherics/components/unary/vent_pump/entry_vent = controller.blackboard[target_key] || controller.blackboard[BB_ENTRY_VENT_TARGET]
var/mob/living/cached_pawn = controller.pawn
- if(HAS_TRAIT(cached_pawn, TRAIT_MOVE_VENTCRAWLING) || !controller.blackboard[BB_CURRENTLY_TARGETTING_VENT] || !is_vent_valid(entry_vent))
+ if(HAS_TRAIT(cached_pawn, TRAIT_MOVE_VENTCRAWLING) || !controller.blackboard[BB_CURRENTLY_TARGETING_VENT] || !is_vent_valid(entry_vent))
return
if(!cached_pawn.can_enter_vent(entry_vent, provide_feedback = FALSE)) // we're an AI we scoff at feedback
@@ -30,7 +30,7 @@
finish_action(controller, FALSE, target_key)
return
- controller.set_blackboard_key(BB_CURRENTLY_TARGETTING_VENT, FALSE) // must be done here because we have a do_after sleep in handle_ventcrawl unfortunately and double dipping could lead to erroneous suicide pill calls.
+ controller.set_blackboard_key(BB_CURRENTLY_TARGETING_VENT, FALSE) // must be done here because we have a do_after sleep in handle_ventcrawl unfortunately and double dipping could lead to erroneous suicide pill calls.
cached_pawn.handle_ventcrawl(entry_vent)
if(!HAS_TRAIT(cached_pawn, TRAIT_MOVE_VENTCRAWLING)) //something failed and we ARE NOT IN THE VENT even though the earlier check said we were good to go! odd.
finish_action(controller, FALSE, target_key)
@@ -134,5 +134,5 @@
controller.clear_blackboard_key(target_key)
controller.clear_blackboard_key(BB_ENTRY_VENT_TARGET)
controller.clear_blackboard_key(BB_EXIT_VENT_TARGET)
- controller.set_blackboard_key(BB_CURRENTLY_TARGETTING_VENT, FALSE) // just in case
+ controller.set_blackboard_key(BB_CURRENTLY_TARGETING_VENT, FALSE) // just in case
diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/wounded_targetting.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/wounded_targeting.dm
similarity index 94%
rename from code/datums/ai/basic_mobs/basic_ai_behaviors/wounded_targetting.dm
rename to code/datums/ai/basic_mobs/basic_ai_behaviors/wounded_targeting.dm
index 8535554e54b468..46037fdc076ee8 100644
--- a/code/datums/ai/basic_mobs/basic_ai_behaviors/wounded_targetting.dm
+++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/wounded_targeting.dm
@@ -7,5 +7,5 @@
living_targets += filtered_targets
if(living_targets.len)
sortTim(living_targets, GLOBAL_PROC_REF(cmp_mob_health))
- return living_targets[1]
+ return pop(living_targets)
return ..()
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/attack_adjacent_target.dm b/code/datums/ai/basic_mobs/basic_subtrees/attack_adjacent_target.dm
index c3d334165d95c3..4116900435460c 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/attack_adjacent_target.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/attack_adjacent_target.dm
@@ -12,19 +12,19 @@
var/mob/living/pawn = controller.pawn
if (LAZYLEN(pawn.do_afters))
return
- controller.queue_behavior(melee_attack_behavior, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETTING_DATUM, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
+ controller.queue_behavior(melee_attack_behavior, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
/// Attack something which is already adjacent to us without moving
/datum/ai_behavior/basic_melee_attack/opportunistic
action_cooldown = 0.2 SECONDS // We gotta check unfortunately often because we're in a race condition with nextmove
behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION
-/datum/ai_behavior/basic_melee_attack/opportunistic/setup(datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
- if (!controller.blackboard_key_exists(targetting_datum_key))
+/datum/ai_behavior/basic_melee_attack/opportunistic/setup(datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
+ if (!controller.blackboard_key_exists(targeting_strategy_key))
CRASH("No target datum was supplied in the blackboard for [controller.pawn]")
return controller.blackboard_key_exists(target_key)
-/datum/ai_behavior/basic_melee_attack/opportunistic/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_melee_attack/opportunistic/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
var/atom/movable/atom_pawn = controller.pawn
if(!atom_pawn.CanReach(controller.blackboard[target_key]))
finish_action(controller, TRUE, target_key) // Don't clear target
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/attack_obstacle_in_path.dm b/code/datums/ai/basic_mobs/basic_subtrees/attack_obstacle_in_path.dm
index 9f1053f29d3f29..7059bec93fe2fa 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/attack_obstacle_in_path.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/attack_obstacle_in_path.dm
@@ -74,7 +74,7 @@
return FALSE
if (basic_mob.see_invisible < object.invisibility)
return FALSE
- var/list/whitelist = basic_mob.ai_controller.blackboard[BB_OBSTACLE_TARGETTING_WHITELIST]
+ var/list/whitelist = basic_mob.ai_controller.blackboard[BB_OBSTACLE_TARGETING_WHITELIST]
if(whitelist && !is_type_in_typecache(object, whitelist))
return FALSE
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/capricious_retaliate.dm b/code/datums/ai/basic_mobs/basic_subtrees/capricious_retaliate.dm
index 47f4155ac45529..4d5319bca86e77 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/capricious_retaliate.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/capricious_retaliate.dm
@@ -1,19 +1,19 @@
/// Add or remove people to our retaliation shitlist just on an arbitrary whim
/datum/ai_planning_subtree/capricious_retaliate
/// Blackboard key which tells us how to select valid targets
- var/targetting_datum_key = BB_TARGETTING_DATUM
+ var/targeting_strategy_key = BB_TARGETING_STRATEGY
/// Whether we should skip checking faction for our decision
var/ignore_faction = TRUE
/datum/ai_planning_subtree/capricious_retaliate/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
. = ..()
- controller.queue_behavior(/datum/ai_behavior/capricious_retaliate, targetting_datum_key, ignore_faction)
+ controller.queue_behavior(/datum/ai_behavior/capricious_retaliate, targeting_strategy_key, ignore_faction)
/// Add or remove people to our retaliation shitlist just on an arbitrary whim
/datum/ai_behavior/capricious_retaliate
action_cooldown = 1 SECONDS
-/datum/ai_behavior/capricious_retaliate/perform(seconds_per_tick, datum/ai_controller/controller, targetting_datum_key, ignore_faction)
+/datum/ai_behavior/capricious_retaliate/perform(seconds_per_tick, datum/ai_controller/controller, targeting_strategy_key, ignore_faction)
. = ..()
var/atom/pawn = controller.pawn
if (controller.blackboard_key_exists(BB_BASIC_MOB_RETALIATE_LIST))
@@ -35,10 +35,10 @@
var/aggro_range = controller.blackboard[BB_AGGRO_RANGE] || 9
var/list/potential_targets = hearers(aggro_range, get_turf(pawn)) - pawn
if (!length(potential_targets))
- failed_targetting(controller, pawn, ignore_faction)
+ failed_targeting(controller, pawn, ignore_faction)
return
- var/datum/targetting_datum/target_helper = controller.blackboard[targetting_datum_key]
+ var/datum/targeting_strategy/target_helper = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
var/mob/living/final_target = null
if (ignore_faction)
@@ -49,7 +49,7 @@
final_target = test_target
if (isnull(final_target))
- failed_targetting(controller, pawn, ignore_faction)
+ failed_targeting(controller, pawn, ignore_faction)
return
controller.insert_blackboard_key_lazylist(BB_BASIC_MOB_RETALIATE_LIST, final_target)
@@ -57,7 +57,7 @@
finish_action(controller, TRUE, ignore_faction)
/// Called if we try but fail to target something
-/datum/ai_behavior/capricious_retaliate/proc/failed_targetting(datum/ai_controller/controller, atom/pawn, ignore_faction)
+/datum/ai_behavior/capricious_retaliate/proc/failed_targeting(datum/ai_controller/controller, atom/pawn, ignore_faction)
finish_action(controller, FALSE, ignore_faction)
pawn.visible_message(span_notice("[pawn] grumbles.")) // We're pissed off but with no outlet to vent our frustration upon
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/flee_target.dm b/code/datums/ai/basic_mobs/basic_subtrees/flee_target.dm
index 4f901745eeea5e..4a2f5b476c7590 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/flee_target.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/flee_target.dm
@@ -20,7 +20,7 @@
return SUBTREE_RETURN_FINISH_PLANNING //we gotta get out of here.
/// Try to escape from your current target, without performing any other actions.
-/// Reads from some fleeing-specific targetting keys rather than the current mob target.
+/// Reads from some fleeing-specific targeting keys rather than the current mob target.
/datum/ai_planning_subtree/flee_target/from_flee_key
target_key = BB_BASIC_MOB_FLEE_TARGET
hiding_place_key = BB_BASIC_MOB_FLEE_TARGET_HIDING_LOCATION
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/go_for_swim.dm b/code/datums/ai/basic_mobs/basic_subtrees/go_for_swim.dm
new file mode 100644
index 00000000000000..12c77119f3e182
--- /dev/null
+++ b/code/datums/ai/basic_mobs/basic_subtrees/go_for_swim.dm
@@ -0,0 +1,59 @@
+#define DEFAULT_TIME_SWIMMER 30 SECONDS
+
+///subtree to go and swim!
+/datum/ai_planning_subtree/go_for_swim
+
+/datum/ai_planning_subtree/go_for_swim/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
+ if(controller.blackboard_key_exists(BB_SWIM_ALTERNATE_TURF))
+ controller.queue_behavior(/datum/ai_behavior/travel_towards/swimming, BB_SWIM_ALTERNATE_TURF)
+
+ if(isnull(controller.blackboard[BB_KEY_SWIM_TIME]))
+ controller.set_blackboard_key(BB_KEY_SWIM_TIME, DEFAULT_TIME_SWIMMER)
+
+ var/mob/living/living_pawn = controller.pawn
+ var/turf/our_turf = get_turf(living_pawn)
+
+ // we have been taken out of water!
+ controller.set_blackboard_key(BB_CURRENTLY_SWIMMING, iswaterturf(our_turf))
+
+ if(controller.blackboard[BB_KEY_SWIM_TIME] < world.time)
+ controller.queue_behavior(/datum/ai_behavior/find_and_set/swim_alternate, BB_SWIM_ALTERNATE_TURF, /turf/open)
+ return
+
+ // have some fun in the water
+ if(controller.blackboard[BB_CURRENTLY_SWIMMING] && SPT_PROB(5, seconds_per_tick))
+ controller.queue_behavior(/datum/ai_behavior/perform_emote, "splashes water all around!")
+
+
+///find land if its time to get out of water, otherwise find water
+/datum/ai_behavior/find_and_set/swim_alternate
+
+/datum/ai_behavior/find_and_set/swim_alternate/search_tactic(datum/ai_controller/controller, locate_path, search_range)
+ var/mob/living/living_pawn = controller.pawn
+ if(QDELETED(living_pawn))
+ return null
+ var/look_for_land = controller.blackboard[BB_CURRENTLY_SWIMMING]
+ var/list/possible_turfs = list()
+ for(var/turf/possible_turf in oview(search_range, living_pawn))
+ if(isclosedturf(possible_turf) || isspaceturf(possible_turf) || isopenspaceturf(possible_turf))
+ continue
+ if(possible_turf.is_blocked_turf())
+ continue
+ if(look_for_land == iswaterturf(possible_turf))
+ continue
+ possible_turfs += possible_turf
+
+ if(!length(possible_turfs))
+ return null
+
+ return(pick(possible_turfs))
+
+/datum/ai_behavior/travel_towards/swimming
+ clear_target = TRUE
+
+/datum/ai_behavior/travel_towards/swimming/finish_action(datum/ai_controller/controller, succeeded, target_key)
+ . = ..()
+ var/time_to_add = controller.blackboard[BB_KEY_SWIMMER_COOLDOWN] ? controller.blackboard[BB_KEY_SWIMMER_COOLDOWN] : DEFAULT_TIME_SWIMMER
+ controller.set_blackboard_key(BB_KEY_SWIM_TIME, world.time + time_to_add )
+
+#undef DEFAULT_TIME_SWIMMER
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/opportunistic_ventcrawler.dm b/code/datums/ai/basic_mobs/basic_subtrees/opportunistic_ventcrawler.dm
index 63a745305b201d..240272d1ef48a1 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/opportunistic_ventcrawler.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/opportunistic_ventcrawler.dm
@@ -15,6 +15,6 @@
controller.queue_behavior(/datum/ai_behavior/travel_towards, BB_ENTRY_VENT_TARGET)
return
- controller.set_blackboard_key(BB_CURRENTLY_TARGETTING_VENT, TRUE)
+ controller.set_blackboard_key(BB_CURRENTLY_TARGETING_VENT, TRUE)
controller.queue_behavior(/datum/ai_behavior/crawl_through_vents, BB_ENTRY_VENT_TARGET)
return SUBTREE_RETURN_FINISH_PLANNING // we are going into this vent... no distractions
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/prepare_travel_to_destination.dm b/code/datums/ai/basic_mobs/basic_subtrees/prepare_travel_to_destination.dm
new file mode 100644
index 00000000000000..2718ca630ff7af
--- /dev/null
+++ b/code/datums/ai/basic_mobs/basic_subtrees/prepare_travel_to_destination.dm
@@ -0,0 +1,23 @@
+
+///Subtree that checks if we are on the target atom's tile, and sets it as a travel target if not
+///The target is taken from the blackboard. This one always requires a specific implementation.
+/datum/ai_planning_subtree/prepare_travel_to_destination
+ var/target_key
+ var/travel_destination_key = BB_TRAVEL_DESTINATION
+
+/datum/ai_planning_subtree/prepare_travel_to_destination/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
+ var/atom/target = controller.blackboard[target_key]
+
+ //Target is deleted, or we are already standing on it
+ if(QDELETED(target) || (isturf(target) && controller.pawn.loc == target) || (target.loc == controller.pawn.loc))
+ return
+
+ //Already set with this value, return
+ if(controller.blackboard[target_key] == controller.blackboard[travel_destination_key])
+ return
+
+ controller.queue_behavior(/datum/ai_behavior/set_travel_destination, target_key, travel_destination_key)
+ return //continue planning regardless of success
+
+/datum/ai_planning_subtree/prepare_travel_to_destination/trader
+ target_key = BB_SHOP_SPOT
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/ranged_skirmish.dm b/code/datums/ai/basic_mobs/basic_subtrees/ranged_skirmish.dm
index be395f3dfe49d2..95a125eea5ce5d 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/ranged_skirmish.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/ranged_skirmish.dm
@@ -14,30 +14,30 @@
. = ..()
if(!controller.blackboard_key_exists(target_key))
return
- controller.queue_behavior(attack_behavior, target_key, BB_TARGETTING_DATUM, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION, max_range, min_range)
+ controller.queue_behavior(attack_behavior, target_key, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION, max_range, min_range)
/// How often will we try to perform our ranged attack?
/datum/ai_behavior/ranged_skirmish
action_cooldown = 1 SECONDS
-/datum/ai_behavior/ranged_skirmish/setup(datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key, max_range, min_range)
+/datum/ai_behavior/ranged_skirmish/setup(datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key, max_range, min_range)
. = ..()
var/atom/target = controller.blackboard[hiding_location_key] || controller.blackboard[target_key]
return !QDELETED(target)
-/datum/ai_behavior/ranged_skirmish/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key, max_range, min_range)
+/datum/ai_behavior/ranged_skirmish/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key, max_range, min_range)
. = ..()
var/atom/target = controller.blackboard[target_key]
if (QDELETED(target))
finish_action(controller, succeeded = FALSE)
return
- var/datum/targetting_datum/targetting_datum = controller.blackboard[targetting_datum_key]
- if(!targetting_datum.can_attack(controller.pawn, target))
+ var/datum/targeting_strategy/targeting_strategy = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
+ if(!targeting_strategy.can_attack(controller.pawn, target))
finish_action(controller, succeeded = FALSE)
return
- var/hiding_target = targetting_datum.find_hidden_mobs(controller.pawn, target)
+ var/hiding_target = targeting_strategy.find_hidden_mobs(controller.pawn, target)
controller.set_blackboard_key(hiding_location_key, hiding_target)
target = hiding_target || target
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/simple_attack_target.dm b/code/datums/ai/basic_mobs/basic_subtrees/simple_attack_target.dm
index 210aaf0aa8b26f..5b1f5ffbff9ed5 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/simple_attack_target.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/simple_attack_target.dm
@@ -8,7 +8,7 @@
. = ..()
if(!controller.blackboard_key_exists(BB_BASIC_MOB_CURRENT_TARGET))
return
- controller.queue_behavior(melee_attack_behavior, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETTING_DATUM, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
+ controller.queue_behavior(melee_attack_behavior, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
if (end_planning)
return SUBTREE_RETURN_FINISH_PLANNING //we are going into battle...no distractions.
@@ -20,5 +20,5 @@
. = ..()
if(!controller.blackboard_key_exists(BB_BASIC_MOB_CURRENT_TARGET))
return
- controller.queue_behavior(ranged_attack_behavior, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETTING_DATUM, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
+ controller.queue_behavior(ranged_attack_behavior, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
return SUBTREE_RETURN_FINISH_PLANNING //we are going into battle...no distractions.
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/simple_find_nearest_target_to_flee.dm b/code/datums/ai/basic_mobs/basic_subtrees/simple_find_nearest_target_to_flee.dm
index 3fe1ada33ba994..6630f7d193d90f 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/simple_find_nearest_target_to_flee.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/simple_find_nearest_target_to_flee.dm
@@ -5,11 +5,11 @@
. = ..()
if (controller.blackboard[BB_BASIC_MOB_STOP_FLEEING])
return
- controller.queue_behavior(/datum/ai_behavior/find_potential_targets/nearest, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETTING_DATUM, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
+ controller.queue_behavior(/datum/ai_behavior/find_potential_targets/nearest, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
/// Find the nearest thing on our list of 'things which have done damage to me' and set it as the flee target
/datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee
- var/targeting_key = BB_TARGETTING_DATUM
+ var/targeting_key = BB_TARGETING_STRATEGY
/datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
. = ..()
@@ -18,4 +18,4 @@
controller.queue_behavior(/datum/ai_behavior/target_from_retaliate_list/nearest, BB_BASIC_MOB_RETALIATE_LIST, BB_BASIC_MOB_CURRENT_TARGET, targeting_key, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
/datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee/from_flee_key
- targeting_key = BB_FLEE_TARGETTING_DATUM
+ targeting_key = BB_FLEE_TARGETING_STRATEGY
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/simple_find_target.dm b/code/datums/ai/basic_mobs/basic_subtrees/simple_find_target.dm
index ec4ef1863adc9b..1c7d8de9120ba3 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/simple_find_target.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/simple_find_target.dm
@@ -2,7 +2,7 @@
/datum/ai_planning_subtree/simple_find_target/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
. = ..()
- controller.queue_behavior(/datum/ai_behavior/find_potential_targets, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETTING_DATUM, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
+ controller.queue_behavior(/datum/ai_behavior/find_potential_targets, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
// Prevents finding a target if a human is nearby
/datum/ai_planning_subtree/simple_find_target/not_while_observed
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/simple_find_wounded_target.dm b/code/datums/ai/basic_mobs/basic_subtrees/simple_find_wounded_target.dm
index 8840c1ea3a76ce..7a230014d9ab2e 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/simple_find_wounded_target.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/simple_find_wounded_target.dm
@@ -3,4 +3,4 @@
/datum/ai_planning_subtree/simple_find_wounded_target/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
. = ..()
- controller.queue_behavior(/datum/ai_behavior/find_potential_targets/most_wounded, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETTING_DATUM, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
+ controller.queue_behavior(/datum/ai_behavior/find_potential_targets/most_wounded, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/target_retaliate.dm b/code/datums/ai/basic_mobs/basic_subtrees/target_retaliate.dm
index 701f911d273250..55ec7387613170 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/target_retaliate.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/target_retaliate.dm
@@ -2,7 +2,7 @@
/datum/ai_planning_subtree/target_retaliate
operational_datums = list(/datum/element/ai_retaliate, /datum/component/ai_retaliate_advanced)
/// Blackboard key which tells us how to select valid targets
- var/targetting_datum_key = BB_TARGETTING_DATUM
+ var/targeting_strategy_key = BB_TARGETING_STRATEGY
/// Blackboard key in which to store selected target
var/target_key = BB_BASIC_MOB_CURRENT_TARGET
/// Blackboard key in which to store selected target's hiding place
@@ -12,16 +12,16 @@
/datum/ai_planning_subtree/target_retaliate/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
. = ..()
- controller.queue_behavior(/datum/ai_behavior/target_from_retaliate_list, BB_BASIC_MOB_RETALIATE_LIST, target_key, targetting_datum_key, hiding_place_key, check_faction)
+ controller.queue_behavior(/datum/ai_behavior/target_from_retaliate_list, BB_BASIC_MOB_RETALIATE_LIST, target_key, targeting_strategy_key, hiding_place_key, check_faction)
/datum/ai_planning_subtree/target_retaliate/check_faction
check_faction = TRUE
/// Places a mob which you can see and who has recently attacked you into some 'run away from this' AI keys
-/// Can use a different targetting datum than you use to select attack targets
+/// Can use a different targeting strategy than you use to select attack targets
/// Not required if fleeing is the only target behaviour or uses the same target datum
/datum/ai_planning_subtree/target_retaliate/to_flee
- targetting_datum_key = BB_FLEE_TARGETTING_DATUM
+ targeting_strategy_key = BB_FLEE_TARGETING_STRATEGY
target_key = BB_BASIC_MOB_FLEE_TARGET
hiding_place_key = BB_BASIC_MOB_FLEE_TARGET_HIDING_LOCATION
@@ -34,11 +34,11 @@
/// How far can we see stuff?
var/vision_range = 9
-/datum/ai_behavior/target_from_retaliate_list/perform(seconds_per_tick, datum/ai_controller/controller, shitlist_key, target_key, targetting_datum_key, hiding_location_key, check_faction)
+/datum/ai_behavior/target_from_retaliate_list/perform(seconds_per_tick, datum/ai_controller/controller, shitlist_key, target_key, targeting_strategy_key, hiding_location_key, check_faction)
. = ..()
var/mob/living/living_mob = controller.pawn
- var/datum/targetting_datum/targetting_datum = controller.blackboard[targetting_datum_key]
- if(!targetting_datum)
+ var/datum/targeting_strategy/targeting_strategy = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
+ if(!targeting_strategy)
CRASH("No target datum was supplied in the blackboard for [controller.pawn]")
var/list/shitlist = controller.blackboard[shitlist_key]
@@ -47,13 +47,13 @@
if (!check_faction)
controller.set_blackboard_key(BB_TEMPORARILY_IGNORE_FACTION, TRUE)
- if (!QDELETED(existing_target) && (locate(existing_target) in shitlist) && targetting_datum.can_attack(living_mob, existing_target, vision_range))
+ if (!QDELETED(existing_target) && (locate(existing_target) in shitlist) && targeting_strategy.can_attack(living_mob, existing_target, vision_range))
finish_action(controller, succeeded = TRUE, check_faction = check_faction)
return
var/list/enemies_list = list()
for(var/mob/living/potential_target as anything in shitlist)
- if(!targetting_datum.can_attack(living_mob, potential_target, vision_range))
+ if(!targeting_strategy.can_attack(living_mob, potential_target, vision_range))
continue
enemies_list += potential_target
@@ -65,7 +65,7 @@
var/atom/new_target = pick_final_target(controller, enemies_list)
controller.set_blackboard_key(target_key, new_target)
- var/atom/potential_hiding_location = targetting_datum.find_hidden_mobs(living_mob, new_target)
+ var/atom/potential_hiding_location = targeting_strategy.find_hidden_mobs(living_mob, new_target)
if(potential_hiding_location) //If they're hiding inside of something, we need to know so we can go for that instead initially.
controller.set_blackboard_key(hiding_location_key, potential_hiding_location)
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/targeted_mob_ability.dm b/code/datums/ai/basic_mobs/basic_subtrees/targeted_mob_ability.dm
index d9ee3ef09182de..cd809804ba369e 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/targeted_mob_ability.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/targeted_mob_ability.dm
@@ -1,7 +1,7 @@
/// Attempts to use a mob ability on a target
/datum/ai_planning_subtree/targeted_mob_ability
/// Blackboard key for the ability
- var/ability_key = BB_TARGETTED_ACTION
+ var/ability_key = BB_TARGETED_ACTION
/// Blackboard key for where the target ref is stored
var/target_key = BB_BASIC_MOB_CURRENT_TARGET
/// Behaviour to perform using ability
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/use_mob_ability.dm b/code/datums/ai/basic_mobs/basic_subtrees/use_mob_ability.dm
index fb83b8f8684ade..5ceef67bedb26c 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/use_mob_ability.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/use_mob_ability.dm
@@ -1,6 +1,6 @@
/**
* Simple behaviours which simply try to use an ability whenever it is available.
- * For something which wants a target try `targetted_mob_ability`.
+ * For something which wants a target try `targeted_mob_ability`.
*/
/datum/ai_planning_subtree/use_mob_ability
/// Blackboard key for the ability
diff --git a/code/datums/ai/basic_mobs/generic_controllers.dm b/code/datums/ai/basic_mobs/generic_controllers.dm
index 208c1833add843..dae1b944dd321d 100644
--- a/code/datums/ai/basic_mobs/generic_controllers.dm
+++ b/code/datums/ai/basic_mobs/generic_controllers.dm
@@ -1,7 +1,7 @@
/// The most basic AI tree which just finds a guy and then runs at them to click them
/datum/ai_controller/basic_controller/simple_hostile
blackboard = list(
- BB_TARGETTING_DATUM = new /datum/targetting_datum/basic,
+ BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
)
ai_movement = /datum/ai_movement/basic_avoidance
@@ -14,7 +14,7 @@
/// Find a target, walk at target, attack intervening obstacles
/datum/ai_controller/basic_controller/simple_hostile_obstacles
blackboard = list(
- BB_TARGETTING_DATUM = new /datum/targetting_datum/basic,
+ BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
)
ai_movement = /datum/ai_movement/basic_avoidance
diff --git a/code/datums/ai/basic_mobs/pet_commands/pet_use_targetted_ability.dm b/code/datums/ai/basic_mobs/pet_commands/pet_use_targeted_ability.dm
similarity index 100%
rename from code/datums/ai/basic_mobs/pet_commands/pet_use_targetted_ability.dm
rename to code/datums/ai/basic_mobs/pet_commands/pet_use_targeted_ability.dm
diff --git a/code/datums/ai/basic_mobs/targetting_datums/basic_targetting_datum.dm b/code/datums/ai/basic_mobs/targeting_strategies/basic_targeting_strategy.dm
similarity index 79%
rename from code/datums/ai/basic_mobs/targetting_datums/basic_targetting_datum.dm
rename to code/datums/ai/basic_mobs/targeting_strategies/basic_targeting_strategy.dm
index d8b7e49c23cdde..2505b87a717f96 100644
--- a/code/datums/ai/basic_mobs/targetting_datums/basic_targetting_datum.dm
+++ b/code/datums/ai/basic_mobs/targeting_strategies/basic_targeting_strategy.dm
@@ -1,18 +1,19 @@
-///Datum for basic mobs to define what they can attack.
-/datum/targetting_datum
+///Datum for basic mobs to define what they can attack.GET_TARGETING_STRATEGY\((/[^,]*)\),
+///Global, just like ai_behaviors
+/datum/targeting_strategy
///Returns true or false depending on if the target can be attacked by the mob
-/datum/targetting_datum/proc/can_attack(mob/living/living_mob, atom/target, vision_range)
+/datum/targeting_strategy/proc/can_attack(mob/living/living_mob, atom/target, vision_range)
return
///Returns something the target might be hiding inside of
-/datum/targetting_datum/proc/find_hidden_mobs(mob/living/living_mob, atom/target)
+/datum/targeting_strategy/proc/find_hidden_mobs(mob/living/living_mob, atom/target)
var/atom/target_hiding_location
if(istype(target.loc, /obj/structure/closet) || istype(target.loc, /obj/machinery/disposal) || istype(target.loc, /obj/machinery/sleeper))
target_hiding_location = target.loc
return target_hiding_location
-/datum/targetting_datum/basic
+/datum/targeting_strategy/basic
/// When we do our basic faction check, do we look for exact faction matches?
var/check_factions_exactly = FALSE
/// Whether we care for seeing the target or not
@@ -22,7 +23,7 @@
/// If this blackboard key is TRUE, makes us only target wounded mobs
var/target_wounded_key
-/datum/targetting_datum/basic/can_attack(mob/living/living_mob, atom/the_target, vision_range)
+/datum/targeting_strategy/basic/can_attack(mob/living/living_mob, atom/the_target, vision_range)
var/datum/ai_controller/basic_controller/our_controller = living_mob.ai_controller
if(isnull(our_controller))
@@ -82,29 +83,29 @@
return FALSE
/// Returns true if the mob and target share factions
-/datum/targetting_datum/basic/proc/faction_check(datum/ai_controller/controller, mob/living/living_mob, mob/living/the_target)
+/datum/targeting_strategy/basic/proc/faction_check(datum/ai_controller/controller, mob/living/living_mob, mob/living/the_target)
if (controller.blackboard[BB_ALWAYS_IGNORE_FACTION] || controller.blackboard[BB_TEMPORARILY_IGNORE_FACTION])
return FALSE
return living_mob.faction_check_atom(the_target, exact_match = check_factions_exactly)
/// Subtype more forgiving for items.
/// Careful, this can go wrong and keep a mob hyper-focused on an item it can't lose aggro on
-/datum/targetting_datum/basic/allow_items
+/datum/targeting_strategy/basic/allow_items
-/datum/targetting_datum/basic/allow_items/can_attack(mob/living/living_mob, atom/the_target, vision_range)
+/datum/targeting_strategy/basic/allow_items/can_attack(mob/living/living_mob, atom/the_target, vision_range)
. = ..()
if(isitem(the_target))
// trust fall exercise
return TRUE
/// Subtype which searches for mobs of a size relative to ours
-/datum/targetting_datum/basic/of_size
+/datum/targeting_strategy/basic/of_size
/// If true, we will return mobs which are smaller than us. If false, larger.
var/find_smaller = TRUE
/// If true, we will return mobs which are the same size as us.
var/inclusive = TRUE
-/datum/targetting_datum/basic/of_size/can_attack(mob/living/owner, atom/target, vision_range)
+/datum/targeting_strategy/basic/of_size/can_attack(mob/living/owner, atom/target, vision_range)
if(!isliving(target))
return FALSE
. = ..()
@@ -119,14 +120,14 @@
return !find_smaller
// This is just using the default values but the subtype makes it clearer
-/datum/targetting_datum/basic/of_size/ours_or_smaller
+/datum/targeting_strategy/basic/of_size/ours_or_smaller
-/datum/targetting_datum/basic/of_size/larger
+/datum/targeting_strategy/basic/of_size/larger
find_smaller = FALSE
inclusive = FALSE
/// Makes the mob only attack their own faction. Useful mostly if their attacks do something helpful (e.g. healing touch).
-/datum/targetting_datum/basic/same_faction
+/datum/targeting_strategy/basic/same_faction
-/datum/targetting_datum/basic/same_faction/faction_check(mob/living/living_mob, mob/living/the_target)
+/datum/targeting_strategy/basic/same_faction/faction_check(mob/living/living_mob, mob/living/the_target)
return !..() // inverts logic to ONLY target mobs that share a faction
diff --git a/code/datums/ai/basic_mobs/targetting_datums/dont_target_friends.dm b/code/datums/ai/basic_mobs/targeting_strategies/dont_target_friends.dm
similarity index 55%
rename from code/datums/ai/basic_mobs/targetting_datums/dont_target_friends.dm
rename to code/datums/ai/basic_mobs/targeting_strategies/dont_target_friends.dm
index e2081bf308e9cf..1b52c4986bb4f6 100644
--- a/code/datums/ai/basic_mobs/targetting_datums/dont_target_friends.dm
+++ b/code/datums/ai/basic_mobs/targeting_strategies/dont_target_friends.dm
@@ -1,12 +1,12 @@
/// Don't target an atom in our friends list (or turfs), anything else is fair game
-/datum/targetting_datum/basic/not_friends
+/datum/targeting_strategy/basic/not_friends
/// Stop regarding someone as a valid target once they pass this stat level, setting it to DEAD means you will happily attack corpses
var/attack_until_past_stat = HARD_CRIT
/// If we can try to closed turfs or not
var/attack_closed_turf = FALSE
///Returns true or false depending on if the target can be attacked by the mob
-/datum/targetting_datum/basic/not_friends/can_attack(mob/living/living_mob, atom/target, vision_range)
+/datum/targeting_strategy/basic/not_friends/can_attack(mob/living/living_mob, atom/target, vision_range)
if(attack_closed_turf && isclosedturf(target))
return TRUE
@@ -16,16 +16,16 @@
return ..()
///friends dont care about factions
-/datum/targetting_datum/basic/not_friends/faction_check(mob/living/living_mob, mob/living/the_target)
+/datum/targeting_strategy/basic/not_friends/faction_check(mob/living/living_mob, mob/living/the_target)
return FALSE
-/datum/targetting_datum/basic/not_friends/attack_closed_turfs
+/datum/targeting_strategy/basic/not_friends/attack_closed_turfs
attack_closed_turf = TRUE
-/// Subtype that allows us to target items while deftly avoiding attacking our allies. Be careful when it comes to targetting items as an AI could get trapped targetting something it can't destroy.
-/datum/targetting_datum/basic/not_friends/allow_items
+/// Subtype that allows us to target items while deftly avoiding attacking our allies. Be careful when it comes to targeting items as an AI could get trapped targeting something it can't destroy.
+/datum/targeting_strategy/basic/not_friends/allow_items
-/datum/targetting_datum/basic/not_friends/allow_items/can_attack(mob/living/living_mob, atom/the_target, vision_range)
+/datum/targeting_strategy/basic/not_friends/allow_items/can_attack(mob/living/living_mob, atom/the_target, vision_range)
. = ..()
if(isitem(the_target))
// trust fall exercise
diff --git a/code/datums/ai/basic_mobs/targeting_strategies/with_object.dm b/code/datums/ai/basic_mobs/targeting_strategies/with_object.dm
new file mode 100644
index 00000000000000..7cc76d3010c906
--- /dev/null
+++ b/code/datums/ai/basic_mobs/targeting_strategies/with_object.dm
@@ -0,0 +1,29 @@
+/**
+ * Find mobs who are holding the bb configurable object type
+ *
+ * This is an extension of basic targeting behaviour, that allows you to
+ * only target the mob if they have a specific item in their hand.
+ *
+ */
+/datum/targeting_strategy/basic/holding_object
+ /// BB key that holds the target typepath to use
+ var/target_item_key = BB_TARGET_HELD_ITEM
+
+///Returns true or false depending on if the target can be attacked by the mob
+/datum/targeting_strategy/basic/holding_object/can_attack(mob/living/living_mob, atom/target, vision_range)
+ var/datum/ai_controller/controller = living_mob.ai_controller
+ var/object_type_path = controller.blackboard[target_item_key]
+
+ if (object_type_path == null)
+ return FALSE // no op
+ if(!ismob(target))
+ return FALSE // no hands no problems
+
+ // Look at me, type casting like a grown up
+ var/mob/targetmob = target
+ // Check if our parent behaviour agrees we can attack this target (we ignore faction by default)
+ var/can_attack = ..()
+ if(can_attack && targetmob.is_holding_item_of_type(object_type_path))
+ return TRUE // they have the item
+ // No valid target
+ return FALSE
diff --git a/code/datums/ai/basic_mobs/targetting_datums/with_object.dm b/code/datums/ai/basic_mobs/targetting_datums/with_object.dm
deleted file mode 100644
index 91e99bb4a221cc..00000000000000
--- a/code/datums/ai/basic_mobs/targetting_datums/with_object.dm
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Find mobs who are holding the configurable object type
- *
- * This is an extension of basic targeting behaviour, that allows you to
- * only target the mob if they have a specific item in their hand.
- *
- */
-/datum/targetting_datum/basic/holding_object
- // We will find mobs who are holding this object in their hands
- var/object_type_path = null
-
-/**
- * Create an instance of the holding object targeting datum
- *
- * * object_type_path Pass an object type path, this will be compared to the items
- * in targets hands to filter the target list.
- */
-/datum/targetting_datum/basic/holding_object/New(object_type_path)
- if (!ispath(object_type_path))
- stack_trace("trying to create an item targeting datum with no valid typepath")
- // Leaving object type as null will make this basically a noop
- return
- src.object_type_path = object_type_path
-
-///Returns true or false depending on if the target can be attacked by the mob
-/datum/targetting_datum/basic/holding_object/can_attack(mob/living/living_mob, atom/target, vision_range)
- if (object_type_path == null)
- return FALSE // no op
- if(!ismob(target))
- return FALSE // no hands no problems
-
- // Look at me, type casting like a grown up
- var/mob/targetmob = target
- // Check if our parent behaviour agrees we can attack this target (we ignore faction by default)
- var/can_attack = ..()
- if(can_attack && targetmob.is_holding_item_of_type(object_type_path))
- return TRUE // they have the item
- // No valid target
- return FALSE
diff --git a/code/datums/ai/dog/dog_behaviors.dm b/code/datums/ai/dog/dog_behaviors.dm
index 6c9cb779bb3bd7..c7723eab1a182a 100644
--- a/code/datums/ai/dog/dog_behaviors.dm
+++ b/code/datums/ai/dog/dog_behaviors.dm
@@ -7,18 +7,18 @@
behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM
required_distance = 3
-/datum/ai_behavior/basic_melee_attack/dog/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_melee_attack/dog/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
controller.behavior_cooldowns[src] = world.time + action_cooldown
var/mob/living/living_pawn = controller.pawn
if(!(isturf(living_pawn.loc) || HAS_TRAIT(living_pawn, TRAIT_AI_BAGATTACK))) // Void puppies can attack from inside bags
- finish_action(controller, FALSE, target_key, targetting_datum_key, hiding_location_key)
+ finish_action(controller, FALSE, target_key, targeting_strategy_key, hiding_location_key)
return
// Unfortunately going to repeat this check in parent call but what can you do
var/atom/target = controller.blackboard[target_key]
- var/datum/targetting_datum/targetting_datum = controller.blackboard[targetting_datum_key]
- if (!targetting_datum.can_attack(living_pawn, target))
- finish_action(controller, FALSE, target_key, targetting_datum_key, hiding_location_key)
+ var/datum/targeting_strategy/targeting_strategy = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
+ if (!targeting_strategy.can_attack(living_pawn, target))
+ finish_action(controller, FALSE, target_key, targeting_strategy_key, hiding_location_key)
return
if (!living_pawn.Adjacent(target))
diff --git a/code/datums/ai/dog/dog_controller.dm b/code/datums/ai/dog/dog_controller.dm
index a95e3d57b6b200..6710fa9eb7650a 100644
--- a/code/datums/ai/dog/dog_controller.dm
+++ b/code/datums/ai/dog/dog_controller.dm
@@ -2,7 +2,7 @@
blackboard = list(
BB_DOG_HARASS_HARM = TRUE,
BB_VISION_RANGE = AI_DOG_VISION_RANGE,
- BB_PET_TARGETTING_DATUM = new /datum/targetting_datum/basic/not_friends,
+ BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends,
)
ai_movement = /datum/ai_movement/basic_avoidance
idle_behavior = /datum/idle_behavior/idle_dog
@@ -19,9 +19,11 @@
blackboard = list(
BB_DOG_HARASS_HARM = TRUE,
BB_VISION_RANGE = AI_DOG_VISION_RANGE,
- BB_PET_TARGETTING_DATUM = new /datum/targetting_datum/basic/not_friends,
- // Find nearby mobs with tongs in hand.
- BB_TARGETTING_DATUM = new /datum/targetting_datum/basic/holding_object(/obj/item/kitchen/tongs),
+ BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends,
+ // Find nearby mobs ...
+ BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/holding_object,
+ // With tongs in hand!
+ BB_TARGET_HELD_ITEM = /obj/item/kitchen/tongs,
BB_BABIES_PARTNER_TYPES = list(/mob/living/basic/pet/dog),
BB_BABIES_CHILD_TYPES = list(/mob/living/basic/pet/dog/corgi/puppy = 95, /mob/living/basic/pet/dog/corgi/puppy/void = 5),
)
@@ -31,7 +33,7 @@
/datum/ai_planning_subtree/make_babies, // Ian WILL prioritise sex over following your instructions
/datum/ai_planning_subtree/pet_planning,
/datum/ai_planning_subtree/dog_harassment,
- // Find targets to run away from (uses the targetting datum from above)
+ // Find targets to run away from (uses the targeting strategy from above)
/datum/ai_planning_subtree/simple_find_target,
// Flee from that target
/datum/ai_planning_subtree/flee_target,
diff --git a/code/datums/ai/dog/dog_subtrees.dm b/code/datums/ai/dog/dog_subtrees.dm
index 66198b61ac305f..62f63da54bdd0e 100644
--- a/code/datums/ai/dog/dog_subtrees.dm
+++ b/code/datums/ai/dog/dog_subtrees.dm
@@ -4,27 +4,27 @@
/datum/ai_planning_subtree/dog_harassment/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
if(!SPT_PROB(10, seconds_per_tick))
return
- controller.queue_behavior(/datum/ai_behavior/find_hated_dog_target, BB_DOG_HARASS_TARGET, BB_PET_TARGETTING_DATUM)
+ controller.queue_behavior(/datum/ai_behavior/find_hated_dog_target, BB_DOG_HARASS_TARGET, BB_PET_TARGETING_STRATEGY)
var/atom/harass_target = controller.blackboard[BB_DOG_HARASS_TARGET]
if (isnull(harass_target))
return
- controller.queue_behavior(/datum/ai_behavior/basic_melee_attack/dog, BB_DOG_HARASS_TARGET, BB_PET_TARGETTING_DATUM)
+ controller.queue_behavior(/datum/ai_behavior/basic_melee_attack/dog, BB_DOG_HARASS_TARGET, BB_PET_TARGETING_STRATEGY)
return SUBTREE_RETURN_FINISH_PLANNING
/datum/ai_behavior/find_hated_dog_target
-/datum/ai_behavior/find_hated_dog_target/setup(datum/ai_controller/controller, target_key, targetting_datum_key)
+/datum/ai_behavior/find_hated_dog_target/setup(datum/ai_controller/controller, target_key, targeting_strategy_key)
. = ..()
var/mob/living/dog = controller.pawn
- var/datum/targetting_datum/targetting_datum = controller.blackboard[targetting_datum_key]
+ var/datum/targeting_strategy/targeting_strategy = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
for(var/mob/living/iter_living in oview(2, dog))
if(iter_living.stat != CONSCIOUS || !HAS_TRAIT(iter_living, TRAIT_HATED_BY_DOGS))
continue
if(!isnull(dog.buckled))
dog.audible_message(span_notice("[dog] growls at [iter_living], yet [dog.p_they()] [dog.p_are()] much too comfy to move."), hearing_distance = COMBAT_MESSAGE_RANGE)
continue
- if(!targetting_datum.can_attack(dog, iter_living))
+ if(!targeting_strategy.can_attack(dog, iter_living))
continue
dog.audible_message(span_warning("[dog] growls at [iter_living], seemingly annoyed by [iter_living.p_their()] presence."), hearing_distance = COMBAT_MESSAGE_RANGE)
diff --git a/code/datums/ai/generic/find_and_set.dm b/code/datums/ai/generic/find_and_set.dm
index 43337674969b16..8ecc6df7cfbbb5 100644
--- a/code/datums/ai/generic/find_and_set.dm
+++ b/code/datums/ai/generic/find_and_set.dm
@@ -135,3 +135,20 @@
if (nearby_bodies.len)
return pick(nearby_bodies)
+
+/**
+ * A variant that looks for a human who is not dead or incapacitated, and has a mind
+ */
+/datum/ai_behavior/find_and_set/conscious_person
+
+/datum/ai_behavior/find_and_set/conscious_person/search_tactic(datum/ai_controller/controller, locate_path, search_range)
+ var/list/customers = list()
+ for(var/mob/living/carbon/human/target in oview(search_range, controller.pawn))
+ if(IS_DEAD_OR_INCAP(target) || !target.mind)
+ continue
+ customers += target
+
+ if(customers.len)
+ return pick(customers)
+
+ return null
diff --git a/code/datums/ai/idle_behaviors/idle_random_walk.dm b/code/datums/ai/idle_behaviors/idle_random_walk.dm
index d99957f419bb16..8924da5c30bb0f 100644
--- a/code/datums/ai/idle_behaviors/idle_random_walk.dm
+++ b/code/datums/ai/idle_behaviors/idle_random_walk.dm
@@ -10,7 +10,10 @@
if(SPT_PROB(walk_chance, seconds_per_tick) && (living_pawn.mobility_flags & MOBILITY_MOVE) && isturf(living_pawn.loc) && !living_pawn.pulledby)
var/move_dir = pick(GLOB.alldirs)
- living_pawn.Move(get_step(living_pawn, move_dir), move_dir)
+ var/turf/destination_turf = get_step(living_pawn, move_dir)
+ if(!destination_turf?.can_cross_safely(living_pawn))
+ return
+ living_pawn.Move(destination_turf, move_dir)
/datum/idle_behavior/idle_random_walk/less_walking
walk_chance = 10
@@ -25,6 +28,20 @@
return
return ..()
+/// Only walk if we are not on the target's location
+/datum/idle_behavior/idle_random_walk/not_while_on_target
+ ///What is the spot we have to stand on?
+ var/target_key
+
+/datum/idle_behavior/idle_random_walk/not_while_on_target/perform_idle_behavior(seconds_per_tick, datum/ai_controller/controller)
+ var/atom/target = controller.blackboard[target_key]
+
+ //Don't move, if we are are already standing on it
+ if(!QDELETED(target) && ((isturf(target) && controller.pawn.loc == target) || (target.loc == controller.pawn.loc)))
+ return
+
+ return ..()
+
/// walk randomly however stick near a target
/datum/idle_behavior/walk_near_target
/// chance to walk
@@ -55,7 +72,7 @@
var/turf/possible_step = get_step(living_pawn, direction)
if(get_dist(possible_step, target) > minimum_distance)
continue
- if(possible_step.is_blocked_turf())
+ if(possible_step.is_blocked_turf() || !possible_step.can_cross_safely(living_pawn))
continue
possible_turfs += possible_step
diff --git a/code/datums/ai/learn_ai.md b/code/datums/ai/learn_ai.md
index 9906806cfbd578..e4e8a712cf0bfe 100644
--- a/code/datums/ai/learn_ai.md
+++ b/code/datums/ai/learn_ai.md
@@ -25,7 +25,7 @@ First, let's look at the blackboard.
```dm
/datum/ai_controller/basic/cow
blackboard = list(
- BB_TARGETTING_DATUM = new /datum/targetting_datum/basic/allow_items(),
+ BB_TARGETING_STRATEGY = new /datum/targeting_strategy/basic/allow_items(),
BB_BASIC_MOB_TIP_REACTING = FALSE,
BB_BASIC_MOB_TIPPER = null,
)
@@ -81,7 +81,7 @@ Okay, so we have blackboard variables, which are considered by subtrees to plan
//now we know we have a target but should let a hostile subtree plan attacking humans. let's check if it's actually food
if(target in wanted)
- controller.queue_behavior(/datum/ai_behavior/basic_melee_attack, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETTING_DATUM, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
+ controller.queue_behavior(/datum/ai_behavior/basic_melee_attack, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
return SUBTREE_RETURN_FINISH_PLANNING //this prevents further subtrees from planning since we want to focus on eating the food
```
@@ -94,7 +94,7 @@ And one of those behaviors, `basic_melee_attack`. As I have been doing so far, I
//flag tells the AI it needs to have a movement target to work, and since it doesn't have "AI_BEHAVIOR_MOVE_AND_PERFORM", it won't call perform() every 0.6 seconds until it is in melee range. Smart!
behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT
-/datum/ai_behavior/basic_melee_attack/setup(datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_melee_attack/setup(datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
//all this is doing in setup is setting the movement target. setup is called once when the behavior is first planned, and returning FALSE can cancel the behavior if something isn't right.
@@ -107,20 +107,20 @@ And one of those behaviors, `basic_melee_attack`. As I have been doing so far, I
controller.current_movement_target = target
///perform will run every "action_cooldown" deciseconds as long as the conditions are good for it to do so (we set "AI_BEHAVIOR_REQUIRE_MOVEMENT", so it won't perform until in range).
-/datum/ai_behavior/basic_melee_attack/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_melee_attack/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
var/mob/living/basic/basic_mob = controller.pawn
- //targetting datum will kill the action if not real anymore
+ //targeting strategy will kill the action if not real anymore
var/datum/weakref/weak_target = controller.blackboard[target_key]
var/atom/target = weak_target?.resolve()
- var/datum/targetting_datum/targetting_datum = controller.blackboard[targetting_datum_key]
+ var/datum/targeting_strategy/targeting_strategy = controller.blackboard[targeting_strategy_key]
- if(!targetting_datum.can_attack(basic_mob, target))
+ if(!targeting_strategy.can_attack(basic_mob, target))
///We have a target that is no longer valid to attack. Remember that returning doesn't end the behavior, JUST this single performance. So we call "finish_action" with whether it succeeded in doing what it wanted to do (it didn't, so FALSE) and the blackboard keys passed into this behavior.
finish_action(controller, FALSE, target_key)
return //don't forget to end the performance too
- var/hiding_target = targetting_datum.find_hidden_mobs(basic_mob, target) //If this is valid, theyre hidden in something!
+ var/hiding_target = targeting_strategy.find_hidden_mobs(basic_mob, target) //If this is valid, theyre hidden in something!
controller.blackboard[hiding_location_key] = hiding_target
@@ -131,7 +131,7 @@ And one of those behaviors, `basic_melee_attack`. As I have been doing so far, I
basic_mob.melee_attack(target)
///and so the action has ended. we can now clean up the AI's blackboard based on the success of the action, and the keys passed in.
-/datum/ai_behavior/basic_melee_attack/finish_action(datum/ai_controller/controller, succeeded, target_key, targetting_datum_key, hiding_location_key)
+/datum/ai_behavior/basic_melee_attack/finish_action(datum/ai_controller/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
///if the behavior failed, the target is no longer valid, so we should lose aggro of them. We remove the target_key (which could be anything, it's whatever key was passed into the behavior by the subtree) from the blackboard. Couldn't do THAT with normal variables!
if(!succeeded)
diff --git a/code/datums/ai/movement/_ai_movement.dm b/code/datums/ai/movement/_ai_movement.dm
index 2b734ca24a920e..dac9ecac00164f 100644
--- a/code/datums/ai/movement/_ai_movement.dm
+++ b/code/datums/ai/movement/_ai_movement.dm
@@ -24,37 +24,49 @@
if(controller.pathing_attempts >= max_pathing_attempts)
controller.CancelActions()
-///Should the movement be allowed to happen? As of writing this, MOVELOOP_SKIP_STEP is defined as (1<<0) so be careful on using (return TRUE) or (can_move = TRUE; return can_move)
+///Should the movement be allowed to happen?
/datum/ai_movement/proc/allowed_to_move(datum/move_loop/source)
+ SHOULD_BE_PURE(TRUE)
+
var/atom/movable/pawn = source.moving
var/datum/ai_controller/controller = source.extra_info
- source.delay = controller.movement_delay
var/can_move = TRUE
- if(controller.ai_traits & STOP_MOVING_WHEN_PULLED && pawn.pulledby) //Need to store more state. Annoying.
+ if((controller.ai_traits & STOP_MOVING_WHEN_PULLED) && pawn.pulledby) //Need to store more state. Annoying.
can_move = FALSE
if(!isturf(pawn.loc)) //No moving if not on a turf
can_move = FALSE
+ if(isliving(pawn))
+ var/mob/living/pawn_mob = pawn
+ if(!(pawn_mob.mobility_flags & MOBILITY_MOVE))
+ can_move = FALSE
+
+ return can_move
+
+///Anything to do before moving; any checks if the pawn should be able to move should be placed in allowed_to_move() and called by this proc
+/datum/ai_movement/proc/pre_move(datum/move_loop/source)
+ SIGNAL_HANDLER
+ SHOULD_NOT_OVERRIDE(TRUE)
+
+ var/datum/ai_controller/controller = source.extra_info
+
// Check if this controller can actually run, so we don't chase people with corpses
if(!controller.able_to_run())
controller.CancelActions()
qdel(source) //stop moving
return MOVELOOP_SKIP_STEP
- //Why doesn't this return TRUE or can_move?
- //MOVELOOP_SKIP_STEP is defined as (1<<0) and TRUE are defined as the same "1", returning TRUE would be the equivalent of skipping the move
- if(can_move)
+ source.delay = controller.movement_delay
+
+ // Why doesn't this return TRUE?
+ // MOVELOOP_SKIP_STEP is defined as (1<<0) and TRUE are defined as the same "1", returning TRUE would be the equivalent of skipping the move
+ if(allowed_to_move(source))
return
increment_pathing_failures(controller)
return MOVELOOP_SKIP_STEP
-///Anything to do before moving; any checks if the pawn should be able to move should be placed in allowed_to_move() and called by this proc
-/datum/ai_movement/proc/pre_move(datum/move_loop/source)
- SIGNAL_HANDLER
- return allowed_to_move(source)
-
//Anything to do post movement
/datum/ai_movement/proc/post_move(datum/move_loop/source, succeeded)
SIGNAL_HANDLER
diff --git a/code/datums/ai/movement/ai_movement_basic_avoidance.dm b/code/datums/ai/movement/ai_movement_basic_avoidance.dm
index 371fb9dbc4bdf7..6b48f1b5e9e1f1 100644
--- a/code/datums/ai/movement/ai_movement_basic_avoidance.dm
+++ b/code/datums/ai/movement/ai_movement_basic_avoidance.dm
@@ -16,10 +16,8 @@
/datum/ai_movement/basic_avoidance/allowed_to_move(datum/move_loop/has_target/dist_bound/source)
. = ..()
var/turf/target_turf = get_step_towards(source.moving, source.target)
-
- if(is_type_in_typecache(target_turf, GLOB.dangerous_turfs))
- . = FALSE
- return .
+ if(!target_turf?.can_cross_safely(source.moving))
+ return FALSE
/// Move immediately and don't update our facing
/datum/ai_movement/basic_avoidance/backstep
diff --git a/code/datums/ai/movement/ai_movement_complete_stop.dm b/code/datums/ai/movement/ai_movement_complete_stop.dm
index 7805eeb3f6f656..f47b202b5a1b6f 100644
--- a/code/datums/ai/movement/ai_movement_complete_stop.dm
+++ b/code/datums/ai/movement/ai_movement_complete_stop.dm
@@ -12,4 +12,4 @@
RegisterSignal(loop, COMSIG_MOVELOOP_PREPROCESS_CHECK, PROC_REF(pre_move))
/datum/ai_movement/complete_stop/allowed_to_move(datum/move_loop/source)
- return // no movement allowed
+ return FALSE
diff --git a/code/datums/ai/movement/ai_movement_dumb.dm b/code/datums/ai/movement/ai_movement_dumb.dm
index a38024ff2cc8d9..06ac4bdd10c4cb 100644
--- a/code/datums/ai/movement/ai_movement_dumb.dm
+++ b/code/datums/ai/movement/ai_movement_dumb.dm
@@ -14,7 +14,5 @@
/datum/ai_movement/dumb/allowed_to_move(datum/move_loop/has_target/source)
. = ..()
var/turf/target_turf = get_step_towards(source.moving, source.target)
-
- if(is_type_in_typecache(target_turf, GLOB.dangerous_turfs))
- . = FALSE
- return .
+ if(!target_turf?.can_cross_safely(source.moving))
+ return FALSE
diff --git a/code/datums/brain_damage/creepy_trauma.dm b/code/datums/brain_damage/creepy_trauma.dm
index 0203a78b2f7d24..1b19b4744cb75c 100644
--- a/code/datums/brain_damage/creepy_trauma.dm
+++ b/code/datums/brain_damage/creepy_trauma.dm
@@ -67,6 +67,7 @@
/datum/brain_trauma/special/obsessed/on_lose()
..()
owner.mind.remove_antag_datum(/datum/antagonist/obsessed)
+ owner.clear_mood_event("creeping")
if(obsession)
UnregisterSignal(obsession, COMSIG_MOB_EYECONTACT)
diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm
index 48fabd701f45b4..61175593ce4d7f 100644
--- a/code/datums/brain_damage/imaginary_friend.dm
+++ b/code/datums/brain_damage/imaginary_friend.dm
@@ -83,8 +83,7 @@
var/mob/living/owner
var/bubble_icon = "default"
- var/datum/action/innate/imaginary_join/join
- var/datum/action/innate/imaginary_hide/hide
+
/mob/camera/imaginary_friend/Login()
. = ..()
@@ -105,10 +104,11 @@
*/
/mob/camera/imaginary_friend/Initialize(mapload)
. = ..()
- join = new
- join.Grant(src)
- hide = new
- hide.Grant(src)
+ var/static/list/grantable_actions = list(
+ /datum/action/innate/imaginary_join,
+ /datum/action/innate/imaginary_hide,
+ )
+ grant_actions_by_list(grantable_actions)
/// Links this imaginary friend to the provided mob
/mob/camera/imaginary_friend/proc/attach_to_owner(mob/living/imaginary_friend_owner)
diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm
index ed3e91707b99d8..81d354a19e841c 100644
--- a/code/datums/brain_damage/special.dm
+++ b/code/datums/brain_damage/special.dm
@@ -107,6 +107,10 @@
. = ..()
QDEL_IN(src, 30 SECONDS)
+/obj/effect/client_image_holder/bluespace_stream/generate_image()
+ . = ..()
+ apply_wibbly_filters(.)
+
/obj/effect/client_image_holder/bluespace_stream/Destroy()
if(!QDELETED(linked_to))
qdel(linked_to)
diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm
index e5890a5fa9b869..faa05a6bd28ea1 100644
--- a/code/datums/brain_damage/split_personality.dm
+++ b/code/datums/brain_damage/split_personality.dm
@@ -25,11 +25,11 @@
/datum/brain_trauma/severe/split_personality/proc/make_backseats()
stranger_backseat = new(owner, src)
- var/datum/action/cooldown/spell/personality_commune/stranger_spell = new(src)
+ var/datum/action/personality_commune/stranger_spell = new(src)
stranger_spell.Grant(stranger_backseat)
owner_backseat = new(owner, src)
- var/datum/action/cooldown/spell/personality_commune/owner_spell = new(src)
+ var/datum/action/personality_commune/owner_spell = new(src)
owner_spell.Grant(owner_backseat)
/// Attempts to get a ghost to play the personality
@@ -256,13 +256,20 @@
gain_text = span_warning("Crap, that was one drink too many. You black out...")
lose_text = "You wake up very, very confused and hungover. All you can remember is drinking a lot of alcohol... what happened?"
poll_role = "blacked out drunkard"
+ random_gain = FALSE
/// Duration of effect, tracked in seconds, not deciseconds. qdels when reaching 0.
var/duration_in_seconds = 180
/datum/brain_trauma/severe/split_personality/blackout/on_gain()
. = ..()
RegisterSignal(owner, COMSIG_ATOM_SPLASHED, PROC_REF(on_splashed))
- notify_ghosts("[owner] is blacking out!", source = owner, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Bro I'm not even drunk right now")
+ notify_ghosts(
+ "[owner] is blacking out!",
+ source = owner,
+ action = NOTIFY_ORBIT,
+ notify_flags = NOTIFY_CATEGORY_NOFLASH,
+ header = "Bro I'm not even drunk right now",
+ )
/datum/brain_trauma/severe/split_personality/blackout/on_lose()
. = ..()
diff --git a/code/datums/components/appearance_on_aggro.dm b/code/datums/components/appearance_on_aggro.dm
index 33a3d7c2e90d65..8c0df88e6fdbc4 100644
--- a/code/datums/components/appearance_on_aggro.dm
+++ b/code/datums/components/appearance_on_aggro.dm
@@ -45,7 +45,6 @@
return
current_target = target
- RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_clear_target))
if (!isnull(aggro_overlay) || !isnull(aggro_state))
source.update_appearance(UPDATE_ICON)
if (!isnull(alpha_on_aggro))
@@ -61,7 +60,6 @@
revert_appearance(parent)
/datum/component/appearance_on_aggro/proc/revert_appearance(mob/living/source)
- UnregisterSignal(current_target, COMSIG_QDELETING)
current_target = null
if (!isnull(aggro_overlay) || !isnull(aggro_state))
source.update_appearance(UPDATE_ICON)
diff --git a/code/datums/components/bumpattack.dm b/code/datums/components/bumpattack.dm
index ec8cd272a44626..a305b43c25bb75 100644
--- a/code/datums/components/bumpattack.dm
+++ b/code/datums/components/bumpattack.dm
@@ -64,7 +64,7 @@
var/obj/item/our_weapon = proxy_weapon || parent
if(!istype(our_weapon))
CRASH("[our_weapon] somehow failed istype")
- if(!TIMER_COOLDOWN_CHECK(src, COOLDOWN_BUMP_ATTACK))
+ if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_BUMP_ATTACK))
TIMER_COOLDOWN_START(src, COOLDOWN_BUMP_ATTACK, attack_cooldown)
INVOKE_ASYNC(target, TYPE_PROC_REF(/atom, attackby), our_weapon, bumper)
bumper.visible_message(span_danger("[bumper] charges into [target], attacking with [our_weapon]!"), span_danger("You charge into [target], attacking with [our_weapon]!"), vision_distance = COMBAT_MESSAGE_RANGE)
diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm
index 94a943b42c8fd0..a8b64f428d9a5d 100644
--- a/code/datums/components/crafting/ranged_weapon.dm
+++ b/code/datums/components/crafting/ranged_weapon.dm
@@ -206,6 +206,36 @@
time = 5 SECONDS
category = CAT_WEAPON_RANGED
+/datum/crafting_recipe/rebarxbow
+ name = "Heated Rebar Crossbow"
+ result = /obj/item/gun/ballistic/rifle/rebarxbow
+ reqs = list(
+ /obj/item/stack/rods = 6,
+ /obj/item/stack/cable_coil = 12,
+ /obj/item/inducer = 1,
+ )
+ blacklist = list(
+ /obj/item/inducer/sci,
+ )
+ tool_behaviors = list(TOOL_WELDER)
+ time = 5 SECONDS
+ category = CAT_WEAPON_RANGED
+
+/datum/crafting_recipe/rebarxbowforced
+ name = "Forced Rebar Crossbow"
+ desc = "Get an extra shot in your crossbow... for a chance of shooting yourself when you fire it."
+ result = /obj/item/gun/ballistic/rifle/rebarxbow/forced
+ reqs = list(
+ /obj/item/gun/ballistic/rifle/rebarxbow = 1,
+ )
+ blacklist = list(
+ /obj/item/gun/ballistic/rifle/rebarxbow/forced,
+ /obj/item/gun/ballistic/rifle/rebarxbow/syndie,
+ )
+ tool_behaviors = list(TOOL_CROWBAR)
+ time = 1 SECONDS
+ category = CAT_WEAPON_RANGED
+
/datum/crafting_recipe/pipegun_prime
name = "Regal Pipegun"
always_available = FALSE
diff --git a/code/datums/components/crafting/weapon_ammo.dm b/code/datums/components/crafting/weapon_ammo.dm
index 437bfaa2e92029..44b8055b3ff94b 100644
--- a/code/datums/components/crafting/weapon_ammo.dm
+++ b/code/datums/components/crafting/weapon_ammo.dm
@@ -12,6 +12,17 @@
time = 0.5 SECONDS
category = CAT_WEAPON_AMMO
+/datum/crafting_recipe/rebarsyndie
+ name = "jagged iron rod"
+ result = /obj/item/ammo_casing/rebar/syndie
+ reqs = list(
+ /obj/item/stack/rods = 1,
+ )
+ tool_behaviors = list(TOOL_WIRECUTTER)
+ time = 0.5 SECONDS
+ always_available = FALSE
+ category = CAT_WEAPON_AMMO
+
/datum/crafting_recipe/pulseslug
name = "Pulse Slug Shell"
result = /obj/item/ammo_casing/shotgun/pulseslug
diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm
index 6d098ecc44e3a4..a155e904c7ff6f 100644
--- a/code/datums/components/cult_ritual_item.dm
+++ b/code/datums/components/cult_ritual_item.dm
@@ -368,11 +368,22 @@
if(!check_if_in_ritual_site(cultist, cult_team))
return FALSE
var/area/summon_location = get_area(cultist)
- priority_announce("Figments from an eldritch god are being summoned by [cultist.real_name] into [summon_location.get_original_area_name()] from an unknown dimension. Disrupt the ritual at all costs!", "Central Command Higher Dimensional Affairs", sound = 'sound/ambience/antag/bloodcult/bloodcult_scribe.ogg', has_important_message = TRUE)
+ priority_announce(
+ text = "Figments from an eldritch god are being summoned by [cultist.real_name] into [summon_location.get_original_area_name()] from an unknown dimension. Disrupt the ritual at all costs!",
+ sound = 'sound/ambience/antag/bloodcult/bloodcult_scribe.ogg',
+ sender_override = "[command_name()] Higher Dimensional Affairs",
+ has_important_message = TRUE,
+ )
for(var/shielded_turf in spiral_range_turfs(1, cultist, 1))
LAZYADD(shields, new /obj/structure/emergency_shield/cult/narsie(shielded_turf))
- notify_ghosts("[cultist] has begun scribing a Nar'Sie rune!", source = cultist, action = NOTIFY_ORBIT, header = "Maranax Infirmux!")
+ notify_ghosts(
+ "[cultist] has begun scribing a Nar'Sie rune!",
+ source = cultist,
+ action = NOTIFY_ORBIT,
+ header = "Maranax Infirmux!",
+ notify_flags = NOTIFY_CATEGORY_NOFLASH,
+ )
return TRUE
diff --git a/code/datums/components/damage_chain.dm b/code/datums/components/damage_chain.dm
new file mode 100644
index 00000000000000..be61ec68a33cc1
--- /dev/null
+++ b/code/datums/components/damage_chain.dm
@@ -0,0 +1,112 @@
+/**
+ * Draws a line between you and another atom, hurt anyone stood in the line
+ */
+/datum/component/damage_chain
+ dupe_mode = COMPONENT_DUPE_ALLOWED
+ /// How often do we attempt to deal damage?
+ var/tick_interval
+ /// Tracks when we can next deal damage
+ COOLDOWN_DECLARE(tick_cooldown)
+ /// Damage inflicted per tick
+ var/damage_per_tick
+ /// Type of damage to inflict
+ var/damage_type
+ /// Optional callback which checks if we can damage the target
+ var/datum/callback/validate_target
+ /// Optional callback for additional visuals or text display when dealing damage
+ var/datum/callback/chain_damage_feedback
+ /// We will fire the damage feedback callback on every x successful attacks
+ var/feedback_interval
+ /// How many successful attacks have we made?
+ var/successful_attacks = 0
+ /// Time between making any attacks at which we just reset the successful attack counter
+ var/reset_feedback_timer = 0
+ /// Our chain
+ var/datum/beam/chain
+
+/datum/component/damage_chain/Initialize(
+ atom/linked_to,
+ max_distance = 7,
+ beam_icon = 'icons/effects/beam.dmi',
+ beam_state = "medbeam",
+ beam_type = /obj/effect/ebeam,
+ tick_interval = 0.3 SECONDS,
+ damage_per_tick = 1.2,
+ damage_type = BURN,
+ datum/callback/validate_target = null,
+ datum/callback/chain_damage_feedback = null,
+ feedback_interval = 5,
+)
+ . = ..()
+ if (!isatom(parent))
+ return COMPONENT_INCOMPATIBLE
+ if (!isatom(linked_to))
+ CRASH("Attempted to create [type] linking [parent.type] with non-atom [linked_to]!")
+
+ src.tick_interval = tick_interval
+ src.damage_per_tick = damage_per_tick
+ src.damage_type = damage_type
+ src.validate_target = validate_target
+ src.chain_damage_feedback = chain_damage_feedback
+ src.feedback_interval = feedback_interval
+
+ var/atom/atom_parent = parent
+ chain = atom_parent.Beam(linked_to, icon = beam_icon, icon_state = beam_state, beam_type = beam_type, maxdistance = max_distance)
+ RegisterSignal(chain, COMSIG_QDELETING, PROC_REF(end_beam))
+ START_PROCESSING(SSfastprocess, src)
+
+/datum/component/damage_chain/RegisterWithParent()
+ RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(end_beam)) // We actually don't really use many signals it's all processing
+
+/datum/component/damage_chain/UnregisterFromParent()
+ UnregisterSignal(parent, COMSIG_LIVING_DEATH)
+
+/datum/component/damage_chain/Destroy(force, silent)
+ if (!QDELETED(chain))
+ UnregisterSignal(chain, COMSIG_QDELETING)
+ QDEL_NULL(chain)
+ chain = null
+ STOP_PROCESSING(SSfastprocess, src)
+ return ..()
+
+/// Destroy ourself
+/datum/component/damage_chain/proc/end_beam()
+ SIGNAL_HANDLER
+ qdel(src)
+
+/datum/component/damage_chain/process(seconds_per_tick)
+ var/successful_hit = FALSE
+ var/list/target_turfs = list()
+ for(var/obj/effect/ebeam/chainpart in chain.elements)
+ if (isnull(chainpart) || !chainpart.x || !chainpart.y || !chainpart.z)
+ continue
+ var/turf/overlaps = get_turf_pixel(chainpart)
+ target_turfs |= overlaps
+ if(overlaps == get_turf(chain.origin) || overlaps == get_turf(chain.target))
+ continue
+ for(var/turf/nearby_turf in circle_range(overlaps, 1))
+ target_turfs |= nearby_turf
+
+ for(var/turf/hit_turf as anything in target_turfs)
+ for(var/mob/living/victim in hit_turf)
+ if (victim == parent || victim.stat == DEAD)
+ continue
+ if (!isnull(validate_target) && !validate_target.Invoke(victim))
+ continue
+ if (successful_attacks == 0)
+ chain_damage_feedback?.Invoke(victim)
+ victim.apply_damage(damage_per_tick, damage_type, wound_bonus = CANT_WOUND)
+ successful_hit = TRUE
+
+ if (isnull(chain_damage_feedback))
+ return
+ if (successful_hit)
+ successful_attacks++
+ reset_feedback_timer = addtimer(CALLBACK(src, PROC_REF(reset_feedback)), 10 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE|TIMER_DELETE_ME)
+ if (successful_attacks > feedback_interval)
+ reset_feedback()
+
+/// Make it so that the next time we hit something we'll invoke the feedback callback
+/datum/component/damage_chain/proc/reset_feedback()
+ successful_attacks = 0
+ deltimer(reset_feedback_timer)
diff --git a/code/datums/components/deadchat_control.dm b/code/datums/components/deadchat_control.dm
index 48096e47670645..2a00b2f955dc60 100644
--- a/code/datums/components/deadchat_control.dm
+++ b/code/datums/components/deadchat_control.dm
@@ -39,7 +39,12 @@
if(deadchat_mode & ANARCHY_MODE) // Choose one, please.
stack_trace("deadchat_control component added to [parent.type] with both democracy and anarchy modes enabled.")
timerid = addtimer(CALLBACK(src, PROC_REF(democracy_loop)), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP)
- notify_ghosts("[parent] is now deadchat controllable!", source = parent, action = NOTIFY_ORBIT, header="Something Interesting!")
+ notify_ghosts(
+ "[parent] is now deadchat controllable!",
+ source = parent,
+ action = NOTIFY_ORBIT,
+ header = "Something Interesting!",
+ )
if(!ismob(parent) && !SSpoints_of_interest.is_valid_poi(parent))
SSpoints_of_interest.make_point_of_interest(parent)
generated_point_of_interest = TRUE
diff --git a/code/datums/components/direct_explosive_trap.dm b/code/datums/components/direct_explosive_trap.dm
new file mode 100644
index 00000000000000..0d204f21a1ee7b
--- /dev/null
+++ b/code/datums/components/direct_explosive_trap.dm
@@ -0,0 +1,85 @@
+/**
+ * Responds to certain signals and 'explodes' on the person using the item.
+ * Differs from `interaction_booby_trap` in that this doesn't actually explode, it just directly calls ex_act on one person.
+ */
+/datum/component/direct_explosive_trap
+ /// An optional mob to inform about explosions
+ var/mob/living/saboteur
+ /// Amount of force to apply
+ var/explosive_force
+ /// Colour for examine notification
+ var/glow_colour
+ /// Optional additional target checks before we go off
+ var/datum/callback/explosive_checks
+ /// Signals which set off the bomb, must pass a mob as the first non-source argument
+ var/list/triggering_signals
+
+/datum/component/direct_explosive_trap/Initialize(
+ mob/living/saboteur,
+ explosive_force = EXPLODE_HEAVY,
+ expire_time = 1 MINUTES,
+ glow_colour = COLOR_RED,
+ datum/callback/explosive_checks,
+ list/triggering_signals = list(COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_BUMPED)
+)
+ . = ..()
+ if (!isatom(parent))
+ return COMPONENT_INCOMPATIBLE
+ src.saboteur = saboteur
+ src.explosive_force = explosive_force
+ src.glow_colour = glow_colour
+ src.explosive_checks = explosive_checks
+ src.triggering_signals = triggering_signals
+
+ if (expire_time > 0)
+ addtimer(CALLBACK(src, PROC_REF(bomb_expired)), expire_time, TIMER_DELETE_ME)
+
+/datum/component/direct_explosive_trap/RegisterWithParent()
+ if (!(COMSIG_ATOM_EXAMINE in triggering_signals)) // Maybe you're being extra mean with this one
+ RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined))
+ RegisterSignals(parent, triggering_signals, PROC_REF(explode))
+ if (!isnull(saboteur))
+ RegisterSignal(saboteur, COMSIG_QDELETING, PROC_REF(on_bomber_deleted))
+
+/datum/component/direct_explosive_trap/UnregisterFromParent()
+ UnregisterSignal(parent, list(COMSIG_ATOM_EXAMINE) + triggering_signals)
+ if (!isnull(saboteur))
+ UnregisterSignal(saboteur, COMSIG_QDELETING)
+
+/datum/component/direct_explosive_trap/Destroy(force, silent)
+ if (isnull(saboteur))
+ return ..()
+ UnregisterSignal(saboteur, COMSIG_QDELETING)
+ saboteur = null
+ return ..()
+
+/// Called if we sit too long without going off
+/datum/component/direct_explosive_trap/proc/bomb_expired()
+ if (!isnull(saboteur))
+ to_chat(saboteur, span_bolddanger("Failure! Your trap didn't catch anyone this time..."))
+ qdel(src)
+
+/// Let people know something is up
+/datum/component/direct_explosive_trap/proc/on_examined(datum/source, mob/user, text)
+ SIGNAL_HANDLER
+ text += span_holoparasite("It glows with a strange light...")
+
+/// Blow up
+/datum/component/direct_explosive_trap/proc/explode(atom/source, mob/living/victim)
+ SIGNAL_HANDLER
+ if (!isliving(victim))
+ return
+ if (!isnull(explosive_checks) && !explosive_checks.Invoke(victim))
+ return
+ to_chat(victim, span_bolddanger("[source] was boobytrapped!"))
+ if (!isnull(saboteur))
+ to_chat(saboteur, span_bolddanger("Success! Your trap on [source] caught [victim.name]!"))
+ playsound(source, 'sound/effects/explosion2.ogg', 200, TRUE)
+ new /obj/effect/temp_visual/explosion(get_turf(source))
+ EX_ACT(victim, explosive_force)
+ qdel(src)
+
+/// Don't hang a reference to the person who placed the bomb
+/datum/component/direct_explosive_trap/proc/on_bomber_deleted()
+ SIGNAL_HANDLER
+ saboteur = null
diff --git a/code/datums/components/energized.dm b/code/datums/components/energized.dm
index 64adeb5e9be6b5..41262e23efc6a5 100644
--- a/code/datums/components/energized.dm
+++ b/code/datums/components/energized.dm
@@ -106,7 +106,12 @@
return FALSE
// Finally the interesting part where they ACTUALLY get hit!
- notify_ghosts("[future_tram_victim] has fallen in the path of an oncoming tram!", source = future_tram_victim, action = NOTIFY_ORBIT, header = "Electrifying!")
+ notify_ghosts(
+ "[future_tram_victim] has fallen in the path of an oncoming tram!",
+ source = future_tram_victim,
+ action = NOTIFY_ORBIT,
+ header = "Electrifying!",
+ )
playsound(src, SFX_SPARKS, 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
source.audible_message(span_danger("[parent] makes a loud electric crackle!"))
to_chat(future_tram_victim, span_userdanger("You hear a loud electric crackle!"))
diff --git a/code/datums/components/explode_on_attack.dm b/code/datums/components/explode_on_attack.dm
new file mode 100644
index 00000000000000..0560184f2ba0a8
--- /dev/null
+++ b/code/datums/components/explode_on_attack.dm
@@ -0,0 +1,40 @@
+/**
+ * Bombs the user after an attack
+ */
+/datum/component/explode_on_attack
+ /// range of bomb impact
+ var/impact_range
+ /// should we be destroyed after the explosion?
+ var/destroy_on_explode
+ /// list of mobs we wont bomb on attack
+ var/list/mob_type_dont_bomb
+
+/datum/component/explode_on_attack/Initialize(impact_range = 1, destroy_on_explode = TRUE, list/mob_type_dont_bomb = list())
+ if(!isliving(parent))
+ return COMPONENT_INCOMPATIBLE
+ src.impact_range = impact_range
+ src.destroy_on_explode = destroy_on_explode
+ src.mob_type_dont_bomb = mob_type_dont_bomb
+
+/datum/component/explode_on_attack/RegisterWithParent()
+ RegisterSignal(parent, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(bomb_target))
+
+/datum/component/explode_on_attack/UnregisterFromParent()
+ UnregisterSignal(parent, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)
+
+
+/datum/component/explode_on_attack/proc/bomb_target(mob/living/owner, atom/victim)
+ SIGNAL_HANDLER
+
+ if(!isliving(victim))
+ return
+
+ if(is_type_in_typecache(victim, mob_type_dont_bomb))
+ return
+
+ explosion(owner, light_impact_range = impact_range, explosion_cause = src)
+
+ if(destroy_on_explode && owner)
+ qdel(owner)
+ return COMPONENT_HOSTILE_NO_ATTACK
+
diff --git a/code/datums/components/fishing_spot.dm b/code/datums/components/fishing_spot.dm
index f88c27a7135306..05456380235afb 100644
--- a/code/datums/components/fishing_spot.dm
+++ b/code/datums/components/fishing_spot.dm
@@ -36,7 +36,7 @@
if(HAS_TRAIT(user,TRAIT_GONE_FISHING) || rod.currently_hooked_item)
user.balloon_alert(user, "already fishing")
return COMPONENT_NO_AFTERATTACK
- var/denial_reason = fish_source.reason_we_cant_fish(rod, user)
+ var/denial_reason = fish_source.reason_we_cant_fish(rod, user, parent)
if(denial_reason)
to_chat(user, span_warning(denial_reason))
return COMPONENT_NO_AFTERATTACK
diff --git a/code/datums/components/food/germ_sensitive.dm b/code/datums/components/food/germ_sensitive.dm
index 22ba793c1ce3ad..d0acc49714ab59 100644
--- a/code/datums/components/food/germ_sensitive.dm
+++ b/code/datums/components/food/germ_sensitive.dm
@@ -25,7 +25,7 @@ GLOBAL_LIST_INIT(floor_diseases, list(
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(examine))
RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(handle_movement))
- RegisterSignal(parent, COMSIG_ATOM_WASHED, PROC_REF(wash)) //Wash germs off dirty things
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(wash)) //Wash germs off dirty things
RegisterSignals(parent, list(
COMSIG_ITEM_DROPPED, //Dropped into the world
@@ -46,13 +46,13 @@ GLOBAL_LIST_INIT(floor_diseases, list(
/datum/component/germ_sensitive/UnregisterFromParent()
REMOVE_TRAIT(parent, TRAIT_GERM_SENSITIVE, REF(src))
UnregisterSignal(parent, list(
+ COMSIG_ATOM_ENTERED,
COMSIG_ATOM_EXAMINE,
- COMSIG_MOVABLE_MOVED,
- COMSIG_ATOM_WASHED,
- COMSIG_ITEM_DROPPED,
COMSIG_ATOM_EXITED,
+ COMSIG_COMPONENT_CLEAN_ACT,
+ COMSIG_ITEM_DROPPED,
COMSIG_ITEM_PICKUP,
- COMSIG_ATOM_ENTERED,
+ COMSIG_MOVABLE_MOVED,
))
/datum/component/germ_sensitive/Destroy()
@@ -117,8 +117,10 @@ GLOBAL_LIST_INIT(floor_diseases, list(
parent.AddComponent(/datum/component/infective, new random_disease, weak = TRUE)
/datum/component/germ_sensitive/proc/wash()
+ SIGNAL_HANDLER
if(infective)
infective = FALSE
qdel(parent.GetComponent(/datum/component/infective))
+ return COMPONENT_CLEANED
#undef GERM_EXPOSURE_DELAY
diff --git a/code/datums/components/food/ghost_edible.dm b/code/datums/components/food/ghost_edible.dm
index 25207800a7426f..ff524ed7a1c715 100644
--- a/code/datums/components/food/ghost_edible.dm
+++ b/code/datums/components/food/ghost_edible.dm
@@ -23,7 +23,12 @@
src.bite_chance = bite_chance
src.minimum_scale = minimum_scale
initial_reagent_volume = atom_parent.reagents.total_volume
- notify_ghosts("[parent] is edible by ghosts!", source = parent, action = NOTIFY_ORBIT, header="Something Tasty!")
+ notify_ghosts(
+ "[parent] is edible by ghosts!",
+ source = parent,
+ action = NOTIFY_ORBIT,
+ header="Something Tasty!",
+ )
/datum/component/ghost_edible/RegisterWithParent()
START_PROCESSING(SSdcs, src)
diff --git a/code/datums/components/healing_touch.dm b/code/datums/components/healing_touch.dm
index a81de7ab04a787..cf6ef88f24d60f 100644
--- a/code/datums/components/healing_touch.dm
+++ b/code/datums/components/healing_touch.dm
@@ -8,10 +8,15 @@
* This intercepts the attack and starts a do_after if the target is in its allowed type list.
*/
/datum/component/healing_touch
+ dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
/// How much brute damage to heal
var/heal_brute
/// How much burn damage to heal
var/heal_burn
+ /// How much toxin damage to heal
+ var/heal_tox
+ /// How much oxygen damage to heal
+ var/heal_oxy
/// How much stamina damage to heal
var/heal_stamina
/// Interaction will use this key, and be blocked while this key is in use
@@ -26,8 +31,8 @@
var/valid_biotypes
/// Which kinds of carbon limbs can we heal, has no effect on non-carbon mobs. Set to null if you don't care about excluding prosthetics.
var/required_bodytype
- /// How targetting yourself works, expects one of HEALING_TOUCH_ANYONE, HEALING_TOUCH_NOT_SELF, or HEALING_TOUCH_SELF_ONLY
- var/self_targetting
+ /// How targeting yourself works, expects one of HEALING_TOUCH_ANYONE, HEALING_TOUCH_NOT_SELF, or HEALING_TOUCH_SELF_ONLY
+ var/self_targeting
/// Text to print when action starts, replaces %SOURCE% with healer and %TARGET% with healed mob
var/action_text
/// Text to print when action completes, replaces %SOURCE% with healer and %TARGET% with healed mob
@@ -36,10 +41,16 @@
var/show_health
/// Color for the healing effect
var/heal_color
+ /// Optional click modifier required
+ var/required_modifier
+ /// Callback to run after healing a mob
+ var/datum/callback/after_healed
/datum/component/healing_touch/Initialize(
heal_brute = 20,
heal_burn = 20,
+ heal_tox = 0,
+ heal_oxy = 0,
heal_stamina = 0,
heal_time = 2 SECONDS,
interaction_key = DOAFTER_SOURCE_HEAL_TOUCH,
@@ -47,17 +58,21 @@
list/valid_targets_typecache = list(),
valid_biotypes = MOB_ORGANIC | MOB_MINERAL,
required_bodytype = BODYTYPE_ORGANIC,
- self_targetting = HEALING_TOUCH_NOT_SELF,
+ self_targeting = HEALING_TOUCH_NOT_SELF,
action_text = "%SOURCE% begins healing %TARGET%",
complete_text = "%SOURCE% finishes healing %TARGET%",
show_health = FALSE,
heal_color = COLOR_HEALING_CYAN,
+ required_modifier = null,
+ datum/callback/after_healed = null,
)
if (!isliving(parent))
return COMPONENT_INCOMPATIBLE
src.heal_brute = heal_brute
src.heal_burn = heal_burn
+ src.heal_tox = heal_tox
+ src.heal_oxy = heal_oxy
src.heal_stamina = heal_stamina
src.heal_time = heal_time
src.interaction_key = interaction_key
@@ -65,15 +80,25 @@
src.valid_targets_typecache = valid_targets_typecache.Copy()
src.valid_biotypes = valid_biotypes
src.required_bodytype = required_bodytype
- src.self_targetting = self_targetting
+ src.self_targeting = self_targeting
src.action_text = action_text
src.complete_text = complete_text
src.show_health = show_health
src.heal_color = heal_color
+ src.required_modifier = required_modifier
+ src.after_healed = after_healed
RegisterSignal(parent, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(try_healing)) // Players
RegisterSignal(parent, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(try_healing)) // NPCs
+// Let's populate this list as we actually use it, this thing has too many args
+/datum/component/healing_touch/InheritComponent(
+ datum/component/new_component,
+ i_am_original,
+ heal_color,
+)
+ src.heal_color = heal_color
+
/datum/component/healing_touch/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET))
return ..()
@@ -83,12 +108,15 @@
return ..()
/// Validate our target, and interrupt the attack chain to start healing it if it is allowed
-/datum/component/healing_touch/proc/try_healing(mob/living/healer, atom/target)
+/datum/component/healing_touch/proc/try_healing(mob/living/healer, atom/target, proximity, modifiers)
SIGNAL_HANDLER
if (!isliving(target))
return
- if (!is_type_in_typecache(target, valid_targets_typecache))
+ if (!isnull(required_modifier) && !LAZYACCESS(modifiers, required_modifier))
+ return
+
+ if (length(valid_targets_typecache) && !is_type_in_typecache(target, valid_targets_typecache))
return // Fall back to attacking it
if (extra_checks && !extra_checks.Invoke(healer, target))
@@ -98,7 +126,7 @@
healer.balloon_alert(healer, "busy!")
return COMPONENT_CANCEL_ATTACK_CHAIN
- switch (self_targetting)
+ switch (self_targeting)
if (HEALING_TOUCH_NOT_SELF)
if (target == healer)
healer.balloon_alert(healer, "can't heal yourself!")
@@ -131,6 +159,10 @@
return FALSE
if (target.getStaminaLoss() > 0 && heal_stamina)
return TRUE
+ if (target.getOxyLoss() > 0 && heal_oxy)
+ return TRUE
+ if (target.getToxLoss() > 0 && heal_tox)
+ return TRUE
if (!iscarbon(target))
return (target.getBruteLoss() > 0 && heal_brute) || (target.getFireLoss() > 0 && heal_burn)
var/mob/living/carbon/carbon_target = target
@@ -154,12 +186,26 @@
if (complete_text)
healer.visible_message(span_notice("[format_string(complete_text, healer, target)]"))
- target.heal_overall_damage(brute = heal_brute, burn = heal_burn, stamina = heal_stamina, required_bodytype = required_bodytype)
+ var/healed = target.heal_overall_damage(
+ brute = heal_brute,
+ burn = heal_burn,
+ stamina = heal_stamina,
+ required_bodytype = required_bodytype,
+ updating_health = FALSE,
+ )
+ healed += target.adjustOxyLoss(-heal_oxy, updating_health = FALSE, required_biotype = valid_biotypes)
+ healed += target.adjustToxLoss(-heal_tox, updating_health = FALSE, required_biotype = valid_biotypes)
+ if (healed <= 0)
+ return
+
+ target.updatehealth()
new /obj/effect/temp_visual/heal(get_turf(target), heal_color)
+ after_healed?.Invoke(target)
- if(show_health && !iscarbon(target))
- var/formatted_string = format_string("%TARGET% now has [target.health]/[target.maxHealth] health.", healer, target)
- to_chat(healer, span_danger(formatted_string))
+ if(!show_health)
+ return
+ var/formatted_string = format_string("%TARGET% now has [health_percentage(target)] health.", healer, target)
+ to_chat(healer, span_danger(formatted_string))
/// Reformats the passed string with the replacetext keys
/datum/component/healing_touch/proc/format_string(string, atom/source, atom/target)
diff --git a/code/datums/components/life_link.dm b/code/datums/components/life_link.dm
new file mode 100644
index 00000000000000..34cdd0504c6bc7
--- /dev/null
+++ b/code/datums/components/life_link.dm
@@ -0,0 +1,169 @@
+/**
+ * A mob with this component passes all damage (and healing) it takes to another mob, passed as a parameter
+ * Essentially we use another mob's health bar as our health bar
+ */
+/datum/component/life_link
+ dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
+ /// Mob we pass all of our damage to
+ var/mob/living/host
+ /// Optional callback invoked when damage gets transferred
+ var/datum/callback/on_passed_damage
+ /// Optional callback invoked when the linked mob dies
+ var/datum/callback/on_linked_death
+
+/datum/component/life_link/Initialize(mob/living/host, datum/callback/on_passed_damage, datum/callback/on_linked_death)
+ . = ..()
+ if (!isliving(parent))
+ return COMPONENT_INCOMPATIBLE
+ if (!istype(host))
+ CRASH("Life link created on [parent.type] and attempted to link to invalid type [host?.type].")
+ register_host(host)
+ src.on_passed_damage = on_passed_damage
+ src.on_linked_death = on_linked_death
+
+/datum/component/life_link/RegisterWithParent()
+ RegisterSignal(parent, COMSIG_CARBON_LIMB_DAMAGED, PROC_REF(on_limb_damage))
+ RegisterSignals(parent, COMSIG_LIVING_ADJUST_STANDARD_DAMAGE_TYPES, PROC_REF(on_damage_adjusted))
+ RegisterSignal(parent, COMSIG_LIVING_HEALTH_UPDATE, PROC_REF(on_health_updated))
+ RegisterSignal(parent, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(on_status_tab_updated))
+ if (!isnull(host))
+ var/mob/living/living_parent = parent
+ living_parent.updatehealth()
+
+/datum/component/life_link/UnregisterFromParent()
+ unregister_host()
+ UnregisterSignal(parent, list(COMSIG_CARBON_LIMB_DAMAGED, COMSIG_LIVING_HEALTH_UPDATE, COMSIG_MOB_GET_STATUS_TAB_ITEMS) + COMSIG_LIVING_ADJUST_STANDARD_DAMAGE_TYPES)
+
+/datum/component/life_link/InheritComponent(datum/component/new_comp, i_am_original, mob/living/host, datum/callback/on_passed_damage, datum/callback/on_linked_death)
+ register_host(host)
+
+/// Set someone up as our new host
+/datum/component/life_link/proc/register_host(mob/living/new_host)
+ unregister_host()
+ if (isnull(new_host))
+ return
+ host = new_host
+ RegisterSignal(host, COMSIG_LIVING_DEATH, PROC_REF(on_host_died))
+ RegisterSignal(host, COMSIG_LIVING_HEALTH_UPDATE, PROC_REF(on_health_updated))
+ RegisterSignal(host, COMSIG_LIVING_REVIVE, PROC_REF(on_host_revived))
+ RegisterSignal(host, COMSIG_QDELETING, PROC_REF(on_host_deleted))
+ var/mob/living/living_parent = parent
+ living_parent.updatehealth()
+
+/// Drop someone from being our host
+/datum/component/life_link/proc/unregister_host()
+ if (isnull(host))
+ return
+ UnregisterSignal(host, list(COMSIG_LIVING_DEATH, COMSIG_LIVING_HEALTH_UPDATE, COMSIG_LIVING_REVIVE, COMSIG_QDELETING))
+ host = null
+
+/// Called when your damage goes up or down
+/datum/component/life_link/proc/on_damage_adjusted(mob/living/our_mob, type, amount, forced)
+ SIGNAL_HANDLER
+ if (forced)
+ return
+ amount *= our_mob.get_damage_mod(type)
+ switch (type)
+ if(BRUTE)
+ host.adjustBruteLoss(amount, forced = TRUE)
+ if(BURN)
+ host.adjustFireLoss(amount, forced = TRUE)
+ if(TOX)
+ host.adjustToxLoss(amount, forced = TRUE)
+ if(OXY)
+ host.adjustOxyLoss(amount, forced = TRUE)
+ if(CLONE)
+ host.adjustCloneLoss(amount, forced = TRUE)
+
+ on_passed_damage?.Invoke(our_mob, host, amount)
+ return COMPONENT_IGNORE_CHANGE
+
+/// Called when someone hurts one of our limbs, bypassing normal damage adjustment
+/datum/component/life_link/proc/on_limb_damage(mob/living/our_mob, limb, brute, burn)
+ SIGNAL_HANDLER
+ if (brute != 0)
+ host.adjustBruteLoss(brute, updating_health = FALSE)
+ if (burn != 0)
+ host.adjustFireLoss(burn, updating_health = FALSE)
+ if (brute != 0 || burn != 0)
+ host.updatehealth()
+ on_passed_damage?.Invoke(our_mob, host, brute + burn)
+ return COMPONENT_PREVENT_LIMB_DAMAGE
+
+/// Called when either the host or parent's health tries to update, update our displayed health
+/datum/component/life_link/proc/on_health_updated()
+ SIGNAL_HANDLER
+ update_health_hud(parent)
+ update_med_hud_health(parent)
+ update_med_hud_status(parent)
+
+/// Update our parent's health display based on how harmed our host is
+/datum/component/life_link/proc/update_health_hud(mob/living/mob_parent)
+ var/severity = 0
+ var/healthpercent = health_percentage(host)
+ switch(healthpercent)
+ if(100 to INFINITY)
+ severity = 0
+ if(85 to 100)
+ severity = 1
+ if(70 to 85)
+ severity = 2
+ if(55 to 70)
+ severity = 3
+ if(40 to 55)
+ severity = 4
+ if(25 to 40)
+ severity = 5
+ else
+ severity = 6
+ if(severity > 0)
+ mob_parent.overlay_fullscreen("brute", /atom/movable/screen/fullscreen/brute, severity)
+ else
+ mob_parent.clear_fullscreen("brute")
+ if(mob_parent.hud_used?.healths)
+ mob_parent.hud_used.healths.maptext = MAPTEXT("