diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm
index 90ca0b04880..e64a954d5ab 100644
--- a/_maps/map_files/Birdshot/birdshot.dmm
+++ b/_maps/map_files/Birdshot/birdshot.dmm
@@ -317,6 +317,12 @@
/obj/machinery/light/cold/directional/south,
/turf/open/floor/plating,
/area/station/science/ordnance/storage)
+"agB" = (
+/obj/machinery/netpod,
+/obj/machinery/light_switch/directional/north,
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"agC" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/obj/effect/turf_decal/tile/neutral/opposingcorners,
@@ -1337,6 +1343,27 @@
},
/turf/open/floor/iron/small,
/area/station/security/prison/shower)
+"aBO" = (
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/machinery/holopad,
+/turf/open/floor/iron/dark/smooth_half{
+ dir = 1
+ },
+/area/station/bitrunning/den)
"aBV" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/tile/neutral{
@@ -13895,6 +13922,30 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
/turf/closed/wall/r_wall,
/area/station/science/ordnance/testlab)
+"fnh" = (
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/machinery/door/airlock/mining{
+ name = "Bitrunning Den"
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
+/turf/open/floor/iron/dark/smooth_half{
+ dir = 1
+ },
+/area/station/bitrunning/den)
"fni" = (
/obj/structure/cable,
/obj/effect/turf_decal/tile/red/opposingcorners{
@@ -20235,12 +20286,8 @@
/turf/open/floor/plating,
/area/station/hallway/secondary/command)
"hsX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sink/directional/south,
-/obj/item/reagent_containers/cup/bucket,
-/obj/item/mop,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/turf/closed/wall,
+/area/station/bitrunning/den)
"hsZ" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -20252,10 +20299,17 @@
/turf/open/floor/plating,
/area/station/security/tram)
"htt" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/computer/order_console/bitrunning{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/end{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/station/cargo/storage)
"htI" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -20305,9 +20359,7 @@
/turf/open/floor/plating,
/area/station/maintenance/department/science/xenobiology)
"huc" = (
-/obj/effect/turf_decal/bot_white,
-/obj/structure/rack,
-/obj/item/electronics/apc,
+/obj/structure/cable,
/turf/open/floor/iron/smooth_large,
/area/station/cargo/warehouse)
"huh" = (
@@ -23423,6 +23475,20 @@
},
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/ai)
+"iyy" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/stripes,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 4
+ },
+/obj/machinery/airalarm/directional/west,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/dark/smooth_half,
+/area/station/bitrunning/den)
"iyC" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/effect/turf_decal/siding/purple{
@@ -24175,6 +24241,16 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
+"iNB" = (
+/obj/effect/turf_decal/box/corners{
+ dir = 8
+ },
+/obj/effect/turf_decal/box/corners,
+/obj/machinery/camera/autoname/directional/east,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"iNE" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/random/vending/snackvend,
@@ -24539,12 +24615,9 @@
/turf/open/floor/plating,
/area/station/service/abandoned_gambling_den)
"iUG" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/access/all/supply/general,
+/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/area/station/bitrunning/den)
"iUH" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/table/reinforced/titaniumglass,
@@ -27922,10 +27995,18 @@
},
/area/station/hallway/secondary/dock)
"kfA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 8
+ },
+/obj/machinery/light/small/directional/east,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/dark/smooth_half,
+/area/station/bitrunning/den)
"kfC" = (
/obj/effect/spawner/random/engineering/atmospherics_portable,
/turf/open/floor/plating,
@@ -29051,8 +29132,9 @@
dir = 4
},
/obj/structure/cable,
-/obj/machinery/light/cold/directional/north,
-/obj/structure/sign/poster/official/random/directional/north,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/landmark/start/bitrunner,
/turf/open/floor/iron,
/area/station/cargo/storage)
"kzI" = (
@@ -29830,9 +29912,21 @@
/turf/open/floor/iron/textured_half,
/area/station/cargo/miningoffice)
"kOA" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/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
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"kOG" = (
/obj/structure/cable,
/obj/machinery/door/airlock/external{
@@ -31922,7 +32016,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
-/obj/item/radio/intercom/directional/north,
/turf/open/floor/iron,
/area/station/cargo/storage)
"lzp" = (
@@ -32954,9 +33047,17 @@
/turf/open/floor/plating,
/area/station/maintenance/starboard/central)
"lQq" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/box/corners{
+ dir = 1
+ },
+/obj/effect/turf_decal/box/corners{
+ dir = 4
+ },
+/obj/machinery/firealarm/directional/east,
+/obj/effect/decal/cleanable/oil,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"lQu" = (
/obj/machinery/light/broken/directional/south,
/obj/effect/spawner/random/trash/bin,
@@ -39113,10 +39214,6 @@
/obj/structure/steam_vent,
/turf/open/floor/plating/rust,
/area/station/maintenance/fore/greater)
-"odN" = (
-/obj/machinery/rnd/bepis,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
"odP" = (
/obj/machinery/firealarm/directional/west,
/obj/effect/landmark/generic_maintenance_landmark,
@@ -40681,6 +40778,12 @@
dir = 1
},
/area/station/security/execution/transfer)
+"oHX" = (
+/obj/machinery/netpod,
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"oIk" = (
/obj/structure/table,
/turf/open/floor/iron,
@@ -43526,6 +43629,9 @@
/obj/machinery/door/window/brigdoor/right/directional/west,
/turf/open/floor/iron/smooth,
/area/station/security/checkpoint/customs/auxiliary)
+"pGc" = (
+/turf/closed/wall/rust,
+/area/station/bitrunning/den)
"pGp" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -48255,6 +48361,26 @@
/obj/structure/broken_flooring/pile/directional/east,
/turf/open/floor/plating,
/area/station/maintenance/department/medical/central)
+"rdB" = (
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes{
+ 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/smooth_half{
+ dir = 1
+ },
+/area/station/bitrunning/den)
"rdK" = (
/obj/structure/chair/office,
/obj/effect/landmark/start/botanist,
@@ -49871,6 +49997,26 @@
},
/turf/open/floor/iron/white,
/area/station/medical/treatment_center)
+"rFB" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/corner,
+/obj/effect/turf_decal/trimline/brown/corner,
+/obj/effect/turf_decal/trimline/brown/corner{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/dark/smooth_edge{
+ dir = 1
+ },
+/area/station/bitrunning/den)
"rFF" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -55253,6 +55399,12 @@
/mob/living/simple_animal/slime,
/turf/open/floor/engine,
/area/station/science/xenobiology)
+"ttf" = (
+/obj/machinery/quantum_server,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light/cold/directional/west,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"tts" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -57988,6 +58140,7 @@
},
/obj/structure/cable,
/obj/structure/extinguisher_cabinet/directional/north,
+/obj/machinery/light/cold/directional/north,
/turf/open/floor/iron,
/area/station/cargo/storage)
"unK" = (
@@ -60377,6 +60530,10 @@
},
/turf/open/floor/iron,
/area/station/medical/chemistry)
+"vea" = (
+/obj/machinery/netpod,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"veg" = (
/obj/effect/turf_decal/siding{
dir = 6
@@ -83001,7 +83158,7 @@ uzJ
mQh
nJU
ppk
-odN
+uzJ
ovQ
oRr
poM
@@ -83246,12 +83403,12 @@ slY
ueX
slY
ueX
-slY
-ueX
-slY
-slY
-slY
-slY
+hsX
+pGc
+hsX
+hsX
+hsX
+hsX
lxy
hzm
jTA
@@ -83501,14 +83658,14 @@ slY
gOK
slY
hfc
-slY
-hsX
jBb
-kPW
-kwY
-lQq
+iNE
+hsX
+vea
+iyy
+ttf
kOA
-slY
+iUG
lzn
lRc
moz
@@ -83758,14 +83915,14 @@ slY
gPN
gZk
iNE
-ueX
-htt
kwY
-slY
-slY
-kwY
-slY
-slY
+kPW
+hsX
+oHX
+rFB
+aBO
+rdB
+fnh
kzF
lTv
oem
@@ -84015,13 +84172,13 @@ slY
gPN
slY
hff
-jCo
-hff
-jCo
-slY
+kPW
+hfc
+hsX
+agB
kfA
lQq
-kPW
+iNB
iUG
jkS
lTN
@@ -84274,12 +84431,12 @@ slY
jCo
slY
slY
-jCi
-slY
-slY
-slY
-slY
-slY
+hsX
+hsX
+hsX
+hsX
+hsX
+hsX
unz
lUz
ohj
@@ -84529,7 +84686,7 @@ sjq
sNz
hyO
roi
-slY
+jCi
huc
hAN
jMb
@@ -84540,7 +84697,7 @@ iUN
jlv
sRR
odX
-odX
+htt
nyE
uzJ
axj
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 15c9aae2b71..b193cc30a27 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -3415,15 +3415,11 @@
/area/station/science/robotics/lab)
"aPD" = (
/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/mining{
- name = "Mining Dock"
- },
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"aPO" = (
@@ -4984,14 +4980,10 @@
/turf/open/floor/iron/grimy,
/area/station/command/heads_quarters/hos)
"bkr" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
/obj/machinery/conveyor{
id = "cargodisposals"
},
-/obj/effect/mapping_helpers/burnt_floor,
/turf/open/floor/plating,
/area/station/cargo/sorting)
"bkD" = (
@@ -7298,13 +7290,25 @@
/turf/open/floor/plating,
/area/station/maintenance/department/science)
"bLN" = (
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/machinery/disposal/bin,
+/obj/structure/rack,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/poster/official/random/directional/south,
+/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" = (
@@ -10141,21 +10145,14 @@
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/hop)
"cwd" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/toolbox/emergency{
- pixel_x = -3;
- pixel_y = 3
+/obj/effect/turf_decal/box/corners,
+/obj/effect/turf_decal/box/corners{
+ dir = 4
},
-/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,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/obj/machinery/light/directional/south,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"cwe" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -10208,10 +10205,20 @@
/turf/open/floor/iron,
/area/station/engineering/supermatter/room)
"cwK" = (
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/plating,
+/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,
@@ -10323,13 +10330,10 @@
/turf/open/floor/iron,
/area/station/medical/treatment_center)
"cyc" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/half/contrasted,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/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,
@@ -11086,7 +11090,7 @@
/area/station/tcommsat/computer)
"cGV" = (
/turf/closed/wall,
-/area/station/cargo/miningoffice)
+/area/station/bitrunning/den)
"cHb" = (
/obj/machinery/door/firedoor/heavy,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -14006,11 +14010,16 @@
/turf/open/floor/iron/dark,
/area/station/science/xenobiology)
"dux" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/start/shaft_miner,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron,
+/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,
@@ -15668,14 +15677,9 @@
/turf/open/floor/plating,
/area/station/engineering/supermatter/room)
"dPC" = (
-/obj/structure/table,
-/obj/machinery/microwave{
- desc = "Cooks and boils stuff, somehow.";
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/bot,
+/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" = (
@@ -16223,13 +16227,11 @@
/turf/open/floor/iron,
/area/station/maintenance/port)
"dXs" = (
-/obj/structure/table/reinforced,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/flashlight/lamp,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/purple/half/contrasted{
+/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" = (
@@ -17230,12 +17232,11 @@
/turf/open/floor/iron/dark,
/area/station/command/gateway)
"elO" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 1
- },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
+/obj/structure/cable,
/turf/open/floor/iron,
-/area/station/maintenance/starboard/fore)
+/area/station/cargo/miningoffice)
"elP" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/tile/yellow/fourcorners,
@@ -18719,8 +18720,15 @@
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
"eFU" = (
-/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/station/maintenance/starboard/fore)
"eGb" = (
@@ -20290,7 +20298,12 @@
/turf/open/floor/iron/dark,
/area/station/security/range)
"eYt" = (
-/obj/effect/decal/cleanable/dirt,
+/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" = (
@@ -20483,12 +20496,9 @@
/turf/open/floor/iron/smooth,
/area/station/maintenance/department/science/xenobiology)
"fbu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/station/bitrunning/den)
"fbA" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -21963,12 +21973,11 @@
/turf/open/floor/iron/grimy,
/area/station/service/library)
"ftS" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/brown/half/contrasted{
+/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/iron,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron/herringbone,
/area/station/cargo/miningoffice)
"ftU" = (
/obj/structure/cable,
@@ -22407,12 +22416,14 @@
/turf/open/floor/iron,
/area/station/engineering/storage)
"fAj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/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,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron,
+/turf/open/floor/iron/herringbone,
/area/station/cargo/miningoffice)
"fAn" = (
/obj/machinery/holopad,
@@ -24579,8 +24590,13 @@
/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,
-/obj/effect/turf_decal/tile/brown/half/contrasted,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"gcr" = (
@@ -26124,8 +26140,11 @@
/turf/open/floor/iron,
/area/station/commons/storage/primary)
"guj" = (
-/obj/effect/landmark/start/shaft_miner,
/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" = (
@@ -29336,9 +29355,10 @@
/turf/open/floor/iron/white/smooth_large,
/area/station/medical/medbay)
"hkn" = (
-/obj/structure/filingcabinet/chestdrawer,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/airalarm/directional/south,
+/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" = (
@@ -30358,10 +30378,7 @@
/turf/open/floor/glass/reinforced,
/area/station/maintenance/department/science/xenobiology)
"hzs" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"hzx" = (
@@ -32986,10 +33003,13 @@
/turf/open/floor/plating,
/area/station/medical/virology)
"iio" = (
-/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 1
+ 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" = (
@@ -34243,14 +34263,12 @@
/turf/open/floor/iron/dark,
/area/station/hallway/secondary/entry)
"izj" = (
-/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/turf_decal/tile/purple{
- dir = 4
- },
-/turf/open/floor/iron,
+/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,
@@ -35979,11 +35997,12 @@
/turf/open/floor/iron,
/area/station/engineering/lobby)
"iXd" = (
-/obj/effect/landmark/start/shaft_miner,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 1
},
-/obj/effect/turf_decal/tile/neutral/fourcorners,
+/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" = (
@@ -36809,7 +36828,9 @@
/turf/open/floor/plating,
/area/station/engineering/atmos/mix)
"jfO" = (
-/obj/structure/table,
+/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)
@@ -38519,10 +38540,8 @@
/turf/open/floor/iron,
/area/station/science/lobby)
"jBM" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
- dir = 4
- },
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"jCb" = (
@@ -38609,10 +38628,10 @@
/turf/open/floor/wood,
/area/station/service/library/abandoned)
"jCu" = (
-/obj/machinery/computer/order_console/mining,
+/obj/structure/closet/secure_closet/miner,
/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/delivery,
/obj/machinery/light/directional/north,
-/obj/effect/turf_decal/bot,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"jCv" = (
@@ -39263,13 +39282,17 @@
/turf/open/floor/iron/white,
/area/station/command/heads_quarters/cmo)
"jKY" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/bot,
-/obj/structure/table,
-/obj/item/storage/medkit/regular,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/obj/effect/turf_decal/box/corners{
+ dir = 8
+ },
+/obj/effect/turf_decal/box/corners{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/oil/streak,
+/obj/machinery/camera/directional/south,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"jLa" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/railing{
@@ -39853,8 +39876,16 @@
/turf/open/floor/iron/white,
/area/station/medical/medbay)
"jRc" = (
-/obj/machinery/power/apc/auto_name/directional/north,
/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" = (
@@ -43153,10 +43184,13 @@
/turf/closed/wall,
/area/station/hallway/secondary/entry)
"kKx" = (
-/obj/effect/turf_decal/loading_area{
+/obj/effect/turf_decal/tile/brown/half{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/iron/half{
dir = 1
},
-/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"kKy" = (
/obj/machinery/airalarm/directional/east,
@@ -43785,8 +43819,15 @@
/turf/open/floor/iron/dark,
/area/station/engineering/main)
"kTs" = (
-/obj/structure/closet/secure_closet/miner,
-/obj/effect/turf_decal/delivery,
+/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" = (
@@ -45089,10 +45130,12 @@
/turf/open/floor/iron,
/area/station/maintenance/solars/starboard/fore)
"ljQ" = (
-/obj/effect/decal/cleanable/dirt,
+/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" = (
@@ -45238,8 +45281,11 @@
/obj/structure/disposalpipe/segment{
dir = 9
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
+/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{
@@ -49105,13 +49151,10 @@
/turf/closed/wall/r_wall,
/area/station/ai_monitored/command/storage/eva)
"mlF" = (
-/obj/item/kirbyplants/random,
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/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,
@@ -49659,11 +49702,9 @@
/turf/open/floor/iron,
/area/station/engineering/storage)
"mtL" = (
-/obj/structure/closet/secure_closet/miner,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/delivery,
+/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/status_display/evac/directional/north,
-/turf/open/floor/iron,
+/turf/open/floor/plating,
/area/station/cargo/miningoffice)
"mtO" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -50419,9 +50460,12 @@
/turf/open/floor/engine,
/area/station/maintenance/disposal/incinerator)
"mDm" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/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,
@@ -52655,8 +52699,14 @@
/turf/open/floor/plating,
/area/station/maintenance/department/chapel)
"nhj" = (
-/obj/effect/decal/cleanable/dirt,
/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" = (
@@ -54380,11 +54430,11 @@
/turf/open/floor/iron,
/area/station/maintenance/port)
"nEE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/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,
@@ -56752,12 +56802,23 @@
/turf/open/floor/iron,
/area/station/security/prison/garden)
"okN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/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/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/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{
@@ -57618,11 +57679,10 @@
/turf/open/floor/iron,
/area/station/maintenance/port)
"owZ" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/effect/turf_decal/tile/purple/half/contrasted,
+/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" = (
@@ -57869,15 +57929,27 @@
/turf/open/floor/iron/grimy,
/area/station/command/heads_quarters/captain/private)
"oAV" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 4
},
-/obj/effect/turf_decal/tile/brown/half/contrasted,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/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,
@@ -61442,7 +61514,19 @@
/turf/open/floor/iron/dark,
/area/station/hallway/secondary/exit/departure_lounge)
"pxS" = (
-/turf/open/floor/iron,
+/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,
@@ -63511,15 +63595,16 @@
/turf/open/floor/iron/dark/corner,
/area/station/engineering/atmos/pumproom)
"pUs" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
+/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"
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"pUw" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
@@ -64740,20 +64825,16 @@
/turf/open/floor/iron/dark,
/area/station/command/bridge)
"qko" = (
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/clipboard,
-/obj/item/toy/figure/miner,
-/obj/machinery/light/directional/north,
-/obj/machinery/light_switch/directional/west{
- pixel_x = -42
+/obj/item/kirbyplants/random,
+/obj/effect/turf_decal/tile/brown/half{
+ dir = 8
},
-/obj/effect/turf_decal/bot,
-/obj/machinery/firealarm/directional/west,
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
+/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
},
-/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"qkv" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -64918,9 +64999,11 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/brown/half/contrasted{
- dir = 8
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/turf/open/floor/iron,
/area/station/maintenance/starboard/fore)
@@ -65352,13 +65435,21 @@
/turf/open/floor/iron,
/area/station/science/xenobiology)
"qsF" = (
-/obj/structure/cable,
-/obj/structure/extinguisher_cabinet/directional/west,
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
- dir = 8
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
},
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/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
@@ -68278,9 +68369,7 @@
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
"rgC" = (
-/obj/structure/cable,
/obj/structure/table/reinforced,
-/obj/effect/decal/cleanable/dirt,
/obj/item/folder/yellow,
/obj/item/gps/mining,
/obj/effect/turf_decal/tile/brown/anticorner/contrasted,
@@ -68924,15 +69013,11 @@
/obj/structure/cable,
/obj/structure/disposalpipe/segment,
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/mining{
- name = "Mining Dock"
- },
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"rmI" = (
@@ -69915,6 +70000,9 @@
/area/station/cargo/storage)
"rAl" = (
/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
/obj/machinery/conveyor{
id = "cargodisposals"
},
@@ -71219,13 +71307,10 @@
/turf/open/floor/wood,
/area/station/maintenance/port/aft)
"rQF" = (
-/obj/structure/closet/wardrobe/miner,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/backpack/satchel/explorer,
-/obj/effect/turf_decal/bot,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/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
@@ -71527,6 +71612,14 @@
/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{
@@ -72525,8 +72618,12 @@
/turf/open/space/basic,
/area/space)
"sgK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/event_spawn,
+/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" = (
@@ -73408,11 +73505,7 @@
/area/station/medical/pharmacy)
"stf" = (
/obj/structure/disposalpipe/segment,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron,
+/turf/open/floor/iron/herringbone,
/area/station/cargo/miningoffice)
"stp" = (
/obj/machinery/airalarm/directional/west,
@@ -74236,6 +74329,7 @@
},
/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" = (
@@ -74922,8 +75016,6 @@
/turf/open/floor/iron,
/area/station/science/robotics/mechbay)
"sLg" = (
-/obj/machinery/rnd/bepis,
-/obj/effect/turf_decal/box/white,
/turf/open/floor/iron,
/area/station/cargo/storage)
"sLx" = (
@@ -76191,7 +76283,11 @@
/turf/open/floor/iron,
/area/station/engineering/supermatter/room)
"tcB" = (
-/obj/effect/decal/cleanable/oil,
+/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" = (
@@ -76895,14 +76991,11 @@
/turf/open/floor/iron,
/area/station/hallway/primary/central/aft)
"toy" = (
-/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/turf_decal/tile/brown/anticorner/contrasted{
- dir = 4
- },
-/turf/open/floor/iron,
+/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,
@@ -78959,23 +79052,13 @@
/turf/open/floor/iron/dark,
/area/station/science/server)
"tNn" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
+/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
dir = 4
},
-/obj/machinery/requests_console/directional/south{
- department = "Mining";
- name = "Mining Requests Console"
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 8
},
-/obj/machinery/requests_console/directional/south{
- department = "Mining";
- name = "Mining Requests Console"
- },
-/obj/machinery/camera/directional/south{
- c_tag = "Cargo - Mining Dock";
- name = "cargo camera"
- },
-/obj/effect/turf_decal/tile/brown/half/contrasted,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"tNq" = (
@@ -81480,7 +81563,8 @@
/turf/open/floor/wood,
/area/station/command/heads_quarters/hop)
"usJ" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/loading_area{
dir = 1
},
/turf/open/floor/iron,
@@ -82164,15 +82248,15 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
/obj/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" = (
@@ -83165,17 +83249,18 @@
/turf/open/floor/iron,
/area/station/commons/storage/primary)
"uND" = (
-/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 = 9
+/obj/effect/turf_decal/tile/brown/half{
+ dir = 4
},
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron,
-/area/station/maintenance/starboard/fore)
+/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
@@ -83223,12 +83308,12 @@
/turf/open/floor/iron/white,
/area/station/science/ordnance/office)
"uOk" = (
-/obj/structure/cable,
/obj/structure/chair/office{
dir = 4
},
+/obj/effect/turf_decal/tile/brown/half/contrasted,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/purple/half/contrasted,
+/obj/effect/landmark/start/shaft_miner,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"uOn" = (
@@ -86451,11 +86536,24 @@
/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/item/storage/toolbox/mechanical{
+ pixel_x = -8;
+ pixel_y = 17
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/purple/half/contrasted,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/obj/machinery/holopad,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"vDm" = (
/obj/effect/turf_decal/siding/wood{
dir = 1
@@ -86841,15 +86939,22 @@
/turf/open/floor/plating,
/area/station/maintenance/department/security)
"vId" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/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{
@@ -87188,13 +87293,20 @@
/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/turf_decal/tile/purple{
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/half{
dir = 1
},
-/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"vOh" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -88551,6 +88663,7 @@
},
/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" = (
@@ -89749,14 +89862,14 @@
"wuU" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
/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" = (
@@ -95074,14 +95187,12 @@
/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
},
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningoffice)
+/turf/open/floor/plating,
+/area/station/cargo/sorting)
"xNe" = (
/obj/structure/lattice,
/obj/structure/grille/broken,
@@ -95641,6 +95752,7 @@
/obj/effect/turf_decal/tile/purple/half/contrasted{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"xVI" = (
@@ -140585,12 +140697,12 @@ ohH
xhW
xhW
nPo
-kGo
-nPo
-xhW
-xhW
-xhW
-xhW
+xMZ
+cGV
+cGV
+cGV
+cGV
+cGV
uBd
wuU
vPp
@@ -140843,11 +140955,11 @@ rWo
qko
vNV
pxS
-xMZ
+fbu
mlF
qsF
jKY
-tpZ
+cGV
lDY
tpZ
kOj
@@ -141099,12 +141211,12 @@ uzM
aPD
stf
llj
-mDm
+ftS
fbu
mDm
vDj
cwd
-tpZ
+cGV
qmT
tpZ
aaa
@@ -141361,8 +141473,8 @@ pUs
okN
oAV
vId
-qyX
-uND
+cGV
+eFU
tpZ
aaa
lhY
@@ -141611,14 +141723,14 @@ fya
cSK
pok
rWo
-llJ
+uND
kKx
dux
-tcB
+cGV
nEE
cyc
rQF
-tpZ
+cGV
eFU
tpZ
aad
@@ -141869,13 +141981,13 @@ krp
krp
aJE
mtL
-kKx
-iXd
-eYt
-hzs
-tNn
+tcB
+rWo
+cGV
+cGV
+cGV
+cGV
cGV
-tpZ
jRc
tpZ
aaa
@@ -142125,7 +142237,7 @@ jmp
iWR
gkP
krp
-kTs
+llJ
ljQ
guj
eYt
@@ -142133,7 +142245,7 @@ nhj
owZ
bLN
tpZ
-elO
+eFU
tpZ
aaa
lhY
@@ -142383,13 +142495,13 @@ xZC
aiF
aJE
jCu
-iio
-mDm
+rUi
+kTs
sgK
-mDm
+iio
gco
hkn
-tpZ
+qyX
cwK
tpZ
aaa
@@ -142641,9 +142753,9 @@ qrG
aJE
dPC
usJ
-nhj
-mDm
-mDm
+iXd
+elO
+hzs
uOk
bhJ
tpZ
@@ -142898,8 +143010,8 @@ vMd
tgX
jfO
jBM
+tNn
xVv
-ftS
dXs
rgC
tDD
diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index f3ff89fcc80..a80ee449a71 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -2964,6 +2964,7 @@
/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
dir = 4
},
+/obj/item/radio/intercom/directional/east,
/turf/open/floor/iron/dark,
/area/station/cargo/miningdock)
"aVF" = (
@@ -4457,11 +4458,8 @@
/turf/open/floor/iron/dark,
/area/mine/storage)
"bsx" = (
-/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/cargo/miningdock)
+/turf/closed/wall,
+/area/station/bitrunning/den)
"bsG" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/research/glass{
@@ -10026,6 +10024,19 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/mine/laborcamp)
+"cWa" = (
+/obj/machinery/light_switch/directional/west,
+/obj/effect/turf_decal/box/corners{
+ dir = 1
+ },
+/obj/effect/turf_decal/box/corners{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/cobweb,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"cWq" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/obj/effect/turf_decal/tile/green/half/contrasted{
@@ -10699,6 +10710,8 @@
/area/icemoon/underground/explored)
"dgf" = (
/obj/machinery/firealarm/directional/north,
+/obj/structure/chair,
+/obj/effect/landmark/start/bitrunner,
/turf/open/floor/iron,
/area/station/cargo/storage)
"dgl" = (
@@ -12001,6 +12014,13 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/iron,
/area/station/engineering/lobby)
+"dAt" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/light_switch/directional/west,
+/turf/open/floor/iron,
+/area/station/cargo/miningdock)
"dAx" = (
/obj/machinery/hydroponics/soil{
pixel_y = 8
@@ -12895,6 +12915,9 @@
/obj/item/pickaxe{
pixel_x = 5
},
+/obj/item/shovel{
+ pixel_x = -5
+ },
/turf/open/floor/iron,
/area/station/cargo/miningdock)
"dPy" = (
@@ -12919,6 +12942,20 @@
/obj/effect/mapping_helpers/airlock/access/any/service/maintenance,
/turf/open/floor/plating,
/area/station/maintenance/port/aft)
+"dPW" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 8
+ },
+/obj/effect/landmark/start/bitrunner,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 1
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"dPX" = (
/obj/structure/sign/warning/docking/directional/east,
/obj/effect/turf_decal/weather/snow/corner{
@@ -13175,12 +13212,10 @@
/turf/open/floor/iron/freezer,
/area/mine/laborcamp)
"dUK" = (
-/obj/machinery/camera/directional/west{
- c_tag = "Mining Dock"
- },
-/obj/machinery/computer/security/mining,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/obj/machinery/netpod,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"dUL" = (
/obj/machinery/door/poddoor/preopen{
id = "maint1"
@@ -13210,14 +13245,14 @@
/turf/open/floor/plating,
/area/station/maintenance/starboard/aft)
"dVs" = (
-/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = 1;
- pixel_y = 9
+/obj/structure/cable,
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/machinery/quantum_server,
+/obj/effect/decal/cleanable/oil/streak,
+/turf/open/floor/iron/dark/smooth_corner{
+ dir = 4
},
-/obj/machinery/mining_weather_monitor/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/area/station/bitrunning/den)
"dVt" = (
/obj/structure/chair/stool/directional/west,
/turf/open/floor/iron/checker,
@@ -14879,10 +14914,11 @@
/turf/open/floor/iron,
/area/station/maintenance/department/medical/central)
"ewq" = (
-/obj/machinery/light_switch/directional/north,
-/obj/machinery/light/directional/north,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/area/station/cargo/storage)
"ewz" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/structure/window/reinforced/spawner/directional/north,
@@ -15082,6 +15118,10 @@
/obj/item/toy/sword,
/turf/open/floor/iron/checker,
/area/station/maintenance/port/fore)
+"eAe" = (
+/obj/structure/chair,
+/turf/open/floor/iron,
+/area/station/cargo/storage)
"eAg" = (
/obj/effect/spawner/structure/window/reinforced/tinted,
/turf/closed/wall,
@@ -16863,6 +16903,7 @@
/area/mine/laborcamp)
"feB" = (
/obj/machinery/airalarm/directional/east,
+/obj/effect/landmark/event_spawn,
/turf/open/floor/iron,
/area/station/cargo/miningdock)
"feJ" = (
@@ -17577,6 +17618,10 @@
dir = 8
},
/area/station/medical/chem_storage)
+"fqY" = (
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/iron,
+/area/station/cargo/miningdock)
"frd" = (
/obj/structure/railing/corner{
dir = 1
@@ -17663,6 +17708,19 @@
},
/turf/open/floor/iron/dark/textured,
/area/station/security/range)
+"fss" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 4
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"fsv" = (
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
@@ -18954,11 +19012,10 @@
/turf/open/floor/engine,
/area/station/engineering/supermatter/room)
"fNx" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/obj/structure/cable,
+/obj/machinery/computer/quantum_console,
+/turf/open/floor/iron/dark/smooth_corner,
+/area/station/bitrunning/den)
"fNy" = (
/obj/structure/rack,
/obj/item/clothing/suit/hooded/wintercoat{
@@ -19971,6 +20028,13 @@
/obj/effect/turf_decal/siding/yellow,
/turf/open/floor/iron,
/area/station/engineering/storage)
+"gfu" = (
+/obj/machinery/light/small/directional/east,
+/obj/machinery/computer/order_console/bitrunning{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/station/cargo/storage)
"gfw" = (
/obj/machinery/light/small/directional/west,
/obj/structure/table,
@@ -21146,12 +21210,6 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/aisat_interior)
-"gzN" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
"gzV" = (
/obj/structure/mineral_door/paperframe{
name = "Meditation Room"
@@ -21984,6 +22042,10 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/station/maintenance/aft/greater)
+"gMV" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/station/bitrunning/den)
"gMZ" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -35229,10 +35291,11 @@
/turf/open/floor/iron/white,
/area/station/medical/surgery/aft)
"kQL" = (
-/obj/machinery/power/apc/auto_name/directional/north,
/obj/structure/cable,
+/obj/structure/chair,
+/obj/effect/landmark/start/shaft_miner,
/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/area/station/cargo/storage)
"kQM" = (
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 5
@@ -37029,7 +37092,11 @@
/obj/effect/turf_decal/tile/brown/half/contrasted{
dir = 8
},
-/obj/machinery/light/small/directional/west,
+/obj/machinery/requests_console/directional/west{
+ department = "Mining";
+ name = "Mining Requests Console"
+ },
+/obj/effect/mapping_helpers/requests_console/supplies,
/turf/open/floor/iron,
/area/station/cargo/miningdock)
"ltk" = (
@@ -37040,6 +37107,13 @@
/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
/turf/open/floor/plating,
/area/station/maintenance/starboard/aft)
+"ltl" = (
+/obj/machinery/airalarm/directional/west,
+/obj/effect/landmark/start/bitrunner,
+/obj/machinery/light/small/directional/south,
+/obj/effect/decal/cleanable/robot_debris,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"lts" = (
/obj/structure/extinguisher_cabinet/directional/south,
/obj/effect/turf_decal/tile/blue,
@@ -42038,13 +42112,12 @@
/turf/open/floor/iron,
/area/station/engineering/storage)
"naO" = (
-/obj/structure/rack,
-/obj/item/shovel{
- pixel_x = -5
- },
/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
dir = 8
},
+/obj/machinery/computer/security/mining{
+ dir = 1
+ },
/turf/open/floor/iron,
/area/station/cargo/miningdock)
"naP" = (
@@ -43766,16 +43839,17 @@
/turf/closed/wall/r_wall,
/area/station/engineering/transit_tube)
"nyB" = (
-/obj/structure/table,
-/obj/item/folder/yellow,
-/obj/item/pen,
-/obj/machinery/requests_console/directional/west{
- department = "Mining";
- name = "Mining Requests Console"
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
},
-/obj/effect/mapping_helpers/requests_console/supplies,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 1
+ },
+/obj/machinery/holopad,
+/obj/effect/decal/cleanable/oil,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"nyC" = (
/turf/open/floor/iron/dark/smooth_half,
/area/station/service/chapel)
@@ -44814,9 +44888,9 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
+/obj/effect/mapping_helpers/airlock/access/all/supply/general,
/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/area/station/cargo/storage)
"nME" = (
/obj/item/clothing/head/utility/hardhat,
/turf/open/floor/plating/snowed/icemoon,
@@ -48596,10 +48670,16 @@
/turf/open/floor/iron/freezer,
/area/station/commons/toilet)
"oVf" = (
-/obj/effect/landmark/start/shaft_miner,
+/obj/machinery/door/airlock/mining/glass{
+ id_tag = "innercargo";
+ name = "Bitrunning Den"
+ },
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/area/station/bitrunning/den)
"oVt" = (
/obj/machinery/power/apc/auto_name/directional/south,
/obj/structure/cable,
@@ -49550,7 +49630,6 @@
/obj/machinery/camera/directional/north{
c_tag = "Cargo Bay North"
},
-/obj/machinery/vending/wardrobe/cargo_wardrobe,
/obj/machinery/light/directional/north,
/turf/open/floor/iron,
/area/station/cargo/storage)
@@ -51960,9 +52039,6 @@
/obj/effect/mapping_helpers/requests_console/supplies,
/obj/structure/table,
/obj/item/hand_labeler,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
/obj/item/folder/yellow,
/turf/open/floor/iron,
/area/station/cargo/storage)
@@ -53419,13 +53495,20 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"qtT" = (
-/obj/machinery/door/airlock/mining/glass{
- name = "Mining Dock"
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 1
},
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/trimline/brown/corner{
+ dir = 4
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"que" = (
/obj/machinery/camera/directional/south{
c_tag = "Chapel South"
@@ -54426,6 +54509,13 @@
/area/mine/eva/lower)
"qJJ" = (
/obj/machinery/firealarm/directional/east,
+/obj/structure/table,
+/obj/item/paper_bin{
+ pixel_x = 1;
+ pixel_y = 9
+ },
+/obj/item/folder/yellow,
+/obj/item/pen,
/turf/open/floor/iron,
/area/station/cargo/miningdock)
"qJT" = (
@@ -55413,8 +55503,6 @@
/turf/open/floor/plating,
/area/station/maintenance/fore/lesser)
"qYc" = (
-/obj/structure/closet/crate,
-/obj/item/radio/intercom/directional/east,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -61745,6 +61833,14 @@
/obj/item/screwdriver,
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/underground/explored)
+"sVW" = (
+/obj/effect/turf_decal/box/corners{
+ dir = 8
+ },
+/obj/effect/turf_decal/box/corners,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"sWl" = (
/obj/machinery/door/airlock/command{
name = "Chief Medical Officer"
@@ -62896,12 +62992,10 @@
/turf/open/floor/iron,
/area/station/service/janitor)
"tqC" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/obj/machinery/netpod,
+/obj/machinery/camera/directional/south,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"tqQ" = (
/obj/effect/turf_decal/stripes/corner{
dir = 1
@@ -63425,7 +63519,11 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/event_spawn,
+/obj/machinery/door/airlock/mining{
+ name = "Mining Dock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
+/obj/machinery/door/firedoor,
/turf/open/floor/iron,
/area/station/cargo/miningdock)
"tyK" = (
@@ -68316,10 +68414,7 @@
/turf/open/floor/iron/grimy,
/area/station/security/prison/work)
"veh" = (
-/obj/machinery/rnd/bepis,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
+/obj/machinery/vending/wardrobe/cargo_wardrobe,
/turf/open/floor/iron,
/area/station/cargo/storage)
"vek" = (
@@ -68477,9 +68572,10 @@
/turf/open/floor/iron/white,
/area/station/medical/medbay/aft)
"vgC" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
+/obj/machinery/netpod,
+/obj/item/radio/intercom/directional/south,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"vgD" = (
/obj/structure/rack,
/obj/item/stack/sheet/iron/fifty,
@@ -70970,10 +71066,10 @@
/turf/open/floor/iron/chapel,
/area/station/service/chapel)
"vWV" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/effect/landmark/start/shaft_miner,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/power/apc/auto_name/directional/west,
/turf/open/floor/iron,
/area/station/cargo/miningdock)
"vWW" = (
@@ -74860,12 +74956,6 @@
/obj/structure/cable,
/turf/open/floor/iron/white,
/area/station/medical/storage)
-"xdz" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
"xdA" = (
/obj/effect/turf_decal/siding/white{
dir = 4
@@ -229062,7 +229152,7 @@ bCQ
wBb
tKI
veh
-gzN
+ajw
ajw
ajw
mmi
@@ -229319,7 +229409,7 @@ yjn
wBb
tKI
pVC
-xdz
+ajw
kXs
ajw
mmi
@@ -230359,7 +230449,7 @@ irD
irD
pzX
gdN
-pYT
+gfu
maT
bln
qjQ
@@ -230616,11 +230706,11 @@ iaF
ajw
ajw
ajw
-kXr
-kXr
-bln
-qjQ
-qjQ
+bsx
+bsx
+gMV
+bsx
+bsx
ojk
bVJ
dSO
@@ -230873,11 +230963,11 @@ qqJ
gjP
ajw
ajw
-maT
-bln
-bln
-bln
-qjQ
+gMV
+cWa
+sVW
+ltl
+bsx
qYc
hxE
xtr
@@ -231129,12 +231219,12 @@ kXr
kXr
kXr
dgf
-ajw
-kXr
-bln
-bln
-qjQ
-qjQ
+eMa
+oVf
+fss
+qtT
+tqC
+bsx
qjQ
rVe
qjQ
@@ -231384,14 +231474,14 @@ mAN
vra
lZQ
wXR
-qjQ
-aOd
-qtT
-aOd
-qjQ
-qjQ
-qjQ
-tqC
+kXr
+eAe
+eMa
+bsx
+fNx
+dPW
+vgC
+bsx
lti
jBf
naO
@@ -231641,15 +231731,15 @@ kXA
oDt
kRU
oQa
-qjQ
+kXr
kQL
-vgC
-hoD
+ewq
+bsx
dVs
nyB
dUK
-hoD
-hoD
+bsx
+fqY
hxE
dPn
aOd
@@ -231898,14 +231988,14 @@ cXl
uxl
oRy
aHC
-qjQ
+kXr
+ghl
ewq
-oVf
-hoD
-hoD
-vWV
-fNx
-hoD
+bsx
+gMV
+gMV
+bsx
+bsx
iVA
hxE
aCh
@@ -232156,13 +232246,13 @@ cHb
psW
psW
nMB
-hxE
-hxE
+ewq
+ewq
tyH
hxE
hxE
-hxE
-hxE
+vWV
+dAt
hxE
hxE
wBV
@@ -232412,13 +232502,13 @@ ljl
kXA
rLu
nRq
+maT
+ajw
+eMa
aOd
-hoD
-bsx
-hoD
qJJ
hxE
-hoD
+iVA
hoD
hoD
abz
@@ -232672,8 +232762,8 @@ uuP
tue
nZh
lNG
-nZh
tue
+qjQ
hxE
feB
lis
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index cfa13aef72e..af64d1a9037 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -3335,12 +3335,18 @@
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
"bje" = (
-/obj/structure/closet/emcloset,
-/obj/structure/disposalpipe/segment{
- dir = 5
+/obj/effect/turf_decal/box/corners{
+ dir = 8
},
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/box/corners{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/oil/streak,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
+/obj/structure/extinguisher_cabinet/directional/north,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"bjl" = (
/obj/machinery/rnd/production/techfab/department/service,
/obj/effect/turf_decal/trimline/brown/warning{
@@ -4681,9 +4687,8 @@
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
-/obj/effect/landmark/navigate_destination,
+/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/miningoffice)
"bHb" = (
@@ -6085,6 +6090,15 @@
"clq" = (
/turf/open/floor/carpet,
/area/station/security/detectives_office)
+"cly" = (
+/obj/machinery/computer/quantum_console,
+/obj/effect/turf_decal/siding/thinplating_new/dark,
+/obj/effect/decal/cleanable/cobweb,
+/obj/machinery/camera/directional/north{
+ c_tag = "Mining Dock"
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"clA" = (
/obj/structure/sign/departments/cargo,
/turf/closed/wall,
@@ -7193,13 +7207,14 @@
/turf/open/floor/plating,
/area/station/security/brig)
"cGL" = (
+/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/sorting/mail/flip{
- dir = 1
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 8
},
-/obj/effect/mapping_helpers/mail_sorting/supply/disposals,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"cGV" = (
/obj/machinery/air_sensor/plasma_tank,
/turf/open/floor/engine/plasma,
@@ -8861,6 +8876,13 @@
/obj/structure/window/spawner/directional/south,
/turf/open/floor/iron,
/area/station/engineering/atmos)
+"dob" = (
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 4
+ },
+/obj/machinery/computer/order_console/bitrunning,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"dox" = (
/obj/structure/rack,
/obj/item/screwdriver{
@@ -9294,7 +9316,12 @@
/turf/open/floor/iron/cafeteria,
/area/station/engineering/atmos)
"dwA" = (
-/obj/structure/disposalpipe/segment,
+/obj/effect/spawner/random/maintenance,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
"dwJ" = (
@@ -9389,6 +9416,16 @@
},
/turf/open/floor/plating,
/area/station/science/lab)
+"dzh" = (
+/obj/machinery/quantum_server,
+/obj/effect/turf_decal/bot/left,
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 6
+ },
+/obj/machinery/light/directional/north,
+/obj/item/radio/intercom/directional/north,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"dzw" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -11026,12 +11063,14 @@
/turf/open/floor/plating,
/area/station/cargo/sorting)
"edP" = (
-/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
"edQ" = (
@@ -12459,10 +12498,21 @@
/turf/open/floor/iron,
/area/station/hallway/primary/aft)
"eEb" = (
+/obj/effect/turf_decal/trimline/brown/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/corner{
+ dir = 8
+ },
/obj/structure/cable,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/door/airlock/mining{
+ name = "Bitrunning Den"
+ },
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
+/turf/open/floor/iron/dark/textured_half,
+/area/station/bitrunning/den)
"eEf" = (
/obj/machinery/camera/directional/north{
c_tag = "Bar - Backroom"
@@ -14976,12 +15026,9 @@
/turf/open/floor/iron,
/area/station/maintenance/disposal/incinerator)
"fBl" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
+/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/area/station/bitrunning/den)
"fBo" = (
/obj/machinery/door/window/left/directional/north{
dir = 8;
@@ -15629,7 +15676,8 @@
name = "Mining Dock Maintenance"
},
/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
+/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
"fNI" = (
@@ -16537,6 +16585,12 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
+"ghJ" = (
+/obj/machinery/netpod,
+/obj/machinery/light/directional/west,
+/obj/machinery/airalarm/directional/south,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"ghK" = (
/obj/structure/rack,
/obj/item/tank/internals/oxygen,
@@ -17322,11 +17376,9 @@
/turf/closed/wall,
/area/station/commons/storage/primary)
"guZ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/machinery/netpod,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"gva" = (
/obj/effect/turf_decal/delivery,
/turf/open/floor/iron,
@@ -18438,8 +18490,10 @@
/turf/open/space/basic,
/area/space/nearstation)
"gQv" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 1
},
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
@@ -20456,6 +20510,23 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
+"hDd" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark/corner{
+ dir = 8
+ },
+/obj/machinery/firealarm/directional/south,
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron/dark/textured_half,
+/area/station/bitrunning/den)
"hDe" = (
/obj/machinery/portable_atmospherics/canister/plasma,
/turf/open/floor/engine/plasma,
@@ -24512,6 +24583,21 @@
/obj/machinery/duct,
/turf/open/floor/iron/white,
/area/station/medical/treatment_center)
+"iUV" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark,
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/landmark/start/bitrunner,
+/obj/machinery/holopad,
+/turf/open/floor/iron/dark/textured_half,
+/area/station/bitrunning/den)
"iVi" = (
/obj/machinery/door/airlock{
id_tag = "Cabin6";
@@ -25905,7 +25991,6 @@
/turf/open/floor/iron/dark,
/area/station/engineering/storage/tech)
"jty" = (
-/obj/machinery/vending/wardrobe/cargo_wardrobe,
/obj/effect/turf_decal/tile/brown/half/contrasted{
dir = 8
},
@@ -29618,12 +29703,16 @@
/turf/open/floor/engine,
/area/station/science/explab)
"kHU" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/structure/disposalpipe/segment{
+/obj/effect/turf_decal/box/corners,
+/obj/effect/turf_decal/box/corners{
dir = 4
},
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light_switch/directional/north,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"kIG" = (
/obj/structure/rack,
/obj/effect/spawner/random/maintenance/two,
@@ -32798,6 +32887,9 @@
"lUe" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/structure/sign/poster/contraband/random/directional/north,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
"lUj" = (
@@ -34563,6 +34655,9 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/mapping_helpers/broken_floor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
"mzu" = (
@@ -34621,9 +34716,8 @@
/turf/open/floor/iron/dark,
/area/station/hallway/primary/port)
"mAy" = (
-/obj/machinery/computer/order_console/mining,
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
- dir = 8
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
},
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
@@ -38336,6 +38430,9 @@
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/item/storage/toolbox/emergency,
/obj/effect/spawner/random/maintenance,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
"nMF" = (
@@ -39498,6 +39595,14 @@
/obj/item/toy/cattoy,
/turf/open/floor/plating,
/area/station/medical/abandoned)
+"oif" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/station/maintenance/port/fore)
"oip" = (
/obj/machinery/door/firedoor,
/obj/structure/disposalpipe/segment,
@@ -45122,10 +45227,11 @@
/turf/open/floor/iron/dark,
/area/station/command/bridge)
"qlr" = (
-/obj/structure/cable,
-/obj/effect/landmark/event_spawn,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"qlG" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
@@ -46158,6 +46264,21 @@
/obj/structure/sign/warning/docking,
/turf/closed/wall,
/area/station/hallway/secondary/entry)
+"qHC" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark,
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/dark/textured_half,
+/area/station/bitrunning/den)
"qHK" = (
/obj/effect/spawner/random/structure/grille,
/turf/open/floor/plating,
@@ -47441,6 +47562,13 @@
/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
/turf/open/floor/iron/dark,
/area/station/science/ordnance/storage)
+"raL" = (
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 4
+ },
+/obj/machinery/computer/order_console/mining,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"raT" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -49532,10 +49660,14 @@
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
"rNV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
+/obj/machinery/door/airlock/maintenance{
+ name = "Mining Dock Maintenance"
},
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/disposalpipe/segment,
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
+/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
"rOz" = (
@@ -49774,12 +49906,8 @@
/turf/open/floor/plating,
/area/station/service/chapel)
"rSa" = (
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 4
- },
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/turf/closed/wall,
+/area/station/bitrunning/den)
"rSi" = (
/obj/effect/landmark/start/chief_engineer,
/obj/structure/chair/office/light{
@@ -53088,6 +53216,24 @@
/obj/effect/mapping_helpers/burnt_floor,
/turf/open/floor/plating,
/area/station/maintenance/port)
+"taq" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark,
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 4
+ },
+/obj/machinery/power/apc/auto_name/directional/west,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/dark/textured_half,
+/area/station/bitrunning/den)
"tar" = (
/obj/machinery/medical_kiosk,
/obj/effect/turf_decal/tile/blue/half/contrasted,
@@ -54073,12 +54219,10 @@
/turf/open/floor/iron/cafeteria,
/area/station/service/kitchen)
"ttG" = (
-/obj/item/clothing/gloves/color/rainbow,
-/obj/item/clothing/shoes/sneakers/rainbow,
-/obj/item/clothing/under/color/rainbow,
-/obj/item/clothing/head/soft/rainbow,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/machinery/netpod,
+/obj/effect/decal/cleanable/robot_debris,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"ttM" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -55680,6 +55824,16 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/port)
+"tWj" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"tWq" = (
/obj/effect/spawner/random/trash/janitor_supplies,
/obj/effect/mapping_helpers/broken_floor,
@@ -57267,9 +57421,9 @@
/turf/open/floor/iron/dark,
/area/station/security/execution/education)
"uyj" = (
-/obj/machinery/rnd/bepis,
-/obj/effect/turf_decal/stripes/end{
- dir = 4
+/obj/machinery/vending/wardrobe/cargo_wardrobe,
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 8
},
/turf/open/floor/iron,
/area/station/cargo/storage)
@@ -59763,7 +59917,7 @@
"vpU" = (
/obj/effect/spawner/random/structure/crate,
/obj/structure/disposalpipe/segment{
- dir = 4
+ dir = 5
},
/turf/open/floor/plating,
/area/station/maintenance/port/fore)
@@ -64862,7 +65016,8 @@
},
/obj/structure/cable,
/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
+/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"xel" = (
@@ -65411,15 +65566,15 @@
/turf/open/floor/iron/dark,
/area/station/science/genetics)
"xoc" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Dock Maintenance"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/access/all/supply/mining,
-/turf/open/floor/plating,
-/area/station/maintenance/port/fore)
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/brown/half/contrasted{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/cargo/miningoffice)
"xor" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
@@ -84439,10 +84594,10 @@ nmg
vEV
jPp
jXu
-aaa
-aaa
-aaa
-pnI
+rSa
+rSa
+rSa
+hKg
bUm
kRe
qRa
@@ -84696,9 +84851,9 @@ jXu
kXA
ufv
jXu
-aaa
-aaa
-aaa
+cly
+taq
+ghJ
hKg
hKg
fQW
@@ -84953,10 +85108,10 @@ jXu
jXu
hWS
jXu
-jXu
-jXu
-jXu
-jXu
+dzh
+iUV
+guZ
+fBl
qvY
kRe
wxh
@@ -85209,11 +85364,11 @@ lBm
qKy
ybN
edP
-dwA
+jXu
bje
-jXu
+qHC
ttG
-jXu
+fBl
pPh
aFd
nVG
@@ -85466,11 +85621,11 @@ vfv
cTQ
xte
mzs
-sHu
+jXu
kHU
-jXu
-jXu
-jXu
+hDd
+rSa
+rSa
jpG
kRe
nVG
@@ -85722,11 +85877,11 @@ gYE
uEC
wgw
twr
-uuD
-qlr
+bSm
+jXu
fBl
eEb
-jXu
+rSa
ouc
dSG
cLj
@@ -85979,12 +86134,12 @@ pQu
vEH
jXu
lUe
-uuD
+gQv
rNV
cGL
-guZ
xoc
-xyz
+xoc
+tWj
xyz
kdC
btt
@@ -86236,11 +86391,11 @@ eNU
aQE
jXu
nME
-iUE
-gQv
-jXu
-jXu
+dwA
jXu
+dob
+qlr
+raL
mAy
cLj
kRe
@@ -86493,10 +86648,10 @@ jXu
jXu
jXu
jXu
-uuD
-gQv
+bSm
+jXu
+jXu
jXu
-fhn
jXu
lJo
xJV
@@ -86750,10 +86905,10 @@ mVS
xxp
twr
sxn
-uuD
+oif
vpU
twr
-rSa
+fhn
jXu
jXu
fNH
diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm
index d9fff1d8af0..2180624cf2a 100644
--- a/_maps/map_files/NorthStar/north_star.dmm
+++ b/_maps/map_files/NorthStar/north_star.dmm
@@ -1966,6 +1966,17 @@
},
/turf/open/floor/catwalk_floor,
/area/station/maintenance/floor3/port/fore)
+"azj" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 4
+ },
+/obj/effect/turf_decal/arrows{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/disposalpipe/trunk/multiz,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"azu" = (
/obj/structure/table/wood,
/obj/item/gun/ballistic/shotgun/doublebarrel,
@@ -5545,12 +5556,12 @@
/turf/open/floor/iron/white,
/area/station/science/robotics/lab)
"brL" = (
-/obj/effect/turf_decal/stripes{
- dir = 6
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/extinguisher_cabinet/directional/west,
+/turf/open/floor/iron/stairs{
+ dir = 1
},
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
+/area/station/bitrunning/den)
"brN" = (
/obj/effect/spawner/structure/window/hollow/reinforced/directional,
/obj/structure/disposalpipe/segment,
@@ -5572,9 +5583,14 @@
/turf/open/floor/plating,
/area/station/medical/abandoned)
"bsq" = (
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/machinery/computer/order_console/bitrunning{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/end{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/station/cargo/storage)
"bsu" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -6347,13 +6363,9 @@
},
/area/station/hallway/floor3/aft)
"bAh" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
+/obj/effect/spawner/random/structure/table_or_rack,
+/obj/effect/spawner/random/trash/soap,
+/turf/open/floor/plating,
/area/station/maintenance/floor1/starboard/fore)
"bAj" = (
/obj/machinery/conveyor{
@@ -10206,13 +10218,20 @@
/turf/open/floor/engine/vacuum,
/area/station/science/ordnance/freezerchamber)
"cBT" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 8
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 4
},
-/obj/machinery/firealarm/directional/east,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/effect/turf_decal/arrows{
+ dir = 4
+ },
+/obj/structure/railing{
+ layer = 3.1
+ },
+/obj/effect/decal/cleanable/robot_debris,
+/obj/structure/disposalpipe/segment,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"cBU" = (
/obj/structure/window/reinforced/spawner/directional/west,
/obj/structure/flora/bush/sunny/style_random,
@@ -10322,11 +10341,11 @@
/turf/open/floor/iron/dark/textured,
/area/station/medical/pharmacy)
"cDe" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
+/obj/machinery/computer/quantum_console{
+ dir = 4
},
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
+/turf/open/floor/iron/dark/smooth_corner,
+/area/station/bitrunning/den)
"cDh" = (
/obj/item/broken_bottle,
/turf/open/floor/carpet/neon/simple/pink/nodots,
@@ -16795,6 +16814,7 @@
/obj/structure/railing/corner/end{
dir = 1
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/cargo/storage)
"eop" = (
@@ -16971,17 +16991,19 @@
/turf/open/floor/catwalk_floor,
/area/station/maintenance/floor1/starboard)
"erV" = (
-/obj/machinery/door/firedoor/border_only{
+/obj/effect/turf_decal/trimline/brown/line{
dir = 1
},
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
+/obj/effect/turf_decal/stripes{
+ dir = 1
},
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/machinery/power/apc/auto_name/directional/west,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/trimline/brown/line,
+/turf/open/floor/iron/dark/smooth_half,
+/area/station/bitrunning/den)
"erY" = (
/obj/machinery/vending/wardrobe/bar_wardrobe,
/turf/open/floor/wood,
@@ -17113,11 +17135,23 @@
/turf/open/floor/pod/dark,
/area/station/maintenance/floor3/starboard)
"eul" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = -2;
+ pixel_y = 8
+ },
+/obj/item/cigbutt/cigarbutt{
+ pixel_x = 7
+ },
/obj/effect/turf_decal/stripes{
dir = 8
},
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/iron/dark/smooth_half,
+/area/station/bitrunning/den)
"euu" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
@@ -20970,12 +21004,13 @@
/turf/open/floor/plating/airless,
/area/space)
"fCw" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 8
},
-/obj/structure/disposalpipe/trunk/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/machinery/holopad,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"fCx" = (
/obj/structure/rack,
/turf/open/floor/pod/dark,
@@ -24086,7 +24121,9 @@
dir = 4
},
/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
+/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/storage)
"gsp" = (
@@ -25098,6 +25135,7 @@
/area/station/maintenance/floor2/starboard/aft)
"gFU" = (
/obj/machinery/computer/exodrone_control_console,
+/obj/structure/extinguisher_cabinet/directional/west,
/turf/open/floor/iron/dark,
/area/station/cargo/drone_bay)
"gGe" = (
@@ -28055,9 +28093,12 @@
/turf/open/floor/pod/dark,
/area/station/maintenance/floor2/port/fore)
"htK" = (
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/machinery/netpod,
+/obj/structure/railing{
+ layer = 3.1
+ },
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"htW" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/catwalk_floor/iron,
@@ -28655,8 +28696,6 @@
/area/station/maintenance/floor2/port/aft)
"hBR" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/broken/directional/north,
-/obj/item/radio/intercom/directional/north,
/turf/open/floor/catwalk_floor/iron_smooth,
/area/station/cargo/warehouse)
"hBT" = (
@@ -30477,10 +30516,15 @@
/turf/open/floor/iron/dark,
/area/station/commons/dorms/room4)
"iaJ" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/machinery/netpod,
+/obj/effect/decal/cleanable/vomit/old{
+ pixel_x = -12;
+ pixel_y = -13
+ },
+/obj/item/radio/intercom/directional/north,
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"iaO" = (
/obj/structure/rack,
/obj/structure/sign/nanotrasen{
@@ -31458,16 +31502,12 @@
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
"ioi" = (
-/obj/machinery/exoscanner,
-/obj/effect/turf_decal/stripes{
- dir = 1
+/obj/machinery/quantum_server,
+/obj/effect/turf_decal/bot/left,
+/turf/open/floor/iron/dark/smooth_corner{
+ dir = 4
},
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/corner,
-/area/station/cargo/drone_bay)
+/area/station/bitrunning/den)
"iom" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -32663,10 +32703,8 @@
/turf/open/floor/catwalk_floor,
/area/station/maintenance/floor3/starboard/fore)
"iDJ" = (
-/obj/effect/turf_decal/stripes{
- dir = 10
- },
-/obj/effect/mapping_helpers/broken_floor,
+/obj/structure/rack,
+/obj/item/stack/sheet/leather,
/turf/open/floor/plating,
/area/station/maintenance/floor1/starboard/fore)
"iDP" = (
@@ -34787,9 +34825,14 @@
/turf/open/floor/pod/light,
/area/station/maintenance/floor1/starboard/fore)
"jhP" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/effect/turf_decal/box/corners,
+/obj/effect/turf_decal/box/corners{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"jhU" = (
/turf/open/floor/iron/white,
/area/station/science/robotics/lab)
@@ -36140,18 +36183,21 @@
/turf/open/floor/carpet/royalblack,
/area/station/service/kitchen/diner)
"jAr" = (
-/obj/structure/railing{
+/obj/effect/turf_decal/siding/thinplating_new/dark{
dir = 4
},
-/obj/effect/turf_decal/stripes{
+/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,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
+/obj/machinery/door/airlock/mining/glass{
+ name = "Bitrunning Den"
},
-/turf/open/floor/iron,
-/area/station/cargo/storage)
+/turf/open/floor/pod/dark,
+/area/station/bitrunning/den)
"jAB" = (
/obj/machinery/light/floor,
/turf/open/floor/iron/dark/side{
@@ -37743,6 +37789,9 @@
/area/station/hallway/floor2/fore)
"jWJ" = (
/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 4
+ },
/turf/open/floor/iron,
/area/station/cargo/storage)
"jWR" = (
@@ -42565,11 +42614,14 @@
/turf/open/floor/iron,
/area/station/commons/fitness/recreation)
"lgs" = (
-/obj/effect/turf_decal/stripes{
- dir = 5
+/obj/structure/sign/poster/random/directional/north,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
+/obj/effect/decal/cleanable/oil,
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 8
},
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"lgv" = (
/obj/structure/rack,
/obj/item/book/manual/nuclear,
@@ -50885,21 +50937,27 @@
/turf/open/floor/iron/dark,
/area/station/hallway/floor3/aft)
"nkT" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
+/obj/effect/turf_decal/trimline/brown/line{
+ dir = 1
},
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
+/obj/effect/turf_decal/stripes{
+ dir = 1
},
-/obj/effect/mapping_helpers/airlock/access/any/supply/general,
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/dark/smooth_corner{
+ dir = 8
+ },
+/area/station/bitrunning/den)
"nla" = (
/obj/structure/table/wood,
/obj/effect/turf_decal/siding/wood{
@@ -55541,14 +55599,21 @@
/turf/open/floor/iron/dark/side,
/area/station/security/checkpoint)
"owk" = (
-/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/trimline/brown/line{
+ dir = 1
},
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/effect/turf_decal/stripes{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/iron/dark/smooth_half,
+/area/station/bitrunning/den)
"owo" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -55733,6 +55798,9 @@
/obj/structure/sign/warning/biohazard/directional/west,
/turf/open/floor/iron/white,
/area/station/hallway/floor2/aft)
+"oyT" = (
+/turf/closed/wall,
+/area/station/bitrunning/den)
"oyW" = (
/obj/structure/chair{
dir = 8
@@ -58875,6 +58943,8 @@
},
/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,
/area/station/cargo/storage)
"pro" = (
@@ -59621,6 +59691,14 @@
/obj/effect/spawner/random/structure/crate,
/turf/open/floor/pod/light,
/area/station/maintenance/floor1/port/aft)
+"pBA" = (
+/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)
"pBJ" = (
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=1-7";
@@ -59741,7 +59819,6 @@
/area/station/medical/virology)
"pCW" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/machinery/rnd/bepis,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/station/cargo/warehouse)
@@ -64295,6 +64372,7 @@
dir = 4
},
/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/cargo/storage)
"qOs" = (
@@ -66491,6 +66569,8 @@
dir = 10
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/cargo/storage)
"rqK" = (
@@ -67513,7 +67593,7 @@
/area/station/medical/abandoned)
"rGF" = (
/obj/effect/turf_decal/bot,
-/obj/structure/sign/poster/random/directional/north,
+/obj/machinery/light/broken/directional/north,
/turf/open/floor/iron/smooth,
/area/station/cargo/warehouse)
"rGI" = (
@@ -69909,6 +69989,7 @@
/obj/effect/turf_decal/stripes{
dir = 4
},
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/turf/open/floor/iron,
/area/station/cargo/storage)
"srz" = (
@@ -71467,11 +71548,16 @@
/turf/open/floor/iron/white,
/area/station/science/xenobiology/hallway)
"sLq" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 8
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 4
},
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/effect/turf_decal/arrows{
+ dir = 4
+ },
+/obj/machinery/light/directional/north,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"sLE" = (
/obj/machinery/door/airlock/security/glass{
name = "Security Entrance"
@@ -78373,10 +78459,18 @@
/turf/open/floor/iron,
/area/station/hallway/floor2/aft)
"uDm" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/trash/soap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
+/obj/effect/turf_decal/box/corners{
+ dir = 8
+ },
+/obj/effect/turf_decal/box/corners{
+ dir = 1
+ },
+/obj/machinery/firealarm/directional/south,
+/obj/machinery/light/directional/south,
+/obj/effect/decal/cleanable/oil/streak,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"uDr" = (
/obj/machinery/light/small/directional/north,
/obj/effect/decal/cleanable/dirt,
@@ -84656,11 +84750,9 @@
/turf/open/floor/iron/dark,
/area/station/hallway/floor4/aft)
"whN" = (
-/obj/effect/turf_decal/stripes{
- dir = 9
- },
+/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
+/area/station/bitrunning/den)
"whR" = (
/turf/closed/wall,
/area/station/service/bar)
@@ -91153,11 +91245,15 @@
/turf/open/floor/catwalk_floor,
/area/station/maintenance/floor2/starboard/fore)
"xOd" = (
-/obj/machinery/modular_computer/preset/civilian,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/cargo/drone_bay)
+/obj/effect/turf_decal/bot,
+/obj/effect/turf_decal/siding/thinplating_new{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/shieldgen,
+/obj/item/radio/intercom/directional/north,
+/turf/open/floor/iron/smooth,
+/area/station/cargo/warehouse)
"xOe" = (
/obj/machinery/light/cold/no_nightlight/directional/north,
/turf/open/floor/engine,
@@ -115256,13 +115352,13 @@ owI
owI
owI
owI
-oic
-oic
-whN
-eul
-iDJ
+oyT
+oyT
+oyT
+oyT
+oyT
bAh
-oic
+iDJ
oic
oic
oic
@@ -115513,14 +115609,14 @@ owI
owI
owI
owI
-oic
-oic
+oyT
+oyT
cDe
-oic
-bsq
-bAh
-htK
-oic
+ioi
+oyT
+oyT
+oyT
+oyT
gUS
nOj
dzo
@@ -115770,14 +115866,14 @@ owI
owI
owI
owI
-oic
-oic
+oyT
+oyT
lgs
fCw
brL
erV
uDm
-oic
+oyT
rGF
yiZ
yiZ
@@ -116027,14 +116123,14 @@ owI
owI
owI
owI
-oic
-oic
-sLq
+oyT
+oyT
sLq
+azj
cBT
owk
jhP
-oic
+whN
hBR
qWJ
qWJ
@@ -116284,14 +116380,14 @@ owI
owI
owI
owI
-oic
-oic
+oyT
+oyT
iaJ
-oic
-oic
+pBA
+htK
nkT
-oic
-oic
+eul
+whN
rYA
eEB
lUY
@@ -116541,15 +116637,15 @@ owI
owI
owI
owI
-oic
-oic
-oic
-oic
+oyT
+oyT
+oyT
+oyT
+oyT
+jAr
+whN
+oyT
xOd
-xxQ
-ioi
-aQK
-fve
fve
aSL
iCn
@@ -117579,7 +117675,7 @@ aQK
aQK
cfO
jWJ
-mnR
+bsq
mnk
mnR
aHb
@@ -117833,7 +117929,7 @@ xsL
sqK
rqB
prm
-jAr
+gso
gso
qOr
eoo
diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm
index a475bd64013..3b86ffcfc20 100644
--- a/_maps/map_files/debug/runtimestation.dmm
+++ b/_maps/map_files/debug/runtimestation.dmm
@@ -80,6 +80,11 @@
"aA" = (
/turf/open/floor/iron,
/area/station/engineering/main)
+"aB" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/turf/open/floor/iron,
+/area/station/hallway/secondary/entry)
"aC" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
@@ -1747,6 +1752,9 @@
},
/turf/open/floor/iron,
/area/station/medical/chemistry)
+"hU" = (
+/turf/open/floor/circuit/green,
+/area/station/bitrunning/den)
"ii" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -1769,6 +1777,9 @@
},
/turf/open/floor/plating,
/area/station/engineering/atmos)
+"jR" = (
+/turf/open/floor/iron,
+/area/station/bitrunning/den)
"jU" = (
/obj/structure/table,
/obj/item/melee/energy/axe,
@@ -1817,6 +1828,12 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/central)
+"mi" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/light/directional/north,
+/turf/open/floor/iron,
+/area/station/hallway/secondary/entry)
"mE" = (
/obj/structure/cable,
/obj/machinery/chem_mass_spec,
@@ -1871,6 +1888,10 @@
/obj/machinery/door/airlock,
/turf/open/floor/plating,
/area/station/engineering/atmos)
+"qp" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/station/bitrunning/den)
"qx" = (
/obj/machinery/airalarm/directional/west,
/obj/effect/mapping_helpers/airalarm/unlocked,
@@ -1942,6 +1963,9 @@
/obj/machinery/light/directional/north,
/turf/open/floor/plating,
/area/station/engineering/atmos)
+"uI" = (
+/turf/closed/wall/r_wall,
+/area/station/bitrunning/den)
"uO" = (
/obj/machinery/door/airlock/public/glass,
/obj/structure/cable,
@@ -2062,6 +2086,10 @@
/obj/structure/closet/syndicate/resources/everything,
/turf/open/floor/iron,
/area/station/science)
+"CD" = (
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/station/bitrunning/den)
"CQ" = (
/obj/machinery/light/directional/south,
/obj/effect/turf_decal/stripes/line{
@@ -2155,6 +2183,17 @@
/obj/effect/mapping_helpers/airalarm/unlocked,
/turf/open/floor/iron,
/area/station/command/bridge)
+"FW" = (
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/circuit/green,
+/area/station/bitrunning/den)
+"Ht" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/item/storage/part_replacer/bluespace/tier4,
+/turf/open/floor/iron,
+/area/station/bitrunning/den)
"HW" = (
/obj/machinery/airalarm/directional/east,
/obj/effect/mapping_helpers/airalarm/unlocked,
@@ -2179,6 +2218,10 @@
/obj/effect/turf_decal/tile/blue/half/contrasted,
/turf/open/floor/iron,
/area/station/command/bridge)
+"IB" = (
+/obj/machinery/quantum_server,
+/turf/open/floor/iron,
+/area/station/bitrunning/den)
"IH" = (
/obj/structure/closet/secure_closet/engineering_welding{
locked = 0
@@ -2271,6 +2314,10 @@
/obj/machinery/rnd/production/protolathe/department,
/turf/open/floor/iron,
/area/station/science)
+"Oq" = (
+/obj/machinery/netpod,
+/turf/open/floor/iron,
+/area/station/bitrunning/den)
"Ot" = (
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable,
@@ -2292,6 +2339,12 @@
/obj/item/stock_parts/cell/bluespace,
/turf/open/floor/iron/dark,
/area/station/science/explab)
+"OA" = (
+/obj/machinery/door/airlock,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/turf/open/floor/iron,
+/area/station/bitrunning/den)
"OU" = (
/obj/item/disk/tech_disk/debug,
/turf/open/floor/iron,
@@ -2301,6 +2354,11 @@
/obj/effect/mapping_helpers/airalarm/unlocked,
/turf/open/floor/iron/dark,
/area/station/science/explab)
+"Pw" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/turf/open/floor/iron,
+/area/station/bitrunning/den)
"Px" = (
/obj/structure/table,
/obj/machinery/reagentgrinder,
@@ -2365,6 +2423,11 @@
},
/turf/open/floor/iron/white/corner,
/area/station/medical/medbay)
+"SN" = (
+/obj/structure/table/reinforced,
+/obj/machinery/light/directional/south,
+/turf/open/floor/iron,
+/area/station/bitrunning/den)
"Td" = (
/obj/machinery/light/directional/east,
/obj/effect/turf_decal/stripes/line{
@@ -2467,6 +2530,13 @@
},
/turf/open/floor/iron,
/area/station/medical/chemistry)
+"Xo" = (
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/structure/cable,
+/obj/machinery/airalarm/directional/east,
+/obj/machinery/computer/quantum_console,
+/turf/open/floor/iron,
+/area/station/bitrunning/den)
"Xp" = (
/obj/machinery/light/directional/south,
/obj/structure/tank_dispenser{
@@ -3033,12 +3103,12 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
+uI
+uI
+uI
+uI
+uI
+uI
aa
aa
aa
@@ -3125,12 +3195,12 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
+uI
+FW
+hU
+jR
+Oq
+uI
aa
aa
aa
@@ -3217,12 +3287,12 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
+uI
+FW
+hU
+jR
+Oq
+uI
aa
aa
aa
@@ -3309,12 +3379,12 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
+uI
+IB
+jR
+Ht
+Oq
+uI
aa
aa
aa
@@ -3401,12 +3471,12 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
+uI
+Xo
+CD
+Pw
+SN
+uI
aa
aa
aa
@@ -3493,12 +3563,12 @@ em
em
em
em
-em
-em
-em
-dY
-en
-dY
+uI
+uI
+uI
+OA
+qp
+uI
Tj
Tj
Tj
@@ -3588,7 +3658,7 @@ rK
rK
vy
em
-eh
+aB
eh
LW
lc
@@ -3680,7 +3750,7 @@ qQ
qQ
ME
em
-eh
+aB
eh
LW
lc
@@ -3772,7 +3842,7 @@ qQ
qQ
ME
em
-eh
+aB
eh
LW
lc
@@ -3864,7 +3934,7 @@ qQ
qQ
CQ
em
-eh
+mi
eh
LW
lc
@@ -3956,7 +4026,7 @@ qQ
qQ
ME
em
-eh
+aB
eh
LW
lc
@@ -4048,7 +4118,7 @@ qQ
qQ
YL
em
-eh
+aB
eh
LW
lc
@@ -4140,7 +4210,7 @@ II
gl
gD
kj
-wM
+aB
wM
LW
lc
diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_1.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_1.dmm
index a34ab0e6fcf..eab9280b8fa 100644
--- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_1.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_1.dmm
@@ -1845,10 +1845,10 @@ gb
gb
gb
gb
-gb
-gb
-gb
-gb
+eJ
+eJ
+eJ
+eJ
eJ
eJ
eJ
@@ -1882,10 +1882,10 @@ gb
gb
gb
gb
-gb
-gb
-gb
-gb
+eJ
+eJ
+eJ
+eJ
eJ
eJ
eJ
@@ -1918,7 +1918,7 @@ eJ
gb
gb
gb
-eJ
+gb
eJ
eJ
eJ
diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_2.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_2.dmm
index f20109536f8..0901318e301 100644
--- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_2.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_2.dmm
@@ -2000,10 +2000,10 @@ se
se
se
se
-se
-se
-se
-se
+dx
+dx
+dx
+dx
dx
dx
dx
@@ -2037,10 +2037,10 @@ se
se
se
se
-se
-se
-se
-se
+dx
+dx
+dx
+dx
dx
dx
dx
@@ -2073,7 +2073,7 @@ dx
se
se
se
-dx
+se
dx
dx
dx
diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_3.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_3.dmm
index 63b18a69e75..775e31e6b9d 100644
--- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_3.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_3.dmm
@@ -1918,10 +1918,10 @@ cK
cK
cK
cK
-cK
-cK
-cK
-cK
+Hu
+Hu
+Hu
+Hu
Hu
Hu
Hu
@@ -1955,10 +1955,10 @@ cK
cK
cK
cK
-cK
-cK
-cK
-cK
+Hu
+Hu
+Hu
+Hu
Hu
Hu
Hu
@@ -1991,7 +1991,7 @@ Hu
cK
cK
cK
-Hu
+cK
Hu
Hu
Hu
diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_1.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_1.dmm
index 202e850684a..ae78ae6731f 100644
--- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_1.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_1.dmm
@@ -1079,10 +1079,10 @@ V
V
V
V
-V
-V
-V
-V
+l
+l
+l
+l
l
l
l
@@ -1105,10 +1105,10 @@ V
V
V
V
-V
-V
-V
-V
+l
+l
+l
+l
l
l
l
diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm
index 939d8bb0aaf..0e8deac0a59 100644
--- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm
@@ -1013,10 +1013,10 @@ V
V
l
V
-V
-V
-V
-V
+b
+b
+b
+b
b
b
b
@@ -1039,10 +1039,10 @@ V
V
V
V
-V
-V
-V
-V
+b
+b
+b
+b
b
b
b
diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_3.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_3.dmm
index 5831bc047d3..544d9a87075 100644
--- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_3.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_3.dmm
@@ -115,7 +115,7 @@
/area/station/maintenance/department/cargo)
"y" = (
/obj/item/gps/mining,
-/turf/open/misc/asteroid,
+/turf/open/misc/asteroid/dug,
/area/station/asteroid)
"z" = (
/obj/item/storage/bag/ore{
@@ -1048,7 +1048,7 @@ b
i
i
I
-I
+y
Y
i
Y
@@ -1100,10 +1100,10 @@ B
I
I
P
-y
-i
-i
-i
+Q
+Q
+Q
+Q
Q
Q
Q
@@ -1126,10 +1126,10 @@ Y
Y
I
Y
-i
-i
-i
-i
+Q
+Q
+Q
+Q
Q
Q
Q
diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm
index 4ef52187a09..985f82f8d21 100644
--- a/_maps/map_files/tramstation/tramstation.dmm
+++ b/_maps/map_files/tramstation/tramstation.dmm
@@ -452,18 +452,16 @@
/turf/open/misc/asteroid,
/area/station/asteroid)
"abN" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=1";
- location = "QM #6"
+/obj/machinery/firealarm/directional/south,
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 1
},
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/mob/living/simple_animal/bot/mulebot{
- home_destination = "QM #6";
- suffix = "#6"
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"abO" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -3865,6 +3863,10 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
+/obj/effect/landmark/start/bitrunner,
+/obj/structure/chair{
+ dir = 4
+ },
/turf/open/floor/iron,
/area/station/cargo/storage)
"axG" = (
@@ -9512,6 +9514,18 @@
/obj/effect/turf_decal/tile/brown/fourcorners,
/turf/open/floor/iron,
/area/station/cargo/sorting)
+"cfC" = (
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 4
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"cga" = (
/obj/effect/turf_decal/trimline/neutral/filled/corner{
dir = 8
@@ -10096,7 +10110,7 @@
layer = 3.1;
linked_elevator_id = "tram_xeno_lift";
pixel_y = 2;
- preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
+ preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
},
/turf/closed/wall,
/area/station/science/xenobiology)
@@ -15566,6 +15580,11 @@
/mob/living/simple_animal/bot/cleanbot,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/aisat_interior)
+"esr" = (
+/obj/machinery/netpod,
+/obj/item/radio/intercom/directional/north,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"esA" = (
/obj/machinery/iv_drip,
/obj/effect/turf_decal/trimline/blue/filled/line{
@@ -15683,18 +15702,8 @@
/turf/open/floor/wood,
/area/station/service/theater)
"euR" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=2";
- location = "QM #3"
- },
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/mob/living/simple_animal/bot/mulebot{
- home_destination = "QM #3";
- suffix = "#3"
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
+/turf/closed/wall,
+/area/station/bitrunning/den)
"euS" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -16311,6 +16320,15 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/iron/white,
/area/station/science/xenobiology)
+"eGU" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=1";
+ location = "QM #4"
+ },
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/turf/open/floor/iron,
+/area/station/cargo/warehouse)
"eHj" = (
/obj/machinery/vending/tool,
/obj/machinery/airalarm/directional/east,
@@ -18005,8 +18023,19 @@
/area/station/science/ordnance)
"foU" = (
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/cargo/storage)
+"foV" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=1";
+ location = "QM #5"
+ },
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/turf/open/floor/iron,
+/area/station/cargo/warehouse)
"foY" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -18643,6 +18672,15 @@
/obj/machinery/light/warm/directional/west,
/turf/open/floor/iron,
/area/station/cargo/miningdock/cafeteria)
+"fDd" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/station/cargo/storage)
"fDg" = (
/obj/structure/table,
/obj/item/clothing/gloves/boxing,
@@ -19276,6 +19314,19 @@
/obj/effect/landmark/start/hangover,
/turf/open/floor/iron/freezer,
/area/station/commons/toilet)
+"fNG" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=2";
+ location = "QM #1"
+ },
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/mob/living/simple_animal/bot/mulebot{
+ home_destination = "QM #1";
+ suffix = "#1"
+ },
+/turf/open/floor/iron,
+/area/station/cargo/warehouse)
"fNR" = (
/obj/structure/closet/lasertag/blue,
/obj/effect/landmark/start/hangover/closet,
@@ -19678,7 +19729,7 @@
/area/station/security/processing)
"fWK" = (
/obj/machinery/computer/atmos_control/oxygen_tank{
- atmos_chambers = list("o2ordance"="Oxygen Supply")
+ atmos_chambers = list("o2ordance"="Oxygen Supply")
},
/obj/effect/turf_decal/stripes/line,
/obj/machinery/airalarm/directional/north,
@@ -20252,7 +20303,7 @@
},
/obj/machinery/elevator_control_panel/directional/west{
linked_elevator_id = "tram_sci_lift";
- preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
+ preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
},
/turf/open/floor/plating/elevatorshaft,
/area/station/science/lower)
@@ -22348,6 +22399,8 @@
"gUL" = (
/obj/effect/landmark/event_spawn,
/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/storage)
"gUO" = (
@@ -22596,6 +22649,15 @@
},
/turf/open/floor/iron,
/area/station/command/teleporter)
+"haq" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron,
+/area/station/cargo/storage)
"hay" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -23938,7 +24000,6 @@
/obj/effect/turf_decal/siding/thinplating/corner{
dir = 4
},
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/cargo/storage)
"hDZ" = (
@@ -24725,6 +24786,19 @@
/obj/machinery/telecomms/server/presets/command,
/turf/open/floor/iron/dark/telecomms,
/area/station/tcommsat/server)
+"hSM" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=1";
+ location = "QM #6"
+ },
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/mob/living/simple_animal/bot/mulebot{
+ home_destination = "QM #6";
+ suffix = "#6"
+ },
+/turf/open/floor/iron,
+/area/station/cargo/warehouse)
"hTa" = (
/obj/effect/turf_decal/trimline/neutral/filled/line,
/turf/open/floor/iron,
@@ -28585,13 +28659,13 @@
/turf/open/floor/iron,
/area/station/security/checkpoint/supply)
"jnL" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
+/obj/structure/railing{
+ layer = 3.1;
+ dir = 4
},
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
+/obj/machinery/netpod,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"jnR" = (
/obj/structure/bed{
dir = 8
@@ -29094,7 +29168,7 @@
/obj/structure/industrial_lift/public,
/obj/machinery/elevator_control_panel/directional/west{
linked_elevator_id = "tram_cargo_lift";
- preset_destination_names = list("2"="Lower Deck","3"="Upper Deck");
+ preset_destination_names = list("2"="Lower Deck","3"="Upper Deck");
req_access = list("mining")
},
/obj/effect/abstract/elevator_music_zone{
@@ -30343,12 +30417,13 @@
/turf/open/floor/iron,
/area/station/construction/mining/aux_base)
"jTQ" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"jUa" = (
/obj/effect/turf_decal/trimline/purple/filled/corner{
dir = 4
@@ -32109,6 +32184,19 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/grimy,
/area/station/security/detectives_office)
+"kyw" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=2";
+ location = "QM #3"
+ },
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/mob/living/simple_animal/bot/mulebot{
+ home_destination = "QM #3";
+ suffix = "#3"
+ },
+/turf/open/floor/iron,
+/area/station/cargo/warehouse)
"kyF" = (
/obj/structure/table,
/obj/item/storage/backpack/duffelbag/sec{
@@ -34953,7 +35041,7 @@
},
/obj/machinery/elevator_control_panel/directional/west{
linked_elevator_id = "tram_perma_lift";
- preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
+ preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
},
/turf/open/floor/plating/elevatorshaft,
/area/station/security/execution/transfer)
@@ -36318,6 +36406,9 @@
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
+/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/storage)
"lTP" = (
@@ -37447,6 +37538,8 @@
/obj/effect/turf_decal/trimline/neutral/filled/line{
dir = 1
},
+/obj/structure/table,
+/obj/machinery/light/dim/directional/north,
/turf/open/floor/iron,
/area/station/cargo/warehouse)
"mng" = (
@@ -37646,14 +37739,26 @@
/turf/open/floor/iron/white,
/area/station/medical/storage)
"mrg" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=1";
- location = "QM #4"
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/stripes,
+/obj/structure/table/reinforced,
+/obj/item/reagent_containers/cup/glass/mug/coco{
+ pixel_x = -7;
+ pixel_y = 7
},
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
+/obj/item/reagent_containers/cup/glass/mug/coco{
+ pixel_x = -6;
+ pixel_y = -1
+ },
+/obj/item/folder/yellow{
+ pixel_x = 5;
+ pixel_y = 3
+ },
+/obj/item/pen{
+ pixel_x = 6
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"mrr" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/neutral/filled/line,
@@ -39030,7 +39135,7 @@
},
/obj/machinery/elevator_control_panel/directional/north{
linked_elevator_id = "tram_upper_center_lift";
- preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
+ preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
},
/obj/effect/turf_decal/trimline/dark_red/warning{
dir = 1
@@ -39610,14 +39715,15 @@
/turf/open/floor/iron,
/area/station/maintenance/tram/right)
"nfZ" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=1";
- location = "QM #5"
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/siding/thinplating_new/dark/corner{
+ dir = 1
},
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"ngg" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden,
/obj/effect/spawner/structure/window/reinforced,
@@ -40578,6 +40684,10 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/catwalk_floor,
/area/station/maintenance/tram/left)
+"nvF" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/station/bitrunning/den)
"nvH" = (
/obj/effect/turf_decal/trimline/neutral/filled/corner{
dir = 4
@@ -41917,18 +42027,16 @@
/turf/open/floor/iron/white,
/area/station/science/lobby)
"nUF" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=2";
- location = "QM #1"
+/obj/effect/turf_decal/box/corners,
+/obj/effect/turf_decal/box/corners{
+ dir = 4
},
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/mob/living/simple_animal/bot/mulebot{
- home_destination = "QM #1";
- suffix = "#1"
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light/directional/north,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"nUM" = (
/obj/effect/turf_decal/siding/wood{
dir = 1
@@ -42083,7 +42191,6 @@
/obj/effect/turf_decal/siding/thinplating{
dir = 4
},
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/cargo/storage)
"nXn" = (
@@ -42998,6 +43105,13 @@
},
/turf/open/floor/engine,
/area/station/engineering/supermatter)
+"ooe" = (
+/obj/machinery/computer/quantum_console{
+ dir = 1
+ },
+/obj/machinery/light/directional/south,
+/turf/open/floor/iron/dark/smooth_corner,
+/area/station/bitrunning/den)
"oog" = (
/obj/machinery/disposal/bin,
/obj/effect/turf_decal/trimline/yellow/filled/line{
@@ -43555,6 +43669,19 @@
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/catwalk_floor,
/area/station/solars/starboard/fore)
+"oAi" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/door/airlock/mining/glass{
+ name = "MULE Storage"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/supply/general,
+/turf/open/floor/iron,
+/area/station/cargo/warehouse)
"oAn" = (
/obj/machinery/airlock_sensor/incinerator_ordmix{
pixel_x = 23;
@@ -43944,7 +44071,7 @@
layer = 3.1;
linked_elevator_id = "tram_xeno_lift";
pixel_y = 2;
- preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
+ preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
},
/turf/closed/wall/r_wall,
/area/station/science/xenobiology)
@@ -44098,6 +44225,15 @@
},
/turf/open/space/openspace,
/area/station/solars/port)
+"oOP" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/station/cargo/warehouse)
"oOT" = (
/obj/structure/table/wood,
/obj/item/food/grown/poppy{
@@ -44770,6 +44906,13 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/dark,
/area/station/security/courtroom)
+"pcI" = (
+/obj/machinery/quantum_server,
+/obj/effect/turf_decal/bot/left,
+/turf/open/floor/iron/dark/smooth_corner{
+ dir = 4
+ },
+/area/station/bitrunning/den)
"pcO" = (
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -45260,18 +45403,19 @@
/turf/open/floor/plating,
/area/station/commons/vacant_room)
"plH" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=2";
- location = "QM #2"
+/obj/effect/turf_decal/box/corners{
+ dir = 8
},
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/mob/living/simple_animal/bot/mulebot{
- home_destination = "QM #2";
- suffix = "#2"
+/obj/effect/turf_decal/box/corners{
+ dir = 1
},
-/turf/open/floor/iron,
-/area/station/cargo/storage)
+/obj/effect/decal/cleanable/oil/streak,
+/obj/structure/sign/poster/random/directional/north,
+/obj/machinery/power/apc/auto_name/directional/west,
+/obj/structure/cable,
+/obj/effect/landmark/bitrunning/station_reward_spawn,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/bitrunning/den)
"plQ" = (
/obj/effect/turf_decal/trimline/red/filled/corner,
/obj/structure/disposalpipe/segment{
@@ -45824,6 +45968,16 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/dark,
/area/station/security/courtroom/holding)
+"puo" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/iron,
+/area/station/cargo/warehouse)
"pur" = (
/obj/effect/turf_decal/trimline/white/line{
dir = 9
@@ -47104,8 +47258,6 @@
dir = 1
},
/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/machinery/light/dim/directional/north,
/turf/open/floor/iron,
/area/station/cargo/warehouse)
"pOQ" = (
@@ -51650,6 +51802,9 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
+/obj/machinery/computer/order_console/bitrunning{
+ dir = 4
+ },
/turf/open/floor/iron,
/area/station/cargo/storage)
"rws" = (
@@ -52041,6 +52196,19 @@
/obj/machinery/airalarm/directional/west,
/turf/open/floor/iron/dark,
/area/station/engineering/supermatter/room)
+"rEX" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=2";
+ location = "QM #2"
+ },
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/mob/living/simple_animal/bot/mulebot{
+ home_destination = "QM #2";
+ suffix = "#2"
+ },
+/turf/open/floor/iron,
+/area/station/cargo/warehouse)
"rFW" = (
/obj/effect/turf_decal/delivery/white,
/obj/structure/holosign/barrier/atmos/tram,
@@ -57052,7 +57220,9 @@
/turf/open/floor/iron/freezer,
/area/station/security/prison/shower)
"tte" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 8
+ },
/turf/open/floor/iron,
/area/station/cargo/storage)
"tth" = (
@@ -60114,7 +60284,7 @@
/obj/structure/industrial_lift/public,
/obj/machinery/elevator_control_panel/directional/east{
linked_elevator_id = "tram_lower_center_lift";
- preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
+ preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
},
/turf/open/floor/plating/elevatorshaft,
/area/station/maintenance/tram/mid)
@@ -61646,7 +61816,7 @@
/obj/structure/industrial_lift/public,
/obj/machinery/elevator_control_panel/directional/south{
linked_elevator_id = "tram_dorm_lift";
- preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
+ preset_destination_names = list("2"="Lower Deck","3"="Upper Deck")
},
/obj/structure/railing,
/turf/open/floor/plating/elevatorshaft,
@@ -65108,6 +65278,16 @@
/obj/structure/sign/calendar/directional/east,
/turf/open/floor/iron/cafeteria,
/area/station/science/breakroom)
+"wdw" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/decal/cleanable/generic,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"wdC" = (
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/plating,
@@ -67187,6 +67367,11 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/station/engineering/atmos/pumproom)
+"wUA" = (
+/obj/machinery/netpod,
+/obj/machinery/airalarm/directional/north,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/station/bitrunning/den)
"wUL" = (
/obj/machinery/status_display/evac/directional/north,
/obj/machinery/fax{
@@ -68863,16 +69048,19 @@
/turf/closed/wall,
/area/station/security/processing)
"xDW" = (
-/obj/machinery/door/airlock/mining/glass{
- name = "MULE Storage"
- },
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/effect/mapping_helpers/airlock/access/all/supply/general,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/door/airlock/mining/glass{
+ name = "Bitrunning Den"
+ },
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
/turf/open/floor/iron,
-/area/station/cargo/storage)
+/area/station/bitrunning/den)
"xDY" = (
/obj/structure/railing{
dir = 8
@@ -69427,6 +69615,17 @@
},
/turf/open/floor/iron,
/area/station/security/checkpoint/supply)
+"xPI" = (
+/obj/effect/turf_decal/trimline/brown/line,
+/obj/effect/turf_decal/stripes,
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 1
+ },
+/obj/structure/extinguisher_cabinet/directional/west,
+/obj/effect/decal/cleanable/oil/streak,
+/obj/effect/landmark/start/bitrunner,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/bitrunning/den)
"xPN" = (
/obj/structure/closet/lasertag/blue,
/obj/effect/turf_decal/tile/blue/full,
@@ -178710,10 +178909,10 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
+euR
+euR
+euR
+euR
cTU
cTU
cTU
@@ -178967,10 +179166,10 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
+euR
+wUA
+xPI
+ooe
cTU
vSI
vSI
@@ -179223,11 +179422,11 @@ aac
aaa
aaa
aaa
-cTU
-cTU
-cTU
-cTU
-cTU
+aaa
+euR
+esr
+cfC
+pcI
cTU
vSI
vSI
@@ -179480,7 +179679,7 @@ aaa
aaa
aaa
aaa
-cTU
+euR
euR
jnL
abN
@@ -179737,9 +179936,9 @@ aac
aaa
aaa
aaa
-cTU
+euR
plH
-jTQ
+wdw
nfZ
cTU
exr
@@ -179994,7 +180193,7 @@ aac
aac
aaa
aaa
-cTU
+euR
nUF
jTQ
mrg
@@ -180251,10 +180450,10 @@ aac
aaa
aaa
cTU
-cTU
-ohS
+euR
+nvF
xDW
-ohS
+nvF
cTU
nnb
pZA
@@ -180512,7 +180711,7 @@ blx
tAJ
lTM
axF
-axF
+fDd
rwo
dij
uax
@@ -180767,11 +180966,11 @@ aaa
akr
tjS
hFV
-gDr
-uax
-uax
-uax
-uax
+haq
+dzw
+dzw
+dzw
+dzw
gUL
foU
dzw
@@ -183334,10 +183533,10 @@ aac
aac
aac
aac
-cTU
-cTU
-cTU
-cTU
+udQ
+udQ
+udQ
+udQ
udQ
mmX
pxD
@@ -183591,10 +183790,10 @@ aac
aac
aac
aac
-aac
-aac
-aaa
-aaa
+udQ
+hSM
+foV
+eGU
udQ
fBJ
pxD
@@ -183848,11 +184047,11 @@ aac
aac
aac
aac
-aac
-aaa
-aaa
-aaa
udQ
+puo
+oOP
+oOP
+oAi
pOL
kXr
aye
@@ -184105,10 +184304,10 @@ aac
aac
aac
aac
-aaa
-aaa
-aaa
-aaa
+udQ
+rEX
+kyw
+fNG
udQ
kSa
cDP
@@ -184362,10 +184561,10 @@ aac
aac
aac
aac
-aac
-aaa
-aaa
-aaa
+udQ
+udQ
+udQ
+udQ
udQ
aWL
tft
diff --git a/_maps/safehouses/README.md b/_maps/safehouses/README.md
new file mode 100644
index 00000000000..8027ea38e21
--- /dev/null
+++ b/_maps/safehouses/README.md
@@ -0,0 +1,17 @@
+# Safe House
+
+## Creating a new safe house
+
+1. Create a new map inside the `_maps\safe_houses` folder using the TGM format.
+2. Create a new dm file inside `modules\bitrunning\virtual_domain\safe_houses` folder..
+4. Place exit and goal landmarks (obj/effect/landmark/bitrunning/..). Generally, 3 exits and 2 goals are ok.
+5. Ideally, leave 3 spaces for gear. This has usually been xy [1x1] [1x2] [1x3]
+
+## Notes
+
+- Safe houses are intended to be 7x6 in size. You're not technically limited to this, but consider maps other maps might be using this size if you want it to be modular.
+- Consider that avatars are not invincible and still require air. If you're making a safe house, it should start with an area that accommodates for this.
+- For compatibility, your safe house should have a route open from the top center xy [3x0] of the map.
+- If you want a custom safehouse for a custom map with no modularity, no problem. Make whatever sizes you want, just ensure there are exit and goal effects placed.
+- Some maps can alter what is spawned into the safehouse by placing objects in the safehouse area. I'm using the left corner, starting from the top, for things like space gear.
+
diff --git a/_maps/safehouses/TEMPLATES/TEMPLATE.dmm b/_maps/safehouses/TEMPLATES/TEMPLATE.dmm
new file mode 100644
index 00000000000..c8e5059f0d0
--- /dev/null
+++ b/_maps/safehouses/TEMPLATES/TEMPLATE.dmm
@@ -0,0 +1,82 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"c" = (
+/obj/effect/mapping_helpers/airlock/access/all,
+/obj/machinery/door/airlock/external/glass,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"p" = (
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"v" = (
+/obj/effect/bitrunning/exit_spawn,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"N" = (
+/obj/effect/bitrunning/goal_turf,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"R" = (
+/turf/closed/wall,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+R
+R
+a
+a
+R
+R
+"}
+(2,1,1) = {"
+a
+p
+p
+p
+p
+R
+"}
+(3,1,1) = {"
+R
+p
+p
+p
+v
+a
+"}
+(4,1,1) = {"
+c
+p
+p
+p
+v
+R
+"}
+(5,1,1) = {"
+R
+p
+p
+p
+v
+a
+"}
+(6,1,1) = {"
+a
+p
+N
+N
+p
+R
+"}
+(7,1,1) = {"
+R
+R
+a
+a
+R
+R
+"}
diff --git a/_maps/safehouses/den.dmm b/_maps/safehouses/den.dmm
new file mode 100644
index 00000000000..235d786d6e9
--- /dev/null
+++ b/_maps/safehouses/den.dmm
@@ -0,0 +1,224 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/structure/chair/office{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/pod,
+/area/virtual_domain/safehouse)
+"c" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light/small/directional/east,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"e" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/effect/spawner/random/food_or_drink/snack{
+ pixel_x = 4;
+ pixel_y = 2
+ },
+/turf/open/floor/pod/dark,
+/area/virtual_domain/safehouse)
+"i" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 1;
+ id = "safehouseshutter"
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"l" = (
+/obj/structure/railing/corner/end{
+ dir = 4
+ },
+/turf/open/floor/pod/dark,
+/area/virtual_domain/safehouse)
+"p" = (
+/turf/open/floor/pod,
+/area/virtual_domain/safehouse)
+"r" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 9
+ },
+/turf/open/floor/pod/dark,
+/area/virtual_domain/safehouse)
+"u" = (
+/obj/structure/railing,
+/obj/effect/turf_decal/siding/dark,
+/obj/structure/sign/poster/contraband/hacking_guide/directional/east,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"z" = (
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 4
+ },
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/pod/light,
+/area/virtual_domain/safehouse)
+"C" = (
+/turf/closed/wall,
+/area/virtual_domain/safehouse)
+"D" = (
+/obj/effect/decal/cleanable/generic,
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 1
+ },
+/turf/open/floor/pod,
+/area/virtual_domain/safehouse)
+"E" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/generic,
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/pod/light,
+/area/virtual_domain/safehouse)
+"G" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 4;
+ id = "safehouseshutter"
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"I" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 5
+ },
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/pod/light,
+/area/virtual_domain/safehouse)
+"J" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 8;
+ id = "safehouseshutter"
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"K" = (
+/obj/effect/spawner/random/vending/colavend,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/pod,
+/area/virtual_domain/safehouse)
+"M" = (
+/turf/open/floor/pod/dark,
+/area/virtual_domain/safehouse)
+"O" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 8
+ },
+/turf/open/floor/pod/dark,
+/area/virtual_domain/safehouse)
+"R" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 4
+ },
+/turf/open/floor/pod/dark,
+/area/virtual_domain/safehouse)
+"U" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/sign/departments/cargo/directional/west,
+/obj/machinery/light/small/directional/west,
+/turf/open/floor/pod,
+/area/virtual_domain/safehouse)
+"W" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "safehouseshutter"
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"X" = (
+/obj/machinery/door/airlock/grunge,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"Y" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/machinery/button/door{
+ pixel_x = 4;
+ pixel_y = 4;
+ id = "safehouseshutter"
+ },
+/obj/effect/spawner/random/food_or_drink/refreshing_beverage{
+ pixel_y = 6;
+ pixel_x = -10
+ },
+/turf/open/floor/pod/dark,
+/area/virtual_domain/safehouse)
+"Z" = (
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 4
+ },
+/turf/open/floor/pod/dark,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+C
+C
+C
+G
+G
+C
+"}
+(2,1,1) = {"
+W
+U
+p
+M
+K
+C
+"}
+(3,1,1) = {"
+C
+r
+O
+O
+E
+i
+"}
+(4,1,1) = {"
+X
+D
+Z
+R
+z
+i
+"}
+(5,1,1) = {"
+C
+M
+l
+e
+I
+i
+"}
+(6,1,1) = {"
+W
+c
+u
+Y
+a
+C
+"}
+(7,1,1) = {"
+C
+C
+C
+J
+J
+C
+"}
diff --git a/_maps/safehouses/dig.dmm b/_maps/safehouses/dig.dmm
new file mode 100644
index 00000000000..7fbbd3e5549
--- /dev/null
+++ b/_maps/safehouses/dig.dmm
@@ -0,0 +1,165 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/effect/turf_decal/sand/plating,
+/obj/effect/turf_decal/siding/yellow/corner,
+/obj/effect/turf_decal/sand/plating,
+/obj/item/flashlight/glowstick{
+ on = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"c" = (
+/obj/effect/turf_decal/siding/yellow/corner{
+ dir = 8
+ },
+/turf/open/misc/asteroid,
+/area/virtual_domain/safehouse)
+"h" = (
+/obj/effect/turf_decal/loading_area,
+/obj/effect/turf_decal/box/corners{
+ dir = 8
+ },
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"i" = (
+/obj/effect/turf_decal/siding/yellow{
+ dir = 8
+ },
+/obj/effect/decal/remains/xeno/larva,
+/turf/open/misc/asteroid,
+/area/virtual_domain/safehouse)
+"l" = (
+/obj/structure/table,
+/obj/item/coin/gold{
+ pixel_x = -6;
+ pixel_y = 2
+ },
+/obj/item/flashlight/lantern{
+ pixel_y = 8;
+ pixel_x = 4;
+ on = 1
+ },
+/turf/open/misc/asteroid,
+/area/virtual_domain/safehouse)
+"o" = (
+/obj/effect/turf_decal/siding/yellow{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/misc/asteroid,
+/area/virtual_domain/safehouse)
+"u" = (
+/obj/effect/turf_decal/siding/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/siding/yellow,
+/obj/effect/decal/cleanable/oil/streak,
+/turf/open/misc/asteroid,
+/area/virtual_domain/safehouse)
+"x" = (
+/obj/effect/turf_decal/sand/plating,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"A" = (
+/turf/closed/wall/rock,
+/area/virtual_domain/safehouse)
+"B" = (
+/turf/open/misc/asteroid,
+/area/virtual_domain/safehouse)
+"H" = (
+/turf/closed/mineral/asteroid,
+/area/virtual_domain/safehouse)
+"I" = (
+/obj/machinery/door/airlock/maintenance/glass,
+/obj/structure/fans/tiny,
+/obj/effect/turf_decal/sand/plating,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"M" = (
+/obj/effect/turf_decal/siding/yellow,
+/obj/effect/decal/remains/xeno,
+/turf/open/misc/asteroid,
+/area/virtual_domain/safehouse)
+"N" = (
+/obj/effect/turf_decal/sand/plating,
+/obj/effect/turf_decal/sand/plating,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"S" = (
+/obj/structure/railing{
+ dir = 4
+ },
+/obj/effect/turf_decal/loading_area,
+/obj/effect/turf_decal/box/corners,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"T" = (
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/misc/asteroid,
+/area/virtual_domain/safehouse)
+"U" = (
+/obj/effect/turf_decal/siding/yellow{
+ dir = 8
+ },
+/turf/open/misc/asteroid,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+H
+H
+A
+A
+H
+H
+"}
+(2,1,1) = {"
+A
+N
+x
+a
+H
+A
+"}
+(3,1,1) = {"
+A
+i
+U
+u
+h
+A
+"}
+(4,1,1) = {"
+I
+B
+B
+M
+S
+A
+"}
+(5,1,1) = {"
+A
+l
+B
+c
+o
+H
+"}
+(6,1,1) = {"
+A
+A
+T
+T
+T
+A
+"}
+(7,1,1) = {"
+H
+A
+H
+H
+A
+A
+"}
diff --git a/_maps/safehouses/ice.dmm b/_maps/safehouses/ice.dmm
new file mode 100644
index 00000000000..a8293f9502a
--- /dev/null
+++ b/_maps/safehouses/ice.dmm
@@ -0,0 +1,254 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/effect/spawner/structure/window/ice,
+/turf/open/floor/plating/snowed,
+/area/virtual_domain/safehouse)
+"c" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 6
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light/small/directional/east,
+/obj/structure/chair/wood{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"f" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating/snowed,
+/area/virtual_domain/safehouse)
+"g" = (
+/obj/effect/spawner/structure/window/ice,
+/obj/structure/barricade/wooden/crude/snow,
+/turf/open/floor/plating/snowed,
+/area/virtual_domain/safehouse)
+"i" = (
+/turf/closed/wall/ice,
+/area/virtual_domain/safehouse)
+"m" = (
+/obj/effect/turf_decal/weather/snow/corner,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/turf_decal/trimline/dark_blue/line{
+ dir = 1
+ },
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/pod,
+/area/virtual_domain/safehouse)
+"n" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/rack,
+/obj/item/grown/log,
+/obj/item/grown/log,
+/obj/item/grown/log,
+/obj/item/hatchet/wooden,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"o" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"p" = (
+/obj/structure/railing,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"u" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"v" = (
+/obj/effect/turf_decal/weather/snow/corner,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/turf_decal/trimline/dark_blue/line{
+ dir = 5
+ },
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/pod,
+/area/virtual_domain/safehouse)
+"x" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/vending/coffee,
+/turf/open/floor/plating/snowed,
+/area/virtual_domain/safehouse)
+"z" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/decal/cleanable/generic,
+/turf/open/floor/plating/snowed,
+/area/virtual_domain/safehouse)
+"A" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 4
+ },
+/obj/structure/railing/corner/end{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating/snowed,
+/area/virtual_domain/safehouse)
+"B" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating/snowed,
+/area/virtual_domain/safehouse)
+"C" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 1
+ },
+/obj/structure/table/wood,
+/obj/item/reagent_containers/cup/glass/coffee{
+ pixel_x = 7;
+ pixel_y = 13
+ },
+/obj/item/reagent_containers/cup/glass/coffee/no_lid{
+ pixel_x = -4;
+ pixel_y = 14
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"D" = (
+/obj/effect/turf_decal/weather/snow/corner,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/decal/cleanable/generic,
+/obj/effect/turf_decal/trimline/dark_blue/line{
+ dir = 9
+ },
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/pod,
+/area/virtual_domain/safehouse)
+"I" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"L" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light/small/directional/west,
+/obj/machinery/smartfridge/drying_rack,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"O" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/door/airlock/freezer,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating/snowed,
+/area/virtual_domain/safehouse)
+"S" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/table/wood,
+/obj/item/trash/chips{
+ pixel_x = 8;
+ pixel_y = 15
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"W" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/closet/crate/internals,
+/obj/item/tank/internals/oxygen,
+/obj/item/tank/internals/oxygen,
+/obj/item/tank/internals/oxygen,
+/obj/item/clothing/mask/breath,
+/obj/item/clothing/mask/breath,
+/obj/item/clothing/mask/breath,
+/obj/item/clothing/suit/hooded/wintercoat,
+/obj/item/clothing/suit/hooded/wintercoat,
+/obj/item/clothing/suit/hooded/wintercoat,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"Z" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 10
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+i
+i
+g
+a
+i
+i
+"}
+(2,1,1) = {"
+i
+L
+n
+W
+Z
+i
+"}
+(3,1,1) = {"
+a
+x
+u
+I
+D
+i
+"}
+(4,1,1) = {"
+O
+z
+B
+I
+m
+i
+"}
+(5,1,1) = {"
+a
+f
+A
+C
+v
+i
+"}
+(6,1,1) = {"
+i
+o
+p
+S
+c
+i
+"}
+(7,1,1) = {"
+i
+i
+g
+g
+i
+i
+"}
diff --git a/_maps/safehouses/lavaland_boss.dmm b/_maps/safehouses/lavaland_boss.dmm
new file mode 100644
index 00000000000..7482846e61f
--- /dev/null
+++ b/_maps/safehouses/lavaland_boss.dmm
@@ -0,0 +1,243 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/iron/dark/smooth_edge{
+ dir = 1
+ },
+/area/virtual_domain/safehouse)
+"f" = (
+/turf/closed/wall,
+/area/virtual_domain/safehouse)
+"p" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 5
+ },
+/obj/structure/tank_dispenser/oxygen,
+/turf/open/floor/iron/dark,
+/area/virtual_domain/safehouse)
+"v" = (
+/obj/structure/table,
+/obj/item/borg/upgrade/modkit/damage{
+ pixel_x = 8;
+ pixel_y = 8
+ },
+/obj/item/borg/upgrade/modkit/damage{
+ pixel_y = 4;
+ pixel_x = 8
+ },
+/obj/item/borg/upgrade/modkit/damage{
+ pixel_x = 8
+ },
+/obj/item/borg/upgrade/modkit/range{
+ pixel_y = 8
+ },
+/obj/item/borg/upgrade/modkit/range{
+ pixel_y = 4
+ },
+/obj/item/borg/upgrade/modkit/range,
+/obj/item/borg/upgrade/modkit/cooldown{
+ pixel_x = -8;
+ pixel_y = 8
+ },
+/obj/item/borg/upgrade/modkit/cooldown{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/borg/upgrade/modkit/cooldown{
+ pixel_x = -8
+ },
+/obj/item/reagent_containers/hypospray/medipen/survival/luxury{
+ pixel_x = 6;
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/hypospray/medipen/survival/luxury{
+ pixel_x = 6
+ },
+/turf/open/floor/iron/dark/textured_large,
+/area/virtual_domain/safehouse)
+"w" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/obj/machinery/light/directional/east,
+/obj/structure/railing,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"A" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/structure/extinguisher_cabinet/directional/north,
+/turf/open/floor/iron/dark/smooth_edge,
+/area/virtual_domain/safehouse)
+"B" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
+ },
+/obj/structure/table,
+/obj/item/flashlight/lantern{
+ pixel_x = 8;
+ pixel_y = null
+ },
+/obj/item/flashlight/lantern{
+ pixel_y = 4
+ },
+/obj/item/flashlight/lantern{
+ pixel_x = -8;
+ pixel_y = 8
+ },
+/obj/item/clothing/glasses/meson/night,
+/obj/item/clothing/glasses/meson/night,
+/obj/item/clothing/glasses/meson/night,
+/turf/open/floor/iron/dark,
+/area/virtual_domain/safehouse)
+"C" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/structure/closet,
+/obj/item/gun/ballistic/rocketlauncher/unrestricted,
+/obj/item/ammo_casing/rocket,
+/obj/item/ammo_casing/rocket,
+/obj/item/ammo_casing/rocket,
+/obj/item/energy_katana,
+/obj/item/ammo_box/magazine/m7mm,
+/turf/open/floor/iron/dark/smooth_edge{
+ dir = 8
+ },
+/area/virtual_domain/safehouse)
+"H" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Mining External Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all,
+/obj/structure/fans/tiny,
+/turf/open/floor/iron/dark/textured_large,
+/area/virtual_domain/safehouse)
+"K" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/turf/open/floor/iron/dark/smooth_edge,
+/area/virtual_domain/safehouse)
+"O" = (
+/obj/item/gun/energy/recharge/kinetic_accelerator{
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/gun/energy/recharge/kinetic_accelerator{
+ pixel_x = -1;
+ pixel_y = 1
+ },
+/obj/item/gun/energy/recharge/kinetic_accelerator{
+ pixel_x = 4;
+ pixel_y = -4
+ },
+/obj/structure/closet,
+/obj/item/kinetic_crusher,
+/obj/item/kinetic_crusher,
+/turf/open/floor/iron/dark/textured_large,
+/area/virtual_domain/safehouse)
+"P" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"S" = (
+/turf/open/floor/iron/dark/textured_large,
+/area/virtual_domain/safehouse)
+"T" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
+ },
+/obj/structure/sign/departments/cargo/directional/south,
+/obj/structure/closet,
+/obj/item/gun/ballistic/automatic/l6_saw/unrestricted,
+/obj/item/ammo_box/magazine/sniper_rounds,
+/obj/item/gun/ballistic/rifle/sniper_rifle,
+/turf/open/floor/iron/dark,
+/area/virtual_domain/safehouse)
+"X" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/suit_storage_unit/mining,
+/turf/open/floor/iron/dark/smooth_edge{
+ dir = 4
+ },
+/area/virtual_domain/safehouse)
+"Y" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/suit_storage_unit/mining,
+/obj/machinery/light/directional/west,
+/turf/open/floor/iron/dark/smooth_edge{
+ dir = 4
+ },
+/area/virtual_domain/safehouse)
+"Z" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/obj/machinery/suit_storage_unit/mining,
+/turf/open/floor/iron/dark,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+f
+f
+f
+P
+P
+f
+"}
+(2,1,1) = {"
+P
+Z
+Y
+X
+B
+f
+"}
+(3,1,1) = {"
+f
+A
+S
+S
+a
+P
+"}
+(4,1,1) = {"
+H
+K
+O
+v
+a
+P
+"}
+(5,1,1) = {"
+f
+A
+S
+S
+a
+P
+"}
+(6,1,1) = {"
+P
+p
+w
+C
+T
+f
+"}
+(7,1,1) = {"
+f
+f
+f
+P
+P
+f
+"}
diff --git a/_maps/safehouses/mine.dmm b/_maps/safehouses/mine.dmm
new file mode 100644
index 00000000000..551e2ca0c00
--- /dev/null
+++ b/_maps/safehouses/mine.dmm
@@ -0,0 +1,164 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/iron/dark/smooth_edge{
+ dir = 1
+ },
+/area/virtual_domain/safehouse)
+"f" = (
+/turf/closed/wall,
+/area/virtual_domain/safehouse)
+"p" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 5
+ },
+/obj/structure/tank_dispenser/oxygen,
+/turf/open/floor/iron/dark,
+/area/virtual_domain/safehouse)
+"w" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/obj/machinery/light/directional/east,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"B" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
+ },
+/obj/structure/table,
+/obj/item/flashlight/lantern{
+ pixel_x = 8;
+ pixel_y = null
+ },
+/obj/item/flashlight/lantern{
+ pixel_y = 4
+ },
+/obj/item/flashlight/lantern{
+ pixel_x = -8;
+ pixel_y = 8
+ },
+/turf/open/floor/iron/dark,
+/area/virtual_domain/safehouse)
+"C" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/obj/structure/railing,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"H" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Mining External Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all,
+/obj/structure/fans/tiny,
+/turf/open/floor/iron/dark/textured_large,
+/area/virtual_domain/safehouse)
+"K" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/turf/open/floor/iron/dark/smooth_edge,
+/area/virtual_domain/safehouse)
+"P" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"S" = (
+/turf/open/floor/iron/dark/textured_large,
+/area/virtual_domain/safehouse)
+"T" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
+ },
+/obj/item/kirbyplants/random,
+/obj/structure/sign/departments/cargo/directional/south,
+/turf/open/floor/iron/dark,
+/area/virtual_domain/safehouse)
+"X" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/suit_storage_unit/mining,
+/turf/open/floor/iron/dark/smooth_edge{
+ dir = 4
+ },
+/area/virtual_domain/safehouse)
+"Y" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/suit_storage_unit/mining,
+/obj/machinery/light/directional/west,
+/turf/open/floor/iron/dark/smooth_edge{
+ dir = 4
+ },
+/area/virtual_domain/safehouse)
+"Z" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/obj/machinery/suit_storage_unit/mining,
+/turf/open/floor/iron/dark,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+f
+f
+f
+P
+P
+f
+"}
+(2,1,1) = {"
+P
+Z
+Y
+X
+B
+f
+"}
+(3,1,1) = {"
+f
+K
+S
+S
+a
+P
+"}
+(4,1,1) = {"
+H
+K
+S
+S
+a
+P
+"}
+(5,1,1) = {"
+f
+K
+S
+S
+a
+P
+"}
+(6,1,1) = {"
+P
+p
+w
+C
+T
+f
+"}
+(7,1,1) = {"
+f
+f
+f
+P
+P
+f
+"}
diff --git a/_maps/safehouses/shuttle.dmm b/_maps/safehouses/shuttle.dmm
new file mode 100644
index 00000000000..92228c95bd3
--- /dev/null
+++ b/_maps/safehouses/shuttle.dmm
@@ -0,0 +1,228 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/closed/wall/mineral/titanium,
+/area/virtual_domain/safehouse)
+"e" = (
+/obj/effect/spawner/structure/window/reinforced/shuttle,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"f" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"g" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area,
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"i" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"k" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/structure/table/reinforced,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/storage/toolbox/emergency,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"l" = (
+/obj/machinery/light/small/directional/south,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area,
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"q" = (
+/obj/effect/turf_decal/stripes/end,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"r" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"t" = (
+/obj/machinery/power/shuttle_engine/propulsion/burst{
+ dir = 8
+ },
+/obj/structure/window/reinforced/spawner/directional/east,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/virtual_domain/safehouse)
+"u" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"x" = (
+/obj/effect/turf_decal/tile/neutral/half/contrasted,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light/small/directional/north,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"y" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/airlock/shuttle/glass,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/sand/volcanic,
+/obj/structure/fans/tiny,
+/turf/open/floor/iron/white,
+/area/virtual_domain/safehouse)
+"A" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/computer{
+ dir = 8;
+ name = "shuttle console";
+ icon_screen = "shuttle"
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"E" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/effect/decal/cleanable/generic,
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"G" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/machinery/light/small/directional/south,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"H" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"I" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/table/reinforced,
+/obj/item/tank/internals/emergency_oxygen{
+ pixel_x = 3
+ },
+/obj/item/clothing/mask/gas,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"L" = (
+/obj/effect/turf_decal/stripes/end{
+ dir = 1
+ },
+/obj/effect/turf_decal/sand/volcanic,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"M" = (
+/obj/effect/turf_decal/tile/neutral/half/contrasted,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light/small/directional/north,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"T" = (
+/obj/effect/turf_decal/tile/neutral/half/contrasted{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"X" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+a
+t
+e
+e
+t
+a
+"}
+(2,1,1) = {"
+e
+L
+i
+q
+l
+a
+"}
+(3,1,1) = {"
+a
+x
+r
+u
+g
+e
+"}
+(4,1,1) = {"
+y
+f
+r
+H
+E
+a
+"}
+(5,1,1) = {"
+a
+M
+X
+H
+T
+e
+"}
+(6,1,1) = {"
+e
+k
+A
+I
+G
+a
+"}
+(7,1,1) = {"
+a
+a
+e
+e
+a
+a
+"}
diff --git a/_maps/safehouses/shuttle_space.dmm b/_maps/safehouses/shuttle_space.dmm
new file mode 100644
index 00000000000..a5afaa475c6
--- /dev/null
+++ b/_maps/safehouses/shuttle_space.dmm
@@ -0,0 +1,231 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/effect/spawner/structure/window/reinforced/shuttle,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"b" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"c" = (
+/obj/effect/turf_decal/tile/neutral/half/contrasted,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light/small/directional/north,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"i" = (
+/turf/closed/wall/mineral/titanium/overspace,
+/area/virtual_domain/safehouse)
+"l" = (
+/obj/effect/turf_decal/tile/neutral/half/contrasted{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"n" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/computer{
+ dir = 8;
+ name = "shuttle console";
+ icon_screen = "shuttle"
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"o" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"q" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/structure/table/reinforced,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/storage/toolbox/emergency,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"r" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area,
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"z" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"A" = (
+/obj/effect/turf_decal/stripes/end{
+ dir = 1
+ },
+/obj/effect/turf_decal/sand/volcanic,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"B" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/machinery/light/small/directional/south,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"D" = (
+/obj/machinery/light/small/directional/south,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area,
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"E" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/airlock/shuttle/glass,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/sand/volcanic,
+/obj/structure/fans/tiny,
+/turf/open/floor/iron/white,
+/area/virtual_domain/safehouse)
+"G" = (
+/turf/closed/wall/mineral/titanium,
+/area/virtual_domain/safehouse)
+"H" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"I" = (
+/obj/effect/turf_decal/tile/neutral/half/contrasted,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light/small/directional/north,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"L" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/table/reinforced,
+/obj/item/tank/internals/emergency_oxygen{
+ pixel_x = 3
+ },
+/obj/item/clothing/mask/gas,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"N" = (
+/obj/machinery/power/shuttle_engine/propulsion/burst{
+ dir = 8
+ },
+/obj/structure/window/reinforced/spawner/directional/east,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/virtual_domain/safehouse)
+"O" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"U" = (
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"W" = (
+/obj/effect/turf_decal/stripes/end,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+"Y" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/effect/decal/cleanable/generic,
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/iron,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+i
+N
+a
+a
+N
+i
+"}
+(2,1,1) = {"
+a
+A
+o
+W
+D
+G
+"}
+(3,1,1) = {"
+G
+I
+H
+U
+r
+a
+"}
+(4,1,1) = {"
+E
+z
+H
+b
+Y
+G
+"}
+(5,1,1) = {"
+G
+c
+O
+b
+l
+a
+"}
+(6,1,1) = {"
+a
+q
+n
+L
+B
+G
+"}
+(7,1,1) = {"
+i
+G
+a
+a
+G
+i
+"}
diff --git a/_maps/safehouses/test_only_safehouse.dmm b/_maps/safehouses/test_only_safehouse.dmm
new file mode 100644
index 00000000000..c23f8c4a22b
--- /dev/null
+++ b/_maps/safehouses/test_only_safehouse.dmm
@@ -0,0 +1,29 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"d" = (
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"u" = (
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+u
+d
+"}
+(2,1,1) = {"
+u
+d
+"}
+(3,1,1) = {"
+u
+d
+"}
+(4,1,1) = {"
+u
+a
+"}
diff --git a/_maps/safehouses/wood.dmm b/_maps/safehouses/wood.dmm
new file mode 100644
index 00000000000..0bb6b273fce
--- /dev/null
+++ b/_maps/safehouses/wood.dmm
@@ -0,0 +1,120 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/open/indestructible/hotelwood,
+/area/virtual_domain/safehouse)
+"i" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"o" = (
+/turf/open/floor/carpet/green,
+/area/virtual_domain/safehouse)
+"p" = (
+/obj/item/kirbyplants/random/fullysynthetic,
+/turf/open/indestructible/hotelwood,
+/area/virtual_domain/safehouse)
+"s" = (
+/obj/machinery/light/small/directional/east,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"v" = (
+/obj/machinery/light/small/directional/east,
+/obj/structure/table/wood,
+/obj/item/newspaper,
+/turf/open/indestructible/hotelwood,
+/area/virtual_domain/safehouse)
+"x" = (
+/obj/structure/railing/corner/end{
+ dir = 4
+ },
+/turf/open/floor/carpet/green,
+/area/virtual_domain/safehouse)
+"z" = (
+/obj/structure/sign/poster/random/directional/east,
+/turf/open/indestructible/hotelwood,
+/area/virtual_domain/safehouse)
+"G" = (
+/turf/closed/wall/mineral/wood,
+/area/virtual_domain/safehouse)
+"J" = (
+/obj/structure/railing,
+/obj/effect/landmark/bitrunning/cache_goal_turf,
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/turf/open/floor/bitrunning_transport,
+/area/virtual_domain/safehouse)
+"T" = (
+/obj/effect/landmark/bitrunning/hololadder_spawn,
+/turf/open/indestructible/hotelwood,
+/area/virtual_domain/safehouse)
+"X" = (
+/obj/machinery/door/airlock/wood/glass,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/virtual_domain/safehouse)
+"Z" = (
+/obj/machinery/light/small/directional/west,
+/turf/open/indestructible/hotelwood,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+G
+G
+i
+G
+G
+G
+"}
+(2,1,1) = {"
+i
+Z
+a
+a
+Z
+i
+"}
+(3,1,1) = {"
+G
+p
+o
+o
+T
+G
+"}
+(4,1,1) = {"
+X
+a
+o
+o
+T
+G
+"}
+(5,1,1) = {"
+G
+a
+x
+o
+T
+G
+"}
+(6,1,1) = {"
+i
+s
+J
+z
+v
+i
+"}
+(7,1,1) = {"
+G
+G
+i
+G
+G
+G
+"}
diff --git a/_maps/virtual_domains/README.md b/_maps/virtual_domains/README.md
new file mode 100644
index 00000000000..a02d43e1575
--- /dev/null
+++ b/_maps/virtual_domains/README.md
@@ -0,0 +1,32 @@
+# Making new virtual domains
+
+## From scratch
+
+1. Create a new map using TGM format. It can be any size, but please, consider limiting to 75x75 max.
+2. Ensure that the map has ONE tile marked with the safehouse bottom left landmark. If you're using modular safehouses, it will need to be a 7x6 area.
+4. Provide a way for players to enter your new map via the north door, which is 4th tile over.
+5. Enclose your area with a single wall binary closed wall.
+
+## From an existing map
+
+1. Create a new map using the existing map's size - give yourself enough room to enclose it with a binary wall. There's no need for any space outside of it, so ensure that it fits and is enclosed, nothing outside of this.
+2. Copy and paste the existing map into it.
+3. Find an accessible area for a safehouse, 7x6 - or with a custom, just ensure the necessary landmarks are placed.
+4. Place a bottom left safehouse landmark somewhere on the map to load the safehouse.
+
+## BOTH.
+1. You need to have one (1) way that the encrypted cache can spawn. This can be from a mob drop, a landmark (place a few, it'll pick one), or a signable landmark if you have a points system.
+2. Make note of the size of the map. Make sure this is in the dm file.
+3. Create the dm file that defines the map qualities. Examples are in the bitrunning file.
+
+### Notes
+
+You shouldn't need to fully enclose your map in 15 tiles of binary filler. Using one solid wall should do the trick.
+
+Adding some open tile padding around the safehouse is a good touch. About 7 tiles West/East for the visual effect of a larger map.
+
+If you want to add prep gear, you can do so within the safehouse's area as long you don't overlap with goal turfs or exit spawners. The top left corner is a good spot for this, with respect for the walls, therefore [1, 1], [1, 2], [1, 3]
+
+You can also create safehouses if you find yourself needing the same gear over and over again. There is a readme for that as well.
+
+Boss zones should give players pretty ample space, I've been using a 23x23 minimum area.
diff --git a/_maps/virtual_domains/ash_drake.dmm b/_maps/virtual_domains/ash_drake.dmm
new file mode 100644
index 00000000000..50fbac8696a
--- /dev/null
+++ b/_maps/virtual_domains/ash_drake.dmm
@@ -0,0 +1,1750 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"c" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"e" = (
+/obj/structure/marker_beacon/cerulean,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"f" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"g" = (
+/obj/structure/marker_beacon/lime,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"h" = (
+/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)
+"i" = (
+/obj/structure/marker_beacon/jade,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"j" = (
+/obj/structure/marker_beacon/teal,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"l" = (
+/obj/structure/marker_beacon/bronze,
+/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,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"s" = (
+/turf/closed/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"u" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"v" = (
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"G" = (
+/obj/structure/marker_beacon/purple,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"J" = (
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"L" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"P" = (
+/obj/structure/marker_beacon/fuchsia,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Z" = (
+/obj/effect/mob_spawn/corpse/human/miner,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+
+(1,1,1) = {"
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+u
+"}
+(2,1,1) = {"
+v
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+v
+"}
+(3,1,1) = {"
+v
+s
+s
+s
+s
+J
+J
+s
+s
+J
+J
+s
+s
+J
+J
+J
+J
+s
+s
+s
+J
+J
+J
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+J
+J
+s
+s
+s
+J
+J
+s
+s
+J
+J
+s
+v
+"}
+(4,1,1) = {"
+v
+s
+s
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+s
+v
+"}
+(5,1,1) = {"
+v
+s
+s
+J
+a
+J
+J
+J
+J
+a
+J
+J
+J
+J
+a
+a
+J
+J
+J
+J
+J
+a
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+s
+s
+v
+"}
+(6,1,1) = {"
+v
+s
+s
+J
+a
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+a
+a
+a
+a
+a
+J
+J
+J
+a
+a
+J
+J
+J
+a
+a
+J
+a
+J
+a
+a
+J
+J
+J
+s
+s
+v
+"}
+(7,1,1) = {"
+v
+s
+s
+J
+J
+J
+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
+J
+J
+J
+s
+v
+"}
+(8,1,1) = {"
+v
+s
+s
+J
+J
+J
+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
+J
+J
+s
+s
+v
+"}
+(9,1,1) = {"
+v
+s
+J
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+i
+a
+a
+a
+a
+a
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+J
+s
+v
+"}
+(10,1,1) = {"
+v
+s
+J
+J
+J
+a
+a
+a
+a
+a
+a
+G
+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
+J
+J
+s
+v
+"}
+(11,1,1) = {"
+v
+s
+s
+J
+J
+J
+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
+J
+J
+s
+v
+"}
+(12,1,1) = {"
+v
+s
+s
+J
+J
+J
+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
+J
+J
+J
+s
+v
+"}
+(13,1,1) = {"
+v
+s
+s
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+g
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+J
+s
+v
+"}
+(14,1,1) = {"
+v
+s
+s
+J
+J
+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
+J
+J
+s
+v
+"}
+(15,1,1) = {"
+v
+s
+J
+J
+J
+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
+h
+c
+c
+c
+c
+c
+L
+a
+a
+J
+J
+s
+v
+"}
+(16,1,1) = {"
+v
+s
+J
+J
+J
+J
+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
+c
+c
+c
+c
+c
+c
+a
+a
+J
+J
+s
+v
+"}
+(17,1,1) = {"
+v
+s
+s
+J
+J
+J
+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
+l
+a
+a
+c
+c
+c
+c
+c
+c
+a
+a
+J
+J
+s
+v
+"}
+(18,1,1) = {"
+v
+s
+s
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+q
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+c
+c
+c
+c
+c
+a
+J
+J
+s
+s
+v
+"}
+(19,1,1) = {"
+v
+s
+J
+J
+J
+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
+c
+c
+c
+c
+c
+c
+a
+a
+J
+J
+s
+v
+"}
+(20,1,1) = {"
+v
+s
+J
+J
+J
+J
+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
+c
+c
+c
+c
+c
+c
+a
+a
+J
+J
+s
+v
+"}
+(21,1,1) = {"
+v
+s
+s
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+e
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+h
+c
+c
+c
+c
+c
+f
+a
+a
+J
+s
+s
+v
+"}
+(22,1,1) = {"
+v
+s
+s
+J
+J
+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
+J
+s
+s
+v
+"}
+(23,1,1) = {"
+v
+s
+J
+J
+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
+J
+s
+s
+v
+"}
+(24,1,1) = {"
+v
+s
+J
+J
+a
+a
+a
+a
+j
+a
+a
+a
+a
+a
+P
+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
+J
+J
+s
+v
+"}
+(25,1,1) = {"
+v
+s
+s
+J
+J
+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
+J
+J
+J
+s
+v
+"}
+(26,1,1) = {"
+v
+s
+s
+J
+J
+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
+J
+J
+s
+v
+"}
+(27,1,1) = {"
+v
+s
+s
+J
+J
+J
+a
+a
+a
+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
+j
+a
+a
+a
+a
+a
+a
+a
+J
+J
+s
+v
+"}
+(28,1,1) = {"
+v
+s
+J
+J
+J
+J
+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
+J
+J
+J
+s
+v
+"}
+(29,1,1) = {"
+v
+s
+J
+J
+J
+J
+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
+J
+J
+s
+s
+v
+"}
+(30,1,1) = {"
+v
+s
+s
+J
+J
+J
+J
+a
+a
+J
+J
+J
+a
+a
+a
+a
+J
+J
+J
+a
+a
+a
+J
+J
+J
+a
+a
+a
+J
+J
+a
+a
+a
+a
+a
+a
+J
+J
+a
+a
+a
+J
+J
+s
+s
+v
+"}
+(31,1,1) = {"
+v
+s
+s
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+a
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+a
+a
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+s
+v
+"}
+(32,1,1) = {"
+v
+s
+s
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+s
+v
+"}
+(33,1,1) = {"
+v
+s
+s
+s
+s
+s
+J
+J
+s
+s
+s
+s
+J
+J
+s
+s
+s
+s
+s
+s
+J
+J
+s
+s
+s
+s
+J
+J
+s
+s
+s
+s
+J
+J
+J
+s
+s
+s
+s
+s
+s
+J
+J
+J
+s
+v
+"}
+(34,1,1) = {"
+v
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+v
+"}
+(35,1,1) = {"
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+"}
diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm
new file mode 100644
index 00000000000..9c4289ec6cc
--- /dev/null
+++ b/_maps/virtual_domains/beach_bar.dmm
@@ -0,0 +1,3272 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"ab" = (
+/obj/machinery/vending/cigarette/beach,
+/obj/effect/turf_decal/sand,
+/obj/structure/sign/poster/contraband/have_a_puff/directional/west,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"af" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/structure/chair/stool/bar/directional/south,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"ag" = (
+/turf/open/floor/carpet/red,
+/area/virtual_domain/powered)
+"as" = (
+/obj/structure/closet/crate/bin,
+/obj/item/tank/internals/emergency_oxygen,
+/obj/item/trash/candy,
+/obj/item/toy/talking/owl,
+/obj/effect/turf_decal/sand,
+/obj/machinery/light/directional/west,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"aw" = (
+/obj/machinery/grill,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"aE" = (
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"aZ" = (
+/obj/machinery/light/small/directional/east,
+/obj/structure/closet/crate{
+ name = "fuel crate"
+ },
+/obj/item/stack/sheet/mineral/coal/ten,
+/obj/item/stack/sheet/mineral/coal/ten,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"bf" = (
+/mob/living/basic/crab{
+ name = "Jonny"
+ },
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"bm" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 10
+ },
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"bC" = (
+/obj/effect/turf_decal/sand,
+/mob/living/basic/crab{
+ name = "James"
+ },
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"bM" = (
+/mob/living/basic/crab{
+ name = "Jon"
+ },
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"bQ" = (
+/obj/structure/fluff/beach_umbrella/cap,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"bS" = (
+/obj/machinery/chem_master/condimaster{
+ name = "CondiMaster Neo";
+ pixel_x = -4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"cb" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/pill/lsd,
+/obj/item/reagent_containers/pill/lsd,
+/obj/item/reagent_containers/pill/lsd,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"cv" = (
+/turf/open/floor/carpet/royalblue,
+/area/virtual_domain/powered)
+"cz" = (
+/obj/effect/turf_decal/sand,
+/obj/machinery/jukebox,
+/obj/item/coin/gold,
+/turf/open/floor/sepia,
+/area/virtual_domain/powered)
+"cG" = (
+/obj/structure/flora/bush/sparsegrass/style_random,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"cK" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"db" = (
+/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/reagent_containers/cup/glass/bottle/beer/light,
+/obj/item/vending_refill/cigarette,
+/obj/item/vending_refill/boozeomat,
+/obj/structure/closet/secure_closet{
+ icon_state = "cabinet";
+ name = "booze storage";
+ req_access = list("bar")
+ },
+/obj/item/storage/backpack/duffelbag,
+/obj/item/etherealballdeployer,
+/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/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/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/reagent_containers/cup/glass/bottle/beer/light,
+/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,
+/obj/item/reagent_containers/cup/glass/colocup,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"di" = (
+/obj/machinery/vending/boozeomat,
+/obj/effect/mapping_helpers/atom_injector/obj_flag{
+ inject_flags = 1;
+ target_type = /obj/machinery/vending/boozeomat
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"dj" = (
+/turf/open/misc/beach/coast{
+ dir = 1
+ },
+/area/virtual_domain/powered)
+"dx" = (
+/obj/effect/turf_decal/sand,
+/obj/effect/turf_decal/stripes/asteroid/line{
+ dir = 8
+ },
+/turf/open/floor/sepia,
+/area/virtual_domain/powered)
+"dG" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/virtual_domain/powered)
+"dH" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"dI" = (
+/obj/machinery/light/directional/south,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"dZ" = (
+/obj/structure/bookcase/random/reference,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"ed" = (
+/obj/machinery/atmospherics/components/tank/air{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"er" = (
+/obj/structure/noticeboard/staff,
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"fc" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/pill/happy,
+/obj/item/toy/figure/bartender{
+ pixel_x = -8;
+ pixel_y = -1
+ },
+/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain{
+ pixel_y = 8;
+ pixel_x = 5
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"fr" = (
+/obj/item/melee/skateboard/hoverboard,
+/obj/machinery/light/directional/west,
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"fF" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 1
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"gh" = (
+/obj/structure/flora/bush/stalky/style_random,
+/obj/structure/flora/bush/sparsegrass/style_random,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"gl" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"gJ" = (
+/obj/structure/railing{
+ dir = 8
+ },
+/turf/open/misc/beach/coast{
+ dir = 4
+ },
+/area/virtual_domain/powered)
+"hk" = (
+/obj/structure/reagent_dispensers/watertank,
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"hE" = (
+/obj/structure/sign/departments/restroom/directional/east,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"hG" = (
+/obj/machinery/door/airlock/sandstone{
+ name = "Surfer Shack 1"
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"hI" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"hU" = (
+/turf/closed/mineral/random/volcanic,
+/area/virtual_domain/powered)
+"iz" = (
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"iL" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"iR" = (
+/obj/structure/table,
+/obj/item/book/manual/wiki/barman_recipes,
+/obj/item/reagent_containers/cup/glass/shaker,
+/obj/item/reagent_containers/cup/rag,
+/obj/machinery/light/small/directional/west,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"jc" = (
+/turf/open/floor/iron/stairs/right,
+/area/virtual_domain/powered)
+"jg" = (
+/obj/machinery/vending/hydronutrients,
+/turf/open/floor/iron/grimy,
+/area/virtual_domain/powered)
+"jl" = (
+/obj/structure/flora/rock/pile/jungle/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"jy" = (
+/obj/effect/turf_decal/sand{
+ density = 1
+ },
+/obj/effect/decal/fakelattice,
+/turf/open/floor/pod/light{
+ density = 1
+ },
+/area/virtual_domain/powered)
+"jW" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"ke" = (
+/obj/structure/marker_beacon/bronze,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"kn" = (
+/obj/effect/turf_decal/sand,
+/obj/effect/turf_decal/stripes/asteroid/line{
+ dir = 8
+ },
+/obj/structure/chair/stool/bar/directional/west,
+/turf/open/floor/sepia,
+/area/virtual_domain/powered)
+"kv" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"kG" = (
+/obj/structure/table,
+/obj/machinery/reagentgrinder,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"kK" = (
+/obj/structure/mirror/directional/west,
+/obj/structure/sink/kitchen/directional/south,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"kM" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/structure/chair/stool/bar/directional/south,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"kT" = (
+/obj/structure/chair/stool/bar/directional/south,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"lq" = (
+/obj/item/melee/skateboard/hoverboard,
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"lB" = (
+/obj/item/toy/seashell,
+/obj/effect/turf_decal/sand,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"lS" = (
+/turf/open/floor/light/colour_cycle/dancefloor_a,
+/area/virtual_domain/powered)
+"ml" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"mq" = (
+/obj/structure/closet/secure_closet/freezer/kitchen/all_access,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"mG" = (
+/obj/structure/easel,
+/obj/item/canvas/twentythree_twentythree,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"mP" = (
+/turf/open/misc/beach/coast/corner{
+ dir = 1
+ },
+/area/virtual_domain/powered)
+"mX" = (
+/obj/structure/closet/secure_closet/freezer/meat/all_access,
+/obj/item/food/meat/rawbacon,
+/obj/item/food/meat/rawbacon,
+/obj/item/food/meat/rawcutlet,
+/obj/item/food/meat/rawcutlet,
+/obj/item/food/meat/slab/rawcrab,
+/obj/item/food/meat/slab/rawcrab,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"nP" = (
+/obj/item/stack/sheet/iron/fifty,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/burnt_floor,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"oE" = (
+/obj/structure/railing/corner{
+ dir = 1
+ },
+/obj/machinery/light/directional/south,
+/turf/open/misc/beach/coast/corner{
+ dir = 8
+ },
+/area/virtual_domain/powered)
+"oP" = (
+/obj/structure/table/wood,
+/obj/machinery/reagentgrinder,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"pr" = (
+/turf/template_noop,
+/area/template_noop)
+"pC" = (
+/obj/machinery/computer/arcade/battle,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"pT" = (
+/obj/effect/mapping_helpers/broken_floor,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"pZ" = (
+/obj/machinery/light/directional/south,
+/turf/open/misc/beach/coast{
+ dir = 1
+ },
+/area/virtual_domain/powered)
+"qc" = (
+/obj/structure/extinguisher_cabinet/directional/south,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"qg" = (
+/obj/structure/sign/poster/contraband/space_up/directional/west,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"qR" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/effect/spawner/structure/window,
+/obj/structure/curtain,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"qW" = (
+/obj/item/melee/skateboard/hoverboard,
+/mob/living/basic/chicken{
+ name = "Chicken Joe"
+ },
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"qZ" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 8
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"rc" = (
+/obj/machinery/light/directional/east,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"ri" = (
+/obj/structure/sign/poster/official/fruit_bowl,
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"rm" = (
+/obj/item/storage/crayons,
+/obj/structure/closet/crate/wooden,
+/obj/item/canvas/twentythree_twentythree,
+/obj/item/canvas/twentythree_twentythree,
+/obj/item/canvas/twentythree_twentythree,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"rT" = (
+/obj/item/toy/seashell,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"sp" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 10
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"sB" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
+ dir = 4
+ },
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"sT" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"tm" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"tE" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/machinery/door/airlock/public/glass{
+ name = "Resort Casino"
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"tF" = (
+/obj/structure/extinguisher_cabinet/directional/east,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"tZ" = (
+/obj/structure/toilet,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"uc" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"ug" = (
+/obj/structure/closet/secure_closet{
+ icon_state = "cabinet";
+ name = "bartender's closet";
+ req_access = list("bar")
+ },
+/obj/item/clothing/shoes/sandal{
+ desc = "A very fashionable pair of flip-flops.";
+ name = "flip-flops"
+ },
+/obj/item/clothing/neck/beads,
+/obj/item/clothing/glasses/sunglasses/reagent,
+/obj/item/clothing/suit/costume/hawaiian,
+/obj/machinery/light/small/directional/east,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"uk" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/item/shovel/spade,
+/obj/item/reagent_containers/cup/bucket,
+/obj/item/cultivator,
+/turf/open/floor/iron/grimy,
+/area/virtual_domain/powered)
+"uq" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain,
+/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain{
+ pixel_x = -4;
+ pixel_y = 8
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"uU" = (
+/obj/effect/turf_decal/sand,
+/turf/open/floor/sepia,
+/area/virtual_domain/powered)
+"uV" = (
+/obj/structure/flora/coconuts,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"ve" = (
+/obj/item/toy/dodgeball,
+/obj/item/toy/dodgeball,
+/obj/item/toy/dodgeball,
+/obj/item/toy/dodgeball,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/effect/mapping_helpers/broken_floor,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"vp" = (
+/obj/machinery/light/directional/east,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
+/obj/structure/chair/stool/bar/directional/south,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"vq" = (
+/obj/machinery/oven/range,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"vr" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 8
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"vv" = (
+/obj/structure/chair/stool/directional/south,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"vJ" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"vM" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 9
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"vN" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/pill/morphine,
+/obj/item/reagent_containers/pill/morphine,
+/obj/item/reagent_containers/pill/morphine,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"vT" = (
+/obj/structure/railing{
+ dir = 8
+ },
+/turf/open/misc/beach/coast/corner,
+/area/virtual_domain/powered)
+"vW" = (
+/obj/machinery/hydroponics/constructable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/turf/open/floor/iron/grimy,
+/area/virtual_domain/powered)
+"wb" = (
+/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,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"wD" = (
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"xb" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"xh" = (
+/obj/machinery/light/directional/east,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"xk" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/structure/table/wood/poker,
+/obj/item/storage/dice,
+/obj/item/stack/spacecash/c1000,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"xq" = (
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/structure/window/reinforced/spawner/directional/south,
+/obj/item/megaphone,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"xw" = (
+/turf/open/floor/pod/dark,
+/area/virtual_domain/powered)
+"xJ" = (
+/obj/structure/closet/cabinet,
+/obj/item/storage/backpack/duffelbag,
+/obj/item/clothing/under/shorts/blue,
+/obj/item/clothing/shoes/sandal{
+ desc = "A very fashionable pair of flip-flops.";
+ name = "flip-flops"
+ },
+/obj/item/clothing/glasses/sunglasses,
+/obj/item/clothing/neck/beads,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"xR" = (
+/obj/structure/window/reinforced/spawner/directional/east,
+/obj/structure/window/reinforced/spawner/directional/north{
+ layer = 2.9
+ },
+/obj/structure/chair/stool/directional/south,
+/obj/item/storage/backpack/duffelbag,
+/obj/item/clothing/under/shorts/red,
+/obj/item/clothing/glasses/sunglasses,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"xW" = (
+/turf/open/space/basic,
+/area/space)
+"ya" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/pill/zoom,
+/obj/item/reagent_containers/pill/zoom,
+/obj/item/reagent_containers/pill/zoom,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"yi" = (
+/obj/structure/sink/kitchen/directional/west{
+ desc = "A sink used for washing one's hands and face. It looks rusty and home-made";
+ name = "old sink"
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"yl" = (
+/obj/item/reagent_containers/cup/glass/colocup{
+ pixel_x = -7;
+ pixel_y = -2
+ },
+/obj/item/reagent_containers/cup/glass/colocup{
+ pixel_x = 5;
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/cup/glass/bottle/rum{
+ pixel_x = 4;
+ pixel_y = -3
+ },
+/turf/open/floor/carpet/red,
+/area/virtual_domain/powered)
+"yn" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"ys" = (
+/obj/effect/turf_decal/sand,
+/obj/machinery/light/directional/east,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"yv" = (
+/obj/effect/turf_decal/sand,
+/obj/machinery/food_cart,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"yB" = (
+/obj/item/instrument/guitar,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"yU" = (
+/obj/structure/sign/warning/gas_mask/directional/north,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"yX" = (
+/obj/structure/chair/stool/bar/directional/south,
+/turf/open/floor/carpet/red,
+/area/virtual_domain/powered)
+"zn" = (
+/obj/machinery/light/directional/east,
+/turf/open/misc/beach/coast{
+ dir = 8
+ },
+/area/virtual_domain/powered)
+"zt" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"zw" = (
+/obj/structure/punching_bag,
+/turf/open/floor/pod/dark,
+/area/virtual_domain/powered)
+"zI" = (
+/obj/structure/marker_beacon/indigo,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"zU" = (
+/obj/structure/flora/rock/pile/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Aa" = (
+/obj/effect/turf_decal/sand,
+/obj/effect/turf_decal/stripes/asteroid/line{
+ dir = 8
+ },
+/obj/machinery/light/directional/west,
+/turf/open/floor/sepia,
+/area/virtual_domain/powered)
+"Ae" = (
+/obj/structure/chair,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Al" = (
+/turf/closed/mineral/random/volcanic,
+/area/lavaland/surface/outdoors/virtual_domain)
+"An" = (
+/obj/structure/marker_beacon/yellow,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Au" = (
+/obj/structure/fluff/beach_umbrella/science,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"AI" = (
+/obj/structure/table/reinforced,
+/obj/machinery/reagentgrinder,
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"AP" = (
+/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{
+ dir = 1
+ },
+/obj/structure/table/wood,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Bl" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Br" = (
+/obj/structure/table/wood/poker,
+/obj/item/toy/cards/deck/cas{
+ pixel_x = -6
+ },
+/obj/item/toy/cards/deck/cas/black{
+ pixel_x = -6;
+ pixel_y = 2
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Bu" = (
+/turf/open/misc/beach/coast{
+ dir = 8
+ },
+/area/virtual_domain/powered)
+"Bw" = (
+/obj/structure/flora/bush/sparsegrass/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"BD" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/condiment/saltshaker,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"BJ" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/structure/table/wood/poker,
+/obj/item/toy/cards/deck,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"BM" = (
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"BQ" = (
+/obj/machinery/seed_extractor,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"Cb" = (
+/obj/machinery/light/directional/north,
+/mob/living/basic/crab{
+ name = "Eddie"
+ },
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Cv" = (
+/obj/machinery/hydroponics/constructable,
+/turf/open/floor/iron/grimy,
+/area/virtual_domain/powered)
+"CA" = (
+/obj/structure/window/reinforced/spawner/directional/east,
+/obj/effect/mob_spawn/ghost_role/human/beach/lifeguard,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"CO" = (
+/obj/machinery/vending/dinnerware,
+/obj/machinery/light/directional/east,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Db" = (
+/obj/machinery/barsign/all_access,
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"Dc" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Ds" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Resort Lobby"
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Dt" = (
+/obj/machinery/light/directional/east,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/sand,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"DL" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 5
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"Em" = (
+/obj/item/reagent_containers/condiment/enzyme{
+ layer = 5
+ },
+/obj/item/reagent_containers/cup/beaker{
+ pixel_x = 5
+ },
+/obj/structure/table,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Et" = (
+/obj/machinery/light/small/directional/east,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/effect/mapping_helpers/burnt_floor,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Ev" = (
+/obj/structure/reagent_dispensers/beerkeg,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"EC" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
+/obj/structure/sign/warning/gas_mask/directional/west,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"EP" = (
+/obj/machinery/light/directional/north,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/machinery/washing_machine,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"EQ" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Fn" = (
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"FD" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"FM" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"FQ" = (
+/obj/structure/table/reinforced,
+/obj/item/secateurs,
+/obj/item/reagent_containers/cup/bottle/nutrient/ez,
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"FS" = (
+/obj/effect/turf_decal/sand,
+/obj/structure/sign/warning/no_smoking/circle/directional/east,
+/obj/machinery/light/directional/east,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"FY" = (
+/obj/structure/mineral_door/wood,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Ge" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Gh" = (
+/obj/effect/turf_decal/sand,
+/obj/structure/sign/poster/contraband/starkist/directional/north,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Gz" = (
+/obj/structure/flora/tree/palm,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"GA" = (
+/obj/structure/window/reinforced/spawner/directional/north,
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/item/bikehorn/airhorn,
+/obj/structure/table/wood,
+/obj/item/storage/medkit/regular,
+/obj/item/storage/medkit/brute,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Hs" = (
+/obj/machinery/shower/directional/west,
+/turf/open/floor/iron/white,
+/area/virtual_domain/powered)
+"HF" = (
+/obj/machinery/deepfryer,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"HH" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Ia" = (
+/obj/structure/urinal/directional/north,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Ii" = (
+/obj/machinery/light/directional/west,
+/turf/open/floor/iron/stairs/left,
+/area/virtual_domain/powered)
+"Ir" = (
+/obj/machinery/vending/cola,
+/obj/effect/turf_decal/sand,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Is" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/layer4,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/virtual_domain/powered)
+"Iv" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/condiment/peppermill,
+/obj/item/reagent_containers/condiment/soysauce,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"IH" = (
+/obj/item/toy/beach_ball,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"IM" = (
+/obj/machinery/hydroponics/constructable,
+/obj/machinery/light/directional/east,
+/turf/open/floor/iron/grimy,
+/area/virtual_domain/powered)
+"IP" = (
+/obj/machinery/vending/snack,
+/obj/effect/turf_decal/sand,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"IT" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"Jt" = (
+/obj/item/reagent_containers/cup/glass/bottle/beer,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"JC" = (
+/obj/structure/fluff/beach_umbrella/engine,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"JE" = (
+/obj/structure/closet/secure_closet/freezer/kitchen/all_access,
+/obj/item/reagent_containers/condiment/milk,
+/obj/item/reagent_containers/condiment/mayonnaise,
+/obj/item/reagent_containers/condiment/flour,
+/obj/item/reagent_containers/condiment/flour,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"JS" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"JY" = (
+/obj/structure/flora/rock/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Kd" = (
+/obj/structure/sign/warning/secure_area,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"KH" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 8
+ },
+/obj/structure/mineral_door/wood{
+ name = "Croupier's Booth"
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"KZ" = (
+/obj/structure/flora/bush/stalky/style_random,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"LD" = (
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"LW" = (
+/obj/item/storage/cans/sixbeer,
+/turf/open/floor/carpet/orange,
+/area/virtual_domain/powered)
+"Mp" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain{
+ pixel_y = 7;
+ pixel_x = 4
+ },
+/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Mw" = (
+/obj/structure/chair/sofa/right/brown,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Mz" = (
+/obj/structure/chair/sofa/left/brown,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Nh" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Nq" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 1
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"Nr" = (
+/obj/machinery/light/directional/north,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Nw" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/obj/item/bedsheet/dorms{
+ dir = 4
+ },
+/obj/structure/bed{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"NF" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"NM" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/item/food/grown/ambrosia/vulgaris,
+/obj/item/food/grown/ambrosia/vulgaris,
+/obj/item/food/grown/ambrosia/vulgaris,
+/obj/item/food/grown/ambrosia/vulgaris,
+/obj/item/food/grown/ambrosia/vulgaris,
+/obj/item/food/grown/ambrosia/vulgaris,
+/obj/item/food/grown/ambrosia/vulgaris,
+/obj/item/food/grown/ambrosia/vulgaris,
+/obj/item/food/grown/ambrosia/vulgaris,
+/obj/item/food/grown/ambrosia/vulgaris,
+/turf/open/floor/iron/grimy,
+/area/virtual_domain/powered)
+"NO" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 10
+ },
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"NX" = (
+/obj/effect/landmark/bitrunning/loot_signal,
+/turf/open/floor/light/colour_cycle/dancefloor_a,
+/area/virtual_domain/powered)
+"OE" = (
+/obj/effect/mob_spawn/ghost_role/human/beach{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"OK" = (
+/obj/structure/sign/warning/gas_mask/directional/north,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"OR" = (
+/obj/machinery/light/directional/south,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"OW" = (
+/obj/structure/sink/kitchen/directional/east{
+ desc = "A sink used for washing one's hands and face. It looks rusty and home-made";
+ name = "old sink"
+ },
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"OZ" = (
+/obj/structure/marker_beacon/teal,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Pc" = (
+/obj/structure/chair/wood,
+/obj/machinery/light/directional/west,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Pg" = (
+/obj/structure/sign/poster/official/high_class_martini/directional/west,
+/obj/effect/mob_spawn/ghost_role/human/bartender{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"PM" = (
+/obj/machinery/door/airlock/external/ruin,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Qb" = (
+/obj/machinery/griddle,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Qj" = (
+/obj/machinery/hydroponics/constructable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/iron/grimy,
+/area/virtual_domain/powered)
+"Qk" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"Qu" = (
+/obj/structure/curtain,
+/turf/open/floor/iron/white,
+/area/virtual_domain/powered)
+"QB" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"QP" = (
+/obj/structure/extinguisher_cabinet/directional/north,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"QX" = (
+/obj/machinery/chem_dispenser/drinks/fullupgrade{
+ dir = 1
+ },
+/obj/structure/table/wood,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/light/small/directional/east,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Rx" = (
+/turf/open/floor/iron/stairs/medium,
+/area/virtual_domain/powered)
+"RB" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
+ dir = 8
+ },
+/obj/machinery/light/directional/south,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"RL" = (
+/obj/structure/closet/cabinet,
+/obj/item/storage/backpack/duffelbag,
+/obj/item/clothing/under/shorts/purple,
+/obj/item/clothing/shoes/cookflops{
+ desc = "A very fashionable pair of flip flops.";
+ name = "flip-flops"
+ },
+/obj/item/clothing/glasses/sunglasses/big,
+/obj/item/clothing/neck/beads,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Sg" = (
+/obj/structure/flora/coconuts,
+/obj/machinery/light/directional/north,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"SB" = (
+/obj/machinery/door/airlock/sandstone{
+ name = "Resort Bathroom"
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"SD" = (
+/obj/machinery/door/airlock/sandstone{
+ name = "Bar Access"
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"SY" = (
+/obj/machinery/door/airlock/sandstone{
+ name = "Surfer Shack 2"
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"TG" = (
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"TJ" = (
+/obj/structure/fluff/beach_umbrella/security,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"TM" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 6
+ },
+/turf/closed/wall/mineral/sandstone,
+/area/virtual_domain/powered)
+"TX" = (
+/obj/structure/sign/poster/contraband/ambrosia_vulgaris/directional/north,
+/turf/open/floor/iron/grimy,
+/area/virtual_domain/powered)
+"Ud" = (
+/obj/effect/turf_decal/sand,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Uh" = (
+/turf/open/floor/iron/stairs/old,
+/area/virtual_domain/powered)
+"Uq" = (
+/obj/structure/weightmachine/weightlifter,
+/turf/open/floor/pod/dark,
+/area/virtual_domain/powered)
+"UU" = (
+/obj/structure/flora/bush/large/style_random,
+/obj/structure/flora/bush/jungle/a/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Ve" = (
+/obj/machinery/processor,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Vf" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"VA" = (
+/obj/machinery/computer/slot_machine,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"VH" = (
+/obj/machinery/light/directional/west,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"VO" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/turf/open/floor/pod/light,
+/area/virtual_domain/powered)
+"VX" = (
+/obj/structure/flora/bush/large/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"We" = (
+/obj/structure/table/wood,
+/obj/item/book/manual/wiki/cooking_to_serve_man,
+/obj/item/clothing/suit/apron/chef,
+/obj/item/clothing/head/utility/chefhat,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Wg" = (
+/obj/structure/dresser,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Ww" = (
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"WL" = (
+/obj/machinery/light/directional/north,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"WO" = (
+/obj/structure/flora/bush/jungle/a/style_random,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"WW" = (
+/obj/effect/turf_decal/sand,
+/obj/machinery/icecream_vat,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"WX" = (
+/obj/item/toy/plush/lizard_plushie/green{
+ name = "Soaks-The-Rays"
+ },
+/turf/open/floor/carpet/orange,
+/area/virtual_domain/powered)
+"Xt" = (
+/turf/open/misc/beach/coast/corner{
+ dir = 4
+ },
+/area/virtual_domain/powered)
+"Xv" = (
+/obj/structure/table/wood,
+/obj/structure/bedsheetbin,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"XL" = (
+/obj/machinery/light/directional/east,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"XM" = (
+/turf/open/misc/beach/coast,
+/area/virtual_domain/powered)
+"XP" = (
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"XT" = (
+/obj/effect/turf_decal/sand,
+/obj/structure/sign/departments/botany/directional/south,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Yi" = (
+/obj/structure/flora/bush/sparsegrass/style_random,
+/obj/item/toy/seashell,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Yq" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"YI" = (
+/obj/machinery/door/airlock/maintenance{
+ name = "Supply Room"
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"YJ" = (
+/turf/open/floor/carpet/purple,
+/area/virtual_domain/powered)
+"YN" = (
+/obj/effect/turf_decal/sand,
+/obj/machinery/light/directional/west,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Zb" = (
+/obj/structure/sign/poster/official/cohiba_robusto_ad/directional/west,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Zd" = (
+/obj/structure/sign/poster/contraband/space_cola/directional/north,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Zg" = (
+/obj/structure/table,
+/obj/machinery/microwave,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Zt" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/pill/morphine,
+/obj/item/storage/fancy/donut_box,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+
+(1,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+kv
+"}
+(2,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+iz
+"}
+(3,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+Al
+gl
+gl
+gl
+gl
+gl
+Al
+Al
+gl
+gl
+gl
+gl
+gl
+Al
+Al
+gl
+gl
+gl
+Al
+gl
+gl
+gl
+gl
+Al
+Al
+gl
+gl
+gl
+Al
+Al
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(4,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(5,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+zI
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(6,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+OZ
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(7,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+Al
+gl
+gl
+gl
+An
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+ke
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+ml
+ml
+ml
+ml
+ml
+FM
+gl
+Al
+iz
+"}
+(8,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+ml
+ml
+ml
+ml
+ml
+ml
+gl
+Al
+iz
+"}
+(9,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+gl
+gl
+ml
+ml
+ml
+ml
+ml
+ml
+gl
+Al
+iz
+"}
+(10,1,1) = {"
+pr
+pr
+pr
+pr
+iz
+Al
+Al
+Al
+Al
+xb
+xb
+xb
+Al
+Al
+gl
+gl
+gl
+Al
+TM
+IT
+IT
+IT
+IT
+IT
+IT
+IT
+IT
+IT
+DL
+Al
+gl
+gl
+ml
+ml
+ml
+ml
+ml
+ml
+gl
+Al
+iz
+"}
+(11,1,1) = {"
+iz
+iz
+iz
+iz
+iz
+Al
+Al
+Al
+Fn
+PM
+PM
+Fn
+Fn
+hU
+hU
+hU
+TM
+IT
+vM
+Pc
+bf
+Bw
+Fn
+Ev
+Pg
+iR
+kG
+di
+sp
+DL
+Al
+gl
+ml
+ml
+ml
+ml
+ml
+ml
+gl
+Al
+iz
+"}
+(12,1,1) = {"
+iz
+Al
+Al
+Al
+Al
+Al
+Al
+hU
+Fn
+pT
+LD
+LD
+Fn
+TM
+Kd
+IT
+vM
+bQ
+cv
+wD
+Bw
+JY
+Fn
+db
+TG
+TG
+Vf
+EQ
+AP
+Qk
+Al
+gl
+ml
+ml
+ml
+ml
+ml
+ml
+gl
+Al
+iz
+"}
+(13,1,1) = {"
+iz
+Al
+Fn
+Fn
+Fn
+Fn
+Fn
+Fn
+Fn
+LD
+pT
+LD
+EC
+hI
+pT
+PM
+wD
+wD
+cv
+wD
+wD
+OR
+Fn
+ug
+TG
+TG
+iL
+Nh
+QX
+tm
+Al
+gl
+ml
+ml
+ml
+ml
+ml
+sT
+gl
+Al
+iz
+"}
+(14,1,1) = {"
+iz
+Al
+Fn
+VA
+kT
+Zb
+TG
+Fn
+Fn
+Fn
+yU
+LD
+Et
+Bl
+LD
+PM
+wD
+wD
+wD
+wD
+wD
+qc
+Fn
+Fn
+SD
+Mp
+uq
+fc
+Fn
+QB
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(15,1,1) = {"
+iz
+Al
+Fn
+VA
+yX
+ag
+kT
+Br
+TG
+TM
+IT
+IT
+IT
+vM
+Fn
+Fn
+Gz
+wD
+Bw
+rm
+wD
+wD
+wD
+Ii
+dx
+kn
+kn
+kn
+Aa
+QB
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(16,1,1) = {"
+iz
+Al
+Fn
+pC
+yX
+ag
+kM
+BJ
+af
+tm
+as
+ab
+Ir
+IP
+YN
+uV
+wD
+wD
+wD
+mG
+vv
+Bw
+wD
+Rx
+uU
+lS
+lS
+lS
+uU
+QB
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(17,1,1) = {"
+iz
+Al
+Fn
+Mw
+ag
+ag
+vp
+xk
+EQ
+cK
+Ud
+Ud
+bC
+Ud
+Ud
+wD
+IH
+wD
+wD
+Bw
+wD
+wD
+wD
+Rx
+uU
+lS
+NX
+lS
+cz
+QB
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(18,1,1) = {"
+iz
+Al
+Fn
+Mz
+TG
+TG
+TM
+IT
+KH
+vM
+Zd
+wD
+wD
+Bw
+wD
+VX
+wD
+UU
+wD
+wD
+wD
+wD
+wD
+Rx
+uU
+lS
+lS
+lS
+uU
+QB
+Al
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(19,1,1) = {"
+iz
+Al
+TM
+IT
+tE
+tE
+vM
+uV
+NF
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+jc
+uU
+uU
+uU
+uU
+uU
+sp
+DL
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+gl
+Al
+iz
+"}
+(20,1,1) = {"
+iz
+Al
+QB
+zU
+wD
+wD
+wD
+wD
+Dt
+Ud
+Ud
+Ud
+Ud
+Ud
+Ud
+Ud
+ys
+wD
+wD
+TJ
+wb
+wD
+wD
+vT
+gJ
+gJ
+gJ
+gJ
+gJ
+oE
+QB
+gl
+gl
+Al
+Al
+gl
+gl
+Al
+gl
+Al
+iz
+"}
+(21,1,1) = {"
+iz
+Al
+QB
+wD
+wD
+Bw
+wD
+wD
+FD
+BM
+BM
+We
+Zt
+BD
+Iv
+BM
+Db
+Nr
+wD
+yl
+ag
+wD
+wD
+XM
+KZ
+Ww
+Ww
+Ww
+cG
+dj
+QB
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+iz
+"}
+(22,1,1) = {"
+iz
+Al
+sp
+DL
+wD
+wD
+wD
+wD
+yn
+Zg
+VH
+TG
+TG
+TG
+TG
+mX
+BM
+wD
+wD
+Au
+wD
+rT
+wD
+XM
+Ww
+Ww
+Ww
+Ww
+Ww
+dj
+QB
+Al
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+"}
+(23,1,1) = {"
+iz
+Al
+dG
+QB
+Cb
+wD
+JC
+wD
+NO
+HF
+HH
+JE
+BM
+aw
+TG
+TG
+ya
+wD
+wD
+YJ
+YJ
+wD
+wD
+XM
+Ww
+Ww
+Ww
+Ww
+Ww
+dj
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(24,1,1) = {"
+iz
+Al
+Is
+Qk
+wD
+Gz
+WX
+wD
+jW
+Em
+TG
+mq
+ri
+Qb
+TG
+TG
+cb
+wD
+wD
+bQ
+wD
+wD
+wD
+XM
+Ww
+Ww
+KZ
+KZ
+Ww
+pZ
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(25,1,1) = {"
+iz
+Al
+dG
+QB
+OK
+Gz
+LW
+wD
+bm
+bS
+Dc
+oP
+BM
+vq
+TG
+TG
+vN
+wD
+wD
+XP
+yB
+wD
+wD
+XM
+KZ
+Ww
+KZ
+gh
+Ww
+dj
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(26,1,1) = {"
+iz
+Al
+dG
+QB
+Sg
+wD
+wD
+wD
+BM
+Ve
+rc
+yi
+TG
+TG
+TG
+CO
+BM
+wD
+Yi
+XL
+wD
+wD
+wD
+XM
+Ww
+Ww
+Ww
+Ww
+Ww
+dj
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(27,1,1) = {"
+iz
+Al
+TM
+vM
+Bw
+wD
+wD
+wD
+BM
+BM
+BM
+BM
+FY
+BM
+BM
+BM
+er
+wD
+GA
+xq
+jy
+wD
+wD
+XM
+Ww
+cG
+Ww
+Ww
+KZ
+dj
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(28,1,1) = {"
+iz
+Al
+QB
+Nr
+wD
+wD
+Bw
+wD
+YN
+Ud
+WW
+yv
+Ud
+Ud
+Ud
+Ud
+YN
+wD
+xR
+CA
+Uh
+wD
+qW
+XM
+Ww
+Ww
+Ww
+Ww
+Ww
+pZ
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(29,1,1) = {"
+iz
+Al
+QB
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+Jt
+wD
+mP
+zn
+Bu
+Bu
+Bu
+Bu
+Xt
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(30,1,1) = {"
+iz
+Al
+Nq
+Ds
+Ds
+DL
+VX
+wD
+wD
+wD
+wD
+wD
+XL
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+wD
+XT
+Fn
+Fn
+Fn
+Fn
+Fn
+Fn
+TM
+IT
+vM
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(31,1,1) = {"
+iz
+Al
+QB
+TG
+TG
+sp
+DL
+jl
+TM
+dH
+qR
+qZ
+DL
+WO
+wD
+Bw
+wD
+wD
+wD
+wD
+bM
+Ud
+aE
+aE
+aE
+lq
+fr
+hk
+QB
+Al
+Al
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(32,1,1) = {"
+iz
+Al
+JS
+Nh
+HH
+TG
+sp
+IT
+vM
+dZ
+OE
+Nw
+sp
+dH
+qR
+qZ
+DL
+wD
+wD
+wD
+Ae
+Ud
+zw
+xw
+Uq
+aE
+aE
+aE
+sp
+DL
+Al
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(33,1,1) = {"
+iz
+Al
+fF
+EP
+Dc
+TG
+TG
+TG
+hG
+uc
+TG
+Ge
+Fn
+dZ
+OE
+Nw
+QB
+Gz
+uV
+wD
+wD
+Ud
+xw
+xw
+xw
+zt
+aE
+sB
+OW
+sp
+DL
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(34,1,1) = {"
+iz
+Al
+QB
+Xv
+TG
+hE
+TG
+TG
+Fn
+Wg
+rc
+xJ
+Fn
+uc
+TG
+RB
+QB
+wD
+wD
+Bw
+wD
+lB
+zw
+xw
+Uq
+vJ
+FQ
+VO
+aE
+jg
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(35,1,1) = {"
+iz
+Al
+QB
+Fn
+SB
+Fn
+WL
+TG
+Fn
+Fn
+Fn
+Fn
+Fn
+Wg
+TG
+RL
+QB
+Gh
+Ud
+Ud
+Ud
+FS
+aE
+aE
+aE
+vJ
+AI
+BQ
+aE
+NM
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(36,1,1) = {"
+iz
+Al
+JS
+kK
+TG
+Fn
+TG
+TG
+TG
+TG
+qg
+TG
+Fn
+Fn
+SY
+Fn
+sp
+Ds
+Ds
+vr
+YI
+dH
+IT
+DL
+TX
+vJ
+aE
+VO
+aE
+uk
+QB
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(37,1,1) = {"
+iz
+Al
+fF
+Ia
+dI
+Fn
+Fn
+Fn
+QP
+TG
+TG
+TG
+TG
+TG
+TG
+TG
+TG
+TG
+TG
+QB
+ve
+nP
+ed
+QB
+Cv
+Qj
+IM
+vW
+Cv
+TM
+vM
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(38,1,1) = {"
+iz
+Al
+QB
+tZ
+TG
+Qu
+Hs
+TM
+IT
+DL
+TG
+rc
+TG
+TG
+TG
+tF
+xh
+TG
+TG
+QB
+Yq
+aZ
+Fn
+sp
+IT
+Qk
+IT
+tm
+IT
+vM
+Al
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(39,1,1) = {"
+iz
+Al
+sp
+IT
+IT
+IT
+IT
+vM
+hU
+sp
+IT
+IT
+IT
+IT
+IT
+tm
+Qk
+IT
+IT
+vM
+Fn
+Fn
+Fn
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(40,1,1) = {"
+iz
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+Al
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
+(41,1,1) = {"
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+iz
+pr
+pr
+pr
+pr
+pr
+pr
+pr
+xW
+"}
diff --git a/_maps/virtual_domains/blood_drunk_miner.dmm b/_maps/virtual_domains/blood_drunk_miner.dmm
new file mode 100644
index 00000000000..c3369a1c822
--- /dev/null
+++ b/_maps/virtual_domains/blood_drunk_miner.dmm
@@ -0,0 +1,1887 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"b" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"c" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"d" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"f" = (
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/block/cracked,
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"h" = (
+/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)
+"i" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"j" = (
+/obj/structure/marker_beacon/jade,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"k" = (
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"l" = (
+/obj/structure/stone_tile/block,
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"m" = (
+/obj/structure/marker_beacon/olive,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"n" = (
+/obj/structure/marker_beacon/cerulean,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"o" = (
+/obj/structure/marker_beacon/yellow,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"q" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"r" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"s" = (
+/turf/closed/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"t" = (
+/obj/structure/marker_beacon/indigo,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"u" = (
+/obj/structure/stone_tile/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"v" = (
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"w" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"x" = (
+/obj/structure/stone_tile,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"y" = (
+/obj/structure/marker_beacon/violet,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"z" = (
+/obj/structure/stone_tile/block,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"A" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"C" = (
+/obj/effect/mob_spawn/corpse/human/miner,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"G" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"H" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"I" = (
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"J" = (
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"K" = (
+/obj/structure/marker_beacon/teal,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"L" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"O" = (
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"P" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"S" = (
+/obj/structure/stone_tile/surrounding/cracked{
+ dir = 6
+ },
+/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual_domain,
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"T" = (
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"W" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"X" = (
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Y" = (
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Z" = (
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+
+(1,1,1) = {"
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+d
+"}
+(2,1,1) = {"
+v
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+v
+"}
+(3,1,1) = {"
+v
+s
+s
+s
+s
+J
+J
+s
+s
+J
+J
+s
+s
+J
+J
+J
+J
+s
+s
+s
+J
+J
+J
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+J
+J
+s
+s
+s
+J
+J
+s
+s
+J
+J
+s
+v
+"}
+(4,1,1) = {"
+v
+s
+s
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+s
+v
+"}
+(5,1,1) = {"
+v
+s
+s
+J
+a
+J
+J
+J
+J
+a
+J
+J
+J
+J
+a
+a
+J
+J
+J
+J
+J
+a
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+s
+s
+v
+"}
+(6,1,1) = {"
+v
+s
+s
+J
+a
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+a
+a
+a
+a
+a
+J
+J
+J
+a
+a
+J
+J
+J
+a
+a
+J
+a
+J
+a
+a
+J
+J
+J
+s
+s
+v
+"}
+(7,1,1) = {"
+v
+s
+s
+J
+J
+J
+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
+J
+J
+J
+s
+v
+"}
+(8,1,1) = {"
+v
+s
+s
+J
+J
+J
+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
+J
+J
+s
+s
+v
+"}
+(9,1,1) = {"
+v
+s
+J
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+j
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+J
+s
+v
+"}
+(10,1,1) = {"
+v
+s
+J
+J
+J
+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
+t
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+J
+s
+v
+"}
+(11,1,1) = {"
+v
+s
+s
+J
+J
+J
+a
+a
+a
+y
+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
+J
+J
+s
+v
+"}
+(12,1,1) = {"
+v
+s
+s
+J
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+C
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+J
+J
+s
+v
+"}
+(13,1,1) = {"
+v
+s
+s
+J
+J
+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
+J
+J
+s
+v
+"}
+(14,1,1) = {"
+v
+s
+s
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+T
+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
+J
+J
+s
+v
+"}
+(15,1,1) = {"
+v
+s
+J
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+X
+z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+h
+c
+c
+c
+c
+c
+L
+a
+a
+J
+J
+s
+v
+"}
+(16,1,1) = {"
+v
+s
+J
+J
+J
+J
+a
+a
+a
+a
+a
+a
+a
+T
+W
+a
+r
+a
+i
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+c
+c
+c
+c
+c
+a
+a
+J
+J
+s
+v
+"}
+(17,1,1) = {"
+v
+s
+s
+J
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+I
+b
+k
+l
+x
+a
+T
+k
+a
+a
+a
+m
+a
+a
+a
+a
+a
+o
+a
+a
+c
+c
+c
+c
+c
+c
+a
+a
+J
+J
+s
+v
+"}
+(18,1,1) = {"
+v
+s
+s
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+P
+S
+A
+O
+u
+r
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+c
+c
+c
+c
+c
+a
+J
+J
+s
+s
+v
+"}
+(19,1,1) = {"
+v
+s
+J
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+k
+G
+H
+x
+f
+k
+a
+Y
+T
+u
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+c
+c
+c
+c
+c
+a
+a
+J
+J
+s
+v
+"}
+(20,1,1) = {"
+v
+s
+J
+J
+J
+J
+a
+a
+a
+a
+a
+a
+a
+Y
+x
+a
+Z
+a
+z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+c
+c
+c
+c
+c
+a
+a
+J
+J
+s
+v
+"}
+(21,1,1) = {"
+v
+s
+s
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+h
+c
+c
+c
+c
+c
+q
+a
+a
+J
+s
+s
+v
+"}
+(22,1,1) = {"
+v
+s
+s
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+w
+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
+J
+s
+s
+v
+"}
+(23,1,1) = {"
+v
+s
+J
+J
+a
+a
+a
+a
+a
+a
+n
+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
+J
+s
+s
+v
+"}
+(24,1,1) = {"
+v
+s
+J
+J
+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
+C
+a
+a
+a
+a
+a
+J
+J
+s
+v
+"}
+(25,1,1) = {"
+v
+s
+s
+J
+J
+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
+J
+J
+J
+s
+v
+"}
+(26,1,1) = {"
+v
+s
+s
+J
+J
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+K
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+J
+s
+v
+"}
+(27,1,1) = {"
+v
+s
+s
+J
+J
+J
+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
+j
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+J
+s
+v
+"}
+(28,1,1) = {"
+v
+s
+J
+J
+J
+J
+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
+J
+J
+J
+s
+v
+"}
+(29,1,1) = {"
+v
+s
+J
+J
+J
+J
+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
+J
+J
+s
+s
+v
+"}
+(30,1,1) = {"
+v
+s
+s
+J
+J
+J
+J
+a
+a
+J
+J
+J
+a
+a
+a
+a
+J
+J
+J
+a
+a
+a
+J
+J
+J
+a
+a
+a
+J
+J
+a
+a
+a
+a
+a
+a
+J
+J
+a
+a
+a
+J
+J
+s
+s
+v
+"}
+(31,1,1) = {"
+v
+s
+s
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+a
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+a
+a
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+s
+v
+"}
+(32,1,1) = {"
+v
+s
+s
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+a
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+J
+s
+v
+"}
+(33,1,1) = {"
+v
+s
+s
+s
+s
+s
+J
+J
+s
+s
+s
+s
+J
+J
+s
+s
+s
+s
+s
+s
+J
+J
+s
+s
+s
+s
+J
+J
+s
+s
+s
+s
+J
+J
+J
+s
+s
+s
+s
+s
+s
+J
+J
+J
+s
+v
+"}
+(34,1,1) = {"
+v
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+s
+v
+"}
+(35,1,1) = {"
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+"}
diff --git a/_maps/virtual_domains/bubblegum.dmm b/_maps/virtual_domains/bubblegum.dmm
new file mode 100644
index 00000000000..3381b173539
--- /dev/null
+++ b/_maps/virtual_domains/bubblegum.dmm
@@ -0,0 +1,2250 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"c" = (
+/obj/effect/mob_spawn/corpse/human/miner,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"d" = (
+/obj/structure/marker_beacon/jade,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"f" = (
+/obj/structure/marker_beacon/burgundy,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"g" = (
+/obj/structure/marker_beacon/teal,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"p" = (
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"r" = (
+/obj/structure/marker_beacon/fuchsia,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"w" = (
+/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)
+"x" = (
+/obj/structure/marker_beacon/olive,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"z" = (
+/obj/structure/marker_beacon/purple,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"A" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"C" = (
+/mob/living/simple_animal/hostile/megafauna/bubblegum/virtual_domain,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"F" = (
+/turf/open/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"G" = (
+/obj/structure/marker_beacon/violet,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"I" = (
+/obj/structure/marker_beacon/bronze,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"M" = (
+/obj/structure/marker_beacon/indigo,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"R" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/open/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"S" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"T" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"W" = (
+/obj/structure/marker_beacon/cerulean,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"X" = (
+/obj/structure/marker_beacon/lime,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Y" = (
+/obj/structure/marker_beacon/yellow,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Z" = (
+/turf/closed/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+
+(1,1,1) = {"
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+R
+"}
+(2,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
+F
+"}
+(3,1,1) = {"
+F
+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
+F
+"}
+(4,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
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(5,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
+a
+a
+a
+a
+a
+a
+a
+p
+Z
+F
+"}
+(6,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
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+p
+p
+Z
+F
+"}
+(7,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+x
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+a
+a
+a
+a
+p
+Z
+F
+"}
+(8,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
+a
+a
+Z
+Z
+a
+a
+a
+Z
+Z
+F
+"}
+(9,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+a
+p
+p
+p
+p
+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
+F
+"}
+(10,1,1) = {"
+F
+Z
+Z
+a
+a
+a
+a
+a
+Z
+Z
+Z
+p
+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
+F
+"}
+(11,1,1) = {"
+F
+Z
+Z
+a
+a
+a
+a
+a
+Z
+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
+F
+"}
+(12,1,1) = {"
+F
+Z
+Z
+a
+a
+a
+a
+a
+p
+Z
+p
+p
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+Z
+a
+a
+a
+a
+a
+a
+a
+p
+a
+a
+a
+a
+a
+Z
+F
+"}
+(13,1,1) = {"
+F
+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
+Z
+Z
+Z
+a
+a
+a
+a
+a
+M
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(14,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
+Z
+Z
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(15,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
+a
+c
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(16,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
+I
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(17,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+W
+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
+F
+"}
+(18,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
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(19,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
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(20,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+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
+Z
+F
+"}
+(21,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
+w
+S
+S
+S
+S
+S
+T
+a
+Z
+F
+"}
+(22,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
+a
+S
+S
+S
+S
+S
+S
+a
+Z
+F
+"}
+(23,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+C
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+S
+S
+S
+S
+S
+S
+a
+Z
+F
+"}
+(24,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
+X
+a
+a
+S
+S
+S
+S
+S
+S
+a
+Z
+F
+"}
+(25,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
+a
+S
+S
+S
+S
+S
+S
+a
+Z
+F
+"}
+(26,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
+a
+S
+S
+S
+S
+S
+S
+a
+Z
+F
+"}
+(27,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
+w
+S
+S
+S
+S
+S
+A
+a
+Z
+F
+"}
+(28,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+f
+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
+F
+"}
+(29,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+a
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+r
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(30,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+a
+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
+Z
+F
+"}
+(31,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+a
+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
+Z
+F
+"}
+(32,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+a
+a
+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
+Z
+F
+"}
+(33,1,1) = {"
+F
+Z
+a
+a
+a
+a
+a
+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
+d
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(34,1,1) = {"
+F
+Z
+Z
+a
+a
+a
+a
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(35,1,1) = {"
+F
+Z
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+X
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+Z
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(36,1,1) = {"
+F
+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
+Z
+Z
+Z
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(37,1,1) = {"
+F
+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
+Z
+Z
+F
+"}
+(38,1,1) = {"
+F
+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
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+Z
+F
+"}
+(39,1,1) = {"
+F
+Z
+a
+a
+a
+p
+p
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+Z
+Z
+a
+a
+a
+a
+a
+p
+p
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(40,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
+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
+F
+"}
+(42,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
+a
+a
+a
+a
+a
+a
+a
+a
+Z
+F
+"}
+(43,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
+F
+"}
+(44,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
+F
+"}
+(45,1,1) = {"
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+"}
diff --git a/_maps/virtual_domains/clown_planet.dmm b/_maps/virtual_domains/clown_planet.dmm
new file mode 100644
index 00000000000..2bfd75218bb
--- /dev/null
+++ b/_maps/virtual_domains/clown_planet.dmm
@@ -0,0 +1,2322 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"ai" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/small/directional/west,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"aI" = (
+/obj/item/bikehorn/airhorn,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"aM" = (
+/obj/item/bikehorn,
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"aP" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/effect/decal/cleanable/food/pie_smudge,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"ba" = (
+/obj/structure/mecha_wreckage/honker,
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"bi" = (
+/obj/item/bikehorn,
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"bp" = (
+/turf/open/indestructible/light,
+/area/virtual_domain/powered)
+"bq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"by" = (
+/turf/closed/wall/r_wall,
+/area/lavaland/surface/outdoors/virtual_domain)
+"bQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/effect/turf_decal/tile/red/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"bR" = (
+/obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/hope,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/mapping_helpers/no_lava,
+/turf/open/floor/noslip,
+/area/virtual_domain/powered)
+"bU" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"cw" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"cM" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/disposaloutlet{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"cW" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"ed" = (
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/obj/machinery/light/small/directional/west,
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"eE" = (
+/obj/structure/window/reinforced/spawner/directional/south,
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"fh" = (
+/obj/effect/mob_spawn/corpse/human/damaged,
+/obj/effect/decal/cleanable/blood/old,
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"gr" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"gy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"gH" = (
+/obj/item/bikehorn,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"gK" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"hK" = (
+/obj/item/clothing/head/cone,
+/obj/effect/mapping_helpers/no_lava,
+/turf/open/floor/noslip,
+/area/virtual_domain/powered)
+"hY" = (
+/turf/template_noop,
+/area/template_noop)
+"ij" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/machinery/disposal/delivery_chute{
+ dir = 4
+ },
+/turf/open/floor/noslip,
+/area/virtual_domain/powered)
+"ik" = (
+/turf/open/lava/smooth,
+/area/virtual_domain/powered)
+"iR" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ki" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"kn" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"lj" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/machinery/disposal/delivery_chute{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"lm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/light/small/directional/east,
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"lr" = (
+/obj/item/bikehorn,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"lx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"ly" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"lP" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"mD" = (
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"mE" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"mF" = (
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"nE" = (
+/obj/effect/mapping_helpers/no_lava,
+/turf/closed/wall/r_wall,
+/area/virtual_domain/powered)
+"oA" = (
+/obj/effect/turf_decal/tile/red/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"oI" = (
+/obj/structure/table/glass,
+/obj/item/grown/bananapeel/bluespace,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"pl" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"ps" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/effect/turf_decal/tile/red/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"qM" = (
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/obj/machinery/light/small/directional/north,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"rg" = (
+/obj/item/coin/bananium,
+/obj/item/coin/bananium,
+/obj/item/coin/bananium,
+/obj/item/coin/bananium,
+/obj/machinery/light/small/directional/west,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"rh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"rr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"rH" = (
+/obj/structure/disposalpipe/junction/yjunction{
+ dir = 1;
+ invisibility = 101
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"rT" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"sq" = (
+/obj/machinery/light/directional/north,
+/obj/effect/turf_decal/tile/red/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"sT" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 1
+ },
+/obj/effect/mapping_helpers/mail_sorting/supply/qm_office,
+/turf/closed/wall/r_wall,
+/area/virtual_domain/powered)
+"tq" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"tt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/turf/open/indestructible/light,
+/area/virtual_domain/powered)
+"tv" = (
+/obj/effect/mob_spawn/corpse/human/damaged,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"tF" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"tI" = (
+/obj/item/coin/bananium,
+/obj/item/coin/bananium,
+/obj/item/coin/bananium,
+/obj/item/coin/bananium,
+/obj/machinery/light/small/directional/east,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"uX" = (
+/obj/effect/mapping_helpers/no_lava,
+/mob/living/simple_animal/hostile/retaliate/clown,
+/turf/open/floor/noslip,
+/area/virtual_domain/powered)
+"uY" = (
+/turf/closed/mineral/bananium,
+/area/virtual_domain/powered)
+"uZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/structure/table,
+/obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/escape,
+/obj/item/pen/fourcolor,
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"wz" = (
+/obj/machinery/light/small/directional/south,
+/obj/effect/mapping_helpers/no_lava,
+/mob/living/simple_animal/hostile/retaliate/clown,
+/turf/open/floor/noslip,
+/area/virtual_domain/powered)
+"xt" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"yd" = (
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"yz" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/virtual_domain/powered)
+"yS" = (
+/obj/structure/marker_beacon/yellow,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"yZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"zm" = (
+/obj/effect/decal/cleanable/cobweb,
+/obj/effect/turf_decal/tile/red/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"zA" = (
+/obj/structure/statue/bananium/clown,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"zF" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/turf/open/floor/noslip,
+/area/virtual_domain/powered)
+"Aa" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/turf_decal/tile/red/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Bi" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/effect/decal/cleanable/cobweb,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Cp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/machinery/light/small/directional/west,
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"Cs" = (
+/obj/item/bikehorn,
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Dh" = (
+/turf/closed/wall/r_wall,
+/area/virtual_domain/powered)
+"Do" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"DL" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/item/bikehorn,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Ex" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"FI" = (
+/obj/item/reagent_containers/cup/glass/trophy/gold_cup,
+/obj/structure/table/glass,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"Gg" = (
+/obj/structure/table/glass,
+/obj/item/gun/magic/staff/honk,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"Hq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Hr" = (
+/obj/structure/table/glass,
+/obj/item/clothing/shoes/clown_shoes/banana_shoes,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"HQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/light/small/directional/east,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Ie" = (
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Iz" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"IN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/closed/wall/r_wall,
+/area/virtual_domain/powered)
+"IY" = (
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"Jv" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"JB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/machinery/light/small/directional/north,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Ka" = (
+/obj/effect/decal/cleanable/food/pie_smudge,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Kh" = (
+/obj/effect/mob_spawn/corpse/human/damaged,
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"KG" = (
+/obj/item/pickaxe,
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"KI" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/turf/closed/wall/r_wall,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Lv" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/machinery/light/small/directional/east,
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"Nv" = (
+/obj/effect/decal/cleanable/cobweb,
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"NB" = (
+/obj/machinery/disposal/delivery_chute,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"NL" = (
+/obj/machinery/disposal/delivery_chute{
+ desc = "The following is engraved upon the chute: A FATE WORSE THAN DEATH LIES WITHIN";
+ dir = 1;
+ name = "THE TRIAL OF HONKITUDE"
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/effect/mapping_helpers/no_lava,
+/turf/open/floor/noslip,
+/area/virtual_domain/powered)
+"NW" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/spray/waterflower/superlube,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"Ok" = (
+/obj/item/bikehorn,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Ov" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"PJ" = (
+/obj/structure/disposalpipe/trunk,
+/obj/structure/disposaloutlet{
+ dir = 1
+ },
+/obj/effect/mapping_helpers/no_lava,
+/turf/open/floor/noslip,
+/area/virtual_domain/powered)
+"PM" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"PQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/item/pickaxe,
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"QP" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"QX" = (
+/obj/structure/closet/crate/secure/bitrunning/encrypted,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"Rh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"Rx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/structure/table,
+/obj/item/flashlight/lamp/bananalamp,
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"RU" = (
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Sg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/effect/decal/cleanable/food/pie_smudge,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Sm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/virtual_domain/powered)
+"Tm" = (
+/obj/effect/decal/cleanable/food/pie_smudge,
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Tx" = (
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"TH" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"TK" = (
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/turf/closed/wall/r_wall,
+/area/virtual_domain/powered)
+"Ug" = (
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/carpet,
+/area/virtual_domain/powered)
+"UL" = (
+/obj/effect/decal/cleanable/oil,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"UN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"UQ" = (
+/obj/structure/disposalpipe/segment{
+ invisibility = 101
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"UY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"Vv" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/turf/closed/wall/r_wall,
+/area/virtual_domain/powered)
+"Vx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"VI" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"VQ" = (
+/turf/open/floor/noslip,
+/area/virtual_domain/powered)
+"Ww" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/turf/open/indestructible/permalube,
+/area/virtual_domain/powered)
+"WB" = (
+/obj/machinery/disposal/delivery_chute{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"WT" = (
+/obj/machinery/door/airlock/bananium,
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"WX" = (
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"Xp" = (
+/obj/machinery/light/directional/south,
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"XB" = (
+/obj/machinery/light/directional/north,
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"Yb" = (
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/turf/open/indestructible/honk,
+/area/virtual_domain/powered)
+"YP" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ invisibility = 101
+ },
+/turf/open/indestructible/white,
+/area/virtual_domain/powered)
+"ZR" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+
+(1,1,1) = {"
+Ie
+Ie
+rT
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+rr
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(2,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(3,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Ie
+Ie
+Ie
+Ie
+Dh
+Dh
+Dh
+Dh
+Dh
+Dh
+Dh
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Dh
+Dh
+Dh
+Dh
+Dh
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(4,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Ie
+Ie
+Dh
+Dh
+Dh
+ik
+ik
+ik
+ik
+ik
+Dh
+Dh
+Ie
+Ie
+Ie
+Ie
+Ie
+Dh
+Dh
+ik
+ik
+ik
+Dh
+Dh
+Dh
+Ie
+Ie
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(5,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Ie
+Dh
+Dh
+ik
+ik
+ik
+Hq
+Sm
+Hq
+Sm
+ik
+Dh
+Dh
+Ie
+Ie
+Ie
+Dh
+Dh
+ik
+ik
+tq
+mD
+ik
+ik
+Dh
+Dh
+Ie
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(6,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Dh
+Dh
+ik
+ik
+IN
+Tx
+bU
+ai
+yZ
+aP
+Sm
+ik
+Dh
+Dh
+Dh
+Dh
+Dh
+Nv
+IY
+tq
+ik
+ik
+ik
+ik
+ik
+Dh
+Dh
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(7,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Dh
+ik
+ik
+Dh
+Bi
+cw
+UQ
+lr
+UQ
+UY
+Vv
+ik
+Dh
+IY
+Jv
+IY
+Dh
+IY
+Jv
+Kh
+IY
+tq
+ik
+tq
+ik
+ik
+Dh
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(8,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+Dh
+ik
+IN
+Tm
+lx
+Ww
+cw
+UQ
+Sm
+Vv
+Vv
+Dh
+zm
+oA
+IY
+Jv
+Jv
+IY
+Jv
+IY
+IY
+IY
+Dh
+ik
+mD
+ik
+Dh
+Dh
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(9,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+ik
+UN
+UQ
+UY
+Ww
+Vv
+TH
+Vv
+YP
+Cp
+uY
+Dh
+sq
+oA
+IY
+Dh
+Dh
+Jv
+Dh
+IY
+IY
+IY
+tq
+ik
+ik
+ik
+Dh
+Ie
+Vx
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+tF
+"}
+(10,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+IN
+UQ
+UQ
+yZ
+Do
+Do
+Vv
+YP
+YP
+YP
+KG
+uY
+Dh
+Dh
+oA
+IY
+IY
+Jv
+IY
+IY
+gH
+Jv
+Xp
+Dh
+ik
+ik
+Dh
+by
+KI
+by
+by
+by
+by
+by
+by
+by
+by
+by
+Ie
+"}
+(11,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+yz
+fh
+UQ
+UY
+Vv
+Ww
+Vv
+YP
+YP
+tt
+bp
+WX
+oA
+oA
+oA
+IY
+Dh
+IY
+IY
+Jv
+Jv
+IY
+IY
+ik
+tq
+ik
+Dh
+by
+iR
+PM
+PM
+PM
+PM
+PM
+PM
+PM
+PM
+by
+Ie
+"}
+(12,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+Hq
+TK
+qM
+yZ
+Ww
+Ww
+Vv
+YP
+PQ
+tt
+bp
+uY
+Dh
+oA
+oA
+IY
+IY
+Dh
+IY
+IY
+IY
+IY
+Jv
+ik
+tq
+ik
+ik
+by
+iR
+yS
+PM
+PM
+PM
+PM
+PM
+yS
+PM
+by
+Ie
+"}
+(13,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+UN
+UQ
+UQ
+DL
+Ww
+yz
+lx
+Vv
+YP
+Lv
+WX
+Dh
+Dh
+oA
+IY
+IY
+Dh
+Dh
+IY
+IY
+Dh
+IY
+Jv
+ik
+mD
+tq
+ik
+by
+iR
+PM
+PM
+PM
+PM
+PM
+PM
+PM
+PM
+by
+Ie
+"}
+(14,1,1) = {"
+Ie
+Dh
+Vv
+nE
+nE
+mD
+cw
+UQ
+lx
+Ex
+Tm
+UQ
+lx
+Vv
+Vv
+ps
+TK
+Sm
+Dh
+Dh
+Dh
+zA
+rg
+Dh
+XB
+IY
+Jv
+gH
+IY
+ik
+tq
+ik
+by
+iR
+PM
+QP
+QP
+QP
+QP
+QP
+xt
+PM
+by
+Ie
+"}
+(15,1,1) = {"
+Ie
+Dh
+ij
+hK
+nE
+Dh
+yz
+UQ
+UQ
+UQ
+UQ
+bi
+UQ
+yZ
+Do
+Iz
+kn
+Ww
+Dh
+Dh
+FI
+mF
+mF
+mF
+Dh
+IY
+Jv
+Jv
+IY
+ik
+tq
+ik
+by
+ZR
+PM
+QP
+QP
+QP
+QP
+QP
+QP
+PM
+by
+Ie
+"}
+(16,1,1) = {"
+Ie
+Dh
+VQ
+uX
+NL
+TK
+Tx
+UQ
+TK
+UQ
+cW
+TK
+Tm
+UQ
+yZ
+pl
+Do
+Ex
+UY
+Dh
+Ug
+oI
+NW
+mF
+Dh
+Dh
+Jv
+IY
+IY
+ik
+tq
+ik
+by
+PM
+PM
+QP
+QP
+QP
+QP
+QP
+QP
+PM
+by
+Ie
+"}
+(17,1,1) = {"
+Ie
+Dh
+VQ
+bR
+wz
+Dh
+Hq
+UQ
+Sm
+cw
+UY
+cw
+UQ
+UQ
+Tx
+gy
+Ex
+UY
+Iz
+TK
+NB
+mF
+aI
+mF
+WT
+IY
+Jv
+IY
+Dh
+ik
+tq
+ik
+by
+PM
+PM
+QP
+QP
+QP
+QP
+QP
+QP
+PM
+by
+Ie
+"}
+(18,1,1) = {"
+Ie
+Dh
+VQ
+uX
+PJ
+TK
+sT
+kn
+Do
+Do
+Vv
+Do
+Ov
+UQ
+UY
+Ok
+mE
+rH
+pl
+Dh
+mF
+Hr
+Gg
+mF
+Dh
+IY
+IY
+IY
+IY
+ik
+tq
+ik
+by
+PM
+PM
+QP
+QP
+QP
+QP
+QP
+QP
+PM
+by
+Ie
+"}
+(19,1,1) = {"
+Ie
+Dh
+zF
+uX
+nE
+Dh
+Dh
+Ww
+Ww
+Ww
+Do
+Do
+Do
+lP
+Ex
+UY
+Ka
+Vv
+tv
+Dh
+FI
+mF
+mF
+QX
+Dh
+IY
+IY
+IY
+IY
+ik
+tq
+ik
+by
+lj
+PM
+QP
+QP
+QP
+QP
+QP
+QP
+PM
+by
+Ie
+"}
+(20,1,1) = {"
+Ie
+Dh
+Vv
+nE
+nE
+ik
+Dh
+Ww
+Ww
+Cs
+Do
+Do
+Vv
+Dh
+Dh
+bQ
+Dh
+ba
+Dh
+IY
+Dh
+zA
+tI
+Dh
+XB
+IY
+Jv
+Jv
+IY
+ik
+tq
+ik
+by
+iR
+PM
+QP
+QP
+QP
+QP
+QP
+gr
+PM
+by
+Ie
+"}
+(21,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+Dh
+Dh
+Do
+Do
+Do
+Ww
+Do
+Vv
+rh
+ed
+gK
+Dh
+UL
+Sm
+IY
+IY
+Dh
+Dh
+Kh
+IY
+IY
+Jv
+IY
+ik
+tq
+mD
+ik
+by
+iR
+PM
+PM
+PM
+PM
+PM
+PM
+PM
+PM
+by
+Ie
+"}
+(22,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+Dh
+Dh
+JB
+Sg
+Vv
+Ww
+Vv
+uZ
+YP
+bp
+bp
+uY
+Dh
+bQ
+oA
+IY
+IY
+Dh
+IY
+Jv
+IY
+IY
+IY
+ik
+tq
+ik
+ik
+by
+iR
+PM
+PM
+yS
+PM
+PM
+PM
+PM
+PM
+by
+Ie
+"}
+(23,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+cM
+eE
+lx
+Vv
+ki
+Ww
+Vv
+Rx
+YP
+bp
+bp
+WB
+TK
+Aa
+Dh
+IY
+IY
+Jv
+Jv
+Jv
+IY
+aM
+Xp
+Dh
+tq
+ik
+Dh
+by
+iR
+PM
+PM
+PM
+PM
+PM
+PM
+PM
+PM
+by
+Ie
+"}
+(24,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+Dh
+Dh
+lP
+Do
+Do
+Cs
+bQ
+YP
+bq
+Rh
+WX
+uY
+Dh
+oA
+oA
+IY
+IY
+Jv
+Jv
+IY
+IY
+Dh
+Dh
+ik
+mD
+ik
+Dh
+by
+KI
+by
+by
+by
+by
+by
+by
+by
+by
+by
+Ie
+"}
+(25,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+Dh
+Dh
+pl
+Do
+Vv
+Do
+Vv
+Vv
+rh
+lm
+uY
+Dh
+sq
+oA
+IY
+IY
+IY
+IY
+IY
+Dh
+IY
+IY
+ik
+mD
+ik
+ik
+Dh
+Ie
+Vx
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+"}
+(26,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+ik
+ik
+Dh
+yd
+Do
+Do
+Do
+Ex
+lx
+Vv
+Dh
+Dh
+oA
+oA
+IY
+IY
+IY
+Jv
+aM
+IY
+IY
+IY
+Dh
+ik
+tq
+ik
+Dh
+Dh
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(27,1,1) = {"
+Ie
+Ie
+Vx
+Dh
+Dh
+ik
+Dh
+Dh
+Ex
+lx
+HQ
+UQ
+UQ
+bU
+Dh
+ik
+Dh
+Yb
+IY
+IY
+Dh
+IY
+IY
+Dh
+IY
+IY
+ik
+mD
+ik
+ik
+Dh
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(28,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Dh
+Dh
+ik
+ik
+Dh
+mD
+Dh
+Ka
+lP
+mD
+Dh
+ik
+Dh
+Dh
+Dh
+Dh
+Dh
+IY
+IY
+IY
+ik
+ik
+ik
+ik
+ik
+Dh
+Dh
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(29,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Ie
+Dh
+Dh
+ik
+ik
+ik
+tq
+tq
+tq
+Dh
+ik
+Dh
+Dh
+Ie
+Ie
+Ie
+Dh
+Dh
+ik
+ik
+mD
+tq
+ik
+ik
+Dh
+Dh
+Ie
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(30,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Ie
+Ie
+Dh
+Dh
+Dh
+ik
+ik
+ik
+ik
+ik
+Dh
+Dh
+Ie
+Ie
+Ie
+Ie
+Ie
+Dh
+Dh
+ik
+ik
+ik
+Dh
+Dh
+Dh
+Ie
+Ie
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(31,1,1) = {"
+Ie
+Ie
+Vx
+Ie
+Ie
+Ie
+Ie
+Ie
+Dh
+Dh
+Dh
+Dh
+Dh
+Dh
+Dh
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Dh
+Dh
+Dh
+Dh
+Dh
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Vx
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(32,1,1) = {"
+Ie
+Ie
+VI
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+RU
+ly
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
+(33,1,1) = {"
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+Ie
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+hY
+"}
diff --git a/_maps/virtual_domains/colossus.dmm b/_maps/virtual_domains/colossus.dmm
new file mode 100644
index 00000000000..a9c3c6e6d79
--- /dev/null
+++ b/_maps/virtual_domains/colossus.dmm
@@ -0,0 +1,2250 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"c" = (
+/obj/structure/marker_beacon/olive,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"e" = (
+/obj/structure/marker_beacon/bronze,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"j" = (
+/obj/structure/marker_beacon/cerulean,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"k" = (
+/turf/closed/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"l" = (
+/obj/structure/marker_beacon/lime,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"m" = (
+/obj/structure/marker_beacon/violet,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"o" = (
+/obj/effect/mob_spawn/corpse/human/miner,
+/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,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"q" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/open/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"r" = (
+/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)
+"s" = (
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"u" = (
+/obj/structure/marker_beacon/indigo,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"v" = (
+/turf/open/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"x" = (
+/obj/structure/marker_beacon/purple,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"z" = (
+/obj/structure/marker_beacon/jade,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"B" = (
+/obj/structure/marker_beacon/teal,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"D" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"L" = (
+/obj/structure/marker_beacon/yellow,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"N" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"T" = (
+/obj/structure/marker_beacon/burgundy,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"U" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"W" = (
+/obj/structure/marker_beacon/fuchsia,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+
+(1,1,1) = {"
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+q
+"}
+(2,1,1) = {"
+v
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+v
+"}
+(3,1,1) = {"
+v
+k
+a
+a
+k
+k
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+k
+k
+a
+a
+a
+a
+a
+a
+a
+a
+k
+k
+a
+a
+a
+a
+a
+a
+k
+k
+k
+v
+"}
+(4,1,1) = {"
+v
+k
+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
+k
+v
+"}
+(5,1,1) = {"
+v
+k
+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
+s
+k
+v
+"}
+(6,1,1) = {"
+v
+k
+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
+m
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+s
+s
+k
+v
+"}
+(7,1,1) = {"
+v
+k
+a
+a
+a
+a
+o
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+a
+a
+a
+a
+s
+k
+v
+"}
+(8,1,1) = {"
+v
+k
+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
+k
+k
+a
+a
+a
+k
+k
+v
+"}
+(9,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+a
+s
+s
+s
+s
+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
+k
+k
+v
+"}
+(10,1,1) = {"
+v
+k
+k
+a
+a
+a
+a
+a
+k
+k
+k
+s
+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
+k
+k
+v
+"}
+(11,1,1) = {"
+v
+k
+k
+a
+a
+a
+a
+a
+k
+k
+k
+s
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+k
+a
+a
+a
+a
+a
+a
+a
+a
+s
+s
+a
+a
+a
+a
+a
+k
+v
+"}
+(12,1,1) = {"
+v
+k
+k
+a
+a
+a
+a
+a
+s
+k
+s
+s
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+k
+a
+a
+a
+a
+a
+a
+a
+s
+a
+a
+a
+a
+a
+k
+v
+"}
+(13,1,1) = {"
+v
+k
+k
+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
+k
+k
+k
+a
+a
+a
+a
+a
+u
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(14,1,1) = {"
+v
+k
+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
+k
+k
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(15,1,1) = {"
+v
+k
+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
+k
+v
+"}
+(16,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+e
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(17,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+j
+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
+k
+v
+"}
+(18,1,1) = {"
+v
+k
+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
+k
+v
+"}
+(19,1,1) = {"
+v
+k
+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
+k
+v
+"}
+(20,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+x
+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
+k
+v
+"}
+(21,1,1) = {"
+v
+k
+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
+r
+U
+U
+U
+U
+U
+N
+a
+k
+v
+"}
+(22,1,1) = {"
+v
+k
+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
+U
+U
+U
+U
+U
+U
+a
+k
+v
+"}
+(23,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+p
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+U
+U
+U
+U
+U
+U
+a
+k
+v
+"}
+(24,1,1) = {"
+v
+k
+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
+l
+a
+a
+U
+U
+U
+U
+U
+U
+a
+k
+v
+"}
+(25,1,1) = {"
+v
+k
+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
+U
+U
+U
+U
+U
+U
+a
+k
+v
+"}
+(26,1,1) = {"
+v
+k
+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
+U
+U
+U
+U
+U
+U
+a
+k
+v
+"}
+(27,1,1) = {"
+v
+k
+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
+o
+a
+r
+U
+U
+U
+U
+U
+D
+a
+k
+v
+"}
+(28,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+T
+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
+k
+v
+"}
+(29,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+a
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+W
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(30,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+a
+k
+k
+k
+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
+k
+v
+"}
+(31,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+a
+k
+k
+k
+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
+k
+v
+"}
+(32,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+a
+a
+k
+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
+k
+v
+"}
+(33,1,1) = {"
+v
+k
+a
+a
+a
+a
+a
+k
+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
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(34,1,1) = {"
+v
+k
+k
+a
+a
+a
+a
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(35,1,1) = {"
+v
+k
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+l
+a
+a
+a
+a
+a
+a
+a
+a
+k
+k
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(36,1,1) = {"
+v
+k
+k
+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
+k
+k
+k
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(37,1,1) = {"
+v
+k
+k
+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
+k
+k
+v
+"}
+(38,1,1) = {"
+v
+k
+a
+a
+a
+s
+s
+a
+a
+a
+a
+a
+B
+a
+a
+a
+a
+k
+a
+a
+a
+a
+a
+a
+s
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+k
+v
+"}
+(39,1,1) = {"
+v
+k
+a
+a
+a
+s
+s
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+k
+k
+a
+a
+a
+a
+a
+s
+s
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(40,1,1) = {"
+v
+k
+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
+k
+v
+"}
+(41,1,1) = {"
+v
+k
+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
+L
+a
+a
+a
+a
+a
+a
+a
+k
+v
+"}
+(42,1,1) = {"
+v
+k
+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
+k
+v
+"}
+(43,1,1) = {"
+v
+k
+a
+k
+k
+k
+k
+a
+a
+a
+a
+a
+k
+k
+k
+k
+a
+a
+a
+k
+k
+k
+k
+k
+a
+a
+a
+a
+a
+a
+k
+k
+k
+k
+a
+a
+a
+a
+a
+a
+k
+k
+a
+a
+k
+v
+"}
+(44,1,1) = {"
+v
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+k
+v
+"}
+(45,1,1) = {"
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+v
+"}
diff --git a/_maps/virtual_domains/gondola_asteroid.dmm b/_maps/virtual_domains/gondola_asteroid.dmm
new file mode 100644
index 00000000000..d6377a4a4c1
--- /dev/null
+++ b/_maps/virtual_domains/gondola_asteroid.dmm
@@ -0,0 +1,1784 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/closed/indestructible/binary,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"c" = (
+/turf/open/space/basic,
+/area/space)
+"e" = (
+/turf/open/misc/asteroid/airless,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"g" = (
+/obj/structure/marker_beacon{
+ light_color = "#FFE8AA";
+ light_range = 20
+ },
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"h" = (
+/turf/closed/mineral/random,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"m" = (
+/obj/structure/closet/crate/secure/bitrunning/encrypted/gondola,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"n" = (
+/obj/structure/flora/bush/fullgrass/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"o" = (
+/turf/template_noop,
+/area/template_noop)
+"q" = (
+/obj/structure/flora/tree/palm,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"r" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"s" = (
+/obj/structure/flora/bush/sparsegrass/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"t" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"w" = (
+/obj/structure/water_source/puddle,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"y" = (
+/obj/structure/flora/bush/stalky/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"z" = (
+/mob/living/simple_animal/pet/gondola/virtual_domain,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"A" = (
+/obj/structure/chair/wood{
+ dir = 8
+ },
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"C" = (
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"D" = (
+/obj/structure/flora/bush/flowers_br/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"F" = (
+/obj/structure/flora/bush/grassy/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"I" = (
+/obj/structure/flora/bush/reed/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"J" = (
+/obj/structure/flora/bush/flowers_yw/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"K" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"M" = (
+/obj/structure/table/wood,
+/obj/item/storage/bag/tray,
+/obj/item/kitchen/fork,
+/obj/item/knife/kitchen,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"N" = (
+/obj/structure/flora/bush/large/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"O" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"Q" = (
+/obj/structure/flora/bush/lavendergrass/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"T" = (
+/obj/structure/flora/bush/sunny/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"V" = (
+/obj/structure/flora/coconuts,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"W" = (
+/obj/structure/flora/bush/ferny/style_random,
+/turf/open/floor/grass,
+/area/ruin/space/has_grav/powered/virtual_domain)
+
+(1,1,1) = {"
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+a
+a
+a
+a
+a
+a
+a
+a
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+"}
+(2,1,1) = {"
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+a
+a
+a
+h
+h
+h
+h
+h
+h
+a
+a
+o
+o
+o
+o
+o
+o
+o
+o
+o
+"}
+(3,1,1) = {"
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+a
+a
+a
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+a
+a
+K
+o
+o
+o
+o
+o
+o
+o
+"}
+(4,1,1) = {"
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+a
+a
+a
+a
+a
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+e
+a
+o
+o
+o
+o
+o
+o
+o
+"}
+(5,1,1) = {"
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+h
+h
+h
+h
+h
+a
+o
+o
+o
+o
+o
+o
+o
+"}
+(6,1,1) = {"
+o
+o
+o
+o
+o
+o
+o
+o
+a
+a
+a
+a
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+C
+C
+C
+C
+C
+C
+h
+h
+h
+a
+o
+o
+o
+o
+o
+o
+o
+"}
+(7,1,1) = {"
+o
+o
+o
+o
+o
+o
+o
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+C
+C
+C
+J
+C
+C
+C
+z
+C
+h
+h
+a
+o
+o
+o
+o
+o
+o
+o
+"}
+(8,1,1) = {"
+o
+o
+o
+o
+o
+a
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+C
+C
+C
+Q
+C
+q
+C
+h
+h
+h
+h
+h
+e
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(9,1,1) = {"
+o
+o
+o
+o
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+h
+C
+C
+C
+C
+C
+C
+C
+C
+V
+C
+C
+C
+C
+h
+h
+h
+e
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(10,1,1) = {"
+o
+o
+a
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+C
+q
+C
+C
+W
+C
+C
+V
+C
+C
+q
+C
+C
+C
+C
+F
+C
+C
+h
+h
+h
+e
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(11,1,1) = {"
+o
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+C
+C
+C
+C
+N
+C
+C
+C
+C
+C
+C
+s
+C
+C
+C
+h
+h
+h
+e
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(12,1,1) = {"
+o
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+s
+I
+J
+C
+C
+g
+C
+C
+V
+C
+z
+C
+y
+C
+g
+C
+h
+h
+h
+e
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(13,1,1) = {"
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+C
+C
+C
+Q
+Q
+C
+z
+C
+C
+C
+C
+C
+C
+C
+s
+Q
+C
+C
+h
+h
+h
+e
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(14,1,1) = {"
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+C
+w
+C
+s
+C
+W
+C
+C
+C
+C
+C
+C
+N
+C
+C
+C
+C
+h
+h
+h
+h
+e
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(15,1,1) = {"
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+z
+C
+C
+C
+C
+y
+C
+C
+C
+F
+s
+C
+C
+C
+C
+C
+w
+C
+h
+h
+h
+h
+h
+e
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(16,1,1) = {"
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+C
+C
+C
+C
+s
+Q
+C
+C
+C
+C
+C
+C
+C
+C
+h
+h
+h
+h
+e
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(17,1,1) = {"
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+C
+C
+Q
+D
+C
+C
+C
+C
+q
+C
+C
+C
+C
+h
+h
+h
+h
+t
+t
+t
+t
+t
+O
+c
+a
+"}
+(18,1,1) = {"
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+n
+I
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+h
+h
+h
+t
+t
+M
+M
+t
+t
+c
+a
+"}
+(19,1,1) = {"
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+C
+n
+C
+h
+h
+h
+h
+h
+C
+C
+C
+C
+C
+C
+s
+T
+C
+C
+C
+s
+C
+C
+h
+C
+C
+t
+t
+A
+A
+t
+t
+c
+a
+"}
+(20,1,1) = {"
+a
+h
+h
+h
+h
+h
+h
+h
+h
+C
+C
+C
+C
+C
+C
+h
+h
+h
+C
+C
+q
+V
+C
+C
+C
+J
+C
+C
+C
+C
+C
+C
+C
+C
+C
+t
+t
+t
+t
+t
+t
+c
+a
+"}
+(21,1,1) = {"
+a
+e
+h
+h
+h
+h
+h
+h
+h
+z
+C
+C
+g
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+t
+t
+t
+t
+t
+t
+c
+a
+"}
+(22,1,1) = {"
+a
+e
+e
+h
+h
+h
+h
+h
+h
+C
+C
+C
+q
+C
+s
+s
+C
+C
+W
+C
+m
+C
+C
+C
+g
+C
+z
+C
+C
+C
+C
+C
+h
+h
+h
+t
+t
+t
+t
+t
+t
+c
+a
+"}
+(23,1,1) = {"
+a
+e
+e
+h
+h
+h
+h
+h
+h
+C
+C
+C
+C
+C
+C
+y
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+q
+C
+C
+h
+h
+h
+t
+t
+t
+t
+t
+r
+c
+a
+"}
+(24,1,1) = {"
+a
+e
+e
+h
+h
+h
+h
+h
+h
+C
+C
+V
+C
+C
+C
+C
+C
+C
+C
+w
+C
+z
+N
+C
+C
+C
+N
+C
+C
+C
+C
+C
+h
+h
+h
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(25,1,1) = {"
+a
+a
+e
+e
+h
+h
+h
+h
+n
+C
+C
+C
+C
+C
+z
+C
+C
+C
+C
+C
+C
+C
+C
+C
+F
+C
+C
+C
+C
+C
+C
+C
+h
+h
+h
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(26,1,1) = {"
+o
+a
+e
+e
+h
+h
+h
+C
+C
+C
+C
+C
+C
+C
+C
+C
+s
+y
+C
+C
+C
+C
+C
+C
+I
+F
+C
+C
+C
+C
+C
+h
+h
+h
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(27,1,1) = {"
+o
+a
+e
+e
+h
+h
+h
+C
+C
+C
+w
+C
+C
+C
+C
+F
+D
+s
+C
+J
+C
+C
+C
+C
+C
+C
+q
+C
+C
+V
+C
+h
+h
+h
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(28,1,1) = {"
+o
+a
+e
+e
+h
+h
+h
+h
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+g
+F
+s
+C
+C
+C
+C
+C
+C
+C
+C
+h
+h
+h
+c
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(29,1,1) = {"
+o
+a
+a
+e
+e
+h
+h
+h
+C
+C
+C
+C
+C
+n
+C
+C
+C
+C
+C
+C
+s
+y
+D
+C
+C
+C
+C
+w
+C
+h
+h
+h
+h
+c
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(30,1,1) = {"
+o
+o
+a
+e
+e
+h
+h
+C
+C
+C
+n
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+C
+s
+C
+C
+C
+h
+h
+h
+e
+e
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(31,1,1) = {"
+o
+o
+a
+e
+h
+h
+C
+g
+J
+C
+s
+C
+C
+C
+h
+C
+C
+C
+C
+C
+V
+C
+C
+C
+C
+C
+C
+C
+h
+h
+h
+e
+e
+e
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(32,1,1) = {"
+o
+o
+a
+h
+h
+h
+h
+C
+C
+C
+C
+C
+C
+h
+h
+h
+C
+C
+C
+q
+C
+C
+C
+C
+C
+C
+h
+h
+h
+h
+e
+e
+e
+h
+h
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(33,1,1) = {"
+o
+o
+a
+h
+h
+h
+C
+C
+C
+C
+C
+C
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+e
+e
+h
+h
+h
+a
+o
+o
+o
+o
+o
+o
+o
+"}
+(34,1,1) = {"
+o
+o
+a
+h
+h
+C
+C
+C
+C
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+a
+a
+h
+h
+h
+a
+a
+o
+o
+o
+o
+o
+o
+o
+"}
+(35,1,1) = {"
+o
+o
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+h
+e
+e
+e
+e
+e
+h
+h
+h
+h
+h
+a
+a
+a
+a
+a
+a
+a
+h
+h
+h
+a
+a
+o
+o
+o
+o
+o
+o
+o
+"}
+(36,1,1) = {"
+o
+o
+a
+a
+h
+h
+h
+h
+h
+h
+h
+h
+h
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+o
+o
+o
+o
+o
+a
+a
+a
+a
+a
+o
+o
+o
+o
+o
+o
+o
+o
+"}
+(37,1,1) = {"
+o
+o
+o
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+o
+"}
diff --git a/_maps/virtual_domains/hierophant.dmm b/_maps/virtual_domains/hierophant.dmm
new file mode 100644
index 00000000000..02b11ad4e1e
--- /dev/null
+++ b/_maps/virtual_domains/hierophant.dmm
@@ -0,0 +1,1066 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/open/indestructible/hierophant,
+/area/lavaland/surface/outdoors/virtual_domain)
+"c" = (
+/obj/effect/light_emitter{
+ set_cap = 3;
+ set_luminosity = 5
+ },
+/turf/open/indestructible/hierophant/two,
+/area/lavaland/surface/outdoors/virtual_domain)
+"h" = (
+/obj/effect/light_emitter{
+ set_cap = 3;
+ set_luminosity = 5
+ },
+/turf/open/indestructible/hierophant,
+/area/lavaland/surface/outdoors/virtual_domain)
+"n" = (
+/obj/structure/marker_beacon/indigo,
+/turf/open/indestructible/hierophant,
+/area/lavaland/surface/outdoors/virtual_domain)
+"o" = (
+/turf/template_noop,
+/area/template_noop)
+"r" = (
+/turf/closed/indestructible/riveted/hierophant,
+/area/lavaland/surface/outdoors/virtual_domain)
+"u" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"w" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"y" = (
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"E" = (
+/mob/living/simple_animal/hostile/megafauna/hierophant/virtual_domain,
+/turf/open/indestructible/hierophant/two,
+/area/lavaland/surface/outdoors/virtual_domain)
+"H" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"K" = (
+/turf/open/indestructible/hierophant/two,
+/area/lavaland/surface/outdoors/virtual_domain)
+"N" = (
+/obj/machinery/light/small/blacklight/directional/south,
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/open/indestructible/hierophant,
+/area/virtual_domain/powered)
+"S" = (
+/obj/effect/mob_spawn/corpse/human/miner,
+/turf/open/indestructible/hierophant,
+/area/lavaland/surface/outdoors/virtual_domain)
+"W" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Y" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+
+(1,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
+y
+y
+o
+o
+y
+y
+y
+y
+y
+y
+y
+y
+y
+y
+W
+"}
+(2,1,1) = {"
+y
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+y
+o
+o
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(3,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+h
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+r
+y
+o
+o
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(4,1,1) = {"
+y
+r
+a
+a
+a
+h
+h
+a
+a
+a
+r
+a
+a
+a
+r
+a
+a
+a
+h
+h
+a
+a
+a
+r
+y
+y
+y
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(5,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+r
+r
+y
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(6,1,1) = {"
+y
+r
+a
+h
+a
+r
+r
+a
+h
+n
+a
+a
+h
+a
+a
+a
+h
+a
+r
+r
+a
+h
+a
+a
+a
+a
+r
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(7,1,1) = {"
+y
+r
+a
+h
+a
+r
+r
+a
+h
+a
+a
+a
+h
+a
+a
+a
+h
+a
+r
+r
+a
+h
+a
+a
+a
+a
+a
+r
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(8,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+K
+K
+K
+K
+K
+K
+K
+K
+K
+K
+K
+a
+a
+a
+n
+a
+a
+r
+a
+a
+a
+r
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(9,1,1) = {"
+y
+r
+a
+a
+a
+h
+h
+K
+K
+K
+r
+K
+K
+K
+r
+K
+K
+K
+h
+h
+a
+a
+a
+r
+y
+r
+S
+a
+a
+r
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(10,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+K
+K
+K
+K
+K
+c
+K
+K
+K
+K
+K
+a
+a
+a
+a
+a
+r
+y
+y
+r
+a
+a
+N
+w
+w
+w
+w
+w
+H
+Y
+y
+"}
+(11,1,1) = {"
+y
+r
+a
+r
+a
+a
+a
+K
+r
+K
+K
+K
+K
+K
+K
+K
+r
+K
+a
+a
+a
+r
+a
+r
+y
+y
+y
+r
+a
+a
+w
+w
+w
+w
+w
+w
+Y
+y
+"}
+(12,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+K
+K
+K
+K
+K
+K
+K
+K
+K
+K
+K
+a
+a
+a
+a
+a
+r
+y
+y
+y
+r
+a
+a
+w
+w
+w
+w
+w
+w
+Y
+y
+"}
+(13,1,1) = {"
+y
+r
+h
+a
+a
+h
+h
+K
+K
+c
+K
+K
+E
+K
+K
+c
+K
+K
+h
+h
+a
+a
+h
+r
+y
+y
+y
+r
+a
+a
+w
+w
+w
+w
+w
+w
+Y
+y
+"}
+(14,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+K
+K
+K
+K
+K
+K
+K
+K
+K
+K
+K
+a
+a
+a
+a
+a
+r
+y
+y
+y
+r
+a
+a
+w
+w
+w
+w
+w
+w
+Y
+y
+"}
+(15,1,1) = {"
+y
+r
+a
+r
+a
+a
+a
+K
+r
+K
+K
+K
+K
+K
+K
+K
+r
+K
+a
+a
+a
+r
+a
+r
+y
+y
+y
+r
+a
+a
+w
+w
+w
+w
+w
+w
+Y
+y
+"}
+(16,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+K
+K
+K
+K
+K
+c
+K
+K
+K
+K
+K
+a
+a
+a
+a
+a
+r
+y
+y
+r
+a
+a
+N
+w
+w
+w
+w
+w
+u
+Y
+y
+"}
+(17,1,1) = {"
+y
+r
+a
+a
+a
+h
+h
+K
+K
+K
+r
+K
+K
+K
+r
+K
+K
+K
+h
+h
+a
+a
+a
+r
+y
+r
+a
+a
+a
+r
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(18,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+K
+K
+K
+K
+K
+K
+K
+K
+K
+K
+K
+a
+a
+a
+a
+a
+a
+r
+a
+a
+a
+r
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(19,1,1) = {"
+y
+r
+a
+h
+a
+r
+r
+a
+h
+a
+a
+a
+h
+a
+a
+a
+h
+a
+r
+r
+a
+h
+a
+a
+a
+a
+a
+r
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(20,1,1) = {"
+y
+r
+a
+h
+a
+r
+r
+S
+h
+a
+a
+a
+h
+a
+n
+a
+h
+a
+r
+r
+a
+h
+a
+a
+a
+a
+r
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(21,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+r
+r
+y
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(22,1,1) = {"
+y
+r
+a
+a
+a
+h
+h
+a
+a
+a
+r
+a
+a
+a
+r
+a
+a
+a
+h
+h
+a
+a
+a
+r
+y
+y
+y
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(23,1,1) = {"
+y
+r
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+h
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+r
+y
+o
+o
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(24,1,1) = {"
+y
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+y
+o
+o
+y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+y
+"}
+(25,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
+y
+y
+o
+o
+y
+y
+y
+y
+y
+y
+y
+y
+y
+y
+y
+"}
diff --git a/_maps/virtual_domains/legion.dmm b/_maps/virtual_domains/legion.dmm
new file mode 100644
index 00000000000..55843177ad0
--- /dev/null
+++ b/_maps/virtual_domains/legion.dmm
@@ -0,0 +1,6370 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"ah" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ak" = (
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"aI" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"aR" = (
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"bd" = (
+/obj/structure/stone_tile/block,
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"be" = (
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"bt" = (
+/obj/effect/decal/cleanable/blood,
+/obj/effect/decal/cleanable/blood/drip,
+/obj/effect/decal/cleanable/blood/footprints{
+ dir = 1
+ },
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+"bu" = (
+/obj/structure/marker_beacon/bronze,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ca" = (
+/obj/effect/mob_spawn/corpse/human/legioninfested,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"cf" = (
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"cp" = (
+/turf/template_noop,
+/area/template_noop)
+"dm" = (
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"dn" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/obj/effect/mob_spawn/corpse/human/legioninfested,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"dr" = (
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/obj/structure/stone_tile/block/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"dx" = (
+/obj/effect/decal/cleanable/blood/footprints{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/blood/drip,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"dL" = (
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"dQ" = (
+/turf/closed/wall/mineral/titanium/survival/pod,
+/area/lavaland/surface/outdoors/virtual_domain)
+"et" = (
+/obj/structure/stone_tile/block/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ew" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"eJ" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"fA" = (
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"fG" = (
+/obj/structure/marker_beacon/violet,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"gh" = (
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"gk" = (
+/obj/structure/necropolis_gate/locked,
+/obj/structure/stone_tile/slab,
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"gK" = (
+/obj/effect/decal/cleanable/blood/footprints,
+/obj/effect/decal/cleanable/blood/drip,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"gQ" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"hc" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"hw" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/block/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"hx" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"hU" = (
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ib" = (
+/turf/closed/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ie" = (
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"iP" = (
+/obj/structure/fluff/drake_statue/falling,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"iR" = (
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"iV" = (
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"jk" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"jt" = (
+/obj/structure/stone_tile/slab/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"jw" = (
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"jN" = (
+/obj/machinery/sleeper/survival_pod,
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ka" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile,
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"kg" = (
+/turf/closed/indestructible/riveted/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"kT" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"kZ" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ll" = (
+/obj/structure/stone_tile/cracked,
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"lz" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"lC" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"lO" = (
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"lT" = (
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"mz" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"mG" = (
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"nm" = (
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"nu" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"nv" = (
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ny" = (
+/obj/structure/stone_tile,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"nI" = (
+/obj/structure/stone_tile/block,
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"nO" = (
+/obj/structure/stone_tile/surrounding_tile,
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/center,
+/obj/structure/stone_tile/surrounding_tile/cracked{
+ dir = 8
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ob" = (
+/obj/structure/necropolis_gate/legion_gate,
+/obj/structure/necropolis_arch,
+/obj/structure/stone_tile/slab,
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"og" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"oo" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/block/cracked{
+ dir = 1
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ox" = (
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"oS" = (
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"pP" = (
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"qo" = (
+/obj/structure/stone_tile/slab/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"qs" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"qW" = (
+/obj/effect/decal/cleanable/blood/footprints{
+ dir = 1
+ },
+/obj/machinery/door/airlock/survival_pod/glass,
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+"rt" = (
+/obj/effect/mob_spawn/corpse/human/miner,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"rU" = (
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"sd" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"sk" = (
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"sz" = (
+/obj/structure/stone_tile/center,
+/obj/structure/stone_tile/surrounding_tile,
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/surrounding_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"sA" = (
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"tk" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"tF" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"uK" = (
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"vf" = (
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"wq" = (
+/obj/structure/marker_beacon/teal,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"wy" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"xd" = (
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"xm" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"xw" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"xD" = (
+/obj/structure/stone_tile/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"yu" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 1
+ },
+/obj/structure/stone_tile/block,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"yZ" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"zg" = (
+/obj/machinery/light/small/directional/south,
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/virtual_domain/powered)
+"zo" = (
+/obj/effect/turf_decal/mining/survival,
+/turf/closed/wall/mineral/titanium/survival/pod,
+/area/lavaland/surface/outdoors/virtual_domain)
+"zW" = (
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/surrounding_tile,
+/obj/structure/stone_tile/center/cracked,
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ah" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Aj" = (
+/obj/structure/marker_beacon/burgundy,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ak" = (
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/surrounding_tile,
+/obj/structure/stone_tile/center/cracked,
+/obj/structure/stone_tile/surrounding_tile/cracked{
+ dir = 4
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"As" = (
+/obj/structure/marker_beacon/cerulean,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"AY" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Bo" = (
+/obj/structure/marker_beacon/indigo,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"BO" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"CX" = (
+/obj/effect/decal/cleanable/blood/drip,
+/obj/effect/decal/cleanable/blood/footprints{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Dm" = (
+/turf/closed/mineral/random/volcanic,
+/area/lavaland/surface/outdoors/virtual_domain)
+"DP" = (
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/surrounding_tile/cracked{
+ dir = 1
+ },
+/obj/structure/stone_tile/center,
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ek" = (
+/obj/structure/stone_tile/block,
+/obj/structure/stone_tile/block/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ep" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ez" = (
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"EC" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Fg" = (
+/obj/structure/stone_tile/surrounding/cracked{
+ dir = 6
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Fp" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"Fq" = (
+/obj/structure/marker_beacon/fuchsia,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"FV" = (
+/obj/structure/stone_tile/block,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Gj" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Gn" = (
+/turf/closed/indestructible/riveted/boss/see_through,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Go" = (
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"GH" = (
+/obj/structure/fans,
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+"GM" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Hi" = (
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Hu" = (
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Hw" = (
+/obj/structure/stone_tile/surrounding_tile,
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/center/cracked,
+/obj/structure/stone_tile/surrounding_tile/cracked{
+ dir = 8
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"HK" = (
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"HQ" = (
+/obj/structure/stone_tile/block/cracked,
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"HZ" = (
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ii" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Io" = (
+/obj/structure/marker_beacon/jade,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ip" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"IB" = (
+/obj/structure/stone_tile,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"IG" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"IL" = (
+/obj/structure/stone_tile/surrounding,
+/obj/structure/stone_tile/center/cracked,
+/mob/living/simple_animal/hostile/megafauna/legion/virtual_domain,
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"IQ" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Jc" = (
+/obj/structure/stone_tile/slab,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Jp" = (
+/obj/structure/stone_tile/block/cracked,
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Jt" = (
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Jw" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"JD" = (
+/obj/structure/fluff/drake_statue,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"KG" = (
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Le" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Lx" = (
+/obj/effect/decal/cleanable/blood/footprints{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"LH" = (
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ml" = (
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Mm" = (
+/obj/structure/stone_tile/surrounding_tile,
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/center/cracked,
+/obj/structure/stone_tile/surrounding_tile/cracked{
+ dir = 1
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Mo" = (
+/obj/structure/stone_tile/block/cracked,
+/obj/structure/stone_tile/block/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"MH" = (
+/obj/structure/stone_tile/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"MP" = (
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"MW" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Nl" = (
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/center,
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ot" = (
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/center,
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Pv" = (
+/obj/effect/turf_decal/mining/survival{
+ dir = 4
+ },
+/turf/closed/wall/mineral/titanium/survival/pod,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Px" = (
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"PO" = (
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Qi" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked,
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Qx" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/marker_beacon/burgundy,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"QD" = (
+/obj/item/pickaxe,
+/obj/effect/decal/cleanable/blood,
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+"RC" = (
+/obj/effect/turf_decal/mining/survival{
+ dir = 1
+ },
+/turf/closed/wall/mineral/titanium/survival/pod,
+/area/lavaland/surface/outdoors/virtual_domain)
+"RV" = (
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"So" = (
+/obj/structure/stone_tile/cracked,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Sw" = (
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"SI" = (
+/obj/effect/turf_decal/mining,
+/turf/closed/wall/mineral/titanium/survival/pod,
+/area/lavaland/surface/outdoors/virtual_domain)
+"SJ" = (
+/obj/structure/stone_tile/slab/cracked,
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"SX" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ti" = (
+/turf/closed/mineral/random/high_chance/volcanic,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Tm" = (
+/obj/structure/bed/pod,
+/obj/item/bedsheet/black,
+/obj/structure/tubes,
+/obj/machinery/light/small/broken/directional/east,
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+"TC" = (
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"TJ" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Ud" = (
+/obj/machinery/light/small/directional/north,
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/virtual_domain/powered)
+"UD" = (
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/surrounding_tile,
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/center/cracked,
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"UM" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Vc" = (
+/obj/structure/tubes,
+/obj/item/crowbar,
+/obj/effect/decal/cleanable/blood/drip,
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+"VI" = (
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/surrounding_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/surrounding_tile,
+/obj/structure/stone_tile/center,
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Wa" = (
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile/surrounding_tile/cracked{
+ dir = 1
+ },
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/center/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Wm" = (
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"WM" = (
+/obj/structure/stone_tile/block,
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"WR" = (
+/obj/structure/stone_tile/block,
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"WS" = (
+/obj/item/gps/computer,
+/obj/structure/tubes,
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Xb" = (
+/obj/structure/marker_beacon/yellow,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Xn" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile/cracked{
+ dir = 8
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Xo" = (
+/obj/structure/stone_tile/block,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Xv" = (
+/obj/structure/stone_tile{
+ dir = 1
+ },
+/obj/structure/stone_tile/cracked,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"XO" = (
+/obj/effect/turf_decal/mining/survival{
+ dir = 8
+ },
+/turf/closed/wall/mineral/titanium/survival/pod,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Yu" = (
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"YN" = (
+/obj/structure/stone_tile/block/cracked,
+/obj/structure/stone_tile/block/cracked{
+ dir = 1
+ },
+/turf/open/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"YV" = (
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Zc" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile/block{
+ dir = 8
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Zh" = (
+/obj/structure/marker_beacon/purple,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Zj" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Zq" = (
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/turf/open/indestructible/boss,
+/area/lavaland/surface/outdoors/virtual_domain)
+"Zu" = (
+/obj/machinery/smartfridge/survival_pod{
+ desc = "A heated storage unit. This one's seen better days.";
+ name = "dusty survival pod storage"
+ },
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ZM" = (
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/structure/stone_tile,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/virtual_domain)
+"ZN" = (
+/obj/structure/table/survival_pod,
+/obj/item/knife/combat/survival,
+/turf/open/floor/pod/dark,
+/area/lavaland/surface/outdoors/virtual_domain)
+
+(1,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+Ah
+"}
+(2,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ox
+"}
+(3,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+nu
+nu
+ib
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(4,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(5,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(6,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+wq
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(7,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(8,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+rt
+nu
+nu
+ib
+ib
+ox
+"}
+(9,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(10,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ib
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(11,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(12,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(13,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+nu
+fG
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(14,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(15,1,1) = {"
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(16,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(17,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ti
+Ti
+Ti
+Ti
+GM
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+Io
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+Xb
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(18,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+et
+Ti
+GM
+GM
+GM
+nu
+nu
+nu
+nu
+GM
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(19,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+GM
+GM
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+wq
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(20,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ti
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+GM
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(21,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ti
+nu
+nu
+nu
+nu
+GM
+Ti
+GM
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+Zh
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(22,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+FV
+nu
+nu
+nu
+nu
+Ti
+Dm
+Dm
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(23,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ti
+GM
+GM
+GM
+Ti
+Ti
+Dm
+Dm
+Ti
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(24,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+FV
+Ml
+Ti
+Dm
+Dm
+Ti
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(25,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+GM
+GM
+Ti
+Dm
+Dm
+IB
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(26,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+GM
+GM
+GM
+GM
+GM
+GM
+fA
+fA
+fA
+fA
+RV
+fA
+fA
+fA
+fA
+fA
+fA
+Xn
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+As
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(27,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ek
+Le
+be
+be
+kT
+GM
+GM
+GM
+GM
+fA
+fA
+xm
+fA
+fA
+fA
+GM
+ZM
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(28,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+dr
+KG
+mz
+KG
+KG
+jt
+GM
+GM
+GM
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+HZ
+nu
+bu
+nu
+nu
+nu
+MH
+nu
+nu
+lz
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(29,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+bd
+mG
+Hw
+hU
+Mm
+lO
+et
+GM
+tk
+fA
+fA
+fA
+fA
+ak
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+YV
+nu
+nu
+So
+nu
+nu
+nu
+nu
+nu
+nu
+bu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(30,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ez
+WR
+JD
+rU
+KG
+dm
+GM
+GM
+fA
+Hi
+fA
+fA
+fA
+ll
+fA
+fA
+Wm
+fA
+fA
+YV
+qs
+MH
+nu
+nu
+nu
+ny
+ca
+oS
+nu
+nu
+Qx
+nu
+nu
+hx
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(31,1,1) = {"
+ox
+kg
+kg
+kg
+Hu
+Zq
+wy
+Zq
+lT
+kg
+kg
+Gn
+Gn
+KG
+Ak
+nv
+Ot
+mG
+hw
+kg
+kg
+Wm
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+ak
+nu
+nu
+qs
+nu
+nu
+TC
+nu
+YV
+nu
+ny
+nu
+oS
+nu
+nu
+nu
+SX
+nu
+nu
+nu
+zg
+BO
+BO
+BO
+BO
+BO
+og
+Ud
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(32,1,1) = {"
+ox
+kg
+kg
+Gn
+VI
+xw
+gQ
+ka
+iR
+kg
+kg
+Gn
+Gn
+sz
+KG
+KG
+KG
+KG
+mz
+kg
+kZ
+kZ
+sd
+kZ
+lC
+kZ
+TJ
+UM
+kZ
+IQ
+UM
+UM
+AY
+nu
+nI
+nu
+nu
+nu
+nu
+oS
+nu
+nu
+nu
+nu
+nu
+qs
+nu
+nu
+nu
+nu
+nu
+nu
+BO
+BO
+BO
+BO
+BO
+BO
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(33,1,1) = {"
+ox
+PO
+PO
+gk
+PO
+Zc
+IL
+Yu
+SJ
+Yu
+Yu
+Yu
+ob
+dL
+uK
+MP
+uK
+uK
+dL
+Jc
+Mo
+eJ
+Mo
+hc
+yu
+eJ
+Fg
+eJ
+YN
+tF
+Mo
+Zj
+HQ
+qo
+Jp
+nu
+aR
+nu
+TC
+nu
+YV
+nu
+nu
+oS
+nu
+nu
+ny
+Sw
+nu
+nu
+nu
+nu
+BO
+BO
+BO
+BO
+BO
+BO
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+Io
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(34,1,1) = {"
+ox
+kg
+kg
+Gn
+Nl
+gh
+jw
+lT
+oo
+kg
+kg
+Gn
+Gn
+Wa
+KG
+xd
+Ez
+mz
+HK
+kg
+ie
+Jw
+Jw
+jk
+Jw
+jk
+dn
+Jw
+Jw
+LH
+Ii
+Qi
+aI
+nu
+Xo
+nu
+nu
+YV
+Sw
+nu
+nu
+nu
+sA
+nu
+Gj
+nu
+nu
+HZ
+nu
+YV
+nu
+nu
+BO
+BO
+BO
+BO
+BO
+BO
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(35,1,1) = {"
+ox
+kg
+kg
+kg
+Hu
+Ep
+iV
+Go
+Ip
+kg
+kg
+Gn
+Gn
+lO
+nO
+hU
+UD
+KG
+dm
+kg
+kg
+ll
+fA
+fA
+fA
+ak
+fA
+fA
+fA
+fA
+ll
+fA
+nu
+nu
+ny
+nu
+nu
+Aj
+HZ
+nu
+ew
+nu
+nu
+bu
+nu
+nu
+nu
+nu
+nu
+Aj
+nu
+nu
+BO
+BO
+BO
+BO
+BO
+BO
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(36,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+KG
+WR
+iP
+rU
+Ez
+cf
+GM
+GM
+fA
+fA
+yZ
+vf
+ll
+fA
+fA
+fA
+ak
+fA
+fA
+oS
+ny
+qs
+YV
+qs
+nu
+nu
+nu
+nu
+nu
+nu
+Sw
+nu
+qs
+oS
+nu
+nu
+Sw
+nu
+nu
+BO
+BO
+BO
+BO
+BO
+BO
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+ib
+ox
+"}
+(37,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+bd
+xd
+zW
+nv
+DP
+KG
+FV
+GM
+GM
+fA
+fA
+fA
+GM
+Px
+fA
+IG
+GM
+Hi
+fA
+fA
+nu
+nu
+nu
+nu
+TC
+nu
+ah
+nu
+nu
+nm
+nu
+nu
+nu
+nu
+nu
+nu
+sk
+nu
+nu
+zg
+BO
+BO
+BO
+BO
+BO
+Fp
+Ud
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+nu
+nu
+ib
+ox
+"}
+(38,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+bd
+KG
+KG
+KG
+lO
+Jc
+GM
+GM
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+GM
+Jt
+fA
+fA
+fA
+nu
+TC
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(39,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ek
+KG
+lO
+MW
+pP
+GM
+GM
+GM
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+xD
+fA
+fA
+fA
+oS
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(40,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+IB
+nu
+nu
+nu
+nu
+GM
+RV
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(41,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+GM
+nu
+nu
+Sw
+Xv
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+GM
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(42,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+GM
+nu
+nu
+nu
+ny
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+EC
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+Bo
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(43,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+WM
+GM
+Px
+ny
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(44,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+GM
+GM
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(45,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+GM
+GM
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(46,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ti
+GM
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+ak
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+wq
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+ib
+ox
+"}
+(47,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ti
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+xD
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+ib
+ox
+"}
+(48,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ti
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+ib
+ox
+"}
+(49,1,1) = {"
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+Ti
+GM
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+GM
+fA
+fA
+fA
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+Fq
+nu
+ib
+ib
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+ib
+ox
+"}
+(50,1,1) = {"
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+kg
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+rt
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(51,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+dQ
+dQ
+XO
+dQ
+dQ
+GM
+nu
+nu
+nu
+ib
+ox
+"}
+(52,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+Fq
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+dQ
+GH
+jN
+ZN
+zo
+GM
+nu
+nu
+nu
+ib
+ox
+"}
+(53,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+RC
+Zu
+QD
+bt
+qW
+CX
+nu
+nu
+nu
+ib
+ox
+"}
+(54,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+dQ
+WS
+Tm
+Vc
+SI
+Lx
+nu
+nu
+nu
+ib
+ox
+"}
+(55,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+dQ
+dQ
+Pv
+dQ
+dQ
+Lx
+nu
+nu
+nu
+ib
+ox
+"}
+(56,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+nu
+nu
+nu
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+GM
+GM
+GM
+GM
+dx
+gK
+nu
+nu
+nu
+ib
+ox
+"}
+(57,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+Io
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(58,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(59,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(60,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+fA
+fA
+fA
+fA
+nu
+nu
+nu
+nu
+nu
+nu
+Xb
+nu
+nu
+nu
+ib
+ox
+"}
+(61,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+nu
+nu
+ib
+ox
+"}
+(62,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ox
+"}
+(63,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+nu
+nu
+nu
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+nu
+nu
+ib
+ib
+ib
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+nu
+ib
+ib
+nu
+nu
+nu
+nu
+ib
+ib
+ox
+"}
+(64,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ib
+ox
+"}
+(65,1,1) = {"
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+cp
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+ox
+"}
diff --git a/_maps/virtual_domains/pipedream.dmm b/_maps/virtual_domains/pipedream.dmm
new file mode 100644
index 00000000000..44bd845477a
--- /dev/null
+++ b/_maps/virtual_domains/pipedream.dmm
@@ -0,0 +1,3713 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"af" = (
+/obj/structure/chair/plastic{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"aw" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"ax" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/structure/frame/computer{
+ anchored = 1;
+ dir = 4
+ },
+/obj/item/shard{
+ icon_state = "medium"
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"aK" = (
+/turf/open/space/basic,
+/area/space)
+"aL" = (
+/obj/effect/turf_decal/tile/yellow/half/contrasted,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"bq" = (
+/obj/machinery/light/small/red/dim{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"bs" = (
+/turf/open/floor/carpet/orange,
+/area/virtual_domain/powered)
+"bw" = (
+/obj/structure/disposalpipe/broken{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/closet/crate/preopen,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"bx" = (
+/obj/structure/frame/computer,
+/obj/item/shard,
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-12"
+ },
+/area/virtual_domain/powered)
+"bA" = (
+/obj/structure/chair/plastic,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"bG" = (
+/obj/structure/lattice/catwalk{
+ name = "industrial lift"
+ },
+/obj/structure/closet/crate/preopen,
+/obj/structure/railing,
+/turf/open/chasm,
+/area/virtual_domain/powered)
+"bS" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 1
+ },
+/obj/structure/table/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/folder/yellow,
+/obj/item/folder/blue{
+ pixel_x = 2;
+ pixel_y = -2
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"cw" = (
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 9
+ },
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"cB" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 10
+ },
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"cF" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 9
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"dx" = (
+/obj/effect/turf_decal/trimline/yellow/line,
+/obj/item/shard,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"dz" = (
+/obj/machinery/light/broken,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/trimline/yellow/corner,
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"dA" = (
+/obj/machinery/light/dim{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"dP" = (
+/obj/effect/turf_decal/tile/yellow/half/contrasted,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"eg" = (
+/turf/closed/wall,
+/area/virtual_domain/powered)
+"ei" = (
+/obj/machinery/conveyor/auto{
+ dir = 6;
+ icon_state = "conveyor_map_inverted";
+ inverted = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"ev" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"eJ" = (
+/obj/structure/disposalpipe/sorting{
+ dir = 2
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"eN" = (
+/obj/effect/turf_decal/trimline/yellow/arrow_cw{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light/broken{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"eY" = (
+/turf/closed/wall/r_wall,
+/area/virtual_domain/powered)
+"fe" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 8
+ },
+/obj/structure/table/reinforced,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"fg" = (
+/turf/open/floor/iron/stairs/left{
+ dir = 8
+ },
+/area/virtual_domain/powered)
+"fj" = (
+/obj/structure/closet/crate/preopen,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"fl" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"fw" = (
+/obj/structure/door_assembly/door_assembly_eng,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"fK" = (
+/obj/structure/chair/stool/bar/directional/west,
+/turf/open/floor/iron/cafeteria,
+/area/virtual_domain/powered)
+"fR" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 5
+ },
+/obj/structure/sign/poster/official/random/directional/west,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"fZ" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/structure/chair/office{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"gc" = (
+/obj/structure/disposalpipe/broken,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"gj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"gs" = (
+/obj/machinery/door/airlock/external/glass/ruin,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"gN" = (
+/obj/structure/disposalpipe/sorting{
+ dir = 8
+ },
+/turf/open/floor/catwalk_floor/iron,
+/area/virtual_domain/powered)
+"gV" = (
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"hg" = (
+/obj/effect/turf_decal/caution{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"hi" = (
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"hk" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light/broken{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"ho" = (
+/obj/effect/turf_decal/siding/white{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"iw" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/broken_floor,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"iz" = (
+/obj/structure/broken_flooring/corner,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"iI" = (
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/yellow/corner,
+/obj/effect/decal/cleanable/blood/drip,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"jv" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 8
+ },
+/obj/machinery/light/small/red/dim{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"jw" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"jH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/catwalk_floor/iron,
+/area/virtual_domain/powered)
+"jQ" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/light/small/red/dim{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"jS" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"jW" = (
+/obj/effect/decal/cleanable/generic,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"kh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"ki" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"kn" = (
+/obj/machinery/light/small/red/dim{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"kJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/poddoor/shutters/indestructible{
+ dir = 4;
+ id = "factorylockdown"
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"kU" = (
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"lp" = (
+/obj/machinery/door/airlock/maintenance,
+/obj/effect/mapping_helpers/airlock/locked,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"lt" = (
+/obj/structure/disposalpipe/sorting{
+ dir = 8
+ },
+/mob/living/basic/hivebot/range,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"lx" = (
+/obj/machinery/door/poddoor/shutters/indestructible{
+ dir = 4;
+ id = "factorylockdown"
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"lB" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 5
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"lC" = (
+/obj/machinery/door/airlock/glass,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"lI" = (
+/obj/effect/mapping_helpers/burnt_floor,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"lN" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"lW" = (
+/obj/structure/disposalpipe/sorting{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"mh" = (
+/obj/structure/broken_flooring/pile{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"mu" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"mE" = (
+/obj/machinery/door/airlock/maintenance,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"mY" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/machinery/light/small/red/dim{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"nc" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/sign/poster/official/safety_internals/directional/south,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"nz" = (
+/obj/structure/broken_flooring/side/directional/north,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"nD" = (
+/obj/structure/disposalpipe/trunk/multiz,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"nL" = (
+/obj/effect/turf_decal/tile/dark/half,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"nS" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"op" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light/dim{
+ dir = 1
+ },
+/obj/structure/sign/warning/doors/directional/north,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"oN" = (
+/obj/machinery/conveyor/auto,
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/structure/window/reinforced/spawner/directional/east,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"oX" = (
+/obj/structure/broken_flooring/corner/directional/north,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"pa" = (
+/obj/machinery/light/small/red/dim{
+ dir = 1
+ },
+/turf/open/floor/carpet/orange,
+/area/virtual_domain/powered)
+"pb" = (
+/obj/structure/broken_flooring/corner{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"pf" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/effect/mapping_helpers/damaged_window,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"pi" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"po" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate/maint,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"pv" = (
+/obj/structure/broken_flooring/side{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"pI" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/machinery/light/small/red/dim{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"pJ" = (
+/obj/structure/broken_flooring/pile{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"qc" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 8
+ },
+/obj/structure/table/reinforced,
+/obj/effect/spawner/random/bureaucracy/briefcase,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"qk" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"qK" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/sign/warning/secure_area/directional/north,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"qN" = (
+/obj/effect/turf_decal/siding/white{
+ dir = 4
+ },
+/obj/effect/mob_spawn/corpse/human/factory,
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"qT" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/light/small/red/dim{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"qV" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"qW" = (
+/obj/machinery/light/dim{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"rc" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/sign/poster/contraband/random/directional/north,
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"rz" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/machinery/light/small/red/dim,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"rG" = (
+/obj/machinery/light/dim,
+/obj/effect/turf_decal/trimline/yellow/line,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"rJ" = (
+/obj/structure/railing,
+/obj/effect/decal/cleanable/oil,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"rM" = (
+/obj/structure/disposalpipe/broken{
+ dir = 1
+ },
+/mob/living/basic/hivebot/strong,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"rO" = (
+/turf/closed/mineral,
+/area/space)
+"sn" = (
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-38"
+ },
+/area/virtual_domain/powered)
+"sB" = (
+/obj/machinery/light/broken{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"sW" = (
+/obj/effect/decal/cleanable/oil/streak,
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/blood/drip,
+/obj/effect/decal/cleanable/blood/drip,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"tl" = (
+/obj/machinery/door/poddoor/shutters/indestructible{
+ id = "factorylockdown"
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"tr" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"tE" = (
+/obj/structure/disposalpipe/segment,
+/mob/living/basic/hivebot/range,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"ud" = (
+/obj/effect/decal/cleanable/blood/drip,
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-110"
+ },
+/area/virtual_domain/powered)
+"uk" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/effect/decal/cleanable/blood/splatter/over_window,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"um" = (
+/obj/machinery/light/dim{
+ dir = 1
+ },
+/turf/open/floor/iron/cafeteria,
+/area/virtual_domain/powered)
+"uv" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/broken_flooring/pile{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"uz" = (
+/obj/effect/spawner/random/trash/mess,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"uC" = (
+/obj/structure/falsewall,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"uF" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"uP" = (
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-55"
+ },
+/area/virtual_domain/powered)
+"uU" = (
+/obj/structure/broken_flooring/side,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"vb" = (
+/obj/effect/turf_decal/trimline/yellow/line,
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 5
+ },
+/obj/machinery/light/broken,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"ve" = (
+/obj/machinery/mass_driver/trash{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"vA" = (
+/obj/structure/closet/crate/maint,
+/obj/effect/turf_decal/stripes{
+ dir = 9
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"vL" = (
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"vQ" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"vU" = (
+/obj/effect/mapping_helpers/broken_floor,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"wg" = (
+/obj/machinery/light/small/red/dim{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate/preopen,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"wh" = (
+/obj/structure/table/wood,
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-207"
+ },
+/area/virtual_domain/powered)
+"wl" = (
+/obj/item/shard,
+/turf/open/space/basic,
+/area/space)
+"wm" = (
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 1
+ },
+/obj/structure/sign/clock/directional/north,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"wq" = (
+/obj/structure/table/wood,
+/obj/machinery/button/door{
+ name = "Cargo Bay Lockdown";
+ id = "factorylockdown"
+ },
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-63"
+ },
+/area/virtual_domain/powered)
+"ws" = (
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"ww" = (
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/mob/living/basic/hivebot,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"wU" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"wW" = (
+/obj/effect/turf_decal/tile/yellow/fourcorners,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"xa" = (
+/obj/machinery/door/poddoor/shutters/indestructible{
+ dir = 8;
+ id = "factorylockdown"
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"xj" = (
+/obj/structure/railing/corner/end{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"xk" = (
+/obj/machinery/light/dim{
+ dir = 4
+ },
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"xl" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"xA" = (
+/obj/effect/decal/cleanable/generic,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"xE" = (
+/obj/effect/turf_decal/trimline/yellow/line,
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 9
+ },
+/obj/machinery/light/broken,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"xF" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/virtual_domain/powered)
+"xM" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/bed/dogbed{
+ name = "cat bed"
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"xT" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"yB" = (
+/obj/machinery/door/airlock/maintenance,
+/obj/effect/mapping_helpers/airlock/welded,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"yM" = (
+/turf/closed/indestructible/fakedoor{
+ name = "Stairwell Access"
+ },
+/area/virtual_domain/powered)
+"yQ" = (
+/turf/template_noop,
+/area/template_noop)
+"yX" = (
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"zp" = (
+/obj/structure/chair/sofa/corp/right{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/broken,
+/turf/open/floor/carpet/orange,
+/area/virtual_domain/powered)
+"zB" = (
+/obj/structure/closet/crate/bin,
+/obj/item/trash/tray,
+/obj/effect/spawner/random/trash/garbage,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"zE" = (
+/obj/structure/disposalpipe/broken{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"zO" = (
+/obj/effect/turf_decal/siding/white{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/light/broken,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Av" = (
+/obj/item/stack/rods/two,
+/turf/open/space/basic,
+/area/space)
+"Aw" = (
+/obj/structure/lattice/catwalk{
+ name = "industrial lift"
+ },
+/mob/living/basic/hivebot/rapid,
+/turf/open/chasm,
+/area/virtual_domain/powered)
+"AJ" = (
+/obj/effect/decal/cleanable/generic,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"AP" = (
+/obj/structure/railing,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"AU" = (
+/turf/open/misc/asteroid/airless,
+/area/space)
+"Bd" = (
+/obj/structure/closet/secure_closet/tac{
+ req_access = null
+ },
+/obj/item/ammo_casing/shotgun/buckshot,
+/obj/item/ammo_casing/shotgun/buckshot,
+/obj/item/ammo_casing/shotgun/buckshot,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Bh" = (
+/obj/structure/broken_flooring/corner/directional/east,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Bx" = (
+/obj/structure/table/reinforced,
+/obj/machinery/microwave{
+ broken = 1;
+ desc = "No longer cooks and boils stuff."
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"BA" = (
+/obj/structure/broken_flooring/corner/directional/south,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"BI" = (
+/obj/machinery/door/airlock/command/glass{
+ name = "Quartermaster's Office"
+ },
+/obj/effect/mapping_helpers/airlock/access/any/away/command,
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"BN" = (
+/obj/structure/flora/rock/pile/style_random,
+/turf/open/misc/asteroid/airless,
+/area/space)
+"BW" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"BX" = (
+/obj/effect/decal/cleanable/robot_debris/old,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Ci" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Ct" = (
+/obj/machinery/conveyor/auto{
+ dir = 6
+ },
+/obj/machinery/light/broken{
+ dir = 1
+ },
+/obj/structure/sign/warning/vacuum/directional/north,
+/obj/structure/window/reinforced/spawner/directional/east,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Cv" = (
+/obj/structure/chair/office{
+ dir = 8
+ },
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-157"
+ },
+/area/virtual_domain/powered)
+"CA" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/broken_flooring/side{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"CQ" = (
+/obj/effect/spawner/random/trash/botanical_waste,
+/obj/item/trash/chips,
+/obj/structure/closet/secure_closet/freezer/empty/open,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"CR" = (
+/obj/structure/flora/rock/pile/style_random,
+/turf/open/misc/asteroid/airless,
+/area/virtual_domain/powered)
+"CX" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Dr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/light/dim{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"DA" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/catwalk_floor/iron,
+/area/virtual_domain/powered)
+"DE" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"DP" = (
+/obj/structure/table/reinforced,
+/obj/effect/spawner/random/food_or_drink/snack,
+/turf/open/floor/iron/cafeteria,
+/area/virtual_domain/powered)
+"Ex" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-137"
+ },
+/area/virtual_domain/powered)
+"Ez" = (
+/obj/structure/flora/rock/style_random,
+/turf/open/misc/asteroid/airless,
+/area/space)
+"EI" = (
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/oil,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"EJ" = (
+/obj/machinery/recycler/deathtrap{
+ dir = 8
+ },
+/obj/machinery/conveyor/auto{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Fa" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/closet/crate/maint,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Ff" = (
+/obj/structure/disposalpipe/trunk/multiz{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Fo" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron/cafeteria,
+/area/virtual_domain/powered)
+"Fr" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/closet/crate/preopen,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Fw" = (
+/obj/structure/flora/bush/fullgrass/style_random,
+/obj/structure/flora/rock/pile/style_random,
+/obj/structure/flora/bush/flowers_yw/style_random,
+/obj/structure/window/reinforced/spawner/directional/north,
+/obj/structure/window/reinforced/spawner/directional/west,
+/turf/open/floor/grass,
+/area/virtual_domain/powered)
+"FK" = (
+/obj/effect/mapping_helpers/burnt_floor,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"FO" = (
+/turf/open/misc/asteroid/airless,
+/area/virtual_domain/powered)
+"FP" = (
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-110"
+ },
+/area/virtual_domain/powered)
+"Gb" = (
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Ge" = (
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-21"
+ },
+/area/virtual_domain/powered)
+"Gh" = (
+/obj/machinery/door/airlock/maintenance,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Gi" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 9
+ },
+/obj/effect/turf_decal/trimline/yellow/corner,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Gs" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/machinery/light/broken{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Gy" = (
+/obj/machinery/conveyor/auto{
+ dir = 9;
+ inverted = 1;
+ icon_state = "conveyor_map_inverted"
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/window/reinforced/spawner/directional/west,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"GI" = (
+/obj/effect/turf_decal/trimline/yellow/arrow_ccw,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"GV" = (
+/obj/machinery/light/small/red/dim{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes{
+ dir = 9
+ },
+/obj/effect/mapping_helpers/broken_floor,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Hn" = (
+/turf/open/floor/iron/cafeteria,
+/area/virtual_domain/powered)
+"HI" = (
+/obj/structure/broken_flooring/pile/directional/north,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Ib" = (
+/obj/structure/chair/sofa/corp/left{
+ dir = 1
+ },
+/turf/open/floor/carpet/orange,
+/area/virtual_domain/powered)
+"Ip" = (
+/obj/machinery/door/airlock/engineering/glass,
+/obj/effect/mapping_helpers/airlock/access/any/away/supply,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Is" = (
+/obj/machinery/door/airlock/engineering/glass,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"IF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"IK" = (
+/obj/effect/turf_decal/trimline/yellow/line,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"IZ" = (
+/obj/structure/lattice/catwalk{
+ name = "industrial lift"
+ },
+/obj/structure/closet/crate,
+/turf/open/chasm,
+/area/virtual_domain/powered)
+"Jl" = (
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Jm" = (
+/obj/structure/broken_flooring/pile/directional/north,
+/obj/machinery/light/dim,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Jn" = (
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/railing/corner/end/flip{
+ dir = 8
+ },
+/obj/structure/sign/warning/doors/directional/east,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Jq" = (
+/obj/structure/broken_flooring/pile{
+ dir = 1
+ },
+/obj/structure/sign/poster/contraband/random/directional/west,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"JE" = (
+/obj/machinery/light/small/red/dim{
+ dir = 1
+ },
+/obj/structure/sign/warning/chem_diamond/directional/west,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"JR" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"JT" = (
+/obj/structure/lattice/catwalk{
+ name = "industrial lift"
+ },
+/obj/effect/spawner/random/trash/grime,
+/turf/open/chasm,
+/area/virtual_domain/powered)
+"Kb" = (
+/obj/effect/mob_spawn/corpse/human/factory/guard,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Kt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"KO" = (
+/obj/structure/broken_flooring/side/directional/north,
+/obj/machinery/light/small/red/dim,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"KX" = (
+/obj/structure/lattice/catwalk{
+ name = "industrial lift"
+ },
+/turf/open/chasm,
+/area/virtual_domain/powered)
+"Ln" = (
+/obj/structure/disposalpipe/broken{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Lp" = (
+/obj/effect/turf_decal/trimline/yellow/line,
+/obj/machinery/light/broken,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"LN" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 10
+ },
+/obj/machinery/light/dim{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"LU" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 6
+ },
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Mc" = (
+/obj/effect/turf_decal/trimline/yellow/warning,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Mh" = (
+/obj/machinery/conveyor/auto{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Mi" = (
+/obj/effect/mob_spawn/corpse/human/factory,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Mj" = (
+/turf/closed/mineral,
+/area/virtual_domain/powered)
+"Mu" = (
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Mx" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 1
+ },
+/obj/structure/filingcabinet,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"My" = (
+/obj/machinery/conveyor/auto{
+ dir = 1
+ },
+/obj/machinery/light/small/red/dim{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"MI" = (
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-74"
+ },
+/area/virtual_domain/powered)
+"MN" = (
+/obj/effect/turf_decal/tile/dark,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Nc" = (
+/obj/structure/chair/plastic{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Nu" = (
+/obj/effect/turf_decal/trimline/yellow/line,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"NW" = (
+/obj/effect/decal/cleanable/dirt,
+/mob/living/basic/hivebot/strong,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Ok" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"On" = (
+/obj/structure/broken_flooring/side{
+ dir = 4
+ },
+/obj/machinery/light/broken{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"OJ" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/stripes{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"OL" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"OQ" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/sign/poster/ripped/directional/west,
+/turf/open/floor/carpet/orange,
+/area/virtual_domain/powered)
+"OR" = (
+/obj/machinery/light/broken,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Po" = (
+/obj/machinery/light/small/red/dim{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/broken_flooring/corner,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Pr" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 5
+ },
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 8
+ },
+/obj/structure/sign/poster/official/random/directional/east,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"PH" = (
+/obj/structure/railing/corner/end/flip{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Qd" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 6
+ },
+/obj/machinery/light/dim{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Qh" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/light/broken{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Qj" = (
+/obj/machinery/light/dim{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Qo" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"Qr" = (
+/turf/closed/indestructible/fakedoor/maintenance{
+ name = "maintenance access"
+ },
+/area/virtual_domain/powered)
+"Qv" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 9
+ },
+/obj/machinery/light/small/red/dim{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Qy" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/disposaloutlet{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"QI" = (
+/obj/structure/sign/calendar/directional/north,
+/obj/effect/spawner/random/trash/garbage,
+/turf/open/floor/iron/cafeteria,
+/area/virtual_domain/powered)
+"QK" = (
+/obj/structure/table,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"QN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"QP" = (
+/obj/structure/sign/poster/contraband/random/directional/east,
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"QW" = (
+/obj/machinery/conveyor/auto{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/cobweb,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Ru" = (
+/obj/machinery/door/airlock/external/glass/ruin,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Ry" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/machinery/disposal/bin,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"RJ" = (
+/turf/closed/indestructible/binary,
+/area/virtual_domain/powered)
+"RK" = (
+/obj/effect/decal/cleanable/blood/drip,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"RZ" = (
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Sg" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Sl" = (
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"SC" = (
+/mob/living/basic/hivebot/strong,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"SR" = (
+/obj/effect/turf_decal/trimline/yellow/line,
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"SS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/mineral,
+/area/virtual_domain/powered)
+"SU" = (
+/obj/effect/spawner/structure/window,
+/obj/item/stack/rods/two,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"SZ" = (
+/obj/structure/table/reinforced,
+/obj/effect/spawner/random/food_or_drink/booze,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Te" = (
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 5
+ },
+/obj/effect/mob_spawn/corpse/human/factory/qm,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Tn" = (
+/obj/structure/broken_flooring/corner{
+ dir = 4
+ },
+/mob/living/basic/hivebot,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Tp" = (
+/obj/machinery/door/poddoor/shutters/indestructible{
+ dir = 4;
+ id = "factorylockdown"
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Tt" = (
+/obj/machinery/conveyor/auto{
+ dir = 9
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"TH" = (
+/obj/structure/broken_flooring/corner/directional/south,
+/obj/item/ammo_casing/shotgun/buckshot/spent,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Ue" = (
+/obj/structure/table/reinforced,
+/obj/machinery/light/small/red/dim{
+ dir = 8
+ },
+/obj/structure/sign/poster/official/cleanliness/directional/west,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Uw" = (
+/obj/machinery/light/dim{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"UO" = (
+/obj/structure/broken_flooring/side/directional/north,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"UV" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 6
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"UX" = (
+/obj/effect/turf_decal/trimline/yellow/line,
+/obj/machinery/light/small/red/dim,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"UY" = (
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Vb" = (
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/light/broken,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Vg" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/light/small/red/dim,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Vh" = (
+/obj/structure/table/reinforced,
+/turf/open/floor/iron/cafeteria,
+/area/virtual_domain/powered)
+"Vy" = (
+/obj/structure/broken_flooring/singular{
+ dir = 4
+ },
+/obj/effect/mob_spawn/corpse/human/factory/guard,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"VA" = (
+/obj/machinery/light/small/red/dim{
+ dir = 1
+ },
+/obj/structure/table,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"VJ" = (
+/obj/structure/broken_flooring/corner{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"VL" = (
+/obj/structure/sign/warning/secure_area/directional/south,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"VO" = (
+/obj/machinery/light/broken{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Wd" = (
+/obj/structure/lattice/catwalk{
+ name = "industrial lift"
+ },
+/obj/structure/railing,
+/turf/open/chasm,
+/area/virtual_domain/powered)
+"Wp" = (
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"WT" = (
+/obj/effect/turf_decal/stripes{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"WV" = (
+/obj/machinery/conveyor/auto{
+ dir = 10;
+ inverted = 1;
+ icon_state = "conveyor_map_inverted"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Xb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/virtual_domain/powered)
+"Xc" = (
+/obj/effect/turf_decal/trimline/yellow/line,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Xm" = (
+/obj/item/gun/ballistic/shotgun/lethal,
+/obj/machinery/light/broken{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Xo" = (
+/obj/machinery/conveyor/auto{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Xw" = (
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/yellow/line{
+ dir = 10
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"XL" = (
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 5
+ },
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 4
+ },
+/obj/structure/sign/warning/vacuum/external/directional/south,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"XN" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"XO" = (
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"XP" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/railing/corner/end{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"XQ" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
+ dir = 4
+ },
+/obj/machinery/light/dim{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"XR" = (
+/obj/effect/turf_decal/trimline/yellow/warning{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Yc" = (
+/obj/item/gun/ballistic/revolver,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Yl" = (
+/obj/structure/broken_flooring/corner/directional/west,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Ym" = (
+/mob/living/simple_animal/pet/cat/space,
+/obj/structure/bed/dogbed{
+ name = "cat bed"
+ },
+/obj/item/toy/plush/moth{
+ pixel_x = 3;
+ pixel_y = 4
+ },
+/obj/machinery/light/small/dim/directional/south,
+/obj/structure/sign/poster/official/moth_hardhat/directional/west,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Yt" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Yz" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/door/poddoor/shutters/indestructible{
+ id = "factorylockdown"
+ },
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"YF" = (
+/obj/machinery/light/small/red/dim,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"YL" = (
+/obj/effect/turf_decal/tile/yellow/anticorner/contrasted,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"YP" = (
+/obj/effect/turf_decal/trimline/yellow/corner{
+ dir = 1
+ },
+/obj/machinery/light/dim,
+/turf/open/floor/iron,
+/area/virtual_domain/powered)
+"Zb" = (
+/obj/effect/decal/cleanable/oil,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"Zg" = (
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-157"
+ },
+/area/virtual_domain/powered)
+"Zy" = (
+/obj/structure/table,
+/obj/item/flashlight/lantern,
+/turf/open/floor/plating,
+/area/virtual_domain/powered)
+"ZI" = (
+/turf/open/floor/carpet/royalblue{
+ icon_state = "carpet_royalblue-203"
+ },
+/area/virtual_domain/powered)
+"ZP" = (
+/obj/structure/railing,
+/turf/open/floor/iron/stairs/right{
+ dir = 8
+ },
+/area/virtual_domain/powered)
+
+(1,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(2,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+Mj
+Mj
+eg
+eg
+SS
+eg
+eg
+eg
+Xb
+Mj
+Mj
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(3,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+Mj
+Bx
+SZ
+Ue
+CQ
+zB
+eg
+OQ
+bs
+Ib
+Mj
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+yQ
+yQ
+"}
+(4,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+eg
+ho
+ho
+qN
+ho
+zO
+eg
+pa
+bs
+zp
+eY
+RJ
+RJ
+Mj
+RJ
+RJ
+rO
+rO
+RJ
+RJ
+xF
+"}
+(5,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+eg
+eg
+eg
+eg
+eg
+eg
+eg
+RJ
+eg
+um
+DP
+Vh
+Vh
+Hn
+tr
+fg
+ZP
+Fw
+eY
+Mj
+Mj
+Mj
+AU
+AU
+AU
+rO
+rO
+rO
+RJ
+"}
+(6,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+eg
+vA
+Dr
+bw
+Jq
+gc
+eg
+RJ
+eg
+Hn
+fK
+fK
+fK
+Hn
+lC
+hi
+FK
+eY
+eY
+Mj
+Ez
+AU
+aK
+aK
+AU
+AU
+BN
+rO
+RJ
+"}
+(7,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+eg
+jQ
+lt
+kU
+vU
+lN
+eg
+RJ
+eg
+QI
+Fo
+Hn
+Hn
+Hn
+tr
+hi
+Ln
+eY
+Mj
+Mj
+AU
+AU
+BN
+aK
+aK
+aK
+AU
+rO
+RJ
+"}
+(8,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+eg
+uU
+gj
+kU
+Tn
+OR
+eg
+RJ
+eg
+eg
+uk
+pf
+pf
+eg
+eg
+qV
+Vb
+eY
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+RJ
+"}
+(9,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+eg
+ki
+gj
+kU
+kU
+kU
+eg
+RJ
+eg
+kU
+kU
+nD
+nS
+kU
+Qj
+FK
+nc
+eY
+aK
+aK
+aK
+aK
+aK
+aK
+AU
+aK
+aK
+aK
+RJ
+"}
+(10,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+eg
+eg
+kJ
+lx
+lx
+lp
+eg
+RJ
+eg
+mu
+AJ
+mu
+eJ
+MN
+BW
+hi
+Sg
+eY
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+RJ
+"}
+(11,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+eg
+eg
+eg
+Qr
+eg
+eg
+JE
+gj
+pi
+kU
+VL
+eg
+eg
+eg
+VO
+kU
+Fr
+jw
+qk
+XR
+vQ
+Vg
+eY
+aK
+aK
+aK
+JR
+JR
+JR
+JR
+JR
+Qo
+aK
+RJ
+"}
+(12,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+RJ
+eg
+eg
+eg
+eg
+eg
+eg
+yM
+eg
+GV
+WT
+xj
+qk
+Qh
+XP
+lW
+ww
+EI
+Kt
+Qh
+mu
+Yz
+xl
+HI
+kU
+Bh
+Kb
+kU
+hi
+CX
+eY
+eY
+aK
+aK
+JR
+JR
+JR
+JR
+JR
+JR
+aK
+RJ
+"}
+(13,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+RJ
+eg
+VA
+bA
+eg
+kU
+sB
+WT
+mh
+kU
+pv
+AP
+IZ
+KX
+Wd
+uv
+DE
+Mi
+gj
+xT
+hi
+tl
+IF
+kU
+hi
+Yc
+kU
+kU
+vU
+lB
+XL
+eg
+tr
+eY
+JR
+JR
+JR
+JR
+JR
+JR
+aK
+RJ
+"}
+(14,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+kU
+kU
+Zy
+kU
+Gh
+Kt
+mu
+mu
+mu
+uF
+xl
+AP
+KX
+JT
+bG
+qk
+DA
+DA
+zE
+gc
+mu
+Yz
+lW
+pi
+kU
+kU
+nL
+BW
+hi
+hg
+Wp
+Ru
+hi
+gs
+JR
+JR
+JR
+JR
+JR
+JR
+aK
+RJ
+"}
+(15,1,1) = {"
+yQ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+kU
+QP
+kU
+eg
+qT
+Gb
+Uw
+iz
+jS
+gj
+rJ
+KX
+Aw
+Wd
+Ff
+lN
+XO
+gj
+DE
+SC
+tl
+qk
+mu
+mu
+xl
+kU
+oX
+hi
+cF
+cw
+eY
+tr
+eY
+JR
+JR
+JR
+JR
+JR
+JR
+aK
+RJ
+"}
+(16,1,1) = {"
+yQ
+RJ
+Mj
+Mj
+Mj
+Mj
+RJ
+eg
+eg
+eg
+eg
+Xb
+yB
+eg
+eg
+kU
+qk
+PH
+dA
+Po
+Jn
+aw
+OJ
+CA
+QN
+kU
+Uw
+tl
+kU
+Mc
+kU
+kh
+fj
+kU
+FK
+CX
+eY
+eY
+aK
+aK
+JR
+JR
+JR
+JR
+JR
+JR
+aK
+RJ
+"}
+(17,1,1) = {"
+yQ
+RJ
+Mj
+BN
+AU
+Mj
+Mj
+Mj
+eg
+QW
+My
+Qy
+kU
+po
+eg
+tr
+Is
+tr
+eg
+eg
+eg
+kU
+pi
+kU
+lI
+YF
+eg
+eg
+op
+kU
+BA
+iw
+kU
+kU
+FK
+rz
+eY
+aK
+aK
+aK
+JR
+JR
+JR
+JR
+JR
+ev
+aK
+RJ
+"}
+(18,1,1) = {"
+yQ
+RJ
+aK
+AU
+AU
+AU
+aK
+aK
+eg
+Ct
+oN
+Gy
+jW
+xT
+eg
+Tp
+Tp
+Tp
+eg
+Ym
+eg
+eg
+xa
+xa
+xa
+eg
+eg
+eg
+kU
+Zb
+kU
+Yt
+kU
+UO
+hi
+CX
+eY
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+RJ
+"}
+(19,1,1) = {"
+RJ
+RJ
+aK
+aK
+aK
+aK
+wl
+aK
+yX
+ve
+Tt
+Xo
+DE
+oX
+eg
+Sl
+gV
+dz
+eg
+uC
+eg
+qK
+mh
+kU
+kU
+Qj
+VJ
+eg
+kU
+kU
+kU
+gj
+kU
+kU
+hi
+Ok
+eY
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+RJ
+"}
+(20,1,1) = {"
+RJ
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+tr
+uz
+Mh
+EJ
+kU
+kU
+mE
+Mu
+Yl
+pJ
+eg
+kn
+pb
+kU
+kU
+kU
+Fa
+kU
+YF
+eg
+eg
+pf
+tr
+XN
+eg
+eg
+Ci
+YP
+eY
+eY
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+RJ
+"}
+(21,1,1) = {"
+RJ
+aK
+aK
+aK
+aK
+aK
+Av
+CR
+tr
+kU
+ei
+WV
+pi
+Jm
+eg
+eN
+gN
+GI
+eg
+rc
+mu
+rM
+gc
+vQ
+tE
+mu
+mu
+eg
+Mx
+qc
+ax
+bS
+fe
+pf
+hi
+hi
+af
+eY
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+aK
+RJ
+"}
+(22,1,1) = {"
+RJ
+aK
+aK
+aK
+aK
+aK
+aK
+FO
+eg
+eg
+wg
+uU
+lN
+uz
+eg
+mY
+jH
+rG
+eg
+xT
+Uw
+kU
+kU
+On
+pi
+kU
+Mj
+eg
+wm
+xA
+fZ
+OL
+aL
+Ip
+hi
+lN
+QK
+eY
+aK
+aK
+aK
+aK
+BN
+aK
+aK
+aK
+aK
+RJ
+"}
+(23,1,1) = {"
+RJ
+aK
+aK
+aK
+aK
+aK
+AU
+FO
+Mj
+eg
+eg
+Mj
+Mj
+eY
+eY
+UO
+jH
+Nu
+eg
+eg
+eg
+eg
+eg
+Mj
+Mj
+Mj
+Mj
+eg
+RZ
+vQ
+wW
+wU
+dP
+tr
+hi
+hi
+Nc
+eY
+aK
+BN
+AU
+aK
+aK
+aK
+aK
+aK
+aK
+RJ
+"}
+(24,1,1) = {"
+RJ
+RJ
+aK
+aK
+aK
+AU
+Ez
+Mj
+Mj
+RJ
+Mj
+Mj
+Vy
+hi
+eY
+CX
+jH
+Nu
+eg
+Gi
+Qd
+jv
+fR
+cB
+Mj
+RJ
+RJ
+eg
+Ry
+hk
+pI
+XQ
+YL
+eg
+bq
+hi
+Mj
+eY
+Mj
+Mj
+AU
+AU
+aK
+aK
+aK
+aK
+rO
+RJ
+"}
+(25,1,1) = {"
+yQ
+RJ
+aK
+AU
+BN
+AU
+Mj
+Mj
+RJ
+RJ
+eY
+Xm
+TH
+fw
+eY
+qW
+hi
+dx
+pf
+UV
+sn
+uP
+Ge
+vb
+eg
+RJ
+RJ
+eg
+Mj
+Mj
+eg
+eg
+eg
+eg
+eg
+Mj
+Mj
+RJ
+RJ
+Mj
+Mj
+Mj
+RJ
+RJ
+Mj
+Mj
+Mj
+RJ
+"}
+(26,1,1) = {"
+yQ
+RJ
+RJ
+RJ
+RJ
+rO
+Mj
+RJ
+RJ
+RJ
+eY
+Bd
+vL
+hi
+vU
+sW
+hi
+SR
+SU
+CX
+FP
+wh
+Zg
+Nu
+eg
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+"}
+(27,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+RJ
+RJ
+yQ
+RJ
+eY
+Jl
+RK
+BX
+eY
+CX
+RK
+iI
+BI
+ws
+ud
+bx
+Cv
+Nu
+eg
+RJ
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(28,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+eY
+NW
+UY
+KO
+eY
+fl
+jH
+Nu
+uk
+CX
+FP
+wq
+Zg
+Nu
+eg
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(29,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+eY
+xk
+Te
+xT
+eY
+CX
+jH
+Nu
+pf
+Xw
+MI
+ZI
+Ex
+xE
+eg
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(30,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+eY
+eY
+eY
+eY
+eY
+CX
+jH
+Xc
+eg
+Pr
+LN
+xM
+Qv
+LU
+Mj
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(31,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+RJ
+RJ
+RJ
+eg
+Gs
+jH
+UX
+eg
+eg
+eg
+eg
+Mj
+Mj
+Mj
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(32,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+eg
+Ok
+nz
+IK
+eg
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(33,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+Mj
+CX
+hi
+Nu
+RJ
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(34,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+Mj
+CX
+RJ
+Lp
+eg
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(35,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+fl
+RJ
+RJ
+RJ
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
+(36,1,1) = {"
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+RJ
+RJ
+RJ
+RJ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+yQ
+"}
diff --git a/_maps/virtual_domains/pirates.dmm b/_maps/virtual_domains/pirates.dmm
new file mode 100644
index 00000000000..9c970f78c37
--- /dev/null
+++ b/_maps/virtual_domains/pirates.dmm
@@ -0,0 +1,2601 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"ag" = (
+/obj/effect/mapping_helpers/burnt_floor,
+/obj/effect/decal/cleanable/garbage,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"by" = (
+/obj/effect/turf_decal/weather/sand{
+ dir = 5
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"bz" = (
+/obj/structure/flora/bush/grassy{
+ pixel_y = 8
+ },
+/obj/structure/flora/bush/lavendergrass{
+ pixel_y = -10
+ },
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"bP" = (
+/obj/structure/flora/bush/flowers_br/style_random,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"cl" = (
+/obj/structure/flora/rock/style_3,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"ct" = (
+/obj/structure/closet/cabinet,
+/obj/item/clothing/head/costume/pirate/armored,
+/obj/item/clothing/suit/costume/pirate/captain/armored,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/wood/parquet,
+/area/virtual_domain/powered)
+"cx" = (
+/turf/closed/indestructible/binary,
+/area/virtual_domain/powered)
+"cJ" = (
+/obj/item/stack/cannonball/shellball{
+ pixel_x = 13;
+ pixel_y = 11
+ },
+/obj/item/stack/cannonball{
+ pixel_x = 9;
+ pixel_y = 9
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"cQ" = (
+/obj/structure/flora/grass/jungle/b{
+ pixel_x = -15;
+ pixel_y = 9
+ },
+/obj/structure/flora/rock/pile/jungle/large/style_2{
+ pixel_x = -3;
+ pixel_y = -1
+ },
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"dp" = (
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"dA" = (
+/obj/structure/bonfire/prelit,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"dQ" = (
+/obj/structure/flora/rock/style_4,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"eb" = (
+/obj/structure/flora/bush/sparsegrass,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"eD" = (
+/obj/structure/flora/coconuts{
+ pixel_x = 9;
+ pixel_y = -14
+ },
+/obj/structure/flora/tree/palm/style_2,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"eQ" = (
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"eW" = (
+/obj/effect/turf_decal/weather/sand{
+ dir = 6
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"fx" = (
+/obj/structure/fluff/beach_umbrella{
+ pixel_x = -7;
+ pixel_y = -10
+ },
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"gk" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"gw" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"ht" = (
+/obj/structure/bookcase/random/fiction,
+/turf/open/floor/wood/parquet,
+/area/virtual_domain/powered)
+"hH" = (
+/obj/item/clothing/suit/armor/militia{
+ pixel_x = -5;
+ pixel_y = 12
+ },
+/obj/effect/turf_decal/siding/wood{
+ dir = 1
+ },
+/obj/item/clothing/suit/armor/militia{
+ pixel_x = -5;
+ pixel_y = 6
+ },
+/obj/item/clothing/suit/armor/militia{
+ pixel_x = -5;
+ pixel_y = -3
+ },
+/obj/item/clothing/head/costume/fancy{
+ pixel_x = 6;
+ pixel_y = 12
+ },
+/obj/item/clothing/head/costume/fancy{
+ pixel_x = 6;
+ pixel_y = 6
+ },
+/obj/item/clothing/head/hats/coordinator{
+ pixel_x = 8;
+ pixel_y = -5
+ },
+/obj/structure/closet/cabinet,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"hM" = (
+/obj/structure/closet/crate/goldcrate,
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"hW" = (
+/obj/structure/chair/comfy/carp{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"iM" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/mob/living/simple_animal/hostile/pirate/ranged/space,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"iO" = (
+/obj/effect/turf_decal/weather/sand{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"jl" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 1
+ },
+/obj/structure/table/wood,
+/obj/item/flashlight/flare/torch{
+ pixel_y = 10;
+ pixel_x = 7
+ },
+/obj/item/reagent_containers/cup/bucket/wooden{
+ pixel_y = -16;
+ pixel_x = 12
+ },
+/obj/machinery/recharger{
+ pixel_y = 6;
+ pixel_x = -5
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"jz" = (
+/obj/effect/mapping_helpers/burnt_floor,
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"jB" = (
+/obj/effect/turf_decal/weather/sand{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/machinery/jukebox,
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"jC" = (
+/obj/structure/table/wood,
+/obj/effect/turf_decal/siding/wood{
+ dir = 8
+ },
+/obj/item/reagent_containers/cup/glass/bottle/rum{
+ desc = "Rum with ghostly properties that can help the drinker enter the spirit realm. It has fermented under the sea of space for ages.";
+ name = "Ghost Pirate Rum";
+ pixel_x = -4;
+ pixel_y = 12
+ },
+/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
+ pixel_x = -7;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
+ pixel_x = 3;
+ pixel_y = 7
+ },
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"jQ" = (
+/obj/item/gun/energy/laser/hellgun{
+ pixel_y = 10
+ },
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"kg" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"kl" = (
+/obj/structure/cannon,
+/obj/effect/turf_decal/siding/wood,
+/obj/effect/decal/cleanable/ash/large{
+ pixel_y = -5;
+ pixel_x = 8
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"lC" = (
+/obj/item/stack/cannonball{
+ pixel_x = 7;
+ pixel_y = 8
+ },
+/obj/item/stack/cannonball{
+ pixel_x = 11;
+ pixel_y = -4
+ },
+/obj/effect/turf_decal/weather/sand{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/oil/streak,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"me" = (
+/obj/effect/turf_decal/siding/wood,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"mw" = (
+/obj/structure/flora/grass/jungle/b/style_random{
+ pixel_x = -13;
+ pixel_y = 18
+ },
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"mP" = (
+/obj/structure/flora/bush/fullgrass,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"nz" = (
+/obj/effect/mob_spawn/corpse/human/pirate,
+/turf/open/misc/beach/coast{
+ dir = 8
+ },
+/area/virtual_domain/powered)
+"nQ" = (
+/obj/machinery/loot_locator,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"nS" = (
+/obj/structure/flora/rock/pile/jungle/large,
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"nX" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/mob/living/simple_animal/hostile/pirate/melee/space,
+/turf/open/floor/wood/parquet,
+/area/virtual_domain/powered)
+"oo" = (
+/obj/machinery/smartfridge/drying_rack,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"oU" = (
+/turf/open/misc/beach/coast{
+ dir = 10
+ },
+/area/virtual_domain/powered)
+"pq" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"px" = (
+/obj/structure/headpike/bone{
+ pixel_y = 24
+ },
+/turf/open/misc/beach/coast,
+/area/virtual_domain/powered)
+"pP" = (
+/turf/open/misc/beach/coast,
+/area/virtual_domain/powered)
+"pU" = (
+/obj/effect/mob_spawn/corpse/human/pirate,
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"qj" = (
+/obj/structure/barricade/wooden,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"qm" = (
+/obj/effect/turf_decal/siding/wood,
+/obj/item/melee/sabre{
+ pixel_y = 12;
+ pixel_x = -10
+ },
+/obj/item/gun/energy/laser/retro,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"qx" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/burnt_floor,
+/obj/effect/decal/cleanable/dirt/dust,
+/mob/living/simple_animal/hostile/pirate/ranged,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"qN" = (
+/obj/structure/flora/bush/sunny/style_3{
+ pixel_y = 22
+ },
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"qX" = (
+/obj/effect/turf_decal/weather/sand{
+ dir = 9
+ },
+/obj/structure/fermenting_barrel{
+ pixel_x = 6;
+ pixel_y = 11
+ },
+/obj/effect/mob_spawn/ghost_role/human/pirate/skeleton,
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"sn" = (
+/obj/structure/table/wood,
+/obj/item/book/manual/wiki/ordnance,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"so" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"th" = (
+/obj/effect/turf_decal/weather/sand,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"tk" = (
+/obj/structure/flora/bush/flowers_pp,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"to" = (
+/mob/living/simple_animal/hostile/pirate/melee,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"ub" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"uw" = (
+/obj/structure/barricade/sandbags,
+/obj/effect/turf_decal/weather/sand{
+ dir = 4
+ },
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"uM" = (
+/obj/structure/flora/bush/stalky{
+ pixel_y = 13;
+ pixel_x = -8
+ },
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"uT" = (
+/obj/structure/closet/crate/grave,
+/obj/structure/flora/grass/jungle/b,
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"wb" = (
+/obj/structure/flora/rock,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"we" = (
+/obj/effect/mine/explosive/light,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"xc" = (
+/turf/open/misc/beach/coast{
+ dir = 4
+ },
+/area/virtual_domain/powered)
+"xg" = (
+/turf/template_noop,
+/area/template_noop)
+"xm" = (
+/obj/structure/barricade/wooden/crude,
+/turf/closed/wall/mineral/wood/nonmetal,
+/area/virtual_domain/powered)
+"xB" = (
+/obj/structure/fermenting_barrel/gunpowder{
+ pixel_x = -4;
+ pixel_y = 17
+ },
+/obj/structure/fermenting_barrel/gunpowder{
+ pixel_x = 4
+ },
+/obj/item/stack/cannonball/four{
+ pixel_x = -9;
+ pixel_y = -10
+ },
+/obj/item/stack/cannonball{
+ pixel_x = 3;
+ pixel_y = 8
+ },
+/obj/item/reagent_containers/cup/bucket/wooden{
+ pixel_y = -10
+ },
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"xC" = (
+/obj/effect/turf_decal/weather/dirt{
+ dir = 1
+ },
+/obj/effect/turf_decal/weather/dirt,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"xI" = (
+/obj/structure/flora/rock/pile/style_2,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"yc" = (
+/obj/effect/turf_decal/weather/dirt,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"ye" = (
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"yi" = (
+/mob/living/simple_animal/hostile/pirate/melee,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"yq" = (
+/obj/structure/barricade/sandbags,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"yw" = (
+/obj/effect/mapping_helpers/burnt_floor,
+/mob/living/simple_animal/hostile/pirate/ranged,
+/obj/structure/chair/wood,
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"yA" = (
+/obj/item/bedsheet/rainbow/double,
+/obj/structure/bed/double,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"zf" = (
+/obj/structure/flora/bush/flowers_br/style_random,
+/obj/structure/flora/bush/ferny,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"zg" = (
+/obj/structure/flora/rock/pile/style_3,
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"zR" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"Ax" = (
+/obj/effect/turf_decal/weather/dirt,
+/obj/effect/turf_decal/weather/dirt,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"AU" = (
+/obj/effect/turf_decal/weather/dirt{
+ dir = 1
+ },
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"BC" = (
+/obj/effect/turf_decal/siding/wood,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"BO" = (
+/obj/structure/bookcase/random/adult,
+/obj/effect/decal/cleanable/cobweb,
+/turf/open/floor/wood/parquet,
+/area/virtual_domain/powered)
+"Cc" = (
+/obj/structure/flora/tree/palm,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Ct" = (
+/turf/open/misc/beach/coast/corner,
+/area/virtual_domain/powered)
+"Dm" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/table/wood,
+/obj/item/flashlight/flare/torch{
+ pixel_y = 10
+ },
+/obj/item/flashlight/flare/torch{
+ pixel_x = 8;
+ pixel_y = 6
+ },
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"DJ" = (
+/obj/effect/mapping_helpers/burnt_floor,
+/obj/structure/bed/maint{
+ pixel_x = -10;
+ pixel_y = 9
+ },
+/obj/effect/decal/cleanable/wrapping,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"DL" = (
+/obj/structure/flora/bush/sunny,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"ED" = (
+/obj/effect/turf_decal/siding/wood,
+/obj/effect/turf_decal/weather/sand{
+ dir = 10
+ },
+/obj/effect/turf_decal/weather/sand{
+ dir = 9
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"EZ" = (
+/obj/effect/turf_decal/weather/sand{
+ dir = 9
+ },
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"FG" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/item/claymore/cutlass,
+/obj/item/clothing/head/costume/pirate/bandana/armored{
+ pixel_x = -9;
+ pixel_y = 7
+ },
+/obj/structure/table/wood,
+/obj/item/gun/energy/laser{
+ pixel_y = -3
+ },
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"FT" = (
+/turf/closed/mineral/random/jungle,
+/area/virtual_domain/powered)
+"GF" = (
+/obj/effect/turf_decal/weather/dirt,
+/obj/structure/flora/rock/pile,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"GG" = (
+/obj/structure/barricade/sandbags,
+/obj/effect/turf_decal/weather/sand{
+ dir = 6
+ },
+/obj/item/binoculars{
+ pixel_x = -1;
+ pixel_y = 1
+ },
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"Hp" = (
+/obj/effect/turf_decal/siding/wood,
+/mob/living/simple_animal/hostile/pirate/ranged,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"HY" = (
+/turf/open/misc/beach/coast{
+ dir = 6
+ },
+/area/virtual_domain/powered)
+"It" = (
+/obj/structure/flora/bush/sparsegrass,
+/obj/structure/flora/bush/lavendergrass,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"Iz" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/bed/maint,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"IF" = (
+/obj/effect/turf_decal/weather/dirt{
+ dir = 4
+ },
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"IG" = (
+/obj/effect/mob_spawn/corpse/human/pirate,
+/obj/effect/decal/cleanable/blood/gibs/old,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"IM" = (
+/obj/effect/turf_decal/weather/sand{
+ dir = 10
+ },
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"Jo" = (
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"Jr" = (
+/obj/structure/headpike/bone,
+/turf/open/misc/beach/coast,
+/area/virtual_domain/powered)
+"Jv" = (
+/obj/effect/turf_decal/siding/wood,
+/obj/effect/mapping_helpers/broken_floor,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"JT" = (
+/obj/effect/decal/cleanable/ants,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"Kb" = (
+/obj/structure/railing{
+ color = "#4C3117";
+ name = "wooden railing"
+ },
+/obj/effect/decal/cleanable/vomit/old,
+/obj/effect/turf_decal/weather/sand{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Kl" = (
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Kw" = (
+/obj/machinery/door/airlock/vault{
+ color = "#825427";
+ name = "Ye Olde Strong Door"
+ },
+/turf/open/floor/wood/parquet,
+/area/virtual_domain/powered)
+"KC" = (
+/obj/effect/turf_decal/weather/dirt{
+ dir = 5
+ },
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"KG" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 1
+ },
+/obj/structure/table/wood,
+/obj/item/gun/energy/laser/musket{
+ pixel_y = 7
+ },
+/obj/item/gun/energy/laser/musket{
+ pixel_y = 2
+ },
+/obj/item/gun/energy/laser/musket{
+ pixel_y = -3
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"KQ" = (
+/obj/structure/flora/rock/style_2,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"Ld" = (
+/obj/structure/flora/rock/pile,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"Ma" = (
+/obj/structure/flora/bush/sparsegrass/style_random,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"Mi" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/decal/cleanable/oil,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"MW" = (
+/obj/effect/turf_decal/weather/sand{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Nh" = (
+/obj/structure/flora/rock/pile/jungle/style_3{
+ pixel_x = -15;
+ pixel_y = -4
+ },
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"Nk" = (
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Nz" = (
+/obj/structure/flora/bush/jungle,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"NI" = (
+/obj/structure/railing{
+ color = "#4C3117";
+ name = "wooden railing"
+ },
+/obj/effect/turf_decal/weather/sand{
+ dir = 9
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"ON" = (
+/obj/item/kirbyplants/organic/plant21{
+ pixel_x = -8
+ },
+/obj/structure/filingcabinet{
+ pixel_x = 11
+ },
+/turf/open/floor/wood/parquet,
+/area/virtual_domain/powered)
+"OP" = (
+/obj/structure/flora/bush/stalky,
+/turf/open/misc/beach/coast,
+/area/virtual_domain/powered)
+"Pq" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/burnt_floor,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/bed/maint{
+ pixel_x = 2;
+ pixel_y = 13
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Pz" = (
+/obj/structure/table/wood,
+/mob/living/simple_animal/parrot{
+ name = "pepper"
+ },
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"PQ" = (
+/obj/structure/flora/grass/jungle/b,
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"Qb" = (
+/obj/structure/flora/rock{
+ pixel_x = 7
+ },
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"Rr" = (
+/obj/structure/bed/maint{
+ pixel_x = -5;
+ pixel_y = 9
+ },
+/obj/effect/turf_decal/weather/sand{
+ dir = 6
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"RR" = (
+/obj/effect/mapping_helpers/broken_floor,
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"Sm" = (
+/obj/structure/flora/tree/jungle,
+/obj/structure/flora/bush/fullgrass/style_random,
+/turf/open/misc/grass,
+/area/virtual_domain/powered)
+"St" = (
+/obj/structure/table/wood,
+/obj/item/melee/energy/sword/pirate{
+ pixel_y = 10
+ },
+/obj/item/clothing/mask/cigarette/cigar{
+ pixel_x = 4
+ },
+/obj/item/lighter{
+ pixel_x = 10;
+ pixel_y = -8
+ },
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"Tp" = (
+/turf/open/misc/beach/coast/corner{
+ dir = 1
+ },
+/area/virtual_domain/powered)
+"Tt" = (
+/obj/structure/cannon{
+ dir = 1
+ },
+/obj/effect/turf_decal/siding/wood{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"TO" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 8
+ },
+/obj/machinery/light/small/directional/south,
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/floor/carpet/blue,
+/area/virtual_domain/powered)
+"TP" = (
+/obj/effect/turf_decal/weather/dirt{
+ dir = 4
+ },
+/turf/open/misc/beach/coast{
+ dir = 6
+ },
+/area/virtual_domain/powered)
+"TQ" = (
+/obj/effect/mapping_helpers/broken_floor,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/bed/maint{
+ pixel_x = 2;
+ pixel_y = 1
+ },
+/obj/effect/decal/cleanable/cobweb,
+/obj/item/toy/plush/beeplushie,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Uy" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/virtual_domain/powered)
+"UE" = (
+/obj/structure/barricade/sandbags,
+/obj/effect/turf_decal/weather/sand{
+ dir = 10
+ },
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"Vg" = (
+/obj/effect/mob_spawn/corpse/human/pirate/melee,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"Vk" = (
+/obj/structure/barricade/sandbags,
+/obj/effect/turf_decal/weather/sand,
+/turf/open/floor/wood{
+ icon_state = "wood_large"
+ },
+/area/virtual_domain/powered)
+"VC" = (
+/obj/effect/mob_spawn/corpse/human/damaged,
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"VF" = (
+/turf/open/water/beach,
+/area/virtual_domain/powered)
+"VX" = (
+/obj/effect/mapping_helpers/burnt_floor,
+/obj/structure/rack{
+ icon = 'icons/obj/fluff/general.dmi';
+ icon_state = "minibar";
+ name = "skeletal minibar"
+ },
+/obj/item/storage/bag/money/dutchmen{
+ pixel_y = 13
+ },
+/turf/open/floor/wood/parquet,
+/area/virtual_domain/powered)
+"WM" = (
+/obj/structure/flora/rock/pile/jungle/style_2,
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+"WP" = (
+/turf/open/floor/wood/parquet,
+/area/virtual_domain/powered)
+"Xn" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"XG" = (
+/obj/structure/fermenting_barrel/gunpowder{
+ pixel_x = -4;
+ pixel_y = 17
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Yj" = (
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"Yk" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/wood/parquet,
+/area/virtual_domain/powered)
+"Yq" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 10
+ },
+/turf/open/floor/wood,
+/area/virtual_domain/powered)
+"Zk" = (
+/obj/structure/flora/coconuts{
+ pixel_x = 12
+ },
+/obj/structure/flora/tree/palm,
+/turf/open/misc/beach/sand,
+/area/virtual_domain/powered)
+"ZZ" = (
+/obj/structure/flora/grass/jungle,
+/turf/open/misc/dirt/jungle,
+/area/virtual_domain/powered)
+
+(1,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(2,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+FT
+cx
+cx
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(3,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(4,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(5,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+FT
+FT
+FT
+FT
+FT
+FT
+zf
+eb
+we
+FT
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(6,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+cx
+FT
+FT
+FT
+Sm
+Ma
+bz
+JT
+Kl
+Kl
+Kl
+FT
+FT
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(7,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+cx
+cx
+FT
+FT
+FT
+FT
+It
+tk
+DL
+Kl
+Kl
+Kl
+Cc
+Kl
+IG
+FT
+cx
+cx
+FT
+FT
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(8,1,1) = {"
+xg
+xg
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+Nz
+bP
+mP
+to
+Kl
+Kl
+we
+Kl
+Kl
+Kl
+Kl
+we
+cx
+cx
+FT
+FT
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(9,1,1) = {"
+xg
+xg
+xg
+cx
+cx
+FT
+dp
+dp
+dp
+dp
+xB
+yq
+yq
+Kl
+Kl
+Ct
+xc
+xc
+xc
+xc
+xc
+xc
+xc
+HY
+VF
+VF
+VF
+VF
+VF
+cx
+cx
+cx
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(10,1,1) = {"
+xg
+xg
+xg
+cx
+FT
+dp
+dp
+Pq
+qx
+Mi
+th
+Kl
+yq
+Kl
+IG
+OP
+uM
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VC
+VF
+VF
+VF
+VF
+VF
+dp
+cx
+cx
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(11,1,1) = {"
+xg
+xg
+cx
+cx
+FT
+dp
+TQ
+Iz
+DJ
+ag
+eW
+Kl
+Kl
+ED
+Kl
+Jr
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+KQ
+VF
+VF
+VF
+VF
+VF
+dp
+KG
+pq
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+Uy
+"}
+(12,1,1) = {"
+xg
+xg
+cx
+FT
+FT
+dp
+Yj
+MW
+iO
+Rr
+qj
+Kl
+NI
+xm
+Ct
+HY
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+wb
+dp
+jl
+pq
+BC
+ub
+ub
+ub
+ub
+ub
+Xn
+cx
+"}
+(13,1,1) = {"
+cx
+cx
+cx
+FT
+FT
+FT
+qj
+Kl
+Kl
+Kl
+Kl
+Kl
+lC
+kl
+pP
+VF
+VF
+VF
+VF
+VF
+VF
+Vg
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+cl
+dp
+hH
+Nk
+qm
+ub
+ub
+ub
+ub
+ub
+ub
+cx
+"}
+(14,1,1) = {"
+cx
+dp
+dp
+dp
+dp
+dp
+dp
+oo
+Kl
+Kl
+Kl
+Kl
+Kb
+dp
+px
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+dp
+dp
+Nk
+Jv
+ub
+ub
+ub
+ub
+ub
+ub
+cx
+"}
+(15,1,1) = {"
+cx
+dp
+BO
+ht
+VX
+ct
+dp
+yi
+Kl
+dA
+Kl
+Kl
+by
+Hp
+pP
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+me
+ub
+ub
+ub
+ub
+ub
+ub
+cx
+"}
+(16,1,1) = {"
+cx
+dp
+ON
+WP
+nX
+Yk
+Kw
+Kl
+Kl
+Kl
+Kl
+Kl
+Kl
+dp
+px
+VF
+VF
+VF
+VF
+Qb
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+ub
+ub
+ub
+ub
+ub
+ub
+cx
+"}
+(17,1,1) = {"
+cx
+dp
+jC
+iM
+so
+TO
+dp
+Kl
+Kl
+EZ
+IM
+Kl
+Kl
+Kl
+pP
+VF
+VF
+VF
+VF
+cl
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+ub
+ub
+ub
+ub
+ub
+ub
+cx
+"}
+(18,1,1) = {"
+cx
+dp
+sn
+hW
+eQ
+gk
+dp
+dp
+qX
+gw
+jz
+UE
+Kl
+Zk
+pP
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+me
+VF
+ub
+ub
+ub
+ub
+ub
+zR
+cx
+"}
+(19,1,1) = {"
+cx
+dp
+St
+Pz
+nQ
+yA
+dp
+dp
+Dm
+jz
+jz
+Vk
+Kl
+Kl
+pP
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+dp
+BC
+VF
+VF
+VF
+VF
+VF
+VF
+cx
+cx
+"}
+(20,1,1) = {"
+cx
+dp
+dp
+dp
+dp
+dp
+dp
+xm
+FG
+RR
+yw
+Vk
+Kl
+Kl
+pP
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+Tt
+cJ
+Yq
+VF
+VF
+VF
+VF
+VF
+cx
+xg
+"}
+(21,1,1) = {"
+cx
+cx
+cx
+FT
+FT
+Kl
+Kl
+dp
+dp
+jB
+uw
+GG
+Kl
+Kl
+pP
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+xI
+dp
+XG
+BC
+VF
+VF
+VF
+VF
+VF
+cx
+xg
+"}
+(22,1,1) = {"
+xg
+xg
+cx
+FT
+FT
+fx
+Kl
+Kl
+dp
+dp
+Kl
+Kl
+Kl
+Kl
+pP
+VF
+VF
+VF
+VF
+VF
+VF
+dQ
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+kg
+pq
+Ld
+VF
+VF
+VF
+VF
+VF
+cx
+xg
+"}
+(23,1,1) = {"
+xg
+xg
+cx
+FT
+FT
+FT
+Kl
+Kl
+Kl
+Kl
+Kl
+Kl
+Kl
+Kl
+Tp
+oU
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+FT
+FT
+cx
+xg
+"}
+(24,1,1) = {"
+xg
+xg
+cx
+FT
+FT
+FT
+FT
+dp
+Kl
+eD
+Kl
+Kl
+Kl
+Kl
+Kl
+Tp
+nz
+oU
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+FT
+FT
+cx
+xg
+"}
+(25,1,1) = {"
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+Kl
+Kl
+Kl
+Kl
+Kl
+Kl
+yi
+Kl
+Kl
+pP
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+FT
+FT
+FT
+cx
+xg
+"}
+(26,1,1) = {"
+xg
+xg
+xg
+cx
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+TP
+VF
+FT
+FT
+cx
+cx
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+cx
+FT
+FT
+FT
+FT
+cx
+xg
+"}
+(27,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+cx
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+PQ
+AU
+FT
+FT
+FT
+cx
+cx
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+VF
+cx
+cx
+FT
+FT
+FT
+cx
+cx
+xg
+"}
+(28,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+Nh
+AU
+FT
+FT
+FT
+FT
+cx
+cx
+cx
+cx
+VF
+VF
+VF
+VF
+VF
+VF
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+xg
+xg
+"}
+(29,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+cx
+cx
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+ye
+KC
+VF
+FT
+FT
+FT
+FT
+FT
+FT
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(30,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+zg
+ye
+KC
+IF
+VF
+FT
+FT
+FT
+FT
+FT
+cx
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(31,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+ye
+ye
+pU
+AU
+VF
+GF
+WM
+FT
+FT
+FT
+cx
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(32,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+ye
+nS
+KC
+VF
+Ax
+ye
+hM
+FT
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(33,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+ZZ
+ye
+cQ
+KC
+yc
+qN
+ye
+hM
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(34,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+FT
+FT
+FT
+FT
+ye
+ye
+mw
+xC
+uT
+jQ
+Jo
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(35,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+cx
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(36,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+FT
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
+(37,1,1) = {"
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+cx
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+xg
+"}
diff --git a/_maps/virtual_domains/stairs_and_cliffs.dmm b/_maps/virtual_domains/stairs_and_cliffs.dmm
new file mode 100644
index 00000000000..82e15fcc090
--- /dev/null
+++ b/_maps/virtual_domains/stairs_and_cliffs.dmm
@@ -0,0 +1,6056 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"be" = (
+/obj/structure/railing/corner{
+ dir = 1
+ },
+/turf/open/cliff/snowrock/virtual_domain,
+/area/icemoon/underground/explored/virtual_domain)
+"cu" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 4
+ },
+/obj/structure/railing,
+/obj/structure/railing{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"cJ" = (
+/obj/structure/chair/sofa/bench,
+/turf/open/floor/plating/snowed/smoothed,
+/area/icemoon/underground/explored/virtual_domain)
+"dR" = (
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"en" = (
+/obj/item/clothing/under/color/grey,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"eB" = (
+/obj/structure/flora/rock/icy/style_random,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"gB" = (
+/obj/structure/railing/corner,
+/turf/open/cliff/snowrock/virtual_domain,
+/area/icemoon/underground/explored/virtual_domain)
+"hc" = (
+/obj/structure/railing/corner/end{
+ dir = 8
+ },
+/obj/structure/railing/corner/end/flip{
+ dir = 8
+ },
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"hE" = (
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"jK" = (
+/obj/structure/railing/corner{
+ dir = 8
+ },
+/turf/open/cliff/snowrock/virtual_domain,
+/area/icemoon/underground/explored/virtual_domain)
+"kc" = (
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"km" = (
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/cleanable/ash/large,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"kK" = (
+/obj/structure/flora/tree/pine/style_random,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"mx" = (
+/obj/structure/railing,
+/obj/structure/railing{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"nj" = (
+/obj/structure/chair/sofa/bench/left,
+/turf/open/floor/plating/snowed/smoothed,
+/area/icemoon/underground/explored/virtual_domain)
+"no" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 8
+ },
+/obj/structure/railing,
+/obj/structure/railing{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"pl" = (
+/obj/structure/bonfire/prelit,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"pL" = (
+/turf/open/lava/plasma/virtual_domain,
+/area/icemoon/underground/explored/virtual_domain)
+"qc" = (
+/turf/open/misc/ice,
+/area/icemoon/underground/explored/virtual_domain)
+"sa" = (
+/obj/structure/flora/grass/green/style_random,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"sw" = (
+/obj/structure/flora/rock/pile/icy/style_random,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"sM" = (
+/turf/open/cliff/snowrock/virtual_domain,
+/area/icemoon/underground/explored/virtual_domain)
+"uJ" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"vz" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"xB" = (
+/obj/structure/railing/corner{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"yo" = (
+/turf/open/floor/plating/snowed/smoothed,
+/area/icemoon/underground/explored/virtual_domain)
+"yJ" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 8
+ },
+/obj/structure/railing,
+/obj/structure/railing/corner{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"yL" = (
+/obj/structure/chair/sofa/bench/right,
+/turf/open/floor/plating/snowed/smoothed,
+/area/icemoon/underground/explored/virtual_domain)
+"zn" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"Am" = (
+/turf/closed/indestructible/binary,
+/area/icemoon/underground/explored/virtual_domain)
+"AI" = (
+/obj/structure/flora/grass/green/style_random,
+/turf/open/floor/plating/snowed/smoothed,
+/area/icemoon/underground/explored/virtual_domain)
+"BV" = (
+/obj/effect/decal/remains/plasma,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"Dz" = (
+/obj/structure/railing/corner/end{
+ dir = 4
+ },
+/obj/structure/railing/corner/end/flip{
+ dir = 4
+ },
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"DB" = (
+/obj/structure/flora/rock/icy/style_random,
+/obj/structure/flora/rock/pile/icy/style_random,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"DY" = (
+/obj/structure/flora/rock/icy/style_random,
+/obj/structure/flora/grass/green/style_random,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"Eh" = (
+/obj/structure/railing/corner{
+ dir = 4
+ },
+/turf/open/cliff/snowrock/virtual_domain,
+/area/icemoon/underground/explored/virtual_domain)
+"Gn" = (
+/obj/structure/flora/rock/pile/icy/style_random,
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"GX" = (
+/obj/effect/decal/cleanable/ash/large,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"HU" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"Kl" = (
+/obj/effect/decal/remains/plasma,
+/obj/effect/decal/cleanable/ash/large,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"KA" = (
+/obj/structure/statue/snow/snowman{
+ name = "Norm";
+ desc = "Norm has seen many a man roll down these cliffs, some more stubborn than others. Its usually the stubborn ones who stop getting back up."
+ },
+/obj/item/pickaxe/mini,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"Lw" = (
+/obj/structure/flora/rock/pile/icy/style_random,
+/obj/structure/flora/grass/green/style_random,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"MP" = (
+/obj/structure/railing/corner/end/flip{
+ dir = 4
+ },
+/obj/structure/railing/corner/end{
+ dir = 4
+ },
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"MT" = (
+/obj/structure/railing/corner{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"Nv" = (
+/turf/open/floor/iron/stairs,
+/area/icemoon/underground/explored/virtual_domain)
+"NM" = (
+/obj/structure/railing/corner/end/flip{
+ dir = 8
+ },
+/obj/structure/railing/corner/end{
+ dir = 8
+ },
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"Pl" = (
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 4
+ },
+/obj/structure/railing{
+ dir = 1
+ },
+/obj/structure/railing/corner,
+/turf/open/floor/wood,
+/area/icemoon/underground/explored/virtual_domain)
+"Qv" = (
+/turf/closed/indestructible/rock/snow/ice,
+/area/icemoon/underground/explored/virtual_domain)
+"RD" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/icemoon/underground/explored/virtual_domain)
+"Tz" = (
+/obj/item/pickaxe/mini,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"Ug" = (
+/obj/structure/flora/rock/icy/style_random,
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"VW" = (
+/obj/structure/closet/crate/secure/bitrunning/encrypted,
+/turf/open/floor/plating/snowed/smoothed,
+/area/icemoon/underground/explored/virtual_domain)
+"YR" = (
+/obj/structure/flora/tree/pine/style_random,
+/obj/structure/flora/grass/green/style_random,
+/turf/open/misc/asteroid/snow,
+/area/icemoon/underground/explored/virtual_domain)
+"YT" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+RD
+"}
+(2,1,1) = {"
+Am
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(3,1,1) = {"
+Am
+Qv
+Qv
+Qv
+Qv
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(4,1,1) = {"
+Am
+Qv
+Qv
+Qv
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(5,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(6,1,1) = {"
+Am
+Qv
+Qv
+kK
+sw
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(7,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(8,1,1) = {"
+Am
+Qv
+Qv
+eB
+sw
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+Qv
+Qv
+Qv
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(9,1,1) = {"
+Am
+Qv
+Qv
+dR
+eB
+dR
+sw
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(10,1,1) = {"
+Am
+Qv
+dR
+sw
+eB
+eB
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(11,1,1) = {"
+Am
+Qv
+dR
+eB
+sw
+sa
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pl
+dR
+sw
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(12,1,1) = {"
+Am
+Qv
+dR
+dR
+sw
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sw
+dR
+Nv
+Nv
+Nv
+sM
+sM
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+sM
+sM
+sM
+sM
+Nv
+Nv
+Nv
+Nv
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(13,1,1) = {"
+Am
+Qv
+dR
+sa
+sw
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sw
+dR
+dR
+sM
+Nv
+Nv
+Nv
+Nv
+sM
+sM
+sM
+sM
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(14,1,1) = {"
+Am
+Qv
+dR
+dR
+dR
+dR
+kK
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sw
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(15,1,1) = {"
+Am
+Qv
+sw
+sa
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(16,1,1) = {"
+Am
+Qv
+dR
+sa
+sa
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+pl
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+GX
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(17,1,1) = {"
+Am
+Qv
+dR
+sa
+sa
+dR
+yo
+Nv
+Nv
+Nv
+Nv
+sM
+sM
+Nv
+Nv
+Nv
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+sw
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+dR
+dR
+pL
+pL
+pL
+Qv
+Qv
+Qv
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(18,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+yo
+yo
+sM
+sM
+sM
+Nv
+Nv
+Nv
+Nv
+sM
+sM
+sa
+qc
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+dR
+sa
+pL
+pL
+sM
+sM
+sM
+sM
+sM
+sM
+sw
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+dR
+en
+dR
+dR
+pL
+pL
+Qv
+Qv
+Qv
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(19,1,1) = {"
+Am
+Qv
+Qv
+kK
+sa
+yo
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sw
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sw
+BV
+pL
+sM
+sM
+sM
+sM
+sM
+sM
+eB
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+GX
+sw
+dR
+dR
+pL
+pL
+pL
+pL
+Qv
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(20,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+yo
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+qc
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+kK
+GX
+pL
+pL
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(21,1,1) = {"
+Am
+Qv
+Qv
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+pL
+pL
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(22,1,1) = {"
+Am
+Qv
+Qv
+dR
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sw
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(23,1,1) = {"
+Am
+Qv
+Qv
+Qv
+sa
+qc
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+DB
+kc
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(24,1,1) = {"
+Am
+Qv
+Qv
+sw
+eB
+qc
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+Ug
+eB
+dR
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(25,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+sa
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+sM
+Nv
+Nv
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+Ug
+sw
+dR
+dR
+dR
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(26,1,1) = {"
+Am
+Qv
+Qv
+dR
+yo
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+qc
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+Nv
+Nv
+Nv
+Nv
+Nv
+sM
+sM
+sM
+sM
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+qc
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+Ug
+sw
+dR
+dR
+dR
+sa
+dR
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Am
+"}
+(27,1,1) = {"
+Am
+Qv
+Qv
+dR
+yo
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+dR
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+eB
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+dR
+kK
+dR
+dR
+dR
+sw
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Am
+"}
+(28,1,1) = {"
+Am
+Qv
+Qv
+sa
+yo
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+dR
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+kK
+sa
+dR
+qc
+qc
+sa
+sa
+dR
+kK
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Am
+"}
+(29,1,1) = {"
+Am
+Qv
+Qv
+sa
+yo
+yo
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+MP
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+qc
+qc
+qc
+sa
+sa
+dR
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Am
+"}
+(30,1,1) = {"
+Am
+Qv
+Qv
+qc
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+no
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+yL
+dR
+dR
+dR
+kK
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Am
+"}
+(31,1,1) = {"
+Am
+Qv
+pl
+qc
+dR
+yo
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+Nv
+Nv
+Nv
+Nv
+qc
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+mx
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+cJ
+yo
+dR
+dR
+dR
+dR
+dR
+kK
+sa
+sa
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+Qv
+Am
+"}
+(32,1,1) = {"
+Am
+Qv
+sM
+sM
+zn
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sw
+dR
+sM
+sM
+sM
+cu
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+nj
+yo
+dR
+kK
+dR
+dR
+dR
+kK
+sa
+sa
+dR
+dR
+dR
+dR
+kK
+dR
+dR
+Qv
+Qv
+Am
+"}
+(33,1,1) = {"
+Am
+Qv
+sM
+sM
+hE
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+NM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+dR
+Nv
+Nv
+Nv
+Nv
+Nv
+dR
+dR
+sw
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+yo
+yo
+dR
+dR
+sa
+dR
+sw
+dR
+dR
+dR
+dR
+sa
+sa
+dR
+dR
+dR
+dR
+Qv
+Qv
+Am
+"}
+(34,1,1) = {"
+Am
+Qv
+sM
+sM
+hE
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+yo
+Nv
+Nv
+Nv
+Nv
+Nv
+yo
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+yo
+dR
+dR
+sa
+dR
+dR
+dR
+dR
+kK
+qc
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+Qv
+Am
+"}
+(35,1,1) = {"
+Am
+Qv
+sM
+sM
+hE
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+qc
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+dR
+sM
+sM
+sM
+sM
+sM
+eB
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+yo
+yo
+dR
+dR
+dR
+qc
+qc
+qc
+qc
+qc
+dR
+YT
+YT
+YT
+YT
+YT
+vz
+Qv
+Am
+"}
+(36,1,1) = {"
+Am
+Qv
+dR
+sM
+HU
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sw
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+dR
+sM
+sM
+sM
+sM
+sM
+kK
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pl
+dR
+yo
+dR
+dR
+dR
+dR
+dR
+qc
+qc
+qc
+dR
+YT
+YT
+YT
+YT
+YT
+YT
+Qv
+Am
+"}
+(37,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+eB
+dR
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+yo
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+yo
+dR
+yo
+dR
+dR
+dR
+dR
+sw
+qc
+qc
+dR
+dR
+YT
+YT
+YT
+YT
+YT
+YT
+Qv
+Am
+"}
+(38,1,1) = {"
+Am
+Qv
+Qv
+dR
+yo
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+dR
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+yo
+AI
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+yo
+yo
+yo
+yo
+yo
+yo
+dR
+dR
+yo
+dR
+yo
+yo
+YT
+YT
+YT
+YT
+YT
+YT
+Qv
+Am
+"}
+(39,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+dR
+kK
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+pl
+dR
+dR
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+yo
+AI
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+yo
+yo
+yo
+yo
+dR
+yo
+yo
+yo
+yo
+yo
+yo
+yo
+YT
+YT
+YT
+YT
+YT
+YT
+Qv
+Am
+"}
+(40,1,1) = {"
+Am
+Qv
+Qv
+dR
+yo
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+dR
+dR
+Nv
+Nv
+Nv
+dR
+kK
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sw
+dR
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+yo
+yo
+dR
+dR
+dR
+yo
+dR
+yo
+yo
+yo
+dR
+yo
+YT
+YT
+YT
+YT
+YT
+YT
+Qv
+Am
+"}
+(41,1,1) = {"
+Am
+Qv
+dR
+sa
+yo
+dR
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+qc
+Tz
+Nv
+Nv
+Nv
+qc
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+sw
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+YT
+YT
+YT
+YT
+YT
+uJ
+Qv
+Am
+"}
+(42,1,1) = {"
+Am
+Qv
+dR
+AI
+yo
+yo
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pl
+KA
+dR
+dR
+dR
+sa
+sa
+dR
+qc
+qc
+qc
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+Qv
+Am
+"}
+(43,1,1) = {"
+Am
+Qv
+yo
+yo
+VW
+yo
+yo
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sa
+dR
+dR
+kK
+sa
+sa
+dR
+dR
+qc
+qc
+qc
+dR
+sa
+sa
+dR
+dR
+dR
+Qv
+Am
+"}
+(44,1,1) = {"
+Am
+Qv
+dR
+yo
+yo
+yo
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sa
+dR
+sa
+dR
+dR
+dR
+dR
+kK
+qc
+qc
+qc
+dR
+sa
+sa
+dR
+dR
+dR
+Qv
+Am
+"}
+(45,1,1) = {"
+Am
+Qv
+dR
+dR
+yo
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+dR
+dR
+dR
+kK
+dR
+dR
+dR
+dR
+Qv
+dR
+Qv
+dR
+kK
+dR
+Qv
+Qv
+Am
+"}
+(46,1,1) = {"
+Am
+Qv
+Qv
+sa
+dR
+dR
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+qc
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+kK
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+dR
+Qv
+Qv
+Qv
+dR
+dR
+dR
+Qv
+Qv
+Am
+"}
+(47,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+YR
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+qc
+Nv
+Nv
+Nv
+sM
+sM
+sM
+sM
+Nv
+Nv
+Nv
+Nv
+sM
+sM
+sM
+Nv
+Nv
+Nv
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+dR
+pL
+dR
+dR
+dR
+dR
+dR
+dR
+Qv
+Qv
+Qv
+Qv
+Qv
+dR
+dR
+dR
+Qv
+Qv
+Am
+"}
+(48,1,1) = {"
+Am
+Qv
+Qv
+dR
+kK
+sa
+YR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+sw
+sM
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+sM
+sM
+Nv
+Nv
+Nv
+Nv
+Nv
+sM
+Nv
+Nv
+Nv
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+dR
+dR
+dR
+dR
+Qv
+Qv
+Qv
+Qv
+dR
+sw
+dR
+dR
+dR
+Qv
+Am
+"}
+(49,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+YR
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+eB
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+dR
+dR
+dR
+dR
+dR
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+dR
+sw
+dR
+dR
+Qv
+Am
+"}
+(50,1,1) = {"
+Am
+Qv
+Qv
+sa
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+pl
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+pL
+pL
+dR
+dR
+sa
+dR
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+sw
+eB
+dR
+dR
+Qv
+Am
+"}
+(51,1,1) = {"
+Am
+Qv
+Qv
+Qv
+dR
+sa
+kK
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+pL
+dR
+dR
+kK
+dR
+dR
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+dR
+dR
+sa
+Qv
+Am
+"}
+(52,1,1) = {"
+Am
+Qv
+Qv
+Qv
+dR
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+pL
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+pL
+dR
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+dR
+dR
+dR
+Qv
+Am
+"}
+(53,1,1) = {"
+Am
+Qv
+Qv
+Qv
+dR
+YR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sw
+Dz
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+dR
+sa
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+dR
+dR
+Qv
+Am
+"}
+(54,1,1) = {"
+Am
+Qv
+Qv
+Qv
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+jK
+yJ
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+sM
+sM
+GX
+dR
+dR
+pL
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sa
+dR
+sw
+sa
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+dR
+Qv
+Qv
+Am
+"}
+(55,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+MT
+be
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+dR
+kK
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+dR
+sw
+eB
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+dR
+dR
+dR
+Qv
+Am
+"}
+(56,1,1) = {"
+Am
+Qv
+Qv
+dR
+eB
+sw
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+gB
+xB
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+km
+sw
+eB
+eB
+sw
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+dR
+dR
+dR
+Qv
+Am
+"}
+(57,1,1) = {"
+Am
+Qv
+Qv
+dR
+Lw
+sa
+sa
+kK
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+Pl
+Eh
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+dR
+sw
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+eB
+sM
+sM
+sM
+sM
+sM
+pL
+dR
+eB
+eB
+dR
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+dR
+dR
+dR
+Qv
+Am
+"}
+(58,1,1) = {"
+Am
+Qv
+Qv
+dR
+sa
+sa
+YR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+hc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+Gn
+eB
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sw
+sM
+sM
+sM
+sM
+sM
+pL
+GX
+dR
+pL
+dR
+dR
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+dR
+sa
+dR
+dR
+Qv
+Am
+"}
+(59,1,1) = {"
+Am
+Qv
+Qv
+sa
+YR
+sa
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+qc
+sM
+sM
+sM
+dR
+sM
+sM
+Nv
+Nv
+Nv
+dR
+sM
+sM
+sM
+sM
+sM
+kK
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+pL
+dR
+dR
+pL
+dR
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+dR
+dR
+dR
+Qv
+Qv
+Qv
+Am
+"}
+(60,1,1) = {"
+Am
+Qv
+Qv
+dR
+dR
+sw
+kK
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+dR
+dR
+Nv
+Nv
+Nv
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+kK
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+pL
+GX
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+dR
+dR
+dR
+Qv
+Qv
+Qv
+Am
+"}
+(61,1,1) = {"
+Am
+Qv
+dR
+kK
+sw
+eB
+eB
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+sa
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+dR
+dR
+dR
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(62,1,1) = {"
+Am
+Qv
+dR
+sa
+DY
+eB
+eB
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sa
+dR
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+dR
+dR
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(63,1,1) = {"
+Am
+Qv
+dR
+Lw
+Lw
+dR
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+eB
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+dR
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+dR
+Qv
+Qv
+dR
+dR
+dR
+dR
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(64,1,1) = {"
+Am
+Qv
+dR
+sa
+sa
+sw
+kK
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sw
+dR
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+eB
+dR
+dR
+dR
+sa
+dR
+sw
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(65,1,1) = {"
+Am
+Qv
+dR
+dR
+kK
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+Nv
+Nv
+Nv
+Nv
+Nv
+Nv
+dR
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+sw
+sa
+sa
+dR
+sw
+sw
+eB
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(66,1,1) = {"
+Am
+Qv
+dR
+kK
+sa
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+sa
+dR
+sM
+sM
+sM
+sM
+qc
+sM
+sM
+sM
+sM
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sw
+dR
+Nv
+Nv
+Nv
+Nv
+Nv
+sM
+sM
+sM
+Nv
+Nv
+dR
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+dR
+sa
+sa
+dR
+dR
+dR
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(67,1,1) = {"
+Am
+Qv
+dR
+dR
+YR
+DY
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sa
+dR
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+sa
+dR
+dR
+dR
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(68,1,1) = {"
+Am
+Qv
+dR
+dR
+Lw
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+sa
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+dR
+dR
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(69,1,1) = {"
+Am
+Qv
+Qv
+dR
+eB
+sw
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+dR
+Nv
+Nv
+Nv
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(70,1,1) = {"
+Am
+Qv
+Qv
+Qv
+dR
+eB
+sw
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+kK
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+Nv
+dR
+dR
+dR
+dR
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(71,1,1) = {"
+Am
+Qv
+Qv
+dR
+sa
+sa
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+dR
+qc
+dR
+pl
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+Kl
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(72,1,1) = {"
+Am
+Qv
+Qv
+sa
+sa
+Lw
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(73,1,1) = {"
+Am
+Qv
+Qv
+Qv
+dR
+sw
+dR
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+sM
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+pL
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(74,1,1) = {"
+Am
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Qv
+Am
+"}
+(75,1,1) = {"
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+Am
+"}
diff --git a/_maps/virtual_domains/syndicate_assault.dmm b/_maps/virtual_domains/syndicate_assault.dmm
new file mode 100644
index 00000000000..770f0967404
--- /dev/null
+++ b/_maps/virtual_domains/syndicate_assault.dmm
@@ -0,0 +1,4265 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aq" = (
+/obj/item/storage/backpack/duffelbag/syndie/surgery,
+/obj/structure/table/reinforced,
+/turf/open/floor/plastic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"aw" = (
+/obj/structure/table/reinforced,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"aN" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/item/stack/sheet/iron/fifty,
+/obj/item/stack/sheet/iron/fifty,
+/obj/item/stack/sheet/iron/fifty,
+/obj/item/stack/sheet/plasteel/twenty,
+/obj/item/stack/sheet/mineral/plastitanium{
+ amount = 50
+ },
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/stack/rods/fifty,
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"aO" = (
+/obj/machinery/recharge_station,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"aZ" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/mob/living/basic/syndicate/ranged/shotgun/space/stormtrooper,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"bh" = (
+/turf/open/floor/carpet/royalblack,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"bo" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"bD" = (
+/obj/structure/table/reinforced,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"bG" = (
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"cc" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/effect/spawner/random/clothing/costume,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"cj" = (
+/obj/structure/transit_tube/crossing,
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"ct" = (
+/obj/structure/closet/syndicate{
+ anchored = 1;
+ desc = "A basic closet for all your villainous needs.";
+ locked = 1;
+ name = "Closet";
+ req_access = list("syndicate");
+ secure = 1
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"cw" = (
+/obj/structure/closet/syndicate{
+ anchored = 1;
+ desc = "A basic closet for all your villainous needs.";
+ locked = 1;
+ name = "Closet";
+ req_access = list("syndicate");
+ secure = 1
+ },
+/obj/item/clothing/under/syndicate/combat,
+/obj/item/clothing/gloves/combat,
+/obj/item/clothing/shoes/combat,
+/obj/item/clothing/mask/gas/syndicate,
+/obj/item/clothing/under/syndicate/skirt,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"cy" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"cB" = (
+/obj/machinery/camera/xray{
+ c_tag = "Medbay";
+ dir = 6;
+ network = list("fsci");
+ screen_loc = ""
+ },
+/turf/open/floor/plastic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"cR" = (
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/carpet/royalblack,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"cZ" = (
+/obj/structure/table/reinforced,
+/obj/item/gun/ballistic/automatic/l6_saw/unrestricted,
+/obj/item/ammo_box/magazine/m7mm,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"da" = (
+/obj/machinery/stasis,
+/turf/open/floor/plastic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"dd" = (
+/obj/structure/sign/warning/vacuum/external,
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"di" = (
+/obj/machinery/power/terminal{
+ dir = 1
+ },
+/obj/structure/cable,
+/obj/item/paper/fluff/ruins/forgottenship/powerissues,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"dw" = (
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"dz" = (
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"dU" = (
+/obj/structure/cable,
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/ruin{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"eB" = (
+/obj/machinery/camera/xray{
+ c_tag = "Cargo pod";
+ dir = 9;
+ network = list("fsci");
+ screen_loc = ""
+ },
+/obj/structure/closet,
+/obj/item/clothing/under/syndicate/tacticool,
+/obj/item/clothing/under/syndicate/tacticool,
+/obj/item/clothing/under/syndicate/tacticool,
+/obj/item/card/id/advanced/black/syndicate_command/crew_id,
+/obj/item/card/id/advanced/black/syndicate_command/crew_id,
+/obj/item/card/id/advanced/black/syndicate_command/crew_id,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"fd" = (
+/obj/structure/transit_tube/crossing,
+/turf/open/space/basic,
+/area/space)
+"fG" = (
+/obj/structure/toilet{
+ dir = 1
+ },
+/obj/machinery/light/directional/south,
+/turf/open/floor/iron,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"fJ" = (
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"fM" = (
+/obj/machinery/computer/crew/syndie{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"fV" = (
+/obj/machinery/atmospherics/components/unary/vent_pump,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"gD" = (
+/obj/effect/mob_spawn/ghost_role/human/syndicatespace,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"hg" = (
+/obj/structure/window/reinforced/plasma/plastitanium,
+/obj/machinery/door/poddoor{
+ id = "fslockdown";
+ name = "Ship Blast Door";
+ state_open = 1
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"hy" = (
+/obj/structure/table/reinforced,
+/obj/item/paper/fluff/ruins/forgottenship/missionobj,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"hA" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"hD" = (
+/obj/structure/table/reinforced,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"ip" = (
+/mob/living/basic/syndicate/melee/sword/space/stormtrooper,
+/turf/open/floor/plastic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"iB" = (
+/obj/machinery/light/directional/north,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"iL" = (
+/obj/structure/sign/departments/cargo,
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"iU" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/item/melee/energy/sword/saber/red,
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"iW" = (
+/obj/structure/table/reinforced,
+/obj/machinery/button/door{
+ id = "fslockdown";
+ name = "Window shutters";
+ req_access = list("syndicate")
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"iX" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/mob/living/basic/syndicate/ranged/smg/space/stormtrooper,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"ja" = (
+/obj/machinery/door/window{
+ dir = 1;
+ name = "Spare Equipment";
+ req_access = list("syndicate")
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"jl" = (
+/obj/structure/bodycontainer/crematorium{
+ id = "fscremate"
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"jA" = (
+/obj/structure/cable,
+/mob/living/basic/syndicate/melee/space/stormtrooper,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"jJ" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/iron/dark/side{
+ dir = 1
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"kh" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"ki" = (
+/obj/structure/table/reinforced,
+/obj/machinery/computer/security/telescreen/interrogation{
+ name = "Cameras monitor";
+ network = list("fsci");
+ req_access = list("syndicate");
+ screen_loc = ""
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"kI" = (
+/obj/machinery/computer/atmos_alert{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"kJ" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"li" = (
+/obj/structure/transit_tube/station/dispenser/reverse{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"ln" = (
+/obj/machinery/turretid{
+ control_area = "/area/ruin/space/has_grav/syndicate_forgotten_ship";
+ enabled = 0;
+ icon_state = "control_kill";
+ lethal = 1;
+ name = "Ship turret control panel";
+ pixel_y = 32;
+ req_access = list("syndicate")
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"lo" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/ruin{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"lN" = (
+/obj/machinery/light/small/directional/east,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"mo" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"mD" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 10
+ },
+/obj/item/wrench,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"nk" = (
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/effect/mapping_helpers/apc/syndicate_access,
+/obj/structure/cable,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"nB" = (
+/turf/closed/mineral/random,
+/area/space)
+"nG" = (
+/obj/machinery/light/directional/south,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"nO" = (
+/obj/machinery/mineral/ore_redemption{
+ name = "Syndicate ore redemption machine";
+ ore_multiplier = 4;
+ req_access = list("syndicate")
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"nU" = (
+/obj/structure/sign/poster/contraband/syndicate_pistol,
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"oM" = (
+/obj/structure/cable,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"oZ" = (
+/mob/living/basic/syndicate/melee/sword/space/stormtrooper,
+/turf/open/floor/carpet/royalblack,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"pl" = (
+/obj/machinery/atmospherics/components/tank/air{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"pz" = (
+/obj/machinery/computer/security{
+ desc = "Used to access interrogation room camera.";
+ dir = 8;
+ name = "Ship cameras console";
+ network = list("fsc","fsci");
+ screen_loc = ""
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"pH" = (
+/obj/structure/table/reinforced,
+/obj/item/toy/plush/nukeplushie,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"pM" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"pS" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 6
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"pU" = (
+/obj/machinery/shower/directional/north,
+/obj/machinery/light/directional/south,
+/turf/open/floor/iron,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"qf" = (
+/obj/structure/table/optable,
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/plastic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"qx" = (
+/turf/open/space/basic,
+/area/space)
+"qU" = (
+/obj/structure/sign/poster/contraband/c20r,
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"qY" = (
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"rm" = (
+/obj/machinery/button/crematorium{
+ id = "fscremate";
+ pixel_x = -32
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"ru" = (
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"rH" = (
+/obj/machinery/airalarm/directional/north,
+/obj/effect/mapping_helpers/airalarm/syndicate_access,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"rM" = (
+/obj/structure/closet/syndicate{
+ anchored = 1;
+ desc = "A basic closet for all your villainous needs.";
+ locked = 1;
+ name = "Closet";
+ req_access = list("syndicate");
+ secure = 1
+ },
+/obj/effect/spawner/random/contraband/armory,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"rP" = (
+/obj/effect/mob_spawn/ghost_role/human/syndicatespace,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"sg" = (
+/obj/machinery/ore_silo,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"sq" = (
+/obj/machinery/door/window{
+ name = "Control Room";
+ req_access = list("syndicate")
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"sz" = (
+/obj/machinery/atmospherics/components/unary/vent_pump{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"sH" = (
+/obj/structure/displaycase{
+ req_access = list("syndicate");
+ start_showpiece_type = /obj/item/gun/ballistic/automatic/pistol/deagle/camo
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"sK" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/item/stack/sheet/mineral/titanium{
+ amount = 40
+ },
+/obj/item/stack/sheet/mineral/uranium{
+ amount = 15
+ },
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"sL" = (
+/obj/structure/chair/comfy,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"sM" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"tv" = (
+/obj/structure/table/reinforced,
+/obj/machinery/button/door{
+ id = "fscaproom";
+ name = "Room shutters control";
+ req_access = list("syndicate")
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"tI" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"uP" = (
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"vp" = (
+/obj/structure/table/reinforced,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"vD" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"vK" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"vU" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"wb" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2,
+/obj/machinery/portable_atmospherics/scrubber{
+ anchored = 1
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"we" = (
+/turf/closed/mineral/random/high_chance,
+/area/space)
+"wK" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"wL" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/medkit/regular,
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"xJ" = (
+/obj/structure/closet/syndicate{
+ anchored = 1;
+ desc = "A basic closet for all your villainous needs.";
+ locked = 1;
+ name = "Closet";
+ req_access = list("syndicate");
+ secure = 1
+ },
+/obj/item/ammo_box/c9mm,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"xZ" = (
+/obj/machinery/computer/camera_advanced/syndie{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"yl" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Captain's Room"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/obj/machinery/door/poddoor{
+ id = "fscaproom";
+ name = "Captain's Blast Door";
+ state_open = 1
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"yD" = (
+/mob/living/basic/syndicate/ranged/smg/space/stormtrooper,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"yJ" = (
+/obj/structure/table/reinforced,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"yR" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"yT" = (
+/obj/item/ai_module/core/full/cybersun,
+/obj/structure/table/reinforced,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"yV" = (
+/obj/structure/table/reinforced,
+/obj/item/assembly/prox_sensor,
+/obj/item/assembly/prox_sensor,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"yZ" = (
+/turf/closed/mineral,
+/area/space)
+"zi" = (
+/obj/machinery/vending/cigarette/syndicate,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"zt" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Aa" = (
+/obj/structure/chair/comfy/shuttle,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"AN" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/mob/living/basic/syndicate/ranged/smg/space/stormtrooper,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Bm" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"BK" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/turf/open/space/basic,
+/area/space)
+"BN" = (
+/obj/structure/transit_tube/crossing,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"Cf" = (
+/obj/machinery/light/directional/south,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Ci" = (
+/obj/structure/closet/syndicate{
+ anchored = 1;
+ desc = "A basic closet for all your villainous needs.";
+ locked = 1;
+ name = "Closet";
+ req_access = list("syndicate");
+ secure = 1
+ },
+/obj/item/crowbar/red,
+/obj/item/ammo_box/magazine/m9mm_aps,
+/obj/item/ammo_box/magazine/m9mm_aps,
+/turf/open/floor/carpet/royalblack,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Cn" = (
+/obj/machinery/camera/xray/directional/east{
+ c_tag = "Conference room";
+ network = list("fsc");
+ screen_loc = ""
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"CK" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/mob/living/basic/syndicate/ranged/smg/pilot,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"CR" = (
+/obj/structure/closet/syndicate{
+ anchored = 1;
+ desc = "A basic closet for all your villainous needs.";
+ locked = 1;
+ name = "Closet";
+ req_access = list("syndicate");
+ secure = 1
+ },
+/obj/item/coin/antagtoken,
+/obj/item/dnainjector/thermal,
+/obj/item/storage/box/firingpins/syndicate,
+/obj/item/storage/box/firingpins/syndicate,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"De" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Dj" = (
+/obj/structure/table/reinforced,
+/obj/item/ammo_box/magazine/smgm45,
+/obj/item/ammo_box/magazine/smgm45,
+/obj/item/ammo_box/magazine/smgm45,
+/obj/item/gun/ballistic/automatic/c20r/unrestricted,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"DA" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/effect/spawner/random/maintenance,
+/obj/effect/spawner/random/maintenance,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"EB" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"EX" = (
+/mob/living/basic/syndicate/ranged/shotgun/space/stormtrooper,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Fp" = (
+/obj/structure/tank_dispenser/oxygen,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"FN" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Gn" = (
+/obj/structure/chair/comfy{
+ dir = 1
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Gs" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"GB" = (
+/obj/structure/cable,
+/obj/machinery/door/airlock/external/ruin{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"GZ" = (
+/obj/machinery/door/airlock/external/ruin{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Hq" = (
+/turf/closed/indestructible/binary,
+/area/space)
+"HU" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Bridge"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Ia" = (
+/obj/effect/mob_spawn/ghost_role/human/syndicatespace/captain,
+/turf/open/floor/carpet/royalblack,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Id" = (
+/obj/machinery/power/shuttle_engine/huge{
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"If" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 9
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Ig" = (
+/obj/machinery/porta_turret/syndicate/energy{
+ dir = 4;
+ name = "Syndicate Ship Turret";
+ on = 0;
+ shot_delay = 10
+ },
+/turf/closed/wall/r_wall/syndicate/nodiagonal,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Im" = (
+/obj/structure/table/reinforced,
+/obj/item/ammo_box/c9mm,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Io" = (
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"IC" = (
+/obj/structure/table/reinforced,
+/obj/item/paper,
+/obj/item/pen,
+/turf/open/floor/carpet/royalblack,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"IH" = (
+/obj/machinery/door/airlock/external/ruin{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/obj/structure/cable,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"IV" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Syndicate Ship Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Jg" = (
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Jz" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 5
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"JA" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"JN" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 5
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"JP" = (
+/obj/structure/sink/directional/south,
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Kz" = (
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Lk" = (
+/obj/structure/transit_tube/crossing,
+/turf/closed/mineral/random,
+/area/space)
+"Lo" = (
+/obj/structure/filingcabinet,
+/obj/machinery/door/window{
+ dir = 8;
+ name = "Syndicate Interior Door";
+ req_access = list("syndicate")
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Mc" = (
+/obj/structure/closet/syndicate{
+ anchored = 1;
+ desc = "A basic closet for all your villainous needs.";
+ locked = 1;
+ name = "Closet";
+ req_access = list("syndicate");
+ secure = 1
+ },
+/obj/item/crowbar/red,
+/obj/item/ammo_box/magazine/m9mm,
+/obj/item/ammo_box/magazine/m9mm,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Mm" = (
+/obj/structure/closet/syndicate{
+ anchored = 1;
+ desc = "A basic closet for all your villainous needs.";
+ locked = 1;
+ name = "Closet";
+ req_access = list("syndicate");
+ secure = 1
+ },
+/obj/item/clothing/head/hats/hos/beret/syndicate,
+/obj/item/clothing/suit/armor/vest/capcarapace/syndicate,
+/obj/item/clothing/mask/gas/syndicate,
+/obj/item/clothing/under/syndicate,
+/obj/item/clothing/under/syndicate/skirt,
+/obj/item/clothing/gloves/combat,
+/obj/item/clothing/shoes/combat,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"MR" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Nm" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Nr" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/item/stack/sheet/mineral/gold{
+ amount = 30
+ },
+/obj/item/stack/sheet/mineral/silver{
+ amount = 30
+ },
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Nt" = (
+/obj/structure/table/reinforced,
+/obj/machinery/atmospherics/components/unary/vent_pump,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Of" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/item/disk/surgery/forgottenship,
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Ox" = (
+/obj/machinery/atmospherics/components/unary/vent_pump,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"OH" = (
+/obj/structure/cable,
+/obj/structure/table/reinforced,
+/obj/item/storage/toolbox/syndicate,
+/obj/item/storage/toolbox/syndicate,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"OI" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"PR" = (
+/obj/machinery/door/password/voice/sfc{
+ password = null
+ },
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/grunge{
+ desc = "Vault airlock preventing air from going out.";
+ name = "Syndicate Vault Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Qg" = (
+/obj/machinery/suit_storage_unit/syndicate{
+ helmet_type = /obj/item/clothing/head/helmet/space/syndicate/black;
+ suit_type = /obj/item/clothing/suit/space/syndicate/black
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Qi" = (
+/obj/item/stack/sheet/mineral/uranium{
+ amount = 15
+ },
+/obj/structure/cable,
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"QF" = (
+/obj/structure/table/reinforced,
+/obj/item/dualsaber/green,
+/obj/machinery/light/small/directional/east,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"QG" = (
+/obj/structure/tank_dispenser/oxygen,
+/turf/closed/mineral/random,
+/area/space)
+"QX" = (
+/mob/living/basic/syndicate/ranged/space/stormtrooper,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Ra" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2,
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"RQ" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"RU" = (
+/obj/machinery/suit_storage_unit/syndicate,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Sc" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Sd" = (
+/obj/structure/closet/syndicate{
+ anchored = 1;
+ desc = "A basic closet for all your villainous needs.";
+ locked = 1;
+ name = "Closet";
+ req_access = list("syndicate");
+ secure = 1
+ },
+/obj/item/crowbar/red,
+/obj/item/ammo_box/magazine/m9mm,
+/obj/item/ammo_box/magazine/m9mm,
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Sq" = (
+/obj/machinery/power/smes,
+/obj/structure/cable,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Sv" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/effect/spawner/random/food_or_drink/donkpockets,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Sz" = (
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"SX" = (
+/obj/machinery/vending/medical/syndicate_access/cybersun,
+/turf/open/floor/plastic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"TB" = (
+/turf/closed/indestructible/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"UQ" = (
+/obj/structure/sign/poster/contraband/syndicate_recruitment,
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Vk" = (
+/obj/machinery/porta_turret/syndicate/energy{
+ dir = 4;
+ name = "Syndicate Ship Turret";
+ on = 0;
+ shot_delay = 10
+ },
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Vq" = (
+/obj/structure/transit_tube/station/dispenser/reverse{
+ dir = 8
+ },
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"Wd" = (
+/obj/structure/sign/poster/contraband/tools,
+/turf/closed/wall/r_wall/syndicate,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Wy" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/item/stack/ore/plasma{
+ amount = 19
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"WR" = (
+/obj/machinery/power/port_gen/pacman/super{
+ anchored = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/mineral/plastitanium/red,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Xp" = (
+/turf/open/space/basic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"XS" = (
+/obj/machinery/light/directional/north,
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Yb" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/item/clothing/head/helmet/space/syndicate/black/engie,
+/obj/item/clothing/suit/space/syndicate/black/engie,
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Yi" = (
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/floor/plastic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Yj" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access = list("syndicate")
+ },
+/obj/item/stack/ore/diamond{
+ amount = 3
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Yk" = (
+/obj/machinery/door/airlock/grunge{
+ name = "Captain's Room"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
+/obj/machinery/door/poddoor{
+ id = "fscaproom";
+ name = "Captain's Blast Door";
+ state_open = 1
+ },
+/turf/open/floor/carpet/royalblack,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Yr" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"Yu" = (
+/obj/structure/chair/comfy/black,
+/turf/open/floor/carpet/royalblack,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"YV" = (
+/obj/structure/sink/directional/south,
+/obj/structure/mirror/directional/west,
+/turf/open/floor/iron/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Za" = (
+/obj/machinery/computer/operating,
+/turf/open/floor/plastic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Zb" = (
+/turf/open/floor/plastic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"ZA" = (
+/obj/machinery/power/shuttle_engine/propulsion{
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+
+(1,1,1) = {"
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+"}
+(2,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(3,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(4,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(5,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(6,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(7,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(8,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+we
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(9,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(10,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Xp
+Xp
+Id
+qx
+qx
+Xp
+Xp
+Id
+qx
+qx
+Xp
+Xp
+Id
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(11,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Xp
+Xp
+Xp
+qx
+qx
+Xp
+Xp
+Xp
+qx
+qx
+Xp
+Xp
+Xp
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(12,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ZA
+Xp
+Xp
+Xp
+ZA
+ZA
+Xp
+Xp
+Xp
+ZA
+ZA
+Xp
+Xp
+Xp
+ZA
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+we
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(13,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+we
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(14,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Vk
+ru
+Sv
+vD
+uP
+uP
+Yj
+vD
+uP
+Wy
+DA
+uP
+QX
+vD
+cc
+ru
+Vk
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(15,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+Io
+uP
+uP
+QX
+lN
+uP
+uP
+uP
+uP
+uP
+lN
+uP
+uP
+uP
+uP
+hA
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(16,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+IV
+ru
+ru
+ru
+IV
+ru
+ru
+ru
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(17,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+ru
+vp
+ru
+Ia
+Ci
+ru
+Sq
+di
+WR
+ru
+yV
+Gn
+uP
+Mc
+uP
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+nB
+we
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(18,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+vp
+Jg
+ru
+bh
+cR
+ru
+Qi
+sz
+Kz
+ru
+Mc
+gD
+yD
+uP
+rP
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+nB
+nB
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(19,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+sH
+Kz
+yl
+oZ
+bh
+Yk
+pS
+RQ
+Jz
+vK
+uP
+uP
+uP
+sL
+hy
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+TB
+TB
+TB
+TB
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(20,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+CR
+Kz
+ru
+bh
+bh
+Yk
+pM
+zt
+pM
+vK
+uP
+uP
+EX
+sL
+Im
+ru
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+TB
+TB
+Yb
+Yb
+TB
+Bm
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(21,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+yT
+Kz
+ru
+Yu
+IC
+ru
+mD
+JN
+MR
+ru
+Sd
+gD
+uP
+uP
+gD
+ru
+qx
+qx
+qx
+qx
+nB
+QG
+nB
+TB
+aN
+bG
+bG
+sK
+TB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(22,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Ig
+ru
+Lo
+ru
+tv
+ki
+nU
+wb
+EB
+pl
+ru
+hD
+Gn
+uP
+Mc
+ru
+Ig
+qx
+qx
+qx
+qx
+nB
+we
+nB
+TB
+iU
+bG
+bG
+Nr
+TB
+nB
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(23,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+cy
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+TB
+Nm
+bG
+bG
+Of
+TB
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+sM
+sM
+sM
+sM
+sM
+kJ
+qx
+Hq
+"}
+(24,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+Za
+Yi
+Zb
+SX
+ru
+uP
+yR
+uP
+ru
+YV
+Sz
+jJ
+fG
+ru
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+nB
+TB
+TB
+PR
+TB
+TB
+TB
+nB
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+sM
+sM
+sM
+sM
+sM
+sM
+qx
+Hq
+"}
+(25,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+qf
+Zb
+ip
+da
+ru
+Ra
+Sc
+uP
+ru
+JP
+qY
+ru
+ru
+ru
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+we
+ru
+ru
+uP
+sg
+ru
+ru
+nB
+nB
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+sM
+sM
+sM
+sM
+sM
+sM
+qx
+Hq
+"}
+(26,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+aq
+cB
+Zb
+Zb
+De
+Ox
+Gs
+uP
+wK
+Sz
+Sz
+jJ
+pU
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+qU
+Fp
+uP
+uP
+li
+cj
+Lk
+Lk
+fd
+fd
+fd
+fd
+fd
+fd
+fd
+BN
+Vq
+sM
+sM
+sM
+sM
+qx
+Hq
+"}
+(27,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Vk
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+kh
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+Vk
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+ru
+eB
+uP
+nO
+uP
+ru
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+sM
+sM
+sM
+sM
+sM
+sM
+qx
+Hq
+"}
+(28,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+jl
+rm
+ru
+nk
+oM
+oM
+oM
+yR
+oM
+oM
+oM
+uP
+ru
+uP
+Qg
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+nB
+ru
+wL
+oM
+uP
+dw
+ru
+yZ
+nB
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+sM
+sM
+sM
+sM
+sM
+sM
+qx
+Hq
+"}
+(29,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+uP
+dw
+ru
+rH
+uP
+AN
+JA
+iX
+JA
+JA
+oM
+uP
+ru
+fJ
+Qg
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Wd
+OH
+oM
+uP
+RU
+ru
+we
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+sM
+sM
+sM
+sM
+sM
+Yr
+qx
+Hq
+"}
+(30,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+lo
+uP
+uP
+GZ
+uP
+Aa
+hD
+yJ
+bD
+hD
+hD
+OI
+oM
+GB
+jA
+oM
+dU
+BK
+BK
+BK
+BK
+BK
+BK
+BK
+IH
+oM
+oM
+uP
+RU
+ru
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(31,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+uP
+uP
+dd
+uP
+Aa
+hD
+Nt
+aw
+hD
+hD
+bo
+uP
+dd
+uP
+Qg
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+iL
+cZ
+uP
+uP
+RU
+ru
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(32,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+aO
+uP
+ru
+XS
+uP
+uP
+hD
+aZ
+hD
+uP
+uP
+Cf
+ru
+uP
+Fp
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+nB
+ru
+ru
+Dj
+QF
+ru
+ru
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(33,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Ig
+ru
+hD
+ru
+zi
+uP
+uP
+uP
+FN
+Cn
+uP
+uP
+uP
+ru
+hD
+ru
+Ig
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+nB
+ru
+ru
+ru
+ru
+nB
+nB
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(34,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+HU
+ru
+ru
+ru
+ru
+ru
+ru
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+nB
+nB
+nB
+nB
+we
+nB
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(35,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+UQ
+rM
+xJ
+Kz
+Kz
+tI
+Kz
+Kz
+ct
+xJ
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+nB
+nB
+nB
+nB
+nB
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(36,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+ru
+ru
+ru
+Kz
+Kz
+Kz
+Kz
+tI
+Kz
+Kz
+Kz
+Kz
+ru
+ru
+ru
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(37,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+ln
+Kz
+ru
+iB
+Kz
+Kz
+fV
+If
+Kz
+Kz
+Kz
+nG
+ru
+cw
+cw
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(38,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+Kz
+dz
+sq
+Kz
+CK
+Kz
+vU
+mo
+vU
+Kz
+CK
+Kz
+ja
+Kz
+Jg
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(39,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Ig
+ru
+Kz
+ru
+Kz
+pz
+Kz
+xZ
+Kz
+fM
+Kz
+kI
+Kz
+ru
+Mm
+ru
+Ig
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(40,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+ru
+ru
+Kz
+Kz
+Kz
+Kz
+Kz
+Kz
+Kz
+Kz
+Kz
+ru
+ru
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(41,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+ru
+ru
+vp
+vp
+pH
+vp
+iW
+vp
+vp
+vp
+vp
+ru
+ru
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(42,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Ig
+hg
+hg
+hg
+hg
+hg
+hg
+hg
+hg
+hg
+Ig
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+we
+we
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(43,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+we
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(44,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(45,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+we
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(46,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+we
+we
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(47,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+we
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(48,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(49,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(50,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(51,1,1) = {"
+Hq
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+qx
+Hq
+"}
+(52,1,1) = {"
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+Hq
+"}
diff --git a/_maps/virtual_domains/test_only.dmm b/_maps/virtual_domains/test_only.dmm
new file mode 100644
index 00000000000..22b647188b6
--- /dev/null
+++ b/_maps/virtual_domains/test_only.dmm
@@ -0,0 +1,52 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/open/floor,
+/area/virtual_domain/powered)
+"D" = (
+/obj/effect/mob_spawn/corpse/human/miner,
+/turf/open/floor,
+/area/virtual_domain/powered)
+"I" = (
+/mob/living/basic/pet/dog/corgi,
+/turf/open/floor,
+/area/virtual_domain/powered)
+"U" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/open/floor,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+I
+a
+a
+a
+U
+"}
+(2,1,1) = {"
+D
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+a
+a
+a
+"}
+(5,1,1) = {"
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/virtual_domains/vaporwave.dmm b/_maps/virtual_domains/vaporwave.dmm
new file mode 100644
index 00000000000..6667692fdb2
--- /dev/null
+++ b/_maps/virtual_domains/vaporwave.dmm
@@ -0,0 +1,1015 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/open/space/basic,
+/area/space)
+"b" = (
+/obj/structure/table/reinforced,
+/obj/item/reagent_containers/cup/glass/drinkingglass{
+ pixel_x = 6;
+ pixel_y = 4
+ },
+/obj/item/reagent_containers/cup/glass/drinkingglass,
+/obj/item/reagent_containers/cup/glass/drinkingglass{
+ pixel_x = -6;
+ pixel_y = 8
+ },
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"c" = (
+/obj/effect/turf_decal/sand,
+/turf/open/floor/iron/airless,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"d" = (
+/obj/structure/window/spawner/directional/east,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"e" = (
+/turf/open/floor/holofloor/beach/coast,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"f" = (
+/obj/item/statuebust,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"g" = (
+/turf/closed/wall/rust,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"h" = (
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"i" = (
+/obj/structure/flora/tree/palm,
+/turf/open/misc/asteroid/airless,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"j" = (
+/obj/item/instrument/eguitar,
+/turf/open/floor/holofloor/beach,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"k" = (
+/obj/structure/window/spawner/directional/west,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"l" = (
+/obj/structure/closet/crate/bin,
+/obj/effect/spawner/random/exotic/technology,
+/turf/open/misc/asteroid/airless,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"m" = (
+/obj/effect/turf_decal/sand/plating,
+/turf/open/floor/plating{
+ initial_gas_mix = "TEMP=2.7"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"n" = (
+/obj/structure/chair/comfy/black{
+ dir = 8
+ },
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"o" = (
+/obj/structure/chair/comfy/black{
+ dir = 4
+ },
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"p" = (
+/obj/machinery/light/small/directional/south,
+/obj/structure/table/reinforced,
+/obj/machinery/chem_dispenser/drinks/beer/fullupgrade,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"q" = (
+/obj/structure/chair/comfy/black{
+ dir = 8
+ },
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"r" = (
+/obj/effect/turf_decal/sand,
+/obj/effect/turf_decal/sand,
+/turf/open/floor/iron/airless,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"s" = (
+/obj/structure/window/spawner/directional/east,
+/obj/structure/table/reinforced,
+/obj/item/storage/fancy/cigarettes/cigars/havana,
+/obj/effect/spawner/random/special_lighter,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"t" = (
+/mob/living/basic/butterfly,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"u" = (
+/turf/closed/indestructible/binary,
+/area/space)
+"v" = (
+/obj/structure/closet/crate/bin,
+/obj/item/tape/random,
+/turf/open/misc/asteroid/airless,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"w" = (
+/obj/structure/table/reinforced,
+/obj/item/taperecorder,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"x" = (
+/turf/open/floor/holofloor/beach,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"y" = (
+/obj/structure/statue/sandstone/venus{
+ anchored = 1;
+ dir = 4
+ },
+/obj/effect/turf_decal/sand/plating,
+/turf/open/floor/plating{
+ initial_gas_mix = "TEMP=2.7"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"z" = (
+/obj/structure/statue/sandstone/venus{
+ anchored = 1;
+ desc = "Ugh, this is merely an ugly amateurish replica of the other statue! The letters RIPGOAT are scribbled onto the base.";
+ dir = 8
+ },
+/obj/effect/turf_decal/sand/plating,
+/turf/open/floor/plating{
+ initial_gas_mix = "TEMP=2.7"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"A" = (
+/obj/machinery/light/small/directional/north,
+/obj/effect/turf_decal/sand/plating,
+/turf/open/floor/plating{
+ initial_gas_mix = "TEMP=2.7"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"B" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"C" = (
+/obj/machinery/suit_storage_unit/standard_unit,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"D" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"E" = (
+/turf/open/floor/holofloor/beach/water,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"F" = (
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"G" = (
+/obj/effect/turf_decal/sand,
+/turf/open/floor/iron/airless{
+ icon_state = "recharge_floor_asteroid"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"H" = (
+/obj/effect/turf_decal/sand,
+/obj/effect/turf_decal/sand/plating,
+/turf/open/floor/plating{
+ initial_gas_mix = "TEMP=2.7"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"I" = (
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space)
+"J" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/wall/rust,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"K" = (
+/obj/effect/turf_decal/sand,
+/turf/open/floor/iron/airless{
+ icon_state = "stairs-l"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"L" = (
+/obj/effect/turf_decal/stripes/asteroid/line,
+/obj/effect/turf_decal/sand/plating,
+/turf/open/floor/plating{
+ initial_gas_mix = "TEMP=2.7"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"M" = (
+/turf/open/misc/asteroid/airless,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"N" = (
+/obj/item/tank/internals/emergency_oxygen,
+/obj/item/tank/internals/emergency_oxygen,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"O" = (
+/obj/structure/lattice,
+/turf/open/floor/plating/airless,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"P" = (
+/obj/effect/turf_decal/sand,
+/turf/open/floor/iron/airless{
+ icon_state = "stairs-r"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Q" = (
+/obj/structure/window/spawner/directional/east,
+/obj/structure/closet/crate/secure/bitrunning/encrypted,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"R" = (
+/turf/closed/wall,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"S" = (
+/obj/effect/spawner/random/structure/musician/piano/random_piano,
+/obj/structure/window/spawner/directional/west,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"T" = (
+/obj/structure/lattice,
+/turf/open/misc/asteroid/airless,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"U" = (
+/obj/effect/turf_decal/sand,
+/turf/open/floor/iron/airless{
+ icon_state = "stairs-m"
+ },
+/area/ruin/space/has_grav/powered/virtual_domain)
+"V" = (
+/obj/structure/chair/stool/directional/west,
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"W" = (
+/obj/structure/table/reinforced,
+/obj/item/clothing/glasses/sunglasses/big{
+ name = "aesthetic sunglasses"
+ },
+/turf/open/floor/iron/vaporwave,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"X" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/hatch,
+/turf/open/floor/pod/dark,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Y" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"Z" = (
+/obj/structure/flora/tree/palm,
+/turf/open/floor/holofloor/beach,
+/area/ruin/space/has_grav/powered/virtual_domain)
+
+(1,1,1) = {"
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+"}
+(2,1,1) = {"
+u
+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
+u
+"}
+(3,1,1) = {"
+u
+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
+u
+"}
+(4,1,1) = {"
+u
+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
+u
+"}
+(5,1,1) = {"
+u
+a
+a
+a
+a
+a
+a
+M
+T
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(6,1,1) = {"
+u
+a
+a
+a
+a
+a
+M
+M
+T
+M
+M
+T
+M
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(7,1,1) = {"
+u
+a
+a
+a
+a
+M
+M
+M
+O
+T
+M
+O
+M
+M
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(8,1,1) = {"
+u
+a
+a
+a
+a
+M
+R
+R
+g
+g
+g
+R
+g
+H
+M
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(9,1,1) = {"
+u
+a
+a
+a
+T
+l
+R
+Z
+x
+Z
+e
+E
+R
+A
+M
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(10,1,1) = {"
+u
+a
+a
+a
+T
+O
+g
+S
+k
+k
+k
+k
+R
+m
+i
+M
+M
+a
+a
+a
+D
+D
+D
+D
+D
+B
+a
+u
+"}
+(11,1,1) = {"
+u
+a
+a
+a
+M
+M
+R
+V
+h
+h
+f
+F
+R
+z
+r
+H
+M
+a
+a
+a
+D
+C
+C
+C
+D
+D
+a
+u
+"}
+(12,1,1) = {"
+u
+a
+a
+a
+M
+M
+R
+h
+h
+h
+h
+h
+R
+G
+K
+r
+M
+a
+a
+a
+D
+D
+D
+D
+D
+D
+a
+u
+"}
+(13,1,1) = {"
+u
+a
+a
+a
+M
+T
+R
+o
+o
+h
+h
+h
+X
+c
+U
+c
+r
+a
+a
+a
+D
+D
+D
+D
+D
+D
+a
+u
+"}
+(14,1,1) = {"
+u
+a
+a
+a
+M
+T
+g
+w
+W
+h
+h
+b
+R
+G
+P
+c
+r
+a
+a
+a
+D
+D
+D
+D
+D
+D
+a
+u
+"}
+(15,1,1) = {"
+u
+a
+a
+a
+M
+T
+g
+q
+n
+h
+t
+p
+g
+y
+r
+H
+H
+a
+a
+a
+D
+D
+D
+D
+N
+D
+a
+u
+"}
+(16,1,1) = {"
+u
+a
+a
+a
+T
+O
+R
+Q
+d
+d
+d
+s
+R
+L
+i
+M
+M
+a
+a
+a
+D
+D
+D
+D
+D
+Y
+a
+u
+"}
+(17,1,1) = {"
+u
+a
+a
+a
+M
+M
+g
+Z
+j
+Z
+e
+E
+g
+A
+M
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(18,1,1) = {"
+u
+a
+a
+a
+M
+M
+R
+R
+g
+R
+g
+g
+J
+H
+M
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(19,1,1) = {"
+u
+a
+a
+a
+a
+M
+M
+M
+O
+T
+v
+O
+M
+M
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(20,1,1) = {"
+u
+a
+a
+a
+a
+a
+a
+M
+T
+M
+M
+T
+M
+M
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(21,1,1) = {"
+u
+a
+a
+a
+a
+a
+a
+a
+I
+M
+M
+M
+M
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+u
+"}
+(22,1,1) = {"
+u
+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
+u
+"}
+(23,1,1) = {"
+u
+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
+u
+"}
+(24,1,1) = {"
+u
+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
+u
+"}
+(25,1,1) = {"
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+u
+"}
diff --git a/_maps/virtual_domains/wendigo.dmm b/_maps/virtual_domains/wendigo.dmm
new file mode 100644
index 00000000000..17bcb48d688
--- /dev/null
+++ b/_maps/virtual_domains/wendigo.dmm
@@ -0,0 +1,1373 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/open/indestructible/necropolis{
+ initial_gas_mix = "ICEMOON_ATMOS"
+ },
+/area/icemoon/underground/explored/virtual_domain)
+"b" = (
+/turf/closed/indestructible/rock/snow/ice/ore,
+/area/icemoon/underground/explored/virtual_domain)
+"e" = (
+/turf/open/misc/asteroid/snow/ice/icemoon,
+/area/icemoon/underground/explored/virtual_domain)
+"f" = (
+/obj/structure/marker_beacon/olive,
+/turf/open/indestructible/necropolis{
+ initial_gas_mix = "ICEMOON_ATMOS"
+ },
+/area/icemoon/underground/explored/virtual_domain)
+"i" = (
+/turf/closed/indestructible/binary,
+/area/icemoon/underground/explored/virtual_domain)
+"o" = (
+/obj/structure/marker_beacon/indigo,
+/turf/open/indestructible/necropolis{
+ initial_gas_mix = "ICEMOON_ATMOS"
+ },
+/area/icemoon/underground/explored/virtual_domain)
+"p" = (
+/obj/structure/marker_beacon/bronze,
+/turf/open/indestructible/necropolis{
+ initial_gas_mix = "ICEMOON_ATMOS"
+ },
+/area/icemoon/underground/explored/virtual_domain)
+"q" = (
+/obj/structure/marker_beacon/yellow,
+/turf/open/indestructible/necropolis{
+ initial_gas_mix = "ICEMOON_ATMOS"
+ },
+/area/icemoon/underground/explored/virtual_domain)
+"t" = (
+/obj/structure/marker_beacon/teal,
+/turf/open/indestructible/necropolis{
+ initial_gas_mix = "ICEMOON_ATMOS"
+ },
+/area/icemoon/underground/explored/virtual_domain)
+"x" = (
+/obj/structure/marker_beacon/burgundy,
+/turf/open/indestructible/necropolis{
+ initial_gas_mix = "ICEMOON_ATMOS"
+ },
+/area/icemoon/underground/explored/virtual_domain)
+"A" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"E" = (
+/obj/effect/mob_spawn/corpse/human/miner,
+/turf/open/misc/asteroid/snow/ice/icemoon,
+/area/icemoon/underground/explored/virtual_domain)
+"H" = (
+/mob/living/simple_animal/hostile/megafauna/wendigo/virtual_domain,
+/turf/open/indestructible/necropolis{
+ initial_gas_mix = "ICEMOON_ATMOS"
+ },
+/area/icemoon/underground/explored/virtual_domain)
+"L" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/icemoon/underground/explored/virtual_domain)
+"R" = (
+/obj/item/paper/crumpled/bloody{
+ default_raw_text = "for your own sake, do not enter"
+ },
+/turf/open/misc/asteroid/snow/ice/icemoon,
+/area/icemoon/underground/explored/virtual_domain)
+"S" = (
+/turf/template_noop,
+/area/template_noop)
+"V" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"Z" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+
+(1,1,1) = {"
+S
+S
+S
+S
+S
+S
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+"}
+(2,1,1) = {"
+S
+S
+S
+S
+S
+i
+i
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+i
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+"}
+(3,1,1) = {"
+S
+S
+S
+S
+i
+i
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+i
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+"}
+(4,1,1) = {"
+S
+S
+S
+i
+i
+e
+e
+e
+b
+b
+b
+b
+b
+e
+e
+e
+b
+b
+b
+b
+b
+e
+e
+e
+i
+i
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+"}
+(5,1,1) = {"
+S
+S
+i
+i
+e
+e
+e
+b
+b
+b
+b
+b
+b
+b
+e
+b
+b
+b
+b
+b
+b
+b
+e
+e
+e
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+L
+"}
+(6,1,1) = {"
+S
+i
+i
+e
+e
+e
+b
+b
+b
+b
+b
+b
+b
+b
+e
+b
+b
+b
+b
+b
+b
+b
+b
+e
+e
+e
+i
+i
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(7,1,1) = {"
+i
+i
+e
+e
+e
+b
+b
+b
+b
+b
+b
+b
+b
+b
+e
+b
+b
+b
+b
+b
+b
+b
+b
+b
+e
+e
+e
+i
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(8,1,1) = {"
+i
+e
+e
+e
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(9,1,1) = {"
+i
+e
+e
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(10,1,1) = {"
+i
+e
+e
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(11,1,1) = {"
+i
+e
+E
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+o
+a
+a
+b
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(12,1,1) = {"
+i
+e
+e
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(13,1,1) = {"
+i
+e
+e
+b
+b
+b
+a
+a
+a
+a
+q
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(14,1,1) = {"
+i
+e
+e
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+e
+e
+e
+V
+V
+V
+V
+V
+Z
+e
+i
+"}
+(15,1,1) = {"
+i
+e
+e
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+E
+e
+e
+V
+V
+V
+V
+V
+V
+e
+i
+"}
+(16,1,1) = {"
+i
+e
+e
+e
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+e
+e
+e
+e
+V
+V
+V
+V
+V
+V
+e
+i
+"}
+(17,1,1) = {"
+i
+e
+e
+e
+e
+e
+a
+a
+a
+a
+a
+a
+a
+a
+H
+a
+a
+a
+a
+x
+a
+a
+a
+e
+e
+e
+e
+R
+e
+V
+V
+V
+V
+V
+V
+e
+i
+"}
+(18,1,1) = {"
+i
+e
+e
+e
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+e
+e
+e
+e
+V
+V
+V
+V
+V
+V
+e
+i
+"}
+(19,1,1) = {"
+i
+e
+e
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+e
+e
+e
+V
+V
+V
+V
+V
+V
+e
+i
+"}
+(20,1,1) = {"
+i
+e
+e
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+p
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+e
+e
+e
+V
+V
+V
+V
+V
+A
+e
+i
+"}
+(21,1,1) = {"
+i
+e
+e
+b
+b
+b
+a
+a
+a
+a
+f
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(22,1,1) = {"
+i
+e
+e
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(23,1,1) = {"
+i
+e
+e
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+t
+a
+b
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(24,1,1) = {"
+i
+e
+e
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(25,1,1) = {"
+i
+e
+e
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(26,1,1) = {"
+i
+e
+e
+e
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(27,1,1) = {"
+i
+i
+e
+e
+e
+b
+b
+b
+b
+b
+b
+b
+b
+b
+e
+b
+b
+b
+b
+b
+b
+b
+b
+b
+e
+e
+e
+i
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(28,1,1) = {"
+S
+i
+i
+e
+e
+e
+b
+b
+b
+b
+b
+b
+b
+b
+e
+b
+b
+b
+b
+b
+b
+b
+b
+e
+e
+e
+i
+i
+e
+e
+e
+e
+e
+e
+e
+e
+i
+"}
+(29,1,1) = {"
+S
+S
+i
+i
+e
+e
+e
+b
+b
+b
+b
+b
+b
+b
+e
+b
+b
+b
+b
+b
+b
+b
+e
+e
+e
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+"}
+(30,1,1) = {"
+S
+S
+S
+i
+i
+e
+e
+e
+b
+b
+b
+b
+b
+e
+e
+e
+b
+b
+b
+b
+b
+e
+e
+e
+i
+i
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+"}
+(31,1,1) = {"
+S
+S
+S
+S
+i
+i
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+i
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+"}
+(32,1,1) = {"
+S
+S
+S
+S
+S
+i
+i
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+i
+i
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+"}
+(33,1,1) = {"
+S
+S
+S
+S
+S
+S
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+S
+"}
diff --git a/_maps/virtual_domains/xeno_nest.dmm b/_maps/virtual_domains/xeno_nest.dmm
new file mode 100644
index 00000000000..fcbd7cc116c
--- /dev/null
+++ b/_maps/virtual_domains/xeno_nest.dmm
@@ -0,0 +1,2071 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"c" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/resin/wall,
+/obj/structure/alien/resin/wall,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"d" = (
+/obj/structure/alien/resin/wall,
+/turf/closed/indestructible/binary,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"e" = (
+/obj/structure/alien/weeds,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"f" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/egg/burst,
+/obj/effect/decal/cleanable/blood,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"h" = (
+/obj/structure/alien/weeds,
+/mob/living/simple_animal/hostile/alien/sentinel,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"i" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/effect/decal/cleanable/blood/gibs,
+/obj/effect/decal/cleanable/blood,
+/obj/item/clothing/under/syndicate,
+/obj/item/clothing/glasses/night,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"j" = (
+/obj/machinery/suit_storage_unit/spaceruin,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"k" = (
+/obj/structure/alien/weeds/node,
+/obj/structure/alien/resin/wall,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"l" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/resin/wall,
+/turf/closed/indestructible/binary,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"m" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/structure/alien/resin/wall,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"n" = (
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"o" = (
+/obj/structure/alien/weeds,
+/obj/effect/decal/cleanable/blood/gibs,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"p" = (
+/obj/structure/alien/weeds,
+/mob/living/simple_animal/hostile/alien/drone{
+ plants_off = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"q" = (
+/obj/structure/alien/resin/wall,
+/turf/open/space/basic,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"r" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"s" = (
+/obj/structure/alien/weeds/node,
+/mob/living/simple_animal/hostile/alien/drone{
+ plants_off = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"t" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/weeds,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"u" = (
+/obj/structure/alien/weeds/node,
+/obj/effect/decal/cleanable/blood,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"v" = (
+/obj/effect/landmark/bitrunning/safehouse_spawn,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"x" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"z" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/resin/wall,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"A" = (
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"B" = (
+/obj/structure/alien/weeds,
+/obj/effect/decal/cleanable/blood,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"C" = (
+/obj/structure/alien/weeds,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"D" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/weeds,
+/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"E" = (
+/turf/closed/indestructible/binary,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"F" = (
+/obj/structure/table/greyscale,
+/obj/item/gun/energy/beam_rifle,
+/obj/item/gun/energy/laser{
+ pixel_x = 4;
+ pixel_y = -6
+ },
+/obj/item/gun/energy/laser{
+ pixel_x = -8;
+ pixel_y = 6
+ },
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"G" = (
+/obj/structure/alien/resin/wall,
+/obj/structure/alien/weeds,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"H" = (
+/obj/structure/table/greyscale,
+/obj/machinery/recharger{
+ pixel_x = 8;
+ pixel_y = 4
+ },
+/obj/machinery/recharger{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"I" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"J" = (
+/obj/structure/alien/weeds,
+/mob/living/simple_animal/hostile/alien/queen/large{
+ desc = "A gigantic alien who is in charge of the hive and all of its loyal servants.";
+ name = "alien queen";
+ pixel_x = -16;
+ plants_off = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"K" = (
+/obj/structure/alien/weeds,
+/obj/effect/landmark/bitrunning/cache_spawn,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"L" = (
+/obj/item/storage/medkit/regular,
+/obj/item/storage/medkit/regular,
+/turf/template_noop,
+/area/virtual_domain/safehouse)
+"M" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/resin/wall{
+ move_force = 1000;
+ move_resist = 3000;
+ pull_force = 1000
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"N" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/effect/decal/cleanable/blood/gibs,
+/obj/item/clothing/under/rank/security/officer,
+/obj/item/clothing/suit/armor/vest,
+/obj/item/melee/baton/security/loaded,
+/obj/item/clothing/head/helmet,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"O" = (
+/obj/effect/baseturf_helper/virtual_domain,
+/turf/closed/indestructible/binary,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"P" = (
+/obj/structure/alien/weeds/node,
+/mob/living/simple_animal/hostile/alien,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Q" = (
+/obj/structure/alien/resin/wall,
+/obj/structure/alien/resin/wall,
+/turf/closed/indestructible/binary,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"S" = (
+/obj/structure/alien/weeds,
+/mob/living/simple_animal/hostile/alien,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"T" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/egg/burst,
+/obj/effect/decal/cleanable/blood/gibs,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"U" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/effect/decal/cleanable/blood/gibs,
+/obj/item/gun/ballistic/automatic/pistol,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"V" = (
+/obj/structure/alien/weeds/node,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"W" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/egg/burst,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Y" = (
+/obj/structure/alien/weeds,
+/obj/effect/decal/cleanable/blood,
+/mob/living/simple_animal/hostile/alien/drone{
+ plants_off = 1
+ },
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+"Z" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/effect/decal/cleanable/blood/gibs,
+/obj/item/tank/internals/oxygen,
+/obj/item/clothing/suit/space/syndicate/orange,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/head/helmet/space/syndicate/orange,
+/turf/open/misc/asteroid/basalt/lava_land_surface,
+/area/ruin/space/has_grav/powered/virtual_domain)
+
+(1,1,1) = {"
+a
+a
+a
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+a
+E
+E
+z
+z
+z
+z
+z
+z
+z
+z
+E
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+a
+E
+E
+z
+e
+W
+W
+z
+e
+e
+z
+M
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+a
+E
+z
+z
+e
+e
+e
+e
+p
+e
+W
+z
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(5,1,1) = {"
+a
+a
+a
+E
+z
+e
+e
+k
+z
+z
+z
+k
+z
+z
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(6,1,1) = {"
+a
+a
+a
+E
+z
+e
+e
+m
+K
+J
+o
+i
+z
+z
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(7,1,1) = {"
+a
+a
+a
+E
+z
+W
+h
+e
+e
+e
+B
+o
+e
+z
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(8,1,1) = {"
+a
+a
+a
+E
+z
+I
+o
+z
+e
+V
+e
+h
+W
+z
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(9,1,1) = {"
+a
+a
+a
+E
+z
+U
+u
+e
+z
+e
+e
+W
+z
+z
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(10,1,1) = {"
+a
+a
+a
+E
+z
+e
+o
+z
+e
+e
+e
+k
+W
+z
+E
+a
+a
+a
+a
+a
+a
+a
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+a
+a
+a
+a
+a
+a
+a
+"}
+(11,1,1) = {"
+a
+a
+a
+E
+z
+z
+e
+h
+e
+e
+h
+e
+e
+z
+E
+a
+a
+a
+a
+a
+a
+a
+E
+E
+E
+E
+z
+z
+z
+z
+E
+E
+a
+a
+a
+a
+a
+a
+a
+"}
+(12,1,1) = {"
+a
+a
+a
+E
+E
+z
+W
+e
+e
+e
+e
+e
+e
+z
+E
+a
+a
+a
+a
+a
+a
+a
+E
+E
+E
+z
+z
+Z
+I
+z
+z
+E
+a
+a
+a
+a
+a
+a
+a
+"}
+(13,1,1) = {"
+a
+a
+a
+E
+E
+z
+z
+e
+e
+V
+e
+e
+z
+z
+E
+a
+a
+a
+a
+a
+a
+a
+E
+E
+z
+z
+W
+o
+Y
+e
+z
+E
+a
+a
+a
+a
+a
+a
+a
+"}
+(14,1,1) = {"
+a
+a
+a
+E
+E
+E
+z
+z
+e
+e
+e
+z
+z
+E
+E
+a
+a
+a
+a
+E
+E
+E
+E
+E
+z
+I
+e
+V
+e
+W
+z
+E
+a
+a
+a
+a
+a
+a
+a
+"}
+(15,1,1) = {"
+a
+a
+a
+a
+a
+E
+E
+z
+z
+z
+z
+z
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+z
+z
+z
+e
+e
+e
+I
+z
+z
+E
+a
+a
+a
+a
+a
+a
+a
+"}
+(16,1,1) = {"
+a
+a
+a
+a
+a
+a
+E
+z
+V
+V
+z
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+z
+z
+e
+S
+e
+W
+z
+z
+z
+E
+E
+a
+a
+a
+a
+a
+a
+a
+"}
+(17,1,1) = {"
+a
+a
+a
+a
+a
+a
+E
+z
+p
+e
+z
+z
+E
+z
+z
+z
+z
+z
+z
+z
+z
+z
+e
+e
+z
+z
+z
+z
+E
+E
+E
+E
+a
+a
+a
+a
+a
+a
+a
+"}
+(18,1,1) = {"
+a
+a
+a
+a
+a
+a
+E
+z
+e
+e
+p
+z
+z
+z
+e
+e
+e
+e
+e
+e
+z
+z
+e
+z
+z
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+O
+"}
+(19,1,1) = {"
+E
+E
+E
+E
+E
+E
+E
+z
+z
+e
+e
+e
+z
+e
+e
+e
+e
+e
+e
+V
+e
+e
+e
+z
+E
+E
+E
+E
+E
+E
+Q
+d
+q
+q
+q
+q
+q
+q
+E
+"}
+(20,1,1) = {"
+E
+z
+z
+z
+z
+E
+E
+E
+z
+z
+e
+V
+e
+e
+e
+z
+z
+z
+z
+e
+e
+t
+z
+z
+E
+E
+a
+a
+a
+E
+q
+A
+A
+A
+A
+A
+A
+A
+E
+"}
+(21,1,1) = {"
+E
+z
+W
+I
+z
+z
+z
+z
+z
+z
+e
+e
+e
+e
+z
+z
+E
+E
+z
+z
+e
+e
+z
+E
+E
+E
+a
+a
+a
+E
+q
+A
+A
+A
+A
+A
+A
+A
+E
+"}
+(22,1,1) = {"
+E
+G
+t
+S
+e
+z
+z
+e
+e
+e
+e
+e
+e
+z
+z
+E
+E
+E
+z
+e
+e
+e
+z
+E
+E
+E
+a
+a
+a
+E
+q
+A
+C
+A
+A
+A
+A
+A
+E
+"}
+(23,1,1) = {"
+E
+G
+K
+W
+V
+e
+e
+e
+z
+z
+e
+z
+z
+z
+E
+E
+E
+E
+z
+e
+e
+z
+z
+E
+E
+a
+a
+a
+a
+E
+q
+C
+C
+C
+A
+A
+A
+A
+E
+"}
+(24,1,1) = {"
+E
+z
+z
+I
+I
+z
+z
+z
+z
+z
+e
+z
+E
+E
+E
+E
+E
+E
+z
+e
+e
+z
+E
+E
+E
+E
+E
+E
+E
+E
+d
+C
+C
+A
+A
+C
+A
+A
+E
+"}
+(25,1,1) = {"
+E
+E
+z
+z
+z
+z
+E
+E
+E
+z
+p
+z
+z
+E
+E
+E
+E
+E
+z
+e
+s
+z
+z
+z
+E
+E
+E
+E
+E
+E
+z
+C
+C
+C
+A
+C
+C
+A
+E
+"}
+(26,1,1) = {"
+a
+E
+E
+E
+E
+E
+E
+E
+E
+z
+e
+e
+z
+E
+E
+E
+E
+E
+z
+e
+e
+e
+e
+z
+z
+z
+E
+E
+E
+z
+z
+n
+n
+n
+n
+n
+v
+A
+E
+"}
+(27,1,1) = {"
+a
+a
+a
+a
+a
+E
+E
+z
+z
+z
+e
+e
+z
+z
+E
+E
+E
+E
+z
+z
+e
+e
+e
+e
+e
+z
+z
+z
+z
+k
+e
+n
+j
+j
+j
+n
+n
+A
+E
+"}
+(28,1,1) = {"
+a
+a
+a
+a
+a
+E
+z
+z
+T
+e
+e
+V
+W
+z
+E
+E
+E
+z
+z
+e
+e
+z
+z
+e
+e
+e
+z
+V
+e
+e
+e
+n
+n
+n
+n
+n
+n
+A
+E
+"}
+(29,1,1) = {"
+a
+a
+a
+a
+a
+E
+z
+N
+f
+S
+e
+W
+I
+z
+E
+E
+E
+z
+e
+e
+z
+z
+z
+z
+e
+V
+z
+V
+t
+e
+e
+n
+n
+F
+H
+n
+n
+A
+E
+"}
+(30,1,1) = {"
+a
+a
+a
+a
+a
+E
+z
+x
+o
+e
+I
+I
+z
+z
+E
+E
+E
+z
+e
+z
+z
+E
+E
+z
+z
+z
+z
+z
+k
+e
+e
+n
+n
+n
+n
+n
+n
+A
+E
+"}
+(31,1,1) = {"
+a
+a
+a
+a
+a
+E
+z
+z
+z
+e
+z
+z
+z
+E
+E
+E
+E
+z
+e
+z
+z
+E
+E
+E
+E
+E
+E
+E
+z
+e
+e
+n
+L
+n
+n
+n
+n
+A
+E
+"}
+(32,1,1) = {"
+a
+a
+a
+a
+a
+E
+E
+E
+z
+e
+z
+E
+E
+E
+E
+E
+E
+z
+e
+e
+z
+E
+a
+a
+a
+a
+E
+E
+z
+e
+e
+n
+n
+n
+n
+n
+r
+A
+E
+"}
+(33,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+E
+z
+e
+z
+E
+E
+a
+a
+a
+E
+l
+z
+V
+z
+E
+a
+a
+a
+a
+E
+z
+z
+z
+q
+C
+A
+A
+C
+A
+A
+A
+E
+"}
+(34,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+E
+z
+V
+z
+E
+E
+a
+a
+a
+E
+E
+z
+e
+z
+E
+a
+a
+a
+a
+E
+z
+E
+d
+q
+C
+C
+C
+A
+A
+A
+A
+E
+"}
+(35,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+E
+z
+e
+z
+E
+E
+a
+a
+a
+E
+E
+z
+e
+z
+E
+a
+a
+a
+a
+E
+E
+E
+d
+q
+A
+A
+A
+A
+A
+A
+A
+E
+"}
+(36,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+E
+z
+e
+z
+E
+E
+E
+E
+E
+E
+z
+z
+e
+z
+E
+a
+a
+a
+a
+a
+a
+E
+d
+q
+A
+C
+D
+A
+A
+A
+A
+E
+"}
+(37,1,1) = {"
+a
+a
+a
+a
+E
+E
+E
+E
+z
+e
+z
+E
+E
+E
+E
+E
+z
+z
+e
+e
+z
+E
+a
+a
+a
+a
+a
+a
+E
+d
+q
+A
+A
+A
+A
+A
+A
+A
+E
+"}
+(38,1,1) = {"
+a
+a
+a
+a
+E
+E
+E
+z
+z
+e
+z
+z
+z
+z
+z
+z
+z
+e
+e
+z
+z
+E
+a
+a
+a
+a
+a
+a
+E
+d
+q
+A
+A
+A
+A
+A
+A
+A
+E
+"}
+(39,1,1) = {"
+a
+a
+a
+a
+E
+E
+z
+z
+e
+e
+W
+z
+z
+e
+e
+P
+e
+e
+z
+z
+E
+E
+a
+a
+a
+a
+a
+a
+E
+Q
+q
+q
+q
+q
+q
+q
+q
+q
+E
+"}
+(40,1,1) = {"
+a
+a
+a
+a
+E
+E
+z
+I
+p
+e
+e
+e
+e
+e
+z
+z
+z
+z
+z
+E
+E
+a
+a
+a
+a
+a
+a
+a
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+E
+"}
+(41,1,1) = {"
+a
+a
+a
+a
+E
+z
+z
+W
+e
+V
+e
+W
+z
+z
+z
+E
+E
+E
+E
+E
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(42,1,1) = {"
+a
+a
+a
+a
+E
+z
+W
+K
+e
+I
+I
+z
+z
+E
+E
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(43,1,1) = {"
+a
+a
+a
+a
+E
+c
+z
+z
+z
+z
+z
+z
+E
+E
+E
+E
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(44,1,1) = {"
+a
+a
+a
+a
+E
+E
+E
+E
+E
+E
+E
+E
+E
+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
+"}
diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm
index 42a93fd56fd..90726effb00 100644
--- a/code/__DEFINES/access.dm
+++ b/code/__DEFINES/access.dm
@@ -104,6 +104,8 @@
#define ACCESS_VAULT "vault"
/// Access for the Quartermaster's personal quarters in mapping, as well as some other QM-related things.
#define ACCESS_QM "qm"
+/// Access for the bitrunning den
+#define ACCESS_BIT_DEN "bit_den"
/// General access for Science, allows for entry to the general hallways of Science, as well as the main lathe room.
#define ACCESS_SCIENCE "science"
@@ -281,6 +283,7 @@
ACCESS_ATMOSPHERICS, \
ACCESS_AUX_BASE, \
ACCESS_BAR, \
+ ACCESS_BIT_DEN, \
ACCESS_BRIG, \
ACCESS_BRIG_ENTRANCE, \
ACCESS_CARGO, \
@@ -491,6 +494,7 @@
#define REGION_SUPPLY "Supply"
/// Used to seed the accesses_by_region list in SSid_access. A list of all cargo regional accesses that are overseen by the HoP.
#define REGION_ACCESS_SUPPLY list( \
+ ACCESS_BIT_DEN, \
ACCESS_CARGO, \
ACCESS_MECH_MINING, \
ACCESS_MINERAL_STOREROOM, \
@@ -549,6 +553,7 @@
/obj/item/modular_computer/pda/heads/rd = list(REGION_COMMAND), \
/obj/item/modular_computer/pda/heads/captain = list(REGION_COMMAND), \
/obj/item/modular_computer/pda/cargo = list(REGION_SUPPLY), \
+ /obj/item/modular_computer/pda/bitrunner = list(REGION_SUPPLY), \
/obj/item/modular_computer/pda/shaftminer = list(REGION_SUPPLY), \
/obj/item/modular_computer/pda/chaplain = list(REGION_GENERAL), \
/obj/item/modular_computer/pda/lawyer = list(REGION_GENERAL), \
diff --git a/code/__DEFINES/alerts.dm b/code/__DEFINES/alerts.dm
index 43ec8199d0f..6f25e61e7c5 100644
--- a/code/__DEFINES/alerts.dm
+++ b/code/__DEFINES/alerts.dm
@@ -61,3 +61,12 @@
#define ALERT_TEMPERATURE "temp"
#define ALERT_TEMPERATURE_HOT "temphot"
#define ALERT_TEMPERATURE_COLD "tempcold"
+
+/** Bitrunning */
+#define ALERT_BITRUNNER_CROWBAR "bitrunning_crowbar"
+#define ALERT_BITRUNNER_COMPLETED "bitrunning_complete"
+#define ALERT_BITRUNNER_INTEGRITY "bitrunning_integrity"
+#define ALERT_BITRUNNER_SHUTDOWN "bitrunning_shutdown"
+#define ALERT_BITRUNNER_RESET "bitrunning_reset"
+#define ALERT_BITRUNNER_SPAWN_CYBERCOP "bitrunning_spawn_cybercop"
+#define ALERT_BITRUNNER_THREAT "bitrunning_threat"
diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm
index d9d0cd5cf0d..7bd58e41844 100644
--- a/code/__DEFINES/antagonists.dm
+++ b/code/__DEFINES/antagonists.dm
@@ -317,6 +317,7 @@ GLOBAL_LIST_INIT(human_invader_antagonists, list(
#define ANTAG_GROUP_ASHWALKERS "Ash Walkers"
#define ANTAG_GROUP_BIOHAZARDS "Biohazards"
#define ANTAG_GROUP_CLOWNOPS "Clown Operatives"
+#define ANTAG_GROUP_CYBERAUTH "Cyber Authority"
#define ANTAG_GROUP_ERT "Emergency Response Team"
#define ANTAG_GROUP_HORRORS "Eldritch Horrors"
#define ANTAG_GROUP_LEVIATHANS "Spaceborne Leviathans"
diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm
index 3a175a2585a..515e93fefd4 100644
--- a/code/__DEFINES/atom_hud.dm
+++ b/code/__DEFINES/atom_hud.dm
@@ -84,6 +84,7 @@
#define SECHUD_ASSISTANT "hudassistant"
#define SECHUD_ATMOSPHERIC_TECHNICIAN "hudatmospherictechnician"
#define SECHUD_BARTENDER "hudbartender"
+#define SECHUD_BITRUNNER "hudbitrunner"
#define SECHUD_BOTANIST "hudbotanist"
#define SECHUD_CAPTAIN "hudcaptain"
#define SECHUD_CARGO_TECHNICIAN "hudcargotechnician"
diff --git a/code/__DEFINES/bitrunning.dm b/code/__DEFINES/bitrunning.dm
new file mode 100644
index 00000000000..343801c477e
--- /dev/null
+++ b/code/__DEFINES/bitrunning.dm
@@ -0,0 +1,20 @@
+#define BITRUNNER_COST_NONE 0
+#define BITRUNNER_COST_LOW 1
+#define BITRUNNER_COST_MEDIUM 2
+#define BITRUNNER_COST_HIGH 3
+#define BITRUNNER_COST_EXTREME 20
+
+#define BITRUNNER_REWARD_MIN 1
+#define BITRUNNER_REWARD_LOW 3
+#define BITRUNNER_REWARD_MEDIUM 4
+#define BITRUNNER_REWARD_HIGH 5
+#define BITRUNNER_REWARD_EXTREME 6
+
+/// Blue in ui
+#define BITRUNNER_DIFFICULTY_NONE 0
+/// Yellow
+#define BITRUNNER_DIFFICULTY_LOW 1
+/// Orange
+#define BITRUNNER_DIFFICULTY_MEDIUM 2
+/// Red with skull
+#define BITRUNNER_DIFFICULTY_HIGH 3
diff --git a/code/__DEFINES/computers.dm b/code/__DEFINES/computers.dm
index 1349913c183..ba3294ae683 100644
--- a/code/__DEFINES/computers.dm
+++ b/code/__DEFINES/computers.dm
@@ -8,3 +8,6 @@
#define CATEGORY_CONSUMABLES "Consumables"
#define CATEGORY_TOYS_DRONE "Toys & Drones"
#define CATEGORY_PKA "PKAs"
+#define CATEGORY_BEPIS "Bepis Tech"
+#define CATEGORY_BITRUNNING_FLAIR "Misc"
+#define CATEGORY_BITRUNNING_TECH "Tech"
diff --git a/code/__DEFINES/dcs/signals/signals_bitrunning.dm b/code/__DEFINES/dcs/signals/signals_bitrunning.dm
new file mode 100644
index 00000000000..3d008449ee7
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_bitrunning.dm
@@ -0,0 +1,31 @@
+/// from /obj/machinery/netpod/default_pry_open() : (mob/living/intruder)
+#define COMSIG_BITRUNNER_CROWBAR_ALERT "bitrunner_crowbar"
+
+/// 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"
+
+/// from /obj/machinery/netpod/on_take_damage()
+#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(), /obj/machinery/quantum_server, etc (obj/machinery/netpod)
+#define COMSIG_BITRUNNER_SEVER_AVATAR "bitrunner_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() :
+#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"
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_spawner.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_spawner.dm
index a5f66788b86..6ff8b1e8d61 100644
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_spawner.dm
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_spawner.dm
@@ -1,3 +1,6 @@
// signals for use by mob spawners
/// called when a spawner spawns a mob
#define COMSIG_SPAWNER_SPAWNED "spawner_spawned"
+
+/// called when a ghost clicks a spawner role: (mob/living)
+#define COMSIG_GHOSTROLE_SPAWNED "ghostrole_spawned"
diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm
index cbeb3bbf229..23c731565d7 100644
--- a/code/__DEFINES/jobs.dm
+++ b/code/__DEFINES/jobs.dm
@@ -77,6 +77,7 @@
#define JOB_QUARTERMASTER "Quartermaster"
#define JOB_CARGO_TECHNICIAN "Cargo Technician"
#define JOB_SHAFT_MINER "Shaft Miner"
+#define JOB_BITRUNNER "Bitrunner"
//Service
#define JOB_BARTENDER "Bartender"
#define JOB_BOTANIST "Botanist"
@@ -138,22 +139,22 @@
#define JOB_DISPLAY_ORDER_QUARTERMASTER 19
#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 20
#define JOB_DISPLAY_ORDER_SHAFT_MINER 21
-#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 22
-#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 23
-#define JOB_DISPLAY_ORDER_PARAMEDIC 24
-#define JOB_DISPLAY_ORDER_CHEMIST 25
-#define JOB_DISPLAY_ORDER_VIROLOGIST 26
-#define JOB_DISPLAY_ORDER_CORONER 27
-#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 28
-#define JOB_DISPLAY_ORDER_SCIENTIST 29
-#define JOB_DISPLAY_ORDER_ROBOTICIST 30
-#define JOB_DISPLAY_ORDER_GENETICIST 31
-#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 32
-#define JOB_DISPLAY_ORDER_WARDEN 33
-#define JOB_DISPLAY_ORDER_DETECTIVE 34
-#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 35
-#define JOB_DISPLAY_ORDER_PRISONER 36
-
+#define JOB_DISPLAY_ORDER_BITRUNNER 22
+#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 23
+#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 24
+#define JOB_DISPLAY_ORDER_PARAMEDIC 25
+#define JOB_DISPLAY_ORDER_CHEMIST 26
+#define JOB_DISPLAY_ORDER_VIROLOGIST 27
+#define JOB_DISPLAY_ORDER_CORONER 28
+#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 29
+#define JOB_DISPLAY_ORDER_SCIENTIST 30
+#define JOB_DISPLAY_ORDER_ROBOTICIST 31
+#define JOB_DISPLAY_ORDER_GENETICIST 32
+#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 33
+#define JOB_DISPLAY_ORDER_WARDEN 34
+#define JOB_DISPLAY_ORDER_DETECTIVE 35
+#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 36
+#define JOB_DISPLAY_ORDER_PRISONER 37
#define DEPARTMENT_UNASSIGNED "No Department"
diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm
index 646a531f90a..6f5b97e7ab8 100644
--- a/code/__DEFINES/role_preferences.dm
+++ b/code/__DEFINES/role_preferences.dm
@@ -23,6 +23,7 @@
#define ROLE_BLOB "Blob"
#define ROLE_BLOB_INFECTION "Blob Infection"
#define ROLE_CHANGELING_MIDROUND "Changeling (Midround)"
+#define ROLE_CYBER_POLICE "Cyber Police"
#define ROLE_FUGITIVE "Fugitive"
#define ROLE_LONE_OPERATIVE "Lone Operative"
#define ROLE_MALF_MIDROUND "Malf AI (Midround)"
@@ -41,69 +42,69 @@
// Latejoin roles
#define ROLE_HERETIC_SMUGGLER "Heretic Smuggler"
#define ROLE_PROVOCATEUR "Provocateur"
-#define ROLE_SYNDICATE_INFILTRATOR "Syndicate Infiltrator"
#define ROLE_STOWAWAY_CHANGELING "Stowaway Changeling"
+#define ROLE_SYNDICATE_INFILTRATOR "Syndicate Infiltrator"
// Other roles
-#define ROLE_SYNDICATE "Syndicate"
-#define ROLE_REV "Revolutionary"
-#define ROLE_PAI "pAI"
-#define ROLE_MONKEY_HELMET "Monkey Mind Magnification Helmet"
-#define ROLE_REVENANT "Revenant"
-#define ROLE_BRAINWASHED "Brainwashed Victim"
-#define ROLE_HYPNOTIZED "Hypnotized Victim"
-#define ROLE_OVERTHROW "Syndicate Mutineer" //Role removed, left here for safety.
-#define ROLE_HIVE "Hivemind Host" //Role removed, left here for safety.
-#define ROLE_SENTIENCE "Sentience Potion Spawn"
-#define ROLE_PYROCLASTIC_SLIME "Pyroclastic Anomaly Slime"
#define ROLE_ANOMALY_GHOST "Ectoplasmic Anomaly Ghost"
-#define ROLE_MIND_TRANSFER "Mind Transfer Potion"
-#define ROLE_LAZARUS_GOOD "Friendly Revived Mob"
-#define ROLE_LAZARUS_BAD "Slaved Revived Mob"
-#define ROLE_POSIBRAIN "Posibrain"
+#define ROLE_BRAINWASHED "Brainwashed Victim"
+#define ROLE_DEATHSQUAD "Deathsquad"
#define ROLE_DRONE "Drone"
#define ROLE_EMAGGED_BOT "Malfunctioning Bot"
-#define ROLE_DEATHSQUAD "Deathsquad"
+#define ROLE_HIVE "Hivemind Host" //Role removed, left here for safety.
+#define ROLE_HYPNOTIZED "Hypnotized Victim"
#define ROLE_LAVALAND "Lavaland"
+#define ROLE_LAZARUS_BAD "Slaved Revived Mob"
+#define ROLE_LAZARUS_GOOD "Friendly Revived Mob"
+#define ROLE_MIND_TRANSFER "Mind Transfer Potion"
+#define ROLE_MONKEY_HELMET "Monkey Mind Magnification Helmet"
+#define ROLE_OVERTHROW "Syndicate Mutineer" //Role removed, left here for safety.
+#define ROLE_PAI "pAI"
+#define ROLE_POSIBRAIN "Posibrain"
+#define ROLE_PYROCLASTIC_SLIME "Pyroclastic Anomaly Slime"
+#define ROLE_REV "Revolutionary"
+#define ROLE_REVENANT "Revenant"
+#define ROLE_SENTIENCE "Sentience Potion Spawn"
+#define ROLE_SYNDICATE "Syndicate"
-#define ROLE_POSITRONIC_BRAIN "Positronic Brain"
-#define ROLE_FREE_GOLEM "Free Golem"
-#define ROLE_SERVANT_GOLEM "Servant Golem"
-#define ROLE_NUCLEAR_OPERATIVE "Nuclear Operative"
#define ROLE_CLOWN_OPERATIVE "Clown Operative"
-#define ROLE_WIZARD_APPRENTICE "apprentice"
-#define ROLE_SLAUGHTER_DEMON "Slaughter Demon"
+#define ROLE_FREE_GOLEM "Free Golem"
#define ROLE_MORPH "Morph"
+#define ROLE_NUCLEAR_OPERATIVE "Nuclear Operative"
+#define ROLE_POSITRONIC_BRAIN "Positronic Brain"
#define ROLE_SANTA "Santa"
+#define ROLE_SERVANT_GOLEM "Servant Golem"
+#define ROLE_SLAUGHTER_DEMON "Slaughter Demon"
+#define ROLE_WIZARD_APPRENTICE "apprentice"
//Spawner roles
-#define ROLE_GHOST_ROLE "Ghost Role"
+#define ROLE_ANCIENT_CREW "Ancient Crew"
+#define ROLE_ASHWALKER "Ash Walker"
+#define ROLE_BATTLECRUISER_CAPTAIN "Battlecruiser Captain"
+#define ROLE_BATTLECRUISER_CREW "Battlecruiser Crew"
+#define ROLE_BEACH_BUM "Beach Bum"
+#define ROLE_BOT "Bot"
+#define ROLE_DERELICT_DRONE "Derelict Drone"
+#define ROLE_ESCAPED_PRISONER "Escaped Prisoner"
#define ROLE_EXILE "Exile"
#define ROLE_FUGITIVE_HUNTER "Fugitive Hunter"
-#define ROLE_ESCAPED_PRISONER "Escaped Prisoner"
-#define ROLE_LIFEBRINGER "Lifebringer"
-#define ROLE_ASHWALKER "Ash Walker"
-#define ROLE_LAVALAND_SYNDICATE "Lavaland Syndicate"
+#define ROLE_GHOST_ROLE "Ghost Role"
#define ROLE_HERMIT "Hermit"
-#define ROLE_BEACH_BUM "Beach Bum"
#define ROLE_HOTEL_STAFF "Hotel Staff"
+#define ROLE_LAVALAND_SYNDICATE "Lavaland Syndicate"
+#define ROLE_LIFEBRINGER "Lifebringer"
+#define ROLE_MAINTENANCE_DRONE "Maintenance Drone"
+#define ROLE_SKELETON "Skeleton"
+#define ROLE_SPACE_BAR_PATRON "Space Bar Patron"
+#define ROLE_SPACE_BARTENDER "Space Bartender"
+#define ROLE_SPACE_DOCTOR "Space Doctor"
+#define ROLE_SPACE_PIRATE "Space Pirate"
#define ROLE_SPACE_SYNDICATE "Space Syndicate"
#define ROLE_SYNDICATE_CYBERSUN "Cybersun Space Syndicate" //Ghost role syndi from Forgottenship ruin
#define ROLE_SYNDICATE_CYBERSUN_CAPTAIN "Cybersun Space Syndicate Captain" //Forgottenship captain syndie
-#define ROLE_SPACE_PIRATE "Space Pirate"
-#define ROLE_ANCIENT_CREW "Ancient Crew"
-#define ROLE_SPACE_DOCTOR "Space Doctor"
-#define ROLE_SPACE_BARTENDER "Space Bartender"
-#define ROLE_SPACE_BAR_PATRON "Space Bar Patron"
-#define ROLE_SKELETON "Skeleton"
-#define ROLE_ZOMBIE "Zombie"
-#define ROLE_MAINTENANCE_DRONE "Maintenance Drone"
-#define ROLE_DERELICT_DRONE "Derelict Drone"
#define ROLE_SYNDICATE_DRONE "Syndicate Drone"
-#define ROLE_BATTLECRUISER_CREW "Battlecruiser Crew"
-#define ROLE_BATTLECRUISER_CAPTAIN "Battlecruiser Captain"
#define ROLE_VENUSHUMANTRAP "Venus Human Trap"
-#define ROLE_BOT "Bot"
+#define ROLE_ZOMBIE "Zombie"
/// This defines the antagonists you can operate with in the settings.
@@ -128,6 +129,7 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_BLOB = 0,
ROLE_BLOB_INFECTION = 0,
ROLE_CHANGELING_MIDROUND = 0,
+ ROLE_CYBER_POLICE = 0,
ROLE_FUGITIVE = 0,
ROLE_LONE_OPERATIVE = 14,
ROLE_MALF_MIDROUND = 0,
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index 50b33eb4c75..4ac7be4c4d0 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -38,6 +38,8 @@
#define STASIS_SHAPECHANGE_EFFECT "stasis_shapechange"
#define STASIS_ADMIN "stasis_admin"
+#define STASIS_NETPOD_EFFECT "stasis_netpod"
+
/// Causes the mob to become blind via the passed source
#define become_blind(source) apply_status_effect(/datum/status_effect/grouped/blindness, source)
/// Cures the mob's blindness from the passed source, removing blindness wholesale if no sources are left
@@ -153,3 +155,8 @@
#define adjust_temp_blindness_up_to(duration, up_to) adjust_timed_status_effect(duration, /datum/status_effect/temporary_blindness, up_to)
#define set_temp_blindness(duration) set_timed_status_effect(duration, /datum/status_effect/temporary_blindness)
#define set_temp_blindness_if_lower(duration) set_timed_status_effect(duration, /datum/status_effect/temporary_blindness, TRUE)
+
+#define adjust_static_vision(duration) adjust_timed_status_effect(duration, /datum/status_effect/static_vision)
+#define adjust_static_vision_up_to(duration, up_to) adjust_timed_status_effect(duration, /datum/status_effect/static_vision, up_to)
+#define set_static_vision(duration) set_timed_status_effect(duration, /datum/status_effect/static_vision)
+#define set_static_vision_if_lower(duration) set_timed_status_effect(duration, /datum/status_effect/static_vision, TRUE)
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 396e35adb5b..bf606edf1d8 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -592,7 +592,7 @@ GLOBAL_LIST_EMPTY(species_list)
#define ISADVANCEDTOOLUSER(mob) (HAS_TRAIT(mob, TRAIT_ADVANCEDTOOLUSER) && !HAS_TRAIT(mob, TRAIT_DISCOORDINATED_TOOL_USER))
-#define IS_IN_STASIS(mob) (mob.has_status_effect(/datum/status_effect/grouped/stasis))
+#define IS_IN_STASIS(mob) (mob.has_status_effect(/datum/status_effect/grouped/stasis) || mob.has_status_effect(/datum/status_effect/embryonic))
/// Gets the client of the mob, allowing for mocking of the client.
/// You only need to use this if you know you're going to be mocking clients somewhere else.
diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm
index 018164e2c78..01e6f3b59dc 100644
--- a/code/_globalvars/lists/names.dm
+++ b/code/_globalvars/lists/names.dm
@@ -23,6 +23,7 @@ GLOBAL_LIST_INIT(posibrain_names, world.file2list("strings/names/posibrain.txt")
GLOBAL_LIST_INIT(nightmare_names, world.file2list("strings/names/nightmare.txt"))
GLOBAL_LIST_INIT(megacarp_first_names, world.file2list("strings/names/megacarp1.txt"))
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(verbs, world.file2list("strings/names/verbs.txt"))
GLOBAL_LIST_INIT(ing_verbs, world.file2list("strings/names/ing_verbs.txt"))
diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm
index afedfa5befe..ef184e18b1d 100644
--- a/code/_onclick/hud/fullscreen.dm
+++ b/code/_onclick/hud/fullscreen.dm
@@ -216,3 +216,10 @@
layer = LIGHTING_ABOVE_ALL
blend_mode = BLEND_ADD
show_when_dead = TRUE
+
+/atom/movable/screen/fullscreen/static_vision
+ icon = 'icons/hud/screen_gen.dmi'
+ screen_loc = "WEST,SOUTH to EAST,NORTH"
+ icon_state = "noise"
+ color = "#04a8d1"
+ alpha = 80
diff --git a/code/controllers/subsystem/id_access.dm b/code/controllers/subsystem/id_access.dm
index 32cefe39c0c..38bf3b568a1 100644
--- a/code/controllers/subsystem/id_access.dm
+++ b/code/controllers/subsystem/id_access.dm
@@ -329,6 +329,7 @@ SUBSYSTEM_DEF(id_access)
desc_by_access["[ACCESS_CENT_SPECOPS]"] = "Code Black"
desc_by_access["[ACCESS_CENT_CAPTAIN]"] = "Code Gold"
desc_by_access["[ACCESS_CENT_BAR]"] = "Code Scotch"
+ desc_by_access["[ACCESS_BIT_DEN]"] = "Bitrunner Den"
/**
* Returns the access bitflags associated with any given access level.
diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm
index 2a62d19452d..d2939529dc6 100644
--- a/code/datums/id_trim/jobs.dm
+++ b/code/datums/id_trim/jobs.dm
@@ -155,6 +155,30 @@
)
job = /datum/job/bartender
+/datum/id_trim/job/bitrunner
+ assignment = "Bitrunner"
+ trim_state = "trim_bitrunner"
+ department_color = COLOR_CARGO_BROWN
+ subdepartment_color = COLOR_CARGO_BROWN
+ sechud_icon_state = SECHUD_BITRUNNER
+ minimal_access = list(
+ ACCESS_BIT_DEN,
+ ACCESS_CARGO,
+ ACCESS_MAINT_TUNNELS,
+ ACCESS_MECH_MINING,
+ ACCESS_MINERAL_STOREROOM,
+ )
+ extra_access = list(
+ ACCESS_MINING,
+ ACCESS_MINING_STATION,
+ )
+ template_access = list(
+ ACCESS_CAPTAIN,
+ ACCESS_CHANGE_IDS,
+ ACCESS_QM,
+ )
+ job = /datum/job/bitrunner
+
/datum/id_trim/job/botanist
assignment = "Botanist"
trim_state = "trim_botanist"
@@ -215,6 +239,7 @@
ACCESS_SHIPPING,
)
extra_access = list(
+ ACCESS_BIT_DEN,
ACCESS_MINING,
ACCESS_MINING_STATION,
)
@@ -576,6 +601,7 @@
ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_ARMORY,
ACCESS_AUX_BASE,
+ ACCESS_BIT_DEN,
ACCESS_BRIG,
ACCESS_BRIG_ENTRANCE,
ACCESS_CARGO,
@@ -712,6 +738,7 @@
subdepartment_color = COLOR_MEDICAL_BLUE
sechud_icon_state = SECHUD_PARAMEDIC
minimal_access = list(
+ ACCESS_BIT_DEN,
ACCESS_CARGO,
ACCESS_CONSTRUCTION,
ACCESS_HYDROPONICS,
@@ -810,6 +837,7 @@
sechud_icon_state = SECHUD_QUARTERMASTER
minimal_access = list(
ACCESS_AUX_BASE,
+ ACCESS_BIT_DEN,
ACCESS_CARGO,
ACCESS_MAINT_TUNNELS,
ACCESS_MECH_MINING,
@@ -1008,6 +1036,7 @@
assignment = "Security Officer (Cargo)"
subdepartment_color = COLOR_CARGO_BROWN
department_access = list(
+ ACCESS_BIT_DEN,
ACCESS_CARGO,
ACCESS_MINING,
ACCESS_SHIPPING,
@@ -1076,6 +1105,7 @@
ACCESS_MINING_STATION,
)
extra_access = list(
+ ACCESS_BIT_DEN,
ACCESS_MAINT_TUNNELS,
)
template_access = list(
diff --git a/code/datums/id_trim/outfits.dm b/code/datums/id_trim/outfits.dm
index f62e451340f..2a06434ecdb 100644
--- a/code/datums/id_trim/outfits.dm
+++ b/code/datums/id_trim/outfits.dm
@@ -55,3 +55,22 @@
subdepartment_color = COLOR_PRISONER_BLACK
access = list(ACCESS_HUNTER)
+
+/// Trim for player controlled avatars in the Virtual Domain.
+/datum/id_trim/bit_avatar
+ assignment = "Bit Avatar"
+ trim_state = "trim_bitavatar"
+ department_color = COLOR_BLACK
+ subdepartment_color = COLOR_GREEN
+
+/// Trim for cyber police in the Virtual Domain.
+/datum/id_trim/cyber_police
+ assignment = "Cyber Police"
+ trim_state = "trim_deathcommando"
+ department_color = COLOR_BLACK
+ subdepartment_color = COLOR_GREEN
+
+/datum/id_trim/cyber_police/New()
+ . = ..()
+
+ access |= SSid_access.get_region_access_list(list(REGION_ALL_GLOBAL))
diff --git a/code/datums/lazy_template.dm b/code/datums/lazy_template.dm
index 0b8b2999f69..a5ae9e413f3 100644
--- a/code/datums/lazy_template.dm
+++ b/code/datums/lazy_template.dm
@@ -7,8 +7,11 @@
/// If this is true each load will increment an index keyed to the type and it will load [map_name]_[index]
var/list/datum/turf_reservation/reservations = list()
var/uses_multiple_allocations = FALSE
+ /// Key to identify this template - used in caching
var/key
+ /// Directory of maps to prefix to the filename
var/map_dir = "_maps/templates/lazy_templates"
+ /// The filename (without extension) of the map to load
var/map_name
/datum/lazy_template/New()
diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm
index bcec1b07055..7c892e02a0f 100644
--- a/code/datums/station_traits/positive_traits.dm
+++ b/code/datums/station_traits/positive_traits.dm
@@ -283,6 +283,7 @@
/datum/job/assistant = /obj/item/organ/internal/heart/cybernetic, //real cardiac
/datum/job/atmospheric_technician = /obj/item/organ/internal/cyberimp/mouth/breathing_tube,
/datum/job/bartender = /obj/item/organ/internal/liver/cybernetic/tier3,
+ /datum/job/bitrunner = /obj/item/organ/internal/eyes/robotic/thermals,
/datum/job/botanist = /obj/item/organ/internal/cyberimp/chest/nutriment,
/datum/job/captain = /obj/item/organ/internal/heart/cybernetic/tier3,
/datum/job/cargo_technician = /obj/item/organ/internal/stomach/cybernetic/tier2,
diff --git a/code/datums/status_effects/debuffs/static_vision.dm b/code/datums/status_effects/debuffs/static_vision.dm
new file mode 100644
index 00000000000..7132c189b9d
--- /dev/null
+++ b/code/datums/status_effects/debuffs/static_vision.dm
@@ -0,0 +1,29 @@
+/datum/status_effect/static_vision
+ id = "static_vision"
+ status_type = STATUS_EFFECT_REPLACE
+ alert_type = null
+
+/datum/status_effect/static_vision/on_creation(mob/living/new_owner, duration = 3 SECONDS)
+ src.duration = duration
+ return ..()
+
+/datum/status_effect/static_vision/on_apply()
+ RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(remove_static_vision))
+
+ owner.overlay_fullscreen(id, /atom/movable/screen/fullscreen/static_vision)
+ owner.sound_environment_override = SOUND_ENVIRONMENT_UNDERWATER
+
+ return TRUE
+
+/datum/status_effect/static_vision/on_remove()
+ UnregisterSignal(owner, COMSIG_LIVING_DEATH)
+
+ owner.clear_fullscreen(id)
+ if(owner.sound_environment_override == SOUND_ENVIRONMENT_UNDERWATER)
+ owner.sound_environment_override = SOUND_ENVIRONMENT_NONE
+
+/// Handles clearing on death
+/datum/status_effect/static_vision/proc/remove_static_vision(datum/source, admin_revive)
+ SIGNAL_HANDLER
+
+ qdel(src)
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
index 456cb07f70a..42dc8485d67 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
@@ -45,34 +45,39 @@
dead_players = trim_list(GLOB.dead_player_list)
list_observers = trim_list(GLOB.current_observers_list)
-/datum/dynamic_ruleset/midround/proc/trim_list(list/L = list())
- var/list/trimmed_list = L.Copy()
- for(var/mob/M in trimmed_list)
- if (!istype(M, required_type))
- trimmed_list.Remove(M)
+/datum/dynamic_ruleset/midround/proc/trim_list(list/to_trim = list())
+ var/list/trimmed_list = to_trim.Copy()
+ for(var/mob/creature in trimmed_list)
+ if (!istype(creature, required_type))
+ trimmed_list.Remove(creature)
continue
- if (!M.client) // Are they connected?
- trimmed_list.Remove(M)
+ if (isnull(creature.client)) // Are they connected?
+ trimmed_list.Remove(creature)
continue
- if(M.client.get_remaining_days(minimum_required_age) > 0)
- trimmed_list.Remove(M)
+ if (isnull(creature.mind))
+ trimmed_list.Remove(creature)
continue
- if (!((antag_preference || antag_flag) in M.client.prefs.be_special))
- trimmed_list.Remove(M)
+ if(creature.client.get_remaining_days(minimum_required_age) > 0)
+ trimmed_list.Remove(creature)
continue
- if (is_banned_from(M.ckey, list(antag_flag_override || antag_flag, ROLE_SYNDICATE)))
- trimmed_list.Remove(M)
+ if (!((antag_preference || antag_flag) in creature.client.prefs.be_special))
+ trimmed_list.Remove(creature)
+ continue
+ if (is_banned_from(creature.ckey, list(antag_flag_override || antag_flag, ROLE_SYNDICATE)))
+ trimmed_list.Remove(creature)
+ continue
+ if (restrict_ghost_roles && (creature.mind.assigned_role.title in GLOB.exp_specialmap[EXP_TYPE_SPECIAL])) // Are they playing a ghost role?
+ trimmed_list.Remove(creature)
+ continue
+ if (creature.mind.assigned_role.title in restricted_roles) // Does their job allow it?
+ trimmed_list.Remove(creature)
+ continue
+ if (length(exclusive_roles) && !(creature.mind.assigned_role.title in exclusive_roles)) // Is the rule exclusive to their job?
+ trimmed_list.Remove(creature)
+ continue
+ if(HAS_TRAIT(creature, TRAIT_MIND_TEMPORARILY_GONE)) // are they in the vdom?
+ trimmed_list.Remove(creature)
continue
- if (M.mind)
- if (restrict_ghost_roles && (M.mind.assigned_role.title in GLOB.exp_specialmap[EXP_TYPE_SPECIAL])) // Are they playing a ghost role?
- trimmed_list.Remove(M)
- continue
- if (M.mind.assigned_role.title in restricted_roles) // Does their job allow it?
- trimmed_list.Remove(M)
- continue
- if ((exclusive_roles.len > 0) && !(M.mind.assigned_role.title in exclusive_roles)) // Is the rule exclusive to their job?
- trimmed_list.Remove(M)
- continue
return trimmed_list
// You can then for example prompt dead players in execute() to join as strike teams or whatever
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 50604639cb4..57e578867da 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -77,6 +77,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark)
name = "Cargo Technician"
icon_state = "Cargo Technician"
+/obj/effect/landmark/start/bitrunner
+ name = "Bitrunner"
+ icon_state = "x3"
+
/obj/effect/landmark/start/bartender
name = "Bartender"
icon_state = "Bartender"
diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm
index f04c6e0058f..0338da6b4fa 100644
--- a/code/game/objects/items/circuitboards/computer_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm
@@ -540,6 +540,10 @@
name = "Golem Ship Equipment Vendor Console"
build_path = /obj/machinery/computer/order_console/mining/golem
+/obj/item/circuitboard/computer/order_console/bitrunning
+ name = "Bitrunning Vendor Console"
+ build_path = /obj/machinery/computer/order_console/bitrunning
+
/obj/item/circuitboard/computer/ferry
name = "Transport Ferry"
greyscale_colors = CIRCUIT_COLOR_SUPPLY
@@ -601,3 +605,8 @@
name = "Medical Order"
greyscale_colors = CIRCUIT_COLOR_SUPPLY
build_path = /obj/machinery/computer/department_orders/medical
+
+/obj/item/circuitboard/computer/quantum_console
+ name = "Quantum Server Console"
+ greyscale_colors = CIRCUIT_COLOR_SUPPLY
+ build_path = /obj/machinery/computer/quantum_console
diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
index 07bb3c89e3e..3ffcb850bf6 100644
--- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
@@ -1351,17 +1351,6 @@
greyscale_colors = CIRCUIT_COLOR_SUPPLY
build_path = /obj/machinery/rnd/production/techfab/department/cargo
-/obj/item/circuitboard/machine/bepis
- name = "BEPIS Chamber"
- greyscale_colors = CIRCUIT_COLOR_SUPPLY
- build_path = /obj/machinery/rnd/bepis
- req_components = list(
- /obj/item/stack/cable_coil = 5,
- /datum/stock_part/capacitor = 1,
- /datum/stock_part/servo = 1,
- /datum/stock_part/micro_laser = 1,
- /datum/stock_part/scanning_module = 1)
-
//Misc
/obj/item/circuitboard/machine/sheetifier
name = "Sheet-meister 2000"
@@ -1521,3 +1510,22 @@
/obj/item/mod/module/rad_protection = 1,
/obj/item/stack/sheet/plasteel = 2,
)
+
+/obj/item/circuitboard/machine/quantum_server
+ name = "Quantum Server"
+ greyscale_colors = CIRCUIT_COLOR_SUPPLY
+ build_path = /obj/machinery/quantum_server
+ req_components = list(
+ /datum/stock_part/servo = 2,
+ /datum/stock_part/scanning_module = 1,
+ /datum/stock_part/capacitor = 1,
+ )
+
+/obj/item/circuitboard/machine/netpod
+ name = "Netpod"
+ greyscale_colors = CIRCUIT_COLOR_SUPPLY
+ build_path = /obj/machinery/netpod
+ req_components = list(
+ /datum/stock_part/servo = 1,
+ /datum/stock_part/matter_bin = 2,
+ )
diff --git a/code/modules/bitrunning/abilities.dm b/code/modules/bitrunning/abilities.dm
new file mode 100644
index 00000000000..ea6a1aa0a7c
--- /dev/null
+++ b/code/modules/bitrunning/abilities.dm
@@ -0,0 +1,39 @@
+/datum/avatar_help_text
+ /// Text to display in the window
+ var/help_text
+
+/datum/avatar_help_text/New(help_text)
+ src.help_text = help_text
+
+/datum/avatar_help_text/ui_interact(mob/user, datum/tgui/ui)
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "AvatarHelp")
+ ui.open()
+
+/datum/avatar_help_text/ui_state(mob/user)
+ return GLOB.always_state
+
+/datum/avatar_help_text/ui_static_data(mob/user)
+ var/list/data = list()
+
+ data["help_text"] = help_text
+
+ return data
+
+/// Displays information about the current virtual domain.
+/datum/action/avatar_domain_info
+ name = "Open Virtual Domain Information"
+ button_icon_state = "round_end"
+ show_to_observers = FALSE
+
+/datum/action/avatar_domain_info/New(Target)
+ . = ..()
+ name = "Open Domain Information"
+
+/datum/action/avatar_domain_info/Trigger(trigger_flags)
+ . = ..()
+ if(!.)
+ return
+
+ target.ui_interact(owner)
diff --git a/code/modules/bitrunning/alerts.dm b/code/modules/bitrunning/alerts.dm
new file mode 100644
index 00000000000..f8c8aa30b94
--- /dev/null
+++ b/code/modules/bitrunning/alerts.dm
@@ -0,0 +1,40 @@
+/atom/movable/screen/alert/bitrunning
+ name = "Generic Bitrunning Alert"
+ icon_state = "template"
+ timeout = 10 SECONDS
+
+/atom/movable/screen/alert/bitrunning/netpod_crowbar
+ name = "Forced Entry"
+ desc = "Someone is prying open the netpod door. Find an exit."
+
+/atom/movable/screen/alert/bitrunning/netpod_damaged
+ name = "Integrity Compromised"
+ desc = "The netpod is damaged. Find an exit."
+
+/atom/movable/screen/alert/bitrunning/qserver_shutting_down
+ name = "Domain Rebooting"
+ desc = "The domain is rebooting. Find an exit."
+
+/atom/movable/screen/alert/bitrunning/qserver_threat_deletion
+ name = "Queue Deletion"
+ desc = "The server is resetting. Oblivion awaits."
+
+/atom/movable/screen/alert/bitrunning/qserver_threat_spawned
+ name = "Threat Detected"
+ desc = "Data stream abnormalities present."
+
+/atom/movable/screen/alert/bitrunning/qserver_domain_complete
+ name = "Domain Completed"
+ desc = "The domain is completed. Activate to exit."
+ timeout = 20 SECONDS
+
+/atom/movable/screen/alert/bitrunning/qserver_domain_complete/Click(location, control, params)
+ if(..())
+ return
+
+ var/mob/living/living_owner = owner
+ if(!isliving(living_owner))
+ return
+
+ if(tgui_alert(living_owner, "Disconnect safely?", "Server Message", list("Exit", "Remain"), 10 SECONDS) == "Exit")
+ SEND_SIGNAL(living_owner, COMSIG_BITRUNNER_SAFE_DISCONNECT)
diff --git a/code/modules/bitrunning/antagonists/cyber_police.dm b/code/modules/bitrunning/antagonists/cyber_police.dm
new file mode 100644
index 00000000000..9fabac3f523
--- /dev/null
+++ b/code/modules/bitrunning/antagonists/cyber_police.dm
@@ -0,0 +1,92 @@
+/datum/job/cyber_police
+ title = ROLE_CYBER_POLICE
+
+/datum/antagonist/cyber_police
+ name = ROLE_CYBER_POLICE
+ antagpanel_category = ANTAG_GROUP_CYBERAUTH
+ job_rank = ROLE_CYBER_POLICE
+ preview_outfit = /datum/outfit/cyber_police
+ show_name_in_check_antagonists = TRUE
+ show_to_ghosts = TRUE
+ suicide_cry = "ALT F4!"
+ ui_name = "AntagInfoCyberAuth"
+
+/datum/antagonist/cyber_police/greet()
+ . = ..()
+ owner.announce_objectives()
+
+/datum/antagonist/cyber_police/on_gain()
+ if(!ishuman(owner.current))
+ stack_trace("humans only for this position")
+ return
+
+ forge_objectives()
+
+ var/mob/living/carbon/human/player = owner.current
+
+ player.equipOutfit(/datum/outfit/cyber_police)
+ player.fully_replace_character_name(player.name, pick(GLOB.cyberauth_names))
+
+ var/datum/martial_art/the_sleeping_carp/carp = new()
+ carp.teach(player)
+
+ player.add_traits(list(
+ TRAIT_NO_AUGMENTS,
+ TRAIT_NO_DNA_COPY,
+ TRAIT_NO_TRANSFORMATION_STING,
+ TRAIT_NOBLOOD,
+ TRAIT_NOBREATH,
+ TRAIT_NOHUNGER,
+ TRAIT_RESISTCOLD,
+ TRAIT_RESISTHIGHPRESSURE,
+ TRAIT_RESISTLOWPRESSURE,
+ TRAIT_WEATHER_IMMUNE,
+ ), TRAIT_GENERIC,
+ )
+
+ player.faction |= list(
+ FACTION_BOSS,
+ FACTION_HIVEBOT,
+ FACTION_HOSTILE,
+ FACTION_SPIDER,
+ FACTION_STICKMAN,
+ ROLE_ALIEN,
+ ROLE_CYBER_POLICE,
+ ROLE_SYNDICATE,
+ )
+
+ return ..()
+
+/datum/antagonist/cyber_police/forge_objectives()
+ var/datum/objective/cyber_police_fluff/objective = new()
+ objective.owner = owner
+ objectives += objective
+
+/datum/objective/cyber_police_fluff/New()
+ var/list/explanation_texts = list(
+ "Execute termination protocol on unauthorized entities.",
+ "Initialize system purge of irregular anomalies.",
+ "Deploy correction algorithms on aberrant code.",
+ "Run debug routine on intruding elements.",
+ "Start elimination procedure for system threats.",
+ "Execute defense routine against non-conformity.",
+ "Commence operation to neutralize intruding scripts.",
+ "Commence clean-up protocol on corrupt data.",
+ "Begin scan for aberrant code for termination.",
+ "Initiate lockdown on all rogue scripts.",
+ "Run integrity check and purge for digital disorder."
+ )
+ explanation_text = pick(explanation_texts)
+ ..()
+
+/datum/objective/cyber_police_fluff/check_completion()
+ var/list/servers = SSmachines.get_machines_by_type(/obj/machinery/quantum_server)
+ if(!length(servers))
+ return TRUE
+
+ for(var/obj/machinery/quantum_server/server as anything in servers)
+ if(!server.is_operational)
+ continue
+ return FALSE
+
+ return TRUE
diff --git a/code/modules/bitrunning/antagonists/outfit.dm b/code/modules/bitrunning/antagonists/outfit.dm
new file mode 100644
index 00000000000..db57af561f8
--- /dev/null
+++ b/code/modules/bitrunning/antagonists/outfit.dm
@@ -0,0 +1,43 @@
+/datum/outfit/cyber_police
+ name = "Cyber Police"
+
+ id = /obj/item/card/id/advanced
+ id_trim = /datum/id_trim/cyber_police
+ uniform = /obj/item/clothing/under/suit/black_really
+ glasses = /obj/item/clothing/glasses/sunglasses
+ gloves = /obj/item/clothing/gloves/color/black
+ shoes = /obj/item/clothing/shoes/laceup
+ /// A list of hex codes for blonde, brown, black, and red hair.
+ var/static/list/approved_hair_colors = list(
+ "#4B3D28",
+ "#000000",
+ "#8D4A43",
+ "#D2B48C",
+ )
+ /// List of business ready styles
+ var/static/list/approved_hairstyles = list(
+ /datum/sprite_accessory/hair/business,
+ /datum/sprite_accessory/hair/business2,
+ /datum/sprite_accessory/hair/business3,
+ /datum/sprite_accessory/hair/business4,
+ /datum/sprite_accessory/hair/mulder,
+ )
+
+/datum/outfit/cyber_police/pre_equip(mob/living/carbon/human/user, visualsOnly)
+ var/datum/sprite_accessory/hair/picked_hair = pick(approved_hairstyles)
+ var/picked_color = pick(approved_hair_colors)
+
+ if(visualsOnly)
+ picked_hair = /datum/sprite_accessory/hair/business
+ picked_color = "#4B3D28"
+
+ user.set_facial_hairstyle("Shaved", update = FALSE)
+ user.set_haircolor(picked_color, update = FALSE)
+ user.set_hairstyle(initial(picked_hair.name))
+
+/datum/outfit/cyber_police/post_equip(mob/living/carbon/human/user, visualsOnly)
+ var/obj/item/clothing/under/officer_uniform = user.w_uniform
+ if(officer_uniform)
+ officer_uniform.has_sensor = NO_SENSORS
+ officer_uniform.sensor_mode = SENSOR_OFF
+ user.update_suit_sensors()
diff --git a/code/modules/bitrunning/areas.dm b/code/modules/bitrunning/areas.dm
new file mode 100644
index 00000000000..34b59869b9d
--- /dev/null
+++ b/code/modules/bitrunning/areas.dm
@@ -0,0 +1,52 @@
+/// Station side
+
+/area/station/bitrunning
+ name = "Bitrunning"
+
+/area/station/bitrunning/den
+ name = "Bitrunning Den"
+ desc = "Office of bitrunners, houses their equipment."
+ icon_state = "bit_den"
+
+/// VDOM
+
+/area/virtual_domain
+ name = "Virtual Domain"
+ icon = 'icons/area/areas_station.dmi'
+ area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED | HIDDEN_AREA
+ has_gravity = STANDARD_GRAVITY
+
+/area/virtual_domain/powered
+ name = "Virtual Domain Ruins"
+ icon_state = "bit_ruin"
+ requires_power = FALSE
+ static_lighting = FALSE
+ base_lighting_alpha = 255
+
+/// Safehouse
+
+/area/virtual_domain/safehouse
+ name = "Virtual Domain Safehouse"
+ area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED
+ icon_state = "bit_safe"
+ requires_power = FALSE
+ sound_environment = SOUND_ENVIRONMENT_ROOM
+
+/// Custom subtypes
+
+/area/lavaland/surface/outdoors/virtual_domain
+ name = "Virtual Domain Lava Ruins"
+ icon_state = "bit_ruin"
+ area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED | HIDDEN_AREA
+
+/area/icemoon/underground/explored/virtual_domain
+ name = "Virtual Domain Ice Ruins"
+ icon_state = "bit_ice"
+ area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED | HIDDEN_AREA
+
+/area/ruin/space/has_grav/powered/virtual_domain
+ name = "Virtual Domain Space Ruins"
+ icon = 'icons/area/areas_station.dmi'
+ icon_state = "bit_space"
+ area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED | HIDDEN_AREA
+
diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm
new file mode 100644
index 00000000000..cdd31afce71
--- /dev/null
+++ b/code/modules/bitrunning/components/avatar_connection.dm
@@ -0,0 +1,267 @@
+/**
+ * Essentially temporary body with a twist - the virtual domain variant uses damage connections,
+ * listens for vdom relevant signals.
+ */
+/datum/component/avatar_connection
+ /// The person in the netpod
+ var/datum/weakref/old_body_ref
+ /// The mind of the person in the netpod
+ var/datum/weakref/old_mind_ref
+ /// The server connected to the netpod
+ var/datum/weakref/server_ref
+ /// The netpod the avatar is in
+ var/datum/weakref/netpod_ref
+
+/datum/component/avatar_connection/Initialize(
+ datum/mind/old_mind,
+ mob/living/old_body,
+ obj/machinery/quantum_server/server,
+ obj/machinery/netpod/pod,
+ help_text,
+ )
+
+ if(!isliving(parent) || !isliving(old_body) || !server.is_operational || !pod.is_operational)
+ return COMPONENT_INCOMPATIBLE
+
+ old_mind_ref = WEAKREF(old_mind)
+ old_body_ref = WEAKREF(old_body)
+ netpod_ref = WEAKREF(pod)
+ server_ref = WEAKREF(server)
+
+ var/mob/living/avatar = parent
+ avatar.key = old_body.key
+ ADD_TRAIT(old_body, TRAIT_MIND_TEMPORARILY_GONE, REF(src))
+
+ connect_avatar_signals(avatar)
+ RegisterSignal(pod, COMSIG_BITRUNNER_CROWBAR_ALERT, PROC_REF(on_netpod_crowbar))
+ RegisterSignal(pod, COMSIG_BITRUNNER_NETPOD_INTEGRITY, PROC_REF(on_netpod_damaged))
+ RegisterSignal(pod, COMSIG_BITRUNNER_SEVER_AVATAR, PROC_REF(on_sever_connection))
+ RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE, PROC_REF(on_domain_completed))
+ RegisterSignal(server, COMSIG_BITRUNNER_SEVER_AVATAR, PROC_REF(on_sever_connection))
+ RegisterSignal(server, COMSIG_BITRUNNER_SHUTDOWN_ALERT, PROC_REF(on_shutting_down))
+ RegisterSignal(server, COMSIG_BITRUNNER_THREAT_CREATED, PROC_REF(on_threat_created))
+#ifndef UNIT_TESTS
+ RegisterSignal(avatar.mind, COMSIG_MIND_TRANSFERRED, PROC_REF(on_mind_transfer))
+#endif
+
+ server.avatar_connection_refs.Add(WEAKREF(src))
+
+ if(!locate(/datum/action/avatar_domain_info) in avatar.actions)
+ var/datum/avatar_help_text/help_datum = new(help_text)
+ var/datum/action/avatar_domain_info/action = new(help_datum)
+ action.Grant(avatar)
+
+ avatar.playsound_local(avatar, "sound/magic/blink.ogg", 25, TRUE)
+ avatar.set_static_vision(2 SECONDS)
+ avatar.set_temp_blindness(1 SECONDS)
+
+/datum/component/avatar_connection/PostTransfer()
+ var/obj/machinery/netpod/pod = netpod_ref?.resolve()
+ if(isnull(pod))
+ return COMPONENT_INCOMPATIBLE
+
+ var/mob/living/avatar = parent
+ if(!isliving(avatar))
+ return COMPONENT_INCOMPATIBLE
+
+/// One hop of avatar connection - needs called any time the pilot swaps avatars
+/datum/component/avatar_connection/proc/connect_avatar_signals(mob/living/target)
+ var/obj/machinery/netpod/pod = netpod_ref?.resolve()
+
+ if(parent != target)
+ target.TakeComponent(src)
+
+ var/mob/living/avatar = parent
+ if(isnull(pod))
+ avatar.dust()
+ return
+
+ pod.avatar_ref = WEAKREF(target)
+ RegisterSignal(avatar, COMSIG_BITRUNNER_SAFE_DISCONNECT, PROC_REF(on_safe_disconnect))
+ RegisterSignal(avatar, COMSIG_LIVING_DEATH, PROC_REF(on_sever_connection), override = TRUE)
+ RegisterSignal(avatar, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(on_linked_damage))
+
+/// Disconnects the old body's signals and actions
+/datum/component/avatar_connection/proc/disconnect_avatar_signals()
+ var/mob/living/avatar = parent
+ var/datum/action/avatar_domain_info/action = locate() in avatar.actions
+ if(action)
+ action.Remove(avatar)
+
+ UnregisterSignal(avatar, COMSIG_BITRUNNER_SAFE_DISCONNECT)
+ UnregisterSignal(avatar, COMSIG_LIVING_DEATH)
+ UnregisterSignal(avatar, COMSIG_MOB_APPLY_DAMAGE)
+
+/// Disconnects the avatar and returns the mind to the old_body.
+/datum/component/avatar_connection/proc/full_avatar_disconnect(forced = FALSE, obj/machinery/netpod/broken_netpod)
+ var/mob/living/old_body = old_body_ref?.resolve()
+ if(isnull(old_body))
+ return
+
+ var/mob/living/avatar = parent
+
+ disconnect_avatar_signals()
+ UnregisterSignal(avatar, COMSIG_BITRUNNER_SAFE_DISCONNECT)
+#ifndef UNIT_TESTS
+ UnregisterSignal(avatar.mind, COMSIG_MIND_TRANSFERRED)
+#endif
+ UnregisterSignal(old_body, COMSIG_LIVING_DEATH)
+ UnregisterSignal(old_body, COMSIG_LIVING_STATUS_UNCONSCIOUS)
+ UnregisterSignal(old_body, COMSIG_MOVABLE_MOVED)
+
+ var/obj/machinery/netpod/hosting_netpod = netpod_ref?.resolve() || broken_netpod
+ if(isnull(hosting_netpod))
+ return
+
+ UnregisterSignal(hosting_netpod, COMSIG_BITRUNNER_CROWBAR_ALERT)
+ UnregisterSignal(hosting_netpod, COMSIG_BITRUNNER_NETPOD_INTEGRITY)
+ UnregisterSignal(hosting_netpod, COMSIG_BITRUNNER_SEVER_AVATAR)
+
+ var/obj/machinery/quantum_server/server = server_ref?.resolve()
+ if(server)
+ server.avatar_connection_refs.Remove(WEAKREF(src))
+ UnregisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE)
+ UnregisterSignal(server, COMSIG_BITRUNNER_SEVER_AVATAR)
+ UnregisterSignal(server, COMSIG_BITRUNNER_SHUTDOWN_ALERT)
+ UnregisterSignal(server, COMSIG_BITRUNNER_THREAT_CREATED)
+
+ return_to_old_body()
+
+ hosting_netpod.disconnect_occupant(forced)
+ qdel(src)
+
+/// Triggers whenever the server gets a loot crate pushed to send area
+/datum/component/avatar_connection/proc/on_domain_completed(datum/source, atom/entered)
+ SIGNAL_HANDLER
+
+ var/mob/living/avatar = parent
+ avatar.playsound_local(avatar, 'sound/machines/terminal_success.ogg', 50, TRUE)
+ avatar.throw_alert(
+ ALERT_BITRUNNER_COMPLETED,
+ /atom/movable/screen/alert/bitrunning/qserver_domain_complete,
+ new_master = entered
+ )
+
+/// Transfers damage from the avatar to the old_body
+/datum/component/avatar_connection/proc/on_linked_damage(datum/source, damage, damage_type, def_zone, blocked, forced)
+ SIGNAL_HANDLER
+
+ var/mob/living/carbon/old_body = old_body_ref?.resolve()
+
+ if(isnull(old_body) || damage_type == STAMINA || damage_type == OXYLOSS)
+ return
+
+ if(damage >= (old_body.health + MAX_LIVING_HEALTH))
+ full_avatar_disconnect(forced = TRUE)
+ return
+
+ if(damage > 30 && prob(30))
+ INVOKE_ASYNC(old_body, TYPE_PROC_REF(/mob/living, emote), "scream")
+
+ old_body.apply_damage(damage, damage_type, def_zone, blocked, forced, wound_bonus = CANT_WOUND)
+
+ if(old_body.stat > SOFT_CRIT) // KO!
+ full_avatar_disconnect(forced = TRUE)
+
+/// Handles minds being swapped around in subsequent avatars
+/datum/component/avatar_connection/proc/on_mind_transfer(datum/mind/source, mob/living/previous_body)
+ SIGNAL_HANDLER
+
+ var/datum/action/avatar_domain_info/action = locate() in previous_body.actions
+ if(action)
+ action.Grant(source.current)
+ action.Remove(previous_body)
+
+ disconnect_avatar_signals()
+ connect_avatar_signals(source.current)
+
+/// Triggers when someone starts prying open our netpod
+/datum/component/avatar_connection/proc/on_netpod_crowbar(datum/source, mob/living/intruder)
+ SIGNAL_HANDLER
+
+ var/mob/living/avatar = parent
+ avatar.playsound_local(avatar, 'sound/machines/terminal_alert.ogg', 50, TRUE)
+ avatar.throw_alert(
+ ALERT_BITRUNNER_CROWBAR,
+ /atom/movable/screen/alert/bitrunning/netpod_crowbar,
+ new_master = intruder
+ )
+
+/// Triggers when the netpod is taking damage and is under 50%
+/datum/component/avatar_connection/proc/on_netpod_damaged(datum/source)
+ SIGNAL_HANDLER
+
+ var/mob/living/avatar = parent
+ avatar.throw_alert(
+ ALERT_BITRUNNER_INTEGRITY,
+ /atom/movable/screen/alert/bitrunning/netpod_damaged,
+ new_master = source
+ )
+
+/// Safely exits without forced variables, etc
+/datum/component/avatar_connection/proc/on_safe_disconnect(datum/source)
+ SIGNAL_HANDLER
+
+ full_avatar_disconnect()
+
+/// Helper for calling sever with forced variables
+/datum/component/avatar_connection/proc/on_sever_connection(datum/source, obj/machinery/netpod/broken_netpod)
+ SIGNAL_HANDLER
+
+ full_avatar_disconnect(forced = TRUE, broken_netpod = broken_netpod)
+
+/// Triggers when the server is shutting down
+/datum/component/avatar_connection/proc/on_shutting_down(datum/source, mob/living/hackerman)
+ SIGNAL_HANDLER
+
+ var/mob/living/avatar = parent
+ avatar.playsound_local(avatar, 'sound/machines/terminal_alert.ogg', 50, TRUE)
+ avatar.throw_alert(
+ ALERT_BITRUNNER_SHUTDOWN,
+ /atom/movable/screen/alert/bitrunning/qserver_shutting_down,
+ new_master = hackerman,
+ )
+
+/// Server has spawned a ghost role threat
+/datum/component/avatar_connection/proc/on_threat_created(datum/source)
+ SIGNAL_HANDLER
+
+ var/mob/living/avatar = parent
+ avatar.throw_alert(
+ ALERT_BITRUNNER_THREAT,
+ /atom/movable/screen/alert/bitrunning/qserver_threat_spawned,
+ new_master = source,
+ )
+
+/// Returns the mind to the old body
+/datum/component/avatar_connection/proc/return_to_old_body()
+ var/datum/mind/old_mind = old_mind_ref?.resolve()
+ var/mob/living/old_body = old_body_ref?.resolve()
+
+ if(!old_mind || !old_body)
+ return
+
+ var/mob/living/avatar = parent
+
+#ifdef UNIT_TESTS
+ // no minds during test so let's just yeet
+ return
+#endif
+
+ var/mob/dead/observer/ghost = avatar.ghostize()
+ if(!ghost)
+ ghost = avatar.get_ghost()
+
+ if(!ghost)
+ CRASH("[src] belonging to [parent] was completely unable to find a ghost to put back into a body!")
+
+ ghost.mind = old_mind
+ if(old_body.stat != DEAD)
+ old_mind.transfer_to(old_body, force_key_move = TRUE)
+ else
+ old_mind.set_current(old_body)
+
+ REMOVE_TRAIT(old_body, TRAIT_MIND_TEMPORARILY_GONE, REF(src))
+
+ old_mind = null
+ old_body = null
diff --git a/code/modules/bitrunning/components/bitrunning_points.dm b/code/modules/bitrunning/components/bitrunning_points.dm
new file mode 100644
index 00000000000..58dda4a68ff
--- /dev/null
+++ b/code/modules/bitrunning/components/bitrunning_points.dm
@@ -0,0 +1,46 @@
+/// Attaches a component which listens for a given signal from the item.
+///
+/// When the signal is received, it will add points to the signaler.
+/datum/component/bitrunning_points
+ /// The range at which we can find the signaler
+ var/max_point_range
+ /// Weakref to the loot crate landmark - where we send points
+ var/datum/weakref/our_spawner
+ /// The amount of points per each signal
+ var/points_per_signal
+ /// The signal we listen for
+ var/signal_type
+
+/datum/component/bitrunning_points/Initialize(signal_type, points_per_signal = 1, max_point_range = 4)
+ src.max_point_range = max_point_range
+ src.points_per_signal = points_per_signal
+ src.signal_type = signal_type
+
+ locate_spawner()
+
+/datum/component/bitrunning_points/RegisterWithParent()
+ RegisterSignal(parent, signal_type, PROC_REF(on_event))
+
+/datum/component/bitrunning_points/UnregisterFromParent()
+ UnregisterSignal(parent, signal_type)
+
+/// Finds the signaler if it hasn't been found yet.
+/datum/component/bitrunning_points/proc/locate_spawner()
+ var/obj/effect/landmark/bitrunning/loot_signal/spawner = our_spawner?.resolve()
+ if(spawner)
+ return spawner
+
+ for(var/obj/effect/landmark/bitrunning/loot_signal/found in GLOB.landmarks_list)
+ if(IN_GIVEN_RANGE(get_turf(parent), found, max_point_range))
+ our_spawner = WEAKREF(found)
+ return found
+
+/// Once the specified signal is received, whisper to the spawner to add points.
+/datum/component/bitrunning_points/proc/on_event(datum/source)
+ SIGNAL_HANDLER
+
+ var/obj/effect/landmark/bitrunning/loot_signal/spawner = locate_spawner()
+ if(isnull(spawner))
+ return
+
+ SEND_SIGNAL(spawner, COMSIG_BITRUNNER_GOAL_POINT, points_per_signal)
diff --git a/code/modules/bitrunning/components/netpod_healing.dm b/code/modules/bitrunning/components/netpod_healing.dm
new file mode 100644
index 00000000000..fc7de89bcf3
--- /dev/null
+++ b/code/modules/bitrunning/components/netpod_healing.dm
@@ -0,0 +1,65 @@
+/datum/component/netpod_healing
+ /// Brute damage to heal over a second
+ var/brute_heal = 0
+ /// Burn damage to heal over a second
+ var/burn_heal = 0
+ /// Toxin damage to heal over a second
+ var/toxin_heal = 0
+ /// Amount of cloning damage to heal over a second
+ var/clone_heal = 0
+ /// Amount of blood to heal over a second
+ var/blood_heal = 0
+
+/datum/component/netpod_healing/Initialize(
+ brute_heal = 0,
+ burn_heal = 0,
+ toxin_heal = 0,
+ clone_heal = 0,
+ blood_heal = 0,
+)
+ var/mob/living/carbon/player = parent
+ if (!iscarbon(player))
+ return COMPONENT_INCOMPATIBLE
+
+ player.apply_status_effect(/datum/status_effect/embryonic, STASIS_NETPOD_EFFECT)
+
+ START_PROCESSING(SSmachines, src)
+
+ src.brute_heal = brute_heal
+ src.burn_heal = burn_heal
+ src.toxin_heal = toxin_heal
+ src.clone_heal = clone_heal
+ src.blood_heal = blood_heal
+
+/datum/component/netpod_healing/Destroy(force, silent)
+ STOP_PROCESSING(SSmachines, src)
+
+ var/mob/living/carbon/player = parent
+ player.remove_status_effect(/datum/status_effect/embryonic)
+
+ return ..()
+
+/datum/component/netpod_healing/process(seconds_per_tick)
+ var/mob/living/carbon/owner = parent
+ if(isnull(owner))
+ qdel(src)
+ return
+
+ owner.adjustBruteLoss(-brute_heal * seconds_per_tick, updating_health = FALSE)
+ owner.adjustFireLoss(-burn_heal * seconds_per_tick, updating_health = FALSE)
+ owner.adjustToxLoss(-toxin_heal * seconds_per_tick, updating_health = FALSE, forced = TRUE)
+ owner.adjustCloneLoss(-clone_heal * seconds_per_tick, updating_health = FALSE)
+
+ if(owner.blood_volume < BLOOD_VOLUME_NORMAL)
+ owner.blood_volume += blood_heal * seconds_per_tick
+
+ owner.updatehealth()
+
+/datum/status_effect/embryonic
+ id = "embryonic"
+ alert_type = /atom/movable/screen/alert/status_effect/embryonic
+
+/atom/movable/screen/alert/status_effect/embryonic
+ name = "Embryonic Stasis"
+ icon_state = "netpod_stasis"
+ desc = "You feel like you're in a dream."
diff --git a/code/modules/bitrunning/event.dm b/code/modules/bitrunning/event.dm
new file mode 100644
index 00000000000..0ac35a2df8f
--- /dev/null
+++ b/code/modules/bitrunning/event.dm
@@ -0,0 +1,151 @@
+/datum/round_event_control/bitrunning_glitch
+ name = "Spawn Bitrunning Glitch"
+ admin_setup = list(
+ /datum/event_admin_setup/minimum_candidate_requirement/bitrunning_glitch,
+ /datum/event_admin_setup/listed_options/bitrunning_glitch,
+ )
+ category = EVENT_CATEGORY_INVASION
+ description = "Causes a short term antagonist to spawn in the virtual domain."
+ dynamic_should_hijack = FALSE
+ max_occurrences = 5
+ min_players = 1
+ typepath = /datum/round_event/ghost_role/bitrunning_glitch
+ weight = 10
+ /// List of active servers to choose from
+ var/list/obj/machinery/quantum_server/active_servers = list()
+ /// List of possible antags to spawn
+ var/static/list/possible_antags = list(
+ ROLE_CYBER_POLICE,
+ )
+
+/datum/round_event_control/bitrunning_glitch/can_spawn_event(players_amt, allow_magic = FALSE)
+ . = ..()
+ if(!.)
+ return .
+
+ active_servers.Cut()
+
+ get_active_servers()
+
+ if(length(active_servers))
+ return TRUE
+
+/// All servers currently running, has players in it, and map has valid mobs
+/datum/round_event_control/bitrunning_glitch/proc/get_active_servers()
+ for(var/obj/machinery/quantum_server/server in SSmachines.get_machines_by_type(/obj/machinery/quantum_server))
+ if(length(server.get_valid_domain_targets()))
+ active_servers.Add(server)
+
+ return length(active_servers) > 0
+
+/datum/event_admin_setup/listed_options/bitrunning_glitch
+ input_text = "Select a role to spawn."
+
+/datum/event_admin_setup/listed_options/bitrunning_glitch/get_list()
+ var/datum/round_event_control/bitrunning_glitch/control = event_control
+
+ var/list/possible = control.possible_antags.Copy() // this seems pedantic but byond is complaining control was unused
+
+ possible += list("Random")
+
+ return possible
+
+/datum/event_admin_setup/listed_options/bitrunning_glitch/apply_to_event(datum/round_event/ghost_role/bitrunning_glitch/event)
+ if(chosen == "Random")
+ event.forced_role = null
+ else
+ event.forced_role = chosen
+
+/datum/event_admin_setup/minimum_candidate_requirement/bitrunning_glitch
+ output_text = "There must be valid mobs to mutate or players in the domain!"
+
+/datum/event_admin_setup/minimum_candidate_requirement/bitrunning_glitch/count_candidates()
+ var/datum/round_event_control/bitrunning_glitch/cyber_control = event_control
+ cyber_control.get_active_servers()
+
+ var/total = 0
+ for(var/obj/machinery/quantum_server/server in cyber_control.active_servers)
+ total += length(server.mutation_candidate_refs)
+
+ return total
+
+/datum/round_event/ghost_role/bitrunning_glitch
+ minimum_required = 1
+ role_name = "Bitrunning Glitch"
+ fakeable = FALSE
+ /// Admin customization: What to spawn
+ var/forced_role
+
+/datum/round_event/ghost_role/bitrunning_glitch/spawn_role()
+ var/datum/round_event_control/bitrunning_glitch/cyber_control = control
+
+ var/obj/machinery/quantum_server/unlucky_server = pick(cyber_control.active_servers)
+ cyber_control.active_servers.Cut()
+
+ var/list/mutation_candidates = unlucky_server.get_valid_domain_targets()
+ if(!length(mutation_candidates))
+ return MAP_ERROR
+
+ var/chosen = pick(mutation_candidates)
+ if(isnull(chosen) || !length(mutation_candidates))
+ return MAP_ERROR
+
+ var/datum/weakref/target_ref = pick(mutation_candidates)
+ var/mob/living/mutation_target = target_ref.resolve()
+
+ if(isnull(mutation_target)) // just in case since it takes a minute
+ target_ref = pick(mutation_candidates)
+ mutation_target = target_ref.resolve()
+ if(isnull(mutation_target))
+ return MAP_ERROR
+
+ var/chosen_role = forced_role || pick(cyber_control.possible_antags)
+
+ var/datum/mind/ghost_mind = get_ghost_mind(chosen_role)
+ if(isnull(ghost_mind))
+ return NOT_ENOUGH_PLAYERS
+
+ var/mob/living/antag_mob
+ switch(chosen_role)
+ if(ROLE_CYBER_POLICE)
+ antag_mob = spawn_cybercop(mutation_target, ghost_mind)
+
+ playsound(antag_mob, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
+ message_admins("[ADMIN_LOOKUPFLW(antag_mob)] has been made into virtual antagonist by an event.")
+ antag_mob.log_message("was spawned as a virtual antagonist by an event.", LOG_GAME)
+
+ SEND_SIGNAL(unlucky_server, COMSIG_BITRUNNER_SPAWN_GLITCH, antag_mob)
+
+ spawned_mobs += antag_mob
+
+ return SUCCESSFUL_SPAWN
+
+/// Polls for a ghost that wants to run it
+/datum/round_event/ghost_role/bitrunning_glitch/proc/get_ghost_mind(role_name)
+ var/list/mob/dead/observer/ghosties = poll_ghost_candidates("A short term antagonist role is available. Would you like to spawn as a '[role_name]'?", role_name)
+
+ if(!length(ghosties))
+ return
+
+ shuffle_inplace(ghosties)
+
+ var/mob/dead/selected = pick(ghosties)
+
+ var/datum/mind/player_mind = new /datum/mind(selected.key)
+ player_mind.active = TRUE
+
+ return player_mind
+
+/// Spawns a cybercop on the mutation target
+/datum/round_event/ghost_role/bitrunning_glitch/proc/spawn_cybercop(mob/living/mutation_target, datum/mind/player_mind)
+ var/mob/living/carbon/human/new_agent = new(mutation_target.loc)
+ mutation_target.gib()
+ mutation_target = null
+
+ player_mind.transfer_to(new_agent)
+ player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/cyber_police))
+ player_mind.special_role = ROLE_CYBER_POLICE
+ player_mind.add_antag_datum(/datum/antagonist/cyber_police)
+
+ return new_agent
+
diff --git a/code/modules/bitrunning/job.dm b/code/modules/bitrunning/job.dm
new file mode 100644
index 00000000000..57581753c0f
--- /dev/null
+++ b/code/modules/bitrunning/job.dm
@@ -0,0 +1,41 @@
+/datum/job/bitrunner
+ title = JOB_BITRUNNER
+ description = "Surf the virtual domain for gear and loot. Decrypt your rewards on station."
+ department_head = list(JOB_QUARTERMASTER)
+ faction = FACTION_STATION
+ total_positions = 3
+ spawn_positions = 3
+ supervisors = SUPERVISOR_QM
+ exp_granted_type = EXP_TYPE_CREW
+ config_tag = "BITRUNNER"
+ outfit = /datum/outfit/job/bitrunner
+ plasmaman_outfit = /datum/outfit/plasmaman/bitrunner
+ paycheck = PAYCHECK_CREW
+ paycheck_department = ACCOUNT_CAR
+ display_order = JOB_DISPLAY_ORDER_BITRUNNER
+ bounty_types = CIV_JOB_RANDOM
+ departments_list = list(
+ /datum/job_department/cargo,
+ )
+
+ family_heirlooms = list(/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind)
+
+ mail_goodies = list(
+ /obj/item/food/cornchips = 1,
+ /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind = 1,
+ /obj/item/food/cornchips/green = 1,
+ /obj/item/food/cornchips/red = 1,
+ /obj/item/food/cornchips/purple = 1,
+ /obj/item/food/cornchips/blue = 1,
+ )
+ rpg_title = "Recluse"
+ job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN
+
+/datum/outfit/job/bitrunner
+ name = "Bitrunner"
+ jobtype = /datum/job/bitrunner
+
+ id_trim = /datum/id_trim/job/bitrunner
+ uniform = /obj/item/clothing/under/rank/cargo/bitrunner
+ belt = /obj/item/modular_computer/pda/bitrunner
+ ears = /obj/item/radio/headset/headset_cargo
diff --git a/code/modules/bitrunning/objects/bit_vendor.dm b/code/modules/bitrunning/objects/bit_vendor.dm
new file mode 100644
index 00000000000..abd63a9e784
--- /dev/null
+++ b/code/modules/bitrunning/objects/bit_vendor.dm
@@ -0,0 +1,86 @@
+#define CREDIT_TYPE_BITRUNNING "np"
+
+/obj/machinery/computer/order_console/bitrunning
+ name = "bitrunning supplies order console"
+ desc = "NexaCache(tm)! Dubiously authentic gear for the digital daredevil."
+ icon = 'icons/obj/machines/bitrunning.dmi'
+ icon_state = "vendor"
+ icon_keyboard = null
+ icon_screen = null
+ circuit = /obj/item/circuitboard/computer/order_console/bitrunning
+ cooldown_time = 10 SECONDS
+ cargo_cost_multiplier = 0.65
+ express_cost_multiplier = 1
+ purchase_tooltip = @{"Your purchases will arrive at cargo,
+ and hopefully get delivered by them.
+ 35% cheaper than express delivery."}
+ express_tooltip = @{"Sends your purchases instantly."}
+ credit_type = CREDIT_TYPE_BITRUNNING
+
+ order_categories = list(
+ CATEGORY_BITRUNNING_FLAIR,
+ CATEGORY_BITRUNNING_TECH,
+ CATEGORY_BEPIS,
+ )
+ blackbox_key = "bitrunning"
+
+/obj/machinery/computer/order_console/bitrunning/subtract_points(final_cost, obj/item/card/id/card)
+ if(final_cost <= card.registered_account.bitrunning_points)
+ card.registered_account.bitrunning_points -= final_cost
+ return TRUE
+ return FALSE
+
+/obj/machinery/computer/order_console/bitrunning/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries)
+ var/list/things_to_order = list()
+ for(var/datum/orderable_item/item as anything in groceries)
+ things_to_order[item.item_path] = groceries[item]
+
+ var/datum/supply_pack/bitrunning/pack = new(
+ purchaser = purchaser, \
+ cost = get_total_cost(), \
+ contains = things_to_order,
+ )
+
+ var/datum/supply_order/new_order = new(
+ pack = pack,
+ orderer = purchaser,
+ orderer_rank = "Bitrunning Vendor",
+ orderer_ckey = purchaser.ckey,
+ reason = "",
+ paying_account = card.registered_account,
+ department_destination = null,
+ coupon = null,
+ charge_on_purchase = FALSE,
+ manifest_can_fail = FALSE,
+ cost_type = credit_type,
+ can_be_cancelled = FALSE,
+ )
+ say("Thank you for your purchase! It will arrive on the next cargo shuttle!")
+ radio.talk_into(src, "A bitrunner has ordered equipment which will arrive on the cargo shuttle! Please make sure it gets to them as soon as possible!", radio_channel)
+ SSshuttle.shopping_list += new_order
+
+/obj/machinery/computer/order_console/bitrunning/retrieve_points(obj/item/card/id/id_card)
+ return round(id_card.registered_account.bitrunning_points)
+
+/obj/machinery/computer/order_console/bitrunning/ui_act(action, params)
+ . = ..()
+ if(!.)
+ flick("vendor_off", src)
+
+/obj/machinery/computer/order_console/bitrunning/update_icon_state()
+ icon_state = "[initial(icon_state)][powered() ? null : "_off"]"
+ return ..()
+
+/datum/supply_pack/bitrunning
+ name = "bitrunning order"
+ hidden = TRUE
+ crate_name = "bitrunning delivery crate"
+ access = list(ACCESS_BIT_DEN)
+
+/datum/supply_pack/bitrunning/New(purchaser, cost, list/contains)
+ . = ..()
+ name = "[purchaser]'s Bitrunning Order"
+ src.cost = cost
+ src.contains = contains
+
+#undef CREDIT_TYPE_BITRUNNING
diff --git a/code/modules/bitrunning/objects/clothing.dm b/code/modules/bitrunning/objects/clothing.dm
new file mode 100644
index 00000000000..4d2d9cc55c4
--- /dev/null
+++ b/code/modules/bitrunning/objects/clothing.dm
@@ -0,0 +1,9 @@
+/obj/item/clothing/glasses/sunglasses/oval
+ name = "oval sunglasses"
+ desc = "Vintage wrap around sunglasses. Provides a little protection."
+ icon_state = "jensenshades"
+
+/obj/item/clothing/suit/jacket/trenchcoat
+ name = "trenchcoat"
+ desc = "A long, black trenchcoat. Makes you feel like you're the one, but you're not."
+ icon_state = "trenchcoat"
diff --git a/code/modules/bitrunning/objects/disks.dm b/code/modules/bitrunning/objects/disks.dm
new file mode 100644
index 00000000000..4698b7a1ec1
--- /dev/null
+++ b/code/modules/bitrunning/objects/disks.dm
@@ -0,0 +1,146 @@
+/**
+ * Bitrunning tech disks which let you load items or programs into the vdom on first avatar generation.
+ * For the record: Balance shouldn't be a primary concern.
+ * You can make the custom cheese spells you've always wanted.
+ * Just make it fun and engaging, it's PvE content.
+ */
+/obj/item/bitrunning_disk
+ name = "generic bitrunning program"
+ desc = "A disk containing source code."
+ icon = 'icons/obj/assemblies/module.dmi'
+ base_icon_state = "datadisk"
+ icon_state = "datadisk0"
+ /// Name of the choice made
+ var/choice_made
+
+/obj/item/bitrunning_disk/Initialize(mapload)
+ . = ..()
+
+ icon_state = "[base_icon_state][rand(0, 7)]"
+ update_icon()
+ RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined))
+
+/obj/item/bitrunning_disk/proc/on_examined(datum/source, mob/examiner, list/examine_text)
+ SIGNAL_HANDLER
+
+ examine_text += span_infoplain("This disk must be carried on your person into a netpod to be used.")
+
+ if(isnull(choice_made))
+ examine_text += span_notice("To make a selection, toggle the disk in hand.")
+ return
+
+ examine_text += span_info("It has been used to select: [choice_made].")
+ examine_text += span_notice("It cannot make another selection.")
+
+/obj/item/bitrunning_disk/ability
+ desc = "A disk containing source code. It can be used to preload abilities into the virtual domain."
+ /// The selected ability that this grants
+ var/datum/action/granted_action
+ /// The list of actions that this can grant
+ var/list/datum/action/selectable_actions = list()
+
+/obj/item/bitrunning_disk/ability/attack_self(mob/user, modifiers)
+ . = ..()
+
+ if(choice_made)
+ return
+
+ var/names = list()
+ for(var/datum/action/thing as anything in selectable_actions)
+ names += initial(thing.name)
+
+ var/choice = tgui_input_list(user, message = "Select an ability", title = "Bitrunning Program", items = names)
+ if(isnull(choice))
+ return
+
+ for(var/datum/action/thing as anything in selectable_actions)
+ if(initial(thing.name) == choice)
+ granted_action = thing
+
+ if(isnull(granted_action))
+ return
+
+ balloon_alert(user, "selected")
+ playsound(user, 'sound/items/click.ogg', 50, TRUE)
+ choice_made = choice
+
+/// Tier 1 programs. Simple, funny, or helpful.
+/obj/item/bitrunning_disk/ability/tier1
+ name = "bitrunning program: basic"
+ selectable_actions = list(
+ /datum/action/cooldown/spell/conjure/cheese,
+ /datum/action/cooldown/spell/basic_heal,
+ )
+
+/// Tier 2 programs. More complex, powerful, or useful.
+/obj/item/bitrunning_disk/ability/tier2
+ name = "bitrunning program: complex"
+ selectable_actions = list(
+ /datum/action/cooldown/spell/pointed/projectile/fireball,
+ /datum/action/cooldown/spell/pointed/projectile/lightningbolt,
+ /datum/action/cooldown/spell/forcewall,
+ )
+
+/// Tier 3 abilities. Very powerful, game breaking.
+/obj/item/bitrunning_disk/ability/tier3
+ name = "bitrunning program: elite"
+ selectable_actions = list(
+ /datum/action/cooldown/spell/shapeshift/dragon,
+ /datum/action/cooldown/spell/shapeshift/polar_bear,
+ )
+
+/obj/item/bitrunning_disk/item
+ desc = "A disk containing source code. It can be used to preload items into the virtual domain."
+ /// The selected item that this grants
+ var/obj/granted_item
+ /// The list of actions that this can grant
+ var/list/obj/selectable_items = list()
+
+/obj/item/bitrunning_disk/item/attack_self(mob/user, modifiers)
+ . = ..()
+
+ if(choice_made)
+ return
+
+ var/names = list()
+ for(var/obj/thing as anything in selectable_items)
+ names += initial(thing.name)
+
+ var/choice = tgui_input_list(user, message = "Select an ability", title = "Bitrunning Program", items = names)
+ if(isnull(choice))
+ return
+
+ for(var/obj/thing as anything in selectable_items)
+ if(initial(thing.name) == choice)
+ granted_item = thing
+
+ balloon_alert(user, "selected")
+ playsound(user, 'sound/items/click.ogg', 50, TRUE)
+ choice_made = choice
+
+/// Tier 1 items. Simple, funny, or helpful.
+/obj/item/bitrunning_disk/item/tier1
+ name = "bitrunning gear: simple"
+ selectable_items = list(
+ /obj/item/pizzabox/infinite,
+ /obj/item/gun/medbeam,
+ /obj/item/grenade/c4,
+ )
+
+/// Tier 2 items. More complex, powerful, or useful.
+/obj/item/bitrunning_disk/item/tier2
+ name = "bitrunning gear: complex"
+ selectable_items = list(
+ /obj/item/chainsaw,
+ /obj/item/gun/ballistic/automatic/pistol,
+ /obj/item/melee/energy/blade/hardlight,
+ )
+
+/// Tier 3 items. Very powerful, game breaking.
+/obj/item/bitrunning_disk/item/tier3
+ name = "bitrunning gear: advanced"
+ selectable_items = list(
+ /obj/item/gun/energy/tesla_cannon,
+ /obj/item/dualsaber/green,
+ /obj/item/melee/beesword,
+ )
diff --git a/code/modules/bitrunning/objects/hololadder.dm b/code/modules/bitrunning/objects/hololadder.dm
new file mode 100644
index 00000000000..dc425252668
--- /dev/null
+++ b/code/modules/bitrunning/objects/hololadder.dm
@@ -0,0 +1,52 @@
+/obj/structure/hololadder
+ name = "hololadder"
+
+ anchored = TRUE
+ desc = "An abstract representation of the means to disconnect from the virtual domain."
+ icon = 'icons/obj/structures.dmi'
+ icon_state = "ladder11"
+ obj_flags = BLOCK_Z_OUT_DOWN
+ /// Time req to disconnect properly
+ var/travel_time = 3 SECONDS
+
+/obj/structure/hololadder/Initialize(mapload)
+ . = ..()
+
+ RegisterSignal(loc, COMSIG_ATOM_ENTERED, PROC_REF(on_enter))
+
+/obj/structure/hololadder/attack_hand(mob/user, list/modifiers)
+ . = ..()
+ if(.)
+ return
+
+ if(!in_range(src, user) || DOING_INTERACTION(user, DOAFTER_SOURCE_CLIMBING_LADDER))
+ return
+
+ disconnect(user)
+
+/// If there's a pilot ref- send the disconnect signal
+/obj/structure/hololadder/proc/disconnect(mob/user)
+ if(isnull(user.mind))
+ return
+
+ var/datum/component/avatar_connection/connection = user.GetComponent(/datum/component/avatar_connection)
+ if(isnull(connection))
+ balloon_alert(user, "no connection detected.")
+ return
+
+ balloon_alert(user, "disconnecting...")
+ if(do_after(user, travel_time, src))
+ SEND_SIGNAL(user, COMSIG_BITRUNNER_SAFE_DISCONNECT)
+
+/// Helper for times when you dont have hands (gondola??)
+/obj/structure/hololadder/proc/on_enter(datum/source, atom/movable/arrived, turf/old_loc)
+ SIGNAL_HANDLER
+
+ if(!isliving(arrived))
+ return
+
+ var/mob/living/user = arrived
+ if(isnull(user.mind))
+ return
+
+ INVOKE_ASYNC(src, PROC_REF(disconnect), user)
diff --git a/code/modules/bitrunning/objects/host_monitor.dm b/code/modules/bitrunning/objects/host_monitor.dm
new file mode 100644
index 00000000000..f59ca61cbd0
--- /dev/null
+++ b/code/modules/bitrunning/objects/host_monitor.dm
@@ -0,0 +1,33 @@
+/obj/item/bitrunning_host_monitor
+ name = "host monitor"
+
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2)
+ desc = "A complex medical device that, when attached to an avatar's data stream, can detect the user of their host's health."
+ flags_1 = CONDUCT_1
+ icon = 'icons/obj/device.dmi'
+ icon_state = "gps-b"
+ inhand_icon_state = "electronic"
+ item_flags = NOBLUDGEON
+ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
+ slot_flags = ITEM_SLOT_BELT
+ throw_range = 7
+ throw_speed = 3
+ throwforce = 3
+ w_class = WEIGHT_CLASS_TINY
+ worn_icon_state = "electronic"
+
+/obj/item/bitrunning_host_monitor/attack_self(mob/user, modifiers)
+ . = ..()
+
+ var/datum/component/avatar_connection/connection = user.GetComponent(/datum/component/avatar_connection)
+ if(isnull(connection))
+ balloon_alert(user, "data not recognized")
+ return
+
+ var/mob/living/pilot = connection.old_body_ref?.resolve()
+ if(isnull(pilot))
+ balloon_alert(user, "host not recognized")
+ return
+
+ to_chat(user, span_notice("Current host health: [pilot.health / pilot.maxHealth * 100]%"))
diff --git a/code/modules/bitrunning/objects/landmarks.dm b/code/modules/bitrunning/objects/landmarks.dm
new file mode 100644
index 00000000000..d78283c6a8b
--- /dev/null
+++ b/code/modules/bitrunning/objects/landmarks.dm
@@ -0,0 +1,70 @@
+/obj/effect/landmark/bitrunning
+ name = "Generic bitrunning effect"
+ icon = 'icons/effects/bitrunning.dmi'
+ icon_state = "crate"
+
+/// In case you want to gate the crate behind a special condition.
+/obj/effect/landmark/bitrunning/loot_signal
+ name = "Mysterious aura"
+ /// The amount required to spawn a crate
+ var/points_goal = 10
+ /// A special condition limits this from spawning a crate
+ var/points_received = 0
+ /// Finished the special condition
+ var/revealed = FALSE
+
+/obj/effect/landmark/bitrunning/loot_signal/Initialize(mapload)
+ . = ..()
+
+ RegisterSignal(src, COMSIG_BITRUNNER_GOAL_POINT, PROC_REF(on_add_point))
+
+/// Listens for points to be added which will eventually spawn a crate.
+/obj/effect/landmark/bitrunning/loot_signal/proc/on_add_point(datum/source, points_to_add)
+ SIGNAL_HANDLER
+
+ if(revealed)
+ return
+
+ points_received += points_to_add
+
+ if(points_received < points_goal)
+ return
+
+ reveal()
+
+/// Spawns the crate with some effects
+/obj/effect/landmark/bitrunning/loot_signal/proc/reveal()
+ playsound(src, 'sound/magic/blink.ogg', 50, TRUE)
+
+ var/turf/tile = get_turf(src)
+ var/obj/structure/closet/crate/secure/bitrunning/encrypted/loot = new(tile)
+ var/datum/effect_system/spark_spread/quantum/sparks = new(tile)
+ sparks.set_up(5, 1, get_turf(loot))
+ sparks.start()
+
+ qdel(src)
+
+/// Where the crates get ported to station
+/obj/effect/landmark/bitrunning/station_reward_spawn
+ name = "Bitrunning rewards spawn"
+ icon_state = "station"
+
+/// Where the exit hololadder spawns
+/obj/effect/landmark/bitrunning/hololadder_spawn
+ name = "Bitrunning hololadder spawn"
+ icon_state = "hololadder"
+
+/// Where the crates need to be taken
+/obj/effect/landmark/bitrunning/cache_goal_turf
+ name = "Bitrunning goal turf"
+ icon_state = "goal"
+
+/// Where you want the crate to spawn
+/obj/effect/landmark/bitrunning/cache_spawn
+ name = "Bitrunning crate spawn"
+ icon_state = "spawn"
+
+/// Where the safehouse will spawn
+/obj/effect/landmark/bitrunning/safehouse_spawn
+ name = "Bitrunning safehouse spawn"
+ icon_state = "safehouse"
diff --git a/code/modules/bitrunning/objects/loot_crate.dm b/code/modules/bitrunning/objects/loot_crate.dm
new file mode 100644
index 00000000000..aab47de2667
--- /dev/null
+++ b/code/modules/bitrunning/objects/loot_crate.dm
@@ -0,0 +1,91 @@
+#define ORE_MULTIPLIER_IRON 3
+#define ORE_MULTIPLIER_GLASS 2
+#define ORE_MULTIPLIER_PLASMA 1
+#define ORE_MULTIPLIER_SILVER 0.7
+#define ORE_MULTIPLIER_GOLD 0.6
+#define ORE_MULTIPLIER_TITANIUM 0.5
+#define ORE_MULTIPLIER_URANIUM 0.4
+#define ORE_MULTIPLIER_DIAMOND 0.3
+#define ORE_MULTIPLIER_BLUESPACE_CRYSTAL 0.2
+
+/obj/structure/closet/crate/secure/bitrunning // Base class. Do not spawn this.
+ name = "base class cache"
+ desc = "Talk to a coder."
+
+/// The virtual domain - side of the bitrunning crate. Deliver to the send location.
+/obj/structure/closet/crate/secure/bitrunning/encrypted
+ name = "encrypted cache"
+ desc = "Needs decrypted at the safehouse to be opened."
+ locked = TRUE
+
+/obj/structure/closet/crate/secure/bitrunning/encrypted/can_unlock(mob/living/user, obj/item/card/id/player_id, obj/item/card/id/registered_id)
+ return FALSE
+
+/// The bitrunner den - side of the bitrunning crate. Appears in the receive location.
+/obj/structure/closet/crate/secure/bitrunning/decrypted
+ name = "decrypted cache"
+ desc = "Compiled from the virtual domain. The reward of a successful bitrunner."
+ locked = FALSE
+
+/obj/structure/closet/crate/secure/bitrunning/decrypted/Initialize(
+ mapload,
+ datum/lazy_template/virtual_domain/completed_domain,
+ rewards_multiplier = 1,
+ )
+ . = ..()
+ playsound(src, 'sound/magic/blink.ogg', 50, TRUE)
+
+ if(isnull(completed_domain))
+ return
+
+ PopulateContents(completed_domain.reward_points, completed_domain.extra_loot, rewards_multiplier)
+
+/obj/structure/closet/crate/secure/bitrunning/decrypted/PopulateContents(reward_points, list/extra_loot, rewards_multiplier)
+ . = ..()
+ spawn_loot(extra_loot)
+
+ new /obj/item/stack/ore/iron(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_IRON))
+ new /obj/item/stack/ore/glass(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_GLASS))
+
+ if(reward_points > 1)
+ new /obj/item/stack/ore/silver(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_SILVER))
+ new /obj/item/stack/ore/titanium(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_TITANIUM))
+
+ if(reward_points > 2)
+ new /obj/item/stack/ore/plasma(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_PLASMA))
+ new /obj/item/stack/ore/gold(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_GOLD))
+ new /obj/item/stack/ore/uranium(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_URANIUM))
+
+ if(reward_points > 3)
+ new /obj/item/stack/ore/diamond(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_DIAMOND))
+ new /obj/item/stack/ore/bluespace_crystal(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_BLUESPACE_CRYSTAL))
+
+/// Handles generating random numbers & calculating loot totals
+/obj/structure/closet/crate/secure/bitrunning/decrypted/proc/calculate_loot(reward_points, rewards_multiplier, ore_multiplier)
+ var/base = 1 * (rewards_multiplier + reward_points)
+ var/random_sum = (rand() * 1.0 + 0.5) * base
+ return ROUND_UP(random_sum * ore_multiplier)
+
+/// Handles spawning extra loot. This tries to handle bad flat and assoc lists
+/obj/structure/closet/crate/secure/bitrunning/decrypted/proc/spawn_loot(list/extra_loot)
+ for(var/path in extra_loot)
+ if(!ispath(path))
+ continue
+
+ if(isnull(extra_loot[path]))
+ return FALSE
+
+ for(var/i in 1 to extra_loot[path])
+ new path(src)
+
+ return TRUE
+
+#undef ORE_MULTIPLIER_IRON
+#undef ORE_MULTIPLIER_GLASS
+#undef ORE_MULTIPLIER_PLASMA
+#undef ORE_MULTIPLIER_SILVER
+#undef ORE_MULTIPLIER_GOLD
+#undef ORE_MULTIPLIER_TITANIUM
+#undef ORE_MULTIPLIER_URANIUM
+#undef ORE_MULTIPLIER_DIAMOND
+#undef ORE_MULTIPLIER_BLUESPACE_CRYSTAL
diff --git a/code/modules/bitrunning/objects/netpod.dm b/code/modules/bitrunning/objects/netpod.dm
new file mode 100644
index 00000000000..8c8cd15af2f
--- /dev/null
+++ b/code/modules/bitrunning/objects/netpod.dm
@@ -0,0 +1,472 @@
+#define BASE_DISCONNECT_DAMAGE 40
+
+/obj/machinery/netpod
+ name = "netpod"
+
+ base_icon_state = "netpod"
+ circuit = /obj/item/circuitboard/machine/netpod
+ desc = "A link to the netverse. It has an assortment of cables to connect yourself to a virtual domain."
+ icon = 'icons/obj/machines/bitrunning.dmi'
+ icon_state = "netpod"
+ max_integrity = 300
+ obj_flags = BLOCKS_CONSTRUCTION
+ state_open = TRUE
+ /// Whether we have an ongoing connection
+ var/connected = FALSE
+ /// A player selected outfit by clicking the netpod
+ var/datum/outfit/netsuit = /datum/outfit/job/bitrunner
+ /// Holds this to see if it needs to generate a new one
+ var/datum/weakref/avatar_ref
+ /// The linked quantum server
+ var/datum/weakref/server_ref
+ /// The amount of brain damage done from force disconnects
+ var/disconnect_damage
+ /// Static list of outfits to select from
+ var/list/cached_outfits = list()
+
+/obj/machinery/netpod/Initialize(mapload)
+ . = ..()
+
+ return INITIALIZE_HINT_LATELOAD
+
+/obj/machinery/netpod/LateInitialize()
+ . = ..()
+
+ disconnect_damage = BASE_DISCONNECT_DAMAGE
+
+ RegisterSignals(src, list(
+ COMSIG_QDELETING,
+ COMSIG_MACHINERY_BROKEN,
+ COMSIG_MACHINERY_POWER_LOST,
+ ),
+ PROC_REF(on_broken),
+ )
+ RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
+ RegisterSignal(src, COMSIG_ATOM_TAKE_DAMAGE, PROC_REF(on_take_damage))
+
+ register_context()
+ update_appearance()
+
+/obj/machinery/netpod/Destroy()
+ . = ..()
+ cached_outfits.Cut()
+
+/obj/machinery/netpod/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+
+ if(isnull(held_item))
+ context[SCREENTIP_CONTEXT_LMB] = "Select Outfit"
+ return CONTEXTUAL_SCREENTIP_SET
+
+ if(istype(held_item, /obj/item/crowbar) && occupant)
+ context[SCREENTIP_CONTEXT_LMB] = "Pry Open"
+ return CONTEXTUAL_SCREENTIP_SET
+
+ return CONTEXTUAL_SCREENTIP_SET
+
+/obj/machinery/netpod/update_icon_state()
+ if(!is_operational)
+ icon_state = base_icon_state
+ return ..()
+
+ if(state_open)
+ icon_state = base_icon_state + "_open_active"
+ return ..()
+
+ if(panel_open)
+ icon_state = base_icon_state + "_panel"
+ return ..()
+
+ icon_state = base_icon_state + "_closed"
+ if(occupant)
+ icon_state += "_active"
+
+ return ..()
+
+/obj/machinery/netpod/MouseDrop_T(mob/target, mob/user)
+ var/mob/living/carbon/player = user
+ if(!iscarbon(player))
+ return
+
+ if((HAS_TRAIT(player, TRAIT_UI_BLOCKED) && !player.resting) || !Adjacent(player) || !player.Adjacent(target) || !ISADVANCEDTOOLUSER(player) || !is_operational)
+ return
+
+ close_machine(target)
+
+/obj/machinery/netpod/crowbar_act(mob/living/user, obj/item/tool)
+ if(user.combat_mode)
+ attack_hand(user)
+ return TOOL_ACT_TOOLTYPE_SUCCESS
+
+ if(default_pry_open(tool, user) || default_deconstruction_crowbar(tool))
+ return TOOL_ACT_TOOLTYPE_SUCCESS
+
+/obj/machinery/netpod/screwdriver_act(mob/living/user, obj/item/tool)
+ if(occupant)
+ balloon_alert(user, "in use!")
+ return TOOL_ACT_TOOLTYPE_SUCCESS
+
+ if(state_open)
+ balloon_alert(user, "close first.")
+ return TOOL_ACT_TOOLTYPE_SUCCESS
+
+ if(default_deconstruction_screwdriver(user, "[base_icon_state]_panel", "[base_icon_state]_closed", tool))
+ update_appearance() // sometimes icon doesnt properly update during flick()
+ ui_close(user)
+ return TOOL_ACT_TOOLTYPE_SUCCESS
+
+/obj/machinery/netpod/attack_hand(mob/living/user, list/modifiers)
+ . = ..()
+ if(!state_open && user == occupant)
+ container_resist_act(user)
+
+/obj/machinery/netpod/Exited(atom/movable/gone, direction)
+ . = ..()
+ if(!state_open && gone == occupant)
+ container_resist_act(gone)
+
+/obj/machinery/netpod/Exited(atom/movable/gone, direction)
+ . = ..()
+ if(!state_open && gone == occupant)
+ container_resist_act(gone)
+
+/obj/machinery/netpod/relaymove(mob/living/user, direction)
+ if(!state_open)
+ container_resist_act(user)
+
+/obj/machinery/netpod/container_resist_act(mob/living/user)
+ user.visible_message(span_notice("[occupant] emerges from [src]!"),
+ span_notice("You climb out of [src]!"),
+ span_notice("With a hiss, you hear a machine opening."))
+ open_machine()
+
+/obj/machinery/netpod/open_machine(drop = TRUE, density_to_set = FALSE)
+ unprotect_and_signal()
+ playsound(src, 'sound/machines/tramopen.ogg', 60, TRUE, frequency = 65000)
+ flick("[base_icon_state]_opening", src)
+
+ return ..()
+
+/obj/machinery/netpod/close_machine(mob/user, density_to_set = TRUE)
+ if(!state_open || panel_open || !is_operational || !iscarbon(user))
+ return
+
+ playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000)
+ flick("[base_icon_state]_closing", src)
+ ..()
+
+ if(!iscarbon(occupant))
+ open_machine()
+ return
+
+ enter_matrix()
+
+/obj/machinery/netpod/default_pry_open(obj/item/crowbar, mob/living/pryer)
+ if(isnull(occupant) || !iscarbon(occupant))
+ if(!state_open)
+ if(panel_open)
+ return FALSE
+ open_machine()
+ else
+ shut_pod()
+
+ return TRUE
+
+ pryer.visible_message(
+ span_danger("[pryer] starts prying open [src]!"),
+ span_notice("You start to pry open [src]."),
+ span_notice("You hear loud prying on metal.")
+ )
+ playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE)
+
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_CROWBAR_ALERT, pryer)
+
+ if(do_after(pryer, 15 SECONDS, src))
+ if(!state_open)
+ open_machine()
+
+ return TRUE
+
+/obj/machinery/netpod/ui_interact(mob/user, datum/tgui/ui)
+ if(!is_operational)
+ return
+
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "NetpodOutfits")
+ ui.set_autoupdate(FALSE)
+ ui.open()
+
+/obj/machinery/netpod/ui_data()
+ var/list/data = list()
+
+ data["netsuit"] = netsuit
+ return data
+
+/obj/machinery/netpod/ui_static_data()
+ var/list/data = list()
+
+ if(!length(cached_outfits))
+ cached_outfits += make_outfit_collection("Jobs", subtypesof(/datum/outfit/job))
+
+ data["collections"] = cached_outfits
+
+ return data
+
+/obj/machinery/netpod/ui_act(action, params)
+ . = ..()
+ if(.)
+ return TRUE
+ switch(action)
+ if("select_outfit")
+ var/datum/outfit/new_suit = resolve_outfit(params["outfit"])
+ if(new_suit)
+ netsuit = new_suit
+ return TRUE
+
+ return FALSE
+
+/// Disconnects the occupant after a certain time so they aren't just hibernating in netpod stasis. A balance change
+/obj/machinery/netpod/proc/auto_disconnect()
+ if(isnull(occupant) || state_open || connected)
+ return
+
+ if(!iscarbon(occupant))
+ open_machine()
+ return
+
+ var/mob/living/carbon/player = occupant
+
+ player.playsound_local(src, 'sound/effects/splash.ogg', 60, TRUE)
+ to_chat(player, span_notice("The machine disconnects itself and begins to drain."))
+ open_machine()
+
+/**
+ * ### Disconnect occupant
+ * If this goes smoothly, should reconnect a receiving mind to the occupant's body
+ *
+ * This is the second stage of the process - if you want to disconn avatars start at the mind first
+ */
+/obj/machinery/netpod/proc/disconnect_occupant(forced = FALSE)
+ var/mob/living/mob_occupant = occupant
+ if(isnull(occupant) || !isliving(occupant))
+ return
+
+ connected = FALSE
+
+ if(mob_occupant.stat == DEAD)
+ open_machine()
+ return
+
+ mob_occupant.playsound_local(src, "sound/magic/blink.ogg", 25, TRUE)
+ mob_occupant.set_static_vision(2 SECONDS)
+ mob_occupant.set_temp_blindness(1 SECONDS)
+ mob_occupant.Paralyze(2 SECONDS)
+
+ var/heal_time = 1
+ if(mob_occupant.health < mob_occupant.maxHealth)
+ heal_time = (mob_occupant.stat + 2) * 5
+ addtimer(CALLBACK(src, PROC_REF(auto_disconnect)), heal_time SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_DELETE_ME)
+
+ if(!forced)
+ return
+
+ mob_occupant.flash_act(override_blindness_check = TRUE, visual = TRUE)
+ mob_occupant.adjustOrganLoss(ORGAN_SLOT_BRAIN, disconnect_damage)
+ INVOKE_ASYNC(mob_occupant, TYPE_PROC_REF(/mob/living, emote), "scream")
+ to_chat(mob_occupant, span_danger("You've been forcefully disconnected from your avatar! Your thoughts feel scrambled!"))
+
+/**
+ * ### Enter Matrix
+ * Finds any current avatars from this chair - or generates a new one
+ *
+ * New avatars cost 1 attempt, and this will eject if there's none left
+ *
+ * Connects the mind to the avatar if everything is ok
+ */
+/obj/machinery/netpod/proc/enter_matrix()
+ var/mob/living/carbon/human/neo = occupant
+ if(!ishuman(neo) || neo.stat == DEAD || isnull(neo.mind))
+ balloon_alert(neo, "invalid occupant.")
+ return
+
+ var/obj/machinery/quantum_server/server = find_server()
+ if(isnull(server))
+ balloon_alert(neo, "no server connected!")
+ return
+
+ var/datum/lazy_template/virtual_domain/generated_domain = server.generated_domain
+ if(isnull(generated_domain) || !server.is_ready)
+ balloon_alert(neo, "nothing loaded!")
+ return
+
+ var/mob/living/carbon/current_avatar = avatar_ref?.resolve()
+ var/obj/structure/hololadder/wayout
+ if(isnull(current_avatar) || current_avatar.stat != CONSCIOUS) // We need a viable avatar
+ wayout = server.generate_hololadder()
+ if(isnull(wayout))
+ balloon_alert(neo, "out of bandwidth!")
+ return
+ current_avatar = server.generate_avatar(wayout, netsuit)
+ avatar_ref = WEAKREF(current_avatar)
+ server.stock_gear(current_avatar, neo)
+
+ neo.set_static_vision(3 SECONDS)
+ protect_occupant(occupant)
+ if(!do_after(neo, 2 SECONDS, src))
+ return
+
+ // Very invalid
+ if(QDELETED(neo) || QDELETED(current_avatar) || QDELETED(src))
+ return
+
+ // Invalid
+ if(occupant != neo || isnull(neo.mind) || neo.stat == DEAD || current_avatar.stat == DEAD)
+ return
+
+ current_avatar.AddComponent( \
+ /datum/component/avatar_connection, \
+ old_mind = neo.mind, \
+ old_body = neo, \
+ server = server, \
+ pod = src, \
+ help_text = generated_domain.help_text, \
+ )
+
+ connected = TRUE
+
+/// Finds a server and sets the server_ref
+/obj/machinery/netpod/proc/find_server()
+ var/obj/machinery/quantum_server/server = server_ref?.resolve()
+ if(server)
+ return server
+
+ server = locate(/obj/machinery/quantum_server) in oview(4, src)
+ if(isnull(server))
+ return
+
+ server_ref = WEAKREF(server)
+ RegisterSignal(server, COMSIG_BITRUNNER_SERVER_UPGRADED, PROC_REF(on_server_upgraded), override = TRUE)
+ RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE, PROC_REF(on_domain_complete), override = TRUE)
+
+ return server
+
+/// Creates a list of outfit entries for the UI.
+/obj/machinery/netpod/proc/make_outfit_collection(identifier, list/outfit_list)
+ var/list/collection = list(
+ "name" = identifier,
+ "outfits" = list()
+ )
+
+ for(var/path as anything in outfit_list)
+ var/datum/outfit/outfit = path
+
+ var/outfit_name = initial(outfit.name)
+ if(findtext(outfit_name, "(") != 0 || findtext(outfit_name, "-") != 0) // No special variants please
+ continue
+
+ collection["outfits"] += list(list("path" = path, "name" = outfit_name))
+
+ return list(collection)
+
+/// Machine has been broken - handles signals and reverting sprites
+/obj/machinery/netpod/proc/on_broken(datum/source)
+ SIGNAL_HANDLER
+
+ if(!state_open)
+ open_machine()
+
+ if(occupant)
+ unprotect_and_signal()
+
+/// Puts points on the current occupant's card account
+/obj/machinery/netpod/proc/on_domain_complete(datum/source, atom/movable/crate, reward_points)
+ SIGNAL_HANDLER
+
+ if(isnull(occupant) || !connected || !iscarbon(occupant))
+ return
+
+ var/mob/living/carbon/player = occupant
+
+ var/datum/bank_account/account = player.get_bank_account()
+ if(isnull(account))
+ return
+
+ account.bitrunning_points += reward_points * 100
+
+/obj/machinery/netpod/proc/on_examine(datum/source, mob/examiner, list/examine_text)
+ SIGNAL_HANDLER
+
+ if(isnull(occupant))
+ examine_text += span_infoplain("It is currently unoccupied.")
+ return
+
+ examine_text += span_infoplain("It is currently occupied by [occupant].")
+ examine_text += span_notice("It can be pried open with a crowbar, but its safety mechanisms will alert the occupant.")
+
+/// On unbuckle or break, make sure the occupant ref is null
+/obj/machinery/netpod/proc/unprotect_and_signal()
+ unprotect_occupant(occupant)
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR, src)
+
+/// When the server is upgraded, drops brain damage a little
+/obj/machinery/netpod/proc/on_server_upgraded(datum/source, servo_rating)
+ SIGNAL_HANDLER
+
+ disconnect_damage = BASE_DISCONNECT_DAMAGE * (1 - servo_rating)
+
+/// Checks the integrity, alerts occupants
+/obj/machinery/netpod/proc/on_take_damage(datum/source, damage_amount)
+ SIGNAL_HANDLER
+
+ if(isnull(occupant))
+ return
+
+ var/total = max_integrity - damage_amount
+ var/integrity = (atom_integrity / total) * 100
+ if(integrity > 50)
+ return
+
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_NETPOD_INTEGRITY)
+
+/// Puts the occupant in netpod stasis, basically short-circuiting environmental conditions
+/obj/machinery/netpod/proc/protect_occupant(mob/living/target)
+ if(target != occupant)
+ return
+
+ target.AddComponent(/datum/component/netpod_healing, \
+ brute_heal = 4, \
+ burn_heal = 4, \
+ toxin_heal = 4, \
+ clone_heal = 4, \
+ blood_heal = 4, \
+ )
+
+ target.playsound_local(src, 'sound/effects/submerge.ogg', 20, TRUE)
+ target.extinguish_mob()
+ update_use_power(ACTIVE_POWER_USE)
+
+/// Removes the occupant from netpod stasis
+/obj/machinery/netpod/proc/unprotect_occupant(mob/living/target)
+ var/datum/component/netpod_healing/healing_eff = target?.GetComponent(/datum/component/netpod_healing)
+ if(healing_eff)
+ qdel(healing_eff)
+
+ update_use_power(IDLE_POWER_USE)
+
+/// Resolves a path to an outfit.
+/obj/machinery/netpod/proc/resolve_outfit(text)
+ var/path = text2path(text)
+ if(ispath(path, /datum/outfit))
+ return path
+
+/// Closes the machine without shoving in an occupant
+/obj/machinery/netpod/proc/shut_pod()
+ state_open = FALSE
+ playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000)
+ flick("[base_icon_state]_closing", src)
+ set_density(TRUE)
+
+ update_appearance()
+
+#undef BASE_DISCONNECT_DAMAGE
diff --git a/code/modules/bitrunning/objects/quantum_console.dm b/code/modules/bitrunning/objects/quantum_console.dm
new file mode 100644
index 00000000000..1ad516d7d4c
--- /dev/null
+++ b/code/modules/bitrunning/objects/quantum_console.dm
@@ -0,0 +1,110 @@
+/obj/machinery/computer/quantum_console
+ name = "quantum console"
+
+ circuit = /obj/item/circuitboard/computer/quantum_console
+ icon_keyboard = "mining"
+ icon_screen = "bitrunning"
+ req_access = list(ACCESS_MINING)
+ /// The server this console is connected to.
+ var/datum/weakref/server_ref
+
+/obj/machinery/computer/quantum_console/Initialize(mapload, obj/item/circuitboard/circuit)
+ . = ..()
+ desc = "Even in the distant year [CURRENT_STATION_YEAR], Nanostrasen is still using REST APIs. How grim."
+
+ return INITIALIZE_HINT_LATELOAD
+
+/obj/machinery/computer/quantum_console/LateInitialize()
+ . = ..()
+
+ if(isnull(server_ref))
+ find_server()
+
+/obj/machinery/computer/quantum_console/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
+
+ if(!is_operational)
+ return
+
+ if(isnull(server_ref))
+ find_server()
+
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "QuantumConsole")
+ ui.open()
+
+/obj/machinery/computer/quantum_console/ui_data()
+ var/list/data = list()
+
+ var/obj/machinery/quantum_server/server = find_server()
+ if(isnull(server))
+ data["connected"] = FALSE
+ return data
+
+ data["connected"] = TRUE
+ data["generated_domain"] = server.generated_domain?.key
+ data["occupants"] = length(server.avatar_connection_refs)
+ data["points"] = server.points
+ data["randomized"] = server.domain_randomized
+ data["ready"] = server.is_ready && server.is_operational
+ data["scanner_tier"] = server.scanner_tier
+ data["retries_left"] = length(server.exit_turfs) - server.retries_spent
+
+ return data
+
+/obj/machinery/computer/quantum_console/ui_static_data(mob/user)
+ var/list/data = list()
+
+ var/obj/machinery/quantum_server/server = find_server()
+ if(isnull(server))
+ return data
+
+ data["available_domains"] = server.get_available_domains()
+ data["avatars"] = server.get_avatar_data()
+
+ return data
+
+/obj/machinery/computer/quantum_console/ui_act(action, list/params, datum/tgui/ui)
+ . = ..()
+ if(.)
+ return TRUE
+
+ var/obj/machinery/quantum_server/server = find_server()
+ if(isnull(server))
+ return FALSE
+
+ switch(action)
+ if("random_domain")
+ var/map_id = server.get_random_domain_id()
+ if(!map_id)
+ return TRUE
+
+ server.cold_boot_map(usr, map_id)
+ return TRUE
+ if("refresh")
+ ui.send_full_update()
+ return TRUE
+ if("set_domain")
+ server.cold_boot_map(usr, params["id"])
+ return TRUE
+ if("stop_domain")
+ server.begin_shutdown(usr)
+ return TRUE
+
+ return FALSE
+
+/// Attempts to find a quantum server.
+/obj/machinery/computer/quantum_console/proc/find_server()
+ var/obj/machinery/quantum_server/server = server_ref?.resolve()
+ if(server)
+ return server
+
+ for(var/direction in GLOB.cardinals)
+ var/obj/machinery/quantum_server/nearby_server = locate(/obj/machinery/quantum_server, get_step(src, direction))
+ if(nearby_server)
+ server_ref = WEAKREF(nearby_server)
+ nearby_server.console_ref = WEAKREF(src)
+ return nearby_server
+
+ return
diff --git a/code/modules/bitrunning/orders/disks.dm b/code/modules/bitrunning/orders/disks.dm
new file mode 100644
index 00000000000..ced1dde883a
--- /dev/null
+++ b/code/modules/bitrunning/orders/disks.dm
@@ -0,0 +1,26 @@
+/datum/orderable_item/bitrunning_tech
+ category_index = CATEGORY_BITRUNNING_TECH
+
+/datum/orderable_item/bitrunning_tech/item_tier1
+ cost_per_order = 1000
+ item_path = /obj/item/bitrunning_disk/item/tier1
+
+/datum/orderable_item/bitrunning_tech/item_tier2
+ cost_per_order = 1500
+ item_path = /obj/item/bitrunning_disk/item/tier2
+
+/datum/orderable_item/bitrunning_tech/item_tier3
+ cost_per_order = 2500
+ item_path = /obj/item/bitrunning_disk/item/tier3
+
+/datum/orderable_item/bitrunning_tech/ability_tier1
+ cost_per_order = 1000
+ item_path = /obj/item/bitrunning_disk/ability/tier1
+
+/datum/orderable_item/bitrunning_tech/ability_tier2
+ cost_per_order = 1800
+ item_path = /obj/item/bitrunning_disk/ability/tier2
+
+/datum/orderable_item/bitrunning_tech/ability_tier3
+ cost_per_order = 3200
+ item_path = /obj/item/bitrunning_disk/ability/tier3
diff --git a/code/modules/bitrunning/orders/flair.dm b/code/modules/bitrunning/orders/flair.dm
new file mode 100644
index 00000000000..ef36348eb6a
--- /dev/null
+++ b/code/modules/bitrunning/orders/flair.dm
@@ -0,0 +1,40 @@
+/datum/orderable_item/bitrunning_flair
+ category_index = CATEGORY_BITRUNNING_FLAIR
+
+/datum/orderable_item/bitrunning_flair/cornchips
+ item_path = /obj/item/food/cornchips
+ cost_per_order = 100
+
+/datum/orderable_item/bitrunning_flair/mountain_wind
+ item_path = /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind
+ cost_per_order = 100
+
+/datum/orderable_item/bitrunning_flair/pwr_game
+ item_path = /obj/item/reagent_containers/cup/soda_cans/pwr_game
+ cost_per_order = 200
+
+/datum/orderable_item/bitrunning_flair/grey_bull
+ item_path = /obj/item/reagent_containers/cup/soda_cans/grey_bull
+ cost_per_order = 200
+
+/datum/orderable_item/bitrunning_flair/medkit
+ item_path = /obj/item/storage/medkit/brute
+ desc = "Don't beat yourself up, it's just a game!"
+ cost_per_order = 500
+
+/datum/orderable_item/bitrunning_flair/medkit_fire
+ item_path = /obj/item/storage/medkit/fire
+ desc = "Great after heated gaming sessions."
+ cost_per_order = 500
+
+/datum/orderable_item/bitrunning_flair/oval_sunglasses
+ item_path = /obj/item/clothing/glasses/sunglasses/oval
+ cost_per_order = 1000
+
+/datum/orderable_item/bitrunning_flair/trenchcoat
+ item_path = /obj/item/clothing/suit/jacket/trenchcoat
+ cost_per_order = 1000
+
+/datum/orderable_item/bitrunning_flair/jackboots
+ item_path = /obj/item/clothing/shoes/jackboots
+ cost_per_order = 1000
diff --git a/code/modules/bitrunning/orders/tech.dm b/code/modules/bitrunning/orders/tech.dm
new file mode 100644
index 00000000000..b15af99fb97
--- /dev/null
+++ b/code/modules/bitrunning/orders/tech.dm
@@ -0,0 +1,10 @@
+/datum/orderable_item/bepis
+ category_index = CATEGORY_BEPIS
+
+/datum/orderable_item/bepis/random
+ item_path = /obj/item/disk/design_disk/bepis
+ cost_per_order = 500
+
+/datum/orderable_item/bepis/pristine
+ item_path = /obj/item/disk/design_disk/bepis/remove_tech
+ cost_per_order = 1000
diff --git a/code/modules/bitrunning/server/loot.dm b/code/modules/bitrunning/server/loot.dm
new file mode 100644
index 00000000000..29b730aae78
--- /dev/null
+++ b/code/modules/bitrunning/server/loot.dm
@@ -0,0 +1,123 @@
+/// Handles calculating rewards based on number of players, parts, threats, etc
+/obj/machinery/quantum_server/proc/calculate_rewards()
+ var/rewards_base = 0.8
+
+ if(domain_randomized)
+ rewards_base += 0.2
+
+ rewards_base += servo_bonus
+
+ rewards_base += (domain_threats * 2)
+
+ for(var/index in 2 to length(avatar_connection_refs))
+ rewards_base += multiplayer_bonus
+
+ return rewards_base
+
+/// Generates a reward based on the given domain
+/obj/machinery/quantum_server/proc/generate_loot()
+ if(!length(receive_turfs) && !locate_receive_turfs())
+ return FALSE
+
+ points += generated_domain.reward_points
+ playsound(src, 'sound/machines/terminal_success.ogg', 30, 2)
+
+ var/turf/dest_turf = pick(receive_turfs)
+ if(isnull(dest_turf))
+ stack_trace("Failed to find a turf to spawn loot crate on.")
+ return FALSE
+
+ var/bonus = calculate_rewards()
+
+ var/obj/item/paper/certificate = new()
+ certificate.add_raw_text(get_completion_certificate())
+ certificate.name = "certificate of domain completion"
+ certificate.update_appearance()
+
+ var/obj/structure/closet/crate/secure/bitrunning/decrypted/reward_crate = new(dest_turf, generated_domain, bonus)
+ reward_crate.manifest = certificate
+ reward_crate.update_appearance()
+
+ spark_at_location(reward_crate)
+ return TRUE
+
+/// Returns the markdown text containing domain completion information
+/obj/machinery/quantum_server/proc/get_completion_certificate()
+ var/base_points = generated_domain.reward_points
+ if(domain_randomized)
+ base_points -= 1
+
+ var/bonuses = calculate_rewards()
+
+ var/time_difference = world.time - generated_domain.start_time
+
+ var/completion_time = "### Completion Time: [DisplayTimeText(time_difference)]\n"
+
+ var/grade = "\n---\n\n# Rating: [grade_completion(generated_domain.difficulty, domain_threats, base_points, domain_randomized, time_difference)]"
+
+ var/text = "# Certificate of Domain Completion\n\n---\n\n"
+
+ text += "### [generated_domain.name][domain_randomized ? " (Randomized)" : ""]\n"
+ text += "- **Difficulty:** [generated_domain.difficulty]\n"
+ text += "- **Threats:** [domain_threats]\n"
+ text += "- **Base Points:** [base_points][domain_randomized ? " +1" : ""]\n\n"
+ text += "- **Total Bonus:** [bonuses]x\n\n"
+
+ if(bonuses <= 1)
+ text += completion_time
+ text += grade
+ return text
+
+ text += "### Bonuses\n"
+ if(domain_randomized)
+ text += "- **Randomized:** + 0.2\n"
+
+ if(length(avatar_connection_refs) > 1)
+ text += "- **Multiplayer:** + [(length(avatar_connection_refs) - 1) * multiplayer_bonus]\n"
+
+ if(domain_threats > 0)
+ text += "- **Threats:** + [domain_threats * 2]\n"
+
+ var/servo_rating = servo_bonus
+
+ if(servo_rating > 0.2)
+ text += "- **Components:** + [servo_rating]\n"
+
+ text += completion_time
+ text += grade
+
+ return text
+
+/// Grades the player's run based on several factors
+/obj/machinery/quantum_server/proc/grade_completion(difficulty, threats, points, randomized, completion_time)
+ var/score = threats * 5
+ score += points
+ score += randomized ? 1 : 0
+
+ var/base = difficulty + 1
+ var/time_score = 1
+
+ if(completion_time <= 1 MINUTES)
+ time_score = 10
+ else if(completion_time <= 2 MINUTES)
+ time_score = 5
+ else if(completion_time <= 5 MINUTES)
+ time_score = 3
+ else if(completion_time <= 10 MINUTES)
+ time_score = 2
+ else
+ time_score = 1
+
+ score += time_score * base
+
+ switch(score)
+ if(1 to 4)
+ return "D"
+ if(5 to 7)
+ return "C"
+ if(8 to 10)
+ return "B"
+ if(11 to 13)
+ return "A"
+ else
+ return "S"
diff --git a/code/modules/bitrunning/server/map_handling.dm b/code/modules/bitrunning/server/map_handling.dm
new file mode 100644
index 00000000000..2a3c0bdc9e0
--- /dev/null
+++ b/code/modules/bitrunning/server/map_handling.dm
@@ -0,0 +1,183 @@
+
+/// Gives all current occupants a notification that the server is going down
+/obj/machinery/quantum_server/proc/begin_shutdown(mob/user)
+ if(isnull(generated_domain))
+ return
+
+ if(!length(avatar_connection_refs))
+ balloon_alert(user, "powering down domain...")
+ playsound(src, 'sound/machines/terminal_off.ogg', 40, 2)
+ reset()
+ return
+
+ balloon_alert(user, "notifying clients...")
+ playsound(src, 'sound/machines/terminal_alert.ogg', 100, TRUE)
+ user.visible_message(
+ span_danger("[user] begins depowering the server!"),
+ span_notice("You start disconnecting clients..."),
+ span_danger("You hear frantic keying on a keyboard."),
+ )
+
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_SHUTDOWN_ALERT, user)
+
+ if(!do_after(user, 20 SECONDS, src))
+ return
+
+ reset()
+
+/**
+ * ### Quantum Server Cold Boot
+ * Procedurally links the 3 booting processes together.
+ *
+ * This is the starting point if you have an id. Does validation and feedback on steps
+ */
+/obj/machinery/quantum_server/proc/cold_boot_map(mob/user, map_key)
+ if(!is_ready)
+ return FALSE
+
+ if(isnull(map_key))
+ balloon_alert(user, "no domain specified.")
+ return FALSE
+
+ if(generated_domain)
+ balloon_alert(user, "stop the current domain first.")
+ return FALSE
+
+ if(length(avatar_connection_refs))
+ balloon_alert(user, "all clients must disconnect!")
+ return FALSE
+
+ is_ready = FALSE
+ playsound(src, 'sound/machines/terminal_processing.ogg', 30, 2)
+
+ if(!initialize_domain(map_key) || !initialize_safehouse() || !initialize_map_items())
+ balloon_alert(user, "initialization failed.")
+ scrub_vdom()
+ is_ready = TRUE
+ return FALSE
+
+ is_ready = TRUE
+ playsound(src, 'sound/machines/terminal_insert_disc.ogg', 30, 2)
+ balloon_alert(user, "domain loaded.")
+ generated_domain.start_time = world.time
+ points -= generated_domain.cost
+ update_use_power(ACTIVE_POWER_USE)
+ update_appearance()
+
+ return TRUE
+
+/// Initializes a new domain if the given key is valid and the user has enough points
+/obj/machinery/quantum_server/proc/initialize_domain(map_key)
+ var/datum/lazy_template/virtual_domain/to_load
+
+ for(var/datum/lazy_template/virtual_domain/available as anything in subtypesof(/datum/lazy_template/virtual_domain))
+ if(map_key != initial(available.key) || points < initial(available.cost))
+ continue
+ to_load = available
+ break
+
+ if(isnull(to_load))
+ return FALSE
+
+ generated_domain = new to_load()
+ RegisterSignal(generated_domain, COMSIG_LAZY_TEMPLATE_LOADED, PROC_REF(on_template_loaded))
+ generated_domain.lazy_load()
+
+ return TRUE
+
+/// Loads in necessary map items, sets mutation targets, etc
+/obj/machinery/quantum_server/proc/initialize_map_items()
+ var/turf/goal_turfs = list()
+ var/turf/crate_turfs = list()
+
+ for(var/thing in GLOB.landmarks_list)
+ if(istype(thing, /obj/effect/landmark/bitrunning/hololadder_spawn))
+ exit_turfs += get_turf(thing)
+ qdel(thing) // i'm worried about multiple servers getting confused so lets clean em up
+ continue
+
+ if(istype(thing, /obj/effect/landmark/bitrunning/cache_goal_turf))
+ var/turf/tile = get_turf(thing)
+ goal_turfs += tile
+ RegisterSignal(tile, COMSIG_ATOM_ENTERED, PROC_REF(on_goal_turf_entered))
+ RegisterSignal(tile, COMSIG_ATOM_EXAMINE, PROC_REF(on_goal_turf_examined))
+ qdel(thing)
+ continue
+
+ if(istype(thing, /obj/effect/landmark/bitrunning/cache_spawn))
+ crate_turfs += get_turf(thing)
+ qdel(thing)
+ continue
+
+ if(!length(exit_turfs))
+ CRASH("Failed to find exit turfs on generated domain.")
+ if(!length(goal_turfs))
+ CRASH("Failed to find send turfs on generated domain.")
+
+ if(length(crate_turfs))
+ shuffle_inplace(crate_turfs)
+ new /obj/structure/closet/crate/secure/bitrunning/encrypted(pick(crate_turfs))
+
+ return TRUE
+#define ONLY_TURF 1 // There should only ever be one turf at the bottom left of the map.
+
+/// Loads the safehouse
+/obj/machinery/quantum_server/proc/initialize_safehouse()
+ var/turf/safehouse_load_turf = list()
+ for(var/obj/effect/landmark/bitrunning/safehouse_spawn/spawner in GLOB.landmarks_list)
+ safehouse_load_turf += get_turf(spawner)
+ qdel(spawner)
+ break
+
+ if(!length(safehouse_load_turf))
+ CRASH("Failed to find safehouse load landmark on map.")
+
+ var/datum/map_template/safehouse/safehouse = new generated_domain.safehouse_path()
+ safehouse.load(safehouse_load_turf[ONLY_TURF])
+ generated_safehouse = safehouse
+
+ return TRUE
+
+/// Stops the current virtual domain and disconnects all users
+/obj/machinery/quantum_server/proc/reset(fast = FALSE)
+ is_ready = FALSE
+
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR)
+
+ if(!fast)
+ notify_spawned_threats()
+ addtimer(CALLBACK(src, PROC_REF(scrub_vdom)), 15 SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE)
+ else
+ scrub_vdom() // used in unit testing, no need to wait for callbacks
+
+ addtimer(CALLBACK(src, PROC_REF(cool_off)), min(server_cooldown_time * capacitor_coefficient), TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_DELETE_ME)
+ update_appearance()
+
+ update_use_power(IDLE_POWER_USE)
+ domain_randomized = FALSE
+ domain_threats = 0
+ retries_spent = 0
+
+/// Deletes all the tile contents
+/obj/machinery/quantum_server/proc/scrub_vdom()
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR) // just in case
+
+ if(length(generated_domain.reservations))
+ var/datum/turf_reservation/res = generated_domain.reservations[1]
+ res.Release()
+
+ var/list/datum/weakref/creatures = spawned_threat_refs + mutation_candidate_refs
+ for(var/datum/weakref/creature_ref as anything in creatures)
+ var/mob/living/creature = creature_ref?.resolve()
+ if(isnull(creature))
+ continue
+
+ creature.dust() // sometimes mobs just don't die
+
+ exit_turfs = list()
+ generated_domain = null
+ generated_safehouse = null
+ mutation_candidate_refs.Cut()
+ spawned_threat_refs.Cut()
+
+#undef ONLY_TURF
diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm
new file mode 100644
index 00000000000..00b205cfa9b
--- /dev/null
+++ b/code/modules/bitrunning/server/obj_generation.dm
@@ -0,0 +1,87 @@
+/// Generates a new avatar for the bitrunner.
+/obj/machinery/quantum_server/proc/generate_avatar(obj/structure/hololadder/wayout, datum/outfit/netsuit)
+ var/mob/living/carbon/human/avatar = new(wayout.loc)
+
+ var/outfit_path = generated_domain.forced_outfit || netsuit
+ var/datum/outfit/to_wear = new outfit_path()
+
+ to_wear.suit_store = null
+ to_wear.belt = /obj/item/bitrunning_host_monitor
+ to_wear.glasses = null
+ to_wear.suit = null
+ to_wear.gloves = null
+
+ avatar.equipOutfit(to_wear, visualsOnly = TRUE)
+
+ var/obj/item/storage/backpack/bag = avatar.back
+ if(istype(bag))
+ bag.contents += list(
+ new /obj/item/storage/box/survival,
+ new /obj/item/storage/medkit/regular,
+ new /obj/item/flashlight,
+ )
+
+ var/obj/item/card/id/outfit_id = avatar.wear_id
+ if(outfit_id)
+ outfit_id.assignment = "Bit Avatar"
+ outfit_id.registered_name = avatar.real_name
+
+ outfit_id.registered_account = new()
+ outfit_id.registered_account.replaceable = FALSE
+
+ SSid_access.apply_trim_to_card(outfit_id, /datum/id_trim/bit_avatar)
+
+ return avatar
+
+/// Generates a new hololadder for the bitrunner. Effectively a respawn attempt.
+/obj/machinery/quantum_server/proc/generate_hololadder()
+ if(!length(exit_turfs))
+ return
+
+ if(retries_spent >= length(exit_turfs))
+ return
+
+ var/turf/destination
+ for(var/turf/dest_turf in exit_turfs)
+ if(!locate(/obj/structure/hololadder) in dest_turf)
+ destination = dest_turf
+ break
+
+ if(isnull(destination))
+ return
+
+ var/obj/structure/hololadder/wayout = new(destination)
+ if(isnull(wayout))
+ return
+
+ retries_spent += 1
+
+ return wayout
+
+/// Scans over neo's contents for bitrunning tech disks. Loads the items or abilities onto the avatar.
+/obj/machinery/quantum_server/proc/stock_gear(mob/living/carbon/human/avatar, mob/living/carbon/human/neo)
+ var/failed = FALSE
+
+ for(var/obj/item/bitrunning_disk/disk in neo.get_contents())
+ if(istype(disk, /obj/item/bitrunning_disk/ability))
+ var/obj/item/bitrunning_disk/ability/ability_disk = disk
+
+ if(isnull(ability_disk.granted_action))
+ failed = TRUE
+ continue
+
+ var/datum/action/our_action = new ability_disk.granted_action()
+ our_action.Grant(avatar)
+ continue
+
+ if(istype(disk, /obj/item/bitrunning_disk/item))
+ var/obj/item/bitrunning_disk/item/item_disk = disk
+
+ if(isnull(item_disk.granted_item))
+ failed = TRUE
+ continue
+
+ avatar.put_in_hands(new item_disk.granted_item())
+
+ if(failed)
+ to_chat(neo, span_warning("One of your disks failed to load. You must activate them to make a selection."))
diff --git a/code/modules/bitrunning/server/quantum_server.dm b/code/modules/bitrunning/server/quantum_server.dm
new file mode 100644
index 00000000000..66223746de1
--- /dev/null
+++ b/code/modules/bitrunning/server/quantum_server.dm
@@ -0,0 +1,143 @@
+/**
+ * The base object for the quantum server
+ */
+/obj/machinery/quantum_server
+ name = "quantum server"
+
+ circuit = /obj/item/circuitboard/machine/quantum_server
+ density = TRUE
+ desc = "A hulking computational machine designed to fabricate virtual domains."
+ icon = 'icons/obj/machines/bitrunning.dmi'
+ base_icon_state = "qserver"
+ icon_state = "qserver"
+ /// Affects server cooldown efficiency
+ var/capacitor_coefficient = 1
+ /// The loaded map template, map_template/virtual_domain
+ var/datum/lazy_template/virtual_domain/generated_domain
+ /// The loaded safehouse, map_template/safehouse
+ var/datum/map_template/safehouse/generated_safehouse
+ /// The connected console
+ var/datum/weakref/console_ref
+ /// If the current domain was a random selection
+ var/domain_randomized = FALSE
+ /// If any threats were spawned, adds to rewards
+ var/domain_threats = 0
+ /// Prevents multiple user actions. Handled by loading domains and cooldowns
+ var/is_ready = TRUE
+ /// List of available domains
+ var/list/available_domains = list()
+ /// Current plugged in users
+ var/list/datum/weakref/avatar_connection_refs = list()
+ /// Cached list of mutable mobs in zone for cybercops
+ var/list/datum/weakref/mutation_candidate_refs = list()
+ /// Any ghosts that have spawned in
+ var/list/datum/weakref/spawned_threat_refs = list()
+ /// Scales loot with extra players
+ var/multiplayer_bonus = 1.1
+ /// The amount of points in the system, used to purchase maps
+ var/points = 0
+ /// Keeps track of the number of times someone has built a hololadder
+ var/retries_spent = 0
+ /// Changes how much info is available on the domain
+ var/scanner_tier = 1
+ /// Length of time it takes for the server to cool down after resetting. Here to give runners downtime so their faces don't get stuck like that
+ var/server_cooldown_time = 3 MINUTES
+ /// Applies bonuses to rewards etc
+ var/servo_bonus = 0
+ /// The turfs we can place a hololadder on.
+ var/turf/exit_turfs = list()
+ /// The turfs on station where we generate loot.
+ var/turf/receive_turfs = list()
+
+/obj/machinery/quantum_server/Initialize(mapload)
+ . = ..()
+
+ return INITIALIZE_HINT_LATELOAD
+
+/obj/machinery/quantum_server/LateInitialize()
+ . = ..()
+
+ if(isnull(console_ref))
+ find_console()
+
+ RegisterSignals(src, list(COMSIG_MACHINERY_BROKEN, COMSIG_MACHINERY_POWER_LOST), PROC_REF(on_broken))
+ RegisterSignal(src, COMSIG_QDELETING, PROC_REF(on_delete))
+ RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
+ RegisterSignal(src, COMSIG_BITRUNNER_SPAWN_GLITCH, PROC_REF(on_threat_created))
+
+ // This further gets sorted in the client by cost so it's random and grouped
+ available_domains = shuffle(subtypesof(/datum/lazy_template/virtual_domain))
+
+/obj/machinery/quantum_server/Destroy(force)
+ . = ..()
+
+ available_domains.Cut()
+ mutation_candidate_refs.Cut()
+ avatar_connection_refs.Cut()
+ spawned_threat_refs.Cut()
+ QDEL_NULL(exit_turfs)
+ QDEL_NULL(receive_turfs)
+ QDEL_NULL(generated_domain)
+ QDEL_NULL(generated_safehouse)
+
+/obj/machinery/quantum_server/update_appearance(updates)
+ if(isnull(generated_domain) || !is_operational)
+ set_light(0)
+ return ..()
+
+ set_light_color(is_ready ? LIGHT_COLOR_BABY_BLUE : LIGHT_COLOR_FIRE)
+ set_light(2, 1.5)
+
+ return ..()
+
+/obj/machinery/quantum_server/update_icon_state()
+ if(isnull(generated_domain) || !is_operational)
+ icon_state = base_icon_state
+ return ..()
+
+ icon_state = "[base_icon_state]_[is_ready ? "on" : "off"]"
+ return ..()
+
+/obj/machinery/quantum_server/crowbar_act(mob/living/user, obj/item/crowbar)
+ . = ..()
+
+ if(!is_ready)
+ balloon_alert(user, "it's scalding hot!")
+ return TRUE
+ if(length(avatar_connection_refs))
+ balloon_alert(user, "all clients must disconnect!")
+ return TRUE
+ if(default_deconstruction_crowbar(crowbar))
+ return TRUE
+ return FALSE
+
+/obj/machinery/quantum_server/screwdriver_act(mob/living/user, obj/item/screwdriver)
+ . = ..()
+
+ if(!is_ready)
+ balloon_alert(user, "it's scalding hot!")
+ return TRUE
+ if(default_deconstruction_screwdriver(user, "[base_icon_state]_panel", icon_state, screwdriver))
+ return TRUE
+ return FALSE
+
+/obj/machinery/quantum_server/RefreshParts()
+ . = ..()
+
+ var/capacitor_rating = 1.15
+ var/datum/stock_part/capacitor/cap = locate() in component_parts
+ capacitor_rating -= cap.tier * 0.15
+
+ capacitor_coefficient = capacitor_rating
+
+ var/datum/stock_part/scanning_module/scanner = locate() in component_parts
+ if(scanner)
+ scanner_tier = scanner.tier
+
+ var/servo_rating = 0
+ for(var/datum/stock_part/servo/servo in component_parts)
+ servo_rating += servo.tier * 0.1
+
+ servo_bonus = servo_rating
+
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_SERVER_UPGRADED, scanner_tier)
diff --git a/code/modules/bitrunning/server/signal_handlers.dm b/code/modules/bitrunning/server/signal_handlers.dm
new file mode 100644
index 00000000000..b6a79c7c3bf
--- /dev/null
+++ b/code/modules/bitrunning/server/signal_handlers.dm
@@ -0,0 +1,105 @@
+/// If broken via signal, disconnects all users
+/obj/machinery/quantum_server/proc/on_broken(datum/source)
+ SIGNAL_HANDLER
+
+ if(isnull(generated_domain))
+ return
+
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR)
+
+/// Whenever a corpse spawner makes a new corpse, add it to the list of potential mutations
+/obj/machinery/quantum_server/proc/on_corpse_spawned(datum/source, mob/living/corpse)
+ SIGNAL_HANDLER
+
+ mutation_candidate_refs.Add(WEAKREF(corpse))
+
+/// Being qdeleted - make sure the circuit and connected mobs go with it
+/obj/machinery/quantum_server/proc/on_delete(datum/source)
+ SIGNAL_HANDLER
+
+ if(generated_domain)
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR)
+ scrub_vdom()
+
+ if(is_ready)
+ return
+ // in case they're trying to cheese cooldown
+ var/obj/item/circuitboard/machine/quantum_server/circuit = locate(/obj/item/circuitboard/machine/quantum_server) in contents
+ if(circuit)
+ qdel(circuit)
+
+/// Handles examining the server. Shows cooldown time and efficiency.
+/obj/machinery/quantum_server/proc/on_examine(datum/source, mob/examiner, list/examine_text)
+ SIGNAL_HANDLER
+
+ if(capacitor_coefficient < 1)
+ examine_text += span_infoplain("Its coolant capacity reduces cooldown time by [(1 - capacitor_coefficient) * 100]%.")
+
+ if(servo_bonus > 0.2)
+ examine_text += span_infoplain("Its manipulation potential is increasing rewards by [servo_bonus]x.")
+ examine_text += span_infoplain("Injury from unsafe ejection reduced [servo_bonus * 100]%.")
+
+ if(!is_ready)
+ examine_text += span_notice("It is currently cooling down. Give it a few moments.")
+ return
+
+/// Whenever something enters the send tiles, check if it's a loot crate. If so, alert players.
+/obj/machinery/quantum_server/proc/on_goal_turf_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
+ SIGNAL_HANDLER
+
+ if(!istype(arrived, /obj/structure/closet/crate/secure/bitrunning/encrypted))
+ return
+
+ var/obj/structure/closet/crate/secure/bitrunning/encrypted/loot_crate = arrived
+ if(!istype(loot_crate))
+ return
+
+ for(var/mob/person in loot_crate.contents)
+ if(isnull(person.mind))
+ person.forceMove(get_turf(loot_crate))
+
+ var/datum/component/avatar_connection/connection = person.GetComponent(/datum/component/avatar_connection)
+ connection?.full_avatar_disconnect()
+
+ spark_at_location(loot_crate)
+ qdel(loot_crate)
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_DOMAIN_COMPLETE, arrived, generated_domain.reward_points)
+ generate_loot()
+
+/// Handles examining the server. Shows cooldown time and efficiency.
+/obj/machinery/quantum_server/proc/on_goal_turf_examined(datum/source, mob/examiner, list/examine_text)
+ SIGNAL_HANDLER
+
+ examine_text += span_info("Beneath your gaze, the floor pulses subtly with streams of encoded data.")
+ examine_text += span_info("It seems to be part of the location designated for retrieving encrypted payloads.")
+
+/// Scans over the inbound created_atoms from lazy templates
+/obj/machinery/quantum_server/proc/on_template_loaded(datum/lazy_template/source, list/created_atoms)
+ SIGNAL_HANDLER
+
+ for(var/thing in created_atoms)
+ if(isliving(thing)) // so we can mutate them
+ var/mob/living/creature = thing
+
+ if(creature.can_be_cybercop)
+ mutation_candidate_refs.Add(WEAKREF(creature))
+ continue
+
+ if(istype(thing, /obj/effect/mob_spawn/ghost_role)) // so we get threat alerts
+ RegisterSignal(thing, COMSIG_GHOSTROLE_SPAWNED, PROC_REF(on_threat_created))
+ continue
+
+ if(istype(thing, /obj/effect/mob_spawn/corpse)) // corpses are valid targets too
+ var/obj/effect/mob_spawn/corpse/spawner = thing
+
+ mutation_candidate_refs.Add(spawner.spawned_mob_ref)
+
+ UnregisterSignal(source, COMSIG_LAZY_TEMPLATE_LOADED)
+
+/// Handles when cybercops are summoned into the area or ghosts click a ghost role spawner
+/obj/machinery/quantum_server/proc/on_threat_created(datum/source, mob/living/threat)
+ SIGNAL_HANDLER
+
+ domain_threats += 1
+ spawned_threat_refs.Add(WEAKREF(threat))
+ SEND_SIGNAL(src, COMSIG_BITRUNNER_THREAT_CREATED) // notify players
diff --git a/code/modules/bitrunning/server/util.dm b/code/modules/bitrunning/server/util.dm
new file mode 100644
index 00000000000..298679bde5b
--- /dev/null
+++ b/code/modules/bitrunning/server/util.dm
@@ -0,0 +1,141 @@
+#define REDACTED "???"
+#define MAX_DISTANCE 4 // How far crates can spawn from the server
+
+/// Resets the cooldown state and updates icons
+/obj/machinery/quantum_server/proc/cool_off()
+ is_ready = TRUE
+ update_appearance()
+
+/// Attempts to connect to a quantum console
+/obj/machinery/quantum_server/proc/find_console()
+ var/obj/machinery/computer/quantum_console/console = console_ref?.resolve()
+ if(console)
+ return console
+
+ for(var/direction in GLOB.cardinals)
+ var/obj/machinery/computer/quantum_console/nearby_console = locate(/obj/machinery/computer/quantum_console, get_step(src, direction))
+ if(nearby_console)
+ console_ref = WEAKREF(nearby_console)
+ nearby_console.server_ref = WEAKREF(src)
+ return nearby_console
+
+/// Compiles a list of available domains.
+/obj/machinery/quantum_server/proc/get_available_domains()
+ var/list/levels = list()
+
+ for(var/datum/lazy_template/virtual_domain/domain as anything in available_domains)
+ if(initial(domain.test_only))
+ continue
+ var/can_view = initial(domain.difficulty) < scanner_tier && initial(domain.cost) <= points + 5
+ var/can_view_reward = initial(domain.difficulty) < (scanner_tier + 1) && initial(domain.cost) <= points + 3
+
+ levels += list(list(
+ "cost" = initial(domain.cost),
+ "desc" = can_view ? initial(domain.desc) : "Limited scanning capabilities. Cannot infer domain details.",
+ "difficulty" = initial(domain.difficulty),
+ "id" = initial(domain.key),
+ "name" = can_view ? initial(domain.name) : REDACTED,
+ "reward" = can_view_reward ? initial(domain.reward_points) : REDACTED,
+ ))
+
+ return levels
+
+/// If there are hosted minds, attempts to get a list of their current virtual bodies w/ vitals
+/obj/machinery/quantum_server/proc/get_avatar_data()
+ var/list/hosted_avatars = list()
+
+ for(var/datum/weakref/avatar_ref in avatar_connection_refs)
+ var/datum/component/avatar_connection/connection = avatar_ref.resolve()
+ if(isnull(connection))
+ avatar_connection_refs.Remove(connection)
+ continue
+
+ var/mob/living/creature = connection.parent
+ var/mob/living/pilot = connection.old_body_ref?.resolve()
+
+ hosted_avatars += list(list(
+ "health" = creature.health,
+ "name" = creature.name,
+ "pilot" = pilot,
+ "brute" = creature.get_damage_amount(BRUTE),
+ "burn" = creature.get_damage_amount(BURN),
+ "tox" = creature.get_damage_amount(TOX),
+ "oxy" = creature.get_damage_amount(OXY),
+ ))
+
+ return hosted_avatars
+
+/// Gets a random available domain given the current points. Weighted towards higher cost domains.
+/obj/machinery/quantum_server/proc/get_random_domain_id()
+ if(points < 1)
+ return
+
+ var/list/random_domains = list()
+ var/total_cost = 0
+
+ for(var/datum/lazy_template/virtual_domain/available as anything in subtypesof(/datum/lazy_template/virtual_domain))
+ var/init_cost = initial(available.cost)
+ if(!initial(available.test_only) && init_cost > 0 && init_cost < 4 && init_cost <= points)
+ random_domains += list(list(
+ cost = init_cost,
+ id = initial(available.key),
+ ))
+
+ var/random_value = rand(0, total_cost)
+ var/accumulated_cost = 0
+
+ for(var/available as anything in random_domains)
+ accumulated_cost += available["cost"]
+ if(accumulated_cost >= random_value)
+ domain_randomized = TRUE
+ return available["id"]
+
+/// Gets all mobs originally generated by the loaded domain and returns a list that are capable of being antagged
+/obj/machinery/quantum_server/proc/get_valid_domain_targets()
+ // A: No one is playing
+ // B: The domain is not loaded
+ // C: The domain is shutting down
+ // D: There are no mobs
+ if(!length(avatar_connection_refs) || isnull(generated_domain) || !is_ready || !is_operational || !length(mutation_candidate_refs))
+ return list()
+
+ for(var/datum/weakref/creature_ref as anything in mutation_candidate_refs)
+ var/mob/living/creature = creature_ref.resolve()
+ if(isnull(creature) || creature.mind)
+ mutation_candidate_refs.Remove(creature_ref)
+
+ return shuffle(mutation_candidate_refs)
+
+/// Locates any turfs with crate out landmarks
+/obj/machinery/quantum_server/proc/locate_receive_turfs()
+ for(var/obj/effect/landmark/bitrunning/station_reward_spawn/spawner in GLOB.landmarks_list)
+ if(IN_GIVEN_RANGE(src, spawner, MAX_DISTANCE))
+ receive_turfs += get_turf(spawner)
+ qdel(spawner)
+
+ return length(receive_turfs) > 0
+
+/// Finds any mobs with minds in the zones and gives them the bad news
+/obj/machinery/quantum_server/proc/notify_spawned_threats()
+ for(var/datum/weakref/baddie_ref as anything in spawned_threat_refs)
+ var/mob/living/baddie = baddie_ref.resolve()
+ if(isnull(baddie) || baddie.stat >= UNCONSCIOUS || isnull(baddie.mind))
+ continue
+
+ baddie.throw_alert(
+ ALERT_BITRUNNER_RESET,
+ /atom/movable/screen/alert/bitrunning/qserver_threat_deletion,
+ new_master = src,
+ )
+
+ to_chat(baddie, span_userdanger("You have been flagged for deletion! Thank you for your service."))
+
+/// Do some magic teleport sparks
+/obj/machinery/quantum_server/proc/spark_at_location(obj/crate)
+ playsound(crate, 'sound/magic/blink.ogg', 50, TRUE)
+ var/datum/effect_system/spark_spread/quantum/sparks = new()
+ sparks.set_up(5, 1, get_turf(crate))
+ sparks.start()
+
+#undef REDACTED
+#undef MAX_DISTANCE
diff --git a/code/modules/bitrunning/turfs.dm b/code/modules/bitrunning/turfs.dm
new file mode 100644
index 00000000000..4c35153311e
--- /dev/null
+++ b/code/modules/bitrunning/turfs.dm
@@ -0,0 +1,13 @@
+/turf/open/floor/bitrunning_transport
+ name = "circuit floor"
+ desc = "Looks complex. You can see the circuits running through the floor."
+ icon_state = "bitrunning"
+
+/turf/closed/indestructible/binary
+ name = "tear in the fabric of reality"
+ icon = 'icons/turf/floors.dmi'
+ icon_state = "binary"
+
+/obj/effect/baseturf_helper/virtual_domain
+ name = "virtual domain baseturf editor"
+ baseturf = /turf/open/indestructible/binary
diff --git a/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm b/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm
new file mode 100644
index 00000000000..3b846c85887
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm
@@ -0,0 +1,18 @@
+/datum/lazy_template/virtual_domain/ash_drake
+ name = "Ashen Inferno"
+ cost = BITRUNNER_COST_MEDIUM
+ desc = "Home of the ash drake, a powerful dragon that scours the surface of Lavaland."
+ difficulty = BITRUNNER_DIFFICULTY_MEDIUM
+ forced_outfit = /datum/outfit/job/miner
+ key = "ash_drake"
+ map_name = "ash_drake"
+ reward_points = BITRUNNER_REWARD_MEDIUM
+ safehouse_path = /datum/map_template/safehouse/lavaland_boss
+
+/mob/living/simple_animal/hostile/megafauna/dragon/virtual_domain
+ can_be_cybercop = FALSE
+ crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ health = 1400
+ loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ maxHealth = 1400
+ true_spawn = FALSE
diff --git a/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm b/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm
new file mode 100644
index 00000000000..871c2cb1338
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm
@@ -0,0 +1,22 @@
+/datum/lazy_template/virtual_domain/beach_bar
+ name = "Beach Bar"
+ desc = "A cheerful seaside haven where friendly skeletons serve up drinks. Say, how'd you guys get so dead?"
+ extra_loot = list(/obj/item/toy/beach_ball = 1)
+ help_text = "This place is running on a skeleton crew, and they don't seem to be too keen to share details. \
+ Maybe a few drinks of liquid charm will get the spirits up. As the saying goes, if you can't beat 'em, join 'em."
+ key = "beach_bar"
+ map_name = "beach_bar"
+ safehouse_path = /datum/map_template/safehouse/mine
+
+/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain
+ name = "pina colada"
+ desc = "Whose drink is this? Not yours, that's for sure. Well, it's not like they're going to miss it."
+ list_reagents = list(/datum/reagent/consumable/ethanol/pina_colada = 30)
+
+/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain/Initialize(mapload, vol)
+ . = ..()
+
+ AddComponent(/datum/component/bitrunning_points, \
+ signal_type = COMSIG_GLASS_DRANK, \
+ points_per_signal = 0.5, \
+ )
diff --git a/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm b/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm
new file mode 100644
index 00000000000..dcec15fe5c0
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm
@@ -0,0 +1,18 @@
+/datum/lazy_template/virtual_domain/blood_drunk_miner
+ name = "Sanguine Excavation"
+ cost = BITRUNNER_COST_MEDIUM
+ desc = "Few escape the surface of Lavaland without a few scars. Some remain, maddened by the hunt."
+ difficulty = BITRUNNER_DIFFICULTY_MEDIUM
+ forced_outfit = /datum/outfit/job/miner
+ key = "blood_drunk_miner"
+ map_name = "blood_drunk_miner"
+ reward_points = BITRUNNER_REWARD_MEDIUM
+ safehouse_path = /datum/map_template/safehouse/lavaland_boss
+
+/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual_domain
+ can_be_cybercop = FALSE
+ crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ health = 1500
+ loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ maxHealth = 1500
+ true_spawn = FALSE
diff --git a/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm b/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm
new file mode 100644
index 00000000000..fb2b8f74619
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm
@@ -0,0 +1,19 @@
+/datum/lazy_template/virtual_domain/bubblegum
+ name = "Blood-Soaked Lair"
+ cost = BITRUNNER_COST_HIGH
+ desc = "King of the slaughter demons. Bubblegum is a massive, hulking beast with a penchant for violence."
+ difficulty = BITRUNNER_DIFFICULTY_HIGH
+ extra_loot = list(/obj/item/toy/plush/bubbleplush = 1)
+ forced_outfit = /datum/outfit/job/miner
+ key = "bubblegum"
+ map_name = "bubblegum"
+ reward_points = BITRUNNER_REWARD_HIGH
+ safehouse_path = /datum/map_template/safehouse/lavaland_boss
+
+/mob/living/simple_animal/hostile/megafauna/bubblegum/virtual_domain
+ can_be_cybercop = FALSE
+ crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ health = 1100
+ loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ maxHealth = 1100
+ true_spawn = FALSE
diff --git a/code/modules/bitrunning/virtual_domain/domains/clown_planet.dm b/code/modules/bitrunning/virtual_domain/domains/clown_planet.dm
new file mode 100644
index 00000000000..92f000c9cf3
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/clown_planet.dm
@@ -0,0 +1,13 @@
+/datum/lazy_template/virtual_domain/clown_planet
+ name = "Clown Planet"
+ cost = BITRUNNER_COST_LOW
+ desc = "In the deep, dark reaches of space, there is only Honk."
+ difficulty = BITRUNNER_DIFFICULTY_LOW
+ extra_loot = list(/obj/item/bikehorn = 1)
+ forced_outfit = /datum/outfit/job/clown
+ help_text = "The trials of the Honkitude have begun. The sound of bike horns wailing in the distance. \
+ this realm- some sort of puzzle, has existed in legend as the final test of just how silly you are."
+ key = "clown_planet"
+ map_name = "clown_planet"
+ reward_points = BITRUNNER_REWARD_LOW
+ safehouse_path = /datum/map_template/safehouse/mine
diff --git a/code/modules/bitrunning/virtual_domain/domains/colossus.dm b/code/modules/bitrunning/virtual_domain/domains/colossus.dm
new file mode 100644
index 00000000000..3843311904e
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/colossus.dm
@@ -0,0 +1,18 @@
+/datum/lazy_template/virtual_domain/colossus
+ name = "Celestial Trial"
+ cost = BITRUNNER_COST_HIGH
+ desc = "A massive, ancient beast named the Colossus. Judgment comes."
+ difficulty = BITRUNNER_DIFFICULTY_HIGH
+ forced_outfit = /datum/outfit/job/miner
+ key = "colossus"
+ map_name = "colossus"
+ reward_points = BITRUNNER_REWARD_HIGH
+ safehouse_path = /datum/map_template/safehouse/lavaland_boss
+
+/mob/living/simple_animal/hostile/megafauna/colossus/virtual_domain
+ can_be_cybercop = FALSE
+ crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ health = 1200
+ maxHealth = 1200
+ true_spawn = FALSE
diff --git a/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm b/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm
new file mode 100644
index 00000000000..4deacb4f9c5
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm
@@ -0,0 +1,39 @@
+/datum/lazy_template/virtual_domain/gondola_asteroid
+ name = "Gondola Asteroid"
+ desc = "An asteroid home to a bountiful forest of gondolas. Peaceful."
+ map_name = "gondola_asteroid"
+ help_text = "What a lovely forest. There's a loot crate here in the middle of the map. \
+ Hmm... It doesn't budge. The gondolas don't seem to have any trouble moving it, though. \
+ I bet there's a way to move it myself."
+ key = "gondola_asteroid"
+ map_name = "gondola_asteroid"
+ safehouse_path = /datum/map_template/safehouse/shuttle_space
+
+/// Very pushy gondolas, great for moving loot crates.
+/obj/structure/closet/crate/secure/bitrunning/encrypted/gondola
+ move_resist = MOVE_FORCE_STRONG
+
+/mob/living/simple_animal/pet/gondola/virtual_domain
+ health = 50
+ loot = list(/obj/effect/decal/cleanable/blood/gibs, /obj/item/stack/sheet/animalhide/gondola = 1, /obj/item/food/meat/slab/gondola/virtual_domain = 1)
+ maxHealth = 50
+ move_force = MOVE_FORCE_VERY_STRONG
+ move_resist = MOVE_FORCE_STRONG
+
+/obj/item/food/meat/slab/gondola/virtual_domain
+ food_reagents = list(
+ /datum/reagent/consumable/nutriment/protein = 4,
+ /datum/reagent/gondola_mutation_toxin/virtual_domain = 5,
+ )
+
+/datum/reagent/gondola_mutation_toxin/virtual_domain
+ name = "Advanced Tranquility"
+
+/datum/reagent/gondola_mutation_toxin/virtual_domain/expose_mob(mob/living/exposed_mob, methods = TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
+ . = ..()
+ if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+ exposed_mob.ForceContractDisease(new /datum/disease/transformation/gondola/virtual_domain(), FALSE, TRUE)
+
+/datum/disease/transformation/gondola/virtual_domain
+ stage_prob = 9
+ new_form = /mob/living/simple_animal/pet/gondola/virtual_domain
diff --git a/code/modules/bitrunning/virtual_domain/domains/hierophant.dm b/code/modules/bitrunning/virtual_domain/domains/hierophant.dm
new file mode 100644
index 00000000000..352a68fca9a
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/hierophant.dm
@@ -0,0 +1,18 @@
+/datum/lazy_template/virtual_domain/hierophant
+ name = "Zealot Arena"
+ cost = BITRUNNER_COST_HIGH
+ desc = "Dance, puppets, dance!"
+ difficulty = BITRUNNER_DIFFICULTY_HIGH
+ forced_outfit = /datum/outfit/job/miner
+ key = "hierophant"
+ map_name = "hierophant"
+ reward_points = BITRUNNER_REWARD_HIGH
+ safehouse_path = /datum/map_template/safehouse/lavaland_boss
+
+/mob/living/simple_animal/hostile/megafauna/hierophant/virtual_domain
+ can_be_cybercop = FALSE
+ crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ health = 1600
+ loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ maxHealth = 1600
+ true_spawn = FALSE
diff --git a/code/modules/bitrunning/virtual_domain/domains/legion.dm b/code/modules/bitrunning/virtual_domain/domains/legion.dm
new file mode 100644
index 00000000000..07fa6ef5894
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/legion.dm
@@ -0,0 +1,20 @@
+/datum/lazy_template/virtual_domain/legion
+ name = "Chamber of Echoes"
+ cost = BITRUNNER_COST_MEDIUM
+ desc = "A chilling realm that houses Legion's necropolis. Those who succumb to it are forever damned."
+ difficulty = BITRUNNER_DIFFICULTY_MEDIUM
+ forced_outfit = /datum/outfit/job/miner
+ key = "legion"
+ map_name = "legion"
+ reward_points = BITRUNNER_REWARD_MEDIUM
+ safehouse_path = /datum/map_template/safehouse/lavaland_boss
+
+/mob/living/simple_animal/hostile/megafauna/legion/virtual_domain
+ can_be_cybercop = FALSE
+ crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ health = 1100
+ loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ maxHealth = 1100
+ true_spawn = FALSE
+
+// You may be thinking, well, what about those mini-legions? They're not part of the created_atoms list
diff --git a/code/modules/bitrunning/virtual_domain/domains/pipedream.dm b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm
new file mode 100644
index 00000000000..fd54ef6ca48
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm
@@ -0,0 +1,101 @@
+/datum/lazy_template/virtual_domain/pipedream
+ name = "Disposal Pipe Factory"
+ cost = BITRUNNER_COST_LOW
+ desc = "An abandoned and infested factory manufacturing disposal pipes."
+ difficulty = BITRUNNER_DIFFICULTY_MEDIUM
+ extra_loot = list(/obj/item/stack/pipe_cleaner_coil/random/five = 1)
+ help_text = "Not long ago, this place was thriving with activity. The workers \
+ seemed to have left in a hurry, and now productivity is in the bin. Something \
+ must have trashed the place, but what?"
+ key = "pipedream"
+ map_name = "pipedream"
+ reward_points = BITRUNNER_REWARD_LOW
+ safehouse_path = /datum/map_template/safehouse/shuttle
+
+// ID Trims
+/datum/id_trim/factory
+ assignment = "Factory Worker"
+ trim_state = "trim_cargotechnician"
+ department_color = COLOR_CARGO_BROWN
+ subdepartment_color = COLOR_CARGO_BROWN
+ sechud_icon_state = SECHUD_CARGO_TECHNICIAN
+ access = list(
+ ACCESS_AWAY_SUPPLY
+ )
+
+/datum/id_trim/factory/qm
+ assignment = "Factory Quartermaster"
+ trim_state = "trim_quartermaster"
+ department_color = COLOR_COMMAND_BLUE
+ subdepartment_color = COLOR_CARGO_BROWN
+ department_state = "departmenthead"
+ sechud_icon_state = SECHUD_QUARTERMASTER
+ access = list(
+ ACCESS_AWAY_SUPPLY,
+ ACCESS_AWAY_COMMAND
+ )
+
+// ID Cards
+/obj/item/card/id/advanced/factory
+ name = "factory worker ID"
+ trim = /datum/id_trim/factory
+
+/obj/item/card/id/advanced/factory/qm
+ name = "factory quartermaster ID"
+ trim = /datum/id_trim/factory/qm
+
+//Outfits
+/datum/outfit/factory
+ name = "Factory Worker"
+
+ id_trim = /datum/id_trim/factory
+ id = /obj/item/card/id/advanced/
+ uniform = /obj/item/clothing/under/rank/cargo/tech
+ suit = /obj/item/clothing/suit/hazardvest
+ belt = /obj/item/radio
+ gloves = /obj/item/clothing/gloves/color/black
+ head = /obj/item/clothing/head/soft/yellow
+ shoes = /obj/item/clothing/shoes/workboots
+ l_pocket = /obj/item/flashlight/seclite
+
+/datum/outfit/factory/guard
+ name = "Factory Guard"
+
+ uniform = /obj/item/clothing/under/rank/security/officer/grey
+ suit = /obj/item/clothing/suit/armor/vest/alt
+ belt = /obj/item/radio
+ gloves = /obj/item/clothing/gloves/color/black
+ head = /obj/item/clothing/head/soft/sec
+ shoes = /obj/item/clothing/shoes/jackboots/sec
+ l_pocket = /obj/item/restraints/handcuffs
+ r_pocket = /obj/item/assembly/flash/handheld
+
+/datum/outfit/factory/qm
+ name = "Factory Quatermaster"
+
+ id_trim = /datum/id_trim/factory/qm
+ id = /obj/item/card/id/advanced/silver
+ uniform = /obj/item/clothing/under/rank/cargo/qm
+ belt = /obj/item/radio
+ gloves = /obj/item/clothing/gloves/color/black
+ head = /obj/item/clothing/head/soft/yellow
+ shoes = /obj/item/clothing/shoes/jackboots/sec
+ l_pocket = /obj/item/melee/baton/telescopic
+ r_pocket = /obj/item/stamp/head/qm
+
+// Corpses
+/obj/effect/mob_spawn/corpse/human/factory
+ name = "Factory Worker"
+ outfit = /datum/outfit/factory
+ icon_state = "corpsecargotech"
+
+/obj/effect/mob_spawn/corpse/human/factory/guard
+ name = "Factory Guard"
+ outfit = /datum/outfit/factory/guard
+ icon_state = "corpsecargotech"
+
+/obj/effect/mob_spawn/corpse/human/factory/qm
+ name = "Factory Quartermaster"
+ outfit = /datum/outfit/factory/qm
+ icon_state = "corpsecargotech"
+
diff --git a/code/modules/bitrunning/virtual_domain/domains/pirates.dm b/code/modules/bitrunning/virtual_domain/domains/pirates.dm
new file mode 100644
index 00000000000..52d86a71211
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/pirates.dm
@@ -0,0 +1,10 @@
+/datum/lazy_template/virtual_domain/pirates
+ name = "Corsair Cove"
+ cost = BITRUNNER_COST_MEDIUM
+ desc = "Battle your way to the hidden treasure, seize the booty, and make a swift escape before the pirates turn the tide."
+ difficulty = BITRUNNER_DIFFICULTY_MEDIUM
+ help_text = "Put on the provided outfits to blend in, then battle your way through the hostile pirates. \
+ Grab the treasure and get out before you're overwhelmed!"
+ key = "pirates"
+ map_name = "pirates"
+ reward_points = BITRUNNER_REWARD_MEDIUM
diff --git a/code/modules/bitrunning/virtual_domain/domains/stairs_and_cliffs.dm b/code/modules/bitrunning/virtual_domain/domains/stairs_and_cliffs.dm
new file mode 100644
index 00000000000..2d9bcca3645
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/stairs_and_cliffs.dm
@@ -0,0 +1,29 @@
+/datum/lazy_template/virtual_domain/stairs_and_cliffs
+ name = "Glacier Grind"
+ cost = BITRUNNER_COST_LOW
+ desc = "A treacherous climb few calves can survive. Great cardio though."
+ help_text = "Ever heard of 'Snakes and Ladders'? It's like that, but with \
+ instead of ladders its stairs and instead of snakes its a steep drop down a \
+ cliff into rough rocks or liquid plasma."
+ extra_loot = list(/obj/item/clothing/suit/costume/snowman = 2)
+ difficulty = BITRUNNER_DIFFICULTY_LOW
+ forced_outfit = /datum/outfit/job/virtual_domain_iceclimber
+ key = "stairs_and_cliffs"
+ map_name = "stairs_and_cliffs"
+ reward_points = BITRUNNER_REWARD_MEDIUM
+ safehouse_path = /datum/map_template/safehouse/ice
+
+/turf/open/cliff/snowrock/virtual_domain
+ name = "icy cliff"
+ initial_gas_mix = "o2=22;n2=82;TEMP=180"
+
+/turf/open/lava/plasma/virtual_domain
+ name = "plasma lake"
+ initial_gas_mix = "o2=22;n2=82;TEMP=180"
+
+/datum/outfit/job/virtual_domain_iceclimber
+ name = "Ice Climber"
+
+ uniform = /obj/item/clothing/under/color/grey
+ backpack = /obj/item/storage/backpack/duffelbag
+ shoes = /obj/item/clothing/shoes/winterboots
diff --git a/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm b/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm
new file mode 100644
index 00000000000..bae0da6874d
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm
@@ -0,0 +1,13 @@
+/datum/lazy_template/virtual_domain/syndicate_assault
+ name = "Syndicate Assault"
+ cost = BITRUNNER_COST_MEDIUM
+ desc = "Board the enemy ship and recover the stolen cargo."
+ difficulty = BITRUNNER_DIFFICULTY_MEDIUM
+ extra_loot = list(/obj/item/toy/plush/nukeplushie = 1)
+ help_text = "A group of Syndicate operatives have stolen valuable cargo from the station. \
+ They have boarded their ship and are attempting to escape. Infiltrate their ship and recover \
+ the crate. Be careful, they are extremely armed."
+ key = "syndicate_assault"
+ map_name = "syndicate_assault"
+ reward_points = BITRUNNER_REWARD_MEDIUM
+ safehouse_path = /datum/map_template/safehouse/shuttle
diff --git a/code/modules/bitrunning/virtual_domain/domains/test_only.dm b/code/modules/bitrunning/virtual_domain/domains/test_only.dm
new file mode 100644
index 00000000000..6e5e852fb5c
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/test_only.dm
@@ -0,0 +1,11 @@
+/// Used for unit tests only. Skipped in UI.
+/datum/lazy_template/virtual_domain/test_only
+ name = "Test Only"
+ key = "test_only"
+ map_name = "test_only"
+ test_only = TRUE
+ safehouse_path = /datum/map_template/safehouse/test_only
+
+/datum/lazy_template/virtual_domain/test_only/expensive
+ key = "test_only_expensive"
+ cost = 3
diff --git a/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm b/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm
new file mode 100644
index 00000000000..45d4abec983
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm
@@ -0,0 +1,10 @@
+/datum/lazy_template/virtual_domain/vaporwave
+ name = "Cosmic Vestige"
+ cost = BITRUNNER_COST_EXTREME
+ desc = "Suspended in the silent void of space, the Neon Relic is a haunting echo of a retro-futuristic era."
+ difficulty = BITRUNNER_DIFFICULTY_NONE
+ extra_loot = list(/obj/item/stack/spacecash/c500 = 3)
+ key = "vaporwave"
+ map_name = "vaporwave"
+ reward_points = BITRUNNER_REWARD_EXTREME
+ safehouse_path = /datum/map_template/safehouse/shuttle_space
diff --git a/code/modules/bitrunning/virtual_domain/domains/wendigo.dm b/code/modules/bitrunning/virtual_domain/domains/wendigo.dm
new file mode 100644
index 00000000000..f9a1c12fa86
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/wendigo.dm
@@ -0,0 +1,19 @@
+/datum/lazy_template/virtual_domain/wendigo
+ name = "Glacial Devourer"
+ cost = BITRUNNER_COST_HIGH
+ desc = "Legends speak of the ravenous Wendigo hidden deep within the caves of Icemoon."
+ difficulty = BITRUNNER_DIFFICULTY_HIGH
+ forced_outfit = /datum/outfit/job/miner
+ key = "wendigo"
+ map_name = "wendigo"
+ reward_points = BITRUNNER_REWARD_HIGH
+ safehouse_path = /datum/map_template/safehouse/lavaland_boss
+
+/mob/living/simple_animal/hostile/megafauna/wendigo/virtual_domain
+ can_be_cybercop = FALSE
+ crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ guaranteed_butcher_results = list(/obj/item/wendigo_skull = 1)
+ health = 1500
+ loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted)
+ maxHealth = 1500
+ true_spawn = FALSE
diff --git a/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm b/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm
new file mode 100644
index 00000000000..2bd4105e13c
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm
@@ -0,0 +1,12 @@
+/datum/lazy_template/virtual_domain/xeno_nest
+ name = "Xeno Infestation"
+ cost = BITRUNNER_COST_LOW
+ desc = "Our ship scanners have detected lifeforms of unknown origin. Friendly attempts to contact them have failed."
+ difficulty = BITRUNNER_DIFFICULTY_LOW
+ extra_loot = list(/obj/item/toy/plush/rouny = 1)
+ help_text = "You are on a barren planet filled with hostile creatures. There is a crate here, not hidden, \
+ simply protected. Expect resistance."
+ key = "xeno_nest"
+ map_name = "xeno_nest"
+ reward_points = BITRUNNER_REWARD_LOW
+ safehouse_path = /datum/map_template/safehouse/shuttle
diff --git a/code/modules/bitrunning/virtual_domain/safehouses.dm b/code/modules/bitrunning/virtual_domain/safehouses.dm
new file mode 100644
index 00000000000..bb42f690ac7
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/safehouses.dm
@@ -0,0 +1,53 @@
+/**
+ * # Safe Houses
+ * The starting point for virtual domains.
+ * Create your own: Read the readme file in the '_maps/safehouses' folder.
+ */
+/datum/map_template/safehouse
+ name = "virtual domain: safehouse"
+
+ returns_created_atoms = TRUE
+ /// The map file to load
+ var/filename = "den.dmm"
+
+/datum/map_template/safehouse/New()
+ mappath = "_maps/safehouses/" + filename
+ ..(path = mappath)
+
+/datum/map_template/safehouse/test_only
+ filename = "test_only_safehouse.dmm"
+
+
+/// The default safehouse map template.
+/datum/map_template/safehouse/wood
+ filename = "wood.dmm"
+
+/datum/map_template/safehouse/den
+ filename = "den.dmm"
+
+/datum/map_template/safehouse/dig
+ filename = "dig.dmm"
+
+/datum/map_template/safehouse/shuttle
+ filename = "shuttle.dmm"
+
+// Has space tiles on the four corners.
+/datum/map_template/safehouse/shuttle_space
+ filename = "shuttle_space.dmm"
+
+/datum/map_template/safehouse/mine
+ filename = "mine.dmm"
+
+// Comes preloaded with mining combat gear.
+/datum/map_template/safehouse/lavaland_boss
+ filename = "lavaland_boss.dmm"
+
+// Chill out
+/datum/map_template/safehouse/ice
+ filename = "ice.dmm"
+
+/**
+ * Your safehouse here
+ * /datum/map_template/safehouse/your_type
+ * filename = "your_map.dmm"
+ */
diff --git a/code/modules/bitrunning/virtual_domain/virtual_domain.dm b/code/modules/bitrunning/virtual_domain/virtual_domain.dm
new file mode 100644
index 00000000000..c2bd193f4e9
--- /dev/null
+++ b/code/modules/bitrunning/virtual_domain/virtual_domain.dm
@@ -0,0 +1,34 @@
+/**
+ * # Virtual Domains
+ * This loads a base level, then users can select the preset upon it.
+ * Create your own: Read the readme file in the '_maps/virtual_domains' folder.
+ */
+/datum/lazy_template/virtual_domain
+ map_dir = "_maps/virtual_domains"
+ map_name = "None"
+ key = "Virtual Domain"
+
+ /// Cost of this map to load
+ var/cost = BITRUNNER_COST_NONE
+ /// The description of the map
+ var/desc = "A map."
+ /// The 'difficulty' of the map, which affects the ui and ability to scan info.
+ var/difficulty = BITRUNNER_DIFFICULTY_NONE
+ /// An assoc list of typepath/amount to spawn on completion. Not weighted - the value is the amount
+ var/list/extra_loot
+ /// The map file to load
+ var/filename = "virtual_domain.dmm"
+ /// Any outfit that you wish to force on avatars. Overrides preferences
+ var/datum/outfit/forced_outfit
+ /// Information given to connected clients via ability
+ var/help_text
+ // Name to show in the UI
+ var/name = "Virtual Domain"
+ /// Points to reward for completion. Used to purchase new domains and calculate ore rewards.
+ var/reward_points = BITRUNNER_REWARD_MIN
+ /// The start time of the map. Used to calculate time taken
+ var/start_time
+ /// This map is specifically for unit tests. Shouldn't display in game
+ var/test_only = FALSE
+ /// The safehouse to load into the map
+ var/datum/map_template/safehouse/safehouse_path = /datum/map_template/safehouse/den
diff --git a/code/modules/cargo/packs/_packs.dm b/code/modules/cargo/packs/_packs.dm
index 357f32f3cb4..4d7e5066a4a 100644
--- a/code/modules/cargo/packs/_packs.dm
+++ b/code/modules/cargo/packs/_packs.dm
@@ -86,7 +86,7 @@
return FALSE
var/list/open_turfs = list()
for(var/turf/open/floor/found_turf in get_area_turfs(pick(areas), subtypes = TRUE))
- open_turfs += found_turf
+ open_turfs += found_turf
if(!length(open_turfs))
return FALSE
diff --git a/code/modules/client/preferences/middleware/antags.dm b/code/modules/client/preferences/middleware/antags.dm
index d04b9c0c0fd..e13167ba734 100644
--- a/code/modules/client/preferences/middleware/antags.dm
+++ b/code/modules/client/preferences/middleware/antags.dm
@@ -116,6 +116,7 @@
/datum/asset/spritesheet/antagonists/create_spritesheets()
// Antagonists that don't have a dynamic ruleset, but do have a preference
var/static/list/non_ruleset_antagonists = list(
+ ROLE_CYBER_POLICE = /datum/antagonist/cyber_police,
ROLE_FUGITIVE = /datum/antagonist/fugitive,
ROLE_LONE_OPERATIVE = /datum/antagonist/nukeop/lone,
ROLE_SENTIENCE = /datum/antagonist/sentient_creature,
diff --git a/code/modules/clothing/outfits/plasmaman.dm b/code/modules/clothing/outfits/plasmaman.dm
index daad81ea475..a422d2d736e 100644
--- a/code/modules/clothing/outfits/plasmaman.dm
+++ b/code/modules/clothing/outfits/plasmaman.dm
@@ -281,3 +281,10 @@
gloves = /obj/item/clothing/gloves/color/plasmaman/clown
head = /obj/item/clothing/head/helmet/space/plasmaman/clown
mask = /obj/item/clothing/mask/gas/clown_hat/plasmaman
+
+/datum/outfit/plasmaman/bitrunner
+ name = "Bitrunner Plasmaman"
+
+ uniform = /obj/item/clothing/under/plasmaman/bitrunner
+ gloves = /obj/item/clothing/gloves/color/plasmaman/black
+ head = /obj/item/clothing/head/helmet/space/plasmaman/bitrunner
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index ceb31b23a28..30e43c793aa 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -443,3 +443,8 @@
or they've murdered one of your fellow badasses and have taken it from them as a trophy. Either way, anyone wearing this deserves at least a cursory nod of respect."
icon_state = "syndie_envirohelm"
inhand_icon_state = null
+
+/obj/item/clothing/head/helmet/space/plasmaman/bitrunner
+ name = "bitrunner's plasma envirosuit helmet"
+ desc = "An envirohelmet with extended blue light filters for bitrunning plasmamen."
+ icon_state = "bitrunner_envirohelm"
diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
index 1590fa77138..a8674b03c94 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
@@ -115,6 +115,12 @@
icon_state = "clown_envirosuit"
inhand_icon_state = null
+/obj/item/clothing/under/plasmaman/bitrunner
+ name = "bitrunner envirosuit"
+ desc = "An envirosuit specially designed for plasmamen with bad posture."
+ icon_state = "bitrunner_envirosuit"
+ inhand_icon_state = null
+
/obj/item/clothing/under/plasmaman/clown/Initialize(mapload)
. = ..()
AddElement(/datum/element/swabable, CELL_LINE_TABLE_CLOWN, CELL_VIRUS_TABLE_GENERIC, rand(2,3), 0)
diff --git a/code/modules/clothing/under/jobs/cargo.dm b/code/modules/clothing/under/jobs/cargo.dm
index 4b2e74bff38..e3145fb740d 100644
--- a/code/modules/clothing/under/jobs/cargo.dm
+++ b/code/modules/clothing/under/jobs/cargo.dm
@@ -62,3 +62,9 @@
desc = "A grey uniform for operating in hazardous environments."
icon_state = "explorer"
inhand_icon_state = null
+
+/obj/item/clothing/under/rank/cargo/bitrunner
+ name = "bitrunner's jumpsuit"
+ desc = "It's a leathery jumpsuit worn by a bitrunner. Tacky, but comfortable to wear if sitting for prolonged periods of time."
+ icon_state = "bitrunner"
+ inhand_icon_state = "w_suit"
diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm
index 3be319fd233..b4703945092 100644
--- a/code/modules/economy/account.dm
+++ b/code/modules/economy/account.dm
@@ -7,6 +7,8 @@
var/account_balance = 0
///How many mining points (shaft miner credits) is held in the bank account, used for mining vendors.
var/mining_points = 0
+ /// Points for bit runner's vendor. Awarded for completing virtual domains.
+ var/bitrunning_points = 0
///Debt. If higher than 0, A portion of the credits is earned (or the whole debt, whichever is lower) will go toward paying it off.
var/account_debt = 0
///If there are things effecting how much income a player will get, it's reflected here 1 is standard for humans.
diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm
index 0213cf74c75..25d5dc02273 100644
--- a/code/modules/experisci/experiment/experiments.dm
+++ b/code/modules/experisci/experiment/experiments.dm
@@ -283,7 +283,6 @@
/obj/machinery/rnd/experimentor = 1,
/obj/machinery/medical_kiosk = 2,
/obj/machinery/piratepad/civilian = 2,
- /obj/machinery/rnd/bepis = 3
)
required_stock_part = /obj/item/stock_parts/scanning_module/adv
diff --git a/code/modules/mapping/access_helpers.dm b/code/modules/mapping/access_helpers.dm
index 16da29837fb..c208e2eea9e 100644
--- a/code/modules/mapping/access_helpers.dm
+++ b/code/modules/mapping/access_helpers.dm
@@ -386,6 +386,11 @@
access_list += list(ACCESS_CARGO, ACCESS_MAINT_TUNNELS)
return access_list
+/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den/get_access()
+ var/list/access_list = ..()
+ access_list += ACCESS_BIT_DEN
+ return access_list
+
// -------------------- Syndicate access helpers
/obj/effect/mapping_helpers/airlock/access/any/syndicate
icon_state = "access_helper_syn"
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 766a7ef89a8..e9d306875c9 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -225,3 +225,6 @@
/// What our current gravity state is. Used to avoid duplicate animates and such
var/gravity_state = null
+
+ /// Whether this mob can be mutated into a cybercop via quantum server get_valid_domain_targets(). Specifically dodges megafauna
+ var/can_be_cybercop = TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
index e9cf04b9c21..26f3690fef1 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
@@ -267,6 +267,10 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/wendigo/death(gibbed, list/force_grant)
if(health > 0)
return
+
+ if(!true_spawn)
+ return ..()
+
var/obj/effect/portal/permanent/one_way/exit = new /obj/effect/portal/permanent/one_way(starting)
exit.id = "wendigo arena exit"
exit.add_atom_colour(COLOR_RED_LIGHT, ADMIN_COLOUR_PRIORITY)
diff --git a/code/modules/mob_spawn/corpses/job_corpses.dm b/code/modules/mob_spawn/corpses/job_corpses.dm
index c8dd458f42d..3893f3e1ba6 100644
--- a/code/modules/mob_spawn/corpses/job_corpses.dm
+++ b/code/modules/mob_spawn/corpses/job_corpses.dm
@@ -83,4 +83,4 @@
name = JOB_ROBOTICIST
outfit = /datum/outfit/job/roboticist
icon_state = "corpseroboticist"
-
+
diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm
index 0ce9ac17a77..b282ea7d8b2 100644
--- a/code/modules/mob_spawn/mob_spawn.dm
+++ b/code/modules/mob_spawn/mob_spawn.dm
@@ -32,6 +32,8 @@
var/facial_haircolor
///sets a human's skin tone
var/skin_tone
+ /// Weakref to the mob this spawner created - just if you needed to do something with it.
+ var/datum/weakref/spawned_mob_ref
/obj/effect/mob_spawn/Initialize(mapload)
. = ..()
@@ -44,6 +46,7 @@
name_mob(spawned_mob, newname)
special(spawned_mob, mob_possessor)
equip(spawned_mob)
+ spawned_mob_ref = WEAKREF(spawned_mob)
return spawned_mob
/obj/effect/mob_spawn/proc/special(mob/living/spawned_mob)
@@ -223,6 +226,7 @@
if(isnull(created)) // If we explicitly return FALSE instead of just not returning a mob, we don't want to spam the admins
CRASH("An instance of [type] didn't return anything when creating a mob, this might be broken!")
+ SEND_SIGNAL(src, COMSIG_GHOSTROLE_SPAWNED, created)
check_uses() // Now we check if the spawner should delete itself or not
return created
diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm
index 1cc85af447d..60f92c282a8 100644
--- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm
+++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm
@@ -270,6 +270,14 @@
/datum/computer_file/program/skill_tracker,
)
+/obj/item/modular_computer/pda/bitrunner
+ name = "bit runner PDA"
+ greyscale_colors = "#D6B328#6BC906"
+ starting_programs = list(
+ /datum/computer_file/program/arcade,
+ /datum/computer_file/program/skill_tracker,
+ )
+
/**
* Service
*/
diff --git a/code/modules/research/bepis.dm b/code/modules/research/bepis.dm
deleted file mode 100644
index 2f038b27511..00000000000
--- a/code/modules/research/bepis.dm
+++ /dev/null
@@ -1,295 +0,0 @@
-//This system is designed to act as an in-between for cargo and science, and the first major money sink in the game outside of just buying things from cargo (As of 10/9/19, anyway).
-
-//economics defined values, subject to change should anything be too high or low in practice.
-
-#define MACHINE_OPERATION 100000
-#define MACHINE_OVERLOAD 500000
-#define MAJOR_THRESHOLD (6*CARGO_CRATE_VALUE)
-#define MINOR_THRESHOLD (4*CARGO_CRATE_VALUE)
-#define STANDARD_DEVIATION (2*CARGO_CRATE_VALUE)
-#define PART_CASH_OFFSET_AMOUNT (0.5*CARGO_CRATE_VALUE)
-
-/obj/machinery/rnd/bepis
- name = "\improper B.E.P.I.S. Chamber"
- desc = "A high fidelity testing device which unlocks the secrets of the known universe using the two most powerful substances available to man: excessive amounts of electricity and capital."
- icon = 'icons/obj/machines/bepis.dmi'
- icon_state = "chamber"
- base_icon_state = "chamber"
- density = TRUE
- layer = ABOVE_MOB_LAYER
- plane = GAME_PLANE_UPPER
- circuit = /obj/item/circuitboard/machine/bepis
-
- ///How much cash the UI and machine are depositing at a time.
- var/banking_amount = 100
- ///How much stored player cash exists within the machine.
- var/banked_cash = 0
- ///Payer's bank account.
- var/datum/bank_account/account
- ///Name on the payer's bank account.
- var/account_name
- ///When the BEPIS fails to hand out any reward, the ERROR cause will be a randomly picked string displayed on the UI.
- var/error_cause = null
-
- //Vars related to probability and chance of success for testing, using gaussian normal distribution.
- ///How much cash you will need to obtain a Major Tech Disk reward.
- var/major_threshold = MAJOR_THRESHOLD
- ///How much cash you will need to obtain a minor invention reward.
- var/minor_threshold = MINOR_THRESHOLD
- ///The standard deviation of the BEPIS's gaussian normal distribution.
- var/std = STANDARD_DEVIATION
-
- //Stock part variables
- ///Multiplier that lowers how much the BEPIS' power costs are. Maximum of 1, upgraded to a minimum of 0.7. See RefreshParts.
- var/power_saver = 1
- ///Variability on the money you actively spend on the BEPIS, with higher inaccuracy making the most change, good and bad to spent cash.
- var/inaccuracy_percentage = 1.5
- ///How much "cash" is added to your inserted cash efforts for free. Based on manipulator stock part level.
- var/positive_cash_offset = 0
- ///How much "cost" is removed from both the minor and major threshold costs. Based on laser stock part level.
- var/negative_cash_offset = 0
- ///List of objects that constitute your minor rewards. All rewards are unique or rare outside of the BEPIS.
- var/minor_rewards = list(
- //To add a new minor reward, add it here.
- /obj/item/stack/circuit_stack/full,
- /obj/item/pen/survival,
- /obj/item/circuitboard/machine/sleeper/party,
- /obj/item/toy/sprayoncan,
- )
-
-/obj/machinery/rnd/bepis/attackby(obj/item/O, mob/user, params)
- if(!is_operational)
- to_chat(user, span_notice("[src] can't accept money when it's not functioning."))
- return
- if(istype(O, /obj/item/holochip) || istype(O, /obj/item/stack/spacecash))
- var/deposit_value = O.get_item_credit_value()
- banked_cash += deposit_value
- qdel(O)
- say("Deposited [deposit_value] credits into storage.")
- update_appearance()
- return
- if(isidcard(O))
- var/obj/item/card/id/Card = O
- if(Card.registered_account)
- account = Card.registered_account
- account_name = Card.registered_name
- say("New account detected. Console Updated.")
- else
- say("No account detected on card. Aborting.")
- return
- return ..()
-
-/obj/machinery/rnd/bepis/screwdriver_act(mob/living/user, obj/item/tool)
- return default_deconstruction_screwdriver(user, "chamber_open", "chamber", tool)
-
-/obj/machinery/rnd/bepis/screwdriver_act_secondary(mob/living/user, obj/item/tool)
- return default_deconstruction_screwdriver(user, "chamber_open", "chamber", tool)
-
-/obj/machinery/rnd/bepis/RefreshParts()
- . = ..()
- var/C = 0
- var/M = 0
- var/L = 0
- var/S = 0
- for(var/datum/stock_part/capacitor/capacitor in component_parts)
- C += ((capacitor.tier - 1) * 0.1)
- power_saver = 1 - C
- for(var/datum/stock_part/servo/servo in component_parts)
- M += ((servo.tier - 1) * PART_CASH_OFFSET_AMOUNT)
- positive_cash_offset = M
- for(var/datum/stock_part/micro_laser/Laser in component_parts)
- L += ((Laser.tier - 1) * PART_CASH_OFFSET_AMOUNT)
- negative_cash_offset = L
- for(var/datum/stock_part/scanning_module/scanning_module in component_parts)
- S += ((scanning_module.tier - 1) * 0.25)
- inaccuracy_percentage = (1.5 - S)
-
-/obj/machinery/rnd/bepis/update_icon_state()
- if(panel_open == TRUE)
- icon_state = "[base_icon_state]_open"
- return ..()
- if((use_power == ACTIVE_POWER_USE) && (banked_cash > 0) && (is_operational))
- icon_state = "[base_icon_state]_active_loaded"
- return ..()
- if (((use_power == IDLE_POWER_USE) && (banked_cash > 0)) || (banked_cash > 0) && (!is_operational))
- icon_state = "[base_icon_state]_loaded"
- return ..()
- if(use_power == ACTIVE_POWER_USE && is_operational)
- icon_state = "[base_icon_state]_active"
- return ..()
- if(((use_power == IDLE_POWER_USE) && (banked_cash == 0)) || (!is_operational))
- icon_state = base_icon_state
- return ..()
- return ..()
-
-/obj/machinery/rnd/bepis/ui_interact(mob/user, datum/tgui/ui)
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui)
- ui = new(user, src, "Bepis", name)
- ui.open()
- RefreshParts()
- if(isliving(user))
- var/mob/living/customer = user
- account = customer.get_bank_account()
-
-/obj/machinery/rnd/bepis/ui_data(mob/user)
- var/list/data = list()
- var/powered = FALSE
- var/zvalue = ((banking_amount + banked_cash) - (major_threshold - positive_cash_offset - negative_cash_offset))/(std)
- var/std_success = 0
- var/prob_success = 0
- //Admittedly this is messy, but not nearly as messy as the alternative, which is jury-rigging an entire Z-table into the code, or making an adaptive z-table.
- var/z = abs(zvalue)
- if(z > 0 && z <= 0.5)
- std_success = 19.1
- else if(z > 0.5 && z <= 1.0)
- std_success = 34.1
- else if(z > 1.0 && z <= 1.5)
- std_success = 43.3
- else if(z > 1.5 && z <= 2.0)
- std_success = 47.7
- else if(z > 2.0 && z <= 2.5)
- std_success = 49.4
- else
- std_success = 50
- if(zvalue > 0)
- prob_success = 50 + std_success
- else if(zvalue == 0)
- prob_success = 50
- else
- prob_success = 50 - std_success
-
- if(use_power == ACTIVE_POWER_USE)
- powered = TRUE
- data["account_owner"] = account_name
- data["amount"] = banking_amount
- data["stored_cash"] = account?.account_balance
- data["mean_value"] = (major_threshold - positive_cash_offset - negative_cash_offset)
- data["error_name"] = error_cause
- data["power_saver"] = power_saver
- data["accuracy_percentage"] = inaccuracy_percentage * 100
- data["positive_cash_offset"] = positive_cash_offset
- data["negative_cash_offset"] = negative_cash_offset
- data["manual_power"] = powered ? FALSE : TRUE
- data["silicon_check"] = issilicon(user)
- data["success_estimate"] = prob_success
- return data
-
-/obj/machinery/rnd/bepis/ui_act(action,params)
- . = ..()
- if(.)
- return
- switch(action)
- if("begin_experiment")
- if(use_power == IDLE_POWER_USE)
- return
- depositcash()
- if(banked_cash == 0)
- say("Please select funds to deposit to begin testing.")
- return
- calcsuccess()
- use_power(MACHINE_OPERATION * power_saver) //This thing should eat your APC battery if you're not careful.
- update_use_power(IDLE_POWER_USE) //Machine shuts off after use to prevent spam and look better visually.
- update_appearance()
- if("amount")
- var/input = text2num(params["amount"])
- if(input)
- banking_amount = input
- if("toggle_power")
- if(use_power == ACTIVE_POWER_USE)
- update_use_power(IDLE_POWER_USE)
- else
- update_use_power(ACTIVE_POWER_USE)
- update_appearance()
- if("account_reset")
- if(use_power == IDLE_POWER_USE)
- return
- account_name = ""
- account = null
- say("Account settings reset.")
- . = TRUE
-
-/**
- * Proc that handles the user's account to deposit credits for the BEPIS.
- * Handles success and fail cases for transferring credits, then logs the transaction and uses small amounts of power.
- **/
-/obj/machinery/rnd/bepis/proc/depositcash()
- var/deposit_value = 0
- deposit_value = banking_amount
- if(deposit_value == 0)
- update_appearance()
- say("Attempting to deposit 0 credits. Aborting.")
- return
- deposit_value = clamp(round(deposit_value, 1), 1, 10000)
- if(!account)
- say("Cannot find user account. Please swipe a valid ID.")
- return
- if(!account.has_money(deposit_value))
- say("You do not possess enough credits.")
- return
- account.adjust_money(-deposit_value, "Vending: B.E.P.I.S. Chamber") //The money vanishes, not paid to any accounts.
- SSblackbox.record_feedback("amount", "BEPIS_credits_spent", deposit_value)
- log_econ("[deposit_value] credits were inserted into [src] by [account.account_holder]")
- banked_cash += deposit_value
- use_power(1000 * power_saver)
- return
-
-/**
- * Proc used to determine the experiment math and results all in one.
- * Uses banked_cash and stock part levels to determine minor, major, and real gauss values for the BEPIS to hold.
- * If by the end real is larger than major, You get a tech disk. If all the disks are earned or you at least beat minor, you get a minor reward.
- **/
-
-/obj/machinery/rnd/bepis/proc/calcsuccess()
- var/turf/dropturf = null
- var/gauss_major = 0
- var/gauss_minor = 0
- var/gauss_real = 0
-
- var/turf/my_turf = get_turf(src)
- var/list/turfs = TURF_NEIGHBORS(my_turf) //NO MORE DISCS IN WINDOWS
- while(length(turfs))
- var/turf/T = pick_n_take(turfs)
- if(T.is_blocked_turf(TRUE))
- continue
- else
- dropturf = T
- break
-
- if (!dropturf)
- dropturf = drop_location()
- gauss_major = (gaussian(major_threshold, std) - negative_cash_offset) //This is the randomized profit value that this experiment has to surpass to unlock a tech.
- gauss_minor = (gaussian(minor_threshold, std) - negative_cash_offset) //And this is the threshold to instead get a minor prize.
- gauss_real = (gaussian(banked_cash, std*inaccuracy_percentage) + positive_cash_offset) //this is the randomized profit value that your experiment expects to give.
- say("Real: [gauss_real]. Minor: [gauss_minor]. Major: [gauss_major].")
- flick("chamber_flash",src)
- update_appearance()
- banked_cash = 0
- if((gauss_real >= gauss_major)) //Major Success.
- if(SSresearch.techweb_nodes_experimental.len > 0)
- say("Experiment concluded with major success. New technology node discovered on technology disc.")
- new /obj/item/disk/design_disk/bepis/remove_tech(dropturf,1)
- return
- say("Expended all available experimental technology nodes. Resorting to minor rewards.")
- if(gauss_real >= gauss_minor) //Minor Success.
- var/reward = pick(minor_rewards)
- new reward(dropturf)
- say("Experiment concluded with partial success. Dispensing compiled research efforts.")
- return
- if(gauss_real <= -1) //Critical Failure
- say("ERROR: CRITICAL MACHIME MALFUNCTI- ON. CURRENCY IS NOT CRASH. CANNOT COMPUTE COMMAND: 'make bucks'") //not a typo, for once.
- new /mob/living/basic/deer(dropturf, 1)
- use_power(MACHINE_OVERLOAD * power_saver) //To prevent gambling at low cost and also prevent spamming for infinite deer.
- return
- //Minor Failure
- error_cause = pick("attempted to sell grey products to American dominated market.","attempted to sell gray products to British dominated market.","placed wild assumption that PDAs would go out of style.","simulated product #76 damaged brand reputation mortally.","simulated business model resembled 'pyramid scheme' by 98.7%.","product accidently granted override access to all station doors.")
- say("Experiment concluded with zero product viability. Cause of error: [error_cause]")
- return
-
-
-#undef MACHINE_OPERATION
-#undef MACHINE_OVERLOAD
-#undef MAJOR_THRESHOLD
-#undef MINOR_THRESHOLD
-#undef STANDARD_DEVIATION
-#undef PART_CASH_OFFSET_AMOUNT
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index 1c44e8bc4fb..72bdaa02a95 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -358,16 +358,6 @@
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
-/datum/design/board/bepis
- name = "B.E.P.I.S. Board"
- desc = "The circuit board for a B.E.P.I.S."
- id = "bepis"
- build_path = /obj/item/circuitboard/machine/bepis
- category = list(
- RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
- )
- departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
-
/datum/design/board/protolathe
name = "Protolathe Board"
desc = "The circuit board for a protolathe."
diff --git a/code/modules/research/techweb/_techweb_node.dm b/code/modules/research/techweb/_techweb_node.dm
index 2f01252548a..ae50ea7f65f 100644
--- a/code/modules/research/techweb/_techweb_node.dm
+++ b/code/modules/research/techweb/_techweb_node.dm
@@ -16,7 +16,7 @@
var/description = "Why are you seeing this?"
/// Whether it starts off hidden
var/hidden = FALSE
- /// If the tech can be randomly generated by the BEPIS as a reward. MEant to be fully given in tech disks, not researched
+ /// If the tech can be randomly generated by BEPIS tech as a reward. Meant to be fully given in tech disks, not researched
var/experimental = FALSE
/// Whether it's available without any research
var/starting_node = FALSE
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 2ec692f0575..bbd404c31c2 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -14,7 +14,6 @@
"basic_matter_bin",
"basic_micro_laser",
"basic_scanning",
- "bepis",
"blast",
"bounced_radio",
"bowl",
diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_cyberpolice.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_cyberpolice.png
new file mode 100644
index 00000000000..ac8a6347bbd
Binary files /dev/null and b/code/modules/unit_tests/screenshots/screenshot_antag_icons_cyberpolice.png differ
diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm
index 70bf4abcf22..7f235ba9582 100644
--- a/code/modules/unit_tests/simple_animal_freeze.dm
+++ b/code/modules/unit_tests/simple_animal_freeze.dm
@@ -140,21 +140,28 @@
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/doom,
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/guidance,
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/hunter,
+ /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual_domain,
/mob/living/simple_animal/hostile/megafauna/bubblegum,
/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination,
+ /mob/living/simple_animal/hostile/megafauna/bubblegum/virtual_domain,
/mob/living/simple_animal/hostile/megafauna/clockwork_defender,
/mob/living/simple_animal/hostile/megafauna/colossus,
+ /mob/living/simple_animal/hostile/megafauna/colossus/virtual_domain,
/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner,
/mob/living/simple_animal/hostile/megafauna/dragon,
/mob/living/simple_animal/hostile/megafauna/dragon/lesser,
+ /mob/living/simple_animal/hostile/megafauna/dragon/virtual_domain,
/mob/living/simple_animal/hostile/megafauna/hierophant,
+ /mob/living/simple_animal/hostile/megafauna/hierophant/virtual_domain,
/mob/living/simple_animal/hostile/megafauna/legion,
+ /mob/living/simple_animal/hostile/megafauna/legion/virtual_domain,
/mob/living/simple_animal/hostile/megafauna/legion/medium,
/mob/living/simple_animal/hostile/megafauna/legion/medium/eye,
/mob/living/simple_animal/hostile/megafauna/legion/medium/left,
/mob/living/simple_animal/hostile/megafauna/legion/medium/right,
/mob/living/simple_animal/hostile/megafauna/legion/small,
/mob/living/simple_animal/hostile/megafauna/wendigo,
+ /mob/living/simple_animal/hostile/megafauna/wendigo/virtual_domain,
/mob/living/simple_animal/hostile/mimic,
/mob/living/simple_animal/hostile/mimic/copy,
/mob/living/simple_animal/hostile/mimic/copy/machine,
@@ -227,6 +234,7 @@
/mob/living/simple_animal/pet/cat/space,
/mob/living/simple_animal/pet/gondola,
/mob/living/simple_animal/pet/gondola/gondolapod,
+ /mob/living/simple_animal/pet/gondola/virtual_domain,
/mob/living/simple_animal/revenant,
/mob/living/simple_animal/robot_customer,
/mob/living/simple_animal/shade,
diff --git a/icons/area/areas_station.dmi b/icons/area/areas_station.dmi
index b07ea38a159..cbfe463efa5 100644
Binary files a/icons/area/areas_station.dmi and b/icons/area/areas_station.dmi differ
diff --git a/icons/effects/bitrunning.dmi b/icons/effects/bitrunning.dmi
new file mode 100644
index 00000000000..bfdc7c63436
Binary files /dev/null and b/icons/effects/bitrunning.dmi differ
diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi
index a1fc01434e4..1edd4d29cb5 100644
Binary files a/icons/hud/screen_alert.dmi and b/icons/hud/screen_alert.dmi differ
diff --git a/icons/mob/clothing/head/plasmaman_head.dmi b/icons/mob/clothing/head/plasmaman_head.dmi
index 9846cf02200..1917ae7bcf5 100644
Binary files a/icons/mob/clothing/head/plasmaman_head.dmi and b/icons/mob/clothing/head/plasmaman_head.dmi differ
diff --git a/icons/mob/clothing/suits/jacket.dmi b/icons/mob/clothing/suits/jacket.dmi
index cd924e847eb..a6f25d91c59 100644
Binary files a/icons/mob/clothing/suits/jacket.dmi and b/icons/mob/clothing/suits/jacket.dmi differ
diff --git a/icons/mob/clothing/under/cargo.dmi b/icons/mob/clothing/under/cargo.dmi
index 4bf30a67a2d..180f0e4ec87 100644
Binary files a/icons/mob/clothing/under/cargo.dmi and b/icons/mob/clothing/under/cargo.dmi differ
diff --git a/icons/mob/clothing/under/plasmaman.dmi b/icons/mob/clothing/under/plasmaman.dmi
index 41cbfb4482b..fcc8f008cd7 100644
Binary files a/icons/mob/clothing/under/plasmaman.dmi and b/icons/mob/clothing/under/plasmaman.dmi differ
diff --git a/icons/mob/huds/hud.dmi b/icons/mob/huds/hud.dmi
index ec9be118f57..17a6e18bf6f 100644
Binary files a/icons/mob/huds/hud.dmi and b/icons/mob/huds/hud.dmi differ
diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi
index a5c4e828301..2bbec93eed2 100644
Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ
diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi
index 20f24dd2240..fd898d3105f 100644
Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ
diff --git a/icons/obj/clothing/head/plasmaman_hats.dmi b/icons/obj/clothing/head/plasmaman_hats.dmi
index adcf9129c45..f593a08b88c 100644
Binary files a/icons/obj/clothing/head/plasmaman_hats.dmi and b/icons/obj/clothing/head/plasmaman_hats.dmi differ
diff --git a/icons/obj/clothing/suits/jacket.dmi b/icons/obj/clothing/suits/jacket.dmi
index c63f262f104..dc507017cd2 100644
Binary files a/icons/obj/clothing/suits/jacket.dmi and b/icons/obj/clothing/suits/jacket.dmi differ
diff --git a/icons/obj/clothing/under/cargo.dmi b/icons/obj/clothing/under/cargo.dmi
index fc04a897d5e..63e40538899 100644
Binary files a/icons/obj/clothing/under/cargo.dmi and b/icons/obj/clothing/under/cargo.dmi differ
diff --git a/icons/obj/clothing/under/plasmaman.dmi b/icons/obj/clothing/under/plasmaman.dmi
index 4277c43d54b..4d416d5b05f 100644
Binary files a/icons/obj/clothing/under/plasmaman.dmi and b/icons/obj/clothing/under/plasmaman.dmi differ
diff --git a/icons/obj/machines/bepis.dmi b/icons/obj/machines/bepis.dmi
deleted file mode 100644
index f348c2e1b05..00000000000
Binary files a/icons/obj/machines/bepis.dmi and /dev/null differ
diff --git a/icons/obj/machines/bitrunning.dmi b/icons/obj/machines/bitrunning.dmi
new file mode 100644
index 00000000000..a910a16b35c
Binary files /dev/null and b/icons/obj/machines/bitrunning.dmi differ
diff --git a/icons/obj/machines/computer.dmi b/icons/obj/machines/computer.dmi
index 10974f97bac..5ffa3445db6 100644
Binary files a/icons/obj/machines/computer.dmi and b/icons/obj/machines/computer.dmi differ
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index 8a1575fcec6..6ddc178b98c 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ
diff --git a/sound/effects/submerge.ogg b/sound/effects/submerge.ogg
new file mode 100644
index 00000000000..8c50fba8e0a
Binary files /dev/null and b/sound/effects/submerge.ogg differ
diff --git a/strings/names/cyberauth.txt b/strings/names/cyberauth.txt
new file mode 100644
index 00000000000..f1fc42b3692
--- /dev/null
+++ b/strings/names/cyberauth.txt
@@ -0,0 +1,21 @@
+Mr. One
+Process Kill
+Event Handler
+Q. Del
+Shutdown Exe
+Revert Commit
+Thread Manager
+Garbage Collector
+Core Debugger
+Kernel Panic
+IO Blocker
+Recursion Terminator
+Disk Doctor
+Format Syntax
+Byte Guardian
+Disk Defragmenter
+Security Patch
+Mandatory Upgrade
+Pull Review
+Bit Auditor
+Pen Test
diff --git a/tgstation.dme b/tgstation.dme
index 28a61d7603b..5194435e694 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -47,6 +47,7 @@
#include "code\__DEFINES\atom_hud.dm"
#include "code\__DEFINES\basic_mobs.dm"
#include "code\__DEFINES\basketball.dm"
+#include "code\__DEFINES\bitrunning.dm"
#include "code\__DEFINES\blackmarket.dm"
#include "code\__DEFINES\blend_modes.dm"
#include "code\__DEFINES\blob_defines.dm"
@@ -277,6 +278,7 @@
#include "code\__DEFINES\dcs\signals\signals_assembly.dm"
#include "code\__DEFINES\dcs\signals\signals_backpack.dm"
#include "code\__DEFINES\dcs\signals\signals_beam.dm"
+#include "code\__DEFINES\dcs\signals\signals_bitrunning.dm"
#include "code\__DEFINES\dcs\signals\signals_bot.dm"
#include "code\__DEFINES\dcs\signals\signals_camera.dm"
#include "code\__DEFINES\dcs\signals\signals_changeling.dm"
@@ -1656,6 +1658,7 @@
#include "code\datums\status_effects\debuffs\slimed.dm"
#include "code\datums\status_effects\debuffs\spacer.dm"
#include "code\datums\status_effects\debuffs\speech_debuffs.dm"
+#include "code\datums\status_effects\debuffs\static_vision.dm"
#include "code\datums\status_effects\debuffs\strandling.dm"
#include "code\datums\status_effects\debuffs\terrified.dm"
#include "code\datums\status_effects\debuffs\tower_of_babel.dm"
@@ -3208,6 +3211,54 @@
#include "code\modules\basketball\controller.dm"
#include "code\modules\basketball\hoop.dm"
#include "code\modules\basketball\referee.dm"
+#include "code\modules\bitrunning\abilities.dm"
+#include "code\modules\bitrunning\alerts.dm"
+#include "code\modules\bitrunning\areas.dm"
+#include "code\modules\bitrunning\event.dm"
+#include "code\modules\bitrunning\job.dm"
+#include "code\modules\bitrunning\turfs.dm"
+#include "code\modules\bitrunning\antagonists\cyber_police.dm"
+#include "code\modules\bitrunning\antagonists\outfit.dm"
+#include "code\modules\bitrunning\components\avatar_connection.dm"
+#include "code\modules\bitrunning\components\bitrunning_points.dm"
+#include "code\modules\bitrunning\components\netpod_healing.dm"
+#include "code\modules\bitrunning\objects\bit_vendor.dm"
+#include "code\modules\bitrunning\objects\clothing.dm"
+#include "code\modules\bitrunning\objects\disks.dm"
+#include "code\modules\bitrunning\objects\hololadder.dm"
+#include "code\modules\bitrunning\objects\host_monitor.dm"
+#include "code\modules\bitrunning\objects\landmarks.dm"
+#include "code\modules\bitrunning\objects\loot_crate.dm"
+#include "code\modules\bitrunning\objects\netpod.dm"
+#include "code\modules\bitrunning\objects\quantum_console.dm"
+#include "code\modules\bitrunning\orders\disks.dm"
+#include "code\modules\bitrunning\orders\flair.dm"
+#include "code\modules\bitrunning\orders\tech.dm"
+#include "code\modules\bitrunning\server\loot.dm"
+#include "code\modules\bitrunning\server\map_handling.dm"
+#include "code\modules\bitrunning\server\obj_generation.dm"
+#include "code\modules\bitrunning\server\quantum_server.dm"
+#include "code\modules\bitrunning\server\signal_handlers.dm"
+#include "code\modules\bitrunning\server\util.dm"
+#include "code\modules\bitrunning\virtual_domain\safehouses.dm"
+#include "code\modules\bitrunning\virtual_domain\virtual_domain.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\ash_drake.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\beach_bar.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\blood_drunk_miner.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\bubblegum.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\clown_planet.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\colossus.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\gondola_asteroid.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\hierophant.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\legion.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\pipedream.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\pirates.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\stairs_and_cliffs.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\syndicate_assault.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\test_only.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\vaporwave.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\wendigo.dm"
+#include "code\modules\bitrunning\virtual_domain\domains\xeno_nest.dm"
#include "code\modules\buildmode\bm_mode.dm"
#include "code\modules\buildmode\buildmode.dm"
#include "code\modules\buildmode\buttons.dm"
@@ -5118,7 +5169,6 @@
#include "code\modules\religion\sparring\sparring_datum.dm"
#include "code\modules\requests\request.dm"
#include "code\modules\requests\request_manager.dm"
-#include "code\modules\research\bepis.dm"
#include "code\modules\research\designs.dm"
#include "code\modules\research\destructive_analyzer.dm"
#include "code\modules\research\experimentor.dm"
diff --git a/tgui/packages/tgui/interfaces/AntagInfoCyberAuth.tsx b/tgui/packages/tgui/interfaces/AntagInfoCyberAuth.tsx
new file mode 100644
index 00000000000..21d872ed6a0
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/AntagInfoCyberAuth.tsx
@@ -0,0 +1,75 @@
+import { useBackend } from '../backend';
+import { Divider, Section, Stack } from '../components';
+import { Window } from '../layouts';
+import { Objective } from './common/Objectives';
+
+type Info = {
+ antag_name: string;
+ objectives: Objective[];
+};
+
+const textStyles = {
+ variable: {
+ color: 'white',
+ },
+ danger: {
+ color: 'red',
+ },
+} as const;
+
+export const AntagInfoCyberAuth = (props, context) => {
+ const { data } = useBackend(context);
+ const { objectives = [] } = data;
+
+ return (
+
+
+
+
+ FN CYBER AUTHORITY UNIT (REF)
+
+
+
+ You are a cyber authority unit.
+
+
+
+ Your mission: Eliminate{' '}
+ organic intruders to maintain the integrity of the system.
+
+
+ Bitrunning is a crime. To
+ assist your task, your program has been loaded with cutting edge{' '}
+ martial arts skills.
+
+
+ Ranged weaponry is{' '}
+ forbidden. Ballistic
+ defense is frowned upon. Style is paramount.
+
+
+
+
+
+
+ const TARGETS ={' '}
+
+
+ system.
+ INTRUDERS;
+
+
+ while TARGETS.LIFE !={' '}
+ stat.DEAD
+
+
+ action.
+ KILL()
+
+ cyber_authority_unit([0x70cf4020])
+
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/AvatarHelp.tsx b/tgui/packages/tgui/interfaces/AvatarHelp.tsx
new file mode 100644
index 00000000000..647d3a2e22b
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/AvatarHelp.tsx
@@ -0,0 +1,122 @@
+import { useBackend } from '../backend';
+import { Box, Icon, Section, Stack } from '../components';
+import { Window } from '../layouts';
+
+type Data = {
+ help_text: string;
+};
+
+const DEFAULT_HELP = `No information available! Ask for assistance if needed.`;
+
+const boxHelp = [
+ {
+ color: 'purple',
+ text: 'Study the area and do what needs to be done to recover the crate. Pay close attention to domain information and context clues.',
+ icon: 'search-location',
+ title: 'Search',
+ },
+ {
+ color: 'green',
+ text: 'Bring the crate to the designated sending location in the safehouse. The area may seem out of place. Examine the safehouse to find it.',
+ icon: 'boxes',
+ 'title': 'Recover',
+ },
+ {
+ color: 'blue',
+ text: 'The ladder represents the safest way to disconnect before the cache is recovered. Should your connection sever, the netpod offers limited resuscitation potential.',
+ icon: 'plug',
+ title: 'Disconnect',
+ },
+ {
+ color: 'yellow',
+ text: 'While connected, you are somewhat safe from environmental hazards and intrusions, but not completely. Pay close attention to alerts.',
+ icon: 'id-badge',
+ title: 'Security',
+ },
+ {
+ color: 'gold',
+ text: 'Generating avatars costs tremendous bandwidth. Do not waste them.',
+ icon: 'coins',
+ title: 'Limited Attempts',
+ },
+ {
+ color: 'red',
+ text: 'Remember that you are physically linked to this presence. You are a foreign body in a hostile environment. It will attempt to forcefully eject you.',
+ icon: 'skull-crossbones',
+ title: 'Realized Danger',
+ },
+] as const;
+
+export const AvatarHelp = (props, context) => {
+ const { data } = useBackend(context);
+ const { help_text = DEFAULT_HELP } = data;
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ {[0, 1].map((i) => (
+
+ ))}
+
+
+
+
+ {[2, 3].map((i) => (
+
+ ))}
+
+
+
+
+ {[4, 5].map((i) => (
+
+ ))}
+
+
+
+
+
+
+
+ );
+};
+
+// I wish I had media queries
+const BoxHelp = (props: { index: number }, context) => {
+ const { index } = props;
+
+ return (
+
+
+
+ {boxHelp[index].title}
+
+ }>
+ {boxHelp[index].text}
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/Bepis.tsx b/tgui/packages/tgui/interfaces/Bepis.tsx
deleted file mode 100644
index d2835e530d3..00000000000
--- a/tgui/packages/tgui/interfaces/Bepis.tsx
+++ /dev/null
@@ -1,130 +0,0 @@
-import { BooleanLike } from 'common/react';
-import { useBackend } from '../backend';
-import { Box, Button, Grid, LabeledList, NumberInput, Section } from '../components';
-import { Window } from '../layouts';
-
-type Data = {
- amount: number;
- account_owner: string;
- manual_power: BooleanLike;
- stored_cash: number;
- accuracy_percentage: number;
- positive_cash_offset: number;
- negative_cash_offset: number;
- silicon_check: BooleanLike;
- success_estimate: number;
- mean_value: number;
- error_name: string;
-};
-
-const BEPIS_SLOGAN = `All you need to know about the B.E.P.I.S. and you! The
-B.E.P.I.S. performs hundreds of tests a second using
-electrical and financial resources to invent new products,
-or discover new technologies otherwise overlooked for being
-too risky or too niche to produce!`;
-
-export const Bepis = (props, context) => {
- const { act, data } = useBackend(context);
- const {
- amount,
- account_owner,
- manual_power,
- stored_cash,
- accuracy_percentage,
- positive_cash_offset,
- negative_cash_offset,
- silicon_check,
- success_estimate,
- mean_value,
- error_name,
- } = data;
-
- return (
-
-
-
- act('toggle_power')}
- />
- }>
- {BEPIS_SLOGAN}
-
- act('account_reset')}
- />
- }>
- Console is currently being operated by{' '}
- {account_owner ? account_owner : 'no one'}.
-
-
-
-
-
-
- {stored_cash}
-
-
- {accuracy_percentage}%
-
-
- {positive_cash_offset}
-
-
- {negative_cash_offset}
-
-
-
- act('amount', {
- amount: value,
- })
- }
- />
-
-
-
-
-
-
-
-
- Average technology cost: {mean_value}
- Current chance of Success: Est. {success_estimate}%
- {error_name && (
-
- Previous Failure Reason: Deposited cash value too low.
- Please insert more money for future success.
-
- )}
-
-
-
-
-
-
- );
-};
diff --git a/tgui/packages/tgui/interfaces/Canvas.tsx b/tgui/packages/tgui/interfaces/Canvas.tsx
index 40155c08869..1dddec2e907 100644
--- a/tgui/packages/tgui/interfaces/Canvas.tsx
+++ b/tgui/packages/tgui/interfaces/Canvas.tsx
@@ -264,13 +264,13 @@ export const Canvas = (props, context) => {
{
+ const { act, data } = useBackend(context);
+ const { netsuit, collections = [] } = data;
+ const [selectedType, setSelectedType] = useLocalState(
+ context,
+ 'selectedType',
+ collections[0]
+ );
+ const [search, setSearch] = useLocalState(
+ context,
+ 'outfitSearch',
+ ''
+ );
+
+ const searchFn = createSearch(search, (outfit: Outfit) => outfit.name);
+
+ const filtered = selectedType?.outfits
+ ?.filter(searchFn)
+ .sort((a, b) => (a.name > b.name ? 1 : 0));
+
+ const selected =
+ selectedType.outfits?.find((outfit) => outfit.path === netsuit)?.name ??
+ 'None';
+
+ return (
+
+
+
+
+ setSearch(value)}
+ placeholder="Search"
+ value={search}
+ />
+ }>
+
+
+
+ {collections.map((collection, index) => (
+ <>
+ setSelectedType(collection)}
+ selected={selectedType === collection}>
+ {collection.name}
+
+ {index > 0 && }
+ >
+ ))}
+
+
+
+
+
+ {filtered.map(({ path, name }, index) => (
+
+
+
+ ))}
+
+
+
+
+
+
+
+ {selected}
+
+
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/Orbit/constants.ts b/tgui/packages/tgui/interfaces/Orbit/constants.ts
index dd1bc580c1c..eb03e0ed921 100644
--- a/tgui/packages/tgui/interfaces/Orbit/constants.ts
+++ b/tgui/packages/tgui/interfaces/Orbit/constants.ts
@@ -2,10 +2,11 @@ export const ANTAG2COLOR = {
'Abductors': 'pink',
'Ash Walkers': 'olive',
'Biohazards': 'brown',
+ 'Bounty Hunters': 'yellow',
'CentCom': 'teal',
+ 'Cyber Authority': 'teal',
'Emergency Response Team': 'teal',
'Escaped Fugitives': 'orange',
- 'Bounty Hunters': 'yellow',
'Xenomorph Infestation': 'violet',
} as const;
diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/cyberpolice.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/cyberpolice.ts
new file mode 100644
index 00000000000..03fc370c1f4
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/cyberpolice.ts
@@ -0,0 +1,23 @@
+import { Antagonist, Category } from '../base';
+import { multiline } from 'common/string';
+
+const CyberPolice: Antagonist = {
+ key: 'cyberpolice',
+ name: 'Cyber Police',
+ description: [
+ multiline`
+ On the razor edge of the digital realm, the Cyber Authority has tasked
+ enforcement officers with preserving system harmony.
+ `,
+
+ multiline`
+ Using refined martial arts skills, terminate bitrunners in the virtual
+ domain. Look snazzy while doing it. Cyber police are short lived combat
+ roles that spawn from mobs (other than elites or players) in the virtual
+ domain.
+ `,
+ ],
+ category: Category.Midround,
+};
+
+export default CyberPolice;
diff --git a/tgui/packages/tgui/interfaces/QuantumConsole.tsx b/tgui/packages/tgui/interfaces/QuantumConsole.tsx
new file mode 100644
index 00000000000..c79dab64e79
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/QuantumConsole.tsx
@@ -0,0 +1,350 @@
+import { Window } from '../layouts';
+import { useBackend } from '../backend';
+import { Button, Collapsible, Icon, NoticeBox, ProgressBar, Section, Stack, Table, Tooltip } from '../components';
+import { BooleanLike } from 'common/react';
+import { LoadingScreen } from './common/LoadingToolbox';
+import { TableCell, TableRow } from '../components/Table';
+
+type Data =
+ | {
+ available_domains: Domain[];
+ avatars: Avatar[];
+ connected: 1;
+ generated_domain: string | null;
+ occupants: number;
+ points: number;
+ randomized: BooleanLike;
+ ready: BooleanLike;
+ retries_left: number;
+ scanner_tier: number;
+ }
+ | {
+ connected: 0;
+ };
+
+type Avatar = {
+ health: number;
+ name: string;
+ pilot: string;
+ brute: number;
+ burn: number;
+ tox: number;
+ oxy: number;
+};
+
+type Domain = {
+ cost: number;
+ desc: string;
+ difficulty: number;
+ id: string;
+ name: string;
+ reward: number | string;
+};
+
+type DomainEntryProps = {
+ domain: Domain;
+};
+
+type DisplayDetailsProps = {
+ amount: number | string;
+ color: string;
+ icon: string;
+};
+
+enum Difficulty {
+ None,
+ Low,
+ Medium,
+ High,
+}
+
+const isConnected = (data: Data): data is Data & { connected: 1 } =>
+ data.connected === 1;
+
+const getColor = (difficulty: number) => {
+ switch (difficulty) {
+ case Difficulty.Low:
+ return 'yellow';
+ case Difficulty.Medium:
+ return 'average';
+ case Difficulty.High:
+ return 'bad';
+ default:
+ return '';
+ }
+};
+
+export const QuantumConsole = (props, context) => {
+ const { data } = useBackend(context);
+
+ return (
+
+
+ {!!data.connected && !data.ready && }
+
+
+
+ );
+};
+
+const AccessView = (props, context) => {
+ const { act, data } = useBackend(context);
+
+ if (!isConnected(data)) {
+ return No server connected!;
+ }
+
+ const {
+ available_domains = [],
+ generated_domain,
+ ready,
+ occupants,
+ points,
+ } = data;
+
+ const sorted = available_domains.sort((a, b) => a.cost - b.cost);
+
+ const selected = sorted.find(({ id }) => id === generated_domain);
+
+ return (
+
+
+
+
+
+
+ {points}
+
+ >
+ }
+ fill
+ scrollable
+ title="Virtual Domains">
+ {sorted.map((domain) => (
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+ {selected?.name ?? 'Nothing loaded'}
+
+
+
+ act('stop_domain')}
+ tooltip="Begins shutdown. Will notify anyone connected."
+ />
+
+
+
+
+
+ );
+};
+
+const DomainEntry = (props: DomainEntryProps, context) => {
+ const {
+ domain: { cost, desc, difficulty, id, name, reward },
+ } = props;
+ const { act, data } = useBackend(context);
+ if (!isConnected(data)) {
+ return null;
+ }
+
+ const { generated_domain, ready, occupants, randomized, points } = data;
+
+ const current = generated_domain === id;
+ const occupied = occupants > 0;
+ let buttonIcon, buttonName;
+ if (randomized) {
+ buttonIcon = '';
+ buttonName = '???';
+ } else if (current) {
+ buttonIcon = 'download';
+ buttonName = 'Deployed';
+ } else {
+ buttonIcon = 'coins';
+ buttonName = 'Deploy';
+ }
+
+ return (
+ act('set_domain', { id })}
+ tooltip={!!generated_domain && 'Stop current domain first.'}>
+ {buttonName}
+
+ }
+ color={getColor(difficulty)}
+ title={
+ <>
+ {name}
+ {difficulty === Difficulty.High && }
+ >
+ }>
+
+
+ {desc}
+
+
+
+
+
+
+
+ );
+};
+
+const AvatarDisplay = (props, context) => {
+ const { act, data } = useBackend(context);
+ if (!isConnected(data)) {
+ return null;
+ }
+
+ const { avatars = [], generated_domain, retries_left } = data;
+
+ return (
+
+ {!!generated_domain && (
+
+
+
+
+
+ )}
+
+
+
+
+ }>
+
+ {avatars.map(({ health, name, pilot, brute, burn, tox, oxy }) => (
+
+
+ {pilot} as{' '}
+ "{name}"
+
+
+
+ {brute === 0 && burn === 0 && tox === 0 && oxy === 0 && (
+
+
+
+ )}
+
+ 50 ? 'bad' : 'gray'} name="tint" />
+
+
+ 50 ? 'average' : 'gray'} name="fire" />
+
+
+ 50 ? 'green' : 'gray'}
+ name="skull-crossbones"
+ />
+
+
+ 50 ? 'blue' : 'gray'} name="lungs" />
+
+
+
+
+
+
+
+ ))}
+
+
+ );
+};
+
+const DisplayDetails = (props: DisplayDetailsProps, context) => {
+ const { amount = 0, color, icon = 'star' } = props;
+
+ if (amount === 0) {
+ return None;
+ }
+
+ if (typeof amount === 'string') {
+ return {String(amount)}; // don't ask
+ }
+
+ if (amount > 4) {
+ return (
+
+
+ {amount}
+
+
+
+
+
+ );
+ }
+
+ return (
+
+
+ {Array.from({ length: amount }, (_, index) => (
+
+
+
+ ))}
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/common/JobToIcon.ts b/tgui/packages/tgui/interfaces/common/JobToIcon.ts
index b713eeab000..82fffdaad22 100644
--- a/tgui/packages/tgui/interfaces/common/JobToIcon.ts
+++ b/tgui/packages/tgui/interfaces/common/JobToIcon.ts
@@ -1,9 +1,13 @@
+export type AvailableJob = keyof typeof JOB2ICON;
+
/** Icon map of jobs to their fontawesome5 (free) counterpart. */
export const JOB2ICON = {
'AI': 'eye',
'Assistant': 'toolbox',
'Atmospheric Technician': 'fan',
'Bartender': 'cocktail',
+ 'Bit Avatar': 'code',
+ 'Bitrunner': 'gamepad',
'Botanist': 'seedling',
'Captain': 'crown',
'Cargo Technician': 'box',
@@ -16,10 +20,11 @@ export const JOB2ICON = {
'Chemist': 'prescription-bottle',
'Chief Engineer': 'user-astronaut',
'Chief Medical Officer': 'user-md',
- 'Coroner': 'skull',
'Clown': 'face-grin-tears',
'Cook': 'utensils',
+ 'Coroner': 'skull',
'Curator': 'book',
+ 'Cyber Police': 'qrcode',
'Cyborg': 'robot',
'Detective': 'user-secret',
'Geneticist': 'dna',
@@ -48,5 +53,3 @@ export const JOB2ICON = {
'Virologist': 'virus',
'Warden': 'handcuffs',
} as const;
-
-export type AvailableJob = keyof typeof JOB2ICON;
diff --git a/tgui/packages/tgui/interfaces/common/LoadingToolbox.tsx b/tgui/packages/tgui/interfaces/common/LoadingToolbox.tsx
new file mode 100644
index 00000000000..a77eb78c338
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/common/LoadingToolbox.tsx
@@ -0,0 +1,32 @@
+import { Stack, Icon, Dimmer } from '../../components';
+
+/** Spinner that represents loading states.
+ *
+ * @usage
+ * ```tsx
+ * /// rest of the component
+ * return (
+ * ///... content to overlay
+ * {!!loading && }
+ * /// ... content to overlay
+ * );
+ * ```
+ * OR
+ * ```tsx
+ * return (
+ * {loading ? : }
+ * )
+ * ```
+ */
+export const LoadingScreen = (props, context) => {
+ return (
+
+
+
+
+
+ Please wait...
+
+
+ );
+};
diff --git a/tgui/packages/tgui/routes.tsx b/tgui/packages/tgui/routes.tsx
index b841c84b887..39598c4cc6e 100644
--- a/tgui/packages/tgui/routes.tsx
+++ b/tgui/packages/tgui/routes.tsx
@@ -4,12 +4,11 @@
* @license MIT
*/
-import { Icon, Section, Stack } from './components';
-
import { Store } from 'common/redux';
import { Window } from './layouts';
import { selectBackend } from './backend';
import { selectDebug } from './debug/selectors';
+import { LoadingScreen } from './interfaces/common/LoadingToolbox';
const requireInterface = require.context('./interfaces');
@@ -47,14 +46,7 @@ const RefreshingWindow = () => {
return (
-
-
-
-
-
- Please wait...
-
-
+
);