From 755fa4db6d5c811770188c340cd2ccb85469d505 Mon Sep 17 00:00:00 2001 From: san7890 Date: Wed, 5 Jul 2023 20:40:24 -0600 Subject: [PATCH] Loads Away Missions for Unit Testing (#76245) ## About The Pull Request Hey there, A pretty bad bug (#76226) got through, but it was fixed pretty quickly in #76241 (cf92862daf339e97c76b52c91f31d49ba5113bd4). I realized that if we were testing all the away missions, that this could theoretically get caught and not happen again. Regardless, unit testing gateway missions has been on my to-do list for a while now, and I finally got it nailed down. Basically, we just have a really small "station" map with the bare bones (_teeny_ bit of fluff, maploading is going to take 30 seconds tops anyways let me have my kicks) with a JSON map datum flag that causes it to load all away missions in the codebase (which are all in one folder). Just in case some admins were planning on invoking the proc on `SSmapping`, I also decided to gate a `tgui_alert()` behind it because you never can be too sure of what people think is funny these days (it really does lock up your game for a second or so at a time). I also alphabetized the maps.txt config because that was annoying me. ## Why It's Good For The Game Things that break on production could(?) be caught in unit testing? I don't know if the linked issue I mentioned above would have been caught in retrospect, but it's likely to catch more than a few upcoming bugs (like the UO45 atmospherics thing at the very top) and ensure that these gateway missions, which tend to be the most neglected part of mapping, stay bug-free. This is also helpful in case someone makes a new away mission and wants to see if stuff's broken. Helps out maptainers a bit because very, very technically broken mapping will throw up runtimes. Neato. ## Changelog Nothing that players should be concerned about. Let me know if there's a better way to approach this, but I really think that having a super-duper light map with the bare basics to load up gateway missions and then all nine-ish gateway missions can sequentially load during init. I can't think of a better way to do it aside from some really ugly `#ifdef` shit. Also also, it has the added benefit of being a map that will always load your away mission without touching a single shred of config (and it's not likely to break if you follow sane practices such as making your own areas) --- _maps/RandomZLevels/moonoutpost19.dmm | 89 +-- _maps/RandomZLevels/research.dmm | 4 +- _maps/RandomZLevels/snowdin.dmm | 627 ++++++++++-------- _maps/RandomZLevels/undergroundoutpost45.dmm | 16 +- _maps/gateway_test.json | 15 + _maps/map_files/debug/gateway_test.dmm | 392 +++++++++++ code/__DEFINES/admin.dm | 2 + code/controllers/subsystem/mapping.dm | 77 +++ code/datums/map_config.dm | 6 + code/game/area/areas/misc.dm | 5 + code/game/objects/effects/landmarks.dm | 1 - code/modules/admin/topic.dm | 5 + code/modules/admin/verbs/mapping.dm | 64 +- .../mission_code/moonoutpost19.dm | 4 + code/modules/awaymissions/zlevel.dm | 5 +- config/maps.txt | 24 +- 16 files changed, 952 insertions(+), 384 deletions(-) create mode 100644 _maps/gateway_test.json create mode 100644 _maps/map_files/debug/gateway_test.dmm diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 80f2fe5e6f1..ae8f2d28668 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -76,7 +76,7 @@ pixel_x = 4 }, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "ap" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/dark/opposingcorners{ @@ -206,6 +206,10 @@ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" }, /area/awaymission/moonoutpost19/main) +"bg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/moonoutpost19/arrivals/shed) "bk" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -302,7 +306,7 @@ /obj/structure/rack, /obj/item/flashlight, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "bU" = ( /obj/machinery/door/airlock/security/glass{ name = "Security Post"; @@ -1094,6 +1098,9 @@ temperature = 251 }, /area/awaymission/moonoutpost19/syndicate) +"hH" = ( +/turf/closed/wall/rust, +/area/awaymission/moonoutpost19/arrivals/shed) "hI" = ( /turf/closed/wall/rust, /area/awaymission/moonoutpost19/arrivals) @@ -1320,7 +1327,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "je" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/duct, @@ -1436,7 +1443,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "ki" = ( /obj/structure/sign/warning/vacuum{ desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; @@ -2818,7 +2825,7 @@ /obj/item/cigbutt, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "rU" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 5 @@ -3175,7 +3182,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "uD" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/effect/turf_decal/stripes/line{ @@ -3183,7 +3190,7 @@ }, /obj/effect/turf_decal/lunar_sand/plating, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "uF" = ( /obj/machinery/light/small/directional/east, /turf/open/misc/asteroid/moon{ @@ -3426,7 +3433,7 @@ "vN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "vR" = ( /obj/structure/bed, /obj/item/bedsheet, @@ -4093,7 +4100,7 @@ dir = 4 }, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "AY" = ( /obj/structure/fence/cut/large{ dir = 8 @@ -4157,7 +4164,7 @@ }, /obj/structure/chair/plastic, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Bx" = ( /turf/open/floor/iron/white/corner{ dir = 8 @@ -4840,7 +4847,7 @@ dir = 1 }, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Gv" = ( /obj/structure/flora/rock/style_random, /turf/open/misc/asteroid/basalt, @@ -4914,7 +4921,7 @@ }, /obj/machinery/airalarm/directional/south, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "GU" = ( /obj/effect/baseturf_helper/asteroid/moon, /turf/open/misc/asteroid/moon{ @@ -5378,7 +5385,7 @@ /obj/effect/turf_decal/lunar_sand/plating, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Kb" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -5625,7 +5632,7 @@ /obj/item/radio/intercom/directional/west, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "My" = ( /turf/open/misc/asteroid/moon{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" @@ -5706,7 +5713,7 @@ /obj/effect/turf_decal/lunar_sand/plating, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Nf" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -5908,7 +5915,7 @@ /area/awaymission/moonoutpost19/syndicate) "Oh" = ( /turf/closed/indestructible/reinforced, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Oj" = ( /obj/structure/table/rolling, /obj/item/clothing/mask/facehugger/impregnated{ @@ -6151,7 +6158,7 @@ puzzle_id = "atvs" }, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Pu" = ( /obj/effect/decal/cleanable/xenoblood{ desc = "It's green and acidic. Nothing good could come of this..." @@ -6475,7 +6482,7 @@ pixel_x = -7 }, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "RI" = ( /obj/effect/decal/cleanable/blood/tracks{ desc = "Your instincts say you shouldn't be following these."; @@ -6632,7 +6639,7 @@ "Sy" = ( /obj/effect/turf_decal/lunar_sand, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "SD" = ( /obj/item/trash/can{ pixel_x = 7; @@ -6688,13 +6695,13 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "SU" = ( /obj/machinery/door/poddoor/shutters{ id = "awaymission19atvs" }, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "SX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/purple{ @@ -6823,11 +6830,11 @@ /obj/structure/cable, /obj/effect/turf_decal/lunar_sand/plating, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "TP" = ( /obj/structure/reagent_dispensers/fueltank/large, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "TR" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -6981,7 +6988,7 @@ /obj/structure/cable, /obj/effect/turf_decal/lunar_sand, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Vi" = ( /obj/item/ammo_casing/spent{ pixel_x = -7; @@ -7059,7 +7066,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "VH" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -7182,7 +7189,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Ws" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, @@ -7211,7 +7218,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Ww" = ( /obj/structure/table, /obj/item/newspaper, @@ -7268,7 +7275,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "WP" = ( /obj/structure/table, /obj/item/mmi, @@ -7407,7 +7414,7 @@ }, /obj/item/clothing/under/shorts/black, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "XH" = ( /obj/structure/lattice/catwalk, /obj/structure/tank_holder/emergency_oxygen, @@ -7538,7 +7545,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Yx" = ( /obj/structure/table, /obj/item/reagent_containers/cup/glass/bottle/beer/almost_empty{ @@ -7555,7 +7562,7 @@ req_access = "201" }, /turf/open/floor/plastic, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "YD" = ( /obj/item/kirbyplants{ desc = "A plastic potted plant."; @@ -7688,7 +7695,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/awaymission/moonoutpost19/arrivals) +/area/awaymission/moonoutpost19/arrivals/shed) "Zo" = ( /turf/open/floor/pod/light, /area/awaymission/moonoutpost19/tent) @@ -31653,11 +31660,11 @@ My My Ia Oh -hI +hH Oh -hI +hH Oh -hI +hH Oh dA dA @@ -31915,7 +31922,7 @@ Mx ao TP Yx -hI +hH dA dA dA @@ -32172,7 +32179,7 @@ Bt Wm rR Gu -hI +hH dA dA dA @@ -32686,7 +32693,7 @@ kh vN VD GS -hI +hH dA dA dA @@ -32939,11 +32946,11 @@ My Qs Oh Ve -Ue +bg SS Sy -Ue -hI +bg +hH dA dA dA diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index dc44040c4d0..e59bfce8e0f 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -17,7 +17,7 @@ /obj/machinery/power/shuttle_engine/propulsion/right{ dir = 1 }, -/turf/open/space, +/turf/open/floor/plating, /area/awaymission/research/interior/engineering) "ai" = ( /obj/machinery/door/airlock/external/ruin, @@ -27,7 +27,7 @@ /obj/machinery/power/shuttle_engine/propulsion/left{ dir = 1 }, -/turf/open/space, +/turf/open/floor/plating, /area/awaymission/research/interior/engineering) "ak" = ( /turf/closed/wall/mineral/plastitanium{ diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index bf98057cdcc..ccf950661fe 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -624,6 +624,12 @@ /obj/structure/closet/crate/preopen, /turf/open/floor/iron, /area/awaymission/snowdin/post/kitchen) +"cf" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/awaymission/snowdin/post/mining_main/mechbay) "ch" = ( /obj/structure/table, /turf/open/floor/plating, @@ -872,7 +878,6 @@ pixel_y = 5 }, /obj/item/storage/box{ - illustration = "donk_kit"; name = "box of donkpockets" }, /obj/structure/cable, @@ -1286,7 +1291,6 @@ pixel_y = 5 }, /obj/item/storage/box{ - illustration = "donk_kit"; name = "box of donkpockets" }, /obj/effect/decal/cleanable/dirt, @@ -6415,6 +6419,11 @@ /obj/effect/baseturf_helper/asteroid/snow, /turf/closed/mineral/snowmountain, /area/awaymission/snowdin/cave) +"tN" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) "tR" = ( /obj/structure/barricade/wooden/snowed, /turf/open/floor/plating/snowed/cavern, @@ -8569,6 +8578,12 @@ /obj/effect/mob_spawn/corpse/human/skeleton, /turf/open/floor/iron/dark, /area/awaymission/snowdin/cave) +"Ec" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/awaymission/snowdin/post/mining_main/mechbay) "Ed" = ( /turf/open/floor/circuit/red, /area/awaymission/snowdin/cave) @@ -8626,6 +8641,13 @@ /obj/item/shard, /turf/open/floor/mineral/plastitanium/red, /area/awaymission/snowdin/cave) +"Es" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden{ + dir = 4; + piping_layer = 4 + }, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/mining_main/mechbay) "Eu" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/cup/glass/bottle/beer{ @@ -8862,7 +8884,7 @@ /obj/structure/grille/broken, /obj/structure/cable, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "FE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /obj/structure/lattice/catwalk, @@ -8875,11 +8897,11 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "FH" = ( /obj/item/shard, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "FK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4; @@ -8887,19 +8909,19 @@ }, /obj/structure/sign/warning/xeno_mining/directional/east, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "FL" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 8 }, /turf/open/floor/plating/snowed/cavern, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "FM" = ( /obj/machinery/door/firedoor, /obj/structure/grille/broken, /obj/structure/cable, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "FO" = ( /obj/machinery/computer/monitor{ dir = 8 @@ -8917,7 +8939,7 @@ }, /obj/machinery/light/small/directional/east, /turf/open/misc/asteroid/snow/ice, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "FT" = ( /obj/structure/ore_box, /turf/closed/mineral/snowmountain/cavern, @@ -8928,7 +8950,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "FZ" = ( /turf/closed/wall/ice, /area/awaymission/snowdin/post/mining_main) @@ -8957,10 +8979,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) -"Gj" = ( -/turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Gk" = ( /turf/closed/wall/ice, /area/awaymission/snowdin/post/mining_main/mechbay) @@ -8986,7 +9005,7 @@ id = "snowdin_belt_mine" }, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Go" = ( /turf/closed/wall, /area/awaymission/snowdin/post/mining_main) @@ -9055,24 +9074,24 @@ dir = 1 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "GE" = ( /obj/item/disk/holodisk/snowdin/ripjacob, /obj/structure/cable, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "GF" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "GG" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "GH" = ( /turf/closed/wall/rust, /area/awaymission/snowdin/post/mining_main/mechbay) @@ -9118,7 +9137,7 @@ id = "snowdin_belt_mine" }, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "GP" = ( /turf/closed/wall/rust, /area/awaymission/snowdin/post/mining_main) @@ -9171,18 +9190,14 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/awaymission/snowdin/post/mining_main/robotics) -"GZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) "Ha" = ( /obj/structure/cable, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Hb" = ( /mob/living/basic/migo, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Hc" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical{ @@ -9224,7 +9239,7 @@ id = "snowdin_belt_mine" }, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Hl" = ( /obj/effect/baseturf_helper/asteroid/snow, /turf/closed/wall, @@ -9268,12 +9283,12 @@ /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Hx" = ( /obj/machinery/holopad, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Hy" = ( /obj/machinery/door/airlock/research/glass{ name = "Mech Lab" @@ -9301,7 +9316,7 @@ id = "snowdin_belt_mine" }, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "HD" = ( /obj/structure/table, /obj/effect/mapping_helpers/broken_floor, @@ -9439,26 +9454,26 @@ dir = 8 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ie" = ( /obj/structure/barricade/sandbags, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "If" = ( /obj/structure/sign/warning/no_smoking/directional/south, /obj/machinery/light/directional/south, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ig" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ih" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ii" = ( /obj/machinery/mech_bay_recharge_port, /obj/machinery/light/directional/south, @@ -9564,7 +9579,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "IE" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, @@ -9607,7 +9622,7 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /obj/structure/cable, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "IQ" = ( /obj/effect/spawner/random/structure/crate_abandoned, /obj/effect/mapping_helpers/broken_floor, @@ -9680,16 +9695,16 @@ dir = 8 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Jd" = ( /obj/item/shard, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Je" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Jf" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ @@ -9697,21 +9712,21 @@ id = "snowdin_belt_mine" }, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Jg" = ( /obj/machinery/conveyor{ dir = 8; id = "snowdin_belt_mine" }, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Jh" = ( /obj/machinery/conveyor{ dir = 10; id = "snowdin_belt_mine" }, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ji" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -9733,18 +9748,18 @@ }, /obj/item/shard, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Jn" = ( /obj/machinery/space_heater, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Jp" = ( /obj/structure/closet/crate/preopen, /obj/item/storage/toolbox/emergency, /obj/item/clothing/suit/hooded/wintercoat, /obj/item/clothing/suit/hooded/wintercoat, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Jq" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -9804,48 +9819,48 @@ /obj/structure/sign/warning/electric_shock/directional/east, /obj/structure/cable, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JB" = ( /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 1 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JC" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JD" = ( /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JE" = ( /obj/structure/closet/crate/preopen, /obj/item/storage/toolbox/emergency, /obj/item/clothing/suit/hooded/wintercoat, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JF" = ( /obj/structure/ore_box, /obj/effect/turf_decal/bot, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JG" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 1 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JH" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JI" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/caution/stand_clear{ @@ -9853,7 +9868,7 @@ }, /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JJ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -9862,7 +9877,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JL" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 @@ -9919,20 +9934,20 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JY" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "JZ" = ( /obj/machinery/door/airlock/maintenance{ name = "Misc Storage" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ka" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -9941,7 +9956,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Kb" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -9950,7 +9965,7 @@ dir = 8 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Kc" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 @@ -9969,11 +9984,11 @@ dir = 8 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ki" = ( /obj/machinery/light/directional/west, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Kj" = ( /obj/machinery/power/port_gen/pacman, /obj/machinery/power/terminal{ @@ -10021,20 +10036,20 @@ "Kp" = ( /obj/machinery/holopad, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Kq" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Kr" = ( /obj/structure/door_assembly/door_assembly_min{ anchored = 1; name = "broken airlock" }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ks" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -10043,7 +10058,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ku" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/stripes/line{ @@ -10056,7 +10071,7 @@ dir = 8 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Kv" = ( /obj/structure/fence/corner, /turf/open/misc/asteroid/snow, @@ -10101,20 +10116,20 @@ dir = 8 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "KE" = ( /obj/machinery/light/directional/south, /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "KF" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "KG" = ( /obj/structure/sign/warning/docking/directional/east, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "KI" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical, @@ -10182,7 +10197,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "KR" = ( /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 8 @@ -10223,7 +10238,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "KY" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -10233,14 +10248,14 @@ dir = 1 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "KZ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 }, /obj/effect/turf_decal/tile/brown/anticorner/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Lf" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -10323,7 +10338,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ly" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible{ dir = 9 @@ -10723,6 +10738,14 @@ /obj/effect/spawner/random/exotic/antag_gear_weak, /turf/open/misc/asteroid/snow, /area/awaymission/snowdin/cave) +"NT" = ( +/obj/machinery/door/airlock/maintenance{ + name = "SMES Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/structure/cable, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) "NV" = ( /obj/effect/turf_decal/weather/snow, /obj/effect/turf_decal/weather/snow/corner{ @@ -10828,7 +10851,7 @@ /obj/machinery/light/small/directional/north, /obj/effect/spawner/random/structure/crate_abandoned, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "OD" = ( /obj/machinery/light/small/directional/west, /obj/structure/closet/emcloset, @@ -10919,6 +10942,12 @@ slowdown = 1 }, /area/awaymission/snowdin/cave/mountain) +"Pe" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/awaymission/snowdin/post/mining_main/mechbay) "Pf" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -11068,6 +11097,11 @@ slowdown = 1 }, /area/awaymission/snowdin/outside) +"Qb" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) "Qc" = ( /obj/structure/flora/tree/stump, /obj/effect/light_emitter{ @@ -11099,7 +11133,7 @@ name = "asteroid snowice baseturf editor" }, /turf/closed/wall/ice, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Qh" = ( /obj/structure/table, /obj/item/clothing/glasses/hud/health, @@ -11158,7 +11192,7 @@ pixel_y = -32 }, /turf/open/misc/asteroid/snow/ice, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/cave/cavern) "QB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1; @@ -11367,11 +11401,17 @@ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "RH" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/cafeteria, /area/awaymission/snowdin/post/messhall) +"RJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) "RN" = ( /obj/structure/flora/bush/snow/style_random, /obj/effect/light_emitter{ @@ -11626,7 +11666,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "SS" = ( /obj/structure/fence{ dir = 4 @@ -11718,7 +11758,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Tv" = ( /obj/structure/table, /obj/item/storage/medkit/ancient, @@ -11815,7 +11855,7 @@ "Uf" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Ui" = ( /obj/machinery/light/small/directional/west, /turf/open/misc/ice/smooth, @@ -11929,11 +11969,6 @@ }, /turf/open/misc/asteroid/snow, /area/awaymission/snowdin/outside) -"UH" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) "UI" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/misc/asteroid/snow/ice, @@ -12119,7 +12154,7 @@ /obj/structure/fans/tiny, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "VY" = ( /obj/machinery/light/small/directional/south, /turf/open/misc/asteroid/snow, @@ -12327,7 +12362,7 @@ }, /obj/effect/turf_decal/tile/brown/anticorner/contrasted, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "Xw" = ( /obj/structure/table, /obj/machinery/light/small/directional/south, @@ -12420,6 +12455,11 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/showroomfloor, /area/awaymission/snowdin/post/cavern1) +"Yb" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) "Yd" = ( /obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, @@ -12523,7 +12563,7 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/mining, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "YB" = ( /obj/machinery/light/broken/directional/west, /obj/effect/spawner/random/structure/crate_abandoned, @@ -12568,7 +12608,7 @@ width = 5 }, /turf/open/floor/plating/elevatorshaft, -/area/awaymission/snowdin/post/mining_dock) +/area/awaymission/snowdin/post/mining_main/mechbay) "YK" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/iron/grimy, @@ -12602,6 +12642,9 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark/snowdin, /area/awaymission/snowdin/outside) +"YX" = ( +/turf/open/floor/plating/elevatorshaft, +/area/awaymission/snowdin/post/mining_main/mechbay) "YZ" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/airalarm/directional/west, @@ -12756,6 +12799,10 @@ /obj/structure/flora/tree/stump, /turf/open/misc/asteroid/snow, /area/awaymission/snowdin/outside) +"ZZ" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) (1,1,1) = {" aa @@ -57200,11 +57247,11 @@ OP HL Iz GU -wE -wE -wE -wD -wD +GH +GH +GH +GN +GN eJ eJ eJ @@ -57457,11 +57504,11 @@ HK HL IA GU -vW +Yb Uf -wL -wO -wE +He +tN +GH eJ eJ eJ @@ -57714,11 +57761,11 @@ HL Vd IB Gx -wM -wL -wL +ZZ +He +He JW -wE +GH eJ eJ eJ @@ -57971,11 +58018,11 @@ HM HM IB IJ -wM -wM +ZZ +ZZ JA -wG -wE +Qb +GH eJ eJ eJ @@ -58228,14 +58275,14 @@ GC Ic GU GU -wR -wD -wD -wE -wE -wD -wD -wD +NT +GN +GN +GH +GH +GN +GN +GN eJ eJ bh @@ -58475,13 +58522,13 @@ WN WN WN WN -xW -xW -xW -wT -xN -wL -xN +Gk +Gk +Gk +Pe +cf +He +cf Id Id Id @@ -58492,7 +58539,7 @@ JY Kg Kg KD -wD +GN eJ eJ bh @@ -58730,26 +58777,26 @@ WN WN Qy Qg -xW -xW -xW -wL -xN +Gk +Gk +Gk +He +cf GD -GZ -xy -Gj -wL -wL +Hg +Hf +Hh +He +He Gi Jd Jm JC -GZ -Gj -xy -xy -wD +Hg +Hh +Hf +Hf +GN eJ eJ bh @@ -58998,15 +59045,15 @@ Hw Hw Hw ID -wM +ZZ Ih YA JD -wL -xy -Gj -xy -wD +He +Hf +Hh +Hf +GN eJ eJ bh @@ -59245,25 +59292,25 @@ WN WN VW FH -wL +He Lx -xy -Gj -xy +Hf +Hh +Hf Hb Hx -xy +Hf Ie -wD +GN IN -wE -wD -wD -wD +GH +GN +GN +GN JC -GZ +Hg KE -wD +GN eJ eJ bh @@ -59501,26 +59548,26 @@ WN WN WN VW -wL +He FK Lx -xy -xy -wL -Gj -GZ -Gj +Hf +Hf +He +Hh +Hg +Hh If -wD -wM -wE +GN +ZZ +GH Jn Jn -wE +GH JC Kp KF -wD +GN eJ eJ bh @@ -59757,27 +59804,27 @@ WN WN WN Qy -xW -xW -zI -xW +Gk +Gk +Es +Gk RF -ya +Ec GF -xy -wL -xy +Hf +He +Hf Ig -wD -wM -wD +GN +ZZ +GN OB -wL +He JZ JC -GZ -xy -wD +Hg +Hf +GN eJ eJ bh @@ -60017,24 +60064,24 @@ WN WN WN FL -xW -xW -xW +Gk +Gk +Gk GG -wL -ya -ya +He +Ec +Ec Ih -wD -UH -wD +GN +ZZ +GN Jp JE -wD +GN Ts Kq KG -wD +GN eJ eJ bh @@ -60283,17 +60330,17 @@ Hy GN GH GH -wM -wE -wD -wE -wE -wD +ZZ +GH +GN +GH +GH +GN Kr -wD -wD -wE -wE +GN +GN +GH +GH bh bh bh @@ -60540,17 +60587,17 @@ Hg YZ Ii GN -wM -wL -wD +ZZ +He +GN JF JF Ki -wL -GZ -wL -Gj -wD +He +Hg +He +Hh +GN bh bh bh @@ -60797,17 +60844,17 @@ Hg HO Ij GH -wM -wL -wD +ZZ +He +GN JG Ka -xO +RJ Ks Ka KQ KZ -wE +GH bh bh bh @@ -61054,17 +61101,17 @@ He HP Ik GH -wM -wL -wE +ZZ +He +GH JH -Ys -Ys +YX +YX YH -Ys -Ys +YX +YX KX -wE +GH bh bh bh @@ -61312,16 +61359,16 @@ HQ Il GH WX -wL -wE +He +GH JH -Ys -Ys -Ys -Ys -Ys +YX +YX +YX +YX +YX KX -wE +GH bh bh bh @@ -61568,17 +61615,17 @@ Hz HO Im GN -wL -wL -wE +He +He +GH JI -Ys -Ys -Ys -Ys -Ys +YX +YX +YX +YX +YX KY -wE +GH bh bh bh @@ -61825,17 +61872,17 @@ HA HO In GH -wL -wL -wE +He +He +GH JH -Ys -Ys -Ys -Ys -Ys +YX +YX +YX +YX +YX KX -wE +GH bh bh bh @@ -62082,17 +62129,17 @@ Hf HO Ik GN -wL -wL -wD +He +He +GN JH -Ys -Ys -Ys -Ys -Ys +YX +YX +YX +YX +YX KX -wD +GN bh bh bh @@ -62339,9 +62386,9 @@ Hg Um Io IE -wL +He Je -wD +GN JJ Kb Kb @@ -62349,7 +62396,7 @@ Ku Kb Kb Xu -wD +GN bh bh bh @@ -62596,17 +62643,17 @@ Hh HS Ip GN -wD +GN Jf -wE -wD -wE -wD -wD -wE -wE -wD -wD +GH +GN +GH +GN +GN +GH +GH +GN +GN bh bh bh @@ -62853,9 +62900,9 @@ HB GN GH GH -wL +He Jg -wD +GN eJ eJ eJ @@ -63112,7 +63159,7 @@ Hk Hk Hk Jh -wE +GH eJ eJ eJ @@ -63359,17 +63406,17 @@ WN WN WN ui -xW -xW -xW -xW -xW -xW -xW -xW -xW -xW -xW +Gk +Gk +Gk +Gk +Gk +Gk +Gk +Gk +Gk +Gk +Gk eJ eJ eJ diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index a1f2a036684..6aa99013c81 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -283,10 +283,6 @@ }, /turf/open/floor/iron/grimy, /area/awaymission/undergroundoutpost45/central) -"bd" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/space, -/area/awaymission/undergroundoutpost45/central) "bf" = ( /obj/item/storage/belt/security, /obj/item/assembly/flash/handheld, @@ -4440,7 +4436,7 @@ /area/awaymission/undergroundoutpost45/engineering) "qK" = ( /obj/machinery/computer/atmos_control/noreconnect{ - atmos_chambers = list("uo45air"="Air Supply") + atmos_chambers = list("uo45air"="Air Supply") }, /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -4970,7 +4966,7 @@ "sp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/computer/atmos_control/noreconnect{ - atmos_chambers = list("uo45mix"="Mix Chamber"); + atmos_chambers = list("uo45mix"="Mix Chamber"); dir = 8 }, /obj/effect/turf_decal/tile/green/anticorner/contrasted{ @@ -5465,7 +5461,7 @@ /area/awaymission/undergroundoutpost45/engineering) "un" = ( /obj/machinery/computer/atmos_control/noreconnect{ - atmos_chambers = list("uo45n2"="Nitrogen Supply"); + atmos_chambers = list("uo45n2"="Nitrogen Supply"); dir = 1 }, /obj/effect/turf_decal/tile/red/anticorner/contrasted, @@ -5490,7 +5486,7 @@ /area/awaymission/undergroundoutpost45/engineering) "uq" = ( /obj/machinery/computer/atmos_control/noreconnect{ - atmos_chambers = list("uo45o2"="Oxygen Supply"); + atmos_chambers = list("uo45o2"="Oxygen Supply"); dir = 1 }, /obj/effect/turf_decal/tile/blue/anticorner/contrasted, @@ -5539,7 +5535,7 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "uA" = ( /obj/machinery/computer/atmos_control/fixed{ - atmos_chambers = list("uo45air"="Air Supply","uo45mix"="Mix Chamber","uo45n2"="Nitrogen Supply","uo45o2"="Oxygen Supply"); + atmos_chambers = list("uo45air"="Air Supply","uo45mix"="Mix Chamber","uo45n2"="Nitrogen Supply","uo45o2"="Oxygen Supply"); dir = 4; name = "Chamber Atmospherics Monitoring" }, @@ -40840,7 +40836,7 @@ al bq dc aD -bd +aP dZ aS aP diff --git a/_maps/gateway_test.json b/_maps/gateway_test.json new file mode 100644 index 00000000000..5f4f8eec8a9 --- /dev/null +++ b/_maps/gateway_test.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "map_name": "Gateway Test", + "map_path": "map_files/debug", + "map_file": "gateway_test.dmm", + "space_ruin_levels": 1, + "load_all_away_missions": true, + "ignored_unit_tests": [ + "/datum/unit_test/antag_moodlets", + "/datum/unit_test/job_roundstart_spawnpoints", + "/datum/unit_test/required_map_items", + "/datum/unit_test/space_dragon_expiration", + "/datum/unit_test/traitor" + ] +} diff --git a/_maps/map_files/debug/gateway_test.dmm b/_maps/map_files/debug/gateway_test.dmm new file mode 100644 index 00000000000..d3cc2563d47 --- /dev/null +++ b/_maps/map_files/debug/gateway_test.dmm @@ -0,0 +1,392 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/indestructible/reinforced, +/area/misc/testroom/gateway_room) +"c" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/white/full, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"d" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"f" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 9 + }, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"g" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"h" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/vending/wallmed/directional/west, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"j" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/white/full, +/obj/effect/turf_decal/stripes/red/line{ + dir = 6 + }, +/obj/structure/sign/flag/ssc/directional/north, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"l" = ( +/obj/machinery/computer/communications{ + dir = 8 + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"m" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"n" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/white/full, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"p" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/white/full, +/obj/effect/turf_decal/stripes/red/line{ + dir = 10 + }, +/obj/structure/sign/flag/nanotrasen/directional/north, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"q" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/white/full, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"r" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/poddoor/shutters/indestructible, +/turf/open/floor/iron, +/area/misc/testroom/gateway_room) +"t" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 5 + }, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"u" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/white/full, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/sign/flag/terragov/directional/north, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"v" = ( +/obj/machinery/gateway/centerstation, +/obj/effect/turf_decal/stripes/white/box, +/obj/effect/turf_decal/trimline/blue, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"y" = ( +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"z" = ( +/obj/effect/landmark/blobstart, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"B" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"C" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"D" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/sign/warning/secure_area/directional/south, +/obj/effect/landmark/latejoin, +/obj/effect/landmark/observer_start, +/obj/effect/landmark/start, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"E" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Gateway Chamber" + }, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"G" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table, +/obj/item/toy/figure/curator{ + pixel_y = 5 + }, +/obj/item/card/id/advanced/debug, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"H" = ( +/turf/open/space/basic, +/area/space) +"I" = ( +/obj/machinery/computer/gateway_control{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/full, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"J" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"K" = ( +/obj/structure/closet/crate/preopen, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/toy/plush/lizard_plushie/space/green{ + name = "Travels-The-Stars"; + desc = "The greatest gateway explorer ever created." + }, +/obj/effect/spawner/random/engineering/flashlight, +/obj/item/storage/toolbox/emergency, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/sign/calendar/directional/north, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"M" = ( +/obj/structure/chair/stool/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/keycard_auth/directional/west{ + pixel_y = 7 + }, +/obj/machinery/keycard_auth/directional/west{ + pixel_y = -7 + }, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"N" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/white/full, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/structure/sign/warning/radiation/directional/east, +/turf/open/indestructible/dark, +/area/misc/testroom/gateway_room) +"O" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/suit_storage_unit/centcom, +/obj/structure/sign/warning/engine_safety/directional/south, +/obj/structure/sign/warning/no_smoking/circle/directional/west, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"P" = ( +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/sign/poster/official/corporate_perks_vacation/directional/west, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"Q" = ( +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"R" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/table, +/obj/item/paper/pamphlet/gateway{ + desc = "The Iris and You: How Not To Smash Against Steel At The End of the Event Horizon" + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/indestructible, +/area/misc/testroom/gateway_room) +"W" = ( +/turf/closed/indestructible/fakeglass, +/area/misc/testroom/gateway_room) + +(1,1,1) = {" +H +H +H +H +H +H +H +H +H +H +"} +(2,1,1) = {" +H +a +a +a +a +a +a +a +a +H +"} +(3,1,1) = {" +H +a +K +M +g +P +h +O +a +H +"} +(4,1,1) = {" +H +a +R +I +l +G +B +D +a +H +"} +(5,1,1) = {" +H +a +W +W +W +W +E +W +a +H +"} +(6,1,1) = {" +H +a +j +q +q +d +C +t +r +H +"} +(7,1,1) = {" +H +a +u +v +c +J +Q +z +r +H +"} +(8,1,1) = {" +H +a +p +N +n +y +m +f +r +H +"} +(9,1,1) = {" +H +a +a +a +a +a +a +a +a +H +"} +(10,1,1) = {" +H +H +H +H +H +H +H +H +H +H +"} diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index b9cbcaec431..6a8ff366629 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -73,6 +73,8 @@ #define ADMIN_SHOW_PAPER(atom) "(SHOW)" /// Displays "(PLAY)" in the chat, when clicked it tries to play internet sounds from the request. #define ADMIN_PLAY_INTERNET(text, credit) "(PLAY)" +/// Displays "(SEE Z-LEVEL LAYOUT)" in the chat, when clicked it shows the z-level layouts for the current world state. +#define ADMIN_SEE_ZLEVEL_LAYOUT "(SEE Z-LEVEL LAYOUT)" /atom/proc/Admin_Coordinates_Readable(area_name, admin_jump_ref) var/turf/T = Safe_COORD_Location() diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 475572f024b..9767f60fee8 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -144,6 +144,9 @@ SUBSYSTEM_DEF(mapping) if(CONFIG_GET(flag/roundstart_away)) createRandomZlevel(prob(CONFIG_GET(number/config_gateway_chance))) + else if (SSmapping.config.load_all_away_missions) // we're likely in a local testing environment, so punch it. + load_all_away_missions() + loading_ruins = TRUE setup_ruins() loading_ruins = FALSE @@ -929,3 +932,77 @@ GLOBAL_LIST_EMPTY(the_station_areas) /// Returns true if the map we're playing on is on a planet /datum/controller/subsystem/mapping/proc/is_planetary() return config.planetary + +/// For debug purposes, will add every single away mission present in a given directory. +/// You can optionally pass in a string directory to load from instead of the default. +/datum/controller/subsystem/mapping/proc/load_all_away_missions(map_directory) + if(!map_directory) + map_directory = "_maps/RandomZLevels/" + var/start_time = null // in case we're doing this at runtime, useful to know how much time we're spending loading all these away missions + var/confirmation_alert_result = null + var/new_wait = 0 // default to always zeroing out the wait time for away missions to be unlocked due to the unit-testery nature of this map + + if(IsAdminAdvancedProcCall()) + if(!check_rights(R_DEBUG)) + return + var/confirmation_string = "This will load every single away mission in the [map_directory] directory. This might cause a bit of lag that can only be cleared on a world restart. Are you sure you want to do this?" + confirmation_alert_result = tgui_alert(usr, confirmation_string, "DEBUG ONLY!!!", list("Yes", "Cancel")) + if(confirmation_alert_result != "Yes") + return + + var/current_wait_time = CONFIG_GET(number/gateway_delay) + switch(tgui_alert(usr, "Do you want to zero out the cooldown for access to these maps? Currently [DisplayTimeText(current_wait_time)]", "OH FUCK!!!", list("Yes", "No", "Cancel"))) + if("No") + new_wait = current_wait_time + if("Cancel") + return + + else + start_time = REALTIMEOFDAY + var/beginning_message = "Loading all away missions..." + to_chat(world, span_boldannounce(beginning_message)) + log_world(beginning_message) + log_mapping(beginning_message) + + var/list/all_away_missions = generate_map_list_from_directory(map_directory) + var/number_of_away_missions = length(all_away_missions) + for(var/entry in all_away_missions) + load_new_z_level(entry, entry, secret = FALSE) // entry in both fields so we know if something failed to load since it'll log the full file name of what was loaded. + + for(var/datum/gateway_destination/away_datum in GLOB.gateway_destinations) + away_datum.wait = new_wait + log_mapping("Now loading [away_datum.name]...") + + validate_z_level_loading(all_away_missions) + + if(!isnull(start_time)) + var/tracked_time = (REALTIMEOFDAY - start_time) / 10 + var/finished_message = "Loaded [number_of_away_missions] away missions in [tracked_time] second[tracked_time == 1 ? "" : "s"]!" + to_chat(world, span_boldannounce(finished_message)) + log_world(finished_message) + log_mapping(finished_message) + + if(isnull(confirmation_alert_result)) + log_mapping("All away missions have been loaded. List of away missions paired to corresponding Z-Levels are as follows:") + log_mapping(gather_z_level_information()) + return + + message_admins("[key_name_admin(usr)] has loaded every single away mission in the [map_directory] directory. [ADMIN_SEE_ZLEVEL_LAYOUT]") + log_game("[key_name(usr)] has loaded every single away mission in the [map_directory] directory.") + +/// Lightweight proc that just checks to make sure that all of the expected z-levels were loaded. Split out for clarity from load_all_away_missions() +/// Argument "checkable_levels" is just a list of the names (typically the filepaths) of the z-levels we were expected to load, which should correspond to the name on the space level datum. +/datum/controller/subsystem/mapping/proc/validate_z_level_loading(list/checkable_levels) + for(var/z in 1 to max(world.maxz, length(z_list))) + var/datum/space_level/level = z_list[z] + if(isnull(level)) + continue + + var/level_name = level.name + if(level_name in checkable_levels) + checkable_levels -= level_name + continue + + var/number_of_remaining_levels = length(checkable_levels) + if(number_of_remaining_levels > 0) + CRASH("The following [number_of_remaining_levels] away mission(s) were not loaded: [checkable_levels.Join("\n")]") diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index 8ea96175ea6..4c071cbc2bb 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -44,6 +44,9 @@ /// List of unit tests that are skipped when running this map var/list/skipped_tests + /// Boolean that tells SSmapping to load all away missions in the codebase. + var/load_all_away_missions = FALSE + /** * Proc that simply loads the default map config, which should always be functional. */ @@ -183,6 +186,9 @@ if ("blacklist_file" in json) blacklist_file = json["blacklist_file"] + if ("load_all_away_missions" in json) + load_all_away_missions = json["load_all_away_missions"] + allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE if ("job_changes" in json) diff --git a/code/game/area/areas/misc.dm b/code/game/area/areas/misc.dm index af2aaa6666c..f2c7ac62c15 100644 --- a/code/game/area/areas/misc.dm +++ b/code/game/area/areas/misc.dm @@ -43,3 +43,8 @@ base_lighting_alpha = 255 name = "Test Room" icon_state = "test_room" + +/area/misc/testroom/gateway_room + name = "Gateway Room" + icon = 'icons/area/areas_station.dmi' + icon_state = "gateway" diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 6f6148e910b..50604639cb4 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -467,7 +467,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) /obj/effect/landmark/unit_test_top_right name = "unit test zone top right" - /obj/effect/landmark/start/hangover name = "hangover spawn" icon_state = "hangover_spawn" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index a8293f55f6e..14434fc183a 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1769,3 +1769,8 @@ web_sound(usr, link_url, credit) + else if(href_list["debug_z_levels"]) + if(!check_rights(R_DEBUG)) + return + + owner.debug_z_levels() diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 726852174d8..59ab9be43e9 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -319,9 +319,14 @@ GLOBAL_VAR_INIT(say_disabled, FALSE) set name = "Debug Z-Levels" set category = "Mapping" - var/list/z_list = SSmapping.z_list + to_chat(src, examine_block(gather_z_level_information(append_grid = TRUE)), confidential = TRUE) + +/// Returns all necessary z-level information. Argument `append_grid` allows the user to see a table showing all of the z-level linkages, which is only visible and useful in-game. +/proc/gather_z_level_information(append_grid = FALSE) var/list/messages = list() - messages += "World: [world.maxx] x [world.maxy] x [world.maxz]

" + + var/list/z_list = SSmapping.z_list + messages += "\nWorld: [world.maxx] x [world.maxy] x [world.maxz]\n" var/list/linked_levels = list() var/min_x = INFINITY @@ -331,49 +336,50 @@ GLOBAL_VAR_INIT(say_disabled, FALSE) for(var/z in 1 to max(world.maxz, z_list.len)) if (z > z_list.len) - messages += "[z]: Unmanaged (out of bounds)
" + messages += "[z]: Unmanaged (out of bounds)" continue - var/datum/space_level/S = z_list[z] - if (!S) - messages += "[z]: Unmanaged (null)
" + var/datum/space_level/level = z_list[z] + if (!level) + messages += "[z]: Unmanaged (null)" continue var/linkage - switch (S.linkage) + switch (level.linkage) if (UNAFFECTED) linkage = "no linkage" if (SELFLOOPING) linkage = "self-looping" if (CROSSLINKED) - linkage = "linked at ([S.xi], [S.yi])" - linked_levels += S - min_x = min(min_x, S.xi) - min_y = min(min_y, S.yi) - max_x = max(max_x, S.xi) - max_y = max(max_y, S.yi) + linkage = "linked at ([level.xi], [level.yi])" + linked_levels += level + min_x = min(min_x, level.xi) + min_y = min(min_y, level.yi) + max_x = max(max_x, level.xi) + max_y = max(max_y, level.yi) else - linkage = "unknown linkage '[S.linkage]'" + linkage = "unknown linkage '[level.linkage]'" - messages += "[z]: [S.name], [linkage], traits: [json_encode(S.traits)]
" - if (S.z_value != z) - messages += "-- z_value is [S.z_value], should be [z]
" - if (S.name == initial(S.name)) - messages += "-- name not set
" + messages += "[z]: [level.name], [linkage], traits: [json_encode(level.traits)]" + if (level.z_value != z) + messages += "-- z_value is [level.z_value], should be [z]" + if (level.name == initial(level.name)) + messages += "-- name not set" if (z > world.maxz) messages += "-- exceeds max z" var/grid[max_x - min_x + 1][max_y - min_y + 1] - for(var/datum/space_level/S in linked_levels) - grid[S.xi - min_x + 1][S.yi - min_y + 1] = S.z_value + for(var/datum/space_level/linked_level in linked_levels) + grid[linked_level.xi - min_x + 1][linked_level.yi - min_y + 1] = linked_level.z_value - messages += "
" - for(var/y in max_y to min_y step -1) - var/list/part = list() - for(var/x in min_x to max_x) - part += "[grid[x - min_x + 1][y - min_y + 1]]" - messages += "" - messages += "
[part.Join("")]
" + if(append_grid) + messages += "
" + for(var/y in max_y to min_y step -1) + var/list/part = list() + for(var/x in min_x to max_x) + part += "[grid[x - min_x + 1][y - min_y + 1]]" + messages += "" + messages += "
[part.Join("")]
" - to_chat(src, examine_block(messages.Join("")), confidential = TRUE) + return messages.Join("\n") /client/proc/station_food_debug() set name = "Count Station Food" diff --git a/code/modules/awaymissions/mission_code/moonoutpost19.dm b/code/modules/awaymissions/mission_code/moonoutpost19.dm index 433fb1cb17c..2447f45fac1 100644 --- a/code/modules/awaymissions/mission_code/moonoutpost19.dm +++ b/code/modules/awaymissions/mission_code/moonoutpost19.dm @@ -16,6 +16,10 @@ name = "MO19 Arrivals" icon_state = "awaycontent2" +/area/awaymission/moonoutpost19/arrivals/shed + name = "MO19 Arrivals Shed" + icon_state = "awaycontent9" + /area/awaymission/moonoutpost19/research name = "MO19 Research" icon_state = "awaycontent3" diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index 31ccdfa2119..c4bb2d17610 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -1,6 +1,6 @@ // How much "space" we give the edge of the map GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "awaymissionconfig.txt")) -GLOBAL_LIST_INIT(potentialConfigRandomZlevels, generateConfigMapList(directory = "[global.config.directory]/away_missions/")) +GLOBAL_LIST_INIT(potentialConfigRandomZlevels, generate_map_list_from_directory(directory = "[global.config.directory]/away_missions/")) /proc/createRandomZlevel(config_gateway = FALSE) var/map @@ -72,7 +72,8 @@ GLOBAL_LIST_INIT(potentialConfigRandomZlevels, generateConfigMapList(directory = . += t -/proc/generateConfigMapList(directory) +/// Returns a list of all maps to be found in the directory that is passed in. +/proc/generate_map_list_from_directory(directory) var/list/config_maps = list() var/list/maps = flist(directory) for(var/map_file in maps) diff --git a/config/maps.txt b/config/maps.txt index e63e709eb99..bc5373ce354 100644 --- a/config/maps.txt +++ b/config/maps.txt @@ -13,18 +13,14 @@ Format: votable (is this map votable) endmap +# Production-level maps. + map birdshot #default maxplayers 66 votable endmap -map metastation - minplayers 25 - #voteweight 0.5 - votable -endmap - map deltastation minplayers 50 votable @@ -35,8 +31,9 @@ map icebox votable endmap -map tramstation - minplayers 35 +map metastation + minplayers 25 + #voteweight 0.5 votable endmap @@ -45,9 +42,18 @@ map northstar votable endmap +map tramstation + minplayers 35 + votable +endmap -map runtimestation +# Debug-only maps. + +map gateway_test endmap map multiz_debug endmap + +map runtimestation +endmap